qms-angular 2.0.3 → 2.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -184,10 +184,7 @@ export class QMSSelectAccessDialogComponent {
184
184
  }
185
185
  };
186
186
  for (let item in this.dialogData) {
187
- if (!!this.dialogData[item] && optionObj[item] && !this.dialogData.skipFirstAskingScreen) {
188
- this.options.push(optionObj[item]);
189
- }
190
- if (this.dialogData.skipFirstAskingScreen && optionObj[item]) {
187
+ if (!!this.dialogData[item] && optionObj[item]) {
191
188
  this.options.push(optionObj[item]);
192
189
  }
193
190
  }
@@ -621,4 +618,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
621
618
  type: ViewChild,
622
619
  args: ['pagingUserGroup']
623
620
  }] } });
624
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWFjY2Vzcy1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcW1zLWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL3NlbGVjdC1hY2Nlc3MtZGlhbG9nL3NlbGVjdC1hY2Nlc3MtZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Ftcy1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9zZWxlY3QtYWNjZXNzLWRpYWxvZy9zZWxlY3QtYWNjZXNzLWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBS0wsU0FBUyxFQUNULFlBQVksRUFDWixNQUFNLEVBR04sU0FBUyxFQUNULGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXNCLGtCQUFrQixFQUFvQixNQUFNLGdCQUFnQixDQUFDO0FBQzFGLE9BQU8sRUFBRSw0QkFBNEIsRUFBNkIsTUFBTSw0QkFBNEIsQ0FBQztBQUNyRyxPQUFPLEVBQUUsZUFBZSxFQUFnQixNQUFNLDBCQUEwQixDQUFDO0FBRXpFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRCxPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSXpELE9BQU8sRUFBRSxjQUFjLEVBQXlCLE1BQU0sa0JBQWtCLENBQUM7QUFFekUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sNERBQTRELENBQUM7QUFDM0csT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEUsT0FBTyxFQUFFLHNCQUFzQixF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QUFnQixDQUFDO1FBQ2pFLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxVQUFVLEdBQUcsZUFBZSxDQUFDO1FBQy9ELElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDN0QsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVELHdCQUF3QixDQUFDLElBQWM7UUFDckMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztJQUMvQixDQUFDOytHQTFsQlUsOEJBQThCLDhDQWdHL0IsZUFBZTttR0FoR2QsOEJBQThCLG1EQVY5QjtZQUNUO2dCQUNFLE9BQU8sRUFBRSw0QkFBNEI7Z0JBQ3JDLFFBQVEsRUFBRTtvQkFDUixXQUFXLEVBQUUsTUFBTTtpQkFDUzthQUMvQjtTQUNGLG1HQXlDTyw2QkFBNkIsaU9DekZ2Qyw4cm9CQW1XYyw0dTZCRDNUQSxDQUFDLDRCQUE0QixDQUFDOzs0RkFXL0IsOEJBQThCO2tCQWYxQyxTQUFTOytCQUNFLDBCQUEwQixjQUd4QixDQUFDLDRCQUE0QixDQUFDLGFBQy9CO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSw0QkFBNEI7NEJBQ3JDLFFBQVEsRUFBRTtnQ0FDUixXQUFXLEVBQUUsTUFBTTs2QkFDUzt5QkFDL0I7cUJBQ0YsaUJBQ2MsaUJBQWlCLENBQUMsSUFBSTs7MEJBa0dsQyxNQUFNOzJCQUFDLGVBQWU7Z0pBekRsQixJQUFJO3NCQUZWLFNBQVM7dUJBQUMsTUFBTSxFQUFFO3dCQUNqQixJQUFJLEVBQUUsNkJBQTZCO3FCQUNwQztnQkFnQjBCLFlBQVk7c0JBQXRDLFNBQVM7dUJBQUMsY0FBYztnQkFDSyxlQUFlO3NCQUE1QyxTQUFTO3VCQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJDb250ZW50Q2hlY2tlZCxcclxuICBBZnRlckNvbnRlbnRJbml0LFxyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbmplY3QsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBWaWV3Q2hpbGQsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb25cclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVW50eXBlZEZvcm1CdWlsZGVyLCBVbnR5cGVkRm9ybUNvbnRyb2wsIFVudHlwZWRGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1BVF9DSEVDS0JPWF9ERUZBVUxUX09QVElPTlMsIE1hdENoZWNrYm94RGVmYXVsdE9wdGlvbnMgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XHJcbmltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgUGFnZUV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcclxuaW1wb3J0IHsgTWF0U2VsZWN0Q2hhbmdlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcclxuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFFNU0ZsYXROb2RlVHJlZSB9IGZyb20gJy4uLy4uL2NvbW1vbi9tb2RlbHMvcW1zLWZsYXQtbm9kZS5tb2RlbCc7XHJcbmltcG9ydCB7IFFNU1RyZWVOb2RlIH0gZnJvbSAnLi4vLi4vY29tbW9uL21vZGVscy9xbXMtdHJlZS1ub2RlLm1vZGVsJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlTGlicmFyeVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvdHJhbnNsYXRpb24tcmVnaXN0cnkuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBQYWdpbmF0aW9uU2l6ZSwgUU1TUGFnaW5hdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vcW1zLXBhZ2luYXRvcic7XHJcbmltcG9ydCB7IElTZWxlY3Rpb25Ob2RlQ2hhbmdlLCBRTVNEZXBhcnRtZW50UGFnaW5nTW9kZWwgfSBmcm9tICcuLi9zZWxlY3QtZGVwYXJ0bWVudC10cmVlJztcclxuaW1wb3J0IHsgU2VsZWN0RGVwYXJ0bWVudFRyZWVDb21wb25lbnQgfSBmcm9tICcuLi9zZWxlY3QtZGVwYXJ0bWVudC10cmVlL3NlbGVjdC1kZXBhcnRtZW50LXRyZWUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU2VsZWN0QWNjZXNzQW5pbWF0aW9uVHJpZ2dlciB9IGZyb20gJy4vY29tbW9uL2FuaW1hdGlvbic7XHJcbmltcG9ydCB7IE9wdGlvblNlbGVjdEFjY2Vzc0VudW0gfSBmcm9tICcuL2NvbW1vbi9vcHRpb24tc2VsZWN0LWFjY2Vzcy5lbnVtJztcclxuaW1wb3J0IHsgUU1TQWNjZXNzSXRlbSB9IGZyb20gJy4vbW9kZWwvYWNjZXNzLWl0ZW0ubW9kZWwnO1xyXG5pbXBvcnQgeyBRTVNBY2Nlc3NQYWdpbmdDaGFuZ2VNb2RlbCwgUU1TQWNjZXNzUGFnaW5nTW9kZWwgfSBmcm9tICcuL21vZGVsL2FjY2Vzcy1wYWdpbmcubW9kZWwnO1xyXG5pbXBvcnQgeyBGaWx0ZXJQZXJzb25Nb2RlbCB9IGZyb20gJy4vbW9kZWwvZmlsdGVyLXBlcnNvbi5tb2RlbCc7XHJcbmltcG9ydCB7IE9wdGlvblNlbGVjdEFjY2Vzc01vZGVsIH0gZnJvbSAnLi9tb2RlbC9vcHRpb24tc2VsZWN0LWFjY2Vzcy5tb2RlbCc7XHJcbmltcG9ydCB7IFFNU1NlbGVjdEFjY2Vzc0RpYWxvZyB9IGZyb20gJy4vbW9kZWwvc2VsZWN0LWFjY2Vzcy1jb25maWcubW9kZWwnO1xyXG5pbXBvcnQgeyBRTVNTZWxlY3RBY2Nlc3NSZXN1bHQgfSBmcm9tICcuL21vZGVsL3NlbGVjdC1hY2Nlc3MtZGF0YSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3Ftcy1zZWxlY3QtYWNjZXNzLWRpYWxvZycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3NlbGVjdC1hY2Nlc3MtZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9zZWxlY3QtYWNjZXNzLWRpYWxvZy5jb21wb25lbnQuc2NzcyddLFxyXG4gIGFuaW1hdGlvbnM6IFtTZWxlY3RBY2Nlc3NBbmltYXRpb25UcmlnZ2VyXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTUFUX0NIRUNLQk9YX0RFRkFVTFRfT1BUSU9OUyxcclxuICAgICAgdXNlVmFsdWU6IHtcclxuICAgICAgICBjbGlja0FjdGlvbjogJ25vb3AnXHJcbiAgICAgIH0gYXMgTWF0Q2hlY2tib3hEZWZhdWx0T3B0aW9uc1xyXG4gICAgfVxyXG4gIF0sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUU1TU2VsZWN0QWNjZXNzRGlhbG9nQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQsIEFmdGVyQ29udGVudEluaXQsIEFmdGVyQ29udGVudENoZWNrZWQge1xyXG4gIG5nVW5zdWJjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgTEFORzogYW55O1xyXG4gIG9wdGlvblNlbGVjdCA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woKTtcclxuICBPUFRJT05fRU5VTSA9IE9wdGlvblNlbGVjdEFjY2Vzc0VudW07XHJcbiAgb3B0aW9uczogT3B0aW9uU2VsZWN0QWNjZXNzTW9kZWxbXSA9IFtdO1xyXG5cclxuICBwcml2YXRlIF9kZXBhcnRtZW50U2VsZWN0ZWQ6IFFNU1RyZWVOb2RlW10gPSBbXTtcclxuICBnZXQgc2VsZWN0ZWREZXBhcnRtZW50cygpIHtcclxuICAgIGNvbnN0IGRlcGFydG1lbnRTZWxlY3RlZDogUU1TRmxhdE5vZGVUcmVlW10gPSBbXTtcclxuICAgIHRoaXMuX2RlcGFydG1lbnRTZWxlY3RlZC5mb3JFYWNoKHggPT4ge1xyXG4gICAgICBkZXBhcnRtZW50U2VsZWN0ZWQucHVzaCh7XHJcbiAgICAgICAgaWQ6IHguaWQsXHJcbiAgICAgICAgZ3JvdXBJZDogeC5ncm91cElkLFxyXG4gICAgICAgIGlzR3JvdXA6IHguaXNHcm91cFxyXG4gICAgICB9IGFzIFFNU0ZsYXROb2RlVHJlZSk7XHJcbiAgICAgIGlmICgheC5jaGlsZHJlbj8ubGVuZ3RoKVxyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgZGVwYXJ0bWVudFNlbGVjdGVkLnB1c2goLi4uKHguY2hpbGRyZW4ubWFwKGl0ZW0gPT4gKHtcclxuICAgICAgICBpZDogaXRlbS5pZCxcclxuICAgICAgICBncm91cElkOiBpdGVtLmdyb3VwSWQsXHJcbiAgICAgICAgaXNHcm91cDogaXRlbS5pc0dyb3VwXHJcbiAgICAgIH0gYXMgUU1TRmxhdE5vZGVUcmVlKSkpKTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGRlcGFydG1lbnRTZWxlY3RlZCB8fCBbXTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBwZXJzb25Gb3JtOiBVbnR5cGVkRm9ybUdyb3VwO1xyXG4gIHB1YmxpYyB1c2VyR3JvdXBGb3JtID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbCgnJylcclxuICBwdWJsaWMgZ2V0TG9hZGluZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuICBvblNlYXJjaFBlcnNvbkV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxGaWx0ZXJQZXJzb25Nb2RlbD4oKTtcclxuICBvblNlYXJjaFBlcnNvbkZyZWVUZXh0RXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgb25TZWFyY2hVc2VyR3JvdXBFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gIG9uU2VhcmNoRGVwYXJ0bWVudEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIG9uUGFnaW5nRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPFFNU0FjY2Vzc1BhZ2luZ0NoYW5nZU1vZGVsPigpO1xyXG4gIG9uU2VsZWN0T3B0aW9uQ2hhbmdlJCA9IG5ldyBTdWJqZWN0PE1hdFNlbGVjdENoYW5nZT4oKTtcclxuICB0cmVlRGVwYXJ0bWVudDogU2VsZWN0RGVwYXJ0bWVudFRyZWVDb21wb25lbnRcclxuICBAVmlld0NoaWxkKCd0cmVlJywge1xyXG4gICAgcmVhZDogU2VsZWN0RGVwYXJ0bWVudFRyZWVDb21wb25lbnRcclxuICB9KSBzZXQgdHJlZShkYXRhOiBTZWxlY3REZXBhcnRtZW50VHJlZUNvbXBvbmVudCkge1xyXG4gICAgdGhpcy50cmVlRGVwYXJ0bWVudCA9IGRhdGE7XHJcblxyXG4gICAgY29uc3QgZ3JvdXBzID0gdGhpcy5yZXN1bHRBY2Nlc3MuZGVwYXJ0bWVudHMuZmlsdGVyKHggPT4geC5pc0dyb3VwKTtcclxuICAgIGlmIChncm91cHMubGVuZ3RoKVxyXG4gICAgICBncm91cHMuZm9yRWFjaChncm91cCA9PiB7XHJcbiAgICAgICAgaWYgKCFncm91cC5jaGlsZENvdW50KSB7XHJcbiAgICAgICAgICBpZiAoIXRoaXMudHJlZURlcGFydG1lbnQpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIGNvbnN0IG5vZGUgPSB0aGlzLnRyZWVEZXBhcnRtZW50LnRyZWVDb250cm9sLmRhdGFOb2Rlcy5maW5kKHggPT4geC5pZCA9PSBncm91cC5pZCk7XHJcbiAgICAgICAgICBpZiAobm9kZSlcclxuICAgICAgICAgICAgZ3JvdXAuY2hpbGRDb3VudCA9IHRoaXMudHJlZURlcGFydG1lbnQuZ2V0TGlzdENoaWxkcmVuT2ZOb2RlKG5vZGUpLmxlbmd0aDtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgQFZpZXdDaGlsZCgncGFnaW5nUGVyc29uJykgcGFnaW5nUGVyc29uOiBRTVNQYWdpbmF0b3JDb21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZCgncGFnaW5nVXNlckdyb3VwJykgcGFnaW5nVXNlckdyb3VwOiBRTVNQYWdpbmF0b3JDb21wb25lbnQ7XHJcblxyXG4gIC8qKiBsaXN0IGZpbHRlcmVkIGJ5IHNlYXJjaCBrZXl3b3JkICovXHJcbiAgb3B0aW9uRmlsdGVyUGVyc29uRGF0YUdsb2JhbDoge1xyXG4gICAgZGVwYXJ0bWVudHM6IFFNU0ZsYXROb2RlVHJlZVtdLFxyXG4gICAgdXNlckdyb3VwczogUU1TQWNjZXNzSXRlbVtdXHJcbiAgfSA9IHtcclxuICAgICAgZGVwYXJ0bWVudHM6IFtdLFxyXG4gICAgICB1c2VyR3JvdXBzOiBbXVxyXG4gICAgfTtcclxuXHJcbiAgcHVibGljIGZpbHRlcmVkU2VhcmNoVGV4dEJveCA9IHtcclxuICAgIGRlcGFydG1lbnQ6IG5ldyBCZWhhdmlvclN1YmplY3Q8UU1TRmxhdE5vZGVUcmVlW10+KFtdKSxcclxuICAgIHVzZXJHcm91cDogbmV3IEJlaGF2aW9yU3ViamVjdDxRTVNBY2Nlc3NJdGVtW10+KFtdKSxcclxuICB9XHJcbiAgZ2V0UGVyc29uJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8UU1TQWNjZXNzUGFnaW5nTW9kZWw8UU1TQWNjZXNzSXRlbT4+KG5ldyBRTVNBY2Nlc3NQYWdpbmdNb2RlbDxRTVNBY2Nlc3NJdGVtPigpKTtcclxuICBnZXQgcGVyc29uRmlsdGVyZWQoKSB7XHJcbiAgICBjb25zdCBwZXJzb25zID0gdGhpcy5nZXRQZXJzb24kLnZhbHVlO1xyXG4gICAgY29uc3QgaWRzID0gdGhpcy5yZXN1bHRBY2Nlc3MucGVyc29ucy5tYXAoeCA9PiB4LmlkKTtcclxuICAgIHBlcnNvbnMuZGF0YT8uZm9yRWFjaCh4ID0+IHguc2VsZWN0ZWQgPSBpZHMuaW5jbHVkZXMoeC5pZCkpO1xyXG4gICAgcmV0dXJuIHBlcnNvbnMuZGF0YSB8fCBbXTtcclxuICB9XHJcblxyXG4gIGdldFVzZXJHcm91cCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFFNU0FjY2Vzc1BhZ2luZ01vZGVsPFFNU0FjY2Vzc0l0ZW0+PihuZXcgUU1TQWNjZXNzUGFnaW5nTW9kZWw8UU1TQWNjZXNzSXRlbT4oKSk7XHJcbiAgZ2V0IHVzZXJHcm91cEZpbHRlcmVkKCkge1xyXG4gICAgY29uc3QgdXNlckdyb3VwcyA9IHRoaXMuZ2V0VXNlckdyb3VwJC52YWx1ZTtcclxuICAgIGNvbnN0IGlkcyA9IHRoaXMucmVzdWx0QWNjZXNzLnVzZXJHcm91cHMubWFwKHggPT4geC5pZCk7XHJcbiAgICB1c2VyR3JvdXBzLmRhdGE/LmZvckVhY2goeCA9PiB4LnNlbGVjdGVkID0gaWRzLmluY2x1ZGVzKHguaWQpKTtcclxuICAgIHJldHVybiB1c2VyR3JvdXBzLmRhdGEgfHwgW107XHJcbiAgfTtcclxuXHJcbiAgUEFHSU5BVElPTl9TSVpFID0gUGFnaW5hdGlvblNpemU7XHJcbiAgUEFHRV9TSVpFX09QVElPTjogbnVtYmVyW10gPSBbNSwgMTAsIDE1LCAyMCwgMjUsIDEwMF07XHJcbiAgcmVzdWx0QWNjZXNzID0gbmV3IFFNU1NlbGVjdEFjY2Vzc1Jlc3VsdCgpO1xyXG4gIGFyclNrZWxldG9uID0gbmV3IEFycmF5KDgpLmZpbGwoMCk7XHJcbiAgLy9wcmV2ZW50IGV2ZW50IHBhZ2luZyB3aGVuIHNlYXJjaCBlbWl0IHNlYXJjaCBldmVudFxyXG4gIGdldFNlYXJjaGluZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPFFNU1NlbGVjdEFjY2Vzc0RpYWxvZ0NvbXBvbmVudD4sXHJcbiAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRpYWxvZ0RhdGE6IFFNU1NlbGVjdEFjY2Vzc0RpYWxvZyxcclxuICAgIHB1YmxpYyB0cmFuc2xhdGU6IFRyYW5zbGF0ZUxpYnJhcnlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfZmI6IFVudHlwZWRGb3JtQnVpbGRlcixcclxuICAgIHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmXHJcbiAgKSB7XHJcbiAgICB0aGlzLl9pbml0UmVzdWx0QWNjZXNzKCk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyQ29udGVudENoZWNrZWQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMudHJhbnNsYXRlLmdldExhbmd1YWdlU3ViamVjdCQucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3ViY3JpYmUpKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICBpZiAocmVzKSB7XHJcbiAgICAgICAgdGhpcy5MQU5HID0gdGhpcy50cmFuc2xhdGUuZ2V0T2JqZWN0TGFuZyhyZXMpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMuX2J1aWxkT3B0aW9uU2VsZWN0KCk7XHJcbiAgICB0aGlzLmdldExvYWRpbmckLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSlcclxuICAgICAgLnN1YnNjcmliZShyZXNwb25zZSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlKSB7XHJcbiAgICAgICAgICB0aGlzLnBlcnNvbkZvcm0gJiYgdGhpcy5wZXJzb25Gb3JtLmRpc2FibGUoKTtcclxuICAgICAgICAgIHRoaXMudXNlckdyb3VwRm9ybSAmJiB0aGlzLnVzZXJHcm91cEZvcm0uZGlzYWJsZSgpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnBlcnNvbkZvcm0gJiYgdGhpcy5wZXJzb25Gb3JtLmVuYWJsZSgpO1xyXG4gICAgICAgIHRoaXMudXNlckdyb3VwRm9ybSAmJiB0aGlzLnVzZXJHcm91cEZvcm0uZW5hYmxlKCk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLm5nVW5zdWJjcmliZS5uZXh0KCk7XHJcbiAgICB0aGlzLm5nVW5zdWJjcmliZS5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfYnVpbGRPcHRpb25TZWxlY3QoKSB7XHJcbiAgICBjb25zdCBvcHRpb25PYmogPSB7XHJcbiAgICAgIGVuYWJsZVNlbGVjdERlcGFydG1lbnQ6IHtcclxuICAgICAgICBkaXNwbGF5TmFtZTogJ0RFUEFSVE1FTlQnLFxyXG4gICAgICAgIHR5cGU6IHRoaXMuT1BUSU9OX0VOVU0uREVQQVJUTUVOVFxyXG4gICAgICB9LFxyXG4gICAgICBlbmFibGVTZWxlY3RQZXJzb246IHtcclxuICAgICAgICBkaXNwbGF5TmFtZTogJ1BFUlNPTicsXHJcbiAgICAgICAgdHlwZTogdGhpcy5PUFRJT05fRU5VTS5QRVJTT05cclxuICAgICAgfSxcclxuICAgICAgZW5hYmxlU2VsZWN0VXNlckdyb3VwOiB7XHJcbiAgICAgICAgZGlzcGxheU5hbWU6ICdVU0VSX0dST1VQJyxcclxuICAgICAgICB0eXBlOiB0aGlzLk9QVElPTl9FTlVNLlVTRVJfR1JPVVBcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGZvciAobGV0IGl0ZW0gaW4gdGhpcy5kaWFsb2dEYXRhKSB7XHJcbiAgICAgIGlmICghIXRoaXMuZGlhbG9nRGF0YVtpdGVtXSAmJiBvcHRpb25PYmpbaXRlbV0gJiYgIXRoaXMuZGlhbG9nRGF0YS5za2lwRmlyc3RBc2tpbmdTY3JlZW4pIHtcclxuICAgICAgICB0aGlzLm9wdGlvbnMucHVzaChvcHRpb25PYmpbaXRlbV0pXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGlzLmRpYWxvZ0RhdGEuc2tpcEZpcnN0QXNraW5nU2NyZWVuICYmIG9wdGlvbk9ialtpdGVtXSkge1xyXG4gICAgICAgIHRoaXMub3B0aW9ucy5wdXNoKG9wdGlvbk9ialtpdGVtXSlcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMubGVuZ3RoID09PSAxIHx8IHRoaXMuZGlhbG9nRGF0YS5za2lwRmlyc3RBc2tpbmdTY3JlZW4pIHtcclxuICAgICAgdGhpcy5kaWFsb2dSZWYudXBkYXRlU2l6ZSh0aGlzLmRpYWxvZ0RhdGEuc2l6ZVVwZGF0ZURlZmF1bHQpO1xyXG4gICAgICB0aGlzLm9wdGlvblNlbGVjdC5zZXRWYWx1ZSh0aGlzLm9wdGlvbnNbMF0udHlwZSk7XHJcbiAgICAgIGNvbnN0IGV2ZW50JCA9IG5ldyBNYXRTZWxlY3RDaGFuZ2UobnVsbCwgdGhpcy5vcHRpb25zWzBdLnR5cGUpO1xyXG4gICAgICB0aGlzLm9uU2VsZWN0aW9uVHlwZUNoYW5nZShldmVudCQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfaW5pdFJlc3VsdEFjY2VzcygpIHtcclxuICAgIHRoaXMucmVzdWx0QWNjZXNzID0gXy5jbG9uZURlZXAoe1xyXG4gICAgICAuLi50aGlzLmRpYWxvZ0RhdGEuZGF0YS5zZWxlY3RlZERhdGEsXHJcbiAgICAgIGRlcGFydG1lbnRzOiBbXVxyXG4gICAgfSBhcyBRTVNTZWxlY3RBY2Nlc3NSZXN1bHQpO1xyXG4gICAgLy8gaW5pdCBncm91cCBzZWxlY3RlZCBkZXBhcnRtZW50XHJcbiAgICB0aGlzLl9kZXBhcnRtZW50U2VsZWN0ZWQgPSBfLmNsb25lRGVlcCh0aGlzLmRpYWxvZ0RhdGEuZGF0YS5zZWxlY3RlZERhdGEuZGVwYXJ0bWVudHMpO1xyXG4gICAgY29uc3QgZ3JvdXBzID0gW107XHJcbiAgICBjb25zdCBzaW5nbGVJdGVtID0gW107XHJcblxyXG4gICAgdGhpcy5fZGVwYXJ0bWVudFNlbGVjdGVkLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgIGlmIChpdGVtLmlzR3JvdXApIHtcclxuICAgICAgICBncm91cHMucHVzaChpdGVtKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICghaXRlbS5ncm91cElkKSB7XHJcbiAgICAgICAgc2luZ2xlSXRlbS5wdXNoKGl0ZW0pO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKCF0aGlzLl9kZXBhcnRtZW50U2VsZWN0ZWQuc29tZSh4ID0+IHguaWQgPT0gaXRlbS5ncm91cElkKSkge1xyXG4gICAgICAgIGl0ZW0uZ3JvdXBJZCA9IG51bGw7XHJcbiAgICAgICAgc2luZ2xlSXRlbS5wdXNoKGl0ZW0pXHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBncm91cHMuZm9yRWFjaChncm91cCA9PiB7XHJcbiAgICAgIGNvbnN0IGNoaWxkID0gdGhpcy5fZGVwYXJ0bWVudFNlbGVjdGVkLmZpbHRlcihpdGVtID0+IGl0ZW0uZ3JvdXBJZCA9PSBncm91cC5pZCk7XHJcbiAgICAgIGdyb3VwLmNoaWxkcmVuID0gY2hpbGQ7XHJcbiAgICB9KTtcclxuICAgIHRoaXMucmVzdWx0QWNjZXNzLmRlcGFydG1lbnRzID0gWy4uLmdyb3VwcywgLi4uc2luZ2xlSXRlbV07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9maWx0ZXJPcHRpb25QZXJzb25DaGFuZ2UoKSB7XHJcbiAgICAvLyBGaWx0ZXIgcGVyc29uIGJ5IHJvbGVzXHJcbiAgICB0aGlzLnBlcnNvbkZvcm0uZ2V0KCd1c2VyR3JvdXBGaWx0ZXInKS52YWx1ZUNoYW5nZXNcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSwgZGVib3VuY2VUaW1lKDUwMCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoa2V5d29yZCA9PiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLm9wdGlvbkZpbHRlclBlcnNvbkRhdGFHbG9iYWwudXNlckdyb3Vwcy5sZW5ndGgpIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFrZXl3b3JkKSB7XHJcbiAgICAgICAgICB0aGlzLmZpbHRlcmVkU2VhcmNoVGV4dEJveC51c2VyR3JvdXAubmV4dCh0aGlzLm9wdGlvbkZpbHRlclBlcnNvbkRhdGFHbG9iYWwudXNlckdyb3Vwcyk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHJlc3VsdEZpbHRlciA9IHRoaXMub3B0aW9uRmlsdGVyUGVyc29uRGF0YUdsb2JhbC51c2VyR3JvdXBzLmZpbHRlcih1c2VyR3JvdXAgPT4gdXNlckdyb3VwLm5hbWUudG9Mb2NhbGVMb3dlckNhc2UoKS5pbmNsdWRlcyhrZXl3b3JkLnRvTG9jYWxlTG93ZXJDYXNlKCkpKTtcclxuICAgICAgICB0aGlzLmZpbHRlcmVkU2VhcmNoVGV4dEJveC51c2VyR3JvdXAubmV4dChyZXN1bHRGaWx0ZXIpO1xyXG4gICAgICB9KTtcclxuICAgIC8vIEZpbHRlciBwZXJzb24gYnkgZGVwYXJ0bWVudHNcclxuICAgIHRoaXMucGVyc29uRm9ybS5nZXQoJ2RlcGFydG1lbnRGaWx0ZXInKS52YWx1ZUNoYW5nZXNcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSlcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLm9wdGlvbkZpbHRlclBlcnNvbkRhdGFHbG9iYWwuZGVwYXJ0bWVudHMpIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IHNlYXJjaCA9IHRoaXMucGVyc29uRm9ybS5nZXQoJ2RlcGFydG1lbnRGaWx0ZXInKS52YWx1ZTtcclxuICAgICAgICBpZiAoIXNlYXJjaCkge1xyXG4gICAgICAgICAgdGhpcy5maWx0ZXJlZFNlYXJjaFRleHRCb3guZGVwYXJ0bWVudC5uZXh0KHRoaXMub3B0aW9uRmlsdGVyUGVyc29uRGF0YUdsb2JhbC5kZXBhcnRtZW50cy5zbGljZSgpKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgc2VhcmNoID0gc2VhcmNoLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJlZFNlYXJjaFRleHRCb3guZGVwYXJ0bWVudC5uZXh0KFxyXG4gICAgICAgICAgdGhpcy5vcHRpb25GaWx0ZXJQZXJzb25EYXRhR2xvYmFsLmRlcGFydG1lbnRzLmZpbHRlcih4ID0+IHgubmFtZS50b0xvd2VyQ2FzZSgpLmluZGV4T2Yoc2VhcmNoKSA+IC0xKVxyXG4gICAgICAgICk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0UmVzdWx0VGFiQWN0aXZlKCkge1xyXG4gICAgY29uc3QgcmVzdWx0T2JqID0ge1xyXG4gICAgICAwOiB0aGlzLnJlc3VsdEFjY2Vzcy5wZXJzb25zLFxyXG4gICAgICAxOiB0aGlzLnJlc3VsdEFjY2Vzcy51c2VyR3JvdXBzLFxyXG4gICAgICAyOiB0aGlzLnJlc3VsdEFjY2Vzcy5kZXBhcnRtZW50c1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdE9ialt0aGlzLm9wdGlvblNlbGVjdC52YWx1ZV07XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2hlY2tFeGlzdE9wdGlvblNlbGVjdChvcHRpb246IE9wdGlvblNlbGVjdEFjY2Vzc0VudW0pOiBib29sZWFuIHtcclxuICAgIHJldHVybiAhIXRoaXMub3B0aW9ucy5maW5kKGl0ZW0gPT4gaXRlbS50eXBlID09PSBvcHRpb24pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBidWlsZFBlcnNvbkZvcm0oKSB7XHJcbiAgICB0aGlzLnBlcnNvbkZvcm0gPSB0aGlzLl9mYi5ncm91cCh7XHJcbiAgICAgIHVzZXJHcm91cDogW10sXHJcbiAgICAgIGRlcGFydG1lbnQ6IFtdLFxyXG4gICAgICBkZXBhcnRtZW50RmlsdGVyOiBbJyddLFxyXG4gICAgICByZWN1cnNpdmU6IFt7XHJcbiAgICAgICAgdmFsdWU6IGZhbHNlLCBkaXNhYmxlZDogdHJ1ZVxyXG4gICAgICB9XSxcclxuICAgICAga2V5d29yZDogWycnXSxcclxuICAgICAgdXNlckdyb3VwRmlsdGVyOiBbJyddLFxyXG4gICAgICBleGNsdWRlZFF1aXREZXBhcnRtZW50SWQ6IFt0cnVlXVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgb25GaWx0ZXJQZXJzb24oKSB7XHJcbiAgICB0aGlzLmdldExvYWRpbmckLm5leHQodHJ1ZSk7XHJcbiAgICBjb25zdCBmb3JtVmFsdWUgPSB0aGlzLnBlcnNvbkZvcm0uZ2V0UmF3VmFsdWUoKTtcclxuICAgIGNvbnN0IGZpbHRlckRhdGE6IEZpbHRlclBlcnNvbk1vZGVsID0ge1xyXG4gICAgICBkZXBhcnRtZW50SWQ6IGZvcm1WYWx1ZS5kZXBhcnRtZW50Py5pZCxcclxuICAgICAgdXNlckdyb3VwSWQ6IGZvcm1WYWx1ZS51c2VyR3JvdXA/LmlkLFxyXG4gICAgICBrZXl3b3JkOiBmb3JtVmFsdWUua2V5d29yZCxcclxuICAgICAgcmVjdXJzaXZlOiBmb3JtVmFsdWUucmVjdXJzaXZlXHJcbiAgICB9O1xyXG4gICAgdGhpcy5nZXRTZWFyY2hpbmckLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLl9yZXNldFBhZ2luZ2F0b3IodGhpcy5wYWdpbmdQZXJzb24pO1xyXG4gICAgdGhpcy5vblNlYXJjaFBlcnNvbkV2ZW50LmVtaXQoZmlsdGVyRGF0YSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9yZXNldFBhZ2luZ2F0b3IocGFnaW5hdG9yOiBRTVNQYWdpbmF0b3JDb21wb25lbnQpIHtcclxuICAgIGlmICghcGFnaW5hdG9yKVxyXG4gICAgICByZXR1cm47XHJcbiAgICBwYWdpbmF0b3IuY2hhbmdlUGFnZSgwKTtcclxuICAgIHBhZ2luYXRvci5yZW5kZXJEaXNwbGF5TnVtYmVyT2ZwYWdlcygpO1xyXG4gIH1cclxuXHJcbiAgb25TZWFyY2hQZXJzb25GcmVlVGV4dCgpIHtcclxuICAgIHRoaXMuZ2V0TG9hZGluZyQubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuZ2V0U2VhcmNoaW5nJC5uZXh0KHRydWUpO1xyXG4gICAgdGhpcy5vblNlYXJjaFBlcnNvbkZyZWVUZXh0RXZlbnQuZW1pdCh0aGlzLnBlcnNvbkZvcm0uZ2V0KCdrZXl3b3JkJykudmFsdWUpO1xyXG4gICAgdGhpcy5fcmVzZXRQYWdpbmdhdG9yKHRoaXMucGFnaW5nUGVyc29uKTtcclxuICB9XHJcblxyXG4gIG9uRmlsdGVyVXNlckdyb3VwKCkge1xyXG4gICAgdGhpcy5nZXRMb2FkaW5nJC5uZXh0KHRydWUpO1xyXG4gICAgdGhpcy5nZXRTZWFyY2hpbmckLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLl9yZXNldFBhZ2luZ2F0b3IodGhpcy5wYWdpbmdVc2VyR3JvdXApO1xyXG4gICAgdGhpcy5vblNlYXJjaFVzZXJHcm91cEV2ZW50LmVtaXQodGhpcy51c2VyR3JvdXBGb3JtLnZhbHVlKTtcclxuICB9XHJcblxyXG4gIG9uU2VsZWN0SXRlbSh0eXBlOiBPcHRpb25TZWxlY3RBY2Nlc3NFbnVtLCBpdGVtOiBRTVNBY2Nlc3NJdGVtKSB7XHJcbiAgICBpZiAoIXRoaXMuYWxsb3dSZW1vdmUodHlwZSwgaXRlbSkpXHJcbiAgICAgIHJldHVybjtcclxuICAgIGl0ZW0uc2VsZWN0ZWQgPSAhaXRlbS5zZWxlY3RlZDtcclxuICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICBjYXNlIE9wdGlvblNlbGVjdEFjY2Vzc0VudW0uUEVSU09OOlxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGlmICh0aGlzLmRpYWxvZ0RhdGEubW9kZVNlbGVjdE9uZVBlcnNvbikge1xyXG4gICAgICAgICAgICB0aGlzLnJlc3VsdEFjY2Vzcy5wZXJzb25zID0gaXRlbS5zZWxlY3RlZCA/IFtpdGVtXSA6IFtdO1xyXG4gICAgICAgICAgICB0aGlzLnBlcnNvbkZpbHRlcmVkLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKGl0ZW0uaWQgIT09IGl0ZW0uaWQpIHtcclxuICAgICAgICAgICAgICAgIGl0ZW0uc2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoaXRlbS5zZWxlY3RlZCkge1xyXG4gICAgICAgICAgICB0aGlzLnJlc3VsdEFjY2Vzcy5wZXJzb25zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNvbnN0IGluZGV4SXRlbSA9IHRoaXMucmVzdWx0QWNjZXNzLnBlcnNvbnMuZmluZEluZGV4KHggPT4geC5pZCA9PT0gaXRlbS5pZCk7XHJcbiAgICAgICAgICBpbmRleEl0ZW0gPiAtMSAmJiB0aGlzLnJlc3VsdEFjY2Vzcy5wZXJzb25zLnNwbGljZShpbmRleEl0ZW0sIDEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBPcHRpb25TZWxlY3RBY2Nlc3NFbnVtLlVTRVJfR1JPVVA6XHJcbiAgICAgICAge1xyXG4gICAgICAgICAgaWYgKHRoaXMuZGlhbG9nRGF0YS5tb2RlU2VsZWN0T25lVXNlckdyb3VwKSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVzdWx0QWNjZXNzLnVzZXJHcm91cHMgPSBpdGVtLnNlbGVjdGVkID8gW2l0ZW1dIDogW107XHJcbiAgICAgICAgICAgIHRoaXMudXNlckdyb3VwRmlsdGVyZWQuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICAgICAgICBpZiAoaXRlbS5pZCAhPT0gaXRlbS5pZCkge1xyXG4gICAgICAgICAgICAgICAgaXRlbS5zZWxlY3RlZCA9IGZhbHNlXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKGl0ZW0uc2VsZWN0ZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5yZXN1bHRBY2Nlc3MudXNlckdyb3Vwcy5wdXNoKGl0ZW0pXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNvbnN0IGluZGV4SXRlbSA9IHRoaXMucmVzdWx0QWNjZXNzLnVzZXJHcm91cHMuZmluZEluZGV4KHggPT4geC5pZCA9PT0gaXRlbS5pZCk7XHJcbiAgICAgICAgICBpbmRleEl0ZW0gPiAtMSAmJiB0aGlzLnJlc3VsdEFjY2Vzcy51c2VyR3JvdXBzLnNwbGljZShpbmRleEl0ZW0sIDEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblJlbW92ZUNoaXAodHlwZTogT3B0aW9uU2VsZWN0QWNjZXNzRW51bSwgaXRlbSwgaW5kZXgpIHtcclxuICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICBjYXNlIHRoaXMuT1BUSU9OX0VOVU0uUEVSU09OOlxyXG4gICAgICAgIHRoaXMucmVzdWx0QWNjZXNzLnBlcnNvbnMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICBpZiAodGhpcy5wZXJzb25GaWx0ZXJlZFtpbmRleF0pIHtcclxuICAgICAgICAgIHRoaXMucGVyc29uRmlsdGVyZWRbaW5kZXhdLnNlbGVjdGVkID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIHRoaXMuT1BUSU9OX0VOVU0uVVNFUl9HUk9VUDpcclxuICAgICAgICB0aGlzLnJlc3VsdEFjY2Vzcy51c2VyR3JvdXBzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgaWYgKHRoaXMudXNlckdyb3VwRmlsdGVyZWRbaW5kZXhdKSB7XHJcbiAgICAgICAgICB0aGlzLnVzZXJHcm91cEZpbHRlcmVkW2luZGV4XS5zZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSB0aGlzLk9QVElPTl9FTlVNLkRFUEFSVE1FTlQ6XHJcbiAgICAgICAgdGhpcy5yZXN1bHRBY2Nlc3MuZGVwYXJ0bWVudHMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICB0aGlzLl9kZXBhcnRtZW50U2VsZWN0ZWQgPSBfLmNsb25lRGVlcCh0aGlzLnJlc3VsdEFjY2Vzcy5kZXBhcnRtZW50cyk7XHJcbiAgICAgICAgaWYgKCF0aGlzLnRyZWVEZXBhcnRtZW50KVxyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMudHJlZURlcGFydG1lbnQub25SZW1vdmVOb2RlKGl0ZW0uaWQpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uU2VsZWN0aW9uVHlwZUNoYW5nZShldmVudDogTWF0U2VsZWN0Q2hhbmdlKSB7XHJcbiAgICBzd2l0Y2ggKGV2ZW50LnZhbHVlKSB7XHJcbiAgICAgIGNhc2UgdGhpcy5PUFRJT05fRU5VTS5QRVJTT046XHJcbiAgICAgICAgdGhpcy5idWlsZFBlcnNvbkZvcm0oKTtcclxuICAgICAgICB0aGlzLl9maWx0ZXJPcHRpb25QZXJzb25DaGFuZ2UoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSB0aGlzLk9QVElPTl9FTlVNLkRFUEFSVE1FTlQ6XHJcbiAgICAgICAgdGhpcy5kaWFsb2dEYXRhLnRyZWVEZXBhcnRtZW50Q29uZmlnLnNlbGVjdGVkTGlzdCA9IHRoaXMuc2VsZWN0ZWREZXBhcnRtZW50cztcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIHRoaXMuZ2V0TG9hZGluZyQubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuZGlhbG9nUmVmLnVwZGF0ZVNpemUodGhpcy5kaWFsb2dEYXRhLnNpemVVcGRhdGVEZWZhdWx0KTtcclxuICAgIHRoaXMub25TZWxlY3RPcHRpb25DaGFuZ2UkLm5leHQoZXZlbnQpO1xyXG4gICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBzZXRGb3JtQ29udHJvbFZhbHVlKGZvcm1Db250cm9sTmFtZXM6IHN0cmluZ1tdLCB2YWx1ZXMpIHtcclxuICAgIGZvcm1Db250cm9sTmFtZXMuZm9yRWFjaCgoY29udHJvbE5hbWUsIF9pbmRleCkgPT4ge1xyXG4gICAgICB0aGlzLnBlcnNvbkZvcm0uZ2V0KGNvbnRyb2xOYW1lKT8uc2V0VmFsdWUodmFsdWVzW19pbmRleF0pO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGlzQ2hlY2tBbGwodHlwZTogT3B0aW9uU2VsZWN0QWNjZXNzRW51bSkge1xyXG4gICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgIGNhc2UgdGhpcy5PUFRJT05fRU5VTS5QRVJTT046XHJcbiAgICAgICAgcmV0dXJuICF0aGlzLmRpYWxvZ0RhdGEubW9kZVNlbGVjdE9uZVBlcnNvbiAmJiB0aGlzLnBlcnNvbkZpbHRlcmVkLmxlbmd0aCAmJiB0aGlzLnBlcnNvbkZpbHRlcmVkLmV2ZXJ5KHggPT4geC5zZWxlY3RlZCk7XHJcbiAgICAgIGNhc2UgdGhpcy5PUFRJT05fRU5VTS5VU0VSX0dST1VQOlxyXG4gICAgICAgIHJldHVybiAhdGhpcy5kaWFsb2dEYXRhLm1vZGVTZWxlY3RPbmVVc2VyR3JvdXAgJiYgdGhpcy51c2VyR3JvdXBGaWx0ZXJlZC5sZW5ndGggJiYgdGhpcy51c2VyR3JvdXBGaWx0ZXJlZC5ldmVyeSh4ID0+IHguc2VsZWN0ZWQpO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGlzRGlzYWJsZWRTZWxlY3RBbGwodHlwZTogT3B0aW9uU2VsZWN0QWNjZXNzRW51bSkge1xyXG4gICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgIGNhc2UgT3B0aW9uU2VsZWN0QWNjZXNzRW51bS5QRVJTT046IHJldHVybiAhdGhpcy5wZXJzb25GaWx0ZXJlZC5sZW5ndGggfHwgdGhpcy5wZXJzb25GaWx0ZXJlZC5ldmVyeSh4ID0+ICF0aGlzLmFsbG93UmVtb3ZlKHR5cGUsIHgpKVxyXG4gICAgICBjYXNlIE9wdGlvblNlbGVjdEFjY2Vzc0VudW0uVVNFUl9HUk9VUDogcmV0dXJuICF0aGlzLnVzZXJHcm91cEZpbHRlcmVkLmxlbmd0aCB8fCB0aGlzLnVzZXJHcm91cEZpbHRlcmVkLmV2ZXJ5KHggPT4gIXRoaXMuYWxsb3dSZW1vdmUodHlwZSwgeCkpXHJcbiAgICAgIGRlZmF1bHQ6IHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGlzSW5kZXRlcm1pbmF0ZSh0eXBlOiBPcHRpb25TZWxlY3RBY2Nlc3NFbnVtKSB7XHJcbiAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgY2FzZSB0aGlzLk9QVElPTl9FTlVNLlBFUlNPTjpcclxuICAgICAgICByZXR1cm4gIXRoaXMuZGlhbG9nRGF0YS5tb2RlU2VsZWN0T25lUGVyc29uICYmICF0aGlzLmlzQ2hlY2tBbGwodHlwZSkgJiYgdGhpcy5wZXJzb25GaWx0ZXJlZD8uc29tZSh4ID0+IHguc2VsZWN0ZWQpO1xyXG4gICAgICBjYXNlIHRoaXMuT1BUSU9OX0VOVU0uVVNFUl9HUk9VUDpcclxuICAgICAgICByZXR1cm4gIXRoaXMuZGlhbG9nRGF0YS5tb2RlU2VsZWN0T25lVXNlckdyb3VwICYmICF0aGlzLmlzQ2hlY2tBbGwodHlwZSkgJiYgdGhpcy51c2VyR3JvdXBGaWx0ZXJlZD8uc29tZSh4ID0+IHguc2VsZWN0ZWQpO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uQ2hlY2tBbGwodHlwZTogT3B0aW9uU2VsZWN0QWNjZXNzRW51bSwgJGV2ZW50KSB7XHJcbiAgICBpZiAodGhpcy5pc0Rpc2FibGVkU2VsZWN0QWxsKHR5cGUpKVxyXG4gICAgICByZXR1cm47XHJcbiAgICAkZXZlbnQuY2hlY2tlZCA9ICEkZXZlbnQuY2hlY2tlZDtcclxuICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICBjYXNlIHRoaXMuT1BUSU9OX0VOVU0uUEVSU09OOiB7XHJcbiAgICAgICAgaWYgKHRoaXMuZGlhbG9nRGF0YS5tb2RlU2VsZWN0T25lUGVyc29uKSB7XHJcbiAgICAgICAgICAkZXZlbnQuY2hlY2tlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIXRoaXMucGVyc29uRmlsdGVyZWQubGVuZ3RoKVxyXG4gICAgICAgICAgcmV0dXJuO1xyXG5cclxuICAgICAgICB0aGlzLnBlcnNvbkZpbHRlcmVkLmZpbHRlcih4ID0+IHRoaXMuYWxsb3dSZW1vdmUodHlwZSwgeCkpLmZvckVhY2goeCA9PiB4LnNlbGVjdGVkID0gJGV2ZW50LmNoZWNrZWQpO1xyXG4gICAgICAgIGNvbnN0IGlkRmlsdGVyZWQgPSB0aGlzLnBlcnNvbkZpbHRlcmVkLm1hcCh4ID0+IHguaWQpO1xyXG4gICAgICAgIGlmICgkZXZlbnQuY2hlY2tlZCkge1xyXG4gICAgICAgICAgY29uc3QgaWRQZXJzb25TZWxlY3RlZCA9IHRoaXMucmVzdWx0QWNjZXNzLnBlcnNvbnMubWFwKHggPT4geC5pZCk7XHJcbiAgICAgICAgICB0aGlzLnJlc3VsdEFjY2Vzcy5wZXJzb25zID0gWy4uLnRoaXMucmVzdWx0QWNjZXNzLnBlcnNvbnMsIC4uLnRoaXMucGVyc29uRmlsdGVyZWQuZmlsdGVyKHggPT4gdGhpcy5hbGxvd1JlbW92ZSh0eXBlLCB4KSAmJiAhaWRQZXJzb25TZWxlY3RlZC5pbmNsdWRlcyh4LmlkKSldO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnJlc3VsdEFjY2Vzcy5wZXJzb25zID0gdGhpcy5yZXN1bHRBY2Nlc3MucGVyc29ucy5maWx0ZXIoeCA9PiAhdGhpcy5hbGxvd1JlbW92ZSh0eXBlLCB4KSB8fCAhaWRGaWx0ZXJlZC5pbmNsdWRlcyh4LmlkKSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSB0aGlzLk9QVElPTl9FTlVNLlVTRVJfR1JPVVA6IHtcclxuICAgICAgICBpZiAodGhpcy5kaWFsb2dEYXRhLm1vZGVTZWxlY3RPbmVVc2VyR3JvdXApIHtcclxuICAgICAgICAgICRldmVudC5jaGVja2VkID0gZmFsc2U7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHVzZXJHcm91cFBhZ2luZyA9IHRoaXMudXNlckdyb3VwRmlsdGVyZWQ7XHJcbiAgICAgICAgdXNlckdyb3VwUGFnaW5nLmZpbHRlcih4ID0+IHRoaXMuYWxsb3dSZW1vdmUodHlwZSwgeCkpLmZvckVhY2goeCA9PiB4LnNlbGVjdGVkID0gJGV2ZW50LmNoZWNrZWQpO1xyXG4gICAgICAgIGNvbnN0IGlkRmlsdGVyZWQgPSB1c2VyR3JvdXBQYWdpbmcubWFwKHggPT4geC5pZCk7XHJcbiAgICAgICAgaWYgKCRldmVudC5jaGVja2VkKSB7XHJcbiAgICAgICAgICBjb25zdCBpZFNlbGVjdGVkID0gdGhpcy5yZXN1bHRBY2Nlc3MudXNlckdyb3Vwcy5tYXAoeCA9PiB4LmlkKTtcclxuICAgICAgICAgIHRoaXMucmVzdWx0QWNjZXNzLnVzZXJHcm91cHMgPSBbLi4udGhpcy5yZXN1bHRBY2Nlc3MudXNlckdyb3VwcywgLi4udXNlckdyb3VwUGFnaW5nLmZpbHRlcih4ID0+IHRoaXMuYWxsb3dSZW1vdmUodHlwZSwgeCkgJiYgIWlkU2VsZWN0ZWQuaW5jbHVkZXMoeC5pZCkpXTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5yZXN1bHRBY2Nlc3MudXNlckdyb3VwcyA9IHRoaXMucmVzdWx0QWNjZXNzLnVzZXJHcm91cHMuZmlsdGVyKHggPT4gIXRoaXMuYWxsb3dSZW1vdmUodHlwZSwgeCkgfHwgIWlkRmlsdGVyZWQuaW5jbHVkZXMoeC5pZCkpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25TZWxlY3Rpb25Ob2RlRGVwYXJ0bWVudENoYW5nZSh7IGFkZGVkLCByZW1vdmVkLCB1cGRhdGVkIH06IElTZWxlY3Rpb25Ob2RlQ2hhbmdlPFFNU1RyZWVOb2RlPikge1xyXG4gICAgaWYgKGFkZGVkLmxlbmd0aCkge1xyXG4gICAgICBhZGRlZC5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLnJlc3VsdEFjY2Vzcy5kZXBhcnRtZW50cy5zb21lKHggPT4geC5pZCA9PT0gaXRlbS5pZCkpXHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgdGhpcy5yZXN1bHRBY2Nlc3MuZGVwYXJ0bWVudHMucHVzaChpdGVtKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBpZiAocmVtb3ZlZC5sZW5ndGgpIHtcclxuICAgICAgcmVtb3ZlZC5mb3JFYWNoKHggPT4ge1xyXG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5yZXN1bHRBY2Nlc3MuZGVwYXJ0bWVudHMuZmluZEluZGV4KGl0ZW0gPT4gaXRlbS5pZCA9PT0geC5pZCk7XHJcbiAgICAgICAgaWYgKGluZGV4IDwgMClcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB0aGlzLnJlc3VsdEFjY2Vzcy5kZXBhcnRtZW50cy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGlmICh1cGRhdGVkLmxlbmd0aCkge1xyXG4gICAgICB1cGRhdGVkLmZvckVhY2goeCA9PiB7XHJcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnJlc3VsdEFjY2Vzcy5kZXBhcnRtZW50cy5maW5kSW5kZXgoaXRlbSA9PiBpdGVtLmlkID09IHguaWQpO1xyXG4gICAgICAgIGlmIChpbmRleCA8IDApXHJcbiAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgIGNvbnN0IGRlcGFydG1lbnRzID0gdGhpcy5yZXN1bHRBY2Nlc3MuZGVwYXJ0bWVudHMuZmluZChpdGVtID0+IGl0ZW0uaWQgPT0geC5pZCk7XHJcbiAgICAgICAgaWYgKCFkZXBhcnRtZW50cylcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICBkZXBhcnRtZW50cy5jaGlsZHJlbiA9IHguY2hpbGRyZW47XHJcbiAgICAgICAgZGVwYXJ0bWVudHMuY2hpbGRDb3VudCA9IHguY2hpbGRDb3VudDtcclxuXHJcbiAgICAgICAgaWYgKGRlcGFydG1lbnRzLmNoaWxkcmVuLmxlbmd0aClcclxuICAgICAgICAgIGRlcGFydG1lbnRzLmNoaWxkcmVuLmZvckVhY2goeCA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5yZXN1bHRBY2Nlc3MuZGVwYXJ0bWVudHMuZmluZEluZGV4KGl0ZW0gPT4gaXRlbS5pZCA9PT0geC5pZCk7XHJcbiAgICAgICAgICAgIGlmIChpbmRleCA+IC0xKVxyXG4gICAgICAgICAgICAgIHRoaXMucmVzdWx0QWNjZXNzLmRlcGFydG1lbnRzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5yZXN1bHRBY2Nlc3MuZGVwYXJ0bWVudHMuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgaWYgKCEhaXRlbS5jaGlsZHJlbilcclxuICAgICAgICBpdGVtLmNoaWxkcmVuID0gaXRlbS5jaGlsZHJlbi5maWx0ZXIoKHgsIGluZGV4KSA9PiBpbmRleCA9PT0gaXRlbS5jaGlsZHJlbi5maW5kSW5kZXgoX3ggPT4geC5pZCA9PT0gX3guaWQpKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5fZGVwYXJ0bWVudFNlbGVjdGVkID0gXy5jbG9uZURlZXAodGhpcy5yZXN1bHRBY2Nlc3MuZGVwYXJ0bWVudHMpO1xyXG4gICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBvblNjb2xsVG9Ob2RlVHJlZURlcGFydG1lbnQobm9kZTogUU1TVHJlZU5vZGUpIHtcclxuICAgIHRoaXMub3B0aW9uU2VsZWN0LnZhbHVlID09PSB0aGlzLk9QVElPTl9FTlVNLkRFUEFSVE1FTlQgJiYgdGhpcy50cmVlRGVwYXJ0bWVudC5zY3JvbGxUb05vZGUobm9kZS5pZClcclxuICB9XHJcblxyXG4gIHRyYWNrQnlGbihpbmRleCwgaXRlbSkge1xyXG4gICAgcmV0dXJuIGluZGV4O1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlUGVyc29uRmlsdGVyKGRhdGE6IFFNU0FjY2Vzc1BhZ2luZ01vZGVsPFFNU0FjY2Vzc0l0ZW0+KSB7XHJcbiAgICB0aGlzLmdldFBlcnNvbiQubmV4dChkYXRhKTtcclxuICAgIHRoaXMuZ2V0TG9hZGluZyQubmV4dChmYWxzZSk7XHJcbiAgICB0aGlzLmdldFNlYXJjaGluZyQubmV4dChmYWxzZSk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVVc2VyR3JvdXBGaWx0ZXIoZGF0YTogUU1TQWNjZXNzUGFnaW5nTW9kZWw8UU1TQWNjZXNzSXRlbT4pIHtcclxuICAgIHRoaXMuZ2V0VXNlckdyb3VwJC5uZXh0KGRhdGEpO1xyXG4gICAgdGhpcy5nZXRMb2FkaW5nJC5uZXh0KGZhbHNlKTtcclxuICAgIHRoaXMuZ2V0U2VhcmNoaW5nJC5uZXh0KGZhbHNlKTtcclxuICB9XHJcblxyXG4gIG9uUGFnaW5hdG9yRXZlbnQodmFsOiBQYWdlRXZlbnQsIHR5cGU6IE9wdGlvblNlbGVjdEFjY2Vzc0VudW0pIHtcclxuICAgIGlmICh0aGlzLmdldFNlYXJjaGluZyQudmFsdWUpXHJcbiAgICAgIHJldHVybjtcclxuICAgIHRoaXMuZ2V0TG9hZGluZyQubmV4dCh0aGlzLm9wdGlvblNlbGVjdC52YWx1ZSAhPT0gdGhpcy5PUFRJT05fRU5VTS5ERVBBUlRNRU5UKTtcclxuICAgIHRoaXMub25QYWdpbmdFdmVudC5lbWl0KHtcclxuICAgICAgLi4udmFsLFxyXG4gICAgICB0eXBlOiB0eXBlXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uUmVzdWx0RGVwYXJ0bWVudENoYW5nZShldmVudDogUU1TVHJlZU5vZGVbXSkge1xyXG4gICAgLy8gdGhpcy5yZXN1bHRBY2Nlc3MuZGVwYXJ0bWVudHMgPSBldmVudDtcclxuICB9XHJcblxyXG4gIHVwZGF0ZVJlc3VsdFNlYXJjaERlcGFydG1lbnQoZGF0YTogUU1TQWNjZXNzUGFnaW5nTW9kZWw8UU1TRmxhdE5vZGVUcmVlPiA9IG5ldyBRTVNBY2Nlc3NQYWdpbmdNb2RlbDxRTVNGbGF0Tm9kZVRyZWU+KCkpIHtcclxuICAgIGlmICghdGhpcy50cmVlRGVwYXJ0bWVudClcclxuICAgICAgcmV0dXJuO1xyXG4gICAgZGF0YSA9IGRhdGEgYXMgUU1TRGVwYXJ0bWVudFBhZ2luZ01vZGVsPFFNU0ZsYXROb2RlVHJlZT47XHJcbiAgICBpZiAodGhpcy5kaWFsb2dEYXRhLmRpc2FibGVTZWxlY3RlZExpc3QpIHtcclxuICAgICAgZGF0YS5kYXRhLmZvckVhY2goeCA9PiB4LmRpc2FibGVkID0gIXRoaXMuYWxsb3dSZW1vdmUoT3B0aW9uU2VsZWN0QWNjZXNzRW51bS5ERVBBUlRNRU5ULCB4KSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnRyZWVEZXBhcnRtZW50LnNldFJlc3VsdFNlYXJjaChkYXRhKTtcclxuICB9XHJcblxyXG4gIGdlbmVyYXRlVG9vbHRpcChub2RlOiBhbnkpIHtcclxuICAgIGlmICh0aGlzLmRpYWxvZ0RhdGE/LmZvcm1hdFRvb2x0aXApXHJcbiAgICAgIHJldHVybiB0aGlzLmRpYWxvZ0RhdGEuZm9ybWF0VG9vbHRpcChub2RlKTtcclxuICAgIHJldHVybiAobm9kZT8uaXNHcm91cCkgPyB0aGlzLmZvcm1hdFN0cmluZyh0aGlzLkxBTkcuVE9PTFRJUF9JTkNMVURFX1NVQl9ERVBBUlRNRU5ULCBub2RlLm5hbWUsIG5vZGUuY2hpbGRyZW4/Lmxlbmd0aC50b1N0cmluZygpKSA6IChgJHtub2RlLm5hbWV9ICR7bm9kZT8uc3ViTmFtZSA/IGAtICgke25vZGUuc3ViTmFtZX0pYCA6ICcnfWApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmb3JtYXRTdHJpbmcoLi4ucmVwbGFjZW1lbnRzOiBzdHJpbmdbXSk6IHN0cmluZyB7XHJcbiAgICBsZXQgcmVzdWx0ID0gYXJndW1lbnRzWzBdO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoIC0gMTsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IHJlZyA9IG5ldyBSZWdFeHAoYFxcXFx7JHtpfVxcXFx9YCwgJ2dtJyk7XHJcbiAgICAgIHJlc3VsdCA9IHJlc3VsdC5yZXBsYWNlKHJlZywgYXJndW1lbnRzW2kgKyAxXSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgaGFzSXRlbVNlbGVjdGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMucmVzdWx0QWNjZXNzKS5zb21lKGtleSA9PiAhIXRoaXMucmVzdWx0QWNjZXNzW2tleV0/Lmxlbmd0aClcclxuICB9XHJcblxyXG4gIHVwZGF0ZURlcGFydG1lbnQoZGF0YTogUU1TVHJlZU5vZGVbXSA9IFtdKSB7XHJcbiAgICB0aGlzLmdldExvYWRpbmckLm5leHQoZmFsc2UpO1xyXG5cclxuICAgIGlmICh0aGlzLmRpYWxvZ0RhdGEuZGlzYWJsZVNlbGVjdGVkTGlzdCkge1xyXG4gICAgICBkYXRhLmZvckVhY2goaXRlbSA9PiBpdGVtLmRpc2FibGVkID0gIXRoaXMuYWxsb3dSZW1vdmUoT3B0aW9uU2VsZWN0QWNjZXNzRW51bS5ERVBBUlRNRU5ULCBpdGVtKSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmRpYWxvZ0RhdGEudHJlZURlcGFydG1lbnRDb25maWcudHJlZURhdGEgPSBfLmNsb25lRGVlcChkYXRhKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZU9wdGlvblBlcnNvbkZpbHRlcihkZXBhcnRtZW50RmlsdGVyOiBRTVNGbGF0Tm9kZVRyZWVbXSA9IFtdLCB1c2VyR3JvdXBGaWx0ZXI6IFFNU0FjY2Vzc0l0ZW1bXSA9IFtdKSB7XHJcbiAgICB0aGlzLm9wdGlvbkZpbHRlclBlcnNvbkRhdGFHbG9iYWwuZGVwYXJ0bWVudHMgPSBkZXBhcnRtZW50RmlsdGVyO1xyXG4gICAgdGhpcy5vcHRpb25GaWx0ZXJQZXJzb25EYXRhR2xvYmFsLnVzZXJHcm91cHMgPSB1c2VyR3JvdXBGaWx0ZXI7XHJcbiAgICB0aGlzLmZpbHRlcmVkU2VhcmNoVGV4dEJveC5kZXBhcnRtZW50Lm5leHQoZGVwYXJ0bWVudEZpbHRlcik7XHJcbiAgICB0aGlzLmZpbHRlcmVkU2VhcmNoVGV4dEJveC51c2VyR3JvdXAubmV4dCh1c2VyR3JvdXBGaWx0ZXIpO1xyXG4gIH1cclxuXHJcbiAgc2V0RGVmYXVsdFBhZ2VTaXplT3B0aW9uKGRhdGE6IG51bWJlcltdKSB7XHJcbiAgICB0aGlzLlBBR0VfU0laRV9PUFRJT04gPSBkYXRhO1xyXG4gIH1cclxuICBhbGxvd1JlbW92ZSA9ICh0eXBlOiBPcHRpb25TZWxlY3RBY2Nlc3NFbnVtLCBpdGVtOiBhbnkpOiBib29sZWFuID0+IHtcclxuICAgIGlmICghdGhpcy5kaWFsb2dEYXRhLmRpc2FibGVTZWxlY3RlZExpc3QpXHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgY29uc3QgeyBwZXJzb25zLCBkZXBhcnRtZW50cywgdXNlckdyb3VwcyB9ID0gdGhpcy5kaWFsb2dEYXRhLmRhdGEuc2VsZWN0ZWREYXRhO1xyXG4gICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgIGNhc2UgT3B0aW9uU2VsZWN0QWNjZXNzRW51bS5QRVJTT046IHJldHVybiAhcGVyc29ucy5zb21lKHggPT4geC5pZCA9PSBpdGVtLmlkKVxyXG4gICAgICBjYXNlIE9wdGlvblNlbGVjdEFjY2Vzc0VudW0uREVQQVJUTUVOVDogcmV0dXJuICFkZXBhcnRtZW50cy5zb21lKHggPT4geC5pZCA9PSBpdGVtLmlkKVxyXG4gICAgICBjYXNlIE9wdGlvblNlbGVjdEFjY2Vzc0VudW0uVVNFUl9HUk9VUDogcmV0dXJuICF1c2VyR3JvdXBzLnNvbWUoeCA9PiB4LmlkID09IGl0ZW0uaWQpXHJcbiAgICAgIGRlZmF1bHQ6IHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuIiwiPGgzIG1hdC1kaWFsb2ctdGl0bGUgY2xhc3M9XCJtb3JlLWFjdGlvblwiPlxuICB7e2RpYWxvZ0RhdGEudGl0bGVEaWFsb2cgfHwgTEFORy5TRUxFQ1RfQUNDRVNTfX1cbiAgPGJ1dHRvbiBtYXREaWFsb2dDbG9zZSBjbGFzcz1cImNsb3NlLWJ0blwiIHFtcy1idG4taWNvbiBjb2xvcj1cImxpZ2h0XCI+XG4gICAgPG1hdC1pY29uIGNsYXNzPVwibWF0LWljb25zLW91dGxpbmVkXCI+Y2xvc2U8L21hdC1pY29uPlxuICA8L2J1dHRvbj5cbjwvaDM+XG48bWF0LWRpYWxvZy1jb250ZW50PlxuICA8ZGl2IFtjbGFzcy5hY3RpdmVdPVwib3B0aW9uU2VsZWN0LnZhbHVlICE9PSBudWxsXCIgY2xhc3M9XCJxbXMtZGlhbG9nLWNvbnRlbnRcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYWNjZXNzLWRpYWxvZy13cmFwZXJcIj5cbiAgICAgIDxtYXQtZm9ybS1maWVsZCAqbmdJZj1cIm9wdGlvbnMubGVuZ3RoID4gMVwiIHFtcy1mb3JtIHFtcy1zZWxlY3QtaW5wdXQgY2xhc3M9XCJmaWVsZC1zZWxlY3Qtb3B0aW9uIHctMTAwIG1iLTJcIlxuICAgICAgICBhcHBlYXJhbmNlPVwiZmlsbFwiPlxuICAgICAgICA8bWF0LWxhYmVsIHFtcy1zZWxlY3QtaW5wdXQ+e3tMQU5HLlRZUEV9fTwvbWF0LWxhYmVsPlxuICAgICAgICA8bWF0LXNlbGVjdCAoc2VsZWN0aW9uQ2hhbmdlKT1cIm9uU2VsZWN0aW9uVHlwZUNoYW5nZSgkZXZlbnQpXCIgW2Zvcm1Db250cm9sXT1cIm9wdGlvblNlbGVjdFwiIHBsYWNlaG9sZGVyPVwiU2VsZWN0XCJcbiAgICAgICAgICBkaXNhYmxlT3B0aW9uQ2VudGVyaW5nICNzaW5nbGVTZWxlY3QgcGFuZWxDbGFzcz1cInFtcy1zZWxlY3QtcGFuZWxcIiBxbXMtc2VsZWN0PlxuXG4gICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGl0ZW0gb2Ygb3B0aW9uc1wiIFt2YWx1ZV09XCJpdGVtLnR5cGVcIj5cbiAgICAgICAgICAgIHt7IExBTkdbaXRlbS5kaXNwbGF5TmFtZV0gfX1cbiAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICA8ZGl2IGNsYXNzPVwiYm9keS1kaWFsb2ctY29udGFpbmVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJvcHRpb24tc2VsZWN0ZWQtY29udGVudFwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJvcHRpb25TZWxlY3QudmFsdWUgPT09IE9QVElPTl9FTlVNLlBFUlNPTlwiPlxuICAgICAgICAgICAgPGZvcm0gKm5nSWY9XCJwZXJzb25Gb3JtXCIgW2Zvcm1Hcm91cF09XCJwZXJzb25Gb3JtXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncm91cC1maWx0ZXItcGVyc29uLW9wdGlvblwiPlxuICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCAqbmdJZj1cIm9wdGlvbkZpbHRlclBlcnNvbkRhdGFHbG9iYWwudXNlckdyb3Vwcy5sZW5ndGhcIiBxbXMtZm9ybSBxbXMtc2VsZWN0LWlucHV0XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInctMTAwICBtYi0yXCIgYXBwZWFyYW5jZT1cImZpbGxcIj5cbiAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWwgcW1zLXNlbGVjdC1pbnB1dD57e0xBTkcuUk9MRX19PC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgICAgICA8bWF0LXNlbGVjdCBwYW5lbENsYXNzPVwicW1zLXNlbGVjdC1wYW5lbFwiIHFtcy1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwidXNlckdyb3VwXCJcbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZU9wdGlvbkNlbnRlcmluZz5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1zZWxlY3QtdHJpZ2dlcj5cbiAgICAgICAgICAgICAgICAgICAgICB7e3BlcnNvbkZvcm0uY29udHJvbHNbJ3VzZXJHcm91cCddLnZhbHVlPy5uYW1lIHx8ICcnfX1cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0LXRyaWdnZXI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgIDxuZ3gtbWF0LXNlbGVjdC1zZWFyY2ggZm9ybUNvbnRyb2xOYW1lPVwidXNlckdyb3VwRmlsdGVyXCIgcGxhY2Vob2xkZXJMYWJlbD1cInt7IExBTkcuUk9MRSB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBub0VudHJpZXNGb3VuZExhYmVsPVwiXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPC9uZ3gtbWF0LXNlbGVjdC1zZWFyY2g+XG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gbW9kZT1cImRhcmtcIiBjbGFzcz1cIm9wdC1jaGVjay1pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBmaWx0ZXJlZFNlYXJjaFRleHRCb3gudXNlckdyb3VwLnZhbHVlXCIgW3ZhbHVlXT1cIml0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBxbXMtZWxpcHNpZnkgcG9zaXRpb249XCJ0b3BcIiBtb2RlPVwiZGFya1wiIGNsYXNzPVwidGV4dC1vcHRpb24tY29udGVudFwiPnt7IGl0ZW0ubmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJjaGVjay1pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicGVyc29uRm9ybS5jb250cm9sc1sndXNlckdyb3VwJ10udmFsdWU/LmlkID09IGl0ZW0uaWRcIj5jaGVjazwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIFtAaW5PdXRBbmltYXRpb25dIChjbGljayk9XCJwZXJzb25Gb3JtLmdldCgndXNlckdyb3VwJykuc2V0VmFsdWUoJycpXCIgY2xhc3M9XCJwb2ludGVyIFwiIG1hdFN1ZmZpeFxuICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiQ2xlYXJcIiAqbmdJZj1cInBlcnNvbkZvcm0uZ2V0KCd1c2VyR3JvdXAnKS52YWx1ZSAmJiAhZ2V0TG9hZGluZyQudmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCAqbmdJZj1cIm9wdGlvbkZpbHRlclBlcnNvbkRhdGFHbG9iYWwuZGVwYXJ0bWVudHMubGVuZ3RoXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwidy0xMDAgaW5wdXQtc2VsZWN0LW9wdGlvbiAgbWItMlwiIHFtcy1mb3JtIHFtcy1zZWxlY3QtaW5wdXQ+XG4gICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPnt7TEFORy5ERVBBUlRNRU5UX1VOSVR9fTwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgICAgPG1hdC1zZWxlY3QgcGFuZWxDbGFzcz1cInFtcy1zZWxlY3QtcGFuZWxcIiBxbXMtc2VsZWN0IGRpc2FibGVPcHRpb25DZW50ZXJpbmdcbiAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZGVwYXJ0bWVudFwiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LXNlbGVjdC10cmlnZ2VyPlxuICAgICAgICAgICAgICAgICAgICAgIHt7cGVyc29uRm9ybS5jb250cm9sc1snZGVwYXJ0bWVudCddLnZhbHVlPy5uYW1lIHx8ICcnfX1cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0LXRyaWdnZXI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgIDxuZ3gtbWF0LXNlbGVjdC1zZWFyY2ggZm9ybUNvbnRyb2xOYW1lPVwiZGVwYXJ0bWVudEZpbHRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJMYWJlbF09XCJMQU5HLkRFUEFSVE1FTlRfVU5JVFwiIG5vRW50cmllc0ZvdW5kTGFiZWw9XCJcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8L25neC1tYXQtc2VsZWN0LXNlYXJjaD5cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiBjbGFzcz1cIm9wdC1jaGVjay1pY29uXCIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZmlsdGVyZWRTZWFyY2hUZXh0Qm94LmRlcGFydG1lbnQudmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJpdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gcW1zLWVsaXBzaWZ5IG1vZGU9XCJkYXJrXCIgcG9zaXRpb249XCJ0b3BcIiBjbGFzcz1cInRleHQtb3B0aW9uLWNvbnRlbnRcIj57eyBpdGVtLm5hbWUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiY2hlY2staWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInBlcnNvbkZvcm0uY29udHJvbHNbJ2RlcGFydG1lbnQnXS52YWx1ZT8uaWQgPT0gaXRlbS5pZFwiPmNoZWNrPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgPHNwYW4gKGNsaWNrKT1cInNldEZvcm1Db250cm9sVmFsdWUoWydyZWN1cnNpdmUnLCdkZXBhcnRtZW50J10sIFtmYWxzZSwnJ10pXCIgW0Bpbk91dEFuaW1hdGlvbl1cbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwb2ludGVyXCIgbWF0U3VmZml4IGFyaWEtbGFiZWw9XCJDbGVhclwiXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicGVyc29uRm9ybS5nZXQoJ2RlcGFydG1lbnQnKS52YWx1ZSAmJiAhZ2V0TG9hZGluZyQudmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBbQGluT3V0QW5pbWF0aW9uXSAqbmdJZj1cInBlcnNvbkZvcm0uY29udHJvbHNbJ2RlcGFydG1lbnQnXS52YWx1ZVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ3LTEwMCBzbGlkZS10b2dnbGVcIiBmb3JtQ29udHJvbE5hbWU9XCJyZWN1cnNpdmVcIiBjb2xvcj1cImRlZmF1bHRcIiBxbXMtZ3JvdXAtb3B0aW9ucz5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtbGFiZWxcIj57e0xBTkcuSU5DTFVERV9TVUJfREVQQVJUTUVOVFN9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxuXG4gICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInctMTAwICBtYi0yXCIgYXBwZWFyYW5jZT1cImZpbGxcIiBxbXMtZm9ybSBxbXMtc2VhcmNoLWZpZWxkPlxuICAgICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBhcHBlYXJhbmNlPVwib2ZmXCIgW3BsYWNlaG9sZGVyXT1cIkxBTkcuU0VBUkNIX1dJVEhfTkFNRVwiIGZvcm1Db250cm9sTmFtZT1cImtleXdvcmRcIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIiBhdXRvY29tcGxldGU9XCJvZmZcIiAvPlxuICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCIhZ2V0TG9hZGluZyQudmFsdWVcIiBxbXMtYnRuLWljb24gY29sb3I9XCJsaWdodFwiIFtAaW5PdXRBbmltYXRpb25dXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25TZWFyY2hQZXJzb25GcmVlVGV4dCgpXCIgY2xhc3M9XCJwb2ludGVyIG1lLTFcIiBtYXRTdWZmaXggYXJpYS1sYWJlbD1cIlNlYXJjaFwiPlxuICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPnNlYXJjaDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPG1hdC1wcm9ncmVzcy1zcGlubmVyIFtAaW5PdXRBbmltYXRpb25dICpuZ0lmPVwiZ2V0TG9hZGluZyQudmFsdWVcIiBtYXRTdWZmaXggbW9kZT1cImluZGV0ZXJtaW5hdGVcIlxuICAgICAgICAgICAgICAgICAgZGlhbWV0ZXI9XCIyMFwiPjwvbWF0LXByb2dyZXNzLXNwaW5uZXI+XG4gICAgICAgICAgICAgICAgPHNwYW4gW0Bpbk91dEFuaW1hdGlvbl0gKGNsaWNrKT1cInBlcnNvbkZvcm0uZ2V0KCdrZXl3b3JkJykuc2V0VmFsdWUoJycpXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwicG9pbnRlciBidG4taWNvbi1jbGVhciBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgXCIgbWF0U3VmZml4XG4gICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiQ2xlYXJcIiAqbmdJZj1cInBlcnNvbkZvcm0uZ2V0KCdrZXl3b3JkJykudmFsdWUgJiYgIWdldExvYWRpbmckLnZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIHFtcy1idG4taWNvbiBjb2xvcj1cImxpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cIm9uRmlsdGVyUGVyc29uKClcIiBxbXMtYnRuLW91dGxpbmVkIGNsYXNzPVwidy0xMDAgbXktMVwiPlxuICAgICAgICAgICAgICAgIHt7TEFORy5GSUxURVJ9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgICA8ZGl2IHFtcy1zY3JvbGxiYXI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW1cIj5cbiAgICAgICAgICAgICAgICAgIDxtYXQtY2hlY2tib3ggW0Bpbk91dEFuaW1hdGlvbl1cbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhZ2V0TG9hZGluZyQudmFsdWUgJiYgcGVyc29uRmlsdGVyZWQubGVuZ3RoICYmICFkaWFsb2dEYXRhLm1vZGVTZWxlY3RPbmVQZXJzb25cIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNEaXNhYmxlZFNlbGVjdEFsbChPUFRJT05fRU5VTS5QRVJTT04pXCIgI2NoZWNrUGVyc29uIGNsYXNzPVwidy0xMDAgbWItMSBjaGVja2JveC1hbGxcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicGVyc29uRmlsdGVyZWQubGVuZ3RoICYmIG9uQ2hlY2tBbGwoT1BUSU9OX0VOVU0uUEVSU09OLGNoZWNrUGVyc29uKVwiXG4gICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImlzQ2hlY2tBbGwoT1BUSU9OX0VOVU0uUEVSU09OKVwiIFtpbmRldGVybWluYXRlXT1cImlzSW5kZXRlcm1pbmF0ZShPUFRJT05fRU5VTS5QRVJTT04pXCJcbiAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJkZWZhdWx0XCIgcW1zLWdyb3VwLW9wdGlvbnM+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1sYWJlbCBoZWFkZXItdGl0bGVcIj57e0xBTkcuQ0hPT1NFX0FMTH19IDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+KDxiPnt7cGVyc29uRmlsdGVyZWQubGVuZ3RofX08L2I+KTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvbWF0LWNoZWNrYm94PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxtYXQtZGl2aWRlciBjbGFzcz1cIm14LWF1dG9cIj48L21hdC1kaXZpZGVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJnZXRMb2FkaW5nJC52YWx1ZTsgdGhlbiBsb2FkaW5nXCI+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPGRpdiBbQGluT3V0QW5pbWF0aW9uXSAqbmdJZj1cInBlcnNvbkZpbHRlcmVkLmxlbmd0aCAmJiAhZ2V0TG9hZGluZyQudmFsdWVcIiBbQGxpc3RBbmltYXRpb25dXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIml0ZW0tbGlzdC13cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbSAgbXQtMVwiIFtAaW5PdXRBbmltYXRpb25dICpuZ0Zvcj1cImxldCBlbXBsb3llZSBvZiBwZXJzb25GaWx0ZXJlZDsgdHJhY2tCeTogdHJhY2tCeUZuXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJkaWFsb2dEYXRhLm1vZGVTZWxlY3RPbmVQZXJzb24gP2l0ZW1XaXRob3V0Q2hlY2tib3hUZW1wbGF0ZSA6IGl0ZW1DaGVja2JveFRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie2l0ZW06IGVtcGxveWVlLCB0eXBlOiBPUFRJT05fRU5VTS5QRVJTT059XCI+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBbQGluT3V0QW5pbWF0aW9uXSAqbmdJZj1cIiFwZXJzb25GaWx0ZXJlZC5sZW5ndGggJiYgIWdldExvYWRpbmckLnZhbHVlXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaXRlbS1saXN0LXdyYXBwZXIgbm8tcmVzdWx0XCI+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibm9SZXN1bHRcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8bWF0LWRpdmlkZXIgY2xhc3M9XCJteC1hdXRvXCI+PC9tYXQtZGl2aWRlcj5cbiAgICAgICAgICAgICAgICA8cW1zLXBhZ2luYXRvciBvdmVybGF5UGFuZWxDbGFzcz1cInNlbGVjdC1hY2Nlc3MtcGFnaW5hdG9yXCIgI3BhZ2luZ1BlcnNvblxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJnZXRQZXJzb24kLnZhbHVlLmxlbmd0aCA+IDEwXCIgW2xlbmd0aF09XCJnZXRQZXJzb24kLnZhbHVlLmxlbmd0aFwiIFtudW1IaWRkZW5dPVwiMFwiXG4gICAgICAgICAgICAgICAgICBbcGFnZVNpemVdPVwiZ2V0UGVyc29uJC52YWx1ZS5wYWdlU2l6ZVwiIFtwYWdlU2l6ZU9wdGlvbnNdPVwiUEFHRV9TSVpFX09QVElPTlwiXG4gICAgICAgICAgICAgICAgICAocGFnZSk9J29uUGFnaW5hdG9yRXZlbnQoJGV2ZW50LCBPUFRJT05fRU5VTS5QRVJTT04pJyBbc2l6ZV09J1BBR0lOQVRJT05fU0laRS5tZWRpdW0nPlxuICAgICAgICAgICAgICAgIDwvcW1zLXBhZ2luYXRvcj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Zvcm0+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm9wdGlvblNlbGVjdC52YWx1ZSA9PT0gT1BUSU9OX0VOVU0uVVNFUl9HUk9VUFwiPlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgPGZvcm0gKHN1Ym1pdCk9XCJvbkZpbHRlclVzZXJHcm91cCgpXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwidy0xMDAgIG1iLTJcIiBxbXMtZm9ybSBxbXMtc2VhcmNoLWZpZWxkPlxuICAgICAgICAgICAgICAgICAgPGlucHV0IFtmb3JtQ29udHJvbF09XCJ1c2VyR3JvdXBGb3JtXCIgbWF0SW5wdXQgdHlwZT1cInRleHRcIiBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlVzZXIgZ3JvdXBcIiAvPlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBbQGluT3V0QW5pbWF0aW9uXSAqbmdJZj1cIiFnZXRMb2FkaW5nJC52YWx1ZVwiIHR5cGU9XCJzdWJtaXRcIiBxbXMtYnRuLWljb24gY29sb3I9XCJsaWdodFwiXG4gICAgICAgICAgICAgICAgICAgIG1hdFN1ZmZpeD5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPnNlYXJjaDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDxtYXQtcHJvZ3Jlc3Mtc3Bpbm5lciBbQGluT3V0QW5pbWF0aW9uXSAqbmdJZj1cImdldExvYWRpbmckLnZhbHVlXCIgbWF0U3VmZml4IG1vZGU9XCJpbmRldGVybWluYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgZGlhbWV0ZXI9XCIyMFwiPjwvbWF0LXByb2dyZXNzLXNwaW5uZXI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IFtAaW5PdXRBbmltYXRpb25dICpuZ0lmPVwiISF1c2VyR3JvdXBGb3JtLnZhbHVlICYmICFnZXRMb2FkaW5nJC52YWx1ZVwiIG1hdFN1ZmZpeCBxbXMtaW5wdXQtY2xlYXI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cInVzZXJHcm91cEZvcm0uc2V0VmFsdWUoJycpXCIgcW1zLWJ0bi1pY29uIGNvbG9yPVwibGlnaHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICAgIDwvZm9ybT5cbiAgICAgICAgICAgICAgPGRpdiBxbXMtc2Nyb2xsYmFyPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtXCI+XG4gICAgICAgICAgICAgICAgICA8bWF0LWNoZWNrYm94IFtAaW5PdXRBbmltYXRpb25dXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWdldExvYWRpbmckLnZhbHVlICYmICh1c2VyR3JvdXBGaWx0ZXJlZC5sZW5ndGggJiYgIWRpYWxvZ0RhdGEubW9kZVNlbGVjdE9uZVVzZXJHcm91cClcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNEaXNhYmxlZFNlbGVjdEFsbChPUFRJT05fRU5VTS5VU0VSX0dST1VQKVwiICNjaGVja1VzZXJHcm91cFxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInctMTAwIGNoZWNrYm94LWFsbCBtYi0xXCIgY29sb3I9XCJkZWZhdWx0XCIgW2NoZWNrZWRdPVwiaXNDaGVja0FsbChPUFRJT05fRU5VTS5VU0VSX0dST1VQKVwiXG4gICAgICAgICAgICAgICAgICAgIFtpbmRldGVybWluYXRlXT1cImlzSW5kZXRlcm1pbmF0ZShPUFRJT05fRU5VTS5VU0VSX0dST1VQKVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ1c2VyR3JvdXBGaWx0ZXJlZC5sZW5ndGggJiYgb25DaGVja0FsbChPUFRJT05fRU5VTS5VU0VSX0dST1VQLGNoZWNrVXNlckdyb3VwKVwiXG4gICAgICAgICAgICAgICAgICAgIHFtcy1ncm91cC1vcHRpb25zPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtbGFiZWwgaGVhZGVyLXRpdGxlXCI+e3tMQU5HLkNIT09TRV9BTEx9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+KDxiPnt7dXNlckdyb3VwRmlsdGVyZWQubGVuZ3RofX08L2I+KTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvbWF0LWNoZWNrYm94PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxtYXQtZGl2aWRlciBjbGFzcz1cIm14LWF1dG9cIj48L21hdC1kaXZpZGVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJnZXRMb2FkaW5nJC52YWx1ZTt0aGVuIGxvYWRpbmdcIj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidXNlckdyb3VwRmlsdGVyZWQubGVuZ3RoICYmICFnZXRMb2FkaW5nJC52YWx1ZVwiIFtAbGlzdEFuaW1hdGlvbl0gY2xhc3M9XCJpdGVtLWxpc3Qtd3JhcHBlclwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBbQGluT3V0QW5pbWF0aW9uXSBjbGFzcz1cIml0ZW0gbXQtMVwiICpuZ0Zvcj1cImxldCB1c2VyR3JvdXAgb2YgdXNlckdyb3VwRmlsdGVyZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImRpYWxvZ0RhdGEubW9kZVNlbGVjdE9uZVVzZXJHcm91cCA/IGl0ZW1XaXRob3V0Q2hlY2tib3hUZW1wbGF0ZSA6IGl0ZW1DaGVja2JveFRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie2l0ZW06IHVzZXJHcm91cCx0eXBlOiBPUFRJT05fRU5VTS5VU0VSX0dST1VQfVwiPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgW0Bpbk91dEFuaW1hdGlvbl0gKm5nSWY9XCIhdXNlckdyb3VwRmlsdGVyZWQubGVuZ3RoICYmICFnZXRMb2FkaW5nJC52YWx1ZVwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIml0ZW0tbGlzdC13cmFwcGVyIG5vLXJlc3VsdFwiPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm5vUmVzdWx0XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPG1hdC1kaXZpZGVyIGNsYXNzPVwibXgtYXV0b1wiPjwvbWF0LWRpdmlkZXI+XG4gICAgICAgICAgICAgICAgPHFtcy1wYWdpbmF0b3Igb3ZlcmxheVBhbmVsQ2xhc3M9XCJzZWxlY3QtYWNjZXNzLXBhZ2luYXRvclwiICNwYWdpbmdVc2VyR3JvdXAgY2xhc3M9XCJteS0xXCJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZ2V0VXNlckdyb3VwJC52YWx1ZS5sZW5ndGggPiAxMCBcIiBbbGVuZ3RoXT1cImdldFVzZXJHcm91cCQudmFsdWUubGVuZ3RoXCIgW251bUhpZGRlbl09XCIwXCJcbiAgICAgICAgICAgICAgICAgIFtwYWdlU2l6ZV09XCJnZXRVc2VyR3JvdXAkLnZhbHVlLnBhZ2VTaXplXCIgW3BhZ2VTaXplT3B0aW9uc109XCJQQUdFX1NJWkVfT1BUSU9OXCJcbiAgICAgICAgICAgICAgICAgIChwYWdlKT0nb25QYWdpbmF0b3JFdmVudCgkZXZlbnQsIE9QVElPTl9FTlVNLlVTRVJfR1JPVVApJyBbc2l6ZV09J1BBR0lOQVRJT05fU0laRS5tZWRpdW0nPlxuICAgICAgICAgICAgICAgIDwvcW1zLXBhZ2luYXRvcj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdJZj1cIm9wdGlvblNlbGVjdC52YWx1ZSA9PT0gT1BUSU9OX0VOVU0uREVQQVJUTUVOVCAmJiBnZXRMb2FkaW5nJC52YWx1ZTsgdGhlbiBsb2FkaW5nXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm9wdGlvblNlbGVjdC52YWx1ZSA9PT0gT1BUSU9OX0VOVU0uREVQQVJUTUVOVCAmJiAhZ2V0TG9hZGluZyQudmFsdWVcIlxuICAgICAgICAgICAgY2xhc3M9XCJwZXJzb24tYWNjZXNzXCI+XG4gICAgICAgICAgICA8cW1zLXNlbGVjdC1kZXBhcnRtZW50LXRyZWUgI3RyZWUgW3Jvd3NTa2VsZXRvbl09XCI4XCIgW2NvbmZpZ109XCJkaWFsb2dEYXRhLnRyZWVEZXBhcnRtZW50Q29uZmlnXCJcbiAgICAgICAgICAgICAgW21heFdpZHRoTm9kZV09XCJkaWFsb2dEYXRhLm1heFdpZHRoTm9kZVwiIChvblNlYXJjaEV2ZW50KT1cIm9uU2VhcmNoRGVwYXJ0bWVudEV2ZW50LmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgIChvblZhbHVlQ2hhbmdlRXZlbnQpPVwib25SZXN1bHREZXBhcnRtZW50Q2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICAoc2VsZWN0aW9uTm9kZUNoYW5nZUV2ZW50KT1cIm9uU2VsZWN0aW9uTm9kZURlcGFydG1lbnRDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgIChvblBhZ2luZ1NlYXJjaEV2ZW50KT1cIm9uUGFnaW5hdG9yRXZlbnQoJGV2ZW50LCBPUFRJT05fRU5VTS5ERVBBUlRNRU5UKVwiPlxuICAgICAgICAgICAgPC9xbXMtc2VsZWN0LWRlcGFydG1lbnQtdHJlZT5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgKm5nSWY9XCJvcHRpb25TZWxlY3QudmFsdWUgIT09IG51bGxcIiBjbGFzcz1cInJlc3VsdC13cmFwcGVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicmVzdWx0LXNlbGVjdGVkLWNvbnRhaW5lclwiPlxuICAgICAgICA8ZGl2IFtAaW5PdXRBbmltYXRpb25dICpuZ0lmPVwiKG9wdGlvbnMubGVuZ3RoID09PSAxKSB8fCAob3B0aW9ucy5sZW5ndGggPiAxICYmIG9wdGlvblNlbGVjdC52YWx1ZSAhPT0gbnVsbClcIlxuICAgICAgICAgIGNsYXNzPVwiaGVhZGVyLXRpdGxlIHJlc3VsdC1oZWFkZXJcIj5cbiAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgIHt7XG4gICAgICAgICAgICBkaWFsb2dEYXRhLnRpdGxlUmVzdWx0IHx8IExBTkcuUkVTVUxUU319XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm9wdGlvbnMubGVuZ3RoID09PSAxICYmIGhhc0l0ZW1TZWxlY3RlZCgpXCI+XG4gICAgICAgICAgICAgICh7e2dldFJlc3VsdFRhYkFjdGl2ZSgpLmxlbmd0aH19KVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyZXN1bHQtYm9keVwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjaGVja0V4aXN0T3B0aW9uU2VsZWN0KE9QVElPTl9FTlVNLlBFUlNPTilcIlxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwib3B0aW9ucz8ubGVuZ3RoID09IDEgPyBsaXN0Q2hpcCA6IHZpZXdSZXN1bHRDb2xsYXBzZVwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie2RhdGE6cmVzdWx0QWNjZXNzLnBlcnNvbnMsIHR5cGU6T1BUSU9OX0VOVU0uUEVSU09OLCB0aXRsZTpMQU5HLlBFUlNPTn1cIj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2hlY2tFeGlzdE9wdGlvblNlbGVjdChPUFRJT05fRU5VTS5VU0VSX0dST1VQKVwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJvcHRpb25zPy5sZW5ndGggPT0gMSA/IGxpc3RDaGlwIDogdmlld1Jlc3VsdENvbGxhcHNlXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ZGF0YTpyZXN1bHRBY2Nlc3MudXNlckdyb3VwcywgdHlwZTpPUFRJT05fRU5VTS5VU0VSX0dST1VQLCB0aXRsZTpMQU5HLlVTRVJfR1JPVVB9XCI+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNoZWNrRXhpc3RPcHRpb25TZWxlY3QoT1BUSU9OX0VOVU0uREVQQVJUTUVOVClcIlxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwib3B0aW9ucz8ubGVuZ3RoID09IDEgPyBsaXN0Q2hpcCA6IHZpZXdSZXN1bHRDb2xsYXBzZVwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie2RhdGE6IHJlc3VsdEFjY2Vzcy5kZXBhcnRtZW50cywgdHlwZTpPUFRJT05fRU5VTS5ERVBBUlRNRU5ULCB0aXRsZTpMQU5HLkRFUEFSVE1FTlR9XCI+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG48L21hdC1kaWFsb2ctY29udGVudD5cbjxtYXQtZGlhbG9nLWFjdGlvbnMgYWxpZ249XCJlbmRcIj5cbiAgPG1hdC1kaXZpZGVyIGNsYXNzPVwidy0xMDAgbWItM1wiPjwvbWF0LWRpdmlkZXI+XG4gIDxidXR0b24gY2xhc3M9XCJtZS0yXCIgcW1zLWJ0bi10ZXh0IG1hdC1kaWFsb2ctY2xvc2U+XG4gICAge3tkaWFsb2dEYXRhLmNhbmNlbFRpdGxlIHx8IExBTkcuQ0FOQ0VMfX1cbiAgPC9idXR0b24+XG4gIDxidXR0b24gKm5nSWY9XCJvcHRpb25TZWxlY3QudmFsdWUgIT09IG51bGxcIlxuICAgIFtkaXNhYmxlZF09XCIhaGFzSXRlbVNlbGVjdGVkKCkgJiYgIWRpYWxvZ0RhdGEudHJlZURlcGFydG1lbnRDb25maWcuY2FuQWRkTnVsbFJlc3VsdFwiIGNsYXNzPVwiYnRuLWFkZFwiXG4gICAgW2NsYXNzLnFtcy1idG4tZGlzYWJsZWRdPVwiIWhhc0l0ZW1TZWxlY3RlZCgpICYmICFkaWFsb2dEYXRhLnRyZWVEZXBhcnRtZW50Q29uZmlnLmNhbkFkZE51bGxSZXN1bHRcIlxuICAgIFttYXQtZGlhbG9nLWNsb3NlXT1cInJlc3VsdEFjY2Vzc1wiIHFtcy1idG4+XG4gICAgPHNwYW4+e3tkaWFsb2dEYXRhLmNvbmZpcm1UaXRsZSB8fCBMQU5HLkFERH19PC9zcGFuPlxuICA8L2J1dHRvbj5cbjwvbWF0LWRpYWxvZy1hY3Rpb25zPlxuXG48bmctdGVtcGxhdGUgI25vUmVzdWx0PlxuICA8c3ZnIHdpZHRoPVwiODlcIiBoZWlnaHQ9XCIxMzBcIiB2aWV3Qm94PVwiMCAwIDg5IDg4XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgPHJlY3QgeD1cIjAuNVwiIHdpZHRoPVwiODhcIiBoZWlnaHQ9XCI4OFwiIHJ4PVwiNDRcIiBmaWxsPVwid2hpdGVcIiAvPlxuICAgIDxyZWN0IHg9XCIwLjVcIiB3aWR0aD1cIjg4XCIgaGVpZ2h0PVwiODhcIiByeD1cIjQ0XCIgZmlsbD1cIiMwMTYzQjJcIiBmaWxsLW9wYWNpdHk9XCIwLjEyXCIgLz5cbiAgICA8cGF0aFxuICAgICAgZD1cIk00NC41IDU2LjY5MzZMNTguMDk2IDY0Ljg5OTZMNTQuNDg4IDQ5LjQzMzZMNjYuNSAzOS4wMjc2TDUwLjY4MiAzNy42ODU2TDQ0LjUgMjMuMDk5NkwzOC4zMTggMzcuNjg1NkwyMi41IDM5LjAyNzZMMzQuNTEyIDQ5LjQzMzZMMzAuOTA0IDY0Ljg5OTZMNDQuNSA1Ni42OTM2WlwiXG4gICAgICBmaWxsPVwiIzAxNjNCM1wiIC8+XG4gICAgPHRleHQgeD1cIjEwXCIgeT1cIjEwNVwiIGZpbGw9XCIjMDE2M0IyXCI+e3tMQU5HLk5PX1JFU1VMVH19PC90ZXh0PlxuICA8L3N2Zz5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI2xpc3RDaGlwIGxldC1kYXRhPVwiZGF0YVwiIGxldC10eXBlPVwidHlwZVwiPlxuICA8bWF0LWNoaXAtc2V0IFtAaW5PdXRBbmltYXRpb25dICpuZ0lmPVwiZGF0YT8ubGVuZ3RoXCIgY2xhc3M9XCJwYW5lbF9faXRlbSBxbXMtc2Nyb2xsYmFyXCI+XG4gICAgPGRpdiBbQGluT3V0QW5pbWF0aW9uXzJdICpuZ0Zvcj1cImxldCBpdGVtIG9mIGRhdGE7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgIDxtYXQtY2hpcCAoY2xpY2spPVwib25TY29sbFRvTm9kZVRyZWVEZXBhcnRtZW50KGl0ZW0pXCIgW0B1cGRhdGVJdGVtQW5pbWF0aW9uXVxuICAgICAgICAqcW1zQ29udGVudENoYW5nZXM9XCJpdGVtLmNoaWxkcmVuPy5sZW5ndGhcIiBjbGFzcz1cImNoaXAtaXRlbS1yZXN1bHRcIiBxbXMtY2hpcCBbcmVtb3ZhYmxlXT1cInRydWVcIj5cbiAgICAgICAgPHNwYW4gcW1zLWNoaXAtYm9keT5cbiAgICAgICAgICA8c3BhbiBbcW1zLXRvb2wtdGlwXT1cImdlbmVyYXRlVG9vbHRpcChpdGVtKVwiIHBvc2l0aW9uPVwidG9wXCIgbW9kZT1cImRhcmtcIiBjbGFzcz1cInRleHQtbGFiZWxcIj5cbiAgICAgICAgICAgIHt7aXRlbS5uYW1lfX1cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiaXRlbS5zdWJOYW1lXCI+KHt7IGl0ZW0uc3ViTmFtZSB9fSk8L3NwYW4+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcC1pdGVtLWNoaWxkcmVuX19jb3VudCBtcy0xXCIgKm5nSWY9XCJpdGVtPy5jaGlsZHJlbiAmJiBpdGVtPy5pc0dyb3VwXCI+XG4gICAgICAgICAgICB7e2l0ZW0uY2hpbGRyZW4ubGVuZ3RofX0ve3tpdGVtLmNoaWxkQ291bnR9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgIDxidXR0b24gbWF0Q2hpcFJlbW92ZSAqbmdJZj1cImFsbG93UmVtb3ZlKHR5cGUsIGl0ZW0pXCIgKGNsaWNrKT1cIm9uUmVtb3ZlQ2hpcCh0eXBlLGl0ZW0sIGkpXCI+XG4gICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwicmVtb3ZlLWNoaXAtaWNvblwiPmNhbmNlbDwvbWF0LWljb24+XG4gICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwiYWxsb3dSZW1vdmUodHlwZSwgaXRlbSkgJiYgZGlhbG9nRGF0YS5mb3JtYXRNc2dEaXNhYmxlXCIgcG9zaXRpb249XCJ0b3BcIiBtb2RlPVwiZGFya1wiXG4gICAgICAgICAgICBbcW1zLXRvb2wtdGlwXT1cImRpYWxvZ0RhdGEuZm9ybWF0TXNnRGlzYWJsZShpdGVtKVwiIGNsYXNzPVwicmVtb3ZlLWNoaXAtaWNvblwiPmluZm9faTwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIG1hdENoaXBSZW1vdmUgKm5nSWY9XCIhYWxsb3dSZW1vdmUodHlwZSwgaXRlbSkgJiYgZGlhbG9nRGF0YS5mb3JtYXRNc2dEaXNhYmxlXCJcbiAgICAgICAgICAoY2xpY2spPVwib25SZW1vdmVDaGlwKHR5cGUsaXRlbSwgaSlcIj5cbiAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJyZW1vdmUtY2hpcC1pY29uXCI+Y2FuY2VsPC9tYXQtaWNvbj5cbiAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCIhYWxsb3dSZW1vdmUodHlwZSwgaXRlbSkgJiYgZGlhbG9nRGF0YS5mb3JtYXRNc2dEaXNhYmxlXCIgcG9zaXRpb249XCJ0b3BcIiBtb2RlPVwiZGFya1wiXG4gICAgICAgICAgICBbcW1zLXRvb2wtdGlwXT1cImRpYWxvZ0RhdGEuZm9ybWF0TXNnRGlzYWJsZShpdGVtKVwiIGNsYXNzPVwicmVtb3ZlLWNoaXAtaWNvblwiPmluZm9faTwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9tYXQtY2hpcD5cbiAgICA8L2Rpdj5cbiAgPC9tYXQtY2hpcC1zZXQ+XG48L25nLXRlbXBsYXRlPlxuXG5cbjxuZy10ZW1wbGF0ZSAjdmlld1Jlc3VsdENvbGxhcHNlIGxldC10aXRsZT1cInRpdGxlXCIgbGV0LWRhdGE9XCJkYXRhXCIgbGV0LXR5cGU9XCJ0eXBlXCI+XG4gIDxtYXQtZXhwYW5zaW9uLXBhbmVsIHFtcy1leHBhbnNpb24gW2V4cGFuZGVkXT1cIm9wdGlvblNlbGVjdC52YWx1ZSA9PT0gdHlwZVwiPlxuICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZS1jb250ZW50XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJxbXMtbGlzdC10ZXh0XCI+XG4gICAgICAgICAgPGRpdiBxbXMtbGluZSBjb2xvcj1cImRlZmF1bHQtc3VidGl0bGVcIj57e3RpdGxlfX1cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZnctNjAwXCI+XG4gICAgICAgICAgICAgICh7e2RhdGE/Lmxlbmd0aH19KVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XG4gICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJsaXN0Q2hpcFwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ZGF0YTogZGF0YSx0eXBlOiB0eXBlfVwiPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L21hdC1leHBhbnNpb24tcGFuZWw+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2l0ZW1XaXRob3V0Q2hlY2tib3hUZW1wbGF0ZSBsZXQtaXRlbT1cIml0ZW1cIiBsZXQtdHlwZT1cInR5cGVcIj5cbiAgPGRpdiAoY2xpY2spPVwib25TZWxlY3RJdGVtKHR5cGUsaXRlbSlcIiBjbGFzcz1cIml0ZW0td2l0aG91dC1jaGVja2JveCB3LTEwMFwiIFtjbGFzcy5hY3RpdmVdPVwiaXRlbS5zZWxlY3RlZFwiPlxuICAgIDxkaXYgY2xhc3M9XCJpdGVtLWNvbnRlbnRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWxhYmVsXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1sYWJlbCBsYWJlbC1pdGVtIGZzLTE0IFwiPlxuICAgICAgICAgIHt7IGl0ZW0ubmFtZSB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwiaXRlbS5zdWJOYW1lXCIgY2xhc3M9XCJtcy0xIHN1Yi1sYWJlbFwiPih7e2l0ZW0uc3ViTmFtZX19KTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPHNtYWxsICpuZ0lmPVwiaXRlbS5oZWxwVGV4dFwiIGNsYXNzPVwidGV4dC1oZWxwIHB4LTEgZnMtMTIgc3ViLWxhYmVsXCI+e3sgaXRlbS5oZWxwVGV4dCB9fTwvc21hbGw+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIml0ZW0tc3RhdGVcIj5cbiAgICAgIDxtYXQtaWNvbiBbQGluT3V0QW5pbWF0aW9uXSAqbmdJZj1cIml0ZW0uc2VsZWN0ZWRcIj5jaGVjazwvbWF0LWljb24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNpdGVtQ2hlY2tib3hUZW1wbGF0ZSBsZXQtaXRlbT1cIml0ZW1cIiBsZXQtdHlwZT1cInR5cGVcIj5cbiAgPG1hdC1jaGVja2JveCBbZGlzYWJsZWRdPVwiIWFsbG93UmVtb3ZlKHR5cGUsIGl0ZW0pXCIgW2NoZWNrZWRdPVwiaXRlbS5zZWxlY3RlZFwiIChjbGljayk9XCJvblNlbGVjdEl0ZW0odHlwZSxpdGVtKVwiXG4gICAgY2xhc3M9XCJ3LTEwMFwiIGNvbG9yPVwiZGVmYXVsdFwiIHFtcy1ncm91cC1vcHRpb25zPlxuICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWxhYmVsXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cInRleHQtbGFiZWwgbGFiZWwtaXRlbSBmcy0xNCBcIj5cbiAgICAgICAge3sgaXRlbS5uYW1lIH19XG4gICAgICA8L3NwYW4+XG4gICAgICA8c3BhbiAqbmdJZj1cIml0ZW0uc3ViTmFtZVwiIGNsYXNzPVwibXMtMSBzdWItbGFiZWxcIj4oe3tpdGVtLnN1Yk5hbWV9fSk8L3NwYW4+XG4gICAgPC9kaXY+XG4gICAgPHNtYWxsICpuZ0lmPVwiaXRlbS5oZWxwVGV4dFwiIGNsYXNzPVwidGV4dC1oZWxwIHB4LTEgZnMtMTIgc3ViLWxhYmVsXCI+e3sgaXRlbS5oZWxwVGV4dCB9fTwvc21hbGw+XG4gIDwvbWF0LWNoZWNrYm94PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNsb2FkaW5nPlxuICA8ZGl2IGNsYXNzPVwicW1zLWxvYWRpbmctY29udGFpbmVyXCI+XG4gICAgPGRpdiBjbGFzcz1cInFtcy1sb2FkZXJcIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBhcnJTa2VsZXRvblwiPlxuICAgICAgPGRpdiBjbGFzcz1cInFtcy1sb2FkZXJfX3dyYXBwZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJvdy1sb2FkZXJcIj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPiJdfQ==
621
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWFjY2Vzcy1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcW1zLWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL3NlbGVjdC1hY2Nlc3MtZGlhbG9nL3NlbGVjdC1hY2Nlc3MtZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Ftcy1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9zZWxlY3QtYWNjZXNzLWRpYWxvZy9zZWxlY3QtYWNjZXNzLWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBS0wsU0FBUyxFQUNULFlBQVksRUFDWixNQUFNLEVBR04sU0FBUyxFQUNULGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXNCLGtCQUFrQixFQUFvQixNQUFNLGdCQUFnQixDQUFDO0FBQzFGLE9BQU8sRUFBRSw0QkFBNEIsRUFBNkIsTUFBTSw0QkFBNEIsQ0FBQztBQUNyRyxPQUFPLEVBQUUsZUFBZSxFQUFnQixNQUFNLDBCQUEwQixDQUFDO0FBRXpFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRCxPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSXpELE9BQU8sRUFBRSxjQUFjLEVBQXlCLE1BQU0sa0JBQWtCLENBQUM7QUFFekUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sNERBQTRELENBQUM7QUFDM0csT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEUsT0FBTyxFQUFFLHNCQUFzQixF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QzdELENBQUM7SUFFRCx3QkFBd0IsQ0FBQyxJQUFjO1FBQ3JDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7SUFDL0IsQ0FBQzsrR0F2bEJVLDhCQUE4Qiw4Q0FnRy9CLGVBQWU7bUdBaEdkLDhCQUE4QixtREFWOUI7WUFDVDtnQkFDRSxPQUFPLEVBQUUsNEJBQTRCO2dCQUNyQyxRQUFRLEVBQUU7b0JBQ1IsV0FBVyxFQUFFLE1BQU07aUJBQ1M7YUFDL0I7U0FDRixtR0F5Q08sNkJBQTZCLGlPQ3pGdkMsOHJvQkFtV2MsNHU2QkQzVEEsQ0FBQyw0QkFBNEIsQ0FBQzs7NEZBVy9CLDhCQUE4QjtrQkFmMUMsU0FBUzsrQkFDRSwwQkFBMEIsY0FHeEIsQ0FBQyw0QkFBNEIsQ0FBQyxhQUMvQjt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsNEJBQTRCOzRCQUNyQyxRQUFRLEVBQUU7Z0NBQ1IsV0FBVyxFQUFFLE1BQU07NkJBQ1M7eUJBQy9CO3FCQUNGLGlCQUNjLGlCQUFpQixDQUFDLElBQUk7OzBCQWtHbEMsTUFBTTsyQkFBQyxlQUFlO2dKQXpEbEIsSUFBSTtzQkFGVixTQUFTO3VCQUFDLE1BQU0sRUFBRTt3QkFDakIsSUFBSSxFQUFFLDZCQUE2QjtxQkFDcEM7Z0JBZ0IwQixZQUFZO3NCQUF0QyxTQUFTO3VCQUFDLGNBQWM7Z0JBQ0ssZUFBZTtzQkFBNUMsU0FBUzt1QkFBQyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEFmdGVyQ29udGVudENoZWNrZWQsXHJcbiAgQWZ0ZXJDb250ZW50SW5pdCxcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5qZWN0LFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgVmlld0NoaWxkLFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFVudHlwZWRGb3JtQnVpbGRlciwgVW50eXBlZEZvcm1Db250cm9sLCBVbnR5cGVkRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNQVRfQ0hFQ0tCT1hfREVGQVVMVF9PUFRJT05TLCBNYXRDaGVja2JveERlZmF1bHRPcHRpb25zIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3gnO1xyXG5pbXBvcnQgeyBNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IFBhZ2VFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XHJcbmltcG9ydCB7IE1hdFNlbGVjdENoYW5nZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NlbGVjdCc7XHJcbmltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBRTVNGbGF0Tm9kZVRyZWUgfSBmcm9tICcuLi8uLi9jb21tb24vbW9kZWxzL3Ftcy1mbGF0LW5vZGUubW9kZWwnO1xyXG5pbXBvcnQgeyBRTVNUcmVlTm9kZSB9IGZyb20gJy4uLy4uL2NvbW1vbi9tb2RlbHMvcW1zLXRyZWUtbm9kZS5tb2RlbCc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZUxpYnJhcnlTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3RyYW5zbGF0aW9uLXJlZ2lzdHJ5LnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgUGFnaW5hdGlvblNpemUsIFFNU1BhZ2luYXRvckNvbXBvbmVudCB9IGZyb20gJy4uL3Ftcy1wYWdpbmF0b3InO1xyXG5pbXBvcnQgeyBJU2VsZWN0aW9uTm9kZUNoYW5nZSwgUU1TRGVwYXJ0bWVudFBhZ2luZ01vZGVsIH0gZnJvbSAnLi4vc2VsZWN0LWRlcGFydG1lbnQtdHJlZSc7XHJcbmltcG9ydCB7IFNlbGVjdERlcGFydG1lbnRUcmVlQ29tcG9uZW50IH0gZnJvbSAnLi4vc2VsZWN0LWRlcGFydG1lbnQtdHJlZS9zZWxlY3QtZGVwYXJ0bWVudC10cmVlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFNlbGVjdEFjY2Vzc0FuaW1hdGlvblRyaWdnZXIgfSBmcm9tICcuL2NvbW1vbi9hbmltYXRpb24nO1xyXG5pbXBvcnQgeyBPcHRpb25TZWxlY3RBY2Nlc3NFbnVtIH0gZnJvbSAnLi9jb21tb24vb3B0aW9uLXNlbGVjdC1hY2Nlc3MuZW51bSc7XHJcbmltcG9ydCB7IFFNU0FjY2Vzc0l0ZW0gfSBmcm9tICcuL21vZGVsL2FjY2Vzcy1pdGVtLm1vZGVsJztcclxuaW1wb3J0IHsgUU1TQWNjZXNzUGFnaW5nQ2hhbmdlTW9kZWwsIFFNU0FjY2Vzc1BhZ2luZ01vZGVsIH0gZnJvbSAnLi9tb2RlbC9hY2Nlc3MtcGFnaW5nLm1vZGVsJztcclxuaW1wb3J0IHsgRmlsdGVyUGVyc29uTW9kZWwgfSBmcm9tICcuL21vZGVsL2ZpbHRlci1wZXJzb24ubW9kZWwnO1xyXG5pbXBvcnQgeyBPcHRpb25TZWxlY3RBY2Nlc3NNb2RlbCB9IGZyb20gJy4vbW9kZWwvb3B0aW9uLXNlbGVjdC1hY2Nlc3MubW9kZWwnO1xyXG5pbXBvcnQgeyBRTVNTZWxlY3RBY2Nlc3NEaWFsb2cgfSBmcm9tICcuL21vZGVsL3NlbGVjdC1hY2Nlc3MtY29uZmlnLm1vZGVsJztcclxuaW1wb3J0IHsgUU1TU2VsZWN0QWNjZXNzUmVzdWx0IH0gZnJvbSAnLi9tb2RlbC9zZWxlY3QtYWNjZXNzLWRhdGEnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdxbXMtc2VsZWN0LWFjY2Vzcy1kaWFsb2cnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWxlY3QtYWNjZXNzLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vc2VsZWN0LWFjY2Vzcy1kaWFsb2cuY29tcG9uZW50LnNjc3MnXSxcclxuICBhbmltYXRpb25zOiBbU2VsZWN0QWNjZXNzQW5pbWF0aW9uVHJpZ2dlcl0sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE1BVF9DSEVDS0JPWF9ERUZBVUxUX09QVElPTlMsXHJcbiAgICAgIHVzZVZhbHVlOiB7XHJcbiAgICAgICAgY2xpY2tBY3Rpb246ICdub29wJ1xyXG4gICAgICB9IGFzIE1hdENoZWNrYm94RGVmYXVsdE9wdGlvbnNcclxuICAgIH1cclxuICBdLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcclxufSlcclxuZXhwb3J0IGNsYXNzIFFNU1NlbGVjdEFjY2Vzc0RpYWxvZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0LCBBZnRlckNvbnRlbnRJbml0LCBBZnRlckNvbnRlbnRDaGVja2VkIHtcclxuICBuZ1Vuc3ViY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIExBTkc6IGFueTtcclxuICBvcHRpb25TZWxlY3QgPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKCk7XHJcbiAgT1BUSU9OX0VOVU0gPSBPcHRpb25TZWxlY3RBY2Nlc3NFbnVtO1xyXG4gIG9wdGlvbnM6IE9wdGlvblNlbGVjdEFjY2Vzc01vZGVsW10gPSBbXTtcclxuXHJcbiAgcHJpdmF0ZSBfZGVwYXJ0bWVudFNlbGVjdGVkOiBRTVNUcmVlTm9kZVtdID0gW107XHJcbiAgZ2V0IHNlbGVjdGVkRGVwYXJ0bWVudHMoKSB7XHJcbiAgICBjb25zdCBkZXBhcnRtZW50U2VsZWN0ZWQ6IFFNU0ZsYXROb2RlVHJlZVtdID0gW107XHJcbiAgICB0aGlzLl9kZXBhcnRtZW50U2VsZWN0ZWQuZm9yRWFjaCh4ID0+IHtcclxuICAgICAgZGVwYXJ0bWVudFNlbGVjdGVkLnB1c2goe1xyXG4gICAgICAgIGlkOiB4LmlkLFxyXG4gICAgICAgIGdyb3VwSWQ6IHguZ3JvdXBJZCxcclxuICAgICAgICBpc0dyb3VwOiB4LmlzR3JvdXBcclxuICAgICAgfSBhcyBRTVNGbGF0Tm9kZVRyZWUpO1xyXG4gICAgICBpZiAoIXguY2hpbGRyZW4/Lmxlbmd0aClcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIGRlcGFydG1lbnRTZWxlY3RlZC5wdXNoKC4uLih4LmNoaWxkcmVuLm1hcChpdGVtID0+ICh7XHJcbiAgICAgICAgaWQ6IGl0ZW0uaWQsXHJcbiAgICAgICAgZ3JvdXBJZDogaXRlbS5ncm91cElkLFxyXG4gICAgICAgIGlzR3JvdXA6IGl0ZW0uaXNHcm91cFxyXG4gICAgICB9IGFzIFFNU0ZsYXROb2RlVHJlZSkpKSk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBkZXBhcnRtZW50U2VsZWN0ZWQgfHwgW107XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcGVyc29uRm9ybTogVW50eXBlZEZvcm1Hcm91cDtcclxuICBwdWJsaWMgdXNlckdyb3VwRm9ybSA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woJycpXHJcbiAgcHVibGljIGdldExvYWRpbmckID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcbiAgb25TZWFyY2hQZXJzb25FdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8RmlsdGVyUGVyc29uTW9kZWw+KCk7XHJcbiAgb25TZWFyY2hQZXJzb25GcmVlVGV4dEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIG9uU2VhcmNoVXNlckdyb3VwRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuICBvblNlYXJjaERlcGFydG1lbnRFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBvblBhZ2luZ0V2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxRTVNBY2Nlc3NQYWdpbmdDaGFuZ2VNb2RlbD4oKTtcclxuICBvblNlbGVjdE9wdGlvbkNoYW5nZSQgPSBuZXcgU3ViamVjdDxNYXRTZWxlY3RDaGFuZ2U+KCk7XHJcbiAgdHJlZURlcGFydG1lbnQ6IFNlbGVjdERlcGFydG1lbnRUcmVlQ29tcG9uZW50XHJcbiAgQFZpZXdDaGlsZCgndHJlZScsIHtcclxuICAgIHJlYWQ6IFNlbGVjdERlcGFydG1lbnRUcmVlQ29tcG9uZW50XHJcbiAgfSkgc2V0IHRyZWUoZGF0YTogU2VsZWN0RGVwYXJ0bWVudFRyZWVDb21wb25lbnQpIHtcclxuICAgIHRoaXMudHJlZURlcGFydG1lbnQgPSBkYXRhO1xyXG5cclxuICAgIGNvbnN0IGdyb3VwcyA9IHRoaXMucmVzdWx0QWNjZXNzLmRlcGFydG1lbnRzLmZpbHRlcih4ID0+IHguaXNHcm91cCk7XHJcbiAgICBpZiAoZ3JvdXBzLmxlbmd0aClcclxuICAgICAgZ3JvdXBzLmZvckVhY2goZ3JvdXAgPT4ge1xyXG4gICAgICAgIGlmICghZ3JvdXAuY2hpbGRDb3VudCkge1xyXG4gICAgICAgICAgaWYgKCF0aGlzLnRyZWVEZXBhcnRtZW50KVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICBjb25zdCBub2RlID0gdGhpcy50cmVlRGVwYXJ0bWVudC50cmVlQ29udHJvbC5kYXRhTm9kZXMuZmluZCh4ID0+IHguaWQgPT0gZ3JvdXAuaWQpO1xyXG4gICAgICAgICAgaWYgKG5vZGUpXHJcbiAgICAgICAgICAgIGdyb3VwLmNoaWxkQ291bnQgPSB0aGlzLnRyZWVEZXBhcnRtZW50LmdldExpc3RDaGlsZHJlbk9mTm9kZShub2RlKS5sZW5ndGg7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ3BhZ2luZ1BlcnNvbicpIHBhZ2luZ1BlcnNvbjogUU1TUGFnaW5hdG9yQ29tcG9uZW50O1xyXG4gIEBWaWV3Q2hpbGQoJ3BhZ2luZ1VzZXJHcm91cCcpIHBhZ2luZ1VzZXJHcm91cDogUU1TUGFnaW5hdG9yQ29tcG9uZW50O1xyXG5cclxuICAvKiogbGlzdCBmaWx0ZXJlZCBieSBzZWFyY2gga2V5d29yZCAqL1xyXG4gIG9wdGlvbkZpbHRlclBlcnNvbkRhdGFHbG9iYWw6IHtcclxuICAgIGRlcGFydG1lbnRzOiBRTVNGbGF0Tm9kZVRyZWVbXSxcclxuICAgIHVzZXJHcm91cHM6IFFNU0FjY2Vzc0l0ZW1bXVxyXG4gIH0gPSB7XHJcbiAgICAgIGRlcGFydG1lbnRzOiBbXSxcclxuICAgICAgdXNlckdyb3VwczogW11cclxuICAgIH07XHJcblxyXG4gIHB1YmxpYyBmaWx0ZXJlZFNlYXJjaFRleHRCb3ggPSB7XHJcbiAgICBkZXBhcnRtZW50OiBuZXcgQmVoYXZpb3JTdWJqZWN0PFFNU0ZsYXROb2RlVHJlZVtdPihbXSksXHJcbiAgICB1c2VyR3JvdXA6IG5ldyBCZWhhdmlvclN1YmplY3Q8UU1TQWNjZXNzSXRlbVtdPihbXSksXHJcbiAgfVxyXG4gIGdldFBlcnNvbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFFNU0FjY2Vzc1BhZ2luZ01vZGVsPFFNU0FjY2Vzc0l0ZW0+PihuZXcgUU1TQWNjZXNzUGFnaW5nTW9kZWw8UU1TQWNjZXNzSXRlbT4oKSk7XHJcbiAgZ2V0IHBlcnNvbkZpbHRlcmVkKCkge1xyXG4gICAgY29uc3QgcGVyc29ucyA9IHRoaXMuZ2V0UGVyc29uJC52YWx1ZTtcclxuICAgIGNvbnN0IGlkcyA9IHRoaXMucmVzdWx0QWNjZXNzLnBlcnNvbnMubWFwKHggPT4geC5pZCk7XHJcbiAgICBwZXJzb25zLmRhdGE/LmZvckVhY2goeCA9PiB4LnNlbGVjdGVkID0gaWRzLmluY2x1ZGVzKHguaWQpKTtcclxuICAgIHJldHVybiBwZXJzb25zLmRhdGEgfHwgW107XHJcbiAgfVxyXG5cclxuICBnZXRVc2VyR3JvdXAkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxRTVNBY2Nlc3NQYWdpbmdNb2RlbDxRTVNBY2Nlc3NJdGVtPj4obmV3IFFNU0FjY2Vzc1BhZ2luZ01vZGVsPFFNU0FjY2Vzc0l0ZW0+KCkpO1xyXG4gIGdldCB1c2VyR3JvdXBGaWx0ZXJlZCgpIHtcclxuICAgIGNvbnN0IHVzZXJHcm91cHMgPSB0aGlzLmdldFVzZXJHcm91cCQudmFsdWU7XHJcbiAgICBjb25zdCBpZHMgPSB0aGlzLnJlc3VsdEFjY2Vzcy51c2VyR3JvdXBzLm1hcCh4ID0+IHguaWQpO1xyXG4gICAgdXNlckdyb3Vwcy5kYXRhPy5mb3JFYWNoKHggPT4geC5zZWxlY3RlZCA9IGlkcy5pbmNsdWRlcyh4LmlkKSk7XHJcbiAgICByZXR1cm4gdXNlckdyb3Vwcy5kYXRhIHx8IFtdO1xyXG4gIH07XHJcblxyXG4gIFBBR0lOQVRJT05fU0laRSA9IFBhZ2luYXRpb25TaXplO1xyXG4gIFBBR0VfU0laRV9PUFRJT046IG51bWJlcltdID0gWzUsIDEwLCAxNSwgMjAsIDI1LCAxMDBdO1xyXG4gIHJlc3VsdEFjY2VzcyA9IG5ldyBRTVNTZWxlY3RBY2Nlc3NSZXN1bHQoKTtcclxuICBhcnJTa2VsZXRvbiA9IG5ldyBBcnJheSg4KS5maWxsKDApO1xyXG4gIC8vcHJldmVudCBldmVudCBwYWdpbmcgd2hlbiBzZWFyY2ggZW1pdCBzZWFyY2ggZXZlbnRcclxuICBnZXRTZWFyY2hpbmckID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxRTVNTZWxlY3RBY2Nlc3NEaWFsb2dDb21wb25lbnQ+LFxyXG4gICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkaWFsb2dEYXRhOiBRTVNTZWxlY3RBY2Nlc3NEaWFsb2csXHJcbiAgICBwdWJsaWMgdHJhbnNsYXRlOiBUcmFuc2xhdGVMaWJyYXJ5U2VydmljZSxcclxuICAgIHByaXZhdGUgX2ZiOiBVbnR5cGVkRm9ybUJ1aWxkZXIsXHJcbiAgICBwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZlxyXG4gICkge1xyXG4gICAgdGhpcy5faW5pdFJlc3VsdEFjY2VzcygpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlckNvbnRlbnRDaGVja2VkKCk6IHZvaWQge1xyXG4gICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnRyYW5zbGF0ZS5nZXRMYW5ndWFnZVN1YmplY3QkLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSkuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgaWYgKHJlcykge1xyXG4gICAgICAgIHRoaXMuTEFORyA9IHRoaXMudHJhbnNsYXRlLmdldE9iamVjdExhbmcocmVzKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLl9idWlsZE9wdGlvblNlbGVjdCgpO1xyXG4gICAgdGhpcy5nZXRMb2FkaW5nJC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSkpXHJcbiAgICAgIC5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xyXG4gICAgICAgIGlmIChyZXNwb25zZSkge1xyXG4gICAgICAgICAgdGhpcy5wZXJzb25Gb3JtICYmIHRoaXMucGVyc29uRm9ybS5kaXNhYmxlKCk7XHJcbiAgICAgICAgICB0aGlzLnVzZXJHcm91cEZvcm0gJiYgdGhpcy51c2VyR3JvdXBGb3JtLmRpc2FibGUoKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5wZXJzb25Gb3JtICYmIHRoaXMucGVyc29uRm9ybS5lbmFibGUoKTtcclxuICAgICAgICB0aGlzLnVzZXJHcm91cEZvcm0gJiYgdGhpcy51c2VyR3JvdXBGb3JtLmVuYWJsZSgpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5uZ1Vuc3ViY3JpYmUubmV4dCgpO1xyXG4gICAgdGhpcy5uZ1Vuc3ViY3JpYmUuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2J1aWxkT3B0aW9uU2VsZWN0KCkge1xyXG4gICAgY29uc3Qgb3B0aW9uT2JqID0ge1xyXG4gICAgICBlbmFibGVTZWxlY3REZXBhcnRtZW50OiB7XHJcbiAgICAgICAgZGlzcGxheU5hbWU6ICdERVBBUlRNRU5UJyxcclxuICAgICAgICB0eXBlOiB0aGlzLk9QVElPTl9FTlVNLkRFUEFSVE1FTlRcclxuICAgICAgfSxcclxuICAgICAgZW5hYmxlU2VsZWN0UGVyc29uOiB7XHJcbiAgICAgICAgZGlzcGxheU5hbWU6ICdQRVJTT04nLFxyXG4gICAgICAgIHR5cGU6IHRoaXMuT1BUSU9OX0VOVU0uUEVSU09OXHJcbiAgICAgIH0sXHJcbiAgICAgIGVuYWJsZVNlbGVjdFVzZXJHcm91cDoge1xyXG4gICAgICAgIGRpc3BsYXlOYW1lOiAnVVNFUl9HUk9VUCcsXHJcbiAgICAgICAgdHlwZTogdGhpcy5PUFRJT05fRU5VTS5VU0VSX0dST1VQXHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBmb3IgKGxldCBpdGVtIGluIHRoaXMuZGlhbG9nRGF0YSkge1xyXG4gICAgICBpZiAoISF0aGlzLmRpYWxvZ0RhdGFbaXRlbV0gJiYgb3B0aW9uT2JqW2l0ZW1dKSB7XHJcbiAgICAgICAgdGhpcy5vcHRpb25zLnB1c2gob3B0aW9uT2JqW2l0ZW1dKVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMubGVuZ3RoID09PSAxIHx8IHRoaXMuZGlhbG9nRGF0YS5za2lwRmlyc3RBc2tpbmdTY3JlZW4pIHtcclxuICAgICAgdGhpcy5kaWFsb2dSZWYudXBkYXRlU2l6ZSh0aGlzLmRpYWxvZ0RhdGEuc2l6ZVVwZGF0ZURlZmF1bHQpO1xyXG4gICAgICB0aGlzLm9wdGlvblNlbGVjdC5zZXRWYWx1ZSh0aGlzLm9wdGlvbnNbMF0udHlwZSk7XHJcbiAgICAgIGNvbnN0IGV2ZW50JCA9IG5ldyBNYXRTZWxlY3RDaGFuZ2UobnVsbCwgdGhpcy5vcHRpb25zWzBdLnR5cGUpO1xyXG4gICAgICB0aGlzLm9uU2VsZWN0aW9uVHlwZUNoYW5nZShldmVudCQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfaW5pdFJlc3VsdEFjY2VzcygpIHtcclxuICAgIHRoaXMucmVzdWx0QWNjZXNzID0gXy5jbG9uZURlZXAoe1xyXG4gICAgICAuLi50aGlzLmRpYWxvZ0RhdGEuZGF0YS5zZWxlY3RlZERhdGEsXHJcbiAgICAgIGRlcGFydG1lbnRzOiBbXVxyXG4gICAgfSBhcyBRTVNTZWxlY3RBY2Nlc3NSZXN1bHQpO1xyXG4gICAgLy8gaW5pdCBncm91cCBzZWxlY3RlZCBkZXBhcnRtZW50XHJcbiAgICB0aGlzLl9kZXBhcnRtZW50U2VsZWN0ZWQgPSBfLmNsb25lRGVlcCh0aGlzLmRpYWxvZ0RhdGEuZGF0YS5zZWxlY3RlZERhdGEuZGVwYXJ0bWVudHMpO1xyXG4gICAgY29uc3QgZ3JvdXBzID0gW107XHJcbiAgICBjb25zdCBzaW5nbGVJdGVtID0gW107XHJcblxyXG4gICAgdGhpcy5fZGVwYXJ0bWVudFNlbGVjdGVkLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgIGlmIChpdGVtLmlzR3JvdXApIHtcclxuICAgICAgICBncm91cHMucHVzaChpdGVtKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICghaXRlbS5ncm91cElkKSB7XHJcbiAgICAgICAgc2luZ2xlSXRlbS5wdXNoKGl0ZW0pO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKCF0aGlzLl9kZXBhcnRtZW50U2VsZWN0ZWQuc29tZSh4ID0+IHguaWQgPT0gaXRlbS5ncm91cElkKSkge1xyXG4gICAgICAgIGl0ZW0uZ3JvdXBJZCA9IG51bGw7XHJcbiAgICAgICAgc2luZ2xlSXRlbS5wdXNoKGl0ZW0pXHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBncm91cHMuZm9yRWFjaChncm91cCA9PiB7XHJcbiAgICAgIGNvbnN0IGNoaWxkID0gdGhpcy5fZGVwYXJ0bWVudFNlbGVjdGVkLmZpbHRlcihpdGVtID0+IGl0ZW0uZ3JvdXBJZCA9PSBncm91cC5pZCk7XHJcbiAgICAgIGdyb3VwLmNoaWxkcmVuID0gY2hpbGQ7XHJcbiAgICB9KTtcclxuICAgIHRoaXMucmVzdWx0QWNjZXNzLmRlcGFydG1lbnRzID0gWy4uLmdyb3VwcywgLi4uc2luZ2xlSXRlbV07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9maWx0ZXJPcHRpb25QZXJzb25DaGFuZ2UoKSB7XHJcbiAgICAvLyBGaWx0ZXIgcGVyc29uIGJ5IHJvbGVzXHJcbiAgICB0aGlzLnBlcnNvbkZvcm0uZ2V0KCd1c2VyR3JvdXBGaWx0ZXInKS52YWx1ZUNoYW5nZXNcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSwgZGVib3VuY2VUaW1lKDUwMCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoa2V5d29yZCA9PiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLm9wdGlvbkZpbHRlclBlcnNvbkRhdGFHbG9iYWwudXNlckdyb3Vwcy5sZW5ndGgpIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFrZXl3b3JkKSB7XHJcbiAgICAgICAgICB0aGlzLmZpbHRlcmVkU2VhcmNoVGV4dEJveC51c2VyR3JvdXAubmV4dCh0aGlzLm9wdGlvbkZpbHRlclBlcnNvbkRhdGFHbG9iYWwudXNlckdyb3Vwcyk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHJlc3VsdEZpbHRlciA9IHRoaXMub3B0aW9uRmlsdGVyUGVyc29uRGF0YUdsb2JhbC51c2VyR3JvdXBzLmZpbHRlcih1c2VyR3JvdXAgPT4gdXNlckdyb3VwLm5hbWUudG9Mb2NhbGVMb3dlckNhc2UoKS5pbmNsdWRlcyhrZXl3b3JkLnRvTG9jYWxlTG93ZXJDYXNlKCkpKTtcclxuICAgICAgICB0aGlzLmZpbHRlcmVkU2VhcmNoVGV4dEJveC51c2VyR3JvdXAubmV4dChyZXN1bHRGaWx0ZXIpO1xyXG4gICAgICB9KTtcclxuICAgIC8vIEZpbHRlciBwZXJzb24gYnkgZGVwYXJ0bWVudHNcclxuICAgIHRoaXMucGVyc29uRm9ybS5nZXQoJ2RlcGFydG1lbnRGaWx0ZXInKS52YWx1ZUNoYW5nZXNcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSlcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLm9wdGlvbkZpbHRlclBlcnNvbkRhdGFHbG9iYWwuZGVwYXJ0bWVudHMpIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IHNlYXJjaCA9IHRoaXMucGVyc29uRm9ybS5nZXQoJ2RlcGFydG1lbnRGaWx0ZXInKS52YWx1ZTtcclxuICAgICAgICBpZiAoIXNlYXJjaCkge1xyXG4gICAgICAgICAgdGhpcy5maWx0ZXJlZFNlYXJjaFRleHRCb3guZGVwYXJ0bWVudC5uZXh0KHRoaXMub3B0aW9uRmlsdGVyUGVyc29uRGF0YUdsb2JhbC5kZXBhcnRtZW50cy5zbGljZSgpKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgc2VhcmNoID0gc2VhcmNoLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJlZFNlYXJjaFRleHRCb3guZGVwYXJ0bWVudC5uZXh0KFxyXG4gICAgICAgICAgdGhpcy5vcHRpb25GaWx0ZXJQZXJzb25EYXRhR2xvYmFsLmRlcGFydG1lbnRzLmZpbHRlcih4ID0+IHgubmFtZS50b0xvd2VyQ2FzZSgpLmluZGV4T2Yoc2VhcmNoKSA+IC0xKVxyXG4gICAgICAgICk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0UmVzdWx0VGFiQWN0aXZlKCkge1xyXG4gICAgY29uc3QgcmVzdWx0T2JqID0ge1xyXG4gICAgICAwOiB0aGlzLnJlc3VsdEFjY2Vzcy5wZXJzb25zLFxyXG4gICAgICAxOiB0aGlzLnJlc3VsdEFjY2Vzcy51c2VyR3JvdXBzLFxyXG4gICAgICAyOiB0aGlzLnJlc3VsdEFjY2Vzcy5kZXBhcnRtZW50c1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdE9ialt0aGlzLm9wdGlvblNlbGVjdC52YWx1ZV07XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2hlY2tFeGlzdE9wdGlvblNlbGVjdChvcHRpb246IE9wdGlvblNlbGVjdEFjY2Vzc0VudW0pOiBib29sZWFuIHtcclxuICAgIHJldHVybiAhIXRoaXMub3B0aW9ucy5maW5kKGl0ZW0gPT4gaXRlbS50eXBlID09PSBvcHRpb24pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBidWlsZFBlcnNvbkZvcm0oKSB7XHJcbiAgICB0aGlzLnBlcnNvbkZvcm0gPSB0aGlzLl9mYi5ncm91cCh7XHJcbiAgICAgIHVzZXJHcm91cDogW10sXHJcbiAgICAgIGRlcGFydG1lbnQ6IFtdLFxyXG4gICAgICBkZXBhcnRtZW50RmlsdGVyOiBbJyddLFxyXG4gICAgICByZWN1cnNpdmU6IFt7XHJcbiAgICAgICAgdmFsdWU6IGZhbHNlLCBkaXNhYmxlZDogdHJ1ZVxyXG4gICAgICB9XSxcclxuICAgICAga2V5d29yZDogWycnXSxcclxuICAgICAgdXNlckdyb3VwRmlsdGVyOiBbJyddLFxyXG4gICAgICBleGNsdWRlZFF1aXREZXBhcnRtZW50SWQ6IFt0cnVlXVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgb25GaWx0ZXJQZXJzb24oKSB7XHJcbiAgICB0aGlzLmdldExvYWRpbmckLm5leHQodHJ1ZSk7XHJcbiAgICBjb25zdCBmb3JtVmFsdWUgPSB0aGlzLnBlcnNvbkZvcm0uZ2V0UmF3VmFsdWUoKTtcclxuICAgIGNvbnN0IGZpbHRlckRhdGE6IEZpbHRlclBlcnNvbk1vZGVsID0ge1xyXG4gICAgICBkZXBhcnRtZW50SWQ6IGZvcm1WYWx1ZS5kZXBhcnRtZW50Py5pZCxcclxuICAgICAgdXNlckdyb3VwSWQ6IGZvcm1WYWx1ZS51c2VyR3JvdXA/LmlkLFxyXG4gICAgICBrZXl3b3JkOiBmb3JtVmFsdWUua2V5d29yZCxcclxuICAgICAgcmVjdXJzaXZlOiBmb3JtVmFsdWUucmVjdXJzaXZlXHJcbiAgICB9O1xyXG4gICAgdGhpcy5nZXRTZWFyY2hpbmckLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLl9yZXNldFBhZ2luZ2F0b3IodGhpcy5wYWdpbmdQZXJzb24pO1xyXG4gICAgdGhpcy5vblNlYXJjaFBlcnNvbkV2ZW50LmVtaXQoZmlsdGVyRGF0YSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9yZXNldFBhZ2luZ2F0b3IocGFnaW5hdG9yOiBRTVNQYWdpbmF0b3JDb21wb25lbnQpIHtcclxuICAgIGlmICghcGFnaW5hdG9yKVxyXG4gICAgICByZXR1cm47XHJcbiAgICBwYWdpbmF0b3IuY2hhbmdlUGFnZSgwKTtcclxuICAgIHBhZ2luYXRvci5yZW5kZXJEaXNwbGF5TnVtYmVyT2ZwYWdlcygpO1xyXG4gIH1cclxuXHJcbiAgb25TZWFyY2hQZXJzb25GcmVlVGV4dCgpIHtcclxuICAgIHRoaXMuZ2V0TG9hZGluZyQubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuZ2V0U2VhcmNoaW5nJC5uZXh0KHRydWUpO1xyXG4gICAgdGhpcy5vblNlYXJjaFBlcnNvbkZyZWVUZXh0RXZlbnQuZW1pdCh0aGlzLnBlcnNvbkZvcm0uZ2V0KCdrZXl3b3JkJykudmFsdWUpO1xyXG4gICAgdGhpcy5fcmVzZXRQYWdpbmdhdG9yKHRoaXMucGFnaW5nUGVyc29uKTtcclxuICB9XHJcblxyXG4gIG9uRmlsdGVyVXNlckdyb3VwKCkge1xyXG4gICAgdGhpcy5nZXRMb2FkaW5nJC5uZXh0KHRydWUpO1xyXG4gICAgdGhpcy5nZXRTZWFyY2hpbmckLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLl9yZXNldFBhZ2luZ2F0b3IodGhpcy5wYWdpbmdVc2VyR3JvdXApO1xyXG4gICAgdGhpcy5vblNlYXJjaFVzZXJHcm91cEV2ZW50LmVtaXQodGhpcy51c2VyR3JvdXBGb3JtLnZhbHVlKTtcclxuICB9XHJcblxyXG4gIG9uU2VsZWN0SXRlbSh0eXBlOiBPcHRpb25TZWxlY3RBY2Nlc3NFbnVtLCBpdGVtOiBRTVNBY2Nlc3NJdGVtKSB7XHJcbiAgICBpZiAoIXRoaXMuYWxsb3dSZW1vdmUodHlwZSwgaXRlbSkpXHJcbiAgICAgIHJldHVybjtcclxuICAgIGl0ZW0uc2VsZWN0ZWQgPSAhaXRlbS5zZWxlY3RlZDtcclxuICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICBjYXNlIE9wdGlvblNlbGVjdEFjY2Vzc0VudW0uUEVSU09OOlxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGlmICh0aGlzLmRpYWxvZ0RhdGEubW9kZVNlbGVjdE9uZVBlcnNvbikge1xyXG4gICAgICAgICAgICB0aGlzLnJlc3VsdEFjY2Vzcy5wZXJzb25zID0gaXRlbS5zZWxlY3RlZCA/IFtpdGVtXSA6IFtdO1xyXG4gICAgICAgICAgICB0aGlzLnBlcnNvbkZpbHRlcmVkLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKGl0ZW0uaWQgIT09IGl0ZW0uaWQpIHtcclxuICAgICAgICAgICAgICAgIGl0ZW0uc2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoaXRlbS5zZWxlY3RlZCkge1xyXG4gICAgICAgICAgICB0aGlzLnJlc3VsdEFjY2Vzcy5wZXJzb25zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNvbnN0IGluZGV4SXRlbSA9IHRoaXMucmVzdWx0QWNjZXNzLnBlcnNvbnMuZmluZEluZGV4KHggPT4geC5pZCA9PT0gaXRlbS5pZCk7XHJcbiAgICAgICAgICBpbmRleEl0ZW0gPiAtMSAmJiB0aGlzLnJlc3VsdEFjY2Vzcy5wZXJzb25zLnNwbGljZShpbmRleEl0ZW0sIDEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBPcHRpb25TZWxlY3RBY2Nlc3NFbnVtLlVTRVJfR1JPVVA6XHJcbiAgICAgICAge1xyXG4gICAgICAgICAgaWYgKHRoaXMuZGlhbG9nRGF0YS5tb2RlU2VsZWN0T25lVXNlckdyb3VwKSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVzdWx0QWNjZXNzLnVzZXJHcm91cHMgPSBpdGVtLnNlbGVjdGVkID8gW2l0ZW1dIDogW107XHJcbiAgICAgICAgICAgIHRoaXMudXNlckdyb3VwRmlsdGVyZWQuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICAgICAgICBpZiAoaXRlbS5pZCAhPT0gaXRlbS5pZCkge1xyXG4gICAgICAgICAgICAgICAgaXRlbS5zZWxlY3RlZCA9IGZhbHNlXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKGl0ZW0uc2VsZWN0ZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5yZXN1bHRBY2Nlc3MudXNlckdyb3Vwcy5wdXNoKGl0ZW0pXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNvbnN0IGluZGV4SXRlbSA9IHRoaXMucmVzdWx0QWNjZXNzLnVzZXJHcm91cHMuZmluZEluZGV4KHggPT4geC5pZCA9PT0gaXRlbS5pZCk7XHJcbiAgICAgICAgICBpbmRleEl0ZW0gPiAtMSAmJiB0aGlzLnJlc3VsdEFjY2Vzcy51c2VyR3JvdXBzLnNwbGljZShpbmRleEl0ZW0sIDEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblJlbW92ZUNoaXAodHlwZTogT3B0aW9uU2VsZWN0QWNjZXNzRW51bSwgaXRlbSwgaW5kZXgpIHtcclxuICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICBjYXNlIHRoaXMuT1BUSU9OX0VOVU0uUEVSU09OOlxyXG4gICAgICAgIHRoaXMucmVzdWx0QWNjZXNzLnBlcnNvbnMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICBpZiAodGhpcy5wZXJzb25GaWx0ZXJlZFtpbmRleF0pIHtcclxuICAgICAgICAgIHRoaXMucGVyc29uRmlsdGVyZWRbaW5kZXhdLnNlbGVjdGVkID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIHRoaXMuT1BUSU9OX0VOVU0uVVNFUl9HUk9VUDpcclxuICAgICAgICB0aGlzLnJlc3VsdEFjY2Vzcy51c2VyR3JvdXBzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgaWYgKHRoaXMudXNlckdyb3VwRmlsdGVyZWRbaW5kZXhdKSB7XHJcbiAgICAgICAgICB0aGlzLnVzZXJHcm91cEZpbHRlcmVkW2luZGV4XS5zZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSB0aGlzLk9QVElPTl9FTlVNLkRFUEFSVE1FTlQ6XHJcbiAgICAgICAgdGhpcy5yZXN1bHRBY2Nlc3MuZGVwYXJ0bWVudHMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICB0aGlzLl9kZXBhcnRtZW50U2VsZWN0ZWQgPSBfLmNsb25lRGVlcCh0aGlzLnJlc3VsdEFjY2Vzcy5kZXBhcnRtZW50cyk7XHJcbiAgICAgICAgaWYgKCF0aGlzLnRyZWVEZXBhcnRtZW50KVxyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMudHJlZURlcGFydG1lbnQub25SZW1vdmVOb2RlKGl0ZW0uaWQpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uU2VsZWN0aW9uVHlwZUNoYW5nZShldmVudDogTWF0U2VsZWN0Q2hhbmdlKSB7XHJcbiAgICBzd2l0Y2ggKGV2ZW50LnZhbHVlKSB7XHJcbiAgICAgIGNhc2UgdGhpcy5PUFRJT05fRU5VTS5QRVJTT046XHJcbiAgICAgICAgdGhpcy5idWlsZFBlcnNvbkZvcm0oKTtcclxuICAgICAgICB0aGlzLl9maWx0ZXJPcHRpb25QZXJzb25DaGFuZ2UoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSB0aGlzLk9QVElPTl9FTlVNLkRFUEFSVE1FTlQ6XHJcbiAgICAgICAgdGhpcy5kaWFsb2dEYXRhLnRyZWVEZXBhcnRtZW50Q29uZmlnLnNlbGVjdGVkTGlzdCA9IHRoaXMuc2VsZWN0ZWREZXBhcnRtZW50cztcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIHRoaXMuZ2V0TG9hZGluZyQubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuZGlhbG9nUmVmLnVwZGF0ZVNpemUodGhpcy5kaWFsb2dEYXRhLnNpemVVcGRhdGVEZWZhdWx0KTtcclxuICAgIHRoaXMub25TZWxlY3RPcHRpb25DaGFuZ2UkLm5leHQoZXZlbnQpO1xyXG4gICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBzZXRGb3JtQ29udHJvbFZhbHVlKGZvcm1Db250cm9sTmFtZXM6IHN0cmluZ1tdLCB2YWx1ZXMpIHtcclxuICAgIGZvcm1Db250cm9sTmFtZXMuZm9yRWFjaCgoY29udHJvbE5hbWUsIF9pbmRleCkgPT4ge1xyXG4gICAgICB0aGlzLnBlcnNvbkZvcm0uZ2V0KGNvbnRyb2xOYW1lKT8uc2V0VmFsdWUodmFsdWVzW19pbmRleF0pO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGlzQ2hlY2tBbGwodHlwZTogT3B0aW9uU2VsZWN0QWNjZXNzRW51bSkge1xyXG4gICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgIGNhc2UgdGhpcy5PUFRJT05fRU5VTS5QRVJTT046XHJcbiAgICAgICAgcmV0dXJuICF0aGlzLmRpYWxvZ0RhdGEubW9kZVNlbGVjdE9uZVBlcnNvbiAmJiB0aGlzLnBlcnNvbkZpbHRlcmVkLmxlbmd0aCAmJiB0aGlzLnBlcnNvbkZpbHRlcmVkLmV2ZXJ5KHggPT4geC5zZWxlY3RlZCk7XHJcbiAgICAgIGNhc2UgdGhpcy5PUFRJT05fRU5VTS5VU0VSX0dST1VQOlxyXG4gICAgICAgIHJldHVybiAhdGhpcy5kaWFsb2dEYXRhLm1vZGVTZWxlY3RPbmVVc2VyR3JvdXAgJiYgdGhpcy51c2VyR3JvdXBGaWx0ZXJlZC5sZW5ndGggJiYgdGhpcy51c2VyR3JvdXBGaWx0ZXJlZC5ldmVyeSh4ID0+IHguc2VsZWN0ZWQpO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGlzRGlzYWJsZWRTZWxlY3RBbGwodHlwZTogT3B0aW9uU2VsZWN0QWNjZXNzRW51bSkge1xyXG4gICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgIGNhc2UgT3B0aW9uU2VsZWN0QWNjZXNzRW51bS5QRVJTT046IHJldHVybiAhdGhpcy5wZXJzb25GaWx0ZXJlZC5sZW5ndGggfHwgdGhpcy5wZXJzb25GaWx0ZXJlZC5ldmVyeSh4ID0+ICF0aGlzLmFsbG93UmVtb3ZlKHR5cGUsIHgpKVxyXG4gICAgICBjYXNlIE9wdGlvblNlbGVjdEFjY2Vzc0VudW0uVVNFUl9HUk9VUDogcmV0dXJuICF0aGlzLnVzZXJHcm91cEZpbHRlcmVkLmxlbmd0aCB8fCB0aGlzLnVzZXJHcm91cEZpbHRlcmVkLmV2ZXJ5KHggPT4gIXRoaXMuYWxsb3dSZW1vdmUodHlwZSwgeCkpXHJcbiAgICAgIGRlZmF1bHQ6IHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGlzSW5kZXRlcm1pbmF0ZSh0eXBlOiBPcHRpb25TZWxlY3RBY2Nlc3NFbnVtKSB7XHJcbiAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgY2FzZSB0aGlzLk9QVElPTl9FTlVNLlBFUlNPTjpcclxuICAgICAgICByZXR1cm4gIXRoaXMuZGlhbG9nRGF0YS5tb2RlU2VsZWN0T25lUGVyc29uICYmICF0aGlzLmlzQ2hlY2tBbGwodHlwZSkgJiYgdGhpcy5wZXJzb25GaWx0ZXJlZD8uc29tZSh4ID0+IHguc2VsZWN0ZWQpO1xyXG4gICAgICBjYXNlIHRoaXMuT1BUSU9OX0VOVU0uVVNFUl9HUk9VUDpcclxuICAgICAgICByZXR1cm4gIXRoaXMuZGlhbG9nRGF0YS5tb2RlU2VsZWN0T25lVXNlckdyb3VwICYmICF0aGlzLmlzQ2hlY2tBbGwodHlwZSkgJiYgdGhpcy51c2VyR3JvdXBGaWx0ZXJlZD8uc29tZSh4ID0+IHguc2VsZWN0ZWQpO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uQ2hlY2tBbGwodHlwZTogT3B0aW9uU2VsZWN0QWNjZXNzRW51bSwgJGV2ZW50KSB7XHJcbiAgICBpZiAodGhpcy5pc0Rpc2FibGVkU2VsZWN0QWxsKHR5cGUpKVxyXG4gICAgICByZXR1cm47XHJcbiAgICAkZXZlbnQuY2hlY2tlZCA9ICEkZXZlbnQuY2hlY2tlZDtcclxuICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICBjYXNlIHRoaXMuT1BUSU9OX0VOVU0uUEVSU09OOiB7XHJcbiAgICAgICAgaWYgKHRoaXMuZGlhbG9nRGF0YS5tb2RlU2VsZWN0T25lUGVyc29uKSB7XHJcbiAgICAgICAgICAkZXZlbnQuY2hlY2tlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIXRoaXMucGVyc29uRmlsdGVyZWQubGVuZ3RoKVxyXG4gICAgICAgICAgcmV0dXJuO1xyXG5cclxuICAgICAgICB0aGlzLnBlcnNvbkZpbHRlcmVkLmZpbHRlcih4ID0+IHRoaXMuYWxsb3dSZW1vdmUodHlwZSwgeCkpLmZvckVhY2goeCA9PiB4LnNlbGVjdGVkID0gJGV2ZW50LmNoZWNrZWQpO1xyXG4gICAgICAgIGNvbnN0IGlkRmlsdGVyZWQgPSB0aGlzLnBlcnNvbkZpbHRlcmVkLm1hcCh4ID0+IHguaWQpO1xyXG4gICAgICAgIGlmICgkZXZlbnQuY2hlY2tlZCkge1xyXG4gICAgICAgICAgY29uc3QgaWRQZXJzb25TZWxlY3RlZCA9IHRoaXMucmVzdWx0QWNjZXNzLnBlcnNvbnMubWFwKHggPT4geC5pZCk7XHJcbiAgICAgICAgICB0aGlzLnJlc3VsdEFjY2Vzcy5wZXJzb25zID0gWy4uLnRoaXMucmVzdWx0QWNjZXNzLnBlcnNvbnMsIC4uLnRoaXMucGVyc29uRmlsdGVyZWQuZmlsdGVyKHggPT4gdGhpcy5hbGxvd1JlbW92ZSh0eXBlLCB4KSAmJiAhaWRQZXJzb25TZWxlY3RlZC5pbmNsdWRlcyh4LmlkKSldO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnJlc3VsdEFjY2Vzcy5wZXJzb25zID0gdGhpcy5yZXN1bHRBY2Nlc3MucGVyc29ucy5maWx0ZXIoeCA9PiAhdGhpcy5hbGxvd1JlbW92ZSh0eXBlLCB4KSB8fCAhaWRGaWx0ZXJlZC5pbmNsdWRlcyh4LmlkKSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSB0aGlzLk9QVElPTl9FTlVNLlVTRVJfR1JPVVA6IHtcclxuICAgICAgICBpZiAodGhpcy5kaWFsb2dEYXRhLm1vZGVTZWxlY3RPbmVVc2VyR3JvdXApIHtcclxuICAgICAgICAgICRldmVudC5jaGVja2VkID0gZmFsc2U7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHVzZXJHcm91cFBhZ2luZyA9IHRoaXMudXNlckdyb3VwRmlsdGVyZWQ7XHJcbiAgICAgICAgdXNlckdyb3VwUGFnaW5nLmZpbHRlcih4ID0+IHRoaXMuYWxsb3dSZW1vdmUodHlwZSwgeCkpLmZvckVhY2goeCA9PiB4LnNlbGVjdGVkID0gJGV2ZW50LmNoZWNrZWQpO1xyXG4gICAgICAgIGNvbnN0IGlkRmlsdGVyZWQgPSB1c2VyR3JvdXBQYWdpbmcubWFwKHggPT4geC5pZCk7XHJcbiAgICAgICAgaWYgKCRldmVudC5jaGVja2VkKSB7XHJcbiAgICAgICAgICBjb25zdCBpZFNlbGVjdGVkID0gdGhpcy5yZXN1bHRBY2Nlc3MudXNlckdyb3Vwcy5tYXAoeCA9PiB4LmlkKTtcclxuICAgICAgICAgIHRoaXMucmVzdWx0QWNjZXNzLnVzZXJHcm91cHMgPSBbLi4udGhpcy5yZXN1bHRBY2Nlc3MudXNlckdyb3VwcywgLi4udXNlckdyb3VwUGFnaW5nLmZpbHRlcih4ID0+IHRoaXMuYWxsb3dSZW1vdmUodHlwZSwgeCkgJiYgIWlkU2VsZWN0ZWQuaW5jbHVkZXMoeC5pZCkpXTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5yZXN1bHRBY2Nlc3MudXNlckdyb3VwcyA9IHRoaXMucmVzdWx0QWNjZXNzLnVzZXJHcm91cHMuZmlsdGVyKHggPT4gIXRoaXMuYWxsb3dSZW1vdmUodHlwZSwgeCkgfHwgIWlkRmlsdGVyZWQuaW5jbHVkZXMoeC5pZCkpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25TZWxlY3Rpb25Ob2RlRGVwYXJ0bWVudENoYW5nZSh7IGFkZGVkLCByZW1vdmVkLCB1cGRhdGVkIH06IElTZWxlY3Rpb25Ob2RlQ2hhbmdlPFFNU1RyZWVOb2RlPikge1xyXG4gICAgaWYgKGFkZGVkLmxlbmd0aCkge1xyXG4gICAgICBhZGRlZC5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLnJlc3VsdEFjY2Vzcy5kZXBhcnRtZW50cy5zb21lKHggPT4geC5pZCA9PT0gaXRlbS5pZCkpXHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgdGhpcy5yZXN1bHRBY2Nlc3MuZGVwYXJ0bWVudHMucHVzaChpdGVtKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBpZiAocmVtb3ZlZC5sZW5ndGgpIHtcclxuICAgICAgcmVtb3ZlZC5mb3JFYWNoKHggPT4ge1xyXG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5yZXN1bHRBY2Nlc3MuZGVwYXJ0bWVudHMuZmluZEluZGV4KGl0ZW0gPT4gaXRlbS5pZCA9PT0geC5pZCk7XHJcbiAgICAgICAgaWYgKGluZGV4IDwgMClcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB0aGlzLnJlc3VsdEFjY2Vzcy5kZXBhcnRtZW50cy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGlmICh1cGRhdGVkLmxlbmd0aCkge1xyXG4gICAgICB1cGRhdGVkLmZvckVhY2goeCA9PiB7XHJcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnJlc3VsdEFjY2Vzcy5kZXBhcnRtZW50cy5maW5kSW5kZXgoaXRlbSA9PiBpdGVtLmlkID09IHguaWQpO1xyXG4gICAgICAgIGlmIChpbmRleCA8IDApXHJcbiAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgIGNvbnN0IGRlcGFydG1lbnRzID0gdGhpcy5yZXN1bHRBY2Nlc3MuZGVwYXJ0bWVudHMuZmluZChpdGVtID0+IGl0ZW0uaWQgPT0geC5pZCk7XHJcbiAgICAgICAgaWYgKCFkZXBhcnRtZW50cylcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICBkZXBhcnRtZW50cy5jaGlsZHJlbiA9IHguY2hpbGRyZW47XHJcbiAgICAgICAgZGVwYXJ0bWVudHMuY2hpbGRDb3VudCA9IHguY2hpbGRDb3VudDtcclxuXHJcbiAgICAgICAgaWYgKGRlcGFydG1lbnRzLmNoaWxkcmVuLmxlbmd0aClcclxuICAgICAgICAgIGRlcGFydG1lbnRzLmNoaWxkcmVuLmZvckVhY2goeCA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5yZXN1bHRBY2Nlc3MuZGVwYXJ0bWVudHMuZmluZEluZGV4KGl0ZW0gPT4gaXRlbS5pZCA9PT0geC5pZCk7XHJcbiAgICAgICAgICAgIGlmIChpbmRleCA+IC0xKVxyXG4gICAgICAgICAgICAgIHRoaXMucmVzdWx0QWNjZXNzLmRlcGFydG1lbnRzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5yZXN1bHRBY2Nlc3MuZGVwYXJ0bWVudHMuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgaWYgKCEhaXRlbS5jaGlsZHJlbilcclxuICAgICAgICBpdGVtLmNoaWxkcmVuID0gaXRlbS5jaGlsZHJlbi5maWx0ZXIoKHgsIGluZGV4KSA9PiBpbmRleCA9PT0gaXRlbS5jaGlsZHJlbi5maW5kSW5kZXgoX3ggPT4geC5pZCA9PT0gX3guaWQpKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5fZGVwYXJ0bWVudFNlbGVjdGVkID0gXy5jbG9uZURlZXAodGhpcy5yZXN1bHRBY2Nlc3MuZGVwYXJ0bWVudHMpO1xyXG4gICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBvblNjb2xsVG9Ob2RlVHJlZURlcGFydG1lbnQobm9kZTogUU1TVHJlZU5vZGUpIHtcclxuICAgIHRoaXMub3B0aW9uU2VsZWN0LnZhbHVlID09PSB0aGlzLk9QVElPTl9FTlVNLkRFUEFSVE1FTlQgJiYgdGhpcy50cmVlRGVwYXJ0bWVudC5zY3JvbGxUb05vZGUobm9kZS5pZClcclxuICB9XHJcblxyXG4gIHRyYWNrQnlGbihpbmRleCwgaXRlbSkge1xyXG4gICAgcmV0dXJuIGluZGV4O1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlUGVyc29uRmlsdGVyKGRhdGE6IFFNU0FjY2Vzc1BhZ2luZ01vZGVsPFFNU0FjY2Vzc0l0ZW0+KSB7XHJcbiAgICB0aGlzLmdldFBlcnNvbiQubmV4dChkYXRhKTtcclxuICAgIHRoaXMuZ2V0TG9hZGluZyQubmV4dChmYWxzZSk7XHJcbiAgICB0aGlzLmdldFNlYXJjaGluZyQubmV4dChmYWxzZSk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVVc2VyR3JvdXBGaWx0ZXIoZGF0YTogUU1TQWNjZXNzUGFnaW5nTW9kZWw8UU1TQWNjZXNzSXRlbT4pIHtcclxuICAgIHRoaXMuZ2V0VXNlckdyb3VwJC5uZXh0KGRhdGEpO1xyXG4gICAgdGhpcy5nZXRMb2FkaW5nJC5uZXh0KGZhbHNlKTtcclxuICAgIHRoaXMuZ2V0U2VhcmNoaW5nJC5uZXh0KGZhbHNlKTtcclxuICB9XHJcblxyXG4gIG9uUGFnaW5hdG9yRXZlbnQodmFsOiBQYWdlRXZlbnQsIHR5cGU6IE9wdGlvblNlbGVjdEFjY2Vzc0VudW0pIHtcclxuICAgIGlmICh0aGlzLmdldFNlYXJjaGluZyQudmFsdWUpXHJcbiAgICAgIHJldHVybjtcclxuICAgIHRoaXMuZ2V0TG9hZGluZyQubmV4dCh0aGlzLm9wdGlvblNlbGVjdC52YWx1ZSAhPT0gdGhpcy5PUFRJT05fRU5VTS5ERVBBUlRNRU5UKTtcclxuICAgIHRoaXMub25QYWdpbmdFdmVudC5lbWl0KHtcclxuICAgICAgLi4udmFsLFxyXG4gICAgICB0eXBlOiB0eXBlXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uUmVzdWx0RGVwYXJ0bWVudENoYW5nZShldmVudDogUU1TVHJlZU5vZGVbXSkge1xyXG4gICAgLy8gdGhpcy5yZXN1bHRBY2Nlc3MuZGVwYXJ0bWVudHMgPSBldmVudDtcclxuICB9XHJcblxyXG4gIHVwZGF0ZVJlc3VsdFNlYXJjaERlcGFydG1lbnQoZGF0YTogUU1TQWNjZXNzUGFnaW5nTW9kZWw8UU1TRmxhdE5vZGVUcmVlPiA9IG5ldyBRTVNBY2Nlc3NQYWdpbmdNb2RlbDxRTVNGbGF0Tm9kZVRyZWU+KCkpIHtcclxuICAgIGlmICghdGhpcy50cmVlRGVwYXJ0bWVudClcclxuICAgICAgcmV0dXJuO1xyXG4gICAgZGF0YSA9IGRhdGEgYXMgUU1TRGVwYXJ0bWVudFBhZ2luZ01vZGVsPFFNU0ZsYXROb2RlVHJlZT47XHJcbiAgICBpZiAodGhpcy5kaWFsb2dEYXRhLmRpc2FibGVTZWxlY3RlZExpc3QpIHtcclxuICAgICAgZGF0YS5kYXRhLmZvckVhY2goeCA9PiB4LmRpc2FibGVkID0gIXRoaXMuYWxsb3dSZW1vdmUoT3B0aW9uU2VsZWN0QWNjZXNzRW51bS5ERVBBUlRNRU5ULCB4KSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnRyZWVEZXBhcnRtZW50LnNldFJlc3VsdFNlYXJjaChkYXRhKTtcclxuICB9XHJcblxyXG4gIGdlbmVyYXRlVG9vbHRpcChub2RlOiBhbnkpIHtcclxuICAgIGlmICh0aGlzLmRpYWxvZ0RhdGE/LmZvcm1hdFRvb2x0aXApXHJcbiAgICAgIHJldHVybiB0aGlzLmRpYWxvZ0RhdGEuZm9ybWF0VG9vbHRpcChub2RlKTtcclxuICAgIHJldHVybiAobm9kZT8uaXNHcm91cCkgPyB0aGlzLmZvcm1hdFN0cmluZyh0aGlzLkxBTkcuVE9PTFRJUF9JTkNMVURFX1NVQl9ERVBBUlRNRU5ULCBub2RlLm5hbWUsIG5vZGUuY2hpbGRyZW4/Lmxlbmd0aC50b1N0cmluZygpKSA6IChgJHtub2RlLm5hbWV9ICR7bm9kZT8uc3ViTmFtZSA/IGAtICgke25vZGUuc3ViTmFtZX0pYCA6ICcnfWApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmb3JtYXRTdHJpbmcoLi4ucmVwbGFjZW1lbnRzOiBzdHJpbmdbXSk6IHN0cmluZyB7XHJcbiAgICBsZXQgcmVzdWx0ID0gYXJndW1lbnRzWzBdO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoIC0gMTsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IHJlZyA9IG5ldyBSZWdFeHAoYFxcXFx7JHtpfVxcXFx9YCwgJ2dtJyk7XHJcbiAgICAgIHJlc3VsdCA9IHJlc3VsdC5yZXBsYWNlKHJlZywgYXJndW1lbnRzW2kgKyAxXSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgaGFzSXRlbVNlbGVjdGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMucmVzdWx0QWNjZXNzKS5zb21lKGtleSA9PiAhIXRoaXMucmVzdWx0QWNjZXNzW2tleV0/Lmxlbmd0aClcclxuICB9XHJcblxyXG4gIHVwZGF0ZURlcGFydG1lbnQoZGF0YTogUU1TVHJlZU5vZGVbXSA9IFtdKSB7XHJcbiAgICB0aGlzLmdldExvYWRpbmckLm5leHQoZmFsc2UpO1xyXG5cclxuICAgIGlmICh0aGlzLmRpYWxvZ0RhdGEuZGlzYWJsZVNlbGVjdGVkTGlzdCkge1xyXG4gICAgICBkYXRhLmZvckVhY2goaXRlbSA9PiBpdGVtLmRpc2FibGVkID0gIXRoaXMuYWxsb3dSZW1vdmUoT3B0aW9uU2VsZWN0QWNjZXNzRW51bS5ERVBBUlRNRU5ULCBpdGVtKSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmRpYWxvZ0RhdGEudHJlZURlcGFydG1lbnRDb25maWcudHJlZURhdGEgPSBfLmNsb25lRGVlcChkYXRhKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZU9wdGlvblBlcnNvbkZpbHRlcihkZXBhcnRtZW50RmlsdGVyOiBRTVNGbGF0Tm9kZVRyZWVbXSA9IFtdLCB1c2VyR3JvdXBGaWx0ZXI6IFFNU0FjY2Vzc0l0ZW1bXSA9IFtdKSB7XHJcbiAgICB0aGlzLm9wdGlvbkZpbHRlclBlcnNvbkRhdGFHbG9iYWwuZGVwYXJ0bWVudHMgPSBkZXBhcnRtZW50RmlsdGVyO1xyXG4gICAgdGhpcy5vcHRpb25GaWx0ZXJQZXJzb25EYXRhR2xvYmFsLnVzZXJHcm91cHMgPSB1c2VyR3JvdXBGaWx0ZXI7XHJcbiAgICB0aGlzLmZpbHRlcmVkU2VhcmNoVGV4dEJveC5kZXBhcnRtZW50Lm5leHQoZGVwYXJ0bWVudEZpbHRlcik7XHJcbiAgICB0aGlzLmZpbHRlcmVkU2VhcmNoVGV4dEJveC51c2VyR3JvdXAubmV4dCh1c2VyR3JvdXBGaWx0ZXIpO1xyXG4gIH1cclxuXHJcbiAgc2V0RGVmYXVsdFBhZ2VTaXplT3B0aW9uKGRhdGE6IG51bWJlcltdKSB7XHJcbiAgICB0aGlzLlBBR0VfU0laRV9PUFRJT04gPSBkYXRhO1xyXG4gIH1cclxuICBhbGxvd1JlbW92ZSA9ICh0eXBlOiBPcHRpb25TZWxlY3RBY2Nlc3NFbnVtLCBpdGVtOiBhbnkpOiBib29sZWFuID0+IHtcclxuICAgIGlmICghdGhpcy5kaWFsb2dEYXRhLmRpc2FibGVTZWxlY3RlZExpc3QpXHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgY29uc3QgeyBwZXJzb25zLCBkZXBhcnRtZW50cywgdXNlckdyb3VwcyB9ID0gdGhpcy5kaWFsb2dEYXRhLmRhdGEuc2VsZWN0ZWREYXRhO1xyXG4gICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgIGNhc2UgT3B0aW9uU2VsZWN0QWNjZXNzRW51bS5QRVJTT046IHJldHVybiAhcGVyc29ucy5zb21lKHggPT4geC5pZCA9PSBpdGVtLmlkKVxyXG4gICAgICBjYXNlIE9wdGlvblNlbGVjdEFjY2Vzc0VudW0uREVQQVJUTUVOVDogcmV0dXJuICFkZXBhcnRtZW50cy5zb21lKHggPT4geC5pZCA9PSBpdGVtLmlkKVxyXG4gICAgICBjYXNlIE9wdGlvblNlbGVjdEFjY2Vzc0VudW0uVVNFUl9HUk9VUDogcmV0dXJuICF1c2VyR3JvdXBzLnNvbWUoeCA9PiB4LmlkID09IGl0ZW0uaWQpXHJcbiAgICAgIGRlZmF1bHQ6IHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuIiwiPGgzIG1hdC1kaWFsb2ctdGl0bGUgY2xhc3M9XCJtb3JlLWFjdGlvblwiPlxuICB7e2RpYWxvZ0RhdGEudGl0bGVEaWFsb2cgfHwgTEFORy5TRUxFQ1RfQUNDRVNTfX1cbiAgPGJ1dHRvbiBtYXREaWFsb2dDbG9zZSBjbGFzcz1cImNsb3NlLWJ0blwiIHFtcy1idG4taWNvbiBjb2xvcj1cImxpZ2h0XCI+XG4gICAgPG1hdC1pY29uIGNsYXNzPVwibWF0LWljb25zLW91dGxpbmVkXCI+Y2xvc2U8L21hdC1pY29uPlxuICA8L2J1dHRvbj5cbjwvaDM+XG48bWF0LWRpYWxvZy1jb250ZW50PlxuICA8ZGl2IFtjbGFzcy5hY3RpdmVdPVwib3B0aW9uU2VsZWN0LnZhbHVlICE9PSBudWxsXCIgY2xhc3M9XCJxbXMtZGlhbG9nLWNvbnRlbnRcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYWNjZXNzLWRpYWxvZy13cmFwZXJcIj5cbiAgICAgIDxtYXQtZm9ybS1maWVsZCAqbmdJZj1cIm9wdGlvbnMubGVuZ3RoID4gMVwiIHFtcy1mb3JtIHFtcy1zZWxlY3QtaW5wdXQgY2xhc3M9XCJmaWVsZC1zZWxlY3Qtb3B0aW9uIHctMTAwIG1iLTJcIlxuICAgICAgICBhcHBlYXJhbmNlPVwiZmlsbFwiPlxuICAgICAgICA8bWF0LWxhYmVsIHFtcy1zZWxlY3QtaW5wdXQ+e3tMQU5HLlRZUEV9fTwvbWF0LWxhYmVsPlxuICAgICAgICA8bWF0LXNlbGVjdCAoc2VsZWN0aW9uQ2hhbmdlKT1cIm9uU2VsZWN0aW9uVHlwZUNoYW5nZSgkZXZlbnQpXCIgW2Zvcm1Db250cm9sXT1cIm9wdGlvblNlbGVjdFwiIHBsYWNlaG9sZGVyPVwiU2VsZWN0XCJcbiAgICAgICAgICBkaXNhYmxlT3B0aW9uQ2VudGVyaW5nICNzaW5nbGVTZWxlY3QgcGFuZWxDbGFzcz1cInFtcy1zZWxlY3QtcGFuZWxcIiBxbXMtc2VsZWN0PlxuXG4gICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGl0ZW0gb2Ygb3B0aW9uc1wiIFt2YWx1ZV09XCJpdGVtLnR5cGVcIj5cbiAgICAgICAgICAgIHt7IExBTkdbaXRlbS5kaXNwbGF5TmFtZV0gfX1cbiAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICA8ZGl2IGNsYXNzPVwiYm9keS1kaWFsb2ctY29udGFpbmVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJvcHRpb24tc2VsZWN0ZWQtY29udGVudFwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJvcHRpb25TZWxlY3QudmFsdWUgPT09IE9QVElPTl9FTlVNLlBFUlNPTlwiPlxuICAgICAgICAgICAgPGZvcm0gKm5nSWY9XCJwZXJzb25Gb3JtXCIgW2Zvcm1Hcm91cF09XCJwZXJzb25Gb3JtXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncm91cC1maWx0ZXItcGVyc29uLW9wdGlvblwiPlxuICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCAqbmdJZj1cIm9wdGlvbkZpbHRlclBlcnNvbkRhdGFHbG9iYWwudXNlckdyb3Vwcy5sZW5ndGhcIiBxbXMtZm9ybSBxbXMtc2VsZWN0LWlucHV0XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInctMTAwICBtYi0yXCIgYXBwZWFyYW5jZT1cImZpbGxcIj5cbiAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWwgcW1zLXNlbGVjdC1pbnB1dD57e0xBTkcuUk9MRX19PC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgICAgICA8bWF0LXNlbGVjdCBwYW5lbENsYXNzPVwicW1zLXNlbGVjdC1wYW5lbFwiIHFtcy1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwidXNlckdyb3VwXCJcbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZU9wdGlvbkNlbnRlcmluZz5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1zZWxlY3QtdHJpZ2dlcj5cbiAgICAgICAgICAgICAgICAgICAgICB7e3BlcnNvbkZvcm0uY29udHJvbHNbJ3VzZXJHcm91cCddLnZhbHVlPy5uYW1lIHx8ICcnfX1cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0LXRyaWdnZXI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgIDxuZ3gtbWF0LXNlbGVjdC1zZWFyY2ggZm9ybUNvbnRyb2xOYW1lPVwidXNlckdyb3VwRmlsdGVyXCIgcGxhY2Vob2xkZXJMYWJlbD1cInt7IExBTkcuUk9MRSB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBub0VudHJpZXNGb3VuZExhYmVsPVwiXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPC9uZ3gtbWF0LXNlbGVjdC1zZWFyY2g+XG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gbW9kZT1cImRhcmtcIiBjbGFzcz1cIm9wdC1jaGVjay1pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBmaWx0ZXJlZFNlYXJjaFRleHRCb3gudXNlckdyb3VwLnZhbHVlXCIgW3ZhbHVlXT1cIml0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBxbXMtZWxpcHNpZnkgcG9zaXRpb249XCJ0b3BcIiBtb2RlPVwiZGFya1wiIGNsYXNzPVwidGV4dC1vcHRpb24tY29udGVudFwiPnt7IGl0ZW0ubmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJjaGVjay1pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicGVyc29uRm9ybS5jb250cm9sc1sndXNlckdyb3VwJ10udmFsdWU/LmlkID09IGl0ZW0uaWRcIj5jaGVjazwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIFtAaW5PdXRBbmltYXRpb25dIChjbGljayk9XCJwZXJzb25Gb3JtLmdldCgndXNlckdyb3VwJykuc2V0VmFsdWUoJycpXCIgY2xhc3M9XCJwb2ludGVyIFwiIG1hdFN1ZmZpeFxuICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiQ2xlYXJcIiAqbmdJZj1cInBlcnNvbkZvcm0uZ2V0KCd1c2VyR3JvdXAnKS52YWx1ZSAmJiAhZ2V0TG9hZGluZyQudmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCAqbmdJZj1cIm9wdGlvbkZpbHRlclBlcnNvbkRhdGFHbG9iYWwuZGVwYXJ0bWVudHMubGVuZ3RoXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwidy0xMDAgaW5wdXQtc2VsZWN0LW9wdGlvbiAgbWItMlwiIHFtcy1mb3JtIHFtcy1zZWxlY3QtaW5wdXQ+XG4gICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPnt7TEFORy5ERVBBUlRNRU5UX1VOSVR9fTwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgICAgPG1hdC1zZWxlY3QgcGFuZWxDbGFzcz1cInFtcy1zZWxlY3QtcGFuZWxcIiBxbXMtc2VsZWN0IGRpc2FibGVPcHRpb25DZW50ZXJpbmdcbiAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZGVwYXJ0bWVudFwiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LXNlbGVjdC10cmlnZ2VyPlxuICAgICAgICAgICAgICAgICAgICAgIHt7cGVyc29uRm9ybS5jb250cm9sc1snZGVwYXJ0bWVudCddLnZhbHVlPy5uYW1lIHx8ICcnfX1cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0LXRyaWdnZXI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgIDxuZ3gtbWF0LXNlbGVjdC1zZWFyY2ggZm9ybUNvbnRyb2xOYW1lPVwiZGVwYXJ0bWVudEZpbHRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJMYWJlbF09XCJMQU5HLkRFUEFSVE1FTlRfVU5JVFwiIG5vRW50cmllc0ZvdW5kTGFiZWw9XCJcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8L25neC1tYXQtc2VsZWN0LXNlYXJjaD5cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiBjbGFzcz1cIm9wdC1jaGVjay1pY29uXCIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZmlsdGVyZWRTZWFyY2hUZXh0Qm94LmRlcGFydG1lbnQudmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJpdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gcW1zLWVsaXBzaWZ5IG1vZGU9XCJkYXJrXCIgcG9zaXRpb249XCJ0b3BcIiBjbGFzcz1cInRleHQtb3B0aW9uLWNvbnRlbnRcIj57eyBpdGVtLm5hbWUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiY2hlY2staWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInBlcnNvbkZvcm0uY29udHJvbHNbJ2RlcGFydG1lbnQnXS52YWx1ZT8uaWQgPT0gaXRlbS5pZFwiPmNoZWNrPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgPHNwYW4gKGNsaWNrKT1cInNldEZvcm1Db250cm9sVmFsdWUoWydyZWN1cnNpdmUnLCdkZXBhcnRtZW50J10sIFtmYWxzZSwnJ10pXCIgW0Bpbk91dEFuaW1hdGlvbl1cbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwb2ludGVyXCIgbWF0U3VmZml4IGFyaWEtbGFiZWw9XCJDbGVhclwiXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicGVyc29uRm9ybS5nZXQoJ2RlcGFydG1lbnQnKS52YWx1ZSAmJiAhZ2V0TG9hZGluZyQudmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBbQGluT3V0QW5pbWF0aW9uXSAqbmdJZj1cInBlcnNvbkZvcm0uY29udHJvbHNbJ2RlcGFydG1lbnQnXS52YWx1ZVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ3LTEwMCBzbGlkZS10b2dnbGVcIiBmb3JtQ29udHJvbE5hbWU9XCJyZWN1cnNpdmVcIiBjb2xvcj1cImRlZmF1bHRcIiBxbXMtZ3JvdXAtb3B0aW9ucz5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtbGFiZWxcIj57e0xBTkcuSU5DTFVERV9TVUJfREVQQVJUTUVOVFN9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxuXG4gICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInctMTAwICBtYi0yXCIgYXBwZWFyYW5jZT1cImZpbGxcIiBxbXMtZm9ybSBxbXMtc2VhcmNoLWZpZWxkPlxuICAgICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBhcHBlYXJhbmNlPVwib2ZmXCIgW3BsYWNlaG9sZGVyXT1cIkxBTkcuU0VBUkNIX1dJVEhfTkFNRVwiIGZvcm1Db250cm9sTmFtZT1cImtleXdvcmRcIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIiBhdXRvY29tcGxldGU9XCJvZmZcIiAvPlxuICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCIhZ2V0TG9hZGluZyQudmFsdWVcIiBxbXMtYnRuLWljb24gY29sb3I9XCJsaWdodFwiIFtAaW5PdXRBbmltYXRpb25dXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25TZWFyY2hQZXJzb25GcmVlVGV4dCgpXCIgY2xhc3M9XCJwb2ludGVyIG1lLTFcIiBtYXRTdWZmaXggYXJpYS1sYWJlbD1cIlNlYXJjaFwiPlxuICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPnNlYXJjaDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPG1hdC1wcm9ncmVzcy1zcGlubmVyIFtAaW5PdXRBbmltYXRpb25dICpuZ0lmPVwiZ2V0TG9hZGluZyQudmFsdWVcIiBtYXRTdWZmaXggbW9kZT1cImluZGV0ZXJtaW5hdGVcIlxuICAgICAgICAgICAgICAgICAgZGlhbWV0ZXI9XCIyMFwiPjwvbWF0LXByb2dyZXNzLXNwaW5uZXI+XG4gICAgICAgICAgICAgICAgPHNwYW4gW0Bpbk91dEFuaW1hdGlvbl0gKGNsaWNrKT1cInBlcnNvbkZvcm0uZ2V0KCdrZXl3b3JkJykuc2V0VmFsdWUoJycpXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwicG9pbnRlciBidG4taWNvbi1jbGVhciBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgXCIgbWF0U3VmZml4XG4gICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiQ2xlYXJcIiAqbmdJZj1cInBlcnNvbkZvcm0uZ2V0KCdrZXl3b3JkJykudmFsdWUgJiYgIWdldExvYWRpbmckLnZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIHFtcy1idG4taWNvbiBjb2xvcj1cImxpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cIm9uRmlsdGVyUGVyc29uKClcIiBxbXMtYnRuLW91dGxpbmVkIGNsYXNzPVwidy0xMDAgbXktMVwiPlxuICAgICAgICAgICAgICAgIHt7TEFORy5GSUxURVJ9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgICA8ZGl2IHFtcy1zY3JvbGxiYXI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW1cIj5cbiAgICAgICAgICAgICAgICAgIDxtYXQtY2hlY2tib3ggW0Bpbk91dEFuaW1hdGlvbl1cbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhZ2V0TG9hZGluZyQudmFsdWUgJiYgcGVyc29uRmlsdGVyZWQubGVuZ3RoICYmICFkaWFsb2dEYXRhLm1vZGVTZWxlY3RPbmVQZXJzb25cIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNEaXNhYmxlZFNlbGVjdEFsbChPUFRJT05fRU5VTS5QRVJTT04pXCIgI2NoZWNrUGVyc29uIGNsYXNzPVwidy0xMDAgbWItMSBjaGVja2JveC1hbGxcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicGVyc29uRmlsdGVyZWQubGVuZ3RoICYmIG9uQ2hlY2tBbGwoT1BUSU9OX0VOVU0uUEVSU09OLGNoZWNrUGVyc29uKVwiXG4gICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImlzQ2hlY2tBbGwoT1BUSU9OX0VOVU0uUEVSU09OKVwiIFtpbmRldGVybWluYXRlXT1cImlzSW5kZXRlcm1pbmF0ZShPUFRJT05fRU5VTS5QRVJTT04pXCJcbiAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJkZWZhdWx0XCIgcW1zLWdyb3VwLW9wdGlvbnM+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1sYWJlbCBoZWFkZXItdGl0bGVcIj57e0xBTkcuQ0hPT1NFX0FMTH19IDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+KDxiPnt7cGVyc29uRmlsdGVyZWQubGVuZ3RofX08L2I+KTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvbWF0LWNoZWNrYm94PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxtYXQtZGl2aWRlciBjbGFzcz1cIm14LWF1dG9cIj48L21hdC1kaXZpZGVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJnZXRMb2FkaW5nJC52YWx1ZTsgdGhlbiBsb2FkaW5nXCI+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPGRpdiBbQGluT3V0QW5pbWF0aW9uXSAqbmdJZj1cInBlcnNvbkZpbHRlcmVkLmxlbmd0aCAmJiAhZ2V0TG9hZGluZyQudmFsdWVcIiBbQGxpc3RBbmltYXRpb25dXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIml0ZW0tbGlzdC13cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbSAgbXQtMVwiIFtAaW5PdXRBbmltYXRpb25dICpuZ0Zvcj1cImxldCBlbXBsb3llZSBvZiBwZXJzb25GaWx0ZXJlZDsgdHJhY2tCeTogdHJhY2tCeUZuXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJkaWFsb2dEYXRhLm1vZGVTZWxlY3RPbmVQZXJzb24gP2l0ZW1XaXRob3V0Q2hlY2tib3hUZW1wbGF0ZSA6IGl0ZW1DaGVja2JveFRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie2l0ZW06IGVtcGxveWVlLCB0eXBlOiBPUFRJT05fRU5VTS5QRVJTT059XCI+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBbQGluT3V0QW5pbWF0aW9uXSAqbmdJZj1cIiFwZXJzb25GaWx0ZXJlZC5sZW5ndGggJiYgIWdldExvYWRpbmckLnZhbHVlXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaXRlbS1saXN0LXdyYXBwZXIgbm8tcmVzdWx0XCI+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibm9SZXN1bHRcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8bWF0LWRpdmlkZXIgY2xhc3M9XCJteC1hdXRvXCI+PC9tYXQtZGl2aWRlcj5cbiAgICAgICAgICAgICAgICA8cW1zLXBhZ2luYXRvciBvdmVybGF5UGFuZWxDbGFzcz1cInNlbGVjdC1hY2Nlc3MtcGFnaW5hdG9yXCIgI3BhZ2luZ1BlcnNvblxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJnZXRQZXJzb24kLnZhbHVlLmxlbmd0aCA+IDEwXCIgW2xlbmd0aF09XCJnZXRQZXJzb24kLnZhbHVlLmxlbmd0aFwiIFtudW1IaWRkZW5dPVwiMFwiXG4gICAgICAgICAgICAgICAgICBbcGFnZVNpemVdPVwiZ2V0UGVyc29uJC52YWx1ZS5wYWdlU2l6ZVwiIFtwYWdlU2l6ZU9wdGlvbnNdPVwiUEFHRV9TSVpFX09QVElPTlwiXG4gICAgICAgICAgICAgICAgICAocGFnZSk9J29uUGFnaW5hdG9yRXZlbnQoJGV2ZW50LCBPUFRJT05fRU5VTS5QRVJTT04pJyBbc2l6ZV09J1BBR0lOQVRJT05fU0laRS5tZWRpdW0nPlxuICAgICAgICAgICAgICAgIDwvcW1zLXBhZ2luYXRvcj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Zvcm0+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm9wdGlvblNlbGVjdC52YWx1ZSA9PT0gT1BUSU9OX0VOVU0uVVNFUl9HUk9VUFwiPlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgPGZvcm0gKHN1Ym1pdCk9XCJvbkZpbHRlclVzZXJHcm91cCgpXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwidy0xMDAgIG1iLTJcIiBxbXMtZm9ybSBxbXMtc2VhcmNoLWZpZWxkPlxuICAgICAgICAgICAgICAgICAgPGlucHV0IFtmb3JtQ29udHJvbF09XCJ1c2VyR3JvdXBGb3JtXCIgbWF0SW5wdXQgdHlwZT1cInRleHRcIiBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlVzZXIgZ3JvdXBcIiAvPlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBbQGluT3V0QW5pbWF0aW9uXSAqbmdJZj1cIiFnZXRMb2FkaW5nJC52YWx1ZVwiIHR5cGU9XCJzdWJtaXRcIiBxbXMtYnRuLWljb24gY29sb3I9XCJsaWdodFwiXG4gICAgICAgICAgICAgICAgICAgIG1hdFN1ZmZpeD5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPnNlYXJjaDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDxtYXQtcHJvZ3Jlc3Mtc3Bpbm5lciBbQGluT3V0QW5pbWF0aW9uXSAqbmdJZj1cImdldExvYWRpbmckLnZhbHVlXCIgbWF0U3VmZml4IG1vZGU9XCJpbmRldGVybWluYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgZGlhbWV0ZXI9XCIyMFwiPjwvbWF0LXByb2dyZXNzLXNwaW5uZXI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IFtAaW5PdXRBbmltYXRpb25dICpuZ0lmPVwiISF1c2VyR3JvdXBGb3JtLnZhbHVlICYmICFnZXRMb2FkaW5nJC52YWx1ZVwiIG1hdFN1ZmZpeCBxbXMtaW5wdXQtY2xlYXI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cInVzZXJHcm91cEZvcm0uc2V0VmFsdWUoJycpXCIgcW1zLWJ0bi1pY29uIGNvbG9yPVwibGlnaHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICAgIDwvZm9ybT5cbiAgICAgICAgICAgICAgPGRpdiBxbXMtc2Nyb2xsYmFyPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtXCI+XG4gICAgICAgICAgICAgICAgICA8bWF0LWNoZWNrYm94IFtAaW5PdXRBbmltYXRpb25dXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWdldExvYWRpbmckLnZhbHVlICYmICh1c2VyR3JvdXBGaWx0ZXJlZC5sZW5ndGggJiYgIWRpYWxvZ0RhdGEubW9kZVNlbGVjdE9uZVVzZXJHcm91cClcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNEaXNhYmxlZFNlbGVjdEFsbChPUFRJT05fRU5VTS5VU0VSX0dST1VQKVwiICNjaGVja1VzZXJHcm91cFxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInctMTAwIGNoZWNrYm94LWFsbCBtYi0xXCIgY29sb3I9XCJkZWZhdWx0XCIgW2NoZWNrZWRdPVwiaXNDaGVja0FsbChPUFRJT05fRU5VTS5VU0VSX0dST1VQKVwiXG4gICAgICAgICAgICAgICAgICAgIFtpbmRldGVybWluYXRlXT1cImlzSW5kZXRlcm1pbmF0ZShPUFRJT05fRU5VTS5VU0VSX0dST1VQKVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ1c2VyR3JvdXBGaWx0ZXJlZC5sZW5ndGggJiYgb25DaGVja0FsbChPUFRJT05fRU5VTS5VU0VSX0dST1VQLGNoZWNrVXNlckdyb3VwKVwiXG4gICAgICAgICAgICAgICAgICAgIHFtcy1ncm91cC1vcHRpb25zPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtbGFiZWwgaGVhZGVyLXRpdGxlXCI+e3tMQU5HLkNIT09TRV9BTEx9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+KDxiPnt7dXNlckdyb3VwRmlsdGVyZWQubGVuZ3RofX08L2I+KTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvbWF0LWNoZWNrYm94PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxtYXQtZGl2aWRlciBjbGFzcz1cIm14LWF1dG9cIj48L21hdC1kaXZpZGVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJnZXRMb2FkaW5nJC52YWx1ZTt0aGVuIGxvYWRpbmdcIj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidXNlckdyb3VwRmlsdGVyZWQubGVuZ3RoICYmICFnZXRMb2FkaW5nJC52YWx1ZVwiIFtAbGlzdEFuaW1hdGlvbl0gY2xhc3M9XCJpdGVtLWxpc3Qtd3JhcHBlclwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBbQGluT3V0QW5pbWF0aW9uXSBjbGFzcz1cIml0ZW0gbXQtMVwiICpuZ0Zvcj1cImxldCB1c2VyR3JvdXAgb2YgdXNlckdyb3VwRmlsdGVyZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImRpYWxvZ0RhdGEubW9kZVNlbGVjdE9uZVVzZXJHcm91cCA/IGl0ZW1XaXRob3V0Q2hlY2tib3hUZW1wbGF0ZSA6IGl0ZW1DaGVja2JveFRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie2l0ZW06IHVzZXJHcm91cCx0eXBlOiBPUFRJT05fRU5VTS5VU0VSX0dST1VQfVwiPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgW0Bpbk91dEFuaW1hdGlvbl0gKm5nSWY9XCIhdXNlckdyb3VwRmlsdGVyZWQubGVuZ3RoICYmICFnZXRMb2FkaW5nJC52YWx1ZVwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIml0ZW0tbGlzdC13cmFwcGVyIG5vLXJlc3VsdFwiPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm5vUmVzdWx0XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPG1hdC1kaXZpZGVyIGNsYXNzPVwibXgtYXV0b1wiPjwvbWF0LWRpdmlkZXI+XG4gICAgICAgICAgICAgICAgPHFtcy1wYWdpbmF0b3Igb3ZlcmxheVBhbmVsQ2xhc3M9XCJzZWxlY3QtYWNjZXNzLXBhZ2luYXRvclwiICNwYWdpbmdVc2VyR3JvdXAgY2xhc3M9XCJteS0xXCJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZ2V0VXNlckdyb3VwJC52YWx1ZS5sZW5ndGggPiAxMCBcIiBbbGVuZ3RoXT1cImdldFVzZXJHcm91cCQudmFsdWUubGVuZ3RoXCIgW251bUhpZGRlbl09XCIwXCJcbiAgICAgICAgICAgICAgICAgIFtwYWdlU2l6ZV09XCJnZXRVc2VyR3JvdXAkLnZhbHVlLnBhZ2VTaXplXCIgW3BhZ2VTaXplT3B0aW9uc109XCJQQUdFX1NJWkVfT1BUSU9OXCJcbiAgICAgICAgICAgICAgICAgIChwYWdlKT0nb25QYWdpbmF0b3JFdmVudCgkZXZlbnQsIE9QVElPTl9FTlVNLlVTRVJfR1JPVVApJyBbc2l6ZV09J1BBR0lOQVRJT05fU0laRS5tZWRpdW0nPlxuICAgICAgICAgICAgICAgIDwvcW1zLXBhZ2luYXRvcj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdJZj1cIm9wdGlvblNlbGVjdC52YWx1ZSA9PT0gT1BUSU9OX0VOVU0uREVQQVJUTUVOVCAmJiBnZXRMb2FkaW5nJC52YWx1ZTsgdGhlbiBsb2FkaW5nXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm9wdGlvblNlbGVjdC52YWx1ZSA9PT0gT1BUSU9OX0VOVU0uREVQQVJUTUVOVCAmJiAhZ2V0TG9hZGluZyQudmFsdWVcIlxuICAgICAgICAgICAgY2xhc3M9XCJwZXJzb24tYWNjZXNzXCI+XG4gICAgICAgICAgICA8cW1zLXNlbGVjdC1kZXBhcnRtZW50LXRyZWUgI3RyZWUgW3Jvd3NTa2VsZXRvbl09XCI4XCIgW2NvbmZpZ109XCJkaWFsb2dEYXRhLnRyZWVEZXBhcnRtZW50Q29uZmlnXCJcbiAgICAgICAgICAgICAgW21heFdpZHRoTm9kZV09XCJkaWFsb2dEYXRhLm1heFdpZHRoTm9kZVwiIChvblNlYXJjaEV2ZW50KT1cIm9uU2VhcmNoRGVwYXJ0bWVudEV2ZW50LmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgIChvblZhbHVlQ2hhbmdlRXZlbnQpPVwib25SZXN1bHREZXBhcnRtZW50Q2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICAoc2VsZWN0aW9uTm9kZUNoYW5nZUV2ZW50KT1cIm9uU2VsZWN0aW9uTm9kZURlcGFydG1lbnRDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgIChvblBhZ2luZ1NlYXJjaEV2ZW50KT1cIm9uUGFnaW5hdG9yRXZlbnQoJGV2ZW50LCBPUFRJT05fRU5VTS5ERVBBUlRNRU5UKVwiPlxuICAgICAgICAgICAgPC9xbXMtc2VsZWN0LWRlcGFydG1lbnQtdHJlZT5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgKm5nSWY9XCJvcHRpb25TZWxlY3QudmFsdWUgIT09IG51bGxcIiBjbGFzcz1cInJlc3VsdC13cmFwcGVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicmVzdWx0LXNlbGVjdGVkLWNvbnRhaW5lclwiPlxuICAgICAgICA8ZGl2IFtAaW5PdXRBbmltYXRpb25dICpuZ0lmPVwiKG9wdGlvbnMubGVuZ3RoID09PSAxKSB8fCAob3B0aW9ucy5sZW5ndGggPiAxICYmIG9wdGlvblNlbGVjdC52YWx1ZSAhPT0gbnVsbClcIlxuICAgICAgICAgIGNsYXNzPVwiaGVhZGVyLXRpdGxlIHJlc3VsdC1oZWFkZXJcIj5cbiAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgIHt7XG4gICAgICAgICAgICBkaWFsb2dEYXRhLnRpdGxlUmVzdWx0IHx8IExBTkcuUkVTVUxUU319XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm9wdGlvbnMubGVuZ3RoID09PSAxICYmIGhhc0l0ZW1TZWxlY3RlZCgpXCI+XG4gICAgICAgICAgICAgICh7e2dldFJlc3VsdFRhYkFjdGl2ZSgpLmxlbmd0aH19KVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyZXN1bHQtYm9keVwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjaGVja0V4aXN0T3B0aW9uU2VsZWN0KE9QVElPTl9FTlVNLlBFUlNPTilcIlxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwib3B0aW9ucz8ubGVuZ3RoID09IDEgPyBsaXN0Q2hpcCA6IHZpZXdSZXN1bHRDb2xsYXBzZVwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie2RhdGE6cmVzdWx0QWNjZXNzLnBlcnNvbnMsIHR5cGU6T1BUSU9OX0VOVU0uUEVSU09OLCB0aXRsZTpMQU5HLlBFUlNPTn1cIj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2hlY2tFeGlzdE9wdGlvblNlbGVjdChPUFRJT05fRU5VTS5VU0VSX0dST1VQKVwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJvcHRpb25zPy5sZW5ndGggPT0gMSA/IGxpc3RDaGlwIDogdmlld1Jlc3VsdENvbGxhcHNlXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ZGF0YTpyZXN1bHRBY2Nlc3MudXNlckdyb3VwcywgdHlwZTpPUFRJT05fRU5VTS5VU0VSX0dST1VQLCB0aXRsZTpMQU5HLlVTRVJfR1JPVVB9XCI+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNoZWNrRXhpc3RPcHRpb25TZWxlY3QoT1BUSU9OX0VOVU0uREVQQVJUTUVOVClcIlxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwib3B0aW9ucz8ubGVuZ3RoID09IDEgPyBsaXN0Q2hpcCA6IHZpZXdSZXN1bHRDb2xsYXBzZVwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie2RhdGE6IHJlc3VsdEFjY2Vzcy5kZXBhcnRtZW50cywgdHlwZTpPUFRJT05fRU5VTS5ERVBBUlRNRU5ULCB0aXRsZTpMQU5HLkRFUEFSVE1FTlR9XCI+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG48L21hdC1kaWFsb2ctY29udGVudD5cbjxtYXQtZGlhbG9nLWFjdGlvbnMgYWxpZ249XCJlbmRcIj5cbiAgPG1hdC1kaXZpZGVyIGNsYXNzPVwidy0xMDAgbWItM1wiPjwvbWF0LWRpdmlkZXI+XG4gIDxidXR0b24gY2xhc3M9XCJtZS0yXCIgcW1zLWJ0bi10ZXh0IG1hdC1kaWFsb2ctY2xvc2U+XG4gICAge3tkaWFsb2dEYXRhLmNhbmNlbFRpdGxlIHx8IExBTkcuQ0FOQ0VMfX1cbiAgPC9idXR0b24+XG4gIDxidXR0b24gKm5nSWY9XCJvcHRpb25TZWxlY3QudmFsdWUgIT09IG51bGxcIlxuICAgIFtkaXNhYmxlZF09XCIhaGFzSXRlbVNlbGVjdGVkKCkgJiYgIWRpYWxvZ0RhdGEudHJlZURlcGFydG1lbnRDb25maWcuY2FuQWRkTnVsbFJlc3VsdFwiIGNsYXNzPVwiYnRuLWFkZFwiXG4gICAgW2NsYXNzLnFtcy1idG4tZGlzYWJsZWRdPVwiIWhhc0l0ZW1TZWxlY3RlZCgpICYmICFkaWFsb2dEYXRhLnRyZWVEZXBhcnRtZW50Q29uZmlnLmNhbkFkZE51bGxSZXN1bHRcIlxuICAgIFttYXQtZGlhbG9nLWNsb3NlXT1cInJlc3VsdEFjY2Vzc1wiIHFtcy1idG4+XG4gICAgPHNwYW4+e3tkaWFsb2dEYXRhLmNvbmZpcm1UaXRsZSB8fCBMQU5HLkFERH19PC9zcGFuPlxuICA8L2J1dHRvbj5cbjwvbWF0LWRpYWxvZy1hY3Rpb25zPlxuXG48bmctdGVtcGxhdGUgI25vUmVzdWx0PlxuICA8c3ZnIHdpZHRoPVwiODlcIiBoZWlnaHQ9XCIxMzBcIiB2aWV3Qm94PVwiMCAwIDg5IDg4XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgPHJlY3QgeD1cIjAuNVwiIHdpZHRoPVwiODhcIiBoZWlnaHQ9XCI4OFwiIHJ4PVwiNDRcIiBmaWxsPVwid2hpdGVcIiAvPlxuICAgIDxyZWN0IHg9XCIwLjVcIiB3aWR0aD1cIjg4XCIgaGVpZ2h0PVwiODhcIiByeD1cIjQ0XCIgZmlsbD1cIiMwMTYzQjJcIiBmaWxsLW9wYWNpdHk9XCIwLjEyXCIgLz5cbiAgICA8cGF0aFxuICAgICAgZD1cIk00NC41IDU2LjY5MzZMNTguMDk2IDY0Ljg5OTZMNTQuNDg4IDQ5LjQzMzZMNjYuNSAzOS4wMjc2TDUwLjY4MiAzNy42ODU2TDQ0LjUgMjMuMDk5NkwzOC4zMTggMzcuNjg1NkwyMi41IDM5LjAyNzZMMzQuNTEyIDQ5LjQzMzZMMzAuOTA0IDY0Ljg5OTZMNDQuNSA1Ni42OTM2WlwiXG4gICAgICBmaWxsPVwiIzAxNjNCM1wiIC8+XG4gICAgPHRleHQgeD1cIjEwXCIgeT1cIjEwNVwiIGZpbGw9XCIjMDE2M0IyXCI+e3tMQU5HLk5PX1JFU1VMVH19PC90ZXh0PlxuICA8L3N2Zz5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI2xpc3RDaGlwIGxldC1kYXRhPVwiZGF0YVwiIGxldC10eXBlPVwidHlwZVwiPlxuICA8bWF0LWNoaXAtc2V0IFtAaW5PdXRBbmltYXRpb25dICpuZ0lmPVwiZGF0YT8ubGVuZ3RoXCIgY2xhc3M9XCJwYW5lbF9faXRlbSBxbXMtc2Nyb2xsYmFyXCI+XG4gICAgPGRpdiBbQGluT3V0QW5pbWF0aW9uXzJdICpuZ0Zvcj1cImxldCBpdGVtIG9mIGRhdGE7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgIDxtYXQtY2hpcCAoY2xpY2spPVwib25TY29sbFRvTm9kZVRyZWVEZXBhcnRtZW50KGl0ZW0pXCIgW0B1cGRhdGVJdGVtQW5pbWF0aW9uXVxuICAgICAgICAqcW1zQ29udGVudENoYW5nZXM9XCJpdGVtLmNoaWxkcmVuPy5sZW5ndGhcIiBjbGFzcz1cImNoaXAtaXRlbS1yZXN1bHRcIiBxbXMtY2hpcCBbcmVtb3ZhYmxlXT1cInRydWVcIj5cbiAgICAgICAgPHNwYW4gcW1zLWNoaXAtYm9keT5cbiAgICAgICAgICA8c3BhbiBbcW1zLXRvb2wtdGlwXT1cImdlbmVyYXRlVG9vbHRpcChpdGVtKVwiIHBvc2l0aW9uPVwidG9wXCIgbW9kZT1cImRhcmtcIiBjbGFzcz1cInRleHQtbGFiZWxcIj5cbiAgICAgICAgICAgIHt7aXRlbS5uYW1lfX1cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiaXRlbS5zdWJOYW1lXCI+KHt7IGl0ZW0uc3ViTmFtZSB9fSk8L3NwYW4+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcC1pdGVtLWNoaWxkcmVuX19jb3VudCBtcy0xXCIgKm5nSWY9XCJpdGVtPy5jaGlsZHJlbiAmJiBpdGVtPy5pc0dyb3VwXCI+XG4gICAgICAgICAgICB7e2l0ZW0uY2hpbGRyZW4ubGVuZ3RofX0ve3tpdGVtLmNoaWxkQ291bnR9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgIDxidXR0b24gbWF0Q2hpcFJlbW92ZSAqbmdJZj1cImFsbG93UmVtb3ZlKHR5cGUsIGl0ZW0pXCIgKGNsaWNrKT1cIm9uUmVtb3ZlQ2hpcCh0eXBlLGl0ZW0sIGkpXCI+XG4gICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwicmVtb3ZlLWNoaXAtaWNvblwiPmNhbmNlbDwvbWF0LWljb24+XG4gICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwiYWxsb3dSZW1vdmUodHlwZSwgaXRlbSkgJiYgZGlhbG9nRGF0YS5mb3JtYXRNc2dEaXNhYmxlXCIgcG9zaXRpb249XCJ0b3BcIiBtb2RlPVwiZGFya1wiXG4gICAgICAgICAgICBbcW1zLXRvb2wtdGlwXT1cImRpYWxvZ0RhdGEuZm9ybWF0TXNnRGlzYWJsZShpdGVtKVwiIGNsYXNzPVwicmVtb3ZlLWNoaXAtaWNvblwiPmluZm9faTwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIG1hdENoaXBSZW1vdmUgKm5nSWY9XCIhYWxsb3dSZW1vdmUodHlwZSwgaXRlbSkgJiYgZGlhbG9nRGF0YS5mb3JtYXRNc2dEaXNhYmxlXCJcbiAgICAgICAgICAoY2xpY2spPVwib25SZW1vdmVDaGlwKHR5cGUsaXRlbSwgaSlcIj5cbiAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJyZW1vdmUtY2hpcC1pY29uXCI+Y2FuY2VsPC9tYXQtaWNvbj5cbiAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCIhYWxsb3dSZW1vdmUodHlwZSwgaXRlbSkgJiYgZGlhbG9nRGF0YS5mb3JtYXRNc2dEaXNhYmxlXCIgcG9zaXRpb249XCJ0b3BcIiBtb2RlPVwiZGFya1wiXG4gICAgICAgICAgICBbcW1zLXRvb2wtdGlwXT1cImRpYWxvZ0RhdGEuZm9ybWF0TXNnRGlzYWJsZShpdGVtKVwiIGNsYXNzPVwicmVtb3ZlLWNoaXAtaWNvblwiPmluZm9faTwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9tYXQtY2hpcD5cbiAgICA8L2Rpdj5cbiAgPC9tYXQtY2hpcC1zZXQ+XG48L25nLXRlbXBsYXRlPlxuXG5cbjxuZy10ZW1wbGF0ZSAjdmlld1Jlc3VsdENvbGxhcHNlIGxldC10aXRsZT1cInRpdGxlXCIgbGV0LWRhdGE9XCJkYXRhXCIgbGV0LXR5cGU9XCJ0eXBlXCI+XG4gIDxtYXQtZXhwYW5zaW9uLXBhbmVsIHFtcy1leHBhbnNpb24gW2V4cGFuZGVkXT1cIm9wdGlvblNlbGVjdC52YWx1ZSA9PT0gdHlwZVwiPlxuICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZS1jb250ZW50XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJxbXMtbGlzdC10ZXh0XCI+XG4gICAgICAgICAgPGRpdiBxbXMtbGluZSBjb2xvcj1cImRlZmF1bHQtc3VidGl0bGVcIj57e3RpdGxlfX1cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZnctNjAwXCI+XG4gICAgICAgICAgICAgICh7e2RhdGE/Lmxlbmd0aH19KVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XG4gICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJsaXN0Q2hpcFwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ZGF0YTogZGF0YSx0eXBlOiB0eXBlfVwiPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L21hdC1leHBhbnNpb24tcGFuZWw+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2l0ZW1XaXRob3V0Q2hlY2tib3hUZW1wbGF0ZSBsZXQtaXRlbT1cIml0ZW1cIiBsZXQtdHlwZT1cInR5cGVcIj5cbiAgPGRpdiAoY2xpY2spPVwib25TZWxlY3RJdGVtKHR5cGUsaXRlbSlcIiBjbGFzcz1cIml0ZW0td2l0aG91dC1jaGVja2JveCB3LTEwMFwiIFtjbGFzcy5hY3RpdmVdPVwiaXRlbS5zZWxlY3RlZFwiPlxuICAgIDxkaXYgY2xhc3M9XCJpdGVtLWNvbnRlbnRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWxhYmVsXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1sYWJlbCBsYWJlbC1pdGVtIGZzLTE0IFwiPlxuICAgICAgICAgIHt7IGl0ZW0ubmFtZSB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwiaXRlbS5zdWJOYW1lXCIgY2xhc3M9XCJtcy0xIHN1Yi1sYWJlbFwiPih7e2l0ZW0uc3ViTmFtZX19KTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPHNtYWxsICpuZ0lmPVwiaXRlbS5oZWxwVGV4dFwiIGNsYXNzPVwidGV4dC1oZWxwIHB4LTEgZnMtMTIgc3ViLWxhYmVsXCI+e3sgaXRlbS5oZWxwVGV4dCB9fTwvc21hbGw+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIml0ZW0tc3RhdGVcIj5cbiAgICAgIDxtYXQtaWNvbiBbQGluT3V0QW5pbWF0aW9uXSAqbmdJZj1cIml0ZW0uc2VsZWN0ZWRcIj5jaGVjazwvbWF0LWljb24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNpdGVtQ2hlY2tib3hUZW1wbGF0ZSBsZXQtaXRlbT1cIml0ZW1cIiBsZXQtdHlwZT1cInR5cGVcIj5cbiAgPG1hdC1jaGVja2JveCBbZGlzYWJsZWRdPVwiIWFsbG93UmVtb3ZlKHR5cGUsIGl0ZW0pXCIgW2NoZWNrZWRdPVwiaXRlbS5zZWxlY3RlZFwiIChjbGljayk9XCJvblNlbGVjdEl0ZW0odHlwZSxpdGVtKVwiXG4gICAgY2xhc3M9XCJ3LTEwMFwiIGNvbG9yPVwiZGVmYXVsdFwiIHFtcy1ncm91cC1vcHRpb25zPlxuICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWxhYmVsXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cInRleHQtbGFiZWwgbGFiZWwtaXRlbSBmcy0xNCBcIj5cbiAgICAgICAge3sgaXRlbS5uYW1lIH19XG4gICAgICA8L3NwYW4+XG4gICAgICA8c3BhbiAqbmdJZj1cIml0ZW0uc3ViTmFtZVwiIGNsYXNzPVwibXMtMSBzdWItbGFiZWxcIj4oe3tpdGVtLnN1Yk5hbWV9fSk8L3NwYW4+XG4gICAgPC9kaXY+XG4gICAgPHNtYWxsICpuZ0lmPVwiaXRlbS5oZWxwVGV4dFwiIGNsYXNzPVwidGV4dC1oZWxwIHB4LTEgZnMtMTIgc3ViLWxhYmVsXCI+e3sgaXRlbS5oZWxwVGV4dCB9fTwvc21hbGw+XG4gIDwvbWF0LWNoZWNrYm94PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNsb2FkaW5nPlxuICA8ZGl2IGNsYXNzPVwicW1zLWxvYWRpbmctY29udGFpbmVyXCI+XG4gICAgPGRpdiBjbGFzcz1cInFtcy1sb2FkZXJcIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBhcnJTa2VsZXRvblwiPlxuICAgICAgPGRpdiBjbGFzcz1cInFtcy1sb2FkZXJfX3dyYXBwZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJvdy1sb2FkZXJcIj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPiJdfQ==
@@ -38029,10 +38029,7 @@ class QMSSelectAccessDialogComponent {
38029
38029
  }
38030
38030
  };
38031
38031
  for (let item in this.dialogData) {
38032
- if (!!this.dialogData[item] && optionObj[item] && !this.dialogData.skipFirstAskingScreen) {
38033
- this.options.push(optionObj[item]);
38034
- }
38035
- if (this.dialogData.skipFirstAskingScreen && optionObj[item]) {
38032
+ if (!!this.dialogData[item] && optionObj[item]) {
38036
38033
  this.options.push(optionObj[item]);
38037
38034
  }
38038
38035
  }