ezlibrary_v2 0.0.83 → 0.0.85

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.
@@ -104,8 +104,10 @@ export class CommanServiceService {
104
104
  .toPromise()
105
105
  .then((response) => response);
106
106
  }
107
- authLogout(reqObj, headers) {
108
- return this.http.post(this.glbEnv.baseUrl + 'login/authLogout', JSON.stringify(reqObj), headers)
107
+ authLogout(reqObj, options) {
108
+ return this.http.post(this.glbEnv.baseUrl + 'login/authLogout', JSON.stringify(reqObj), options = {
109
+ params: options,
110
+ })
109
111
  .toPromise()
110
112
  .then((response) => response);
111
113
  }
@@ -479,7 +481,8 @@ export class CommanServiceService {
479
481
  return x.scrollIntoView();
480
482
  }
481
483
  getIp() {
482
- let url = "http://ipinfo.io/json/";
484
+ let ipStackAccessKey = "b69ccd0df93bb0d1ef6b6e57b153f2f2";
485
+ let url = `http://api.ipstack.com/check?access_key=${ipStackAccessKey}`;
483
486
  return this.newHttpClient.get(url)
484
487
  .pipe(map((res) => res));
485
488
  }
@@ -695,4 +698,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
695
698
  providedIn: 'root'
696
699
  }]
697
700
  }], ctorParameters: function () { return [{ type: i1.Router }, { type: i2.HttpClient }, { type: i2.HttpBackend }, { type: i3.GlobleEnvService }, { type: i4.ToastrService }, { type: i5.NgxSpinnerService }, { type: i6.DatePipe }]; } });
698
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuLXNlcnZpY2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V6bGliL3NyYy9saWIvY29tbWFuLXNlcnZpY2UvY29tbWFuLXNlcnZpY2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFaEUsT0FBTyxFQUFFLE1BQU0sRUFBMEIsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDaEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUUzQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7OztBQVFyQyxNQUFNLE9BQU8sb0JBQW9CO0lBUS9CLFlBQ1MsTUFBYyxFQUNiLElBQWdCLEVBQ2hCLFdBQXdCLEVBQ3pCLE1BQXdCLEVBQ3ZCLE1BQXFCLEVBQ3JCLGNBQWlDLEVBQ2pDLFFBQWlCO1FBTmxCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDYixTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3pCLFdBQU0sR0FBTixNQUFNLENBQWtCO1FBQ3ZCLFdBQU0sR0FBTixNQUFNLENBQWU7UUFDckIsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBQ2pDLGFBQVEsR0FBUixRQUFRLENBQVM7UUFibEIsVUFBSyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFFNUIsTUFBQyxHQUFHLENBQUMsRUFBRSxFQUFF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QUcsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLHVDQUF1QyxDQUFDLENBQUM7UUFDbEYsSUFBSSxDQUFDLENBQUM7WUFBRSxPQUFPO1FBQUMsSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDO1FBQzdCLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUN2RyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDdEcsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQzFHLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUN6RyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNwSSxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2pCLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUdELFlBQVk7UUFDVixJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQ3BELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQVlBLFdBQVcsQ0FBQyxHQUFHO1FBQ2QsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQzthQUNwQixNQUFNLENBQUMsVUFBVSxDQUFDO1lBQ2pCLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFFLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDMUIsQ0FBQyxDQUFDO2FBQ0QsTUFBTSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7WUFDdEIsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNoQixPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNYLENBQUM7O29JQWx2QlUsb0JBQW9CO3dJQUFwQixvQkFBb0IsY0FIbkIsTUFBTTsyRkFHUCxvQkFBb0I7a0JBSmhDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSxDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cEJhY2tlbmQsIEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEdsb2JsZUVudlNlcnZpY2UgfSBmcm9tICcuLi9nbG9ibGUvZ2xvYmxlLWVudi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29va2llIH0gZnJvbSAnbmcyLWNvb2tpZXMvbmcyLWNvb2tpZXMnO1xyXG5pbXBvcnQgeyBSb3V0ZXIsIEFjdGl2YXRlZFJvdXRlLCBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBOZ3hTcGlubmVyU2VydmljZSB9IGZyb20gXCJuZ3gtc3Bpbm5lclwiO1xyXG5pbXBvcnQgeyBUb2FzdHJTZXJ2aWNlIH0gZnJvbSAnbmd4LXRvYXN0cic7XHJcbmltcG9ydCB7IEh0dHBIZWFkZXJzICB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgRGF0ZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5cclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBDb21tYW5TZXJ2aWNlU2VydmljZSB7XHJcblxyXG4gIHJlYWRvbmx5IGNEYXRlID0gbmV3IERhdGUoKTtcclxuICBoZWFkZXI7XHJcbiAgYSA9IFsnJywgJ29uZSAnLCAndHdvICcsICd0aHJlZSAnLCAnZm91ciAnLCAnZml2ZSAnLCAnc2l4ICcsICdzZXZlbiAnLCAnZWlnaHQgJywgJ25pbmUgJywgJ3RlbiAnLCAnZWxldmVuICcsICd0d2VsdmUgJywgJ3RoaXJ0ZWVuICcsICdmb3VydGVlbiAnLCAnZmlmdGVlbiAnLCAnc2l4dGVlbiAnLCAnc2V2ZW50ZWVuICcsICdlaWdodGVlbiAnLCAnbmluZXRlZW4gJ107XHJcbiAgYiA9IFsnJywgJycsICd0d2VudHknLCAndGhpcnR5JywgJ2ZvcnR5JywgJ2ZpZnR5JywgJ3NpeHR5JywgJ3NldmVudHknLCAnZWlnaHR5JywgJ25pbmV0eSddO1xyXG5cclxuICBuZXdIdHRwQ2xpZW50OiBhbnk7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgICBwcml2YXRlIGh0dHBCYWNrZW5kOiBIdHRwQmFja2VuZCxcclxuICAgIHB1YmxpYyBnbGJFbnY6IEdsb2JsZUVudlNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHRvYXN0cjogVG9hc3RyU2VydmljZSxcclxuICAgIHByaXZhdGUgc3Bpbm5lclNlcnZpY2U6IE5neFNwaW5uZXJTZXJ2aWNlICxcclxuICAgIHByaXZhdGUgZGF0ZVBpcGU6RGF0ZVBpcGVcclxuICApIHsgXHJcbiAgICB0aGlzLm5ld0h0dHBDbGllbnQgPSBuZXcgSHR0cENsaWVudCh0aGlzLmh0dHBCYWNrZW5kKVxyXG4gIH1cclxuXHJcbiAgbG9hZExpc3QocmVxT2JqLCBvcHRpb25zOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLmdsYkVudi5iYXNlVXJsICsgJ2Rhc2hib3JkL21vZHVsZScsIEpTT04uc3RyaW5naWZ5KHJlcU9iaiksIG9wdGlvbnM9e1xyXG4gICAgICBwYXJhbXM6IG9wdGlvbnMsXHJcbiAgICB9KVxyXG4gICAgICAudG9Qcm9taXNlKClcclxuICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiByZXNwb25zZSk7XHJcbiAgfVxyXG5cclxuICBtZW51TGlzdChyZXFPYmosIG9wdGlvbnM6IGFueSkge1xyXG4gICAgSlNPTi5zdHJpbmdpZnkocmVxT2JqKTtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLmdsYkVudi5iYXNlVXJsICsgJ2xvZ2luL2xvYWRNZW51JywgSlNPTi5zdHJpbmdpZnkocmVxT2JqKSwgb3B0aW9ucz17XHJcbiAgICAgIHBhcmFtczogb3B0aW9ucyxcclxuICAgIH0pXHJcbiAgICAgIC50b1Byb21pc2UoKVxyXG4gICAgICAudGhlbigocmVzcG9uc2UpID0+IHJlc3BvbnNlKTtcclxuICB9XHJcblxyXG4gIGxvYWRtZW51TGlzdChyZXFPYmosIG9wdGlvbnM6IGFueSkge1xyXG4gICAgSlNPTi5zdHJpbmdpZnkocmVxT2JqKTtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLmdsYkVudi5iYXNlVXJsICsgJ2xvZ2luL2dldE1lbnUnLCBKU09OLnN0cmluZ2lmeShyZXFPYmopLCBvcHRpb25zPXtcclxuICAgICAgcGFyYW1zOiBvcHRpb25zLFxyXG4gICAgfSlcclxuICAgICAgLnRvUHJvbWlzZSgpXHJcbiAgICAgIC50aGVuKChyZXNwb25zZSkgPT4gcmVzcG9uc2UpO1xyXG4gIH1cclxuXHJcbiAgbG9nb3V0KHJlcU9iaiwgb3B0aW9uczogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5nbGJFbnYuYmFzZVVybCArICdsb2dpbi9hdXRoZW50aWNhdGlvbicsIEpTT04uc3RyaW5naWZ5KHJlcU9iaiksIG9wdGlvbnM9e1xyXG4gICAgICBwYXJhbXM6IG9wdGlvbnMsXHJcbiAgICB9KVxyXG4gICAgICAudG9Qcm9taXNlKClcclxuICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiByZXNwb25zZSk7XHJcbiAgfVxyXG5cclxuICBhdXRoTG9nb3V0KHJlcU9iaiwgaGVhZGVycykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHRoaXMuZ2xiRW52LmJhc2VVcmwgKyAnbG9naW4vYXV0aExvZ291dCcsIEpTT04uc3RyaW5naWZ5KHJlcU9iaiksIGhlYWRlcnMpXHJcbiAgICAgIC50b1Byb21pc2UoKVxyXG4gICAgICAudGhlbigocmVzcG9uc2UpID0+IHJlc3BvbnNlKTtcclxuICB9XHJcblxyXG4gIFxyXG4gIGFzeW5jIGdldFZubXNlcShyZXFPYmosIGhlYWRlcnMpIHtcclxuICAgIGNvbnNvbGUubG9nKFwiaGVhZGVyc1wiLGhlYWRlcnMpO1xyXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuaHR0cC5wb3N0KHRoaXMuZ2xiRW52LmJhc2VVcmwgKyAnYWNjb3VudHMvbWFzdGVyZGF0YScsIEpTT04uc3RyaW5naWZ5KHJlcU9iaiksIGhlYWRlcnMpXHJcbiAgICAgIC50b1Byb21pc2UoKVxyXG4gICAgICAudGhlbigocmVzcG9uc2UpID0+IHJlc3BvbnNlKTtcclxuICB9XHJcblxyXG4gIENTVkNvbnZlcnRvcihKU09ORGF0YSwgUmVwb3J0VGl0bGUsIFNob3dMYWJlbCkge1xyXG4gICAgbGV0IGFyckRhdGEgPSB0eXBlb2YgSlNPTkRhdGEgIT0gJ29iamVjdCcgPyBKU09OLnBhcnNlKEpTT05EYXRhKSA6IEpTT05EYXRhO1xyXG4gICAgY29uc29sZS5sb2coXCJhcnJEYXRhXCIsIGFyckRhdGEpO1xyXG5cclxuICAgIGxldCBDU1YgPSAnJztcclxuICAgIGlmIChTaG93TGFiZWwpIHtcclxuICAgICAgbGV0IHJvdyA9IFwiXCI7XHJcbiAgICAgIGZvciAobGV0IGluZGV4IGluIGFyckRhdGFbMF0pIHtcclxuICAgICAgICByb3cgKz0gaW5kZXggKyAnLCc7XHJcbiAgICAgIH1cclxuICAgICAgcm93ID0gcm93LnNsaWNlKDAsIC0xKTtcclxuICAgICAgQ1NWICs9IHJvdyArICdcXHJcXG4nO1xyXG4gICAgfVxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnJEYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCByb3cgPSBcIlwiO1xyXG4gICAgICBpZiAoYXJyRGF0YVtpXSAhPSAnYnInKSB7XHJcbiAgICAgICAgZm9yIChsZXQgaW5kZXggaW4gYXJyRGF0YVtpXSkge1xyXG4gICAgICAgICAgcm93ICs9ICdcIicgKyBhcnJEYXRhW2ldW2luZGV4XSArICdcIiwnO1xyXG4gICAgICAgIH1cclxuICAgICAgICByb3cuc2xpY2UoMCwgcm93Lmxlbmd0aCAtIDEpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBDU1YgKz0gcm93ICsgJ1xcclxcbic7XHJcbiAgICB9XHJcbiAgICBpZiAoQ1NWID09ICcnKSB7XHJcbiAgICAgIGFsZXJ0KFwiSW52YWxpZCBkYXRhXCIpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICAvLyBjb25zb2xlLmxvZyhcImFyckRhdGFcIiwgYXJyRGF0YSk7XHJcbiAgICBsZXQgZmlsZU5hbWUgPSBcIlJlcG9ydF9cIjtcclxuICAgIGxldCBjVGltZSA9IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKS5zdWJzdHJpbmcoMCwgMTkpO1xyXG4gICAgZmlsZU5hbWUgKz0gUmVwb3J0VGl0bGUucmVwbGFjZSgvIC9nLCBcIl9cIikgKyBjVGltZSArIFwiLmNzdlwiO1xyXG4gICAgdmFyIGJsb2IgPSBuZXcgQmxvYihbQ1NWXSwge1xyXG4gICAgICB0eXBlOiBcImFwcGxpY2F0aW9uL2NzdjtjaGFyc2V0PXV0Zi04O1wiXHJcbiAgICB9KTtcclxuXHJcbiAgICB2YXIgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJhXCIpO1xyXG4gICAgdmFyIGNzdlVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XHJcbiAgICBsaW5rLmhyZWYgPSBjc3ZVcmw7XHJcbiAgICBsaW5rLmRvd25sb2FkID0gZmlsZU5hbWU7XHJcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmspO1xyXG4gICAgbGluay5jbGljaygpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChsaW5rKTtcclxuICAgIC8vbGV0IHVyaSA9ICdkYXRhOnRleHQvY3N2O2NoYXJzZXQ9dXRmLTgsJyArIGVzY2FwZShDU1YpO1xyXG4gICAgLy8gbGV0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiYVwiKTtcclxuICAgIC8vbGluay5ocmVmID0gdXJpO1xyXG4gICAgLy8gbGluay5zdHlsZSA9IFwidmlzaWJpbGl0eTpoaWRkZW5cIjtcclxuICAgIC8vIGxpbmsuZG93bmxvYWQgPSBmaWxlTmFtZSArIFwiLmNzdlwiO1xyXG4gICAgLy8gIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobGluayk7XHJcbiAgICAvLyBsaW5rLmNsaWNrKCk7XHJcbiAgICAvLyBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGxpbmspO1xyXG4gIH1cclxuXHJcbiAgQ09tcGFyaXNpb25DU1ZDb252ZXJ0b3IoSGVhZGVycywgSGRyRHRsLCBKU09ORGF0YSwgUmVwb3J0VGl0bGUsIFNob3dMYWJlbCkge1xyXG4gICAgbGV0IGFyckRhdGEgPSB0eXBlb2YgSlNPTkRhdGEgIT0gJ29iamVjdCcgPyBKU09OLnBhcnNlKEpTT05EYXRhKSA6IEpTT05EYXRhO1xyXG4gICAgbGV0IENTViA9ICcnO1xyXG4gICAgaWYgKFNob3dMYWJlbCkge1xyXG4gICAgICBsZXQgcm93ID0gXCJcIjtcclxuICAgICAgcm93ICs9ICdTcicgKyAnLCc7XHJcbiAgICAgIHJvdyArPSAnRW1wbG95ZWUnICsgJywnO1xyXG4gICAgICByb3cgKz0gJ1RyYW5zIElkJyArICcsJztcclxuICAgICAgcm93ICs9ICdQcm9jZXNzIE5hbWUnICsgJywnO1xyXG4gICAgICByb3cgKz0gJ1N0YXR1cycgKyAnLCc7XHJcbiAgICAgIHJvdyArPSAnUGFja2V0IENvZGUnICsgJywnO1xyXG4gICAgICByb3cgKz0gJ0RhdGUnICsgJywnO1xyXG5cclxuICAgICAgSGVhZGVycy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgIHJvdyArPSBIZHJEdGxbZWxlbWVudF0gKyAnLCc7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgcm93ID0gcm93LnNsaWNlKDAsIC0xKTtcclxuICAgICAgQ1NWICs9IHJvdyArICdcXHJcXG4nO1xyXG4gICAgfVxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnJEYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCByb3cgPSBcIlwiO1xyXG5cclxuICAgICAgcm93ICs9ICdcIicgKyBhcnJEYXRhW2ldWydzciddICsgJ1wiLCc7XHJcbiAgICAgIHJvdyArPSAnXCInICsgYXJyRGF0YVtpXVsnZW1wbG95ZWUnXSArICdcIiwnO1xyXG4gICAgICByb3cgKz0gJ1wiJyArIGFyckRhdGFbaV1bJ3RyYW5zYWN0aW9uX3FjX2lkbiddICsgJ1wiLCc7XHJcbiAgICAgIHJvdyArPSAnXCInICsgYXJyRGF0YVtpXVsncHJvY2Vzc05tZSddICsgJ1wiLCc7XHJcbiAgICAgIHJvdyArPSAnXCInICsgYXJyRGF0YVtpXVsnc3RhdHVzJ10gKyAnXCIsJztcclxuICAgICAgcm93ICs9ICdcIicgKyBhcnJEYXRhW2ldWydwa3RfY29kZSddICsgJ1wiLCc7XHJcblxyXG4gICAgICByb3cgKz0gJ1wiJyArIGFyckRhdGFbaV1bJ2lzc3VlX3RzJ10gKyAnXFxuJyArIGFyckRhdGFbaV1bJ21vZGlmaWVkX3RzJ10gKyAnXCIsJztcclxuXHJcbiAgICAgIEhlYWRlcnMuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICBsZXQgaXNzdmFsID0gXCJcIjtcclxuICAgICAgICBsZXQgcnR2YWwgPSBcIlwiO1xyXG4gICAgICAgIGlzc3ZhbCA9IGFyckRhdGFbaV1bJ2lzc3ZhbCddW2VsZW1lbnRdID09IHVuZGVmaW5lZCA/ICcnIDogYXJyRGF0YVtpXVsnaXNzdmFsJ11bZWxlbWVudF07XHJcbiAgICAgICAgcnR2YWwgPSBhcnJEYXRhW2ldWydydG52YWwnXVtlbGVtZW50XSA9PSB1bmRlZmluZWQgPyAnJyA6IGFyckRhdGFbaV1bJ3J0bnZhbCddW2VsZW1lbnRdO1xyXG4gICAgICAgIHJvdyArPSAnXCInICsgaXNzdmFsICsgJ1xcbicgKyBydHZhbCArICdcIiwnO1xyXG4gICAgICB9KTtcclxuICAgIFxyXG4gICAgICByb3cuc2xpY2UoMCwgcm93Lmxlbmd0aCAtIDEpO1xyXG5cclxuICAgICAgQ1NWICs9IHJvdyArICdcXHJcXG4nO1xyXG4gICAgfVxyXG4gICAgaWYgKENTViA9PSAnJykge1xyXG4gICAgICBhbGVydChcIkludmFsaWQgZGF0YVwiKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgbGV0IGZpbGVOYW1lID0gXCJSZXBvcnRfXCI7XHJcbiAgICBsZXQgY1RpbWUgPSBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCkuc3Vic3RyaW5nKDAsIDE5KTtcclxuICAgIGZpbGVOYW1lICs9IFJlcG9ydFRpdGxlLnJlcGxhY2UoLyAvZywgXCJfXCIpICsgY1RpbWUgKyBcIi5jc3ZcIjtcclxuICAgIHZhciBibG9iID0gbmV3IEJsb2IoW0NTVl0sIHtcclxuICAgICAgdHlwZTogXCJhcHBsaWNhdGlvbi9jc3Y7Y2hhcnNldD11dGYtODtcIlxyXG4gICAgfSk7XHJcblxyXG4gICAgdmFyIGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiYVwiKTtcclxuICAgIHZhciBjc3ZVcmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xyXG4gICAgbGluay5ocmVmID0gY3N2VXJsO1xyXG4gICAgbGluay5kb3dubG9hZCA9IGZpbGVOYW1lO1xyXG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsaW5rKTtcclxuICAgIGxpbmsuY2xpY2soKTtcclxuICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobGluayk7XHJcblxyXG4gIH1cclxuXHJcbiAgLy9UaXRsZSwgZ3JvdXBTdW1tYXJ5LCBhdHRyRHRsLCBhdHRyRGlzcGxheUR0bCwgR3JwTGlzdCwgZmluYWxHcnBWYWxcclxuICBDU1ZDb252ZXJ0b3JHcnBXaXNlKGdyb3VwU3VtbWFyeSwgYXR0ckR0bCwgYXR0ckRpc3BsYXlEdGwsIEdycExpc3QsIGZpbmFsR3JwVmFsLCBSZXBvcnRUaXRsZSwgU2hvd0xhYmVsKSB7XHJcblxyXG4gICAgbGV0IE92YWxzID0gT2JqZWN0LnZhbHVlcyhhdHRyRGlzcGxheUR0bCk7XHJcblxyXG4gICAgbGV0IGFyckRhdGEgPSB0eXBlb2YgZmluYWxHcnBWYWwgIT0gJ29iamVjdCcgPyBKU09OLnBhcnNlKGZpbmFsR3JwVmFsKSA6IGZpbmFsR3JwVmFsO1xyXG4gICAgY29uc29sZS5sb2coXCJhcnJEYXRhXCIsIGFyckRhdGEpO1xyXG5cclxuXHJcbiAgICBsZXQgQ1NWID0gJyc7XHJcbiAgICBpZiAoU2hvd0xhYmVsKSB7XHJcbiAgICAgIGxldCByb3cgPSBcIlwiO1xyXG4gICAgICBmb3IgKGxldCBpbmRleCBpbiBPdmFscykge1xyXG4gICAgICAgIHJvdyArPSBPdmFsc1tpbmRleF0gKyAnLCc7XHJcbiAgICAgIH1cclxuICAgICAgcm93ID0gcm93LnNsaWNlKDAsIC0xKTtcclxuICAgICAgQ1NWICs9IHJvdyArICdcXHJcXG4nO1xyXG4gICAgfVxyXG5cclxuXHJcblxyXG4gICAgR3JwTGlzdC5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICBsZXQgZ3JwID0gJycsIHF0eSA9ICcnLCBjdHMgPSAnJywgcnRlID0gJycsIGFtdCA9ICcnO1xyXG4gICAgICBncnAgPSBcIkdyb3VwIDogXCIgKyBlbGVtZW50LmdycCA9PSB1bmRlZmluZWQgPyBcIlwiIDogXCJHcm91cCA6IFwiICsgZWxlbWVudC5ncnA7XHJcbiAgICAgIHF0eSA9IGdyb3VwU3VtbWFyeVtlbGVtZW50LmdycCArICdfUVRZJ10gPT0gdW5kZWZpbmVkID8gXCJcIiA6IFwiUVRZIDogXCIgKyBncm91cFN1bW1hcnlbZWxlbWVudC5ncnAgKyAnX1FUWSddO1xyXG4gICAgICBjdHMgPSBncm91cFN1bW1hcnlbZWxlbWVudC5ncnAgKyAnX0NUUyddID09IHVuZGVmaW5lZCA/IFwiXCIgOiBcIkNhcmF0cyA6IFwiICsgZ3JvdXBTdW1tYXJ5W2VsZW1lbnQuZ3JwICsgJ19DVFMnXTtcclxuICAgICAgcnRlID0gZ3JvdXBTdW1tYXJ5W2VsZW1lbnQuZ3JwICsgJ19SVEUnXSA9PSB1bmRlZmluZWQgPyBcIlwiIDogXCJSYXRlIDogXCIgKyBncm91cFN1bW1hcnlbZWxlbWVudC5ncnAgKyAnX1JURSddO1xyXG4gICAgICBhbXQgPSBncm91cFN1bW1hcnlbZWxlbWVudC5ncnAgKyAnX0FNVCddID09IHVuZGVmaW5lZCA/IFwiXCIgOiBcIkFtb3VudCA6IFwiICsgZ3JvdXBTdW1tYXJ5W2VsZW1lbnQuZ3JwICsgJ19BTVQnXTtcclxuXHJcblxyXG5cclxuICAgICAgbGV0IHJvdyA9IFwiXCI7XHJcbiAgICAgIHJvdyA9IGdycCArIFwiICBcIiArIHF0eSArIFwiICBcIiArIGN0cyArIFwiICBcIiArIHJ0ZSArIFwiICBcIiArIGFtdDtcclxuICAgICAgLy9yb3cgPSBcIkdyb3VwIDogXCIgKyBlbGVtZW50LmdycCArXHJcbiAgICAgIC8vIGdyb3VwU3VtbWFyeVtlbGVtZW50LmdycCArICdfUVRZJ10gPT0gdW5kZWZpbmVkID8gXCJcIiA6IFwiUVRZIDogXCIgKyBncm91cFN1bW1hcnlbZWxlbWVudC5ncnAgKyAnX1FUWSddICtcclxuICAgICAgLy8gICBncm91cFN1bW1hcnlbZWxlbWVudC5ncnAgKyAnX0NUUyddID09IHVuZGVmaW5lZCA/IFwiXCIgOiBcIkNhcmF0cyA6IFwiICsgZ3JvdXBTdW1tYXJ5W2VsZW1lbnQuZ3JwICsgJ19DVFMnXSArXHJcbiAgICAgIC8vICAgICBncm91cFN1bW1hcnlbZWxlbWVudC5ncnAgKyAnX1JURSddID09IHVuZGVmaW5lZCA/IFwiXCIgOiBcIlJhdGUgOiBcIiArIGdyb3VwU3VtbWFyeVtlbGVtZW50LmdycCArICdfUlRFJ10gK1xyXG4gICAgICAvLyAgICAgICBncm91cFN1bW1hcnlbZWxlbWVudC5ncnAgKyAnX0FNVCddID09IHVuZGVmaW5lZCA/IFwiXCIgOiBcIkFtb3VudCA6IFwiICsgZ3JvdXBTdW1tYXJ5W2VsZW1lbnQuZ3JwICsgJ19BTVQnXTtcclxuICAgICAgQ1NWICs9IHJvdyArICdcXHJcXG4nO1xyXG4gICAgICBmaW5hbEdycFZhbFtlbGVtZW50LmdycF0uZm9yRWFjaChwa3RkdGwgPT4ge1xyXG4gICAgICAgIGxldCByID0gXCJcIjtcclxuICAgICAgICBhdHRyRHRsLmZvckVhY2goYXR0ID0+IHtcclxuICAgICAgICAgIHIgKz0gcGt0ZHRsW2F0dF0gKyAnLCc7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgciA9IHIuc2xpY2UoMCwgLTEpO1xyXG4gICAgICAgIENTViArPSByICsgJ1xcclxcbic7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgaWYgKENTViA9PSAnJykge1xyXG4gICAgICBhbGVydChcIkludmFsaWQgZGF0YVwiKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBjb25zb2xlLmxvZyhcImFyckRhdGFcIiwgYXJyRGF0YSk7XHJcbiAgICBsZXQgZmlsZU5hbWUgPSBcIlJlcG9ydF9cIjtcclxuICAgIGZpbGVOYW1lICs9IFJlcG9ydFRpdGxlLnJlcGxhY2UoLyAvZywgXCJfXCIpICsgXCIuY3N2XCI7XHJcbiAgICB2YXIgYmxvYiA9IG5ldyBCbG9iKFtDU1ZdLCB7XHJcbiAgICAgIHR5cGU6IFwiYXBwbGljYXRpb24vY3N2O2NoYXJzZXQ9dXRmLTg7XCJcclxuICAgIH0pO1xyXG5cclxuICAgIHZhciBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImFcIik7XHJcbiAgICB2YXIgY3N2VXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcclxuICAgIGxpbmsuaHJlZiA9IGNzdlVybDtcclxuICAgIGxpbmsuZG93bmxvYWQgPSBmaWxlTmFtZTtcclxuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobGluayk7XHJcbiAgICBsaW5rLmNsaWNrKCk7XHJcbiAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGxpbmspO1xyXG5cclxuICB9XHJcblxyXG5cclxuICBtb2RpZnlEYXRhQnlIZWFkZXIoc2VhcmNoUmVzdWx0RHRsLCByZXN1bHRWaWV3LCByZXN1bHRWaWV3RHRsKSB7XHJcbiAgICBsZXQgb2JqID0ge31cclxuICAgIGxldCBtb2RpZmllZE9iakFyciA9IFtdO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzZWFyY2hSZXN1bHREdGwubGVuZ3RoOyBpKyspIHtcclxuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCByZXN1bHRWaWV3Lmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgbGV0IHZhbHMgPSBzZWFyY2hSZXN1bHREdGxbaV1bcmVzdWx0Vmlld1tqXV07XHJcbiAgICAgICAgb2JqW3Jlc3VsdFZpZXdEdGxbcmVzdWx0Vmlld1tqXV1dID0gdmFscztcclxuICAgICAgfVxyXG4gICAgICBtb2RpZmllZE9iakFyci5wdXNoKG9iaik7XHJcbiAgICAgIG9iaiA9IHt9O1xyXG4gICAgfVxyXG4gICAgY29uc29sZS5sb2cobW9kaWZpZWRPYmpBcnIpO1xyXG4gICAgcmV0dXJuIG1vZGlmaWVkT2JqQXJyO1xyXG4gIH1cclxuXHJcbiAgbW9kaWZ5R3JwRGF0YUJ5SGVhZGVyKHNlYXJjaFJlc3VsdER0bCwgcmVzdWx0VmlldywgcmVzdWx0Vmlld0R0bCkge1xyXG4gICAgbGV0IG9iaiA9IHt9XHJcbiAgICBsZXQgbW9kaWZpZWRPYmpBcnIgPSBbXTtcclxuICAgIGZvciAobGV0IGdycGsgaW4gc2VhcmNoUmVzdWx0RHRsKSB7XHJcbiAgICAgIHNlYXJjaFJlc3VsdER0bFtncnBrXS5mb3JFYWNoKHBrdHMgPT4ge1xyXG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgcmVzdWx0Vmlldy5sZW5ndGg7IGorKykge1xyXG4gICAgICAgICAgbGV0IHZhbHMgPSBwa3RzW3Jlc3VsdFZpZXdbal1dO1xyXG4gICAgICAgICAgb2JqW3Jlc3VsdFZpZXdEdGxbcmVzdWx0Vmlld1tqXV1dID0gdmFscztcclxuICAgICAgICB9XHJcbiAgICAgICAgbW9kaWZpZWRPYmpBcnIucHVzaChvYmopO1xyXG4gICAgICAgIG9iaiA9IHt9O1xyXG4gICAgICB9KTtcclxuICAgICAgbW9kaWZpZWRPYmpBcnIucHVzaChcImJyXCIpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG1vZGlmaWVkT2JqQXJyO1xyXG4gIH1cclxuXHJcbiAgZm9ybWF0RGF0ZShkYXRlKSB7XHJcbiAgICBsZXQgZCA9IG5ldyBEYXRlKGRhdGUpLFxyXG4gICAgICBtb250aCA9ICcnICsgKGQuZ2V0TW9udGgoKSArIDEpLFxyXG4gICAgICBkYXkgPSAnJyArIGQuZ2V0RGF0ZSgpLFxyXG4gICAgICB5ZWFyID0gZC5nZXRGdWxsWWVhcigpO1xyXG4gICAgaWYgKG1vbnRoLmxlbmd0aCA8IDIpIG1vbnRoID0gJzAnICsgbW9udGg7XHJcbiAgICBpZiAoZGF5Lmxlbmd0aCA8IDIpIGRheSA9ICcwJyArIGRheTtcclxuXHJcbiAgICByZXR1cm4gW2RheSwgbW9udGgsIHllYXJdLmpvaW4oJy0nKTtcclxuICB9XHJcblxyXG4gIGZvcm1hdERhdGVTQyhkYXRlKSB7XHJcbiAgICBcclxuICAgIGxldCBkID0gbmV3IERhdGUoZGF0ZSksXHJcbiAgICAgIG1vbnRoID0gJycgKyAoZC5nZXRNb250aCgpICsgMSksXHJcbiAgICAgIGRheSA9ICcnICsgZC5nZXREYXRlKCksXHJcbiAgICAgIHllYXIgPSBkLmdldEZ1bGxZZWFyKCk7XHJcblxyXG4gICAgaWYgKG1vbnRoLmxlbmd0aCA8IDIpIG1vbnRoID0gJzAnICsgbW9udGg7XHJcbiAgICBpZiAoZGF5Lmxlbmd0aCA8IDIpIGRheSA9ICcwJyArIGRheTtcclxuXHJcbiAgICByZXR1cm4gW3llYXIsIG1vbnRoLCBkYXldLmpvaW4oJy0nKTtcclxuICB9XHJcblxyXG4gIGRkTU1ZWVlZKGRhdGUpIHtcclxuICAgIGxldCBkID0gbmV3IERhdGUoZGF0ZSksXHJcbiAgICAgIG1vbnRoID0gJycgKyAoZC5nZXRNb250aCgpICsgMSksXHJcbiAgICAgIGRheSA9ICcnICsgZC5nZXREYXRlKCksXHJcbiAgICAgIHllYXIgPSBkLmdldEZ1bGxZZWFyKCk7XHJcblxyXG4gICAgaWYgKG1vbnRoLmxlbmd0aCA8IDIpIG1vbnRoID0gJzAnICsgbW9udGg7XHJcbiAgICBpZiAoZGF5Lmxlbmd0aCA8IDIpIGRheSA9ICcwJyArIGRheTtcclxuXHJcbiAgICByZXR1cm4gW2RheSwgbW9udGgsIHllYXJdLmpvaW4oJy0nKTtcclxuICB9XHJcbiBcclxuICBGb3JtYXREYXRlKGRhdGUsZm9ybWF0KXtcclxuICAgIGxldCBkID0gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0oZGF0ZSwgZm9ybWF0KTtcclxuICAgIHJldHVybiBkO1xyXG4gIH1cclxuXHJcbiAgZGRNTVlZWVludW0oZGF0ZSkge1xyXG4gICAgbGV0IGQgPSBuZXcgRGF0ZShkYXRlKSxcclxuICAgICAgbW9udGggPSAnJyArIChkLmdldE1vbnRoKCkgKyAxKSxcclxuICAgICAgZGF5ID0gJycgKyBkLmdldERhdGUoKSxcclxuICAgICAgeWVhciA9IGQuZ2V0RnVsbFllYXIoKTtcclxuZGVidWdnZXJcclxuICAgIGlmIChtb250aC5sZW5ndGggPCAyKSBtb250aCA9ICcwJyArIG1vbnRoO1xyXG4gICAgaWYgKGRheS5sZW5ndGggPCAyKSBkYXkgPSAnMCcgKyBkYXk7XHJcblxyXG4gICAgcmV0dXJuIHllYXIrbW9udGgrZGF5O1xyXG4gIH1cclxuXHJcbiAgZm9ybWF0RGF0ZVNDTW9udGhCZWZvcmUoZGF0ZSkge1xyXG4gICAgaWYoZGF0ZSE9dW5kZWZpbmVkICYmIGRhdGUhPVwiXCIpe1xyXG5cclxuICAgIGxldCBkID0gbmV3IERhdGUoZGF0ZSksXHJcbiAgICAgIG1vbnRoID0gJycgKyAoZC5nZXRNb250aCgpKSxcclxuICAgICAgZGF5ID0gJycgKyBkLmdldERhdGUoKSxcclxuICAgICAgeWVhciA9IGQuZ2V0RnVsbFllYXIoKTtcclxuICAgIGQuc2V0RGF0ZShkLmdldERhdGUoKSAtIDMwKTtcclxuXHJcbiAgICBpZiAobW9udGgubGVuZ3RoIDwgMikgbW9udGggPSAnMCcgKyBtb250aDtcclxuICAgIGlmIChkYXkubGVuZ3RoIDwgMikgZGF5ID0gJzAnICsgZGF5O1xyXG5cclxuICAgIHJldHVybiBbeWVhciwgbW9udGgsIGRheV0uam9pbignLScpO1xyXG4gICAgfVxyXG4gIH1cclxuICBcclxuICBudW1iZXJGbG9hdChudW1iZXIpe1xyXG4gICAgZGVidWdnZXJcclxuICAgIG51bWJlcj1udW1iZXJ8fDA7XHJcbiAgICByZXR1cm4gcGFyc2VGbG9hdChudW1iZXIpO1xyXG5cclxuICB9XHJcbiAgXHJcbiBkYXRlVmFsaWRhdGlvbihkYXRlLGZvcm1hdGUpe1xyXG4gICBkZWJ1Z2dlcjtcclxuICB2YXIgZGQ7IFxyXG4gIHZhciBtbTsgXHJcbiAgdmFyIHl5OyBcclxuICBkYXRlPWRhdGUucmVwbGFjZSgnLScsJy8nKVxyXG4gIGRhdGU9ZGF0ZS5yZXBsYWNlKCctJywnLycpXHJcbiAgdmFyIHBhcnRzID0gZGF0ZS5zcGxpdCgnLycpO1xyXG4gIFxyXG4gIGlmIChmb3JtYXRlID09ICdkZC9tbS95eScpIHtcclxuICAgIGRkID0gcGFydHNbMF07XHJcbiAgICBtbSA9IHBhcnRzWzFdO1xyXG4gICAgeXkgPSAgcGFydHNbMl07ICBcdCAgXHJcbiAgfSBlbHNlIGlmKGZvcm1hdGUgPT0gJ21tL2RkL3l5Jyl7XHJcbiAgICBtbSA9IHBhcnRzWzBdO1xyXG4gICAgZGQgPSBwYXJ0c1sxXTtcclxuICAgIHl5ID0gIHBhcnRzWzJdOyAgXHJcbiAgfWVsc2UgaWYoZm9ybWF0ZSA9PSAnZGQvTW9uL3l5Jyl7IFxyXG4gICAgZGQgPSBwYXJ0c1swXTtcclxuICAgIG1tID0gcGFydHNbMV07XHJcbiAgICB5eSA9ICBwYXJ0c1syXTsgIFxyXG4gICAgbGV0IGQgPSBuZXcgRGF0ZShkYXRlKVxyXG4gICAgbW0gPSAgKGQuZ2V0TW9udGgoKSkrMVxyXG4gICAgbW0gPW1tLnRvU3RyaW5nKCk7XHJcbiAgfVxyXG4gIFxyXG4gIGlmKG1tLmxlbmd0aCA8IDIpXHJcbiAgbW0gPSAnMCcrbW07XHJcbiAgaWYoZGQubGVuZ3RoIDwgMilcclxuICBkZCA9ICcwJytkZDtcclxuICBpZih5eS5sZW5ndGggPCA0KVxyXG4gIHl5ID0gJzIwJyt5eTtcclxuXHJcbiAgbGV0IG1taW50ID0gcGFyc2VJbnQobW0pO1xyXG5cclxuICBsZXQgZGRpbnQgPSBwYXJzZUludChkZCk7XHJcbiAgaWYoZGRpbnQgPiAzMSlcclxuICAgcmV0dXJuICdpbnZhaWxkJ1xyXG4gIGVsc2UgaWYobW1pbnQgPiAxMilcclxuICAgcmV0dXJuICdpbnZhaWxkJ1xyXG4gZWxzZVxyXG4gIHJldHVybiB5eSttbStkZDtcclxuIH1cclxuXHJcbiAgc3BsaXRUb1R3b0RlY2ltYWwoaW5wdXR2YWwpIHtcclxuICAgIGlmIChpbnB1dHZhbCAmJiBpbnB1dHZhbCAhPSBJbmZpbml0eSkge1xyXG4gICAgICByZXR1cm4gaW5wdXR2YWwudG9TdHJpbmcoKS50b1N0cmluZygpLm1hdGNoKC9eLT9cXGQrKD86XFwuXFxkezAsMn0pPy8pWzBdO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3BsaXRUb1RocmVlRGVjaW1hbChpbnB1dHZhbCkge1xyXG4gICAgaWYgKGlucHV0dmFsICYmIGlucHV0dmFsICE9IEluZmluaXR5KSB7XHJcbiAgICAgIHJldHVybiBpbnB1dHZhbC50b1N0cmluZygpLnRvU3RyaW5nKCkubWF0Y2goL14tP1xcZCsoPzpcXC5cXGR7MCwzfSk/LylbMF07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgcm91bmR2YWwoaW5wdXR2YWwpIHtcclxuICAgIGlmIChpbnB1dHZhbCkge1xyXG4gICAgICByZXR1cm4gTWF0aC5yb3VuZChpbnB1dHZhbCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByb3VuZFVwKG51bSwgcHJlY2lzaW9uKSB7XHJcbiAgICBwcmVjaXNpb24gPSBNYXRoLnBvdygxMCwgcHJlY2lzaW9uKVxyXG4gICAgcmV0dXJuIE1hdGguY2VpbChudW0gKiBwcmVjaXNpb24pIC8gcHJlY2lzaW9uXHJcbiAgfVxyXG5cclxuICBnZXRTaWduZWRVcmwoczNkZXRhaWxzLGRvY19ubWUsYnVja2V0KXtcclxuICAgIGRlYnVnZ2VyXHJcbiAgICBsZXQgdXJsUGFyYW1zID0ge1xyXG4gICAgICBCdWNrZXQ6IHMzZGV0YWlsc1tcImRvY2J1Y2tldFwiXSxcclxuICAgICAgS2V5OiBzM2RldGFpbHNbXCJkb2Nmb2xkZXJcIl0rXCIvXCIrZG9jX25tZVxyXG4gICAgfTtcclxuICAgIGJ1Y2tldC5nZXRTaWduZWRVcmwoXCJnZXRPYmplY3RcIiwgdXJsUGFyYW1zLCBmdW5jdGlvbiggZXJyLCB1cmwgKSB7XHJcbiAgICAgIHJldHVybiB1cmw7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgbnVtYmVydG9maXhlZChpbnB1dHZhbCxkZWNpbWFsKSB7XHJcbiAgICBpZiAoaW5wdXR2YWwpIHtcclxuICAgICAgICBpbnB1dHZhbD1pbnB1dHZhbC50b0ZpeGVkKGRlY2ltYWwpO1xyXG4gICAgICByZXR1cm4gaW5wdXR2YWw7XHJcbiAgICB9ZWxzZXtcclxuICAgIHJldHVybiBpbnB1dHZhbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHRydW5jYXRlKG51bWJlciwgaW5kZXggPSAyKSB7XHJcbiAgXHQvLyBjdXR0aW5nIHRoZSBudW1iZXJcclxuICAgIHJldHVybiArbnVtYmVyLnRvU3RyaW5nKCkuc2xpY2UoMCwgKG51bWJlci50b1N0cmluZygpLmluZGV4T2YoXCIuXCIpKSArIChpbmRleCArIDEpKTtcclxufVxyXG5cclxuICAgZmxvb3JGaWd1cmUoZmlndXJlLCBkZWNpbWFscykge1xyXG4gICAgbGV0IGE7XHJcbiAgICBpZihmaWd1cmUhPW51bGwgJiYgZmlndXJlIT11bmRlZmluZWQgKXtcclxuICAgIGlmIChkZWNpbWFscyA9PSAtMSlcclxuICAgICAgICByZXR1cm4gTWF0aC5mbG9vcihmaWd1cmUpO1xyXG4gICAgaWYgKGRlY2ltYWxzID09IDApXHJcbiAgICAgICAgcmV0dXJuIE1hdGgudHJ1bmMoZmlndXJlKTtcclxuICAgIGlmICghZGVjaW1hbHMpIGRlY2ltYWxzID0gMjtcclxuICAgIGxldCBkID0gTWF0aC5wb3coMTAsIGRlY2ltYWxzKTtcclxuXHJcbiAgICB2YXIgc3RyID0gZmlndXJlLnRvU3RyaW5nKCk7IFxyXG4gICAgYT0gcGFyc2VGbG9hdChzdHIpOyBcclxuICAgIGRlY2ltYWxzID0gcGFyc2VJbnQoZGVjaW1hbHMpO1xyXG4gICAgaWYoc3RyLmluZGV4T2YoXCIuXCIpICE9IC0xKXtcclxuICAgICAgICB2YXIgZmN0ciA7XHJcbiBkZWJ1Z2dlclxyXG4gICAgICAgIGlmICgoKGZpZ3VyZS50b1N0cmluZygpLnNwbGl0KFwiLlwiKVsxXSkubGVuZ3RoKSA9PSAyKSB7XHJcbiAgICAgICAgICAgIGZjdHIgPSBmaWd1cmUudG9TdHJpbmcoKS5zcGxpdChcIi5cIilbMV07XHJcbiAgICAgICAgfSAgICAgICAgXHJcbiAgICAgICAgaWYgKCgoZmlndXJlLnRvU3RyaW5nKCkuc3BsaXQoXCIuXCIpWzFdKS5sZW5ndGgpID09IDEpIHtcclxuICAgICAgICAgICAgZmN0ciA9IGZpZ3VyZS50b1N0cmluZygpLnNwbGl0KFwiLlwiKVsxXS5jb25jYXQoXCIwXCIpO1xyXG4gICAgICAgIH0gICAgICAgIFxyXG4gICAgXHJcbiAgICAgICAgaWYgKCgoZmlndXJlLnRvU3RyaW5nKCkuc3BsaXQoXCIuXCIpWzFdKS5sZW5ndGgpID4gMikge1xyXG4gICAgICAgICAgICBmY3RyID0gZmlndXJlLnRvU3RyaW5nKCkuc3BsaXQoXCIuXCIpWzFdLnN1YnN0cmluZygwLGRlY2ltYWxzKTtcclxuICAgICAgICB9ICAgICAgICBcclxuICAgIFxyXG4gICAgICAgIGEgPSBNYXRoLnRydW5jKGZpZ3VyZSkgKyBcIi5cIiArIGZjdHI7XHJcbiAgICB9ICBcclxuICAgIFxyXG59ZWxzZXtcclxuICAgIGE9ZmlndXJlO1xyXG59XHJcbiAgICByZXR1cm4gYTtcclxufVxyXG5cclxuICBzY3JvbGxUb0RpdihlbCkge1xyXG4gICAgbGV0IHggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbCk7XHJcbiAgICByZXR1cm4geC5zY3JvbGxJbnRvVmlldygpO1xyXG4gIH1cclxuXHJcbiAgZ2V0SXAoKSA6IGFueSB7XHJcbiAgICBsZXQgdXJsID0gXCJodHRwOi8vaXBpbmZvLmlvL2pzb24vXCJcclxuICAgIHJldHVybiB0aGlzLm5ld0h0dHBDbGllbnQuZ2V0KHVybClcclxuICAgICAgLnBpcGUobWFwKChyZXM6IGFueSkgPT4gcmVzKSlcclxuICB9XHJcblxyXG4gIHBhZ2VCY2sgPSAoKSA9PiB3aW5kb3cuaGlzdG9yeS5iYWNrKCk7XHJcblxyXG4gIGdldEJyb3dzZXJJbmZvKCkge1xyXG4gICAgbGV0IG5WZXIgPSBuYXZpZ2F0b3IuYXBwVmVyc2lvbjtcclxuICAgIGxldCBuQWd0ID0gbmF2aWdhdG9yLnVzZXJBZ2VudDtcclxuICAgIGxldCBicm93c2VyTmFtZSA9IG5hdmlnYXRvci5hcHBOYW1lO1xyXG4gICAgbGV0IGZ1bGxWZXJzaW9uID0gJycgKyBwYXJzZUZsb2F0KG5hdmlnYXRvci5hcHBWZXJzaW9uKTtcclxuICAgIGxldCBtYWpvclZlcnNpb24gPSBwYXJzZUludChuYXZpZ2F0b3IuYXBwVmVyc2lvbiwgMTApO1xyXG4gICAgbGV0IG5hbWVPZmZzZXQsIHZlck9mZnNldCwgaXg7XHJcblxyXG4gICAgLy8gSW4gT3BlcmEgMTUrLCB0aGUgdHJ1ZSB2ZXJzaW9uIGlzIGFmdGVyIFwiT1BSL1wiIFxyXG4gICAgaWYgKCh2ZXJPZmZzZXQgPSBuQWd0LmluZGV4T2YoXCJPUFIvXCIpKSAhPSAtMSkge1xyXG4gICAgICBicm93c2VyTmFtZSA9IFwiT3BlcmFcIjtcclxuICAgICAgZnVsbFZlcnNpb24gPSBuQWd0LnN1YnN0cmluZyh2ZXJPZmZzZXQgKyA0KTtcclxuICAgIH1cclxuICAgIC8vIEluIG9sZGVyIE9wZXJhLCB0aGUgdHJ1ZSB2ZXJzaW9uIGlzIGFmdGVyIFwiT3BlcmFcIiBvciBhZnRlciBcIlZlcnNpb25cIlxyXG4gICAgZWxzZSBpZiAoKHZlck9mZnNldCA9IG5BZ3QuaW5kZXhPZihcIk9wZXJhXCIpKSAhPSAtMSkge1xyXG4gICAgICBicm93c2VyTmFtZSA9IFwiT3BlcmFcIjtcclxuICAgICAgZnVsbFZlcnNpb24gPSBuQWd0LnN1YnN0cmluZyh2ZXJPZmZzZXQgKyA2KTtcclxuICAgICAgaWYgKCh2ZXJPZmZzZXQgPSBuQWd0LmluZGV4T2YoXCJWZXJzaW9uXCIpKSAhPSAtMSlcclxuICAgICAgICBmdWxsVmVyc2lvbiA9IG5BZ3Quc3Vic3RyaW5nKHZlck9mZnNldCArIDgpO1xyXG4gICAgfVxyXG4gICAgLy8gSW4gTVNJRSwgdGhlIHRydWUgdmVyc2lvbiBpcyBhZnRlciBcIk1TSUVcIiBpbiB1c2VyQWdlbnRcclxuICAgIGVsc2UgaWYgKCh2ZXJPZmZzZXQgPSBuQWd0LmluZGV4T2YoXCJNU0lFXCIpKSAhPSAtMSkge1xyXG4gICAgICBicm93c2VyTmFtZSA9IFwiTWljcm9zb2Z0IEludGVybmV0IEV4cGxvcmVyXCI7XHJcbiAgICAgIGZ1bGxWZXJzaW9uID0gbkFndC5zdWJzdHJpbmcodmVyT2Zmc2V0ICsgNSk7XHJcbiAgICB9XHJcbiAgICAvLyBJbiBDaHJvbWUsIHRoZSB0cnVlIHZlcnNpb24gaXMgYWZ0ZXIgXCJDaHJvbWVcIiBcclxuICAgIGVsc2UgaWYgKCh2ZXJPZmZzZXQgPSBuQWd0LmluZGV4T2YoXCJDaHJvbWVcIikpICE9IC0xKSB7XHJcbiAgICAgIGJyb3dzZXJOYW1lID0gXCJDaHJvbWVcIjtcclxuICAgICAgZnVsbFZlcnNpb24gPSBuQWd0LnN1YnN0cmluZyh2ZXJPZmZzZXQgKyA3KTtcclxuICAgIH1cclxuICAgIC8vIEluIFNhZmFyaSwgdGhlIHRydWUgdmVyc2lvbiBpcyBhZnRlciBcIlNhZmFyaVwiIG9yIGFmdGVyIFwiVmVyc2lvblwiIFxyXG4gICAgZWxzZSBpZiAoKHZlck9mZnNldCA9IG5BZ3QuaW5kZXhPZihcIlNhZmFyaVwiKSkgIT0gLTEpIHtcclxuICAgICAgYnJvd3Nlck5hbWUgPSBcIlNhZmFyaVwiO1xyXG4gICAgICBmdWxsVmVyc2lvbiA9IG5BZ3Quc3Vic3RyaW5nKHZlck9mZnNldCArIDcpO1xyXG4gICAgICBpZiAoKHZlck9mZnNldCA9IG5BZ3QuaW5kZXhPZihcIlZlcnNpb25cIikpICE9IC0xKVxyXG4gICAgICAgIGZ1bGxWZXJzaW9uID0gbkFndC5zdWJzdHJpbmcodmVyT2Zmc2V0ICsgOCk7XHJcbiAgICB9XHJcbiAgICAvLyBJbiBGaXJlZm94LCB0aGUgdHJ1ZSB2ZXJzaW9uIGlzIGFmdGVyIFwiRmlyZWZveFwiIFxyXG4gICAgZWxzZSBpZiAoKHZlck9mZnNldCA9IG5BZ3QuaW5kZXhPZihcIkZpcmVmb3hcIikpICE9IC0xKSB7XHJcbiAgICAgIGJyb3dzZXJOYW1lID0gXCJGaXJlZm94XCI7XHJcbiAgICAgIGZ1bGxWZXJzaW9uID0gbkFndC5zdWJzdHJpbmcodmVyT2Zmc2V0ICsgOCk7XHJcbiAgICB9XHJcbiAgICAvLyBJbiBtb3N0IG90aGVyIGJyb3dzZXJzLCBcIm5hbWUvdmVyc2lvblwiIGlzIGF0IHRoZSBlbmQgb2YgdXNlckFnZW50IFxyXG4gICAgZWxzZSBpZiAoKG5hbWVPZmZzZXQgPSBuQWd0Lmxhc3RJbmRleE9mKCcgJykgKyAxKSA8XHJcbiAgICAgICh2ZXJPZmZzZXQgPSBuQWd0Lmxhc3RJbmRleE9mKCcvJykpKSB7XHJcbiAgICAgIGJyb3dzZXJOYW1lID0gbkFndC5zdWJzdHJpbmcobmFtZU9mZnNldCwgdmVyT2Zmc2V0KTtcclxuICAgICAgZnVsbFZlcnNpb24gPSBuQWd0LnN1YnN0cmluZyh2ZXJPZmZzZXQgKyAxKTtcclxuICAgICAgaWYgKGJyb3dzZXJOYW1lLnRvTG93ZXJDYXNlKCkgPT0gYnJvd3Nlck5hbWUudG9VcHBlckNhc2UoKSkge1xyXG4gICAgICAgIGJyb3dzZXJOYW1lID0gbmF2aWdhdG9yLmFwcE5hbWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIHRyaW0gdGhlIGZ1bGxWZXJzaW9uIHN0cmluZyBhdCBzZW1pY29sb24vc3BhY2UgaWYgcHJlc2VudFxyXG4gICAgaWYgKChpeCA9IGZ1bGxWZXJzaW9uLmluZGV4T2YoXCI7XCIpKSAhPSAtMSlcclxuICAgICAgZnVsbFZlcnNpb24gPSBmdWxsVmVyc2lvbi5zdWJzdHJpbmcoMCwgaXgpO1xyXG4gICAgaWYgKChpeCA9IGZ1bGxWZXJzaW9uLmluZGV4T2YoXCIgXCIpKSAhPSAtMSlcclxuICAgICAgZnVsbFZlcnNpb24gPSBmdWxsVmVyc2lvbi5zdWJzdHJpbmcoMCwgaXgpO1xyXG5cclxuICAgIG1ham9yVmVyc2lvbiA9IHBhcnNlSW50KCcnICsgZnVsbFZlcnNpb24sIDEwKTtcclxuICAgIGlmIChpc05hTihtYWpvclZlcnNpb24pKSB7XHJcbiAgICAgIGZ1bGxWZXJzaW9uID0gJycgKyBwYXJzZUZsb2F0KG5hdmlnYXRvci5hcHBWZXJzaW9uKTtcclxuICAgICAgbWFqb3JWZXJzaW9uID0gcGFyc2VJbnQobmF2aWdhdG9yLmFwcFZlcnNpb24sIDEwKTtcclxuICAgIH1cclxuICAgIGxldCBPYmogPSB7XHJcbiAgICAgICdicm93c2VyTmFtZSc6IGJyb3dzZXJOYW1lLFxyXG4gICAgICAndmVyc2lvbic6IGZ1bGxWZXJzaW9uLFxyXG4gICAgICAnbWFqb3JWZXJzaW9uJzogbWFqb3JWZXJzaW9uLFxyXG4gICAgICAnYXBwTmFtZSc6IG5hdmlnYXRvci5hcHBOYW1lLFxyXG4gICAgICAndXNlckFnZW50JzogbmF2aWdhdG9yLnVzZXJBZ2VudFxyXG4gICAgfVxyXG4gICAgcmV0dXJuIE9iajtcclxuICB9XHJcblxyXG4gIGVkaXRvckNvbmZpZyA9IHtcclxuICAgIFwiZWRpdGFibGVcIjogdHJ1ZSxcclxuICAgIFwic3BlbGxjaGVja1wiOiB0cnVlLFxyXG4gICAgXCJoZWlnaHRcIjogXCIxMTBweFwiLFxyXG4gICAgXCJtaW5IZWlnaHRcIjogXCIxMTBweFwiLFxyXG4gICAgXCJ3aWR0aFwiOiBcImF1dG9cIixcclxuICAgIFwibWluV2lkdGhcIjogXCIwXCIsXHJcbiAgICBcInRyYW5zbGF0ZVwiOiBcInllc1wiLFxyXG4gICAgXCJlbmFibGVUb29sYmFyXCI6IHRydWUsXHJcbiAgICBcInNob3dUb29sYmFyXCI6IHRydWUsXHJcbiAgICBcInBsYWNlaG9sZGVyXCI6IFwiRW50ZXIgdGV4dCBoZXJlLi4uXCIsXHJcbiAgICBcImltYWdlRW5kUG9pbnRcIjogXCJcIixcclxuICAgIFwidG9vbGJhclwiOiBbXHJcbiAgICAgIFtcImJvbGRcIiwgXCJpdGFsaWNcIiwgXCJ1bmRlcmxpbmVcIiwgXCJzdHJpa2VUaHJvdWdoXCIsIFwic3VwZXJzY3JpcHRcIiwgXCJzdWJzY3JpcHRcIl0sXHJcbiAgICAgIFtcImZvbnROYW1lXCIsIFwiZm9udFNpemVcIiwgXCJjb2xvclwiXSxcclxuICAgICAgW1wianVzdGlmeUxlZnRcIiwgXCJqdXN0aWZ5Q2VudGVyXCIsIFwianVzdGlmeVJpZ2h0XCIsIFwianVzdGlmeUZ1bGxcIiwgXCJpbmRlbnRcIiwgXCJvdXRkZW50XCJdLFxyXG4gICAgICBbXCJjdXRcIiwgXCJjb3B5XCIsIFwiZGVsZXRlXCIsIFwicmVtb3ZlRm9ybWF0XCIsIFwidW5kb1wiLCBcInJlZG9cIl0sXHJcbiAgICAgIFtcInBhcmFncmFwaFwiLCBcImJsb2NrcXVvdGVcIiwgXCJyZW1vdmVCbG9ja3F1b3RlXCIsIFwiaG9yaXpvbnRhbExpbmVcIiwgXCJvcmRlcmVkTGlzdFwiLCBcInVub3JkZXJlZExpc3RcIl0sXHJcbiAgICAgIFtcImxpbmtcIiwgXCJ1bmxpbmtcIiwgXCJpbWFnZVwiLCBcInZpZGVvXCJdXHJcbiAgICBdXHJcbiAgfVxyXG5cclxuICBmb3JtYXRlU3RyKHN0cikge1xyXG4gICAgc3RyID0gc3RyLnRyaW0oKTtcclxuICAgIHN0ciA9IHN0ci5yZXBsYWNlKC9bICxdKy9nLCBcIixcIik7XHJcbiAgICBzdHIgPSBzdHIucmVwbGFjZSgvXFxuL2csIFwiLFwiKTtcclxuICAgIHJldHVybiBzdHI7XHJcbiAgfVxyXG5cclxuICBzdGFydFJGSURTY2FuKGRldmljZUlkLCBmb3JtTm1lKSB7XHJcbiAgICBsZXQgbWRsayA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ21kbEtleScpKTtcclxuICAgIGxldCBjVXJsID0gdGhpcy5yb3V0ZXIudXJsO1xyXG4gICAgdGhpcy5oZWFkZXIgPSB7XHJcbiAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXHJcbiAgICAgICdtZXRob2QnOiAnc3RhcnRCYXJDb2RlUmVhZGluZycsXHJcbiAgICAgICdzb3VyY2UnOiAncXMnXHJcbiAgICB9O1xyXG4gICAgLy8gJ2NsaWVudGtleSc6IENvb2tpZS5nZXQoJ19jaycpLFxyXG4gICAgLy8gJ2xvZ2luaWQnOiBDb29raWUuZ2V0KCdfbG9naWQnKSxcclxuICAgIC8vICdtb2R1bGVrZXknOiBtZGxrW2NVcmwuc3BsaXQoJy8nKVsxXV0sXHJcbiAgICBsZXQgcmVxT2JqID0ge307XHJcbiAgICByZXFPYmpbJ2Zvcm1ObWUnXSA9IGZvcm1ObWU7XHJcbiAgICByZXFPYmpbJ2RldmljZUlkJ10gPSBkZXZpY2VJZDtcclxuICAgIC8vIGxldCBvcHRpb25zID0gKHsgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHRoaXMuaGVhZGVyKSB9KTtcclxuICAgIGxldCBvcHRpb25zID17XHJcbiAgICAgIG1ldGhvZDogJ3N0YXJ0QmFyQ29kZVJlYWRpbmcnXHJcbiAgICB9XHJcbiAgICB0aGlzLmxvYWQocmVxT2JqLCBvcHRpb25zLCAnbWFya2V0aW5nL2JhckNvZGVSZWFkZXInKS50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gJ1NVQ0NFU1MnKSB7XHJcbiAgICAgICAgdGhpcy50b2FzdHIuc3VjY2VzcygnU2NhbiBTdGFydGVkLi4uJyk7XHJcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlLnNjYW5faWRuO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIFN0b3BSRklEU2NhbihzY2FuX2lkbiwgZm9ybU5tZSkge1xyXG4gICAgbGV0IG1kbGsgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdtZGxLZXknKSk7XHJcbiAgICBsZXQgY1VybCA9IHRoaXMucm91dGVyLnVybDtcclxuICAgIHRoaXMuaGVhZGVyID0ge1xyXG4gICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxyXG4gICAgICAnbWV0aG9kJzogJ3N0b3BCYXJDb2RlUmVhZGluZycsXHJcbiAgICAgICdzb3VyY2UnOiAncXMnXHJcbiAgICB9O1xyXG4gICAgLy8gJ2NsaWVudGtleSc6IENvb2tpZS5nZXQoJ19jaycpLFxyXG4gICAgLy8gJ21vZHVsZWtleSc6IG1kbGtbY1VybC5zcGxpdCgnLycpWzFdXSxcclxuICAgIC8vICdsb2dpbmlkJzogQ29va2llLmdldCgnX2xvZ2lkJyksXHJcbiAgICBsZXQgcmVxT2JqID0ge307XHJcbiAgICByZXFPYmpbJ2Zvcm1ObWUnXSA9IGZvcm1ObWU7XHJcbiAgICByZXFPYmpbJ3NjYW5JZCddID0gc2Nhbl9pZG47XHJcbiAgICBsZXQgb3B0aW9ucyA9IHtcclxuICAgICAgbWV0aG9kOiAnc3RvcEJhckNvZGVSZWFkaW5nJ1xyXG4gICAgfVxyXG4gICAgLy8gbGV0IG9wdGlvbnMgPSAoeyBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnModGhpcy5oZWFkZXIpIH0pO1xyXG4gICAgdGhpcy5sb2FkKHJlcU9iaiwgb3B0aW9ucywgJ21hcmtldGluZy9iYXJDb2RlUmVhZGVyJykudGhlbigocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09ICdTVUNDRVNTJykge1xyXG4gICAgICAgIHRoaXMudG9hc3RyLnN1Y2Nlc3MoJ1NjYW4gU3RvcHBlZC4uLicpO1xyXG4gICAgICAgIHJldHVybiByZXNwb25zZS5zY2FuX2lkbjtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgbG9hZChyZXFPYmosIG9wdGlvbnM6IGFueSwgdXJsKSB7XHJcbiAgICAvLyBjb25zb2xlLmxvZyhoZWFkZXJzKTtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLmdsYkVudi5iYXNlVXJsICsgdXJsLCBKU09OLnN0cmluZ2lmeShyZXFPYmopLCBvcHRpb25zPXtcclxuICAgICAgcGFyYW1zOiBvcHRpb25zLFxyXG4gICAgfSlcclxuICAgICAgLnRvUHJvbWlzZSgpXHJcbiAgICAgIC50aGVuKChyZXNwb25zZSkgPT4gcmVzcG9uc2UpLmNhdGNoKGVyciA9PiB7XHJcbiAgICAgICAgZGVidWdnZXI7XHJcbiAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IoZXJyLm1lc3NhZ2UpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIGxvYWRpRmlsZShyZXFPYmosIG9wdGlvbnM6IGFueSwgdXJsKSB7XHJcbiAgICAvLyBsZXQgb3B0aW9uczogYW55ID0gKHsgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKGhlYWRlcikgO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHRoaXMuZ2xiRW52LmJhc2VVcmwgKyB1cmwsIEpTT04uc3RyaW5naWZ5KHJlcU9iaiksIG9wdGlvbnM9e1xyXG4gICAgICBwYXJhbXM6IG9wdGlvbnNcclxuICAgIH0pXHJcbiAgICAgIC50b1Byb21pc2UoKVxyXG4gICAgICAudGhlbigocmVzcG9uc2UpID0+IHJlc3BvbnNlKS5jYXRjaChlcnIgPT4ge1xyXG4gICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgIHRoaXMudG9hc3RyLmVycm9yKGVyci5tZXNzYWdlKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBcclxuICAgbnVtYmVyV2l0aENvbW1hcyh4KSB7XHJcbiAgICB2YXIgcGFydHMgPSB4LnRvU3RyaW5nKCkuc3BsaXQoXCIuXCIpO1xyXG4gICAgcGFydHNbMF0gPSBwYXJ0c1swXS5yZXBsYWNlKC9cXEIoPz0oXFxkezN9KSsoPyFcXGQpKS9nLCBcIixcIik7XHJcbiAgICByZXR1cm4gcGFydHMuam9pbihcIi5cIik7XHJcbiAgIH1cclxuXHJcbiAgICAvLyBuZXcgZnVuY3Rpb24gZm9yIGluZGlhbiBhbmQgZW5nbGlzaCBmb3JtYXQgY29tbWFzXHJcbiAgbnVtYmVyV2l0aENvbW1hc0Zvcm1hdChudW0pIHtcclxuICAgIGlmIChsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnY29tbWFGb3JtYXQnKSA9PSAnZW5nJykge1xyXG4gICAgICB2YXIgcGFydHMgPSBudW0udG9TdHJpbmcoKS5zcGxpdChcIi5cIik7XHJcbiAgICAgIHBhcnRzWzBdID0gcGFydHNbMF0ucmVwbGFjZSgvXFxCKD89KFxcZHszfSkrKD8hXFxkKSkvZywgXCIsXCIpO1xyXG4gICAgICByZXR1cm4gcGFydHMuam9pbihcIi5cIik7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdmFyIHBhcnRzID0gbnVtLnRvU3RyaW5nKCkuc3BsaXQoXCIuXCIpO1xyXG4gICAgICBsZXQgeCA9IHBhcnRzWzBdO1xyXG4gICAgICB4ID0geC5yZXBsYWNlQWxsKCcsJywgJycpOyAvL3JlbW92aW5nIHByZSBleGlzdGluZyBjb21tYXMgaWYgYW55XHJcbiAgICAgIHZhciBsYXN0VGhyZWUgPSB4LnN1YnN0cmluZyh4Lmxlbmd0aC0zKTtcclxuICAgICAgdmFyIG90aGVyTnVtYmVycyA9IHguc3Vic3RyaW5nKDAseC5sZW5ndGgtMyk7XHJcbiAgICAgIGlmKG90aGVyTnVtYmVycyAhPSAnJylcclxuICAgICAgICAgIGxhc3RUaHJlZSA9ICcsJyArIGxhc3RUaHJlZTtcclxuICAgICAgdmFyIHJlcyA9IG90aGVyTnVtYmVycy5yZXBsYWNlKC9cXEIoPz0oXFxkezJ9KSsoPyFcXGQpKS9nLCBcIixcIikgKyBsYXN0VGhyZWU7XHJcbiAgICAgIHBhcnRzWzBdID0gcmVzO1xyXG4gICAgICByZXR1cm4gcGFydHMuam9pbihcIi5cIik7XHJcbiAgICB9XHJcbn1cclxuXHJcbiAgaW5Xb3Jkc0lOUihudW0pIHtcclxuICAgIGlmICgobnVtID0gbnVtLnRvU3RyaW5nKCkpLmxlbmd0aCA+IDkpIHJldHVybiAnb3ZlcmZsb3cnO1xyXG4gICAgbGV0IG4gPSBbXTtcclxuICAgIG4gPSAoJzAwMDAwMDAwMCcgKyBudW0pLnN1YnN0cigtOSkubWF0Y2goL14oXFxkezJ9KShcXGR7Mn0pKFxcZHsyfSkoXFxkezF9KShcXGR7Mn0pJC8pO1xyXG4gICAgaWYgKCFuKSByZXR1cm47IHZhciBzdHIgPSAnJztcclxuICAgIHN0ciArPSAoblsxXSAhPSAwKSA/ICh0aGlzLmFbTnVtYmVyKG5bMV0pXSB8fCB0aGlzLmJbblsxXVswXV0gKyAnICcgKyB0aGlzLmFbblsxXVsxXV0pICsgJ2Nyb3JlICcgOiAnJztcclxuICAgIHN0ciArPSAoblsyXSAhPSAwKSA/ICh0aGlzLmFbTnVtYmVyKG5bMl0pXSB8fCB0aGlzLmJbblsyXVswXV0gKyAnICcgKyB0aGlzLmFbblsyXVsxXV0pICsgJ2xha2ggJyA6ICcnO1xyXG4gICAgc3RyICs9IChuWzNdICE9IDApID8gKHRoaXMuYVtOdW1iZXIoblszXSldIHx8IHRoaXMuYltuWzNdWzBdXSArICcgJyArIHRoaXMuYVtuWzNdWzFdXSkgKyAndGhvdXNhbmQgJyA6ICcnO1xyXG4gICAgc3RyICs9IChuWzRdICE9IDApID8gKHRoaXMuYVtOdW1iZXIobls0XSldIHx8IHRoaXMuYltuWzRdWzBdXSArICcgJyArIHRoaXMuYVtuWzRdWzFdXSkgKyAnaHVuZHJlZCAnIDogJyc7XHJcbiAgICBzdHIgKz0gKG5bNV0gIT0gMCkgPyAoKHN0ciAhPSAnJykgPyAnYW5kICcgOiAnJykgKyAodGhpcy5hW051bWJlcihuWzVdKV0gfHwgdGhpcy5iW25bNV1bMF1dICsgJyAnICsgdGhpcy5hW25bNV1bMV1dKSArICdvbmx5ICcgOiAnJztcclxuICAgIGNvbnNvbGUubG9nKHN0cik7XHJcbiAgICByZXR1cm4gc3RyO1xyXG4gIH1cclxuXHJcblxyXG4gIHJhbmRvbW51bWJlcigpIHtcclxuICAgIGxldCBudW0gPSBNYXRoLmZsb29yKChNYXRoLnJhbmRvbSgpICogMTAwMDApICsgMTAwKTtcclxuICAgIHJldHVybiBudW07XHJcbiAgfVxyXG5cclxuICB0YWdib3hTZXR0aW5nczoge1xyXG4gICAgZW5hYmxlRmlsdGVyU2VsZWN0QWxsOiBmYWxzZSxcclxuICAgIHNpbmdsZVNlbGVjdGlvbjogZmFsc2UsXHJcbiAgICB0ZXh0OiBcIlNlbGVjdCBzdGF0dXNcIixcclxuICAgIHNlbGVjdEFsbFRleHQ6ICdTZWxlY3QgQWxsJyxcclxuICAgIHVuU2VsZWN0QWxsVGV4dDogJ1VuU2VsZWN0IEFsbCcsXHJcbiAgICBlbmFibGVTZWFyY2hGaWx0ZXI6IHRydWUsXHJcbiAgICBjbGFzc2VzOiBcIm15Y2xhc3MgY3VzdG9tLWNsYXNzXCJcclxuICB9XHJcblxyXG4gICByZW1vdmVFbXB0eShvYmopIHtcclxuICAgIHJldHVybiBPYmplY3Qua2V5cyhvYmopXHJcbiAgICAgIC5maWx0ZXIoZnVuY3Rpb24gKGspIHtcclxuICAgICAgICByZXR1cm4gb2JqW2tdfHwnJyAhPSAnJztcclxuICAgICAgfSlcclxuICAgICAgLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBrKSB7XHJcbiAgICAgICAgYWNjW2tdID0gb2JqW2tdO1xyXG4gICAgICAgIHJldHVybiBhY2M7XHJcbiAgICAgIH0sIHt9KTtcclxuICB9XHJcblxyXG4gIGNvbmZpZyA9IHtcclxuICAgIGVkaXRhYmxlOiB0cnVlLFxyXG4gICAgc3BlbGxjaGVjazogdHJ1ZSxcclxuICAgIGhlaWdodDogJzE1cmVtJyxcclxuICAgIG1pbkhlaWdodDogJzVyZW0nLFxyXG4gICAgcGxhY2Vob2xkZXI6ICdFbnRlciB0ZXh0IGhlcmUuLi4nLFxyXG4gICAgdHJhbnNsYXRlOiAnbm8nLFxyXG4gICAgZGVmYXVsdFBhcmFncmFwaFNlcGFyYXRvcjogJ3AnLFxyXG4gICAgZGVmYXVsdEZvbnROYW1lOiAnQXJpYWwnLFxyXG4gICAgY3VzdG9tQ2xhc3NlczogW1xyXG4gICAgICB7XHJcbiAgICAgICAgbmFtZTogXCJxdW90ZVwiLFxyXG4gICAgICAgIGNsYXNzOiBcInF1b3RlXCIsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBuYW1lOiAncmVkVGV4dCcsXHJcbiAgICAgICAgY2xhc3M6ICdyZWRUZXh0J1xyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgbmFtZTogXCJ0aXRsZVRleHRcIixcclxuICAgICAgICBjbGFzczogXCJ0aXRsZVRleHRcIixcclxuICAgICAgICB0YWc6IFwiaDFcIixcclxuICAgICAgfSxcclxuICAgIF1cclxuICB9O1xyXG5cclxufSJdfQ==
701
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuLXNlcnZpY2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V6bGliL3NyYy9saWIvY29tbWFuLXNlcnZpY2UvY29tbWFuLXNlcnZpY2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFaEUsT0FBTyxFQUFFLE1BQU0sRUFBMEIsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDaEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUUzQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7OztBQVFyQyxNQUFNLE9BQU8sb0JBQW9CO0lBUS9CLFlBQ1MsTUFBYyxFQUNiLElBQWdCLEVBQ2hCLFdBQXdCLEVBQ3pCLE1BQXdCLEVBQ3ZCLE1BQXFCLEVBQ3JCLGNBQWlDLEVBQ2pDLFFBQWlCO1FBTmxCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDYixTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3pCLFdBQU0sR0FBTixNQUFNLENBQWtCO1FBQ3ZCLFdBQU0sR0FBTixNQUFNLENBQWU7UUFDckIsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBQ2pDLGFBQVEsR0FBUixRQUFRLENBQVM7UUFibEIsVUFBSyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFFNUIsTUFBQyxHQUFHLENBQUMsRUFBRSxFQUFF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QUFFO1lBQ2IsSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDO1lBQ2IsS0FBSyxJQUFJLEtBQUssSUFBSSxLQUFLLEVBQUU7Z0JBQ3ZCLEdBQUcsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxDQUFDO2FBQzNCO1lBQ0QsR0FBRyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdkIsR0FBRyxJQUFJLEdBQUcsR0FBRyxNQUFNLENBQUM7U0FDckI7UUFJRCxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ3hCLElBQUksR0FBRyxHQUFHLEVBQUUsRUFBRSxHQUFHLEdBQUcsRUFBRSxFQUFFLEdBQUcsR0FBRyxFQUFFLEVBQUUsR0FBRyxHQUFHLEVBQUUsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDO1lBQ3JELEdBQUcsR0FBRyxVQUFVLEdBQUcsT0FBTyxDQUFDLEdBQUcsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUM7WUFDNUUsR0FBRyxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLENBQUM7WUFDM0csR0FBRyxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLENBQUM7WUFDOUcsR0FBRyxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxD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R0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFDL0IsR0FBRyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQ3RCLElBQUksR0FBRyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDekIsSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUM7WUFBRSxLQUFLLEdBQUcsR0FBRyxHQUFHLEtBQUssQ0FBQztRQUMxQyxJQUFJLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQztZQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBRXBDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsWUFBWSxDQUFDLElBQUk7UUFFZixJQUFJLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsRUFDcEIsS0FBSyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFDL0IsR0FBRyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQ3RCLElBQUksR0FBRyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFekIsSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUM7WUFBRSxLQUFLLEdBQUcsR0FBRyxHQUFHLEtBQUssQ0FBQztRQUMxQyxJQUFJLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQztZQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBRXBDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsUUFBUSxDQUFDLElBQUk7UUFDWCxJQUFJLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsRUFDcEIsS0FBSyxHQUFHLEVBQUUsR0FBRyxD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WUFBRSxPQUFPLFVBQVUsQ0FBQztRQUN6RCxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDWCxDQUFDLEdBQUcsQ0FBQyxXQUFXLEdBQUcsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLHVDQUF1QyxDQUFDLENBQUM7UUFDbEYsSUFBSSxDQUFDLENBQUM7WUFBRSxPQUFPO1FBQUMsSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDO1FBQzdCLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUN2RyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDdEcsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQzFHLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUN6RyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNwSSxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2pCLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUdELFlBQVk7UUFDVixJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQ3BELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQVlBLFdBQVcsQ0FBQyxHQUFHO1FBQ2QsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQzthQUNwQixNQUFNLENBQUMsVUFBVSxDQUFDO1lBQ2pCLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFFLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDMUIsQ0FBQyxDQUFDO2FBQ0QsTUFBTSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7WUFDdEIsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNoQixPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNYLENBQUM7O29JQXJ2QlUsb0JBQW9CO3dJQUFwQixvQkFBb0IsY0FIbkIsTUFBTTsyRkFHUCxvQkFBb0I7a0JBSmhDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSxDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cEJhY2tlbmQsIEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEdsb2JsZUVudlNlcnZpY2UgfSBmcm9tICcuLi9nbG9ibGUvZ2xvYmxlLWVudi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29va2llIH0gZnJvbSAnbmcyLWNvb2tpZXMvbmcyLWNvb2tpZXMnO1xyXG5pbXBvcnQgeyBSb3V0ZXIsIEFjdGl2YXRlZFJvdXRlLCBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBOZ3hTcGlubmVyU2VydmljZSB9IGZyb20gXCJuZ3gtc3Bpbm5lclwiO1xyXG5pbXBvcnQgeyBUb2FzdHJTZXJ2aWNlIH0gZnJvbSAnbmd4LXRvYXN0cic7XHJcbmltcG9ydCB7IEh0dHBIZWFkZXJzICB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgRGF0ZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5cclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBDb21tYW5TZXJ2aWNlU2VydmljZSB7XHJcblxyXG4gIHJlYWRvbmx5IGNEYXRlID0gbmV3IERhdGUoKTtcclxuICBoZWFkZXI7XHJcbiAgYSA9IFsnJywgJ29uZSAnLCAndHdvICcsICd0aHJlZSAnLCAnZm91ciAnLCAnZml2ZSAnLCAnc2l4ICcsICdzZXZlbiAnLCAnZWlnaHQgJywgJ25pbmUgJywgJ3RlbiAnLCAnZWxldmVuICcsICd0d2VsdmUgJywgJ3RoaXJ0ZWVuICcsICdmb3VydGVlbiAnLCAnZmlmdGVlbiAnLCAnc2l4dGVlbiAnLCAnc2V2ZW50ZWVuICcsICdlaWdodGVlbiAnLCAnbmluZXRlZW4gJ107XHJcbiAgYiA9IFsnJywgJycsICd0d2VudHknLCAndGhpcnR5JywgJ2ZvcnR5JywgJ2ZpZnR5JywgJ3NpeHR5JywgJ3NldmVudHknLCAnZWlnaHR5JywgJ25pbmV0eSddO1xyXG5cclxuICBuZXdIdHRwQ2xpZW50OiBhbnk7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgICBwcml2YXRlIGh0dHBCYWNrZW5kOiBIdHRwQmFja2VuZCxcclxuICAgIHB1YmxpYyBnbGJFbnY6IEdsb2JsZUVudlNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHRvYXN0cjogVG9hc3RyU2VydmljZSxcclxuICAgIHByaXZhdGUgc3Bpbm5lclNlcnZpY2U6IE5neFNwaW5uZXJTZXJ2aWNlICxcclxuICAgIHByaXZhdGUgZGF0ZVBpcGU6RGF0ZVBpcGVcclxuICApIHsgXHJcbiAgICB0aGlzLm5ld0h0dHBDbGllbnQgPSBuZXcgSHR0cENsaWVudCh0aGlzLmh0dHBCYWNrZW5kKVxyXG4gIH1cclxuXHJcbiAgbG9hZExpc3QocmVxT2JqLCBvcHRpb25zOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLmdsYkVudi5iYXNlVXJsICsgJ2Rhc2hib3JkL21vZHVsZScsIEpTT04uc3RyaW5naWZ5KHJlcU9iaiksIG9wdGlvbnM9e1xyXG4gICAgICBwYXJhbXM6IG9wdGlvbnMsXHJcbiAgICB9KVxyXG4gICAgICAudG9Qcm9taXNlKClcclxuICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiByZXNwb25zZSk7XHJcbiAgfVxyXG5cclxuICBtZW51TGlzdChyZXFPYmosIG9wdGlvbnM6IGFueSkge1xyXG4gICAgSlNPTi5zdHJpbmdpZnkocmVxT2JqKTtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLmdsYkVudi5iYXNlVXJsICsgJ2xvZ2luL2xvYWRNZW51JywgSlNPTi5zdHJpbmdpZnkocmVxT2JqKSwgb3B0aW9ucz17XHJcbiAgICAgIHBhcmFtczogb3B0aW9ucyxcclxuICAgIH0pXHJcbiAgICAgIC50b1Byb21pc2UoKVxyXG4gICAgICAudGhlbigocmVzcG9uc2UpID0+IHJlc3BvbnNlKTtcclxuICB9XHJcblxyXG4gIGxvYWRtZW51TGlzdChyZXFPYmosIG9wdGlvbnM6IGFueSkge1xyXG4gICAgSlNPTi5zdHJpbmdpZnkocmVxT2JqKTtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLmdsYkVudi5iYXNlVXJsICsgJ2xvZ2luL2dldE1lbnUnLCBKU09OLnN0cmluZ2lmeShyZXFPYmopLCBvcHRpb25zPXtcclxuICAgICAgcGFyYW1zOiBvcHRpb25zLFxyXG4gICAgfSlcclxuICAgICAgLnRvUHJvbWlzZSgpXHJcbiAgICAgIC50aGVuKChyZXNwb25zZSkgPT4gcmVzcG9uc2UpO1xyXG4gIH1cclxuXHJcbiAgbG9nb3V0KHJlcU9iaiwgb3B0aW9uczogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5nbGJFbnYuYmFzZVVybCArICdsb2dpbi9hdXRoZW50aWNhdGlvbicsIEpTT04uc3RyaW5naWZ5KHJlcU9iaiksIG9wdGlvbnM9e1xyXG4gICAgICBwYXJhbXM6IG9wdGlvbnMsXHJcbiAgICB9KVxyXG4gICAgICAudG9Qcm9taXNlKClcclxuICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiByZXNwb25zZSk7XHJcbiAgfVxyXG5cclxuICBhdXRoTG9nb3V0KHJlcU9iaiwgb3B0aW9ucykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHRoaXMuZ2xiRW52LmJhc2VVcmwgKyAnbG9naW4vYXV0aExvZ291dCcsIEpTT04uc3RyaW5naWZ5KHJlcU9iaiksIG9wdGlvbnM9e1xyXG4gICAgICBwYXJhbXM6IG9wdGlvbnMsXHJcbiAgICB9KVxyXG4gICAgICAudG9Qcm9taXNlKClcclxuICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiByZXNwb25zZSk7XHJcbiAgfVxyXG5cclxuICBcclxuICBhc3luYyBnZXRWbm1zZXEocmVxT2JqLCBoZWFkZXJzKSB7XHJcbiAgICBjb25zb2xlLmxvZyhcImhlYWRlcnNcIixoZWFkZXJzKTtcclxuICAgIHJldHVybiBhd2FpdCB0aGlzLmh0dHAucG9zdCh0aGlzLmdsYkVudi5iYXNlVXJsICsgJ2FjY291bnRzL21hc3RlcmRhdGEnLCBKU09OLnN0cmluZ2lmeShyZXFPYmopLCBoZWFkZXJzKVxyXG4gICAgICAudG9Qcm9taXNlKClcclxuICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiByZXNwb25zZSk7XHJcbiAgfVxyXG5cclxuICBDU1ZDb252ZXJ0b3IoSlNPTkRhdGEsIFJlcG9ydFRpdGxlLCBTaG93TGFiZWwpIHtcclxuICAgIGxldCBhcnJEYXRhID0gdHlwZW9mIEpTT05EYXRhICE9ICdvYmplY3QnID8gSlNPTi5wYXJzZShKU09ORGF0YSkgOiBKU09ORGF0YTtcclxuICAgIGNvbnNvbGUubG9nKFwiYXJyRGF0YVwiLCBhcnJEYXRhKTtcclxuXHJcbiAgICBsZXQgQ1NWID0gJyc7XHJcbiAgICBpZiAoU2hvd0xhYmVsKSB7XHJcbiAgICAgIGxldCByb3cgPSBcIlwiO1xyXG4gICAgICBmb3IgKGxldCBpbmRleCBpbiBhcnJEYXRhWzBdKSB7XHJcbiAgICAgICAgcm93ICs9IGluZGV4ICsgJywnO1xyXG4gICAgICB9XHJcbiAgICAgIHJvdyA9IHJvdy5zbGljZSgwLCAtMSk7XHJcbiAgICAgIENTViArPSByb3cgKyAnXFxyXFxuJztcclxuICAgIH1cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyRGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgcm93ID0gXCJcIjtcclxuICAgICAgaWYgKGFyckRhdGFbaV0gIT0gJ2JyJykge1xyXG4gICAgICAgIGZvciAobGV0IGluZGV4IGluIGFyckRhdGFbaV0pIHtcclxuICAgICAgICAgIHJvdyArPSAnXCInICsgYXJyRGF0YVtpXVtpbmRleF0gKyAnXCIsJztcclxuICAgICAgICB9XHJcbiAgICAgICAgcm93LnNsaWNlKDAsIHJvdy5sZW5ndGggLSAxKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgQ1NWICs9IHJvdyArICdcXHJcXG4nO1xyXG4gICAgfVxyXG4gICAgaWYgKENTViA9PSAnJykge1xyXG4gICAgICBhbGVydChcIkludmFsaWQgZGF0YVwiKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgLy8gY29uc29sZS5sb2coXCJhcnJEYXRhXCIsIGFyckRhdGEpO1xyXG4gICAgbGV0IGZpbGVOYW1lID0gXCJSZXBvcnRfXCI7XHJcbiAgICBsZXQgY1RpbWUgPSBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCkuc3Vic3RyaW5nKDAsIDE5KTtcclxuICAgIGZpbGVOYW1lICs9IFJlcG9ydFRpdGxlLnJlcGxhY2UoLyAvZywgXCJfXCIpICsgY1RpbWUgKyBcIi5jc3ZcIjtcclxuICAgIHZhciBibG9iID0gbmV3IEJsb2IoW0NTVl0sIHtcclxuICAgICAgdHlwZTogXCJhcHBsaWNhdGlvbi9jc3Y7Y2hhcnNldD11dGYtODtcIlxyXG4gICAgfSk7XHJcblxyXG4gICAgdmFyIGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiYVwiKTtcclxuICAgIHZhciBjc3ZVcmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xyXG4gICAgbGluay5ocmVmID0gY3N2VXJsO1xyXG4gICAgbGluay5kb3dubG9hZCA9IGZpbGVOYW1lO1xyXG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsaW5rKTtcclxuICAgIGxpbmsuY2xpY2soKTtcclxuICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobGluayk7XHJcbiAgICAvL2xldCB1cmkgPSAnZGF0YTp0ZXh0L2NzdjtjaGFyc2V0PXV0Zi04LCcgKyBlc2NhcGUoQ1NWKTtcclxuICAgIC8vIGxldCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImFcIik7XHJcbiAgICAvL2xpbmsuaHJlZiA9IHVyaTtcclxuICAgIC8vIGxpbmsuc3R5bGUgPSBcInZpc2liaWxpdHk6aGlkZGVuXCI7XHJcbiAgICAvLyBsaW5rLmRvd25sb2FkID0gZmlsZU5hbWUgKyBcIi5jc3ZcIjtcclxuICAgIC8vICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmspO1xyXG4gICAgLy8gbGluay5jbGljaygpO1xyXG4gICAgLy8gZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChsaW5rKTtcclxuICB9XHJcblxyXG4gIENPbXBhcmlzaW9uQ1NWQ29udmVydG9yKEhlYWRlcnMsIEhkckR0bCwgSlNPTkRhdGEsIFJlcG9ydFRpdGxlLCBTaG93TGFiZWwpIHtcclxuICAgIGxldCBhcnJEYXRhID0gdHlwZW9mIEpTT05EYXRhICE9ICdvYmplY3QnID8gSlNPTi5wYXJzZShKU09ORGF0YSkgOiBKU09ORGF0YTtcclxuICAgIGxldCBDU1YgPSAnJztcclxuICAgIGlmIChTaG93TGFiZWwpIHtcclxuICAgICAgbGV0IHJvdyA9IFwiXCI7XHJcbiAgICAgIHJvdyArPSAnU3InICsgJywnO1xyXG4gICAgICByb3cgKz0gJ0VtcGxveWVlJyArICcsJztcclxuICAgICAgcm93ICs9ICdUcmFucyBJZCcgKyAnLCc7XHJcbiAgICAgIHJvdyArPSAnUHJvY2VzcyBOYW1lJyArICcsJztcclxuICAgICAgcm93ICs9ICdTdGF0dXMnICsgJywnO1xyXG4gICAgICByb3cgKz0gJ1BhY2tldCBDb2RlJyArICcsJztcclxuICAgICAgcm93ICs9ICdEYXRlJyArICcsJztcclxuXHJcbiAgICAgIEhlYWRlcnMuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICByb3cgKz0gSGRyRHRsW2VsZW1lbnRdICsgJywnO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHJvdyA9IHJvdy5zbGljZSgwLCAtMSk7XHJcbiAgICAgIENTViArPSByb3cgKyAnXFxyXFxuJztcclxuICAgIH1cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyRGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgcm93ID0gXCJcIjtcclxuXHJcbiAgICAgIHJvdyArPSAnXCInICsgYXJyRGF0YVtpXVsnc3InXSArICdcIiwnO1xyXG4gICAgICByb3cgKz0gJ1wiJyArIGFyckRhdGFbaV1bJ2VtcGxveWVlJ10gKyAnXCIsJztcclxuICAgICAgcm93ICs9ICdcIicgKyBhcnJEYXRhW2ldWyd0cmFuc2FjdGlvbl9xY19pZG4nXSArICdcIiwnO1xyXG4gICAgICByb3cgKz0gJ1wiJyArIGFyckRhdGFbaV1bJ3Byb2Nlc3NObWUnXSArICdcIiwnO1xyXG4gICAgICByb3cgKz0gJ1wiJyArIGFyckRhdGFbaV1bJ3N0YXR1cyddICsgJ1wiLCc7XHJcbiAgICAgIHJvdyArPSAnXCInICsgYXJyRGF0YVtpXVsncGt0X2NvZGUnXSArICdcIiwnO1xyXG5cclxuICAgICAgcm93ICs9ICdcIicgKyBhcnJEYXRhW2ldWydpc3N1ZV90cyddICsgJ1xcbicgKyBhcnJEYXRhW2ldWydtb2RpZmllZF90cyddICsgJ1wiLCc7XHJcblxyXG4gICAgICBIZWFkZXJzLmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgICAgbGV0IGlzc3ZhbCA9IFwiXCI7XHJcbiAgICAgICAgbGV0IHJ0dmFsID0gXCJcIjtcclxuICAgICAgICBpc3N2YWwgPSBhcnJEYXRhW2ldWydpc3N2YWwnXVtlbGVtZW50XSA9PSB1bmRlZmluZWQgPyAnJyA6IGFyckRhdGFbaV1bJ2lzc3ZhbCddW2VsZW1lbnRdO1xyXG4gICAgICAgIHJ0dmFsID0gYXJyRGF0YVtpXVsncnRudmFsJ11bZWxlbWVudF0gPT0gdW5kZWZpbmVkID8gJycgOiBhcnJEYXRhW2ldWydydG52YWwnXVtlbGVtZW50XTtcclxuICAgICAgICByb3cgKz0gJ1wiJyArIGlzc3ZhbCArICdcXG4nICsgcnR2YWwgKyAnXCIsJztcclxuICAgICAgfSk7XHJcbiAgICBcclxuICAgICAgcm93LnNsaWNlKDAsIHJvdy5sZW5ndGggLSAxKTtcclxuXHJcbiAgICAgIENTViArPSByb3cgKyAnXFxyXFxuJztcclxuICAgIH1cclxuICAgIGlmIChDU1YgPT0gJycpIHtcclxuICAgICAgYWxlcnQoXCJJbnZhbGlkIGRhdGFcIik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGxldCBmaWxlTmFtZSA9IFwiUmVwb3J0X1wiO1xyXG4gICAgbGV0IGNUaW1lID0gbmV3IERhdGUoKS50b0lTT1N0cmluZygpLnN1YnN0cmluZygwLCAxOSk7XHJcbiAgICBmaWxlTmFtZSArPSBSZXBvcnRUaXRsZS5yZXBsYWNlKC8gL2csIFwiX1wiKSArIGNUaW1lICsgXCIuY3N2XCI7XHJcbiAgICB2YXIgYmxvYiA9IG5ldyBCbG9iKFtDU1ZdLCB7XHJcbiAgICAgIHR5cGU6IFwiYXBwbGljYXRpb24vY3N2O2NoYXJzZXQ9dXRmLTg7XCJcclxuICAgIH0pO1xyXG5cclxuICAgIHZhciBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImFcIik7XHJcbiAgICB2YXIgY3N2VXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcclxuICAgIGxpbmsuaHJlZiA9IGNzdlVybDtcclxuICAgIGxpbmsuZG93bmxvYWQgPSBmaWxlTmFtZTtcclxuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobGluayk7XHJcbiAgICBsaW5rLmNsaWNrKCk7XHJcbiAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGxpbmspO1xyXG5cclxuICB9XHJcblxyXG4gIC8vVGl0bGUsIGdyb3VwU3VtbWFyeSwgYXR0ckR0bCwgYXR0ckRpc3BsYXlEdGwsIEdycExpc3QsIGZpbmFsR3JwVmFsXHJcbiAgQ1NWQ29udmVydG9yR3JwV2lzZShncm91cFN1bW1hcnksIGF0dHJEdGwsIGF0dHJEaXNwbGF5RHRsLCBHcnBMaXN0LCBmaW5hbEdycFZhbCwgUmVwb3J0VGl0bGUsIFNob3dMYWJlbCkge1xyXG5cclxuICAgIGxldCBPdmFscyA9IE9iamVjdC52YWx1ZXMoYXR0ckRpc3BsYXlEdGwpO1xyXG5cclxuICAgIGxldCBhcnJEYXRhID0gdHlwZW9mIGZpbmFsR3JwVmFsICE9ICdvYmplY3QnID8gSlNPTi5wYXJzZShmaW5hbEdycFZhbCkgOiBmaW5hbEdycFZhbDtcclxuICAgIGNvbnNvbGUubG9nKFwiYXJyRGF0YVwiLCBhcnJEYXRhKTtcclxuXHJcblxyXG4gICAgbGV0IENTViA9ICcnO1xyXG4gICAgaWYgKFNob3dMYWJlbCkge1xyXG4gICAgICBsZXQgcm93ID0gXCJcIjtcclxuICAgICAgZm9yIChsZXQgaW5kZXggaW4gT3ZhbHMpIHtcclxuICAgICAgICByb3cgKz0gT3ZhbHNbaW5kZXhdICsgJywnO1xyXG4gICAgICB9XHJcbiAgICAgIHJvdyA9IHJvdy5zbGljZSgwLCAtMSk7XHJcbiAgICAgIENTViArPSByb3cgKyAnXFxyXFxuJztcclxuICAgIH1cclxuXHJcblxyXG5cclxuICAgIEdycExpc3QuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgbGV0IGdycCA9ICcnLCBxdHkgPSAnJywgY3RzID0gJycsIHJ0ZSA9ICcnLCBhbXQgPSAnJztcclxuICAgICAgZ3JwID0gXCJHcm91cCA6IFwiICsgZWxlbWVudC5ncnAgPT0gdW5kZWZpbmVkID8gXCJcIiA6IFwiR3JvdXAgOiBcIiArIGVsZW1lbnQuZ3JwO1xyXG4gICAgICBxdHkgPSBncm91cFN1bW1hcnlbZWxlbWVudC5ncnAgKyAnX1FUWSddID09IHVuZGVmaW5lZCA/IFwiXCIgOiBcIlFUWSA6IFwiICsgZ3JvdXBTdW1tYXJ5W2VsZW1lbnQuZ3JwICsgJ19RVFknXTtcclxuICAgICAgY3RzID0gZ3JvdXBTdW1tYXJ5W2VsZW1lbnQuZ3JwICsgJ19DVFMnXSA9PSB1bmRlZmluZWQgPyBcIlwiIDogXCJDYXJhdHMgOiBcIiArIGdyb3VwU3VtbWFyeVtlbGVtZW50LmdycCArICdfQ1RTJ107XHJcbiAgICAgIHJ0ZSA9IGdyb3VwU3VtbWFyeVtlbGVtZW50LmdycCArICdfUlRFJ10gPT0gdW5kZWZpbmVkID8gXCJcIiA6IFwiUmF0ZSA6IFwiICsgZ3JvdXBTdW1tYXJ5W2VsZW1lbnQuZ3JwICsgJ19SVEUnXTtcclxuICAgICAgYW10ID0gZ3JvdXBTdW1tYXJ5W2VsZW1lbnQuZ3JwICsgJ19BTVQnXSA9PSB1bmRlZmluZWQgPyBcIlwiIDogXCJBbW91bnQgOiBcIiArIGdyb3VwU3VtbWFyeVtlbGVtZW50LmdycCArICdfQU1UJ107XHJcblxyXG5cclxuXHJcbiAgICAgIGxldCByb3cgPSBcIlwiO1xyXG4gICAgICByb3cgPSBncnAgKyBcIiAgXCIgKyBxdHkgKyBcIiAgXCIgKyBjdHMgKyBcIiAgXCIgKyBydGUgKyBcIiAgXCIgKyBhbXQ7XHJcbiAgICAgIC8vcm93ID0gXCJHcm91cCA6IFwiICsgZWxlbWVudC5ncnAgK1xyXG4gICAgICAvLyBncm91cFN1bW1hcnlbZWxlbWVudC5ncnAgKyAnX1FUWSddID09IHVuZGVmaW5lZCA/IFwiXCIgOiBcIlFUWSA6IFwiICsgZ3JvdXBTdW1tYXJ5W2VsZW1lbnQuZ3JwICsgJ19RVFknXSArXHJcbiAgICAgIC8vICAgZ3JvdXBTdW1tYXJ5W2VsZW1lbnQuZ3JwICsgJ19DVFMnXSA9PSB1bmRlZmluZWQgPyBcIlwiIDogXCJDYXJhdHMgOiBcIiArIGdyb3VwU3VtbWFyeVtlbGVtZW50LmdycCArICdfQ1RTJ10gK1xyXG4gICAgICAvLyAgICAgZ3JvdXBTdW1tYXJ5W2VsZW1lbnQuZ3JwICsgJ19SVEUnXSA9PSB1bmRlZmluZWQgPyBcIlwiIDogXCJSYXRlIDogXCIgKyBncm91cFN1bW1hcnlbZWxlbWVudC5ncnAgKyAnX1JURSddICtcclxuICAgICAgLy8gICAgICAgZ3JvdXBTdW1tYXJ5W2VsZW1lbnQuZ3JwICsgJ19BTVQnXSA9PSB1bmRlZmluZWQgPyBcIlwiIDogXCJBbW91bnQgOiBcIiArIGdyb3VwU3VtbWFyeVtlbGVtZW50LmdycCArICdfQU1UJ107XHJcbiAgICAgIENTViArPSByb3cgKyAnXFxyXFxuJztcclxuICAgICAgZmluYWxHcnBWYWxbZWxlbWVudC5ncnBdLmZvckVhY2gocGt0ZHRsID0+IHtcclxuICAgICAgICBsZXQgciA9IFwiXCI7XHJcbiAgICAgICAgYXR0ckR0bC5mb3JFYWNoKGF0dCA9PiB7XHJcbiAgICAgICAgICByICs9IHBrdGR0bFthdHRdICsgJywnO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHIgPSByLnNsaWNlKDAsIC0xKTtcclxuICAgICAgICBDU1YgKz0gciArICdcXHJcXG4nO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG5cclxuICAgIGlmIChDU1YgPT0gJycpIHtcclxuICAgICAgYWxlcnQoXCJJbnZhbGlkIGRhdGFcIik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcblxyXG4gICAgY29uc29sZS5sb2coXCJhcnJEYXRhXCIsIGFyckRhdGEpO1xyXG4gICAgbGV0IGZpbGVOYW1lID0gXCJSZXBvcnRfXCI7XHJcbiAgICBmaWxlTmFtZSArPSBSZXBvcnRUaXRsZS5yZXBsYWNlKC8gL2csIFwiX1wiKSArIFwiLmNzdlwiO1xyXG4gICAgdmFyIGJsb2IgPSBuZXcgQmxvYihbQ1NWXSwge1xyXG4gICAgICB0eXBlOiBcImFwcGxpY2F0aW9uL2NzdjtjaGFyc2V0PXV0Zi04O1wiXHJcbiAgICB9KTtcclxuXHJcbiAgICB2YXIgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJhXCIpO1xyXG4gICAgdmFyIGNzdlVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XHJcbiAgICBsaW5rLmhyZWYgPSBjc3ZVcmw7XHJcbiAgICBsaW5rLmRvd25sb2FkID0gZmlsZU5hbWU7XHJcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmspO1xyXG4gICAgbGluay5jbGljaygpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChsaW5rKTtcclxuXHJcbiAgfVxyXG5cclxuXHJcbiAgbW9kaWZ5RGF0YUJ5SGVhZGVyKHNlYXJjaFJlc3VsdER0bCwgcmVzdWx0VmlldywgcmVzdWx0Vmlld0R0bCkge1xyXG4gICAgbGV0IG9iaiA9IHt9XHJcbiAgICBsZXQgbW9kaWZpZWRPYmpBcnIgPSBbXTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2VhcmNoUmVzdWx0RHRsLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgcmVzdWx0Vmlldy5sZW5ndGg7IGorKykge1xyXG4gICAgICAgIGxldCB2YWxzID0gc2VhcmNoUmVzdWx0RHRsW2ldW3Jlc3VsdFZpZXdbal1dO1xyXG4gICAgICAgIG9ialtyZXN1bHRWaWV3RHRsW3Jlc3VsdFZpZXdbal1dXSA9IHZhbHM7XHJcbiAgICAgIH1cclxuICAgICAgbW9kaWZpZWRPYmpBcnIucHVzaChvYmopO1xyXG4gICAgICBvYmogPSB7fTtcclxuICAgIH1cclxuICAgIGNvbnNvbGUubG9nKG1vZGlmaWVkT2JqQXJyKTtcclxuICAgIHJldHVybiBtb2RpZmllZE9iakFycjtcclxuICB9XHJcblxyXG4gIG1vZGlmeUdycERhdGFCeUhlYWRlcihzZWFyY2hSZXN1bHREdGwsIHJlc3VsdFZpZXcsIHJlc3VsdFZpZXdEdGwpIHtcclxuICAgIGxldCBvYmogPSB7fVxyXG4gICAgbGV0IG1vZGlmaWVkT2JqQXJyID0gW107XHJcbiAgICBmb3IgKGxldCBncnBrIGluIHNlYXJjaFJlc3VsdER0bCkge1xyXG4gICAgICBzZWFyY2hSZXN1bHREdGxbZ3Jwa10uZm9yRWFjaChwa3RzID0+IHtcclxuICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHJlc3VsdFZpZXcubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgIGxldCB2YWxzID0gcGt0c1tyZXN1bHRWaWV3W2pdXTtcclxuICAgICAgICAgIG9ialtyZXN1bHRWaWV3RHRsW3Jlc3VsdFZpZXdbal1dXSA9IHZhbHM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIG1vZGlmaWVkT2JqQXJyLnB1c2gob2JqKTtcclxuICAgICAgICBvYmogPSB7fTtcclxuICAgICAgfSk7XHJcbiAgICAgIG1vZGlmaWVkT2JqQXJyLnB1c2goXCJiclwiKTtcclxuICAgIH1cclxuICAgIHJldHVybiBtb2RpZmllZE9iakFycjtcclxuICB9XHJcblxyXG4gIGZvcm1hdERhdGUoZGF0ZSkge1xyXG4gICAgbGV0IGQgPSBuZXcgRGF0ZShkYXRlKSxcclxuICAgICAgbW9udGggPSAnJyArIChkLmdldE1vbnRoKCkgKyAxKSxcclxuICAgICAgZGF5ID0gJycgKyBkLmdldERhdGUoKSxcclxuICAgICAgeWVhciA9IGQuZ2V0RnVsbFllYXIoKTtcclxuICAgIGlmIChtb250aC5sZW5ndGggPCAyKSBtb250aCA9ICcwJyArIG1vbnRoO1xyXG4gICAgaWYgKGRheS5sZW5ndGggPCAyKSBkYXkgPSAnMCcgKyBkYXk7XHJcblxyXG4gICAgcmV0dXJuIFtkYXksIG1vbnRoLCB5ZWFyXS5qb2luKCctJyk7XHJcbiAgfVxyXG5cclxuICBmb3JtYXREYXRlU0MoZGF0ZSkge1xyXG4gICAgXHJcbiAgICBsZXQgZCA9IG5ldyBEYXRlKGRhdGUpLFxyXG4gICAgICBtb250aCA9ICcnICsgKGQuZ2V0TW9udGgoKSArIDEpLFxyXG4gICAgICBkYXkgPSAnJyArIGQuZ2V0RGF0ZSgpLFxyXG4gICAgICB5ZWFyID0gZC5nZXRGdWxsWWVhcigpO1xyXG5cclxuICAgIGlmIChtb250aC5sZW5ndGggPCAyKSBtb250aCA9ICcwJyArIG1vbnRoO1xyXG4gICAgaWYgKGRheS5sZW5ndGggPCAyKSBkYXkgPSAnMCcgKyBkYXk7XHJcblxyXG4gICAgcmV0dXJuIFt5ZWFyLCBtb250aCwgZGF5XS5qb2luKCctJyk7XHJcbiAgfVxyXG5cclxuICBkZE1NWVlZWShkYXRlKSB7XHJcbiAgICBsZXQgZCA9IG5ldyBEYXRlKGRhdGUpLFxyXG4gICAgICBtb250aCA9ICcnICsgKGQuZ2V0TW9udGgoKSArIDEpLFxyXG4gICAgICBkYXkgPSAnJyArIGQuZ2V0RGF0ZSgpLFxyXG4gICAgICB5ZWFyID0gZC5nZXRGdWxsWWVhcigpO1xyXG5cclxuICAgIGlmIChtb250aC5sZW5ndGggPCAyKSBtb250aCA9ICcwJyArIG1vbnRoO1xyXG4gICAgaWYgKGRheS5sZW5ndGggPCAyKSBkYXkgPSAnMCcgKyBkYXk7XHJcblxyXG4gICAgcmV0dXJuIFtkYXksIG1vbnRoLCB5ZWFyXS5qb2luKCctJyk7XHJcbiAgfVxyXG4gXHJcbiAgRm9ybWF0RGF0ZShkYXRlLGZvcm1hdCl7XHJcbiAgICBsZXQgZCA9IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKGRhdGUsIGZvcm1hdCk7XHJcbiAgICByZXR1cm4gZDtcclxuICB9XHJcblxyXG4gIGRkTU1ZWVlZbnVtKGRhdGUpIHtcclxuICAgIGxldCBkID0gbmV3IERhdGUoZGF0ZSksXHJcbiAgICAgIG1vbnRoID0gJycgKyAoZC5nZXRNb250aCgpICsgMSksXHJcbiAgICAgIGRheSA9ICcnICsgZC5nZXREYXRlKCksXHJcbiAgICAgIHllYXIgPSBkLmdldEZ1bGxZZWFyKCk7XHJcbmRlYnVnZ2VyXHJcbiAgICBpZiAobW9udGgubGVuZ3RoIDwgMikgbW9udGggPSAnMCcgKyBtb250aDtcclxuICAgIGlmIChkYXkubGVuZ3RoIDwgMikgZGF5ID0gJzAnICsgZGF5O1xyXG5cclxuICAgIHJldHVybiB5ZWFyK21vbnRoK2RheTtcclxuICB9XHJcblxyXG4gIGZvcm1hdERhdGVTQ01vbnRoQmVmb3JlKGRhdGUpIHtcclxuICAgIGlmKGRhdGUhPXVuZGVmaW5lZCAmJiBkYXRlIT1cIlwiKXtcclxuXHJcbiAgICBsZXQgZCA9IG5ldyBEYXRlKGRhdGUpLFxyXG4gICAgICBtb250aCA9ICcnICsgKGQuZ2V0TW9udGgoKSksXHJcbiAgICAgIGRheSA9ICcnICsgZC5nZXREYXRlKCksXHJcbiAgICAgIHllYXIgPSBkLmdldEZ1bGxZZWFyKCk7XHJcbiAgICBkLnNldERhdGUoZC5nZXREYXRlKCkgLSAzMCk7XHJcblxyXG4gICAgaWYgKG1vbnRoLmxlbmd0aCA8IDIpIG1vbnRoID0gJzAnICsgbW9udGg7XHJcbiAgICBpZiAoZGF5Lmxlbmd0aCA8IDIpIGRheSA9ICcwJyArIGRheTtcclxuXHJcbiAgICByZXR1cm4gW3llYXIsIG1vbnRoLCBkYXldLmpvaW4oJy0nKTtcclxuICAgIH1cclxuICB9XHJcbiAgXHJcbiAgbnVtYmVyRmxvYXQobnVtYmVyKXtcclxuICAgIGRlYnVnZ2VyXHJcbiAgICBudW1iZXI9bnVtYmVyfHwwO1xyXG4gICAgcmV0dXJuIHBhcnNlRmxvYXQobnVtYmVyKTtcclxuXHJcbiAgfVxyXG4gIFxyXG4gZGF0ZVZhbGlkYXRpb24oZGF0ZSxmb3JtYXRlKXtcclxuICAgZGVidWdnZXI7XHJcbiAgdmFyIGRkOyBcclxuICB2YXIgbW07IFxyXG4gIHZhciB5eTsgXHJcbiAgZGF0ZT1kYXRlLnJlcGxhY2UoJy0nLCcvJylcclxuICBkYXRlPWRhdGUucmVwbGFjZSgnLScsJy8nKVxyXG4gIHZhciBwYXJ0cyA9IGRhdGUuc3BsaXQoJy8nKTtcclxuICBcclxuICBpZiAoZm9ybWF0ZSA9PSAnZGQvbW0veXknKSB7XHJcbiAgICBkZCA9IHBhcnRzWzBdO1xyXG4gICAgbW0gPSBwYXJ0c1sxXTtcclxuICAgIHl5ID0gIHBhcnRzWzJdOyAgXHQgIFxyXG4gIH0gZWxzZSBpZihmb3JtYXRlID09ICdtbS9kZC95eScpe1xyXG4gICAgbW0gPSBwYXJ0c1swXTtcclxuICAgIGRkID0gcGFydHNbMV07XHJcbiAgICB5eSA9ICBwYXJ0c1syXTsgIFxyXG4gIH1lbHNlIGlmKGZvcm1hdGUgPT0gJ2RkL01vbi95eScpeyBcclxuICAgIGRkID0gcGFydHNbMF07XHJcbiAgICBtbSA9IHBhcnRzWzFdO1xyXG4gICAgeXkgPSAgcGFydHNbMl07ICBcclxuICAgIGxldCBkID0gbmV3IERhdGUoZGF0ZSlcclxuICAgIG1tID0gIChkLmdldE1vbnRoKCkpKzFcclxuICAgIG1tID1tbS50b1N0cmluZygpO1xyXG4gIH1cclxuICBcclxuICBpZihtbS5sZW5ndGggPCAyKVxyXG4gIG1tID0gJzAnK21tO1xyXG4gIGlmKGRkLmxlbmd0aCA8IDIpXHJcbiAgZGQgPSAnMCcrZGQ7XHJcbiAgaWYoeXkubGVuZ3RoIDwgNClcclxuICB5eSA9ICcyMCcreXk7XHJcblxyXG4gIGxldCBtbWludCA9IHBhcnNlSW50KG1tKTtcclxuXHJcbiAgbGV0IGRkaW50ID0gcGFyc2VJbnQoZGQpO1xyXG4gIGlmKGRkaW50ID4gMzEpXHJcbiAgIHJldHVybiAnaW52YWlsZCdcclxuICBlbHNlIGlmKG1taW50ID4gMTIpXHJcbiAgIHJldHVybiAnaW52YWlsZCdcclxuIGVsc2VcclxuICByZXR1cm4geXkrbW0rZGQ7XHJcbiB9XHJcblxyXG4gIHNwbGl0VG9Ud29EZWNpbWFsKGlucHV0dmFsKSB7XHJcbiAgICBpZiAoaW5wdXR2YWwgJiYgaW5wdXR2YWwgIT0gSW5maW5pdHkpIHtcclxuICAgICAgcmV0dXJuIGlucHV0dmFsLnRvU3RyaW5nKCkudG9TdHJpbmcoKS5tYXRjaCgvXi0/XFxkKyg/OlxcLlxcZHswLDJ9KT8vKVswXTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNwbGl0VG9UaHJlZURlY2ltYWwoaW5wdXR2YWwpIHtcclxuICAgIGlmIChpbnB1dHZhbCAmJiBpbnB1dHZhbCAhPSBJbmZpbml0eSkge1xyXG4gICAgICByZXR1cm4gaW5wdXR2YWwudG9TdHJpbmcoKS50b1N0cmluZygpLm1hdGNoKC9eLT9cXGQrKD86XFwuXFxkezAsM30pPy8pWzBdO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIHJvdW5kdmFsKGlucHV0dmFsKSB7XHJcbiAgICBpZiAoaW5wdXR2YWwpIHtcclxuICAgICAgcmV0dXJuIE1hdGgucm91bmQoaW5wdXR2YWwpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcm91bmRVcChudW0sIHByZWNpc2lvbikge1xyXG4gICAgcHJlY2lzaW9uID0gTWF0aC5wb3coMTAsIHByZWNpc2lvbilcclxuICAgIHJldHVybiBNYXRoLmNlaWwobnVtICogcHJlY2lzaW9uKSAvIHByZWNpc2lvblxyXG4gIH1cclxuXHJcbiAgZ2V0U2lnbmVkVXJsKHMzZGV0YWlscyxkb2Nfbm1lLGJ1Y2tldCl7XHJcbiAgICBkZWJ1Z2dlclxyXG4gICAgbGV0IHVybFBhcmFtcyA9IHtcclxuICAgICAgQnVja2V0OiBzM2RldGFpbHNbXCJkb2NidWNrZXRcIl0sXHJcbiAgICAgIEtleTogczNkZXRhaWxzW1wiZG9jZm9sZGVyXCJdK1wiL1wiK2RvY19ubWVcclxuICAgIH07XHJcbiAgICBidWNrZXQuZ2V0U2lnbmVkVXJsKFwiZ2V0T2JqZWN0XCIsIHVybFBhcmFtcywgZnVuY3Rpb24oIGVyciwgdXJsICkge1xyXG4gICAgICByZXR1cm4gdXJsO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIG51bWJlcnRvZml4ZWQoaW5wdXR2YWwsZGVjaW1hbCkge1xyXG4gICAgaWYgKGlucHV0dmFsKSB7XHJcbiAgICAgICAgaW5wdXR2YWw9aW5wdXR2YWwudG9GaXhlZChkZWNpbWFsKTtcclxuICAgICAgcmV0dXJuIGlucHV0dmFsO1xyXG4gICAgfWVsc2V7XHJcbiAgICByZXR1cm4gaW5wdXR2YWw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB0cnVuY2F0ZShudW1iZXIsIGluZGV4ID0gMikge1xyXG4gIFx0Ly8gY3V0dGluZyB0aGUgbnVtYmVyXHJcbiAgICByZXR1cm4gK251bWJlci50b1N0cmluZygpLnNsaWNlKDAsIChudW1iZXIudG9TdHJpbmcoKS5pbmRleE9mKFwiLlwiKSkgKyAoaW5kZXggKyAxKSk7XHJcbn1cclxuXHJcbiAgIGZsb29yRmlndXJlKGZpZ3VyZSwgZGVjaW1hbHMpIHtcclxuICAgIGxldCBhO1xyXG4gICAgaWYoZmlndXJlIT1udWxsICYmIGZpZ3VyZSE9dW5kZWZpbmVkICl7XHJcbiAgICBpZiAoZGVjaW1hbHMgPT0gLTEpXHJcbiAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IoZmlndXJlKTtcclxuICAgIGlmIChkZWNpbWFscyA9PSAwKVxyXG4gICAgICAgIHJldHVybiBNYXRoLnRydW5jKGZpZ3VyZSk7XHJcbiAgICBpZiAoIWRlY2ltYWxzKSBkZWNpbWFscyA9IDI7XHJcbiAgICBsZXQgZCA9IE1hdGgucG93KDEwLCBkZWNpbWFscyk7XHJcblxyXG4gICAgdmFyIHN0ciA9IGZpZ3VyZS50b1N0cmluZygpOyBcclxuICAgIGE9IHBhcnNlRmxvYXQoc3RyKTsgXHJcbiAgICBkZWNpbWFscyA9IHBhcnNlSW50KGRlY2ltYWxzKTtcclxuICAgIGlmKHN0ci5pbmRleE9mKFwiLlwiKSAhPSAtMSl7XHJcbiAgICAgICAgdmFyIGZjdHIgO1xyXG4gZGVidWdnZXJcclxuICAgICAgICBpZiAoKChmaWd1cmUudG9TdHJpbmcoKS5zcGxpdChcIi5cIilbMV0pLmxlbmd0aCkgPT0gMikge1xyXG4gICAgICAgICAgICBmY3RyID0gZmlndXJlLnRvU3RyaW5nKCkuc3BsaXQoXCIuXCIpWzFdO1xyXG4gICAgICAgIH0gICAgICAgIFxyXG4gICAgICAgIGlmICgoKGZpZ3VyZS50b1N0cmluZygpLnNwbGl0KFwiLlwiKVsxXSkubGVuZ3RoKSA9PSAxKSB7XHJcbiAgICAgICAgICAgIGZjdHIgPSBmaWd1cmUudG9TdHJpbmcoKS5zcGxpdChcIi5cIilbMV0uY29uY2F0KFwiMFwiKTtcclxuICAgICAgICB9ICAgICAgICBcclxuICAgIFxyXG4gICAgICAgIGlmICgoKGZpZ3VyZS50b1N0cmluZygpLnNwbGl0KFwiLlwiKVsxXSkubGVuZ3RoKSA+IDIpIHtcclxuICAgICAgICAgICAgZmN0ciA9IGZpZ3VyZS50b1N0cmluZygpLnNwbGl0KFwiLlwiKVsxXS5zdWJzdHJpbmcoMCxkZWNpbWFscyk7XHJcbiAgICAgICAgfSAgICAgICAgXHJcbiAgICBcclxuICAgICAgICBhID0gTWF0aC50cnVuYyhmaWd1cmUpICsgXCIuXCIgKyBmY3RyO1xyXG4gICAgfSAgXHJcbiAgICBcclxufWVsc2V7XHJcbiAgICBhPWZpZ3VyZTtcclxufVxyXG4gICAgcmV0dXJuIGE7XHJcbn1cclxuXHJcbiAgc2Nyb2xsVG9EaXYoZWwpIHtcclxuICAgIGxldCB4ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWwpO1xyXG4gICAgcmV0dXJuIHguc2Nyb2xsSW50b1ZpZXcoKTtcclxuICB9XHJcblxyXG4gIGdldElwKCkgOiBhbnkge1xyXG4gICAgbGV0IGlwU3RhY2tBY2Nlc3NLZXkgPSBcImI2OWNjZDBkZjkzYmIwZDFlZjZiNmU1N2IxNTNmMmYyXCJcclxuICAgIGxldCB1cmwgPSBgaHR0cDovL2FwaS5pcHN0YWNrLmNvbS9jaGVjaz9hY2Nlc3Nfa2V5PSR7aXBTdGFja0FjY2Vzc0tleX1gXHJcbiAgICByZXR1cm4gdGhpcy5uZXdIdHRwQ2xpZW50LmdldCh1cmwpXHJcbiAgICAgIC5waXBlKG1hcCgocmVzOiBhbnkpID0+IHJlcykpXHJcbiAgfVxyXG5cclxuICBwYWdlQmNrID0gKCkgPT4gd2luZG93Lmhpc3RvcnkuYmFjaygpO1xyXG5cclxuICBnZXRCcm93c2VySW5mbygpIHtcclxuICAgIGxldCBuVmVyID0gbmF2aWdhdG9yLmFwcFZlcnNpb247XHJcbiAgICBsZXQgbkFndCA9IG5hdmlnYXRvci51c2VyQWdlbnQ7XHJcbiAgICBsZXQgYnJvd3Nlck5hbWUgPSBuYXZpZ2F0b3IuYXBwTmFtZTtcclxuICAgIGxldCBmdWxsVmVyc2lvbiA9ICcnICsgcGFyc2VGbG9hdChuYXZpZ2F0b3IuYXBwVmVyc2lvbik7XHJcbiAgICBsZXQgbWFqb3JWZXJzaW9uID0gcGFyc2VJbnQobmF2aWdhdG9yLmFwcFZlcnNpb24sIDEwKTtcclxuICAgIGxldCBuYW1lT2Zmc2V0LCB2ZXJPZmZzZXQsIGl4O1xyXG5cclxuICAgIC8vIEluIE9wZXJhIDE1KywgdGhlIHRydWUgdmVyc2lvbiBpcyBhZnRlciBcIk9QUi9cIiBcclxuICAgIGlmICgodmVyT2Zmc2V0ID0gbkFndC5pbmRleE9mKFwiT1BSL1wiKSkgIT0gLTEpIHtcclxuICAgICAgYnJvd3Nlck5hbWUgPSBcIk9wZXJhXCI7XHJcbiAgICAgIGZ1bGxWZXJzaW9uID0gbkFndC5zdWJzdHJpbmcodmVyT2Zmc2V0ICsgNCk7XHJcbiAgICB9XHJcbiAgICAvLyBJbiBvbGRlciBPcGVyYSwgdGhlIHRydWUgdmVyc2lvbiBpcyBhZnRlciBcIk9wZXJhXCIgb3IgYWZ0ZXIgXCJWZXJzaW9uXCJcclxuICAgIGVsc2UgaWYgKCh2ZXJPZmZzZXQgPSBuQWd0LmluZGV4T2YoXCJPcGVyYVwiKSkgIT0gLTEpIHtcclxuICAgICAgYnJvd3Nlck5hbWUgPSBcIk9wZXJhXCI7XHJcbiAgICAgIGZ1bGxWZXJzaW9uID0gbkFndC5zdWJzdHJpbmcodmVyT2Zmc2V0ICsgNik7XHJcbiAgICAgIGlmICgodmVyT2Zmc2V0ID0gbkFndC5pbmRleE9mKFwiVmVyc2lvblwiKSkgIT0gLTEpXHJcbiAgICAgICAgZnVsbFZlcnNpb24gPSBuQWd0LnN1YnN0cmluZyh2ZXJPZmZzZXQgKyA4KTtcclxuICAgIH1cclxuICAgIC8vIEluIE1TSUUsIHRoZSB0cnVlIHZlcnNpb24gaXMgYWZ0ZXIgXCJNU0lFXCIgaW4gdXNlckFnZW50XHJcbiAgICBlbHNlIGlmICgodmVyT2Zmc2V0ID0gbkFndC5pbmRleE9mKFwiTVNJRVwiKSkgIT0gLTEpIHtcclxuICAgICAgYnJvd3Nlck5hbWUgPSBcIk1pY3Jvc29mdCBJbnRlcm5ldCBFeHBsb3JlclwiO1xyXG4gICAgICBmdWxsVmVyc2lvbiA9IG5BZ3Quc3Vic3RyaW5nKHZlck9mZnNldCArIDUpO1xyXG4gICAgfVxyXG4gICAgLy8gSW4gQ2hyb21lLCB0aGUgdHJ1ZSB2ZXJzaW9uIGlzIGFmdGVyIFwiQ2hyb21lXCIgXHJcbiAgICBlbHNlIGlmICgodmVyT2Zmc2V0ID0gbkFndC5pbmRleE9mKFwiQ2hyb21lXCIpKSAhPSAtMSkge1xyXG4gICAgICBicm93c2VyTmFtZSA9IFwiQ2hyb21lXCI7XHJcbiAgICAgIGZ1bGxWZXJzaW9uID0gbkFndC5zdWJzdHJpbmcodmVyT2Zmc2V0ICsgNyk7XHJcbiAgICB9XHJcbiAgICAvLyBJbiBTYWZhcmksIHRoZSB0cnVlIHZlcnNpb24gaXMgYWZ0ZXIgXCJTYWZhcmlcIiBvciBhZnRlciBcIlZlcnNpb25cIiBcclxuICAgIGVsc2UgaWYgKCh2ZXJPZmZzZXQgPSBuQWd0LmluZGV4T2YoXCJTYWZhcmlcIikpICE9IC0xKSB7XHJcbiAgICAgIGJyb3dzZXJOYW1lID0gXCJTYWZhcmlcIjtcclxuICAgICAgZnVsbFZlcnNpb24gPSBuQWd0LnN1YnN0cmluZyh2ZXJPZmZzZXQgKyA3KTtcclxuICAgICAgaWYgKCh2ZXJPZmZzZXQgPSBuQWd0LmluZGV4T2YoXCJWZXJzaW9uXCIpKSAhPSAtMSlcclxuICAgICAgICBmdWxsVmVyc2lvbiA9IG5BZ3Quc3Vic3RyaW5nKHZlck9mZnNldCArIDgpO1xyXG4gICAgfVxyXG4gICAgLy8gSW4gRmlyZWZveCwgdGhlIHRydWUgdmVyc2lvbiBpcyBhZnRlciBcIkZpcmVmb3hcIiBcclxuICAgIGVsc2UgaWYgKCh2ZXJPZmZzZXQgPSBuQWd0LmluZGV4T2YoXCJGaXJlZm94XCIpKSAhPSAtMSkge1xyXG4gICAgICBicm93c2VyTmFtZSA9IFwiRmlyZWZveFwiO1xyXG4gICAgICBmdWxsVmVyc2lvbiA9IG5BZ3Quc3Vic3RyaW5nKHZlck9mZnNldCArIDgpO1xyXG4gICAgfVxyXG4gICAgLy8gSW4gbW9zdCBvdGhlciBicm93c2VycywgXCJuYW1lL3ZlcnNpb25cIiBpcyBhdCB0aGUgZW5kIG9mIHVzZXJBZ2VudCBcclxuICAgIGVsc2UgaWYgKChuYW1lT2Zmc2V0ID0gbkFndC5sYXN0SW5kZXhPZignICcpICsgMSkgPFxyXG4gICAgICAodmVyT2Zmc2V0ID0gbkFndC5sYXN0SW5kZXhPZignLycpKSkge1xyXG4gICAgICBicm93c2VyTmFtZSA9IG5BZ3Quc3Vic3RyaW5nKG5hbWVPZmZzZXQsIHZlck9mZnNldCk7XHJcbiAgICAgIGZ1bGxWZXJzaW9uID0gbkFndC5zdWJzdHJpbmcodmVyT2Zmc2V0ICsgMSk7XHJcbiAgICAgIGlmIChicm93c2VyTmFtZS50b0xvd2VyQ2FzZSgpID09IGJyb3dzZXJOYW1lLnRvVXBwZXJDYXNlKCkpIHtcclxuICAgICAgICBicm93c2VyTmFtZSA9IG5hdmlnYXRvci5hcHBOYW1lO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyB0cmltIHRoZSBmdWxsVmVyc2lvbiBzdHJpbmcgYXQgc2VtaWNvbG9uL3NwYWNlIGlmIHByZXNlbnRcclxuICAgIGlmICgoaXggPSBmdWxsVmVyc2lvbi5pbmRleE9mKFwiO1wiKSkgIT0gLTEpXHJcbiAgICAgIGZ1bGxWZXJzaW9uID0gZnVsbFZlcnNpb24uc3Vic3RyaW5nKDAsIGl4KTtcclxuICAgIGlmICgoaXggPSBmdWxsVmVyc2lvbi5pbmRleE9mKFwiIFwiKSkgIT0gLTEpXHJcbiAgICAgIGZ1bGxWZXJzaW9uID0gZnVsbFZlcnNpb24uc3Vic3RyaW5nKDAsIGl4KTtcclxuXHJcbiAgICBtYWpvclZlcnNpb24gPSBwYXJzZUludCgnJyArIGZ1bGxWZXJzaW9uLCAxMCk7XHJcbiAgICBpZiAoaXNOYU4obWFqb3JWZXJzaW9uKSkge1xyXG4gICAgICBmdWxsVmVyc2lvbiA9ICcnICsgcGFyc2VGbG9hdChuYXZpZ2F0b3IuYXBwVmVyc2lvbik7XHJcbiAgICAgIG1ham9yVmVyc2lvbiA9IHBhcnNlSW50KG5hdmlnYXRvci5hcHBWZXJzaW9uLCAxMCk7XHJcbiAgICB9XHJcbiAgICBsZXQgT2JqID0ge1xyXG4gICAgICAnYnJvd3Nlck5hbWUnOiBicm93c2VyTmFtZSxcclxuICAgICAgJ3ZlcnNpb24nOiBmdWxsVmVyc2lvbixcclxuICAgICAgJ21ham9yVmVyc2lvbic6IG1ham9yVmVyc2lvbixcclxuICAgICAgJ2FwcE5hbWUnOiBuYXZpZ2F0b3IuYXBwTmFtZSxcclxuICAgICAgJ3VzZXJBZ2VudCc6IG5hdmlnYXRvci51c2VyQWdlbnRcclxuICAgIH1cclxuICAgIHJldHVybiBPYmo7XHJcbiAgfVxyXG5cclxuICBlZGl0b3JDb25maWcgPSB7XHJcbiAgICBcImVkaXRhYmxlXCI6IHRydWUsXHJcbiAgICBcInNwZWxsY2hlY2tcIjogdHJ1ZSxcclxuICAgIFwiaGVpZ2h0XCI6IFwiMTEwcHhcIixcclxuICAgIFwibWluSGVpZ2h0XCI6IFwiMTEwcHhcIixcclxuICAgIFwid2lkdGhcIjogXCJhdXRvXCIsXHJcbiAgICBcIm1pbldpZHRoXCI6IFwiMFwiLFxyXG4gICAgXCJ0cmFuc2xhdGVcIjogXCJ5ZXNcIixcclxuICAgIFwiZW5hYmxlVG9vbGJhclwiOiB0cnVlLFxyXG4gICAgXCJzaG93VG9vbGJhclwiOiB0cnVlLFxyXG4gICAgXCJwbGFjZWhvbGRlclwiOiBcIkVudGVyIHRleHQgaGVyZS4uLlwiLFxyXG4gICAgXCJpbWFnZUVuZFBvaW50XCI6IFwiXCIsXHJcbiAgICBcInRvb2xiYXJcIjogW1xyXG4gICAgICBbXCJib2xkXCIsIFwiaXRhbGljXCIsIFwidW5kZXJsaW5lXCIsIFwic3RyaWtlVGhyb3VnaFwiLCBcInN1cGVyc2NyaXB0XCIsIFwic3Vic2NyaXB0XCJdLFxyXG4gICAgICBbXCJmb250TmFtZVwiLCBcImZvbnRTaXplXCIsIFwiY29sb3JcIl0sXHJcbiAgICAgIFtcImp1c3RpZnlMZWZ0XCIsIFwianVzdGlmeUNlbnRlclwiLCBcImp1c3RpZnlSaWdodFwiLCBcImp1c3RpZnlGdWxsXCIsIFwiaW5kZW50XCIsIFwib3V0ZGVudFwiXSxcclxuICAgICAgW1wiY3V0XCIsIFwiY29weVwiLCBcImRlbGV0ZVwiLCBcInJlbW92ZUZvcm1hdFwiLCBcInVuZG9cIiwgXCJyZWRvXCJdLFxyXG4gICAgICBbXCJwYXJhZ3JhcGhcIiwgXCJibG9ja3F1b3RlXCIsIFwicmVtb3ZlQmxvY2txdW90ZVwiLCBcImhvcml6b250YWxMaW5lXCIsIFwib3JkZXJlZExpc3RcIiwgXCJ1bm9yZGVyZWRMaXN0XCJdLFxyXG4gICAgICBbXCJsaW5rXCIsIFwidW5saW5rXCIsIFwiaW1hZ2VcIiwgXCJ2aWRlb1wiXVxyXG4gICAgXVxyXG4gIH1cclxuXHJcbiAgZm9ybWF0ZVN0cihzdHIpIHtcclxuICAgIHN0ciA9IHN0ci50cmltKCk7XHJcbiAgICBzdHIgPSBzdHIucmVwbGFjZSgvWyAsXSsvZywgXCIsXCIpO1xyXG4gICAgc3RyID0gc3RyLnJlcGxhY2UoL1xcbi9nLCBcIixcIik7XHJcbiAgICByZXR1cm4gc3RyO1xyXG4gIH1cclxuXHJcbiAgc3RhcnRSRklEU2NhbihkZXZpY2VJZCwgZm9ybU5tZSkge1xyXG4gICAgbGV0IG1kbGsgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdtZGxLZXknKSk7XHJcbiAgICBsZXQgY1VybCA9IHRoaXMucm91dGVyLnVybDtcclxuICAgIHRoaXMuaGVhZGVyID0ge1xyXG4gICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxyXG4gICAgICAnbWV0aG9kJzogJ3N0YXJ0QmFyQ29kZVJlYWRpbmcnLFxyXG4gICAgICAnc291cmNlJzogJ3FzJ1xyXG4gICAgfTtcclxuICAgIC8vICdjbGllbnRrZXknOiBDb29raWUuZ2V0KCdfY2snKSxcclxuICAgIC8vICdsb2dpbmlkJzogQ29va2llLmdldCgnX2xvZ2lkJyksXHJcbiAgICAvLyAnbW9kdWxla2V5JzogbWRsa1tjVXJsLnNwbGl0KCcvJylbMV1dLFxyXG4gICAgbGV0IHJlcU9iaiA9IHt9O1xyXG4gICAgcmVxT2JqWydmb3JtTm1lJ10gPSBmb3JtTm1lO1xyXG4gICAgcmVxT2JqWydkZXZpY2VJZCddID0gZGV2aWNlSWQ7XHJcbiAgICAvLyBsZXQgb3B0aW9ucyA9ICh7IGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh0aGlzLmhlYWRlcikgfSk7XHJcbiAgICBsZXQgb3B0aW9ucyA9e1xyXG4gICAgICBtZXRob2Q6ICdzdGFydEJhckNvZGVSZWFkaW5nJ1xyXG4gICAgfVxyXG4gICAgdGhpcy5sb2FkKHJlcU9iaiwgb3B0aW9ucywgJ21hcmtldGluZy9iYXJDb2RlUmVhZGVyJykudGhlbigocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09ICdTVUNDRVNTJykge1xyXG4gICAgICAgIHRoaXMudG9hc3RyLnN1Y2Nlc3MoJ1NjYW4gU3RhcnRlZC4uLicpO1xyXG4gICAgICAgIHJldHVybiByZXNwb25zZS5zY2FuX2lkbjtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBTdG9wUkZJRFNjYW4oc2Nhbl9pZG4sIGZvcm1ObWUpIHtcclxuICAgIGxldCBtZGxrID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbWRsS2V5JykpO1xyXG4gICAgbGV0IGNVcmwgPSB0aGlzLnJvdXRlci51cmw7XHJcbiAgICB0aGlzLmhlYWRlciA9IHtcclxuICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcclxuICAgICAgJ21ldGhvZCc6ICdzdG9wQmFyQ29kZVJlYWRpbmcnLFxyXG4gICAgICAnc291cmNlJzogJ3FzJ1xyXG4gICAgfTtcclxuICAgIC8vICdjbGllbnRrZXknOiBDb29raWUuZ2V0KCdfY2snKSxcclxuICAgIC8vICdtb2R1bGVrZXknOiBtZGxrW2NVcmwuc3BsaXQoJy8nKVsxXV0sXHJcbiAgICAvLyAnbG9naW5pZCc6IENvb2tpZS5nZXQoJ19sb2dpZCcpLFxyXG4gICAgbGV0IHJlcU9iaiA9IHt9O1xyXG4gICAgcmVxT2JqWydmb3JtTm1lJ10gPSBmb3JtTm1lO1xyXG4gICAgcmVxT2JqWydzY2FuSWQnXSA9IHNjYW5faWRuO1xyXG4gICAgbGV0IG9wdGlvbnMgPSB7XHJcbiAgICAgIG1ldGhvZDogJ3N0b3BCYXJDb2RlUmVhZGluZydcclxuICAgIH1cclxuICAgIC8vIGxldCBvcHRpb25zID0gKHsgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHRoaXMuaGVhZGVyKSB9KTtcclxuICAgIHRoaXMubG9hZChyZXFPYmosIG9wdGlvbnMsICdtYXJrZXRpbmcvYmFyQ29kZVJlYWRlcicpLnRoZW4oKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSAnU1VDQ0VTUycpIHtcclxuICAgICAgICB0aGlzLnRvYXN0ci5zdWNjZXNzKCdTY2FuIFN0b3BwZWQuLi4nKTtcclxuICAgICAgICByZXR1cm4gcmVzcG9uc2Uuc2Nhbl9pZG47XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG4gIGxvYWQocmVxT2JqLCBvcHRpb25zOiBhbnksIHVybCkge1xyXG4gICAgLy8gY29uc29sZS5sb2coaGVhZGVycyk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5nbGJFbnYuYmFzZVVybCArIHVybCwgSlNPTi5zdHJpbmdpZnkocmVxT2JqKSwgb3B0aW9ucz17XHJcbiAgICAgIHBhcmFtczogb3B0aW9ucyxcclxuICAgIH0pXHJcbiAgICAgIC50b1Byb21pc2UoKVxyXG4gICAgICAudGhlbigocmVzcG9uc2UpID0+IHJlc3BvbnNlKS5jYXRjaChlcnIgPT4ge1xyXG4gICAgICAgIGRlYnVnZ2VyO1xyXG4gICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgIHRoaXMudG9hc3RyLmVycm9yKGVyci5tZXNzYWdlKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBsb2FkaUZpbGUocmVxT2JqLCBvcHRpb25zOiBhbnksIHVybCkge1xyXG4gICAgLy8gbGV0IG9wdGlvbnM6IGFueSA9ICh7IGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyhoZWFkZXIpIDtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLmdsYkVudi5iYXNlVXJsICsgdXJsLCBKU09OLnN0cmluZ2lmeShyZXFPYmopLCBvcHRpb25zPXtcclxuICAgICAgcGFyYW1zOiBvcHRpb25zXHJcbiAgICB9KVxyXG4gICAgICAudG9Qcm9taXNlKClcclxuICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiByZXNwb25zZSkuY2F0Y2goZXJyID0+IHtcclxuICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihlcnIubWVzc2FnZSk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgXHJcbiAgIG51bWJlcldpdGhDb21tYXMoeCkge1xyXG4gICAgdmFyIHBhcnRzID0geC50b1N0cmluZygpLnNwbGl0KFwiLlwiKTtcclxuICAgIHBhcnRzWzBdID0gcGFydHNbMF0ucmVwbGFjZSgvXFxCKD89KFxcZHszfSkrKD8hXFxkKSkvZywgXCIsXCIpO1xyXG4gICAgcmV0dXJuIHBhcnRzLmpvaW4oXCIuXCIpO1xyXG4gICB9XHJcblxyXG4gICAgLy8gbmV3IGZ1bmN0aW9uIGZvciBpbmRpYW4gYW5kIGVuZ2xpc2ggZm9ybWF0IGNvbW1hc1xyXG4gIG51bWJlcldpdGhDb21tYXNGb3JtYXQobnVtKSB7XHJcbiAgICBpZiAobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2NvbW1hRm9ybWF0JykgPT0gJ2VuZycpIHtcclxuICAgICAgdmFyIHBhcnRzID0gbnVtLnRvU3RyaW5nKCkuc3BsaXQoXCIuXCIpO1xyXG4gICAgICBwYXJ0c1swXSA9IHBhcnRzWzBdLnJlcGxhY2UoL1xcQig/PShcXGR7M30pKyg/IVxcZCkpL2csIFwiLFwiKTtcclxuICAgICAgcmV0dXJuIHBhcnRzLmpvaW4oXCIuXCIpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHZhciBwYXJ0cyA9IG51bS50b1N0cmluZygpLnNwbGl0KFwiLlwiKTtcclxuICAgICAgbGV0IHggPSBwYXJ0c1swXTtcclxuICAgICAgeCA9IHgucmVwbGFjZUFsbCgnLCcsICcnKTsgLy9yZW1vdmluZyBwcmUgZXhpc3RpbmcgY29tbWFzIGlmIGFueVxyXG4gICAgICB2YXIgbGFzdFRocmVlID0geC5zdWJzdHJpbmcoeC5sZW5ndGgtMyk7XHJcbiAgICAgIHZhciBvdGhlck51bWJlcnMgPSB4LnN1YnN0cmluZygwLHgubGVuZ3RoLTMpO1xyXG4gICAgICBpZihvdGhlck51bWJlcnMgIT0gJycpXHJcbiAgICAgICAgICBsYXN0VGhyZWUgPSAnLCcgKyBsYXN0VGhyZWU7XHJcbiAgICAgIHZhciByZXMgPSBvdGhlck51bWJlcnMucmVwbGFjZSgvXFxCKD89KFxcZHsyfSkrKD8hXFxkKSkvZywgXCIsXCIpICsgbGFzdFRocmVlO1xyXG4gICAgICBwYXJ0c1swXSA9IHJlcztcclxuICAgICAgcmV0dXJuIHBhcnRzLmpvaW4oXCIuXCIpO1xyXG4gICAgfVxyXG59XHJcblxyXG4gIGluV29yZHNJTlIobnVtKSB7XHJcbiAgICBpZiAoKG51bSA9IG51bS50b1N0cmluZygpKS5sZW5ndGggPiA5KSByZXR1cm4gJ292ZXJmbG93JztcclxuICAgIGxldCBuID0gW107XHJcbiAgICBuID0gKCcwMDAwMDAwMDAnICsgbnVtKS5zdWJzdHIoLTkpLm1hdGNoKC9eKFxcZHsyfSkoXFxkezJ9KShcXGR7Mn0pKFxcZHsxfSkoXFxkezJ9KSQvKTtcclxuICAgIGlmICghbikgcmV0dXJuOyB2YXIgc3RyID0gJyc7XHJcbiAgICBzdHIgKz0gKG5bMV0gIT0gMCkgPyAodGhpcy5hW051bWJlcihuWzFdKV0gfHwgdGhpcy5iW25bMV1bMF1dICsgJyAnICsgdGhpcy5hW25bMV1bMV1dKSArICdjcm9yZSAnIDogJyc7XHJcbiAgICBzdHIgKz0gKG5bMl0gIT0gMCkgPyAodGhpcy5hW051bWJlcihuWzJdKV0gfHwgdGhpcy5iW25bMl1bMF1dICsgJyAnICsgdGhpcy5hW25bMl1bMV1dKSArICdsYWtoICcgOiAnJztcclxuICAgIHN0ciArPSAoblszXSAhPSAwKSA/ICh0aGlzLmFbTnVtYmVyKG5bM10pXSB8fCB0aGlzLmJbblszXVswXV0gKyAnICcgKyB0aGlzLmFbblszXVsxXV0pICsgJ3Rob3VzYW5kICcgOiAnJztcclxuICAgIHN0ciArPSAobls0XSAhPSAwKSA/ICh0aGlzLmFbTnVtYmVyKG5bNF0pXSB8fCB0aGlzLmJbbls0XVswXV0gKyAnICcgKyB0aGlzLmFbbls0XVsxXV0pICsgJ2h1bmRyZWQgJyA6ICcnO1xyXG4gICAgc3RyICs9IChuWzVdICE9IDApID8gKChzdHIgIT0gJycpID8gJ2FuZCAnIDogJycpICsgKHRoaXMuYVtOdW1iZXIobls1XSldIHx8IHRoaXMuYltuWzVdWzBdXSArICcgJyArIHRoaXMuYVtuWzVdWzFdXSkgKyAnb25seSAnIDogJyc7XHJcbiAgICBjb25zb2xlLmxvZyhzdHIpO1xyXG4gICAgcmV0dXJuIHN0cjtcclxuICB9XHJcblxyXG5cclxuICByYW5kb21udW1iZXIoKSB7XHJcbiAgICBsZXQgbnVtID0gTWF0aC5mbG9vcigoTWF0aC5yYW5kb20oKSAqIDEwMDAwKSArIDEwMCk7XHJcbiAgICByZXR1cm4gbnVtO1xyXG4gIH1cclxuXHJcbiAgdGFnYm94U2V0dGluZ3M6IHtcclxuICAgIGVuYWJsZUZpbHRlclNlbGVjdEFsbDogZmFsc2UsXHJcbiAgICBzaW5nbGVTZWxlY3Rpb246IGZhbHNlLFxyXG4gICAgdGV4dDogXCJTZWxlY3Qgc3RhdHVzXCIsXHJcbiAgICBzZWxlY3RBbGxUZXh0OiAnU2VsZWN0IEFsbCcsXHJcbiAgICB1blNlbGVjdEFsbFRleHQ6ICdVblNlbGVjdCBBbGwnLFxyXG4gICAgZW5hYmxlU2VhcmNoRmlsdGVyOiB0cnVlLFxyXG4gICAgY2xhc3NlczogXCJteWNsYXNzIGN1c3RvbS1jbGFzc1wiXHJcbiAgfVxyXG5cclxuICAgcmVtb3ZlRW1wdHkob2JqKSB7XHJcbiAgICByZXR1cm4gT2JqZWN0LmtleXMob2JqKVxyXG4gICAgICAuZmlsdGVyKGZ1bmN0aW9uIChrKSB7XHJcbiAgICAgICAgcmV0dXJuIG9ialtrXXx8JycgIT0gJyc7XHJcbiAgICAgIH0pXHJcbiAgICAgIC5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgaykge1xyXG4gICAgICAgIGFjY1trXSA9IG9ialtrXTtcclxuICAgICAgICByZXR1cm4gYWNjO1xyXG4gICAgICB9LCB7fSk7XHJcbiAgfVxyXG5cclxuICBjb25maWcgPSB7XHJcbiAgICBlZGl0YWJsZTogdHJ1ZSxcclxuICAgIHNwZWxsY2hlY2s6IHRydWUsXHJcbiAgICBoZWlnaHQ6ICcxNXJlbScsXHJcbiAgICBtaW5IZWlnaHQ6ICc1cmVtJyxcclxuICAgIHBsYWNlaG9sZGVyOiAnRW50ZXIgdGV4dCBoZXJlLi4uJyxcclxuICAgIHRyYW5zbGF0ZTogJ25vJyxcclxuICAgIGRlZmF1bHRQYXJhZ3JhcGhTZXBhcmF0b3I6ICdwJyxcclxuICAgIGRlZmF1bHRGb250TmFtZTogJ0FyaWFsJyxcclxuICAgIGN1c3RvbUNsYXNzZXM6IFtcclxuICAgICAge1xyXG4gICAgICAgIG5hbWU6IFwicXVvdGVcIixcclxuICAgICAgICBjbGFzczogXCJxdW90ZVwiLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgbmFtZTogJ3JlZFRleHQnLFxyXG4gICAgICAgIGNsYXNzOiAncmVkVGV4dCdcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIG5hbWU6IFwidGl0bGVUZXh0XCIsXHJcbiAgICAgICAgY2xhc3M6IFwidGl0bGVUZXh0XCIsXHJcbiAgICAgICAgdGFnOiBcImgxXCIsXHJcbiAgICAgIH0sXHJcbiAgICBdXHJcbiAgfTtcclxuXHJcbn0iXX0=