libey-ng-component-library 0.0.19 → 0.0.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -149,6 +149,23 @@ export class SigWebTablet {
149
149
  }
150
150
  return '';
151
151
  }
152
+ static SigWebGetVersion(prop) {
153
+ try {
154
+ var xhr = this.SigWebcreateXHR();
155
+ if (xhr) {
156
+ xhr.open('GET', this.baseUri + prop + '?noCache=' + this.generateUUID(), false);
157
+ xhr.send(null);
158
+ if (xhr.readyState == 4 && xhr.status == 200) {
159
+ return xhr.responseText;
160
+ }
161
+ }
162
+ }
163
+ catch (error) {
164
+ console.error('Error en SigWebGetVersion:', error);
165
+ return null;
166
+ }
167
+ return null;
168
+ }
152
169
  static SigWebGetProperty(prop) {
153
170
  var xhr = this.SigWebcreateXHR();
154
171
  if (xhr) {
@@ -406,7 +423,9 @@ export class SigWebTablet {
406
423
  static GetVersionString() {
407
424
  var Prop = 'Version';
408
425
  Prop = Prop;
409
- var Str = this.SigWebGetProperty(Prop);
426
+ var Str = this.SigWebGetVersion(Prop);
427
+ if (Str == null)
428
+ return Str;
410
429
  var trimStr = Str.slice(1, Str.length - 2);
411
430
  return trimStr;
412
431
  }
@@ -1420,4 +1439,4 @@ SigWebTablet.baseUri = SigWebTablet.makeUri();
1420
1439
  SigWebTablet.Count = false;
1421
1440
  SigWebTablet.SigWebFontThreshold = 155;
1422
1441
  SigWebTablet.NumPointsLastTime = 0;
1423
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2lnV2ViLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbGliZXktbmctY29tcG9uZW50LWxpYnJhcnkvc3JjL3V0aWxzL1NpZ1dlYi9TaWdXZWIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsa0JBQWtCO0FBQ2xCLE1BQU0sT0FBTyxZQUFZO0lBQ2YsTUFBTSxDQUFDLGFBQWEsQ0FBQyxHQUFXO1FBQ3RDLElBQUksTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNkLEdBQUcsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDMUI7YUFBTSxJQUFJLE1BQU0sQ0FBQyxTQUFTLEVBQUU7WUFDM0IsU0FBUyxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUNoQztJQUNILENBQUM7SUFDTyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQVU7UUFDbEMsSUFBSSxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ2QsT0FBTyxHQUFHLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ2xDO2FBQU0sSUFBSSxNQUFNLENBQUMsU0FBUyxFQUFFO1lBQzNCLE9BQU8sU0FBUyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN4QztRQUNELE9BQU8sRUFBRSxDQUFDLENBQUMsNENBQTRDO0lBQ3pELENBQUM7SUFZTyxNQUFNLENBQUMsT0FBTztRQUNwQixJQUFJLElBQUksR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDO1FBQzdCLElBQUksSUFBSSxJQUFJLE9BQU8sRUFBRTtZQUNuQixJQUFJLEdBQUcsT0FBTyxDQUFDO1NBQ2hCO1FBRUQsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDZixJQUFJLElBQUksSUFBSSxRQUFRLEVBQUU7Z0JBQ3BCLE9BQU8sSUFBSSxHQUFHLHlDQUF5QyxDQUFDO2FBQ3pEO2lCQUFNO2dCQUNMLE9BQU8sSUFBSSxHQUFHLHlDQUF5QyxDQUFDO2FBQ3pE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QUFzQixDQUFDLEdBQUcsQ0FBQyxDQUFDO2lCQUNsQztnQkFDRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzNCLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDakMsSUFBSSxVQUFVLEdBQUcsSUFBSSxJQUFJLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDL0QsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDO2dCQUNmLElBQUksR0FBRyxJQUFJLFVBQVUsSUFBSSxDQUFDLEVBQUU7b0JBQzFCLEdBQUcsR0FBRyxXQUFXLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO2lCQUN0RDtxQkFBTTtvQkFDTCxHQUFHLEdBQUcsSUFBSSxDQUFDO2lCQUNaO2dCQUVELE9BQU8sR0FBRyxDQUFDO2FBQ1o7aUJBQU07Z0JBQ0wsSUFBSSxHQUFHLEVBQUU7b0JBQ1AsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2lCQUNwQjtnQkFDRCxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ2xDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUM1QjtTQUNGO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDOztBQXQwRGMsb0JBQU8sR0FBVyxZQUFZLENBQUMsT0FBTyxFQUFFLENBQUM7QUFFekMsa0JBQUssR0FBWSxLQUFLLENBQUM7QUFJdkIsZ0NBQW1CLEdBQUcsR0FBRyxDQUFDO0FBQzFCLDhCQUFpQixHQUFHLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIFNpZ1dlYlRhYmxldC50c1xyXG5leHBvcnQgY2xhc3MgU2lnV2ViVGFibGV0IHtcclxuICBwcml2YXRlIHN0YXRpYyByZXZva2VCbG9iVVJMKHVybDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBpZiAod2luZG93LlVSTCkge1xyXG4gICAgICBVUkwucmV2b2tlT2JqZWN0VVJMKHVybCk7XHJcbiAgICB9IGVsc2UgaWYgKHdpbmRvdy53ZWJraXRVUkwpIHtcclxuICAgICAgd2Via2l0VVJMLnJldm9rZU9iamVjdFVSTCh1cmwpO1xyXG4gICAgfVxyXG4gIH1cclxuICBwcml2YXRlIHN0YXRpYyBnZXRCbG9iVVJMKGJsb2I6IEJsb2IpOiBzdHJpbmcge1xyXG4gICAgaWYgKHdpbmRvdy5VUkwpIHtcclxuICAgICAgcmV0dXJuIFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XHJcbiAgICB9IGVsc2UgaWYgKHdpbmRvdy53ZWJraXRVUkwpIHtcclxuICAgICAgcmV0dXJuIHdlYmtpdFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gJyc7IC8vIFJldG9ybmFyIHVuIHN0cmluZyB2YWPDrW8gZW4gY2FzbyBkZSBlcnJvclxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgYmFzZVVyaTogc3RyaW5nID0gU2lnV2ViVGFibGV0Lm1ha2VVcmkoKTtcclxuICBwcml2YXRlIHN0YXRpYyBjdHg7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgQ291bnQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcml2YXRlIHN0YXRpYyBFdlN0YXR1cztcclxuICBwcml2YXRlIHN0YXRpYyBvblNpZ1BlbkRvd247XHJcbiAgcHJpdmF0ZSBzdGF0aWMgb25TaWdQZW5VcDtcclxuICBwcml2YXRlIHN0YXRpYyBTaWdXZWJGb250VGhyZXNob2xkID0gMTU1O1xyXG4gIHByaXZhdGUgc3RhdGljIE51bVBvaW50c0xhc3RUaW1lID0gMDtcclxuICBwcml2YXRlIHN0YXRpYyBTaWdJbWFnZUI2NDtcclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgbWFrZVVyaSgpOiBzdHJpbmcge1xyXG4gICAgdmFyIHByb3QgPSBsb2NhdGlvbi5wcm90b2NvbDtcclxuICAgIGlmIChwcm90ID09ICdmaWxlOicpIHtcclxuICAgICAgcHJvdCA9ICdodHRwOic7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuaXNJRSgpKSB7XHJcbiAgICAgIGlmIChwcm90ID09ICdodHRwczonKSB7XHJcbiAgICAgICAgcmV0dXJuIHByb3QgKyAnLy90YWJsZXQuc2lnd2VidGFibGV0LmNvbTo0NzI5MC9TaWdXZWIvJztcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gcHJvdCArICcvL3RhYmxldC5zaWd3ZWJ0YWJsZXQuY29tOjQ3Mjg5L1NpZ1dlYi8nO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuaXNDaHJvbWUoKSkge1xyXG4gICAgICBpZiAocHJvdCA9PSAnaHR0cHM6Jykge1xyXG4gICAgICAgIHJldHVybiBwcm90ICsgJy8vdGFibGV0LnNpZ3dlYnRhYmxldC5jb206NDcyOTAvU2lnV2ViLyc7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIHByb3QgKyAnLy90YWJsZXQuc2lnd2VidGFibGV0LmNvbTo0NzI4OS9TaWdXZWIvJztcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy9GSVJFRk9YXHJcbiAgICAgIGlmIChwcm90ID09ICdodHRwczonKSB7XHJcbiAgICAgICAgcmV0dXJuIHByb3QgKyAnLy90YWJsZXQuc2lnd2VidGFibGV0LmNvbTo0NzI5MC9TaWdXZWIvJztcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gcHJvdCArICcvL3RhYmxldC5zaWd3ZWJ0YWJsZXQuY29tOjQ3Mjg5L1NpZ1dlYi8nO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBnZW5lcmF0ZVVVSUQoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiAneHh4eHh4eHgteHh4eC00eHh4LXl4eHgteHh4eHh4eHh4eHh4Jy5yZXBsYWNlKFxyXG4gICAgICAvW3h5XS9nLFxyXG4gICAgICBmdW5jdGlvbiAoYykge1xyXG4gICAgICAgIGNvbnN0IHIgPSAoTWF0aC5yYW5kb20oKSAqIDE2KSB8IDA7XHJcbiAgICAgICAgY29uc3QgdiA9IGMgPT09ICd4JyA/IHIgOiAociAmIDB4MykgfCAweDg7XHJcbiAgICAgICAgcmV0dXJuIHYudG9TdHJpbmcoMTYpO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGlzU2lnV2ViSW5zdGFsbGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XHJcbiAgICB0cnkge1xyXG4gICAgICB4aHIub3BlbihcclxuICAgICAgICAnR0VUJyxcclxuICAgICAgICBgJHt0aGlzLmJhc2VVcml9VGFibGV0U3RhdGU/bm9DYWNoZT0ke3RoaXMuZ2VuZXJhdGVVVUlEKCl9YCxcclxuICAgICAgICBmYWxzZVxyXG4gICAgICApO1xyXG4gICAgICB4aHIuc2VuZCgpO1xyXG4gICAgICByZXR1cm4geGhyLnN0YXR1cyAhPT0gNDA0ICYmIHhoci5zdGF0dXMgIT09IDA7XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKCdFcnJvciBjaGVja2luZyBTaWdXZWIgaW5zdGFsbGF0aW9uJywgZSk7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0YXRpYyBpc0lFKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgbmF2aWdhdG9yLmFwcE5hbWUgPT09ICdNaWNyb3NvZnQgSW50ZXJuZXQgRXhwbG9yZXInIHx8XHJcbiAgICAgIChuYXZpZ2F0b3IuYXBwTmFtZSA9PT0gJ05ldHNjYXBlJyAmJlxyXG4gICAgICAgIG5ldyBSZWdFeHAoJ1RyaWRlbnQvLipydjooWzAtOV17MSx9Wy4wLTldezAsfSknKS5leGVjKFxyXG4gICAgICAgICAgbmF2aWdhdG9yLnVzZXJBZ2VudFxyXG4gICAgICAgICkgIT0gbnVsbClcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgaXNDaHJvbWUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gbmF2aWdhdG9yLnVzZXJBZ2VudC5sYXN0SW5kZXhPZignQ2hyb21lLycpID4gMDtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBTaWdXZWJjcmVhdGVYSFIoKTogWE1MSHR0cFJlcXVlc3QgfCBudWxsIHtcclxuICAgIGNvbnN0IHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xyXG4gICAgaWYgKCF4aHIpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBzZSBwdWRvIGNyZWFyIFhNTEh0dHBSZXF1ZXN0Jyk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHhocjtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBTaWdXZWJTZXRQcm9wZXJ0eShwcm9wOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgeGhyOiBYTUxIdHRwUmVxdWVzdCB8IG51bGwgPSB0aGlzLlNpZ1dlYmNyZWF0ZVhIUigpO1xyXG5cclxuICAgIGlmICh4aHIpIHtcclxuICAgICAgeGhyLm9wZW4oJ1BPU1QnLCB0aGlzLmJhc2VVcmkgKyBwcm9wLCB0cnVlKTtcclxuICAgICAgeGhyLnNlbmQobnVsbCk7XHJcbiAgICAgIGlmICh4aHIucmVhZHlTdGF0ZSA9PT0gNCAmJiB4aHIuc3RhdHVzID09PSAyMDApIHtcclxuICAgICAgICByZXR1cm4geGhyLnJlc3BvbnNlVGV4dDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuICcnO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIFNpZ1dlYlNldFByb3BlcnR5U3luYyhwcm9wOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgeGhyOiBYTUxIdHRwUmVxdWVzdCB8IG51bGwgPSB0aGlzLlNpZ1dlYmNyZWF0ZVhIUigpO1xyXG5cclxuICAgIGlmICh4aHIpIHtcclxuICAgICAgeGhyLm9wZW4oJ1BPU1QnLCB0aGlzLmJhc2VVcmkgKyBwcm9wLCBmYWxzZSk7XHJcbiAgICAgIHhoci5zZW5kKCk7XHJcbiAgICAgIGlmICh4aHIucmVhZHlTdGF0ZSA9PT0gNCAmJiB4aHIuc3RhdHVzID09PSAyMDApIHtcclxuICAgICAgICByZXR1cm4geGhyLnJlc3BvbnNlVGV4dDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuICcnO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIFNpZ1dlYlNldFN0cmVhbVByb3BlcnR5KHByb3A6IHN0cmluZywgc3RybTogYW55KTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHhocjogWE1MSHR0cFJlcXVlc3QgfCBudWxsID0gdGhpcy5TaWdXZWJjcmVhdGVYSFIoKTtcclxuXHJcbiAgICBpZiAoeGhyKSB7XHJcbiAgICAgIHhoci5vcGVuKCdQT1NUJywgdGhpcy5iYXNlVXJpICsgcHJvcCk7XHJcbiAgICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAndGV4dC9wbGFpbicpO1xyXG4gICAgICB4aHIuc2VuZChzdHJtKTtcclxuICAgIH1cclxuICAgIHJldHVybiAnJztcclxuICB9XHJcblxyXG4gIHN0YXRpYyBTaWdXZWJTeW5jU2V0U3RyZWFtUHJvcGVydHkocHJvcDogc3RyaW5nLCBzdHJtOiBhbnkpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgeGhyOiBYTUxIdHRwUmVxdWVzdCB8IG51bGwgPSB0aGlzLlNpZ1dlYmNyZWF0ZVhIUigpO1xyXG5cclxuICAgIGlmICh4aHIpIHtcclxuICAgICAgeGhyLm9wZW4oJ1BPU1QnLCB0aGlzLmJhc2VVcmkgKyBwcm9wLCBmYWxzZSk7XHJcbiAgICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAndGV4dC9wbGFpbicpO1xyXG4gICAgICB4aHIuc2VuZChzdHJtKTtcclxuICAgICAgaWYgKHhoci5yZWFkeVN0YXRlID09PSA0ICYmIHhoci5zdGF0dXMgPT09IDIwMCkge1xyXG4gICAgICAgIHJldHVybiB4aHIucmVzcG9uc2VUZXh0O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gJyc7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgU2lnV2ViU2V0SW1hZ2VTdHJlYW1Qcm9wZXJ0eShwcm9wOiBzdHJpbmcsIHN0cm06IGFueSk6IHN0cmluZyB7XHJcbiAgICBjb25zdCB4aHI6IFhNTEh0dHBSZXF1ZXN0IHwgbnVsbCA9IHRoaXMuU2lnV2ViY3JlYXRlWEhSKCk7XHJcblxyXG4gICAgaWYgKHhocikge1xyXG4gICAgICB4aHIub3BlbignUE9TVCcsIHRoaXMuYmFzZVVyaSArIHByb3AsIGZhbHNlKTtcclxuICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdpbWFnZS9wbmcnKTtcclxuICAgICAgeGhyLnNlbmQoc3RybSk7XHJcbiAgICAgIGlmICh4aHIucmVhZHlTdGF0ZSA9PT0gNCAmJiB4aHIuc3RhdHVzID09PSAyMDApIHtcclxuICAgICAgICByZXR1cm4geGhyLnJlc3BvbnNlVGV4dDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuICcnO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIFNpZ1dlYlNldEltYWdlQmxvYlByb3BlcnR5KHByb3AsIHN0cm0pIHtcclxuICAgIHZhciB4aHIgPSB0aGlzLlNpZ1dlYmNyZWF0ZVhIUigpO1xyXG4gICAgaWYgKHhocikge1xyXG4gICAgICB4aHIub3BlbignUE9TVCcsIHRoaXMuYmFzZVVyaSArIHByb3AsIGZhbHNlKTtcclxuICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdibG9iJyk7XHJcbiAgICAgIHhoci5zZW5kKHN0cm0pO1xyXG4gICAgICBpZiAoeGhyLnJlYWR5U3RhdGUgPT0gNCAmJiB4aHIuc3RhdHVzID09IDIwMCkge1xyXG4gICAgICAgIHJldHVybiB4aHIucmVzcG9uc2VUZXh0O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gJyc7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgU2lnV2ViR2V0UHJvcGVydHkocHJvcCkge1xyXG4gICAgdmFyIHhociA9IHRoaXMuU2lnV2ViY3JlYXRlWEhSKCk7XHJcblxyXG4gICAgaWYgKHhocikge1xyXG4gICAgICB4aHIub3BlbihcclxuICAgICAgICAnR0VUJyxcclxuICAgICAgICB0aGlzLmJhc2VVcmkgKyBwcm9wICsgJz9ub0NhY2hlPScgKyB0aGlzLmdlbmVyYXRlVVVJRCgpLFxyXG4gICAgICAgIGZhbHNlXHJcbiAgICAgICk7XHJcbiAgICAgIHhoci5zZW5kKG51bGwpO1xyXG4gICAgICBpZiAoeGhyLnJlYWR5U3RhdGUgPT0gNCAmJiB4aHIuc3RhdHVzID09IDIwMCkge1xyXG4gICAgICAgIHJldHVybiB4aHIucmVzcG9uc2VUZXh0O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gJyc7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgR2V0U2lnSW1hZ2VCNjQoY2FsbGJhY2spIHtcclxuICAgIHZhciBjdnMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcclxuICAgIHZhciB3aWR0aCA9IHRoaXMuR2V0SW1hZ2VYU2l6ZSgpO1xyXG4gICAgdmFyIGhlaWdodCA9IHRoaXMuR2V0SW1hZ2VZU2l6ZSgpO1xyXG4gICAgY3ZzLndpZHRoID0gd2lkdGggPT0gJycgfHwgd2lkdGggPT0gbnVsbCA/IDAgOiBOdW1iZXIod2lkdGgpO1xyXG4gICAgY3ZzLmhlaWdodCA9IGhlaWdodCA9PSAnJyB8fCBoZWlnaHQgPT0gbnVsbCA/IDAgOiBOdW1iZXIoaGVpZ2h0KTtcclxuXHJcbiAgICB2YXIgeGhyMiA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xyXG4gICAgeGhyMi5vcGVuKFxyXG4gICAgICAnR0VUJyxcclxuICAgICAgdGhpcy5iYXNlVXJpICsgJ1NpZ0ltYWdlLzEnICsgJz9ub0NhY2hlPScgKyB0aGlzLmdlbmVyYXRlVVVJRCgpLFxyXG4gICAgICB0cnVlXHJcbiAgICApO1xyXG4gICAgeGhyMi5yZXNwb25zZVR5cGUgPSAnYmxvYic7XHJcbiAgICB4aHIyLnNlbmQobnVsbCk7XHJcbiAgICB4aHIyLm9ubG9hZCA9ICgpID0+IHtcclxuICAgICAgdmFyIGNudHggPSBjdnMuZ2V0Q29udGV4dCgnMmQnKTtcclxuICAgICAgdmFyIGltZyA9IG5ldyBJbWFnZSgpO1xyXG4gICAgICBpbWcuc3JjID0gdGhpcy5nZXRCbG9iVVJMKHhocjIucmVzcG9uc2UpO1xyXG4gICAgICBpbWcub25sb2FkID0gKCkgPT4ge1xyXG4gICAgICAgIGNudHguZHJhd0ltYWdlKGltZywgMCwgMCk7XHJcbiAgICAgICAgdmFyIGI2NFN0cmluZyA9IGN2cy50b0RhdGFVUkwoJ2ltYWdlL3BuZycpO1xyXG4gICAgICAgIHZhciBsb2MgPSBiNjRTdHJpbmcuc2VhcmNoKCdiYXNlNjQsJyk7XHJcbiAgICAgICAgdmFyIHJldHN0cmluZyA9IGI2NFN0cmluZy5zbGljZShsb2MgKyA3LCBiNjRTdHJpbmcubGVuZ3RoKTtcclxuICAgICAgICBpZiAoY2FsbGJhY2spIHtcclxuICAgICAgICAgIGNhbGxiYWNrKHJldHN0cmluZyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9O1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBTaWdXZWJXYWl0Rm9yUGVuRG93bihjYWxsYmFjaykge1xyXG4gICAgdmFyIHhociA9IHRoaXMuU2lnV2ViY3JlYXRlWEhSKCk7XHJcblxyXG4gICAgaWYgKHhocikge1xyXG4gICAgICB4aHIub3BlbihcclxuICAgICAgICAnR0VUJyxcclxuICAgICAgICB0aGlzLmJhc2VVcmkgKyAnV2FpdEZvclBlbkRvd24nICsgJz9ub0NhY2hlPScgKyB0aGlzLmdlbmVyYXRlVVVJRCgpXHJcbiAgICAgICk7XHJcbiAgICAgIHhoci50aW1lb3V0ID0gMTAwMDA7XHJcbiAgICAgIHhoci5vbnJlYWR5c3RhdGVjaGFuZ2UgPSAoKSA9PiB7XHJcbiAgICAgICAgaWYgKHhoci5yZWFkeVN0YXRlICE9IDQpIHJldHVybjtcclxuICAgICAgICBpZiAoeGhyLnN0YXR1cyA9PSAyMDApIGNhbGxiYWNrKCk7XHJcbiAgICAgIH07XHJcbiAgICAgIHhoci5zZW5kKG51bGwpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIEdldFNpZ0ltYWdlKGN0eCkge1xyXG4gICAgdmFyIHhocjIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcclxuICAgIHhocjIub3BlbihcclxuICAgICAgJ0dFVCcsXHJcbiAgICAgIHRoaXMuYmFzZVVyaSArICdTaWdJbWFnZS8xJyArICc/bm9DYWNoZT0nICsgdGhpcy5nZW5lcmF0ZVVVSUQoKSxcclxuICAgICAgdHJ1ZVxyXG4gICAgKTtcclxuICAgIHhocjIucmVzcG9uc2VUeXBlID0gJ2Jsb2InO1xyXG4gICAgeGhyMi5zZW5kKG51bGwpO1xyXG4gICAgeGhyMi5vbmxvYWQgPSAoKSA9PiB7XHJcbiAgICAgIHZhciBpbWcgPSBuZXcgSW1hZ2UoKTtcclxuICAgICAgaW1nLnNyYyA9IHRoaXMuZ2V0QmxvYlVSTCh4aHIyLnJlc3BvbnNlKTtcclxuICAgICAgaW1nLm9ubG9hZCA9ICgpID0+IHtcclxuICAgICAgICBjdHguZHJhd0ltYWdlKGltZywgMCwgMCk7XHJcbiAgICAgICAgdGhpcy5yZXZva2VCbG9iVVJMKGltZy5zcmMpO1xyXG4gICAgICAgIGltZyA9IG51bGw7XHJcbiAgICAgIH07XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIFNpZ1dlYlNldERpc3BsYXlUYXJnZXQob2JqKSB7XHJcbiAgICB0aGlzLmN0eCA9IG9iajtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBTaWdXZWJSZWZyZXNoKCkge1xyXG4gICAgdmFyIE51bVBvaW50cyA9IE51bWJlcih0aGlzLk51bWJlck9mVGFibGV0UG9pbnRzKCkpO1xyXG4gICAgaWYgKE51bVBvaW50cyA9PSB0aGlzLk51bVBvaW50c0xhc3RUaW1lKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuTnVtUG9pbnRzTGFzdFRpbWUgPSBOdW1Qb2ludHM7XHJcblxyXG4gICAgdmFyIHhocjIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcclxuICAgIHhocjIub3BlbihcclxuICAgICAgJ0dFVCcsXHJcbiAgICAgIHRoaXMuYmFzZVVyaSArICdTaWdJbWFnZS8wJyArICc/bm9DYWNoZT0nICsgdGhpcy5nZW5lcmF0ZVVVSUQoKSxcclxuICAgICAgdHJ1ZVxyXG4gICAgKTtcclxuICAgIHhocjIucmVzcG9uc2VUeXBlID0gJ2Jsb2InO1xyXG4gICAgeGhyMi5vbmxvYWQgPSAoKSA9PiB7XHJcbiAgICAgIHZhciBpbWcgPSBuZXcgSW1hZ2UoKTtcclxuICAgICAgaW1nLnNyYyA9IHRoaXMuZ2V0QmxvYlVSTCh4aHIyLnJlc3BvbnNlKTtcclxuICAgICAgLy9cdFx0XHRcdGltZy5zcmMgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTCh4aHIyLnJlc3BvbnNlKTtcclxuICAgICAgaW1nLm9ubG9hZCA9ICgpID0+IHtcclxuICAgICAgICB0aGlzLmN0eC5kcmF3SW1hZ2UoaW1nLCAwLCAwKTtcclxuICAgICAgICB0aGlzLnJldm9rZUJsb2JVUkwoaW1nLnNyYyk7XHJcbiAgICAgICAgaW1nID0gbnVsbDtcclxuICAgICAgfTtcclxuICAgIH07XHJcbiAgICB4aHIyLnNlbmQobnVsbCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgU2lnV2ViRXZlbnQoKSB7XHJcbiAgICB2YXIgT2xkRXZTdGF0dXMgPSB0aGlzLkV2U3RhdHVzO1xyXG5cclxuICAgIHZhciB4aHIgPSB0aGlzLlNpZ1dlYmNyZWF0ZVhIUigpO1xyXG5cclxuICAgIGlmICh4aHIpIHtcclxuICAgICAgeGhyLm9wZW4oXHJcbiAgICAgICAgJ0dFVCcsXHJcbiAgICAgICAgdGhpcy5iYXNlVXJpICsgJ0V2ZW50U3RhdHVzJyArICc/bm9DYWNoZT0nICsgdGhpcy5nZW5lcmF0ZVVVSUQoKSxcclxuICAgICAgICB0cnVlXHJcbiAgICAgICk7XHJcbiAgICAgIHhoci5vbmxvYWQgPSAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5FdlN0YXR1cyA9IHhoci5yZXNwb25zZVRleHQ7XHJcbiAgICAgICAgaWYgKE9sZEV2U3RhdHVzICYgMHgwMSAmJiB0aGlzLkV2U3RhdHVzICYgMHgwMikge1xyXG4gICAgICAgICAgaWYgKHRoaXMub25TaWdQZW5Eb3duKSB7XHJcbiAgICAgICAgICAgIHRoaXMub25TaWdQZW5Eb3duKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoT2xkRXZTdGF0dXMgJiAweDAyICYmIHRoaXMuRXZTdGF0dXMgJiAweDAxKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5vblNpZ1BlblVwKSB7XHJcbiAgICAgICAgICAgIHRoaXMub25TaWdQZW5VcCgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfTtcclxuICAgICAgeGhyLnNlbmQobnVsbCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgc2V0U2lnV2ViRm9udFRocmVzaG9sZCh2KSB7XHJcbiAgICB0aGlzLlNpZ1dlYkZvbnRUaHJlc2hvbGQgPSB2O1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGNyZWF0ZUxjZEJpdG1hcEZyb21DYW52YXMob3VyQ2FudmFzLCB4cCwgeXAsIHdpZHRoLCBoZWlnaHQpIHtcclxuICAgIHZhciBjYW52YXNDdHggPSBvdXJDYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcclxuICAgIHZhciBpbWdEYXRhID0gY2FudmFzQ3R4LmdldEltYWdlRGF0YSgwLCAwLCB3aWR0aCwgaGVpZ2h0KTtcclxuICAgIHZhciBqID0gMDtcclxuICAgIHZhciBzVmFsID0gMDtcclxuICAgIHZhciBvdXREYXRhID0gJyc7XHJcbiAgICB2YXIgb3V0SWR4ID0gMDtcclxuICAgIHZhciBkYXRhID0gaW1nRGF0YS5kYXRhO1xyXG5cclxuICAgIGZvciAodmFyIHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspXHJcbiAgICAgIGZvciAodmFyIHggPSAwOyB4IDwgd2lkdGg7IHgrKykge1xyXG4gICAgICAgIHZhciB0bXAxID0gZGF0YVtqXTtcclxuICAgICAgICB2YXIgdG1wMiA9IGRhdGFbaiArIDFdO1xyXG4gICAgICAgIHZhciB0bXAzID0gZGF0YVtqICsgMl07XHJcbiAgICAgICAgdmFyIHRtcDQgPSBkYXRhW2ogKyAzXTtcclxuXHJcbiAgICAgICAgLy9cdFx0XHRcdFx0c1ZhbCA9IHRtcDEgKyAodG1wMiA8PCA4ICkgKyAoIHRtcDMgPDwgMTYgKSArICh0bXA0IDw8IDI0ICk7XHJcbiAgICAgICAgaiA9IGogKyA0O1xyXG4gICAgICAgIGlmICh0bXAxIDwgdGhpcy5TaWdXZWJGb250VGhyZXNob2xkKSB7XHJcbiAgICAgICAgICBvdXREYXRhICs9ICdCJztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgb3V0RGF0YSArPSAnVyc7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgcmV0dXJuIG91dERhdGE7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgdG9IZXgoTmliVmFsKSB7XHJcbiAgICBzd2l0Y2ggKE5pYlZhbCkge1xyXG4gICAgICBjYXNlIDA6XHJcbiAgICAgICAgcmV0dXJuICcwJztcclxuICAgICAgY2FzZSAxOlxyXG4gICAgICAgIHJldHVybiAnMSc7XHJcbiAgICAgIGNhc2UgMjpcclxuICAgICAgICByZXR1cm4gJzInO1xyXG4gICAgICBjYXNlIDM6XHJcbiAgICAgICAgcmV0dXJuICczJztcclxuICAgICAgY2FzZSA0OlxyXG4gICAgICAgIHJldHVybiAnNCc7XHJcbiAgICAgIGNhc2UgNTpcclxuICAgICAgICByZXR1cm4gJzUnO1xyXG4gICAgICBjYXNlIDY6XHJcbiAgICAgICAgcmV0dXJuICc2JztcclxuICAgICAgY2FzZSA3OlxyXG4gICAgICAgIHJldHVybiAnNyc7XHJcbiAgICAgIGNhc2UgODpcclxuICAgICAgICByZXR1cm4gJzgnO1xyXG4gICAgICBjYXNlIDk6XHJcbiAgICAgICAgcmV0dXJuICc5JztcclxuICAgICAgY2FzZSAxMDpcclxuICAgICAgICByZXR1cm4gJ0EnO1xyXG4gICAgICBjYXNlIDExOlxyXG4gICAgICAgIHJldHVybiAnQic7XHJcbiAgICAgIGNhc2UgMTI6XHJcbiAgICAgICAgcmV0dXJuICdDJztcclxuICAgICAgY2FzZSAxMzpcclxuICAgICAgICByZXR1cm4gJ0QnO1xyXG4gICAgICBjYXNlIDE0OlxyXG4gICAgICAgIHJldHVybiAnRSc7XHJcbiAgICAgIGNhc2UgMTU6XHJcbiAgICAgICAgcmV0dXJuICdGJztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHN0YXRpYyBUb0hleFN0cmluZyhCeXRlVmFsKSB7XHJcbiAgICB2YXIgU3RyID0gJyc7XHJcbiAgICBTdHIgKz0gdGhpcy50b0hleCgoQnl0ZVZhbCA+PiA0KSAmIDB4MGYpO1xyXG4gICAgU3RyICs9IHRoaXMudG9IZXgoQnl0ZVZhbCAmIDB4MGYpO1xyXG4gICAgcmV0dXJuIFN0cjtcclxuICB9XHJcblxyXG4gIHN0YXRpYyB0ZXh0VG9UYWJsZXQoeCwgeSwgaGVpZ2h0LCBzdHIsIGZudCkge1xyXG4gICAgdmFyIGMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcclxuICAgIHZhciBjbnR4ID0gYy5nZXRDb250ZXh0KCcyZCcpO1xyXG4gICAgY250eC5mb250ID0gZm50O1xyXG4gICAgdmFyIHR4dCA9IHN0cjtcclxuICAgIHZhciB4cyA9IE1hdGgucm91bmQoY250eC5tZWFzdXJlVGV4dCh0eHQpLndpZHRoKTtcclxuICAgIHZhciB5cyA9IGhlaWdodDtcclxuICAgIGMud2lkdGggPSB4cztcclxuICAgIGMuaGVpZ2h0ID0geXM7XHJcblxyXG4gICAgY250eC5mb250ID0gZm50O1xyXG4gICAgY250eC5maWxsU3R5bGUgPSAnI0ZGRkZGRic7XHJcbiAgICBjbnR4LnJlY3QoMCwgMCwgeHMsIHlzKTtcclxuICAgIGNudHguZmlsbCgpO1xyXG5cclxuICAgIGNudHguZmlsbFN0eWxlID0gJyMwMDAwMDAnO1xyXG4gICAgY250eC50ZXh0QmFzZWxpbmUgPSAndG9wJztcclxuICAgIGNudHguZmlsbFRleHQodHh0LCAwLCAwKTtcclxuXHJcbiAgICBjbnR4LmRyYXdJbWFnZShjbnR4LmNhbnZhcywgMCwgMCwgeHMsIHlzKTtcclxuXHJcbiAgICB2YXIgR3N0ciA9IHRoaXMuY3JlYXRlTGNkQml0bWFwRnJvbUNhbnZhcyhjLCAwLCAwLCB4cywgeXMpO1xyXG5cclxuICAgIHRoaXMuTGNkV3JpdGVJbWFnZVN0cmVhbSgwLCAyLCB4LCB5LCB4cywgeXMsIEdzdHIpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIExjZFdyaXRlSW1hZ2UoRHN0LCBNb2RlLCBYcCwgWXAsIFVybCkge1xyXG4gICAgdmFyIFByb3AgPSAnTGNkV3JpdGVJbWFnZS8nO1xyXG4gICAgdmFyIE5ld1VybCA9IFVybC5yZXBsYWNlKC9cXC8vZywgJ18nKTtcclxuXHJcbiAgICBQcm9wID0gUHJvcCArIERzdCArICcsJyArIE1vZGUgKyAnLCcgKyBYcCArICcsJyArIFlwICsgJywnICsgTmV3VXJsO1xyXG4gICAgdGhpcy5TaWdXZWJTZXRQcm9wZXJ0eVN5bmMoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgTGNkV3JpdGVMb2NhbEltYWdlKERzdCwgTW9kZSwgWHAsIFlwLCBVcmwpIHtcclxuICAgIHZhciBQcm9wID0gJ0xjZFdyaXRlSW1hZ2UvJztcclxuXHJcbiAgICBQcm9wID0gUHJvcCArIERzdCArICcsJyArIE1vZGUgKyAnLCcgKyBYcCArICcsJyArIFlwICsgJywnICsgVXJsO1xyXG4gICAgdGhpcy5TaWdXZWJTZXRQcm9wZXJ0eShQcm9wKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBMY2RXcml0ZUltYWdlU3RyZWFtKERzdCwgTW9kZSwgWHAsIFlwLCBYcywgWXMsIFVybCkge1xyXG4gICAgdmFyIFByb3AxID1cclxuICAgICAgJ0xjZFdyaXRlSW1hZ2VTdHJlYW1QYXJhbXMvJyArXHJcbiAgICAgIERzdCArXHJcbiAgICAgICcsJyArXHJcbiAgICAgIE1vZGUgK1xyXG4gICAgICAnLCcgK1xyXG4gICAgICBYcCArXHJcbiAgICAgICcsJyArXHJcbiAgICAgIFlwICtcclxuICAgICAgJywnICtcclxuICAgICAgWHMgK1xyXG4gICAgICAnLCcgK1xyXG4gICAgICBZcztcclxuICAgIHZhciBQcm9wMiA9ICdMY2RXcml0ZUltYWdlU3RyZWFtLyc7XHJcblxyXG4gICAgdGhpcy5TaWdXZWJTZXRQcm9wZXJ0eVN5bmMoUHJvcDEpO1xyXG4gICAgdGhpcy5TaWdXZWJTZXRJbWFnZVN0cmVhbVByb3BlcnR5KFByb3AyLCBVcmwpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIExjZFdyaXRlSW1hZ2VCbG9iKERzdCwgTW9kZSwgWHAsIFlwLCBYcywgWXMsIFVybCkge1xyXG4gICAgdmFyIFByb3AgPSAnTGNkV3JpdGVJbWFnZVN0cmVhbS8nO1xyXG5cclxuICAgIFByb3AgPSBQcm9wICsgRHN0ICsgJywnICsgTW9kZSArICcsJyArIFhwICsgJywnICsgWXAgKyAnLCcgKyBYcyArICcsJyArIFlzO1xyXG4gICAgdGhpcy5TaWdXZWJTZXRJbWFnZUJsb2JQcm9wZXJ0eShQcm9wLCBVcmwpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIG1lYXN1cmVUZXh0KHBUZXh0LCBwRm9udFNpemUsIHBTdHlsZSkge1xyXG4gICAgdmFyIGxEaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsRGl2Jyk7XHJcblxyXG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsRGl2KTtcclxuXHJcbiAgICBpZiAocFN0eWxlICE9IG51bGwpIHtcclxuICAgICAgbERpdi5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgcFN0eWxlKTtcclxuICAgIH1cclxuICAgIGxEaXYuc3R5bGUuZm9udFNpemUgPSAnJyArIHBGb250U2l6ZSArICdweCc7XHJcbiAgICBsRGl2LnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcclxuICAgIGxEaXYuc3R5bGUubGVmdCA9ICctMTAwMCc7XHJcbiAgICBsRGl2LnN0eWxlLnRvcCA9ICctMTAwMCc7XHJcblxyXG4gICAgbERpdi5pbm5lckhUTUwgPSBwVGV4dDtcclxuXHJcbiAgICB2YXIgbFJlc3VsdCA9IHtcclxuICAgICAgd2lkdGg6IGxEaXYuY2xpZW50V2lkdGgsXHJcbiAgICAgIGhlaWdodDogbERpdi5jbGllbnRIZWlnaHQsXHJcbiAgICB9O1xyXG5cclxuICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobERpdik7XHJcbiAgICBsRGl2ID0gbnVsbDtcclxuXHJcbiAgICByZXR1cm4gbFJlc3VsdDtcclxuICB9XHJcbiAgc3RhdGljIEdldFZlcnNpb25TdHJpbmcoKSB7XHJcbiAgICB2YXIgUHJvcCA9ICdWZXJzaW9uJztcclxuXHJcbiAgICBQcm9wID0gUHJvcDtcclxuICAgIHZhciBTdHIgPSB0aGlzLlNpZ1dlYkdldFByb3BlcnR5KFByb3ApO1xyXG4gICAgdmFyIHRyaW1TdHIgPSBTdHIuc2xpY2UoMSwgU3RyLmxlbmd0aCAtIDIpO1xyXG4gICAgcmV0dXJuIHRyaW1TdHI7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgSXNQZW5Eb3duKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuRXZTdGF0dXMgJiAweDAxO1xyXG4gIH1cclxuXHJcbiAgLy9cclxuICAvL1x0XHRcdFNpZ1BsdXNORVRTaWcuY3NcclxuICAvL1xyXG4gIHN0YXRpYyBDbGVhclRhYmxldCgpIHtcclxuICAgIHZhciBQcm9wID0gJ0NsZWFyU2lnbmF0dXJlJztcclxuXHJcbiAgICBQcm9wID0gUHJvcDtcclxuICAgIHJldHVybiB0aGlzLlNpZ1dlYkdldFByb3BlcnR5KFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIE51bWJlck9mVGFibGV0UG9pbnRzKCkge1xyXG4gICAgdmFyIFByb3AgPSAnVG90YWxQb2ludHMnO1xyXG5cclxuICAgIFByb3AgPSBQcm9wO1xyXG4gICAgcmV0dXJuIHRoaXMuU2lnV2ViR2V0UHJvcGVydHkoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgU2V0U2lnU3RyaW5nKHNpZ1N0ciwgY3R4KSB7XHJcbiAgICB2YXIgUHJvcCA9ICdTaWdTdHJpbmcnO1xyXG5cclxuICAgIFByb3AgPSBQcm9wO1xyXG4gICAgdmFyIHhociA9IHRoaXMuU2lnV2ViY3JlYXRlWEhSKCk7XHJcblxyXG4gICAgaWYgKHhocikge1xyXG4gICAgICB4aHIub3BlbignUE9TVCcsIHRoaXMuYmFzZVVyaSArIFByb3ApO1xyXG4gICAgICB4aHIuc2V0UmVxdWVzdEhlYWRlcignQ29udGVudC1UeXBlJywgJ3RleHQvcGxhaW4nKTtcclxuICAgICAgeGhyLnNlbmQoc2lnU3RyKTtcclxuICAgICAgeGhyLm9ubG9hZCA9ICgpID0+IHtcclxuICAgICAgICBpZiAoY3R4KSB7XHJcbiAgICAgICAgICB2YXIgY2FuID0gY3R4LmNhbnZhcztcclxuICAgICAgICAgIHRoaXMuU2V0SW1hZ2VYU2l6ZShjYW4ud2lkdGgpO1xyXG4gICAgICAgICAgdGhpcy5TZXRJbWFnZVlTaXplKGNhbi5oZWlnaHQpO1xyXG4gICAgICAgICAgdGhpcy5HZXRTaWdJbWFnZShjdHgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIHJldHVybiAnJztcclxuICB9XHJcblxyXG4gIHN0YXRpYyBHZXRTaWdTdHJpbmcoKSB7XHJcbiAgICB2YXIgUHJvcCA9ICdTaWdTdHJpbmcnO1xyXG5cclxuICAgIFByb3AgPSBQcm9wO1xyXG4gICAgdmFyIFN0ciA9IHRoaXMuU2lnV2ViR2V0UHJvcGVydHkoUHJvcCk7XHJcblxyXG4gICAgcmV0dXJuIFN0ci5zbGljZSgxLCBTdHIubGVuZ3RoIC0gMSk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgU2V0U2lnQ29tcHJlc3Npb25Nb2RlKHYpIHtcclxuICAgIHZhciBQcm9wID0gJ0NvbXByZXNzaW9uTW9kZS8nO1xyXG5cclxuICAgIFByb3AgPSBQcm9wICsgdjtcclxuICAgIHRoaXMuU2lnV2ViU2V0UHJvcGVydHlTeW5jKFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIEdldFNpZ0NvbXByZXNzaW9uTW9kZSgpIHtcclxuICAgIHZhciBQcm9wID0gJ0NvbXByZXNzaW9uTW9kZSc7XHJcblxyXG4gICAgUHJvcCA9IFByb3A7XHJcbiAgICByZXR1cm4gdGhpcy5TaWdXZWJHZXRQcm9wZXJ0eShQcm9wKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBTZXRFbmNyeXB0aW9uTW9kZSh2KSB7XHJcbiAgICB2YXIgUHJvcCA9ICdFbmNyeXB0aW9uTW9kZS8nO1xyXG5cclxuICAgIFByb3AgPSBQcm9wICsgdjtcclxuICAgIHRoaXMuU2lnV2ViU2V0UHJvcGVydHlTeW5jKFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIEdldEVuY3J5cHRpb25Nb2RlKCkge1xyXG4gICAgdmFyIFByb3AgPSAnRW5jcnlwdGlvbk1vZGUnO1xyXG5cclxuICAgIFByb3AgPSBQcm9wO1xyXG4gICAgcmV0dXJuIHRoaXMuU2lnV2ViR2V0UHJvcGVydHkoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgU2V0S2V5U3RyaW5nKGtleVN0cmluZykge1xyXG4gICAgdmFyIFByb3AgPSAnS2V5U3RyaW5nJztcclxuXHJcbiAgICBQcm9wID0gUHJvcDtcclxuICAgIHRoaXMuU2lnV2ViU2V0U3RyZWFtUHJvcGVydHkoUHJvcCwga2V5U3RyaW5nKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBHZXRLZXlTdHJpbmcoKSB7XHJcbiAgICB2YXIgUHJvcCA9ICdLZXlTdHJpbmcnO1xyXG5cclxuICAgIFByb3AgPSBQcm9wO1xyXG4gICAgdmFyIFN0ciA9IHRoaXMuU2lnV2ViR2V0UHJvcGVydHkoUHJvcCk7XHJcblxyXG4gICAgcmV0dXJuIFN0ci5zbGljZSgxLCBTdHIubGVuZ3RoIC0gMSk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgQXV0b0tleVN0YXJ0KCkge1xyXG4gICAgdmFyIFByb3AgPSAnQXV0b0tleVN0YXJ0JztcclxuXHJcbiAgICBQcm9wID0gUHJvcDtcclxuICAgIHRoaXMuU2lnV2ViU2V0UHJvcGVydHlTeW5jKFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIEF1dG9LZXlGaW5pc2goKSB7XHJcbiAgICB2YXIgUHJvcCA9ICdBdXRvS2V5RmluaXNoJztcclxuXHJcbiAgICBQcm9wID0gUHJvcDtcclxuICAgIHRoaXMuU2lnV2ViU2V0UHJvcGVydHlTeW5jKFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIFNldEF1dG9LZXlEYXRhKGtleURhdGEpIHtcclxuICAgIHZhciBQcm9wID0gJ1NldEF1dG9LZXlEYXRhJztcclxuXHJcbiAgICBQcm9wID0gUHJvcDtcclxuICAgIHRoaXMuU2lnV2ViU2V0U3RyZWFtUHJvcGVydHkoUHJvcCwga2V5RGF0YSk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgQXV0b0tleUFkZERhdGEoa2V5RGF0YSkge1xyXG4gICAgdmFyIFByb3AgPSAnQXV0b0tleUFkZERhdGEnO1xyXG5cclxuICAgIFByb3AgPSBQcm9wO1xyXG4gICAgdGhpcy5TaWdXZWJTZXRTdHJlYW1Qcm9wZXJ0eShQcm9wLCBrZXlEYXRhKTtcclxuICAgIHJldHVybiB0aGlzLkdldEtleVN0cmluZygpO1xyXG4gIH1cclxuXHJcbiAgLy9cdFx0ZnVuY3Rpb24gIEdldEtleVJlY2VpcHQoICkge31cclxuXHJcbiAgc3RhdGljIEdldEtleVJlY2VpcHRBc2NpaSgpIHtcclxuICAgIHZhciBQcm9wID0gJ0tleVJlY2VpcHRBc2NpaSc7XHJcblxyXG4gICAgUHJvcCA9IFByb3A7XHJcbiAgICB2YXIgU3RyID0gdGhpcy5TaWdXZWJHZXRQcm9wZXJ0eShQcm9wKTtcclxuXHJcbiAgICByZXR1cm4gU3RyLnNsaWNlKDEsIFN0ci5sZW5ndGggLSAxKTtcclxuICB9XHJcblxyXG4gIC8vXHRcdGZ1bmN0aW9uICBHZXRTaWdSZWNlaXB0KCApIHt9XHJcblxyXG4gIHN0YXRpYyBHZXRTaWdSZWNlaXB0QXNjaWkoKSB7XHJcbiAgICB2YXIgUHJvcCA9ICdTaWdSZWNlaXB0QXNjaWknO1xyXG5cclxuICAgIFByb3AgPSBQcm9wO1xyXG4gICAgdmFyIFN0ciA9IHRoaXMuU2lnV2ViR2V0UHJvcGVydHkoUHJvcCk7XHJcblxyXG4gICAgcmV0dXJuIFN0ci5zbGljZSgxLCBTdHIubGVuZ3RoIC0gMSk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgU2V0VGltZVN0YW1wKHRpbWVTdGFtcCkge1xyXG4gICAgdmFyIFByb3AgPSAnVGltZVN0YW1wJztcclxuXHJcbiAgICBQcm9wID0gUHJvcDtcclxuICAgIHRoaXMuU2lnV2ViU2V0U3RyZWFtUHJvcGVydHkoUHJvcCwgdGltZVN0YW1wKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBHZXRUaW1lU3RhbXAoKSB7XHJcbiAgICB2YXIgUHJvcCA9ICdUaW1lU3RhbXAnO1xyXG5cclxuICAgIFByb3AgPSBQcm9wO1xyXG4gICAgdmFyIFN0ciA9IHRoaXMuU2lnV2ViR2V0UHJvcGVydHkoUHJvcCk7XHJcblxyXG4gICAgcmV0dXJuIFN0ci5zbGljZSgxLCBTdHIubGVuZ3RoIC0gMSk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgU2V0QW5ub3RhdGUoYW5ub3RhdGUpIHtcclxuICAgIHZhciBQcm9wID0gJ0Fubm90YXRlJztcclxuXHJcbiAgICBQcm9wID0gUHJvcDtcclxuICAgIHRoaXMuU2lnV2ViU2V0U3RyZWFtUHJvcGVydHkoUHJvcCwgYW5ub3RhdGUpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIEdldEFubm90YXRlKCkge1xyXG4gICAgdmFyIFByb3AgPSAnQW5ub3RhdGUnO1xyXG5cclxuICAgIFByb3AgPSBQcm9wO1xyXG4gICAgdmFyIFN0ciA9IHRoaXMuU2lnV2ViR2V0UHJvcGVydHkoUHJvcCk7XHJcblxyXG4gICAgcmV0dXJuIFN0ci5zbGljZSgxLCBTdHIubGVuZ3RoIC0gMSk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgU2V0U2F2ZVNpZ0luZm8odikge1xyXG4gICAgdmFyIFByb3AgPSAnU2F2ZVNpZ0luZm8vJztcclxuXHJcbiAgICBQcm9wID0gUHJvcCArIHY7XHJcbiAgICB0aGlzLlNpZ1dlYlNldFByb3BlcnR5U3luYyhQcm9wKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBHZXRTYXZlU2lnSW5mbygpIHtcclxuICAgIHZhciBQcm9wID0gJ1NhdmVTaWdJbmZvJztcclxuXHJcbiAgICBQcm9wID0gUHJvcDtcclxuICAgIHJldHVybiB0aGlzLlNpZ1dlYkdldFByb3BlcnR5KFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIFNldFNhdmVQcmVzc3VyZURhdGEodikge1xyXG4gICAgdmFyIFByb3AgPSAnU2F2ZVByZXNzdXJlRGF0YS8nO1xyXG5cclxuICAgIFByb3AgPSBQcm9wICsgdjtcclxuICAgIHRoaXMuU2lnV2ViU2V0UHJvcGVydHlTeW5jKFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIEdldFNhdmVQcmVzc3VyZURhdGEoKSB7XHJcbiAgICB2YXIgUHJvcCA9ICdTYXZlUHJlc3N1cmVEYXRhJztcclxuXHJcbiAgICBQcm9wID0gUHJvcDtcclxuICAgIHJldHVybiB0aGlzLlNpZ1dlYkdldFByb3BlcnR5KFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIFNldFNhdmVUaW1lRGF0YSh2KSB7XHJcbiAgICB2YXIgUHJvcCA9ICdTYXZlVGltZURhdGEvJztcclxuXHJcbiAgICBQcm9wID0gUHJvcCArIHY7XHJcbiAgICB0aGlzLlNpZ1dlYlNldFByb3BlcnR5U3luYyhQcm9wKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBHZXRTYXZlVGltZURhdGEoKSB7XHJcbiAgICB2YXIgUHJvcCA9ICdTYXZlVGltZURhdGEnO1xyXG5cclxuICAgIFByb3AgPSBQcm9wO1xyXG4gICAgcmV0dXJuIHRoaXMuU2lnV2ViR2V0UHJvcGVydHkoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgU2V0QW50aUFsaWFzU3BvdFNpemUodikge1xyXG4gICAgdmFyIFByb3AgPSAnQW50aUFsaWFzU3BvdFNpemUvJztcclxuXHJcbiAgICBQcm9wID0gUHJvcCArIHY7XHJcbiAgICB0aGlzLlNpZ1dlYlNldFByb3BlcnR5U3luYyhQcm9wKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBHZXRBbnRpQWxpYXNTcG90U2l6ZSgpIHtcclxuICAgIHZhciBQcm9wID0gJ0FudGlBbGlhc1Nwb3RTaXplJztcclxuXHJcbiAgICBQcm9wID0gUHJvcDtcclxuICAgIHJldHVybiB0aGlzLlNpZ1dlYkdldFByb3BlcnR5KFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIFNldEFudGlBbGlhc0xpbmVTY2FsZSh2KSB7XHJcbiAgICB2YXIgUHJvcCA9ICdBbnRpQWxpYXNMaW5lU2NhbGUvJztcclxuXHJcbiAgICBQcm9wID0gUHJvcCArIHY7XHJcbiAgICB0aGlzLlNpZ1dlYlNldFByb3BlcnR5U3luYyhQcm9wKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBHZXRBbnRpQWxpYXNMaW5lU2NhbGUoKSB7XHJcbiAgICB2YXIgUHJvcCA9ICdBbnRpQWxpYXNMaW5lU2NhbGUnO1xyXG5cclxuICAgIFByb3AgPSBQcm9wO1xyXG4gICAgcmV0dXJuIHRoaXMuU2lnV2ViR2V0UHJvcGVydHkoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgR2V0TnVtYmVyT2ZTdHJva2VzKCkge1xyXG4gICAgdmFyIFByb3AgPSAnTnVtYmVyT2ZTdHJva2VzJztcclxuXHJcbiAgICBQcm9wID0gUHJvcDtcclxuICAgIHJldHVybiB0aGlzLlNpZ1dlYkdldFByb3BlcnR5KFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIEdldE51bVBvaW50c0ZvclN0cm9rZSh2KSB7XHJcbiAgICB2YXIgUHJvcCA9ICdOdW1iZXJPZlBvaW50c0luU3Ryb2tlLyc7XHJcblxyXG4gICAgUHJvcCA9IFByb3AgKyB2O1xyXG4gICAgcmV0dXJuIHRoaXMuU2lnV2ViR2V0UHJvcGVydHkoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgR2V0UG9pbnRYVmFsdWUodjEsIHYyKSB7XHJcbiAgICB2YXIgUHJvcCA9ICdQb2ludFhWYWx1ZS8nO1xyXG5cclxuICAgIFByb3AgPSBQcm9wICsgdjEgKyAnLycgKyB2MjtcclxuICAgIHJldHVybiB0aGlzLlNpZ1dlYkdldFByb3BlcnR5KFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIEdldFBvaW50WVZhbHVlKHYxLCB2Mikge1xyXG4gICAgdmFyIFByb3AgPSAnUG9pbnRZVmFsdWUvJztcclxuXHJcbiAgICBQcm9wID0gUHJvcCArIHYxICsgJy8nICsgdjI7XHJcbiAgICByZXR1cm4gdGhpcy5TaWdXZWJHZXRQcm9wZXJ0eShQcm9wKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBTZXRBbnRpQWxpYXNFbmFibGUodikge1xyXG4gICAgdmFyIFByb3AgPSAnQW50aUFsaWFzRW5hYmxlLyc7XHJcblxyXG4gICAgUHJvcCA9IFByb3AgKyB2O1xyXG4gICAgdGhpcy5TaWdXZWJTZXRQcm9wZXJ0eVN5bmMoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgR2V0QW50aUFsaWFzRW5hYmxlKCkge1xyXG4gICAgdmFyIFByb3AgPSAnQW50aUFsaWFzRW5hYmxlJztcclxuXHJcbiAgICBQcm9wID0gUHJvcDtcclxuICAgIHJldHVybiB0aGlzLlNpZ1dlYkdldFByb3BlcnR5KFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIFNldFVzZUFtYmllbnRDb2xvcnModikge1xyXG4gICAgdmFyIFByb3AgPSAnVXNlQW1iaWVudENvbG9ycy8nO1xyXG5cclxuICAgIFByb3AgPSBQcm9wICsgdjtcclxuICAgIHRoaXMuU2lnV2ViU2V0UHJvcGVydHlTeW5jKFByb3ApO1xyXG4gIH1cclxuXHJcbiAgLy9cclxuICAvL1x0XHRTaWdQbHVzTkVURGlzcGxheS5jc1xyXG4gIC8vXHJcbiAgc3RhdGljIFNldERpc3BsYXlYU2l6ZSh2KSB7XHJcbiAgICB2YXIgUHJvcCA9ICdEaXNwbGF5WFNpemUvJztcclxuXHJcbiAgICBQcm9wID0gUHJvcCArIHY7XHJcbiAgICB0aGlzLlNpZ1dlYlNldFByb3BlcnR5U3luYyhQcm9wKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBHZXREaXNwbGF5WFNpemUoKSB7XHJcbiAgICB2YXIgUHJvcCA9ICdEaXNwbGF5WFNpemUnO1xyXG5cclxuICAgIFByb3AgPSBQcm9wO1xyXG4gICAgcmV0dXJuIHRoaXMuU2lnV2ViR2V0UHJvcGVydHkoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgU2V0RGlzcGxheVlTaXplKHYpIHtcclxuICAgIHZhciBQcm9wID0gJ0Rpc3BsYXlZU2l6ZS8nO1xyXG5cclxuICAgIFByb3AgPSBQcm9wICsgdjtcclxuICAgIHRoaXMuU2lnV2ViU2V0UHJvcGVydHlTeW5jKFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIEdldERpc3BsYXlZU2l6ZSgpIHtcclxuICAgIHZhciBQcm9wID0gJ0Rpc3BsYXlZU2l6ZSc7XHJcblxyXG4gICAgUHJvcCA9IFByb3A7XHJcbiAgICByZXR1cm4gdGhpcy5TaWdXZWJHZXRQcm9wZXJ0eShQcm9wKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBTZXREaXNwbGF5UGVuV2lkdGgodikge1xyXG4gICAgdmFyIFByb3AgPSAnRGlzcGxheVBlbldpZHRoLyc7XHJcblxyXG4gICAgUHJvcCA9IFByb3AgKyB2O1xyXG4gICAgdGhpcy5TaWdXZWJTZXRQcm9wZXJ0eVN5bmMoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgR2V0RGlzcGxheVBlbldpZHRoKCkge1xyXG4gICAgdmFyIFByb3AgPSAnRGlzcGxheVBlbldpZHRoJztcclxuXHJcbiAgICBQcm9wID0gUHJvcDtcclxuICAgIHJldHVybiB0aGlzLlNpZ1dlYkdldFByb3BlcnR5KFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIFNldERpc3BsYXlUaW1lU3RhbXAodikge1xyXG4gICAgdmFyIFByb3AgPSAnRGlzcGxheVRpbWVTdGFtcC8nO1xyXG5cclxuICAgIFByb3AgPSBQcm9wICsgdjtcclxuICAgIHRoaXMuU2lnV2ViU2V0UHJvcGVydHlTeW5jKFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIEdldERpc3BsYXlUaW1lU3RhbXAoKSB7XHJcbiAgICB2YXIgUHJvcCA9ICdEaXNwbGF5VGltZVN0YW1wJztcclxuXHJcbiAgICBQcm9wID0gUHJvcDtcclxuICAgIHJldHVybiB0aGlzLlNpZ1dlYkdldFByb3BlcnR5KFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIFNldERpc3BsYXlUaW1lU3RhbXBQb3NYKHYpIHtcclxuICAgIHZhciBQcm9wID0gJ0Rpc3BsYXlUaW1lU3RhbXBQb3NYLyc7XHJcblxyXG4gICAgUHJvcCA9IFByb3AgKyB2O1xyXG4gICAgdGhpcy5TaWdXZWJTZXRQcm9wZXJ0eVN5bmMoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgR2V0RGlzcGxheVRpbWVTdGFtcFBvc1goKSB7XHJcbiAgICB2YXIgUHJvcCA9ICdEaXNwbGF5VGltZVN0YW1wUG9zWCc7XHJcblxyXG4gICAgUHJvcCA9IFByb3A7XHJcbiAgICByZXR1cm4gdGhpcy5TaWdXZWJHZXRQcm9wZXJ0eShQcm9wKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBTZXREaXNwbGF5VGltZVN0YW1wUG9zWSh2KSB7XHJcbiAgICB2YXIgUHJvcCA9ICdEaXNwbGF5VGltZVN0YW1wUG9zWS8nO1xyXG5cclxuICAgIFByb3AgPSBQcm9wICsgdjtcclxuICAgIHRoaXMuU2lnV2ViU2V0UHJvcGVydHlTeW5jKFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIEdldERpc3BsYXlUaW1lU3RhbXBQb3NZKCkge1xyXG4gICAgdmFyIFByb3AgPSAnRGlzcGxheVRpbWVTdGFtcFBvc1knO1xyXG5cclxuICAgIFByb3AgPSBQcm9wO1xyXG4gICAgcmV0dXJuIHRoaXMuU2lnV2ViR2V0UHJvcGVydHkoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgU2V0RGlzcGxheVRpbWVTdGFtcFNpemUodikge1xyXG4gICAgdmFyIFByb3AgPSAnRGlzcGxheVRpbWVTdGFtcFNpemUvJztcclxuXHJcbiAgICBQcm9wID0gUHJvcCArIHY7XHJcbiAgICB0aGlzLlNpZ1dlYlNldFByb3BlcnR5U3luYyhQcm9wKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBHZXREaXNwbGF5VGltZVN0YW1wU2l6ZSgpIHtcclxuICAgIHZhciBQcm9wID0gJ0Rpc3BsYXlUaW1lU3RhbXBTaXplJztcclxuXHJcbiAgICBQcm9wID0gUHJvcDtcclxuICAgIHJldHVybiB0aGlzLlNpZ1dlYkdldFByb3BlcnR5KFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIFNldERpc3BsYXlBbm5vdGF0ZSh2KSB7XHJcbiAgICB2YXIgUHJvcCA9ICdEaXNwbGF5QW5ub3RhdGUvJztcclxuXHJcbiAgICBQcm9wID0gUHJvcCArIHY7XHJcbiAgICB0aGlzLlNpZ1dlYlNldFByb3BlcnR5U3luYyhQcm9wKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBHZXREaXNwbGF5QW5ub3RhdGUoKSB7XHJcbiAgICB2YXIgUHJvcCA9ICdEaXNwbGF5QW5ub3RhdGUnO1xyXG5cclxuICAgIFByb3AgPSBQcm9wO1xyXG4gICAgcmV0dXJuIHRoaXMuU2lnV2ViR2V0UHJvcGVydHkoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgU2V0RGlzcGxheUFubm90YXRlUG9zWCh2KSB7XHJcbiAgICB2YXIgUHJvcCA9ICdEaXNwbGF5QW5ub3RhdGVQb3NYLyc7XHJcblxyXG4gICAgUHJvcCA9IFByb3AgKyB2O1xyXG4gICAgdGhpcy5TaWdXZWJTZXRQcm9wZXJ0eVN5bmMoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgR2V0RGlzcGxheUFubm90YXRlUG9zWCgpIHtcclxuICAgIHZhciBQcm9wID0gJ0Rpc3BsYXlBbm5vdGF0ZVBvc1gnO1xyXG5cclxuICAgIFByb3AgPSBQcm9wO1xyXG4gICAgcmV0dXJuIHRoaXMuU2lnV2ViR2V0UHJvcGVydHkoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgU2V0RGlzcGxheUFubm90YXRlUG9zWSh2KSB7XHJcbiAgICB2YXIgUHJvcCA9ICdEaXNwbGF5QW5ub3RhdGVQb3NZLyc7XHJcblxyXG4gICAgUHJvcCA9IFByb3AgKyB2O1xyXG4gICAgdGhpcy5TaWdXZWJTZXRQcm9wZXJ0eVN5bmMoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgR2V0RGlzcGxheUFubm90YXRlUG9zWSgpIHtcclxuICAgIHZhciBQcm9wID0gJ0Rpc3BsYXlBbm5vdGF0ZVBvc1knO1xyXG5cclxuICAgIFByb3AgPSBQcm9wO1xyXG4gICAgcmV0dXJuIHRoaXMuU2lnV2ViR2V0UHJvcGVydHkoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgU2V0RGlzcGxheUFubm90YXRlU2l6ZSh2KSB7XHJcbiAgICB2YXIgUHJvcCA9ICdEaXNwbGF5QW5ub3RhdGVTaXplLyc7XHJcblxyXG4gICAgUHJvcCA9IFByb3AgKyB2O1xyXG4gICAgdGhpcy5TaWdXZWJTZXRQcm9wZXJ0eVN5bmMoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgR2V0RGlzcGxheUFubm90YXRlU2l6ZSgpIHtcclxuICAgIHZhciBQcm9wID0gJ0Rpc3BsYXlBbm5vdGF0ZVNpemUnO1xyXG5cclxuICAgIFByb3AgPSBQcm9wO1xyXG4gICAgcmV0dXJuIHRoaXMuU2lnV2ViR2V0UHJvcGVydHkoUHJvcCk7XHJcbiAgfVxyXG5cclxuICAvL1xyXG4gIC8vXHRcdFNpZ1BsdXNORVRJbWFnZS5jc1xyXG4gIC8vXHJcbiAgLy9cdFx0ZnVuY3Rpb24gIEdldFNpZ0ltYWdlQjY0KCApXHJcbiAgLy9cdFx0XHR7XHJcbiAgLy9cdFx0XHR2YXIgeGhyMiA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xyXG4gIC8vXHRcdFx0eGhyMi5vcGVuKFwiR0VUXCIsIGJhc2VVcmkgKyBcIlNpZ0ltYWdlLzFcIiwgZmFsc2UgKTtcclxuICAvL1x0XHRcdHhocjIucmVzcG9uc2VUeXBlID0gXCJibG9iXCJcclxuICAvL1x0XHRcdHhocjIuc2VuZChudWxsKTtcclxuICAvL1x0XHRcdGlmICh4aHIyLnJlYWR5U3RhdGUgPT0gNCAmJiB4aHIuc3RhdHVzID09IDIwMClcclxuICAvL1x0XHRcdFx0e1xyXG4gIC8vXHRcdFx0XHRyZXR1cm4gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoeGhyMi5yZXNwb25zZSk7XHJcbiAgLy9cdFx0XHRcdH1cclxuICAvL1x0XHRcdHJldHVybiBudWxsO1xyXG4gIC8vXHRcdFx0fVxyXG5cclxuICBzdGF0aWMgU2V0SW1hZ2VYU2l6ZSh2KSB7XHJcbiAgICB2YXIgUHJvcCA9ICdJbWFnZVhTaXplLyc7XHJcblxyXG4gICAgUHJvcCA9IFByb3AgKyB2O1xyXG4gICAgdGhpcy5TaWdXZWJTZXRQcm9wZXJ0eVN5bmMoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgR2V0SW1hZ2VYU2l6ZSgpIHtcclxuICAgIHZhciBQcm9wID0gJ0ltYWdlWFNpemUnO1xyXG5cclxuICAgIFByb3AgPSBQcm9wO1xyXG4gICAgcmV0dXJuIHRoaXMuU2lnV2ViR2V0UHJvcGVydHkoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgU2V0SW1hZ2VZU2l6ZSh2KSB7XHJcbiAgICB2YXIgUHJvcCA9ICdJbWFnZVlTaXplLyc7XHJcblxyXG4gICAgUHJvcCA9IFByb3AgKyB2O1xyXG4gICAgdGhpcy5TaWdXZWJTZXRQcm9wZXJ0eVN5bmMoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgR2V0SW1hZ2VZU2l6ZSgpIHtcclxuICAgIHZhciBQcm9wID0gJ0ltYWdlWVNpemUnO1xyXG5cclxuICAgIFByb3AgPSBQcm9wO1xyXG4gICAgcmV0dXJuIHRoaXMuU2lnV2ViR2V0UHJvcGVydHkoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgU2V0SW1hZ2VQZW5XaWR0aCh2KSB7XHJcbiAgICB2YXIgUHJvcCA9ICdJbWFnZVBlbldpZHRoLyc7XHJcblxyXG4gICAgUHJvcCA9IFByb3AgKyB2O1xyXG4gICAgdGhpcy5TaWdXZWJTZXRQcm9wZXJ0eVN5bmMoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgR2V0SW1hZ2VQZW5XaWR0aCgpIHtcclxuICAgIHZhciBQcm9wID0gJ0ltYWdlUGVuV2lkdGgnO1xyXG5cclxuICAgIFByb3AgPSBQcm9wO1xyXG4gICAgcmV0dXJuIHRoaXMuU2lnV2ViR2V0UHJvcGVydHkoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgU2V0SW1hZ2VUaW1lU3RhbXAodikge1xyXG4gICAgdmFyIFByb3AgPSAnSW1hZ2VUaW1lU3RhbXAvJztcclxuXHJcbiAgICBQcm9wID0gUHJvcCArIHY7XHJcbiAgICB0aGlzLlNpZ1dlYlNldFByb3BlcnR5U3luYyhQcm9wKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBHZXRJbWFnZVRpbWVTdGFtcCgpIHtcclxuICAgIHZhciBQcm9wID0gJ0ltYWdlVGltZVN0YW1wJztcclxuXHJcbiAgICBQcm9wID0gUHJvcDtcclxuICAgIHJldHVybiB0aGlzLlNpZ1dlYkdldFByb3BlcnR5KFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIFNldEltYWdlVGltZVN0YW1wUG9zWCh2KSB7XHJcbiAgICB2YXIgUHJvcCA9ICdJbWFnZVRpbWVTdGFtcFBvc1gvJztcclxuXHJcbiAgICBQcm9wID0gUHJvcCArIHY7XHJcbiAgICB0aGlzLlNpZ1dlYlNldFByb3BlcnR5U3luYyhQcm9wKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBHZXRJbWFnZVRpbWVTdGFtcFBvc1goKSB7XHJcbiAgICB2YXIgUHJvcCA9ICdJbWFnZVRpbWVTdGFtcFBvc1gnO1xyXG5cclxuICAgIFByb3AgPSBQcm9wO1xyXG4gICAgcmV0dXJuIHRoaXMuU2lnV2ViR2V0UHJvcGVydHkoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgU2V0SW1hZ2VUaW1lU3RhbXBQb3NZKHYpIHtcclxuICAgIHZhciBQcm9wID0gJ0ltYWdlVGltZVN0YW1wUG9zWS8nO1xyXG5cclxuICAgIFByb3AgPSBQcm9wICsgdjtcclxuICAgIHRoaXMuU2lnV2ViU2V0UHJvcGVydHlTeW5jKFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIEdldEltYWdlVGltZVN0YW1wUG9zWSgpIHtcclxuICAgIHZhciBQcm9wID0gJ0ltYWdlVGltZVN0YW1wUG9zWSc7XHJcblxyXG4gICAgUHJvcCA9IFByb3A7XHJcbiAgICByZXR1cm4gdGhpcy5TaWdXZWJHZXRQcm9wZXJ0eShQcm9wKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBTZXRJbWFnZVRpbWVTdGFtcFNpemUodikge1xyXG4gICAgdmFyIFByb3AgPSAnSW1hZ2VUaW1lU3RhbXBTaXplLyc7XHJcblxyXG4gICAgUHJvcCA9IFByb3AgKyB2O1xyXG4gICAgdGhpcy5TaWdXZWJTZXRQcm9wZXJ0eVN5bmMoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgR2V0SW1hZ2VUaW1lU3RhbXBTaXplKCkge1xyXG4gICAgdmFyIFByb3AgPSAnSW1hZ2VUaW1lU3RhbXBTaXplJztcclxuXHJcbiAgICBQcm9wID0gUHJvcDtcclxuICAgIHJldHVybiB0aGlzLlNpZ1dlYkdldFByb3BlcnR5KFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIFNldEltYWdlQW5ub3RhdGUodikge1xyXG4gICAgdmFyIFByb3AgPSAnSW1hZ2VBbm5vdGF0ZS8nO1xyXG5cclxuICAgIFByb3AgPSBQcm9wICsgdjtcclxuICAgIHRoaXMuU2lnV2ViU2V0UHJvcGVydHlTeW5jKFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIEdldEltYWdlQW5ub3RhdGUoKSB7XHJcbiAgICB2YXIgUHJvcCA9ICdJbWFnZUFubm90YXRlJztcclxuXHJcbiAgICBQcm9wID0gUHJvcDtcclxuICAgIHJldHVybiB0aGlzLlNpZ1dlYkdldFByb3BlcnR5KFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIFNldEltYWdlQW5ub3RhdGVQb3NYKHYpIHtcclxuICAgIHZhciBQcm9wID0gJ0ltYWdlQW5ub3RhdGVQb3NYLyc7XHJcblxyXG4gICAgUHJvcCA9IFByb3AgKyB2O1xyXG4gICAgdGhpcy5TaWdXZWJTZXRQcm9wZXJ0eVN5bmMoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgR2V0SW1hZ2VBbm5vdGF0ZVBvc1goKSB7XHJcbiAgICB2YXIgUHJvcCA9ICdJbWFnZUFubm90YXRlUG9zWCc7XHJcblxyXG4gICAgUHJvcCA9IFByb3A7XHJcbiAgICByZXR1cm4gdGhpcy5TaWdXZWJHZXRQcm9wZXJ0eShQcm9wKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBTZXRJbWFnZUFubm90YXRlUG9zWSh2KSB7XHJcbiAgICB2YXIgUHJvcCA9ICdJbWFnZUFubm90YXRlUG9zWS8nO1xyXG5cclxuICAgIFByb3AgPSBQcm9wICsgdjtcclxuICAgIHRoaXMuU2lnV2ViU2V0UHJvcGVydHlTeW5jKFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIEdldEltYWdlQW5ub3RhdGVQb3NZKCkge1xyXG4gICAgdmFyIFByb3AgPSAnSW1hZ2VBbm5vdGF0ZVBvc1knO1xyXG5cclxuICAgIFByb3AgPSBQcm9wO1xyXG4gICAgcmV0dXJuIHRoaXMuU2lnV2ViR2V0UHJvcGVydHkoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgU2V0SW1hZ2VBbm5vdGF0ZVNpemUodikge1xyXG4gICAgdmFyIFByb3AgPSAnSW1hZ2VBbm5vdGF0ZVNpemUvJztcclxuXHJcbiAgICBQcm9wID0gUHJvcCArIHY7XHJcbiAgICB0aGlzLlNpZ1dlYlNldFByb3BlcnR5U3luYyhQcm9wKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBHZXRJbWFnZUFubm90YXRlU2l6ZSgpIHtcclxuICAgIHZhciBQcm9wID0gJ0ltYWdlQW5ub3RhdGVTaXplJztcclxuXHJcbiAgICBQcm9wID0gUHJvcDtcclxuICAgIHJldHVybiB0aGlzLlNpZ1dlYkdldFByb3BlcnR5KFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIFNldEp1c3RpZnlYKHYpIHtcclxuICAgIHZhciBQcm9wID0gJ0p1c3RpZnlYLyc7XHJcblxyXG4gICAgUHJvcCA9IFByb3AgKyB2O1xyXG4gICAgdGhpcy5TaWdXZWJTZXRQcm9wZXJ0eVN5bmMoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgR2V0SnVzdGlmeVgoKSB7XHJcbiAgICB2YXIgUHJvcCA9ICdKdXN0aWZ5WCc7XHJcblxyXG4gICAgUHJvcCA9IFByb3A7XHJcbiAgICByZXR1cm4gdGhpcy5TaWdXZWJHZXRQcm9wZXJ0eShQcm9wKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBTZXRKdXN0aWZ5WSh2KSB7XHJcbiAgICB2YXIgUHJvcCA9ICdKdXN0aWZ5WS8nO1xyXG5cclxuICAgIFByb3AgPSBQcm9wICsgdjtcclxuICAgIHRoaXMuU2lnV2ViU2V0UHJvcGVydHlTeW5jKFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIEdldEp1c3RpZnlZKCkge1xyXG4gICAgdmFyIFByb3AgPSAnSnVzdGlmeVknO1xyXG5cclxuICAgIFByb3AgPSBQcm9wO1xyXG4gICAgcmV0dXJuIHRoaXMuU2lnV2ViR2V0UHJvcGVydHkoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgU2V0SnVzdGlmeU1vZGUodikge1xyXG4gICAgdmFyIFByb3AgPSAnSnVzdGlmeU1vZGUvJztcclxuXHJcbiAgICBQcm9wID0gUHJvcCArIHY7XHJcbiAgICB0aGlzLlNpZ1dlYlNldFByb3BlcnR5U3luYyhQcm9wKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBHZXRKdXN0aWZ5TW9kZSgpIHtcclxuICAgIHZhciBQcm9wID0gJ0p1c3RpZnlNb2RlJztcclxuXHJcbiAgICBQcm9wID0gUHJvcDtcclxuICAgIHJldHVybiB0aGlzLlNpZ1dlYkdldFByb3BlcnR5KFByb3ApO1xyXG4gIH1cclxuXHJcbiAgLy9cclxuICAvL1x0XHRTaWdQbHVzTkVUS2V5UGFkLmNzXHJcbiAgLy9cclxuICBzdGF0aWMgS2V5UGFkQWRkSG90U3BvdChrZXksIGNvb3JkLCB4cCwgeXAsIHhzLCB5cykge1xyXG4gICAgdmFyIFByb3AgPSAnS2V5UGFkQWRkSG90U3BvdC8nO1xyXG4gICAgUHJvcCA9IFByb3AgKyBrZXkgKyAnLCcgKyBjb29yZCArICcsJyArIHhwICsgJywnICsgeXAgKyAnLCcgKyB4cyArICcsJyArIHlzO1xyXG4gICAgdGhpcy5TaWdXZWJTZXRQcm9wZXJ0eVN5bmMoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgS2V5UGFkTWFya0hvdFNwb3Qoa2V5LCBjb29yZCwgeHAsIHlwLCB4cywgeXMpIHtcclxuICAgIHRoaXMuTENEV3JpdGVTdHJpbmcoMCwgMiwgeHAsIHlwLCAnMTZwdCBzYW5zLXNlcmlmJywgMzIsICcrJyk7XHJcbiAgICB0aGlzLkxDRFdyaXRlU3RyaW5nKDAsIDIsIHhwICsgeHMsIHlwLCAnMTZwdCBzYW5zLXNlcmlmJywgMzIsICcrJyk7XHJcbiAgICB0aGlzLkxDRFdyaXRlU3RyaW5nKDAsIDIsIHhwLCB5cCArIHlzLCAnMTZwdCBzYW5zLXNlcmlmJywgMzIsICcrJyk7XHJcbiAgICB0aGlzLkxDRFdyaXRlU3RyaW5nKDAsIDIsIHhwICsgeHMsIHlwICsgeXMsICcxNnB0IHNhbnMtc2VyaWYnLCAzMiwgJysnKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBLZXlQYWRRdWVyeUhvdFNwb3Qoa2V5KSB7XHJcbiAgICB2YXIgUHJvcCA9ICdLZXlQYWRRdWVyeUhvdFNwb3QvJztcclxuICAgIFByb3AgPSBQcm9wICsga2V5O1xyXG4gICAgcmV0dXJuIHRoaXMuU2lnV2ViR2V0UHJvcGVydHkoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgS2V5UGFkQ2xlYXJIb3RTcG90TGlzdCgpIHtcclxuICAgIHZhciBQcm9wID0gJ0tleVBhZENsZWFySG90U3BvdExpc3QnO1xyXG4gICAgdGhpcy5TaWdXZWJTZXRQcm9wZXJ0eVN5bmMoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgU2V0U2lnV2luZG93KGNvb3JkcywgeHAsIHlwLCB4cywgeXMpIHtcclxuICAgIHZhciBQcm9wID0gJ1NpZ1dpbmRvdy8nO1xyXG4gICAgUHJvcCA9IFByb3AgKyBjb29yZHMgKyAnLCcgKyB4cCArICcsJyArIHlwICsgJywnICsgeHMgKyAnLCcgKyB5cztcclxuICAgIHRoaXMuU2lnV2ViU2V0UHJvcGVydHlTeW5jKFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIENsZWFyU2lnV2luZG93KGluc2lkZSkge1xyXG4gICAgdmFyIFByb3AgPSAnQ2xlYXJTaWdXaW5kb3cvJztcclxuICAgIFByb3AgPSBQcm9wICsgaW5zaWRlO1xyXG4gICAgdGhpcy5TaWdXZWJTZXRQcm9wZXJ0eVN5bmMoUHJvcCk7XHJcbiAgfVxyXG5cclxuICAvL1xyXG4gIC8vXHRcdFNpZ1BsdXNORVRMQ0QuY3NcclxuICAvL1xyXG4gIHN0YXRpYyBTZXRMQ0RDYXB0dXJlTW9kZSh2KSB7XHJcbiAgICB2YXIgUHJvcCA9ICdDYXB0dXJlTW9kZS8nO1xyXG5cclxuICAgIFByb3AgPSBQcm9wICsgdjtcclxuICAgIHRoaXMuU2lnV2ViU2V0UHJvcGVydHlTeW5jKFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIEdldExDRENhcHR1cmVNb2RlKCkge1xyXG4gICAgdmFyIFByb3AgPSAnQ2FwdHVyZU1vZGUnO1xyXG5cclxuICAgIFByb3AgPSBQcm9wO1xyXG4gICAgcmV0dXJuIHRoaXMuU2lnV2ViR2V0UHJvcGVydHkoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgTENEU2V0V2luZG93KHhQLCB5UCwgeFMsIHlTKSB7XHJcbiAgICB2YXIgUHJvcCA9ICdMQ0RTZXRXaW5kb3cvJztcclxuICAgIFByb3AgPSBQcm9wICsgeFAgKyAnLCcgKyB5UCArICcsJyArIHhTICsgJywnICsgeVM7XHJcbiAgICB0aGlzLlNpZ1dlYlNldFByb3BlcnR5U3luYyhQcm9wKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBMQ0RXcml0ZVN0cmluZyhkZXN0LCBtb2RlLCB4LCB5LCBmbnQsIHNpemUsIHN0cikge1xyXG4gICAgdmFyIGMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcclxuICAgIHZhciBjbnR4ID0gYy5nZXRDb250ZXh0KCcyZCcpO1xyXG4gICAgY250eC5mb250ID0gZm50O1xyXG4gICAgdmFyIHR4dCA9IHN0cjtcclxuICAgIHZhciB4cyA9IE1hdGgucm91bmQoY250eC5tZWFzdXJlVGV4dCh0eHQpLndpZHRoKTtcclxuICAgIHZhciB5cyA9IHNpemU7XHJcbiAgICBjLndpZHRoID0geHM7XHJcbiAgICBjLmhlaWdodCA9IHlzO1xyXG5cclxuICAgIGlmICh4cyA9PSAwKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjbnR4LmZvbnQgPSBmbnQ7XHJcbiAgICBjbnR4LmZpbGxTdHlsZSA9ICcjRkZGRkZGJztcclxuICAgIGNudHgucmVjdCgwLCAwLCB4cywgeXMpO1xyXG4gICAgY250eC5maWxsKCk7XHJcblxyXG4gICAgY250eC5maWxsU3R5bGUgPSAnIzAwMDAwMCc7XHJcbiAgICBjbnR4LnRleHRCYXNlbGluZSA9ICd0b3AnO1xyXG4gICAgY250eC5maWxsVGV4dCh0eHQsIDAsIDApO1xyXG5cclxuICAgIGNudHguZHJhd0ltYWdlKGNudHguY2FudmFzLCAwLCAwLCB4cywgeXMpO1xyXG5cclxuICAgIHZhciBHc3RyID0gdGhpcy5jcmVhdGVMY2RCaXRtYXBGcm9tQ2FudmFzKGMsIHgsIHksIHhzLCB5cyk7XHJcblxyXG4gICAgdGhpcy5MY2RXcml0ZUltYWdlU3RyZWFtKGRlc3QsIG1vZGUsIHgsIHksIHhzLCB5cywgR3N0cik7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgTENERHJhd1JlY3RhbmdsZShkZXN0LCBtb2RlLCB4LCB5LCB4cywgeXMsIGZpbGwpIHtcclxuICAgIHZhciBjID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XHJcbiAgICB2YXIgY250eCA9IGMuZ2V0Q29udGV4dCgnMmQnKTtcclxuXHJcbiAgICBjLndpZHRoID0geHM7XHJcbiAgICBjLmhlaWdodCA9IHlzO1xyXG5cclxuICAgIGNudHguZmlsbFN0eWxlID0gZmlsbDtcclxuICAgIGNudHgucmVjdCgwLCAwLCB4cywgeXMpO1xyXG4gICAgY250eC5maWxsKCk7XHJcblxyXG4gICAgY250eC5kcmF3SW1hZ2UoY250eC5jYW52YXMsIDAsIDAsIHhzLCB5cyk7XHJcbiAgICB2YXIgR3N0ciA9IHRoaXMuY3JlYXRlTGNkQml0bWFwRnJvbUNhbnZhcyhjLCB4LCB5LCB4cywgeXMpO1xyXG4gICAgdGhpcy5MY2RXcml0ZUltYWdlQmxvYihkZXN0LCBtb2RlLCB4LCB5LCB4cywgeXMsIEdzdHIpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIExDRERyYXdCdXR0b24oZGVzdCwgbW9kZSwgeCwgeSwgeHMsIHlzLCBzdHJ5cywgZmlsbCwgZm50LCBzdHIpIHtcclxuICAgIHZhciBjID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XHJcbiAgICB2YXIgY250eCA9IGMuZ2V0Q29udGV4dCgnMmQnKTtcclxuICAgIGNudHguZm9udCA9IGZudDtcclxuICAgIHZhciB0eHQgPSBzdHI7XHJcbiAgICB2YXIgc3hzID0gTWF0aC5yb3VuZChjbnR4Lm1lYXN1cmVUZXh0KHR4dCkud2lkdGgpO1xyXG4gICAgdmFyIHN5cyA9IHN0cnlzO1xyXG4gICAgYy53aWR0aCA9IHhzO1xyXG4gICAgYy5oZWlnaHQgPSB5cztcclxuXHJcbiAgICBjbnR4LmZvbnQgPSBmbnQ7XHJcbiAgICBjbnR4LmZpbGxTdHlsZSA9IGZpbGw7XHJcbiAgICBjbnR4LnJlY3QoMCwgMCwgeHMsIHlzKTtcclxuICAgIGNudHguZmlsbCgpO1xyXG5cclxuICAgIGNudHguZmlsbFN0eWxlID0gJyNGRkZGRkYnO1xyXG4gICAgY250eC50ZXh0QmFzZWxpbmUgPSAndG9wJztcclxuICAgIGNudHguZmlsbFRleHQodHh0LCAoeHMgLSBzeHMpIC8gMiwgKHlzIC0gc3lzKSAvIDIpO1xyXG5cclxuICAgIGNudHguZHJhd0ltYWdlKGNudHguY2FudmFzLCAwLCAwLCB4cywgeXMpO1xyXG5cclxuICAgIHZhciBHc3RyID0gdGhpcy5jcmVhdGVMY2RCaXRtYXBGcm9tQ2FudmFzKGMsIHgsIHksIHhzLCB5cyk7XHJcblxyXG4gICAgdGhpcy5MY2RXcml0ZUltYWdlQmxvYihkZXN0LCBtb2RlLCB4LCB5LCB4cywgeXMsIEdzdHIpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIExDRFdyaXRlU3RyaW5nV2luZG93KGRlc3QsIG1vZGUsIHgsIHksIGZudCwgeHNpemUsIHlzaXplLCBzdHIpIHtcclxuICAgIHZhciBjID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XHJcbiAgICB2YXIgY250eCA9IGMuZ2V0Q29udGV4dCgnMmQnKTtcclxuICAgIGNudHguZm9udCA9IGZudDtcclxuICAgIHZhciB0eHQgPSBzdHI7XHJcbiAgICB2YXIgeHMgPSB4c2l6ZTtcclxuICAgIHZhciB5cyA9IHlzaXplO1xyXG4gICAgYy53aWR0aCA9IHhzO1xyXG4gICAgYy5oZWlnaHQgPSB5cztcclxuXHJcbiAgICBjbnR4LmZvbnQgPSBmbnQ7XHJcbiAgICBjbnR4LmZpbGxTdHlsZSA9ICcjRkZGRkZGJztcclxuICAgIGNudHgucmVjdCgwLCAwLCB4cywgeXMpO1xyXG4gICAgY250eC5maWxsKCk7XHJcblxyXG4gICAgY250eC5maWxsU3R5bGUgPSAnIzAwMDAwMCc7XHJcbiAgICBjbnR4LnRleHRCYXNlbGluZSA9ICd0b3AnO1xyXG4gICAgY250eC5maWxsVGV4dCh0eHQsIDAsIDApO1xyXG5cclxuICAgIGNudHguZHJhd0ltYWdlKGNudHguY2FudmFzLCAwLCAwLCB4cywgeXMpO1xyXG5cclxuICAgIHZhciBHc3RyID0gdGhpcy5jcmVhdGVMY2RCaXRtYXBGcm9tQ2FudmFzKGMsIHgsIHksIHhzLCB5cyk7XHJcblxyXG4gICAgdGhpcy5MY2RXcml0ZUltYWdlQmxvYihkZXN0LCBtb2RlLCB4LCB5LCB4cywgeXMsIEdzdHIpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIExDRFN0cmluZ1dpZHRoKGZudCwgc3RyKSB7XHJcbiAgICB2YXIgYyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xyXG4gICAgdmFyIGNudHggPSBjLmdldENvbnRleHQoJzJkJyk7XHJcbiAgICBjbnR4LmZvbnQgPSBmbnQ7XHJcbiAgICB2YXIgdHh0ID0gc3RyO1xyXG4gICAgdmFyIHhzID0gTWF0aC5yb3VuZChjbnR4Lm1lYXN1cmVUZXh0KHR4dCkud2lkdGgpO1xyXG5cclxuICAgIHJldHVybiB4cztcclxuICB9XHJcblxyXG4gIHN0YXRpYyBMQ0RTdHJpbmdIZWlnaHQoZm50LCBzdHIpIHtcclxuICAgIHJldHVybiAxNjtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBMY2RSZWZyZXNoKE1vZGUsIFhwLCBZcCwgWHMsIFlzKSB7XHJcbiAgICB2YXIgUHJvcCA9ICdMY2RSZWZyZXNoLyc7XHJcblxyXG4gICAgUHJvcCA9IFByb3AgKyBNb2RlICsgJywnICsgWHAgKyAnLCcgKyBZcCArICcsJyArIFhzICsgJywnICsgWXM7XHJcbiAgICB0aGlzLlNpZ1dlYlNldFByb3BlcnR5U3luYyhQcm9wKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBMQ0RTZW5kQ21kU3RyaW5nKENtZFN0ciwgUmV0dXJuQ291bnQsIFJlc3VsdCwgVGltZU91dCkge1xyXG4gICAgdmFyIFByb3AgPSAnTGNkU2VuZENtZFN0cmluZy8nO1xyXG5cclxuICAgIFByb3AgPSBQcm9wICsgUmV0dXJuQ291bnQgKyAnLCcgKyBUaW1lT3V0O1xyXG4gICAgUmVzdWx0ID0gdGhpcy5TaWdXZWJTZXRTdHJlYW1Qcm9wZXJ0eShQcm9wLCBDbWRTdHIpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIExDRFNlbmRDbWREYXRhKENtZFN0ciwgUmV0dXJuQ291bnQsIFJlc3VsdCwgVGltZU91dCkge1xyXG4gICAgdmFyIFByb3AgPSAnTGNkU2VuZENtZERhdGEvJztcclxuXHJcbiAgICBQcm9wID0gUHJvcCArIFJldHVybkNvdW50ICsgJywnICsgVGltZU91dDtcclxuICAgIFJlc3VsdCA9IHRoaXMuU2lnV2ViU2V0U3RyZWFtUHJvcGVydHkoUHJvcCwgQ21kU3RyKTtcclxuICB9XHJcblxyXG4gIC8vXHRcdGZ1bmN0aW9uICBMQ0RTZW5kV2luZG93ZWRHcmFwaGljQ2FudmFzKCAgZGVzdCwgbW9kZSwgIHgsICB5LCBjYW52YXMgKVxyXG4gIC8vXHRcdFx0IHtcclxuICAvL1x0XHRcdCB9XHJcblxyXG4gIC8vXHRcdGZ1bmN0aW9uICBMQ0RTZW5kV2luZG93ZWRHcmFwaGljQ2FudmFzKCAgZGVzdCwgbW9kZSwgIHgsICB5LCAgeHMsICB5cywgY2FudmFzIClcclxuICAvL1x0XHRcdHtcclxuICAvL1x0XHRcdHZhciBHc3RyID0gdGhpcy5jcmVhdGVMY2RCaXRtYXBGcm9tQ2FudmFzKCBjYW52YXMsIDAsIDAsIHhzLCB5cylcclxuICAvL1x0XHRcdExjZFdyaXRlSW1hZ2VTdHJlYW0oIGRlc3QsIG1vZGUsIHgsIHksIHhzLCB5cywgR3N0ciApO1xyXG4gIC8vXHRcdFx0fVxyXG5cclxuICBzdGF0aWMgTENEU2VuZFdpbmRvd2VkR3JhcGhpY0NhbnZhcyhkZXN0LCBtb2RlLCB4LCB5LCB4cywgeXMsIGMsIHhwcywgeXBzKSB7XHJcbiAgICB2YXIgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XHJcbiAgICB2YXIgR3N0ciA9IHRoaXMuY3JlYXRlTGNkQml0bWFwRnJvbUNhbnZhcyhjYW52YXMsIHhwcywgeXBzLCB4cywgeXMpO1xyXG4gICAgdGhpcy5MY2RXcml0ZUltYWdlU3RyZWFtKGRlc3QsIG1vZGUsIHgsIHksIHhzLCB5cywgR3N0cik7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgTENEU2VuZEdyYXBoaWNVcmwoZGVzdCwgbW9kZSwgeCwgeSwgdXJsKSB7XHJcbiAgICB0aGlzLkxjZFdyaXRlSW1hZ2UoZGVzdCwgbW9kZSwgeCwgeSwgdXJsKTtcclxuICB9XHJcblxyXG4gIC8vXHRcdGZ1bmN0aW9uICBMQ0RTZW5kR3JhcGhpYyggIERlc3QsICBNb2RlLCAgWFBvcywgIFlQb3MsICBJbWFnZUZpbGVOYW1lICkge31cclxuICAvL1x0XHRmdW5jdGlvbiAgTENEU2VuZEdyYXBoaWNVUkwoICBEZXN0LCAgTW9kZSwgIFhQb3MsICBZUG9zLCAgVVJMICkge31cclxuXHJcbiAgc3RhdGljIExDRENsZWFyKCkge1xyXG4gICAgdmFyIFByb3AgPSAnTGNkQ2xlYXInO1xyXG5cclxuICAgIFByb3AgPSBQcm9wO1xyXG4gICAgcmV0dXJuIHRoaXMuU2lnV2ViR2V0UHJvcGVydHkoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgTENEU2V0VGFibGV0TWFwKFxyXG4gICAgTENEVHlwZSxcclxuICAgIExDRFhTaXplLFxyXG4gICAgTENEWVNpemUsXHJcbiAgICBMQ0RYU3RhcnQsXHJcbiAgICBMQ0RZU3RhcnQsXHJcbiAgICBMQ0RYU3RvcCxcclxuICAgIExDRFlTdG9wXHJcbiAgKSB7fVxyXG5cclxuICBzdGF0aWMgTENEU2V0UGl4ZWxEZXB0aCh2KSB7XHJcbiAgICB2YXIgUHJvcCA9ICdMY2RTZXRQaXhlbERlcHRoLyc7XHJcblxyXG4gICAgUHJvcCA9IFByb3AgKyB2O1xyXG4gICAgdGhpcy5TaWdXZWJTZXRQcm9wZXJ0eVN5bmMoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgTENER2V0TENEU2l6ZSgpIHtcclxuICAgIHZhciBQcm9wID0gJ0xjZEdldExjZFNpemUnO1xyXG5cclxuICAgIFByb3AgPSBQcm9wO1xyXG4gICAgcmV0dXJuIHRoaXMuU2lnV2ViR2V0UHJvcGVydHkoUHJvcCk7XHJcbiAgfVxyXG4gIHN0YXRpYyBMQ0RHZXRDb21wcmVzc2lvbk1vZGUoKSB7XHJcbiAgICB2YXIgUHJvcCA9ICdMY2RDb21wcmVzc2lvbk1vZGUnO1xyXG5cclxuICAgIFByb3AgPSBQcm9wO1xyXG4gICAgcmV0dXJuIHRoaXMuU2lnV2ViR2V0UHJvcGVydHkoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgTENER2V0WkNvbXByZXNzaW9uTW9kZSgpIHtcclxuICAgIHZhciBQcm9wID0gJ0xjZFpDb21wcmVzc2lvbk1vZGUnO1xyXG5cclxuICAgIFByb3AgPSBQcm9wO1xyXG4gICAgcmV0dXJuIHRoaXMuU2lnV2ViR2V0UHJvcGVydHkoUHJvcCk7XHJcbiAgfVxyXG5cclxuICAvL1xyXG4gIC8vXHRcdFNpZ1BsdXNORVRMQ0QuY3NcclxuICAvL1xyXG5cclxuICBzdGF0aWMgU2V0UmVhbFRhYmxldFN0YXRlKHYpIHtcclxuICAgIHZhciBQcm9wID0gJ1RhYmxldFN0YXRlLyc7XHJcblxyXG4gICAgUHJvcCA9IFByb3AgKyB2O1xyXG4gICAgdGhpcy5TaWdXZWJTZXRQcm9wZXJ0eVN5bmMoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgR2V0VGFibGV0U3RhdGUoKSB7XHJcbiAgICB2YXIgUHJvcCA9ICdUYWJsZXRTdGF0ZSc7XHJcblxyXG4gICAgUHJvcCA9IFByb3A7XHJcbiAgICByZXR1cm4gdGhpcy5TaWdXZWJHZXRQcm9wZXJ0eShQcm9wKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBTZXRUYWJsZXRMb2dpY2FsWFNpemUodikge1xyXG4gICAgdmFyIFByb3AgPSAnVGFibGV0TG9naWNhbFhTaXplLyc7XHJcblxyXG4gICAgUHJvcCA9IFByb3AgKyB2O1xyXG4gICAgdGhpcy5TaWdXZWJTZXRQcm9wZXJ0eVN5bmMoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgR2V0VGFibGV0TG9naWNhbFhTaXplKCkge1xyXG4gICAgdmFyIFByb3AgPSAnVGFibGV0TG9naWNhbFhTaXplJztcclxuXHJcbiAgICBQcm9wID0gUHJvcDtcclxuICAgIHJldHVybiB0aGlzLlNpZ1dlYkdldFByb3BlcnR5KFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIEdldFRhYmxldExvZ2ljYWxZU2l6ZSgpIHtcclxuICAgIHZhciBQcm9wID0gJ1RhYmxldExvZ2ljYWxZU2l6ZSc7XHJcblxyXG4gICAgUHJvcCA9IFByb3A7XHJcbiAgICByZXR1cm4gdGhpcy5TaWdXZWJHZXRQcm9wZXJ0eShQcm9wKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBTZXRUYWJsZXRMb2dpY2FsWVNpemUodikge1xyXG4gICAgdmFyIFByb3AgPSAnVGFibGV0TG9naWNhbFlTaXplLyc7XHJcblxyXG4gICAgUHJvcCA9IFByb3AgKyB2O1xyXG4gICAgdGhpcy5TaWdXZWJTZXRQcm9wZXJ0eVN5bmMoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgU2V0VGFibGV0WFN0YXJ0KHYpIHtcclxuICAgIHZhciBQcm9wID0gJ1RhYmxldFhTdGFydC8nO1xyXG5cclxuICAgIFByb3AgPSBQcm9wICsgdjtcclxuICAgIHRoaXMuU2lnV2ViU2V0UHJvcGVydHlTeW5jKFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIEdldFRhYmxldFhTdGFydCgpIHtcclxuICAgIHZhciBQcm9wID0gJ1RhYmxldFhTdGFydCc7XHJcblxyXG4gICAgUHJvcCA9IFByb3A7XHJcbiAgICByZXR1cm4gdGhpcy5TaWdXZWJHZXRQcm9wZXJ0eShQcm9wKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBTZXRUYWJsZXRZU3RhcnQodikge1xyXG4gICAgdmFyIFByb3AgPSAnVGFibGV0WVN0YXJ0Lyc7XHJcblxyXG4gICAgUHJvcCA9IFByb3AgKyB2O1xyXG4gICAgdGhpcy5TaWdXZWJTZXRQcm9wZXJ0eVN5bmMoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgR2V0VGFibGV0WVN0YXJ0KCkge1xyXG4gICAgdmFyIFByb3AgPSAnVGFibGV0WVN0YXJ0JztcclxuXHJcbiAgICBQcm9wID0gUHJvcDtcclxuICAgIHJldHVybiB0aGlzLlNpZ1dlYkdldFByb3BlcnR5KFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIFNldFRhYmxldFhTdG9wKHYpIHtcclxuICAgIHZhciBQcm9wID0gJ1RhYmxldFhTdG9wLyc7XHJcblxyXG4gICAgUHJvcCA9IFByb3AgKyB2O1xyXG4gICAgdGhpcy5TaWdXZWJTZXRQcm9wZXJ0eVN5bmMoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgR2V0VGFibGV0WFN0b3AoKSB7XHJcbiAgICB2YXIgUHJvcCA9ICdUYWJsZXRYU3RvcCc7XHJcblxyXG4gICAgUHJvcCA9IFByb3A7XHJcbiAgICByZXR1cm4gdGhpcy5TaWdXZWJHZXRQcm9wZXJ0eShQcm9wKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBTZXRUYWJsZXRZU3RvcCh2KSB7XHJcbiAgICB2YXIgUHJvcCA9ICdUYWJsZXRZU3RvcC8nO1xyXG5cclxuICAgIFByb3AgPSBQcm9wICsgdjtcclxuICAgIHRoaXMuU2lnV2ViU2V0UHJvcGVydHlTeW5jKFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIEdldFRhYmxldFlTdG9wKCkge1xyXG4gICAgdmFyIFByb3AgPSAnVGFibGV0WVN0b3AnO1xyXG5cclxuICAgIFByb3AgPSBQcm9wO1xyXG4gICAgcmV0dXJuIHRoaXMuU2lnV2ViR2V0UHJvcGVydHkoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgU2V0VGFibGV0RmlsdGVyUG9pbnRzKHYpIHtcclxuICAgIHZhciBQcm9wID0gJ1RhYmxldEZpbHRlclBvaW50cy8nO1xyXG5cclxuICAgIFByb3AgPSBQcm9wICsgdjtcclxuICAgIHRoaXMuU2lnV2ViU2V0UHJvcGVydHlTeW5jKFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIEdldFRhYmxldEZpbHRlclBvaW50cygpIHtcclxuICAgIHZhciBQcm9wID0gJ1RhYmxldEZpbHRlclBvaW50cyc7XHJcblxyXG4gICAgUHJvcCA9IFByb3A7XHJcbiAgICByZXR1cm4gdGhpcy5TaWdXZWJHZXRQcm9wZXJ0eShQcm9wKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBTZXRUYWJsZXRUaW1pbmdBZHZhbmNlKHYpIHtcclxuICAgIHZhciBQcm9wID0gJ1RhYmxldFRpbWluZ0FkdmFuY2UvJztcclxuXHJcbiAgICBQcm9wID0gUHJvcCArIHY7XHJcbiAgICB0aGlzLlNpZ1dlYlNldFByb3BlcnR5U3luYyhQcm9wKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBHZXRUYWJsZXRUaW1pbmdBZHZhbmNlKCkge1xyXG4gICAgdmFyIFByb3AgPSAnVGFibGV0VGltaW5nQWR2YW5jZSc7XHJcblxyXG4gICAgUHJvcCA9IFByb3A7XHJcbiAgICByZXR1cm4gdGhpcy5TaWdXZWJHZXRQcm9wZXJ0eShQcm9wKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBTZXRUYWJsZXRDb21Qb3J0KHYpIHtcclxuICAgIHZhciBQcm9wID0gJ1RhYmxldENvbVBvcnQvJztcclxuXHJcbiAgICBQcm9wID0gUHJvcCArIHY7XHJcbiAgICB0aGlzLlNpZ1dlYlNldFByb3BlcnR5U3luYyhQcm9wKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBHZXRUYWJsZXRDb21Qb3J0KCkge1xyXG4gICAgdmFyIFByb3AgPSAnVGFibGV0Q29tUG9ydCc7XHJcblxyXG4gICAgUHJvcCA9IFByb3A7XHJcbiAgICByZXR1cm4gdGhpcy5TaWdXZWJHZXRQcm9wZXJ0eShQcm9wKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBTZXRUYWJsZXRCYXVkUmF0ZSh2KSB7XHJcbiAgICB2YXIgUHJvcCA9ICdUYWJsZXRCYXVkUmF0ZS8nO1xyXG5cclxuICAgIFByb3AgPSBQcm9wICsgdjtcclxuICAgIHRoaXMuU2lnV2ViU2V0UHJvcGVydHlTeW5jKFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIEdldFRhYmxldEJhdWRSYXRlKCkge1xyXG4gICAgdmFyIFByb3AgPSAnVGFibGV0QmF1ZFJhdGUnO1xyXG5cclxuICAgIFByb3AgPSBQcm9wO1xyXG4gICAgcmV0dXJuIHRoaXMuU2lnV2ViR2V0UHJvcGVydHkoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgU2V0VGFibGV0Um90YXRpb24odikge1xyXG4gICAgdmFyIFByb3AgPSAnVGFibGV0Um90YXRpb24vJztcclxuXHJcbiAgICBQcm9wID0gUHJvcCArIHY7XHJcbiAgICB0aGlzLlNpZ1dlYlNldFByb3BlcnR5U3luYyhQcm9wKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBHZXRUYWJsZXRSb3RhdGlvbigpIHtcclxuICAgIHZhciBQcm9wID0gJ1RhYmxldFJvdGF0aW9uJztcclxuXHJcbiAgICBQcm9wID0gUHJvcDtcclxuICAgIHJldHVybiB0aGlzLlNpZ1dlYkdldFByb3BlcnR5KFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIFNldFRhYmxldFR5cGUodikge1xyXG4gICAgdmFyIFByb3AgPSAnVGFibGV0VHlwZS8nO1xyXG5cclxuICAgIFByb3AgPSBQcm9wICsgdjtcclxuICAgIHRoaXMuU2lnV2ViU2V0UHJvcGVydHlTeW5jKFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIEdldFRhYmxldFR5cGUoKSB7XHJcbiAgICB2YXIgUHJvcCA9ICdUYWJsZXRUeXBlJztcclxuXHJcbiAgICBQcm9wID0gUHJvcDtcclxuICAgIHJldHVybiB0aGlzLlNpZ1dlYkdldFByb3BlcnR5KFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIFNldFNlcnZlclRhYmxldFR5cGUodikge1xyXG4gICAgdmFyIFByb3AgPSAnU2VydmVyVGFibGV0VHlwZS8nO1xyXG5cclxuICAgIFByb3AgPSBQcm9wICsgdjtcclxuICAgIHRoaXMuU2lnV2ViU2V0UHJvcGVydHlTeW5jKFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIEdldFNlcnZlclRhYmxldFR5cGUoKSB7XHJcbiAgICB2YXIgUHJvcCA9ICdTZXJ2ZXJUYWJsZXRUeXBlJztcclxuXHJcbiAgICBQcm9wID0gUHJvcDtcclxuICAgIHJldHVybiB0aGlzLlNpZ1dlYkdldFByb3BlcnR5KFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIFNldFRhYmxldENvbVRlc3Qodikge1xyXG4gICAgdmFyIFByb3AgPSAnVGFibGV0Q29tVGVzdC8nO1xyXG5cclxuICAgIFByb3AgPSBQcm9wICsgdjtcclxuICAgIHRoaXMuU2lnV2ViU2V0UHJvcGVydHlTeW5jKFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIEdldFRhYmxldENvbVRlc3QoKSB7XHJcbiAgICB2YXIgUHJvcCA9ICdUYWJsZXRDb21UZXN0JztcclxuXHJcbiAgICBQcm9wID0gUHJvcDtcclxuICAgIHJldHVybiB0aGlzLlNpZ1dlYkdldFByb3BlcnR5KFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIFNldFRhYmxldFJlc29sdXRpb24odikge1xyXG4gICAgdmFyIFByb3AgPSAnVGFibGV0UmVzb2x1dGlvbi8nO1xyXG5cclxuICAgIFByb3AgPSBQcm9wICsgdjtcclxuICAgIHRoaXMuU2lnV2ViU2V0UHJvcGVydHlTeW5jKFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIEdldFRhYmxldFJlc29sdXRpb24oKSB7XHJcbiAgICB2YXIgUHJvcCA9ICdUYWJsZXRSZXNvbHV0aW9uJztcclxuXHJcbiAgICBQcm9wID0gUHJvcDtcclxuICAgIHJldHVybiB0aGlzLlNpZ1dlYkdldFByb3BlcnR5KFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIFRhYmxldENvbm5lY3RRdWVyeSgpIHtcclxuICAgIHZhciBQcm9wID0gJ1RhYmxldENvbm5lY3RRdWVyeSc7XHJcblxyXG4gICAgUHJvcCA9IFByb3A7XHJcbiAgICByZXR1cm4gdGhpcy5TaWdXZWJHZXRQcm9wZXJ0eShQcm9wKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBUYWJsZXRNb2RlbE51bWJlcigpIHtcclxuICAgIHZhciBQcm9wID0gJ1RhYmxldE1vZGVsTnVtYmVyJztcclxuXHJcbiAgICBQcm9wID0gUHJvcDtcclxuICAgIHJldHVybiB0aGlzLlNpZ1dlYkdldFByb3BlcnR5KFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIFRhYmxldFNlcmlhbE51bWJlcigpIHtcclxuICAgIHZhciBQcm9wID0gJ1RhYmxldFNlcmlhbE51bWJlcic7XHJcblxyXG4gICAgUHJvcCA9IFByb3A7XHJcbiAgICByZXR1cm4gdGhpcy5TaWdXZWJHZXRQcm9wZXJ0eShQcm9wKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBTZXRUYWJsZXRQb3J0UGF0aCh2KSB7XHJcbiAgICB2YXIgUHJvcCA9ICdUYWJsZXRQb3J0UGF0aC8nO1xyXG5cclxuICAgIFByb3AgPSBQcm9wICsgdjtcclxuICAgIHRoaXMuU2lnV2ViU2V0UHJvcGVydHlTeW5jKFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIFNldFRhYmxldExvY2FsSW5pRmlsZVBhdGgodikge1xyXG4gICAgdmFyIFByb3AgPSAnVGFibGV0TG9jYWxJbmlGaWxlUGF0aC8nO1xyXG5cclxuICAgIFByb3AgPSBQcm9wICsgdjtcclxuICAgIHRoaXMuU2lnV2ViU2V0UHJvcGVydHlTeW5jKFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIFNldFRhYmxldE1vZGVsKHYpIHtcclxuICAgIHZhciBQcm9wID0gJ1RhYmxldE1vZGVsLyc7XHJcblxyXG4gICAgUHJvcCA9IFByb3AgKyB2O1xyXG4gICAgdGhpcy5TaWdXZWJTZXRQcm9wZXJ0eVN5bmMoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgU2V0U2VyaWFsUG9ydENsb3NlRGVsYXkodikge1xyXG4gICAgdmFyIFByb3AgPSAnU2VyaWFsUG9ydENsb3NlRGVsYXkvJztcclxuXHJcbiAgICBQcm9wID0gUHJvcCArIHY7XHJcbiAgICB0aGlzLlNpZ1dlYlNldFByb3BlcnR5U3luYyhQcm9wKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBHZXRTZXJpYWxQb3J0Q2xvc2VEZWxheSgpIHtcclxuICAgIHZhciBQcm9wID0gJ1NlcmlhbFBvcnRDbG9zZURlbGF5JztcclxuXHJcbiAgICBQcm9wID0gUHJvcDtcclxuICAgIHJldHVybiB0aGlzLlNpZ1dlYkdldFByb3BlcnR5KFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIEVuYWJsZVRhYmxldEVuY3J5cHRpb24oKSB7XHJcbiAgICB2YXIgUHJvcCA9ICdFbmFibGVUYWJsZXRFbmNyeXB0aW9uJztcclxuXHJcbiAgICBQcm9wID0gUHJvcDtcclxuICAgIHRoaXMuU2lnV2ViU2V0UHJvcGVydHlTeW5jKFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIFNldFRhYmxldEVuY3J5cHRpb25Nb2RlKGhtb2RlLCB0bW9kZSkge1xyXG4gICAgdmFyIFByb3AgPSAnVGFibGV0RW5jcnlwdGlvbk1vZGUvJztcclxuXHJcbiAgICBQcm9wID0gUHJvcCArIGhtb2RlICsgJywnICsgdG1vZGU7XHJcbiAgICB0aGlzLlNpZ1dlYlNldFByb3BlcnR5U3luYyhQcm9wKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBTZXRNYXhMb2dGaWxlU2l6ZSh2KSB7XHJcbiAgICB2YXIgUHJvcCA9ICdNYXhMb2dGaWxlU2l6ZS8nO1xyXG5cclxuICAgIFByb3AgPSBQcm9wICsgdjtcclxuICAgIHRoaXMuU2lnV2ViU2V0UHJvcGVydHlTeW5jKFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIEdldFNpZ1NvY2tTZXJ2ZXJQYXRoKCkge1xyXG4gICAgdmFyIFByb3AgPSAnU2lnU29ja1NlcnZlclBhdGgnO1xyXG5cclxuICAgIFByb3AgPSBQcm9wO1xyXG4gICAgcmV0dXJuIHRoaXMuU2lnV2ViR2V0UHJvcGVydHkoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgR2V0U2lnU29ja0NsaWVudE5hbWUoKSB7XHJcbiAgICB2YXIgUHJvcCA9ICdTaWdTb2NrQ2xpZW50TmFtZSc7XHJcblxyXG4gICAgUHJvcCA9IFByb3A7XHJcbiAgICByZXR1cm4gdGhpcy5TaWdXZWJHZXRQcm9wZXJ0eShQcm9wKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBHZXRTaWdTb2NrUG9ydE51bWJlcigpIHtcclxuICAgIHZhciBQcm9wID0gJ1NpZ1NvY2tQb3J0TnVtYmVyJztcclxuXHJcbiAgICBQcm9wID0gUHJvcDtcclxuICAgIHJldHVybiB0aGlzLlNpZ1dlYkdldFByb3BlcnR5KFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIFNldFNpZ1NvY2tTZXJ2ZXJQYXRoKHYpIHtcclxuICAgIHZhciBQcm9wID0gJ1NpZ1NvY2tTZXJ2ZXJQYXRoLyc7XHJcblxyXG4gICAgUHJvcCA9IFByb3AgKyB2O1xyXG4gICAgdGhpcy5TaWdXZWJTZXRQcm9wZXJ0eVN5bmMoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgU2V0U2lnU29ja0NsaWVudE5hbWUodikge1xyXG4gICAgdmFyIFByb3AgPSAnU2lnU29ja0NsaWVudE5hbWUvJztcclxuXHJcbiAgICBQcm9wID0gUHJvcCArIHY7XHJcbiAgICB0aGlzLlNpZ1dlYlNldFByb3BlcnR5U3luYyhQcm9wKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBTZXRQb3J0TnVtYmVyKHYpIHtcclxuICAgIHZhciBQcm9wID0gJ1BvcnROdW1iZXIvJztcclxuXHJcbiAgICBQcm9wID0gUHJvcCArIHY7XHJcbiAgICB0aGlzLlNpZ1dlYlNldFByb3BlcnR5U3luYyhQcm9wKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBTZXRTaWdTb2NrUG9ydE51bWJlcih2KSB7XHJcbiAgICB2YXIgUHJvcCA9ICdTaWdTb2NrUG9ydE51bWJlci8nO1xyXG5cclxuICAgIFByb3AgPSBQcm9wICsgdjtcclxuICAgIHRoaXMuU2lnV2ViU2V0UHJvcGVydHlTeW5jKFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIEdldEZpcm13YXJlUmV2aXNpb24oKSB7XHJcbiAgICB2YXIgUHJvcCA9ICdGaXJtd2FyZVJldmlzaW9uJztcclxuXHJcbiAgICBQcm9wID0gUHJvcDtcclxuICAgIHJldHVybiB0aGlzLlNpZ1dlYkdldFByb3BlcnR5KFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIFNldFRhYmxldERhdGEoc2lnU3RyKSB7XHJcbiAgICB2YXIgUHJvcCA9ICdUYWJsZXREYXRhJztcclxuXHJcbiAgICBQcm9wID0gUHJvcDtcclxuICAgIHRoaXMuU2lnV2ViU2V0U3RyZWFtUHJvcGVydHkoUHJvcCwgc2lnU3RyKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBHZXRUYWJsZXREYXRhKCkge1xyXG4gICAgdmFyIFByb3AgPSAnVGFibGV0RGF0YSc7XHJcblxyXG4gICAgUHJvcCA9IFByb3A7XHJcbiAgICB2YXIgU3RyID0gdGhpcy5TaWdXZWJHZXRQcm9wZXJ0eShQcm9wKTtcclxuXHJcbiAgICByZXR1cm4gU3RyLnNsaWNlKDEsIFN0ci5sZW5ndGggLSAxKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBPcGVuVGFibGV0KHYpIHtcclxuICAgIHZhciBQcm9wID0gJ09wZW5UYWJsZXQvJztcclxuXHJcbiAgICBQcm9wID0gUHJvcCArIHY7XHJcbiAgICB0aGlzLlNpZ1dlYlNldFByb3BlcnR5U3luYyhQcm9wKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBDbG9zZVRhYmxldCgpIHtcclxuICAgIHZhciBQcm9wID0gJ0Nsb3NlVGFibGV0JztcclxuXHJcbiAgICBQcm9wID0gUHJvcDtcclxuICAgIHRoaXMuU2lnV2ViU2V0UHJvcGVydHkoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgUmVzZXRQYXJhbWV0ZXJzKCkge1xyXG4gICAgdmFyIFByb3AgPSAnUmVzZXRQYXJhbWV0ZXJzJztcclxuXHJcbiAgICBQcm9wID0gUHJvcDtcclxuICAgIHRoaXMuU2lnV2ViU2V0UHJvcGVydHlTeW5jKFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIHRlc3RSYXdEYXRhKCkge1xyXG4gICAgdGhpcy5PcGVuVGFibGV0KDEpO1xyXG4gICAgdmFyIFN0cjEgPSB0aGlzLkdldFRhYmxldERhdGEoKTtcclxuICAgIHRoaXMuQ2xvc2VUYWJsZXQoKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBTZXRUYWJsZXRTdGF0ZSh2LCBjdHgsIHR2KSB7XHJcbiAgICB2YXIgZGVsYXk7XHJcblxyXG4gICAgaWYgKHR2KSB7XHJcbiAgICAgIGRlbGF5ID0gdHY7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBkZWxheSA9IDEwMDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5HZXRUYWJsZXRTdGF0ZSgpICE9IHYpIHtcclxuICAgICAgaWYgKHYgPT0gMSkge1xyXG4gICAgICAgIGlmIChjdHgpIHtcclxuICAgICAgICAgIHZhciBjYW4gPSBjdHguY2FudmFzO1xyXG4gICAgICAgICAgdGhpcy5TZXREaXNwbGF5WFNpemUoY2FuLndpZHRoKTtcclxuICAgICAgICAgIHRoaXMuU2V0RGlzcGxheVlTaXplKGNhbi5oZWlnaHQpO1xyXG4gICAgICAgICAgdGhpcy5TaWdXZWJTZXREaXNwbGF5VGFyZ2V0KGN0eCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuU2V0UmVhbFRhYmxldFN0YXRlKHYpO1xyXG4gICAgICAgIHZhciBkYXRhID0gdGhpcy5HZXRUYWJsZXRTdGF0ZSgpO1xyXG4gICAgICAgIHZhciBkYXRhUmVzdWx0ID0gZGF0YSA9PSAnJyB8fCBkYXRhID09IG51bGwgPyAwIDogTnVtYmVyKGRhdGEpO1xyXG4gICAgICAgIHZhciB0bXIgPSBudWxsO1xyXG4gICAgICAgIGlmIChjdHggJiYgZGF0YVJlc3VsdCAhPSAwKSB7XHJcbiAgICAgICAgICB0bXIgPSBzZXRJbnRlcnZhbCgoKSA9PiB0aGlzLlNpZ1dlYlJlZnJlc2goKSwgZGVsYXkpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0bXIgPSBudWxsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRtcjtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoY3R4KSB7XHJcbiAgICAgICAgICBjbGVhckludGVydmFsKGN0eCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuU2lnV2ViU2V0RGlzcGxheVRhcmdldChudWxsKTtcclxuICAgICAgICB0aGlzLlNldFJlYWxUYWJsZXRTdGF0ZSh2KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG59XHJcbiJdfQ==
1442
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2lnV2ViLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbGliZXktbmctY29tcG9uZW50LWxpYnJhcnkvc3JjL3V0aWxzL1NpZ1dlYi9TaWdXZWIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsa0JBQWtCO0FBQ2xCLE1BQU0sT0FBTyxZQUFZO0lBQ2YsTUFBTSxDQUFDLGFBQWEsQ0FBQyxHQUFXO1FBQ3RDLElBQUksTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNkLEdBQUcsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDMUI7YUFBTSxJQUFJLE1BQU0sQ0FBQyxTQUFTLEVBQUU7WUFDM0IsU0FBUyxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUNoQztJQUNILENBQUM7SUFDTyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQVU7UUFDbEMsSUFBSSxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ2QsT0FBTyxHQUFHLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ2xDO2FBQU0sSUFBSSxNQUFNLENBQUMsU0FBUyxFQUFFO1lBQzNCLE9BQU8sU0FBUyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN4QztRQUNELE9BQU8sRUFBRSxDQUFDLENBQUMsNENBQTRDO0lBQ3pELENBQUM7SUFZTyxNQUFNLENBQUMsT0FBTztRQUNwQixJQUFJLElBQUksR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDO1FBQzdCLElBQUksSUFBSSxJQUFJLE9BQU8sRUFBRTtZQUNuQixJQUFJLEdBQUcsT0FBTyxDQUFDO1NBQ2hCO1FBRUQsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDZixJQUFJLElBQUksSUFBSSxRQUFRLEVBQUU7Z0JBQ3BCLE9BQU8sSUFBSSxHQUFHLHlDQUF5QyxDQUFDO2FBQ3pEO2lCQUFNO2dCQUNMLE9BQU8sSUFBSSxHQUFHLHlDQUF5QyxDQUFDO2FBQ3pE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UUFDWixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsTUFBTSxDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFDOUIsSUFBSSxJQUFJLEdBQUcsdUJBQXVCLENBQUM7UUFFbkMsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLENBQUM7UUFDaEIsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxNQUFNLENBQUMsdUJBQXVCO1FBQzVCLElBQUksSUFBSSxHQUFHLHNCQUFzQixDQUFDO1FBRWxDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDWixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsTUFBTSxDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFDOUIsSUFBSSxJQUFJLEdBQUcsdUJBQXVCLENBQUM7UUFFbkMsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLENBQUM7UUFDaEIsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxNQUFNLENBQUMsdUJBQXVCO1FBQzVCLElBQUksSUFBSSxHQUFHLHNCQUFzQixDQUFDO1FBRWxDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDWixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsTUFBTSxDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFDOUIsSUFBSSxJQUFJLEdBQUcsdUJBQXVCLENBQUM7UUFFbkMsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLENBQUM7UUFDaEIsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxNQUFNLENBQUMsdUJBQXVCO1FBQzVCLElBQUksSUFBSSxHQUFHLHNCQUFzQixDQUFDO1FBRWxDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDWixPQUFPLElBQUksQ0FB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QUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7aUJBQ3REO3FCQUFNO29CQUNMLEdBQUcsR0FBRyxJQUFJLENBQUM7aUJBQ1o7Z0JBRUQsT0FBTyxHQUFHLENBQUM7YUFDWjtpQkFBTTtnQkFDTCxJQUFJLEdBQUcsRUFBRTtvQkFDUCxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7aUJBQ3BCO2dCQUNELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDbEMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQzVCO1NBQ0Y7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7O0FBOTFEYyxvQkFBTyxHQUFXLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQztBQUV6QyxrQkFBSyxHQUFZLEtBQUssQ0FBQztBQUl2QixnQ0FBbUIsR0FBRyxHQUFHLENBQUM7QUFDMUIsOEJBQWlCLEdBQUcsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gU2lnV2ViVGFibGV0LnRzXHJcbmV4cG9ydCBjbGFzcyBTaWdXZWJUYWJsZXQge1xyXG4gIHByaXZhdGUgc3RhdGljIHJldm9rZUJsb2JVUkwodXJsOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGlmICh3aW5kb3cuVVJMKSB7XHJcbiAgICAgIFVSTC5yZXZva2VPYmplY3RVUkwodXJsKTtcclxuICAgIH0gZWxzZSBpZiAod2luZG93LndlYmtpdFVSTCkge1xyXG4gICAgICB3ZWJraXRVUkwucmV2b2tlT2JqZWN0VVJMKHVybCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHByaXZhdGUgc3RhdGljIGdldEJsb2JVUkwoYmxvYjogQmxvYik6IHN0cmluZyB7XHJcbiAgICBpZiAod2luZG93LlVSTCkge1xyXG4gICAgICByZXR1cm4gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcclxuICAgIH0gZWxzZSBpZiAod2luZG93LndlYmtpdFVSTCkge1xyXG4gICAgICByZXR1cm4gd2Via2l0VVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcclxuICAgIH1cclxuICAgIHJldHVybiAnJzsgLy8gUmV0b3JuYXIgdW4gc3RyaW5nIHZhY8OtbyBlbiBjYXNvIGRlIGVycm9yXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBiYXNlVXJpOiBzdHJpbmcgPSBTaWdXZWJUYWJsZXQubWFrZVVyaSgpO1xyXG4gIHByaXZhdGUgc3RhdGljIGN0eDtcclxuICBwcml2YXRlIHN0YXRpYyBDb3VudDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgc3RhdGljIEV2U3RhdHVzO1xyXG4gIHByaXZhdGUgc3RhdGljIG9uU2lnUGVuRG93bjtcclxuICBwcml2YXRlIHN0YXRpYyBvblNpZ1BlblVwO1xyXG4gIHByaXZhdGUgc3RhdGljIFNpZ1dlYkZvbnRUaHJlc2hvbGQgPSAxNTU7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgTnVtUG9pbnRzTGFzdFRpbWUgPSAwO1xyXG4gIHByaXZhdGUgc3RhdGljIFNpZ0ltYWdlQjY0O1xyXG5cclxuICBwcml2YXRlIHN0YXRpYyBtYWtlVXJpKCk6IHN0cmluZyB7XHJcbiAgICB2YXIgcHJvdCA9IGxvY2F0aW9uLnByb3RvY29sO1xyXG4gICAgaWYgKHByb3QgPT0gJ2ZpbGU6Jykge1xyXG4gICAgICBwcm90ID0gJ2h0dHA6JztcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5pc0lFKCkpIHtcclxuICAgICAgaWYgKHByb3QgPT0gJ2h0dHBzOicpIHtcclxuICAgICAgICByZXR1cm4gcHJvdCArICcvL3RhYmxldC5zaWd3ZWJ0YWJsZXQuY29tOjQ3MjkwL1NpZ1dlYi8nO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBwcm90ICsgJy8vdGFibGV0LnNpZ3dlYnRhYmxldC5jb206NDcyODkvU2lnV2ViLyc7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5pc0Nocm9tZSgpKSB7XHJcbiAgICAgIGlmIChwcm90ID09ICdodHRwczonKSB7XHJcbiAgICAgICAgcmV0dXJuIHByb3QgKyAnLy90YWJsZXQuc2lnd2VidGFibGV0LmNvbTo0NzI5MC9TaWdXZWIvJztcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gcHJvdCArICcvL3RhYmxldC5zaWd3ZWJ0YWJsZXQuY29tOjQ3Mjg5L1NpZ1dlYi8nO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvL0ZJUkVGT1hcclxuICAgICAgaWYgKHByb3QgPT0gJ2h0dHBzOicpIHtcclxuICAgICAgICByZXR1cm4gcHJvdCArICcvL3RhYmxldC5zaWd3ZWJ0YWJsZXQuY29tOjQ3MjkwL1NpZ1dlYi8nO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBwcm90ICsgJy8vdGFibGV0LnNpZ3dlYnRhYmxldC5jb206NDcyODkvU2lnV2ViLyc7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIGdlbmVyYXRlVVVJRCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuICd4eHh4eHh4eC14eHh4LTR4eHgteXh4eC14eHh4eHh4eHh4eHgnLnJlcGxhY2UoXHJcbiAgICAgIC9beHldL2csXHJcbiAgICAgIGZ1bmN0aW9uIChjKSB7XHJcbiAgICAgICAgY29uc3QgciA9IChNYXRoLnJhbmRvbSgpICogMTYpIHwgMDtcclxuICAgICAgICBjb25zdCB2ID0gYyA9PT0gJ3gnID8gciA6IChyICYgMHgzKSB8IDB4ODtcclxuICAgICAgICByZXR1cm4gdi50b1N0cmluZygxNik7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgaXNTaWdXZWJJbnN0YWxsZWQoKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcclxuICAgIHRyeSB7XHJcbiAgICAgIHhoci5vcGVuKFxyXG4gICAgICAgICdHRVQnLFxyXG4gICAgICAgIGAke3RoaXMuYmFzZVVyaX1UYWJsZXRTdGF0ZT9ub0NhY2hlPSR7dGhpcy5nZW5lcmF0ZVVVSUQoKX1gLFxyXG4gICAgICAgIGZhbHNlXHJcbiAgICAgICk7XHJcbiAgICAgIHhoci5zZW5kKCk7XHJcbiAgICAgIHJldHVybiB4aHIuc3RhdHVzICE9PSA0MDQgJiYgeGhyLnN0YXR1cyAhPT0gMDtcclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgY29uc29sZS5sb2coJ0Vycm9yIGNoZWNraW5nIFNpZ1dlYiBpbnN0YWxsYXRpb24nLCBlKTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIGlzSUUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICBuYXZpZ2F0b3IuYXBwTmFtZSA9PT0gJ01pY3Jvc29mdCBJbnRlcm5ldCBFeHBsb3JlcicgfHxcclxuICAgICAgKG5hdmlnYXRvci5hcHBOYW1lID09PSAnTmV0c2NhcGUnICYmXHJcbiAgICAgICAgbmV3IFJlZ0V4cCgnVHJpZGVudC8uKnJ2OihbMC05XXsxLH1bLjAtOV17MCx9KScpLmV4ZWMoXHJcbiAgICAgICAgICBuYXZpZ2F0b3IudXNlckFnZW50XHJcbiAgICAgICAgKSAhPSBudWxsKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBpc0Nocm9tZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBuYXZpZ2F0b3IudXNlckFnZW50Lmxhc3RJbmRleE9mKCdDaHJvbWUvJykgPiAwO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIFNpZ1dlYmNyZWF0ZVhIUigpOiBYTUxIdHRwUmVxdWVzdCB8IG51bGwge1xyXG4gICAgY29uc3QgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XHJcbiAgICBpZiAoIXhocikge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIHNlIHB1ZG8gY3JlYXIgWE1MSHR0cFJlcXVlc3QnKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4geGhyO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIFNpZ1dlYlNldFByb3BlcnR5KHByb3A6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCB4aHI6IFhNTEh0dHBSZXF1ZXN0IHwgbnVsbCA9IHRoaXMuU2lnV2ViY3JlYXRlWEhSKCk7XHJcblxyXG4gICAgaWYgKHhocikge1xyXG4gICAgICB4aHIub3BlbignUE9TVCcsIHRoaXMuYmFzZVVyaSArIHByb3AsIHRydWUpO1xyXG4gICAgICB4aHIuc2VuZChudWxsKTtcclxuICAgICAgaWYgKHhoci5yZWFkeVN0YXRlID09PSA0ICYmIHhoci5zdGF0dXMgPT09IDIwMCkge1xyXG4gICAgICAgIHJldHVybiB4aHIucmVzcG9uc2VUZXh0O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gJyc7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgU2lnV2ViU2V0UHJvcGVydHlTeW5jKHByb3A6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCB4aHI6IFhNTEh0dHBSZXF1ZXN0IHwgbnVsbCA9IHRoaXMuU2lnV2ViY3JlYXRlWEhSKCk7XHJcblxyXG4gICAgaWYgKHhocikge1xyXG4gICAgICB4aHIub3BlbignUE9TVCcsIHRoaXMuYmFzZVVyaSArIHByb3AsIGZhbHNlKTtcclxuICAgICAgeGhyLnNlbmQoKTtcclxuICAgICAgaWYgKHhoci5yZWFkeVN0YXRlID09PSA0ICYmIHhoci5zdGF0dXMgPT09IDIwMCkge1xyXG4gICAgICAgIHJldHVybiB4aHIucmVzcG9uc2VUZXh0O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gJyc7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgU2lnV2ViU2V0U3RyZWFtUHJvcGVydHkocHJvcDogc3RyaW5nLCBzdHJtOiBhbnkpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgeGhyOiBYTUxIdHRwUmVxdWVzdCB8IG51bGwgPSB0aGlzLlNpZ1dlYmNyZWF0ZVhIUigpO1xyXG5cclxuICAgIGlmICh4aHIpIHtcclxuICAgICAgeGhyLm9wZW4oJ1BPU1QnLCB0aGlzLmJhc2VVcmkgKyBwcm9wKTtcclxuICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICd0ZXh0L3BsYWluJyk7XHJcbiAgICAgIHhoci5zZW5kKHN0cm0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuICcnO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIFNpZ1dlYlN5bmNTZXRTdHJlYW1Qcm9wZXJ0eShwcm9wOiBzdHJpbmcsIHN0cm06IGFueSk6IHN0cmluZyB7XHJcbiAgICBjb25zdCB4aHI6IFhNTEh0dHBSZXF1ZXN0IHwgbnVsbCA9IHRoaXMuU2lnV2ViY3JlYXRlWEhSKCk7XHJcblxyXG4gICAgaWYgKHhocikge1xyXG4gICAgICB4aHIub3BlbignUE9TVCcsIHRoaXMuYmFzZVVyaSArIHByb3AsIGZhbHNlKTtcclxuICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICd0ZXh0L3BsYWluJyk7XHJcbiAgICAgIHhoci5zZW5kKHN0cm0pO1xyXG4gICAgICBpZiAoeGhyLnJlYWR5U3RhdGUgPT09IDQgJiYgeGhyLnN0YXR1cyA9PT0gMjAwKSB7XHJcbiAgICAgICAgcmV0dXJuIHhoci5yZXNwb25zZVRleHQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiAnJztcclxuICB9XHJcblxyXG4gIHN0YXRpYyBTaWdXZWJTZXRJbWFnZVN0cmVhbVByb3BlcnR5KHByb3A6IHN0cmluZywgc3RybTogYW55KTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHhocjogWE1MSHR0cFJlcXVlc3QgfCBudWxsID0gdGhpcy5TaWdXZWJjcmVhdGVYSFIoKTtcclxuXHJcbiAgICBpZiAoeGhyKSB7XHJcbiAgICAgIHhoci5vcGVuKCdQT1NUJywgdGhpcy5iYXNlVXJpICsgcHJvcCwgZmFsc2UpO1xyXG4gICAgICB4aHIuc2V0UmVxdWVzdEhlYWRlcignQ29udGVudC1UeXBlJywgJ2ltYWdlL3BuZycpO1xyXG4gICAgICB4aHIuc2VuZChzdHJtKTtcclxuICAgICAgaWYgKHhoci5yZWFkeVN0YXRlID09PSA0ICYmIHhoci5zdGF0dXMgPT09IDIwMCkge1xyXG4gICAgICAgIHJldHVybiB4aHIucmVzcG9uc2VUZXh0O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gJyc7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgU2lnV2ViU2V0SW1hZ2VCbG9iUHJvcGVydHkocHJvcCwgc3RybSkge1xyXG4gICAgdmFyIHhociA9IHRoaXMuU2lnV2ViY3JlYXRlWEhSKCk7XHJcbiAgICBpZiAoeGhyKSB7XHJcbiAgICAgIHhoci5vcGVuKCdQT1NUJywgdGhpcy5iYXNlVXJpICsgcHJvcCwgZmFsc2UpO1xyXG4gICAgICB4aHIuc2V0UmVxdWVzdEhlYWRlcignQ29udGVudC1UeXBlJywgJ2Jsb2InKTtcclxuICAgICAgeGhyLnNlbmQoc3RybSk7XHJcbiAgICAgIGlmICh4aHIucmVhZHlTdGF0ZSA9PSA0ICYmIHhoci5zdGF0dXMgPT0gMjAwKSB7XHJcbiAgICAgICAgcmV0dXJuIHhoci5yZXNwb25zZVRleHQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiAnJztcclxuICB9XHJcblxyXG4gIHN0YXRpYyBTaWdXZWJHZXRWZXJzaW9uKHByb3ApIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHZhciB4aHIgPSB0aGlzLlNpZ1dlYmNyZWF0ZVhIUigpO1xyXG4gICAgICBpZiAoeGhyKSB7XHJcbiAgICAgICAgeGhyLm9wZW4oXHJcbiAgICAgICAgICAnR0VUJyxcclxuICAgICAgICAgIHRoaXMuYmFzZVVyaSArIHByb3AgKyAnP25vQ2FjaGU9JyArIHRoaXMuZ2VuZXJhdGVVVUlEKCksXHJcbiAgICAgICAgICBmYWxzZVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgeGhyLnNlbmQobnVsbCk7XHJcbiAgICAgICAgaWYgKHhoci5yZWFkeVN0YXRlID09IDQgJiYgeGhyLnN0YXR1cyA9PSAyMDApIHtcclxuICAgICAgICAgIHJldHVybiB4aHIucmVzcG9uc2VUZXh0O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZW4gU2lnV2ViR2V0VmVyc2lvbjonLCBlcnJvcik7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgU2lnV2ViR2V0UHJvcGVydHkocHJvcCkge1xyXG4gICAgdmFyIHhociA9IHRoaXMuU2lnV2ViY3JlYXRlWEhSKCk7XHJcblxyXG4gICAgaWYgKHhocikge1xyXG4gICAgICB4aHIub3BlbihcclxuICAgICAgICAnR0VUJyxcclxuICAgICAgICB0aGlzLmJhc2VVcmkgKyBwcm9wICsgJz9ub0NhY2hlPScgKyB0aGlzLmdlbmVyYXRlVVVJRCgpLFxyXG4gICAgICAgIGZhbHNlXHJcbiAgICAgICk7XHJcbiAgICAgIHhoci5zZW5kKG51bGwpO1xyXG4gICAgICBpZiAoeGhyLnJlYWR5U3RhdGUgPT0gNCAmJiB4aHIuc3RhdHVzID09IDIwMCkge1xyXG4gICAgICAgIHJldHVybiB4aHIucmVzcG9uc2VUZXh0O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gJyc7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgR2V0U2lnSW1hZ2VCNjQoY2FsbGJhY2spIHtcclxuICAgIHZhciBjdnMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcclxuICAgIHZhciB3aWR0aCA9IHRoaXMuR2V0SW1hZ2VYU2l6ZSgpO1xyXG4gICAgdmFyIGhlaWdodCA9IHRoaXMuR2V0SW1hZ2VZU2l6ZSgpO1xyXG4gICAgY3ZzLndpZHRoID0gd2lkdGggPT0gJycgfHwgd2lkdGggPT0gbnVsbCA/IDAgOiBOdW1iZXIod2lkdGgpO1xyXG4gICAgY3ZzLmhlaWdodCA9IGhlaWdodCA9PSAnJyB8fCBoZWlnaHQgPT0gbnVsbCA/IDAgOiBOdW1iZXIoaGVpZ2h0KTtcclxuXHJcbiAgICB2YXIgeGhyMiA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xyXG4gICAgeGhyMi5vcGVuKFxyXG4gICAgICAnR0VUJyxcclxuICAgICAgdGhpcy5iYXNlVXJpICsgJ1NpZ0ltYWdlLzEnICsgJz9ub0NhY2hlPScgKyB0aGlzLmdlbmVyYXRlVVVJRCgpLFxyXG4gICAgICB0cnVlXHJcbiAgICApO1xyXG4gICAgeGhyMi5yZXNwb25zZVR5cGUgPSAnYmxvYic7XHJcbiAgICB4aHIyLnNlbmQobnVsbCk7XHJcbiAgICB4aHIyLm9ubG9hZCA9ICgpID0+IHtcclxuICAgICAgdmFyIGNudHggPSBjdnMuZ2V0Q29udGV4dCgnMmQnKTtcclxuICAgICAgdmFyIGltZyA9IG5ldyBJbWFnZSgpO1xyXG4gICAgICBpbWcuc3JjID0gdGhpcy5nZXRCbG9iVVJMKHhocjIucmVzcG9uc2UpO1xyXG4gICAgICBpbWcub25sb2FkID0gKCkgPT4ge1xyXG4gICAgICAgIGNudHguZHJhd0ltYWdlKGltZywgMCwgMCk7XHJcbiAgICAgICAgdmFyIGI2NFN0cmluZyA9IGN2cy50b0RhdGFVUkwoJ2ltYWdlL3BuZycpO1xyXG4gICAgICAgIHZhciBsb2MgPSBiNjRTdHJpbmcuc2VhcmNoKCdiYXNlNjQsJyk7XHJcbiAgICAgICAgdmFyIHJldHN0cmluZyA9IGI2NFN0cmluZy5zbGljZShsb2MgKyA3LCBiNjRTdHJpbmcubGVuZ3RoKTtcclxuICAgICAgICBpZiAoY2FsbGJhY2spIHtcclxuICAgICAgICAgIGNhbGxiYWNrKHJldHN0cmluZyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9O1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBTaWdXZWJXYWl0Rm9yUGVuRG93bihjYWxsYmFjaykge1xyXG4gICAgdmFyIHhociA9IHRoaXMuU2lnV2ViY3JlYXRlWEhSKCk7XHJcblxyXG4gICAgaWYgKHhocikge1xyXG4gICAgICB4aHIub3BlbihcclxuICAgICAgICAnR0VUJyxcclxuICAgICAgICB0aGlzLmJhc2VVcmkgKyAnV2FpdEZvclBlbkRvd24nICsgJz9ub0NhY2hlPScgKyB0aGlzLmdlbmVyYXRlVVVJRCgpXHJcbiAgICAgICk7XHJcbiAgICAgIHhoci50aW1lb3V0ID0gMTAwMDA7XHJcbiAgICAgIHhoci5vbnJlYWR5c3RhdGVjaGFuZ2UgPSAoKSA9PiB7XHJcbiAgICAgICAgaWYgKHhoci5yZWFkeVN0YXRlICE9IDQpIHJldHVybjtcclxuICAgICAgICBpZiAoeGhyLnN0YXR1cyA9PSAyMDApIGNhbGxiYWNrKCk7XHJcbiAgICAgIH07XHJcbiAgICAgIHhoci5zZW5kKG51bGwpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIEdldFNpZ0ltYWdlKGN0eCkge1xyXG4gICAgdmFyIHhocjIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcclxuICAgIHhocjIub3BlbihcclxuICAgICAgJ0dFVCcsXHJcbiAgICAgIHRoaXMuYmFzZVVyaSArICdTaWdJbWFnZS8xJyArICc/bm9DYWNoZT0nICsgdGhpcy5nZW5lcmF0ZVVVSUQoKSxcclxuICAgICAgdHJ1ZVxyXG4gICAgKTtcclxuICAgIHhocjIucmVzcG9uc2VUeXBlID0gJ2Jsb2InO1xyXG4gICAgeGhyMi5zZW5kKG51bGwpO1xyXG4gICAgeGhyMi5vbmxvYWQgPSAoKSA9PiB7XHJcbiAgICAgIHZhciBpbWcgPSBuZXcgSW1hZ2UoKTtcclxuICAgICAgaW1nLnNyYyA9IHRoaXMuZ2V0QmxvYlVSTCh4aHIyLnJlc3BvbnNlKTtcclxuICAgICAgaW1nLm9ubG9hZCA9ICgpID0+IHtcclxuICAgICAgICBjdHguZHJhd0ltYWdlKGltZywgMCwgMCk7XHJcbiAgICAgICAgdGhpcy5yZXZva2VCbG9iVVJMKGltZy5zcmMpO1xyXG4gICAgICAgIGltZyA9IG51bGw7XHJcbiAgICAgIH07XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIFNpZ1dlYlNldERpc3BsYXlUYXJnZXQob2JqKSB7XHJcbiAgICB0aGlzLmN0eCA9IG9iajtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBTaWdXZWJSZWZyZXNoKCkge1xyXG4gICAgdmFyIE51bVBvaW50cyA9IE51bWJlcih0aGlzLk51bWJlck9mVGFibGV0UG9pbnRzKCkpO1xyXG4gICAgaWYgKE51bVBvaW50cyA9PSB0aGlzLk51bVBvaW50c0xhc3RUaW1lKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuTnVtUG9pbnRzTGFzdFRpbWUgPSBOdW1Qb2ludHM7XHJcblxyXG4gICAgdmFyIHhocjIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcclxuICAgIHhocjIub3BlbihcclxuICAgICAgJ0dFVCcsXHJcbiAgICAgIHRoaXMuYmFzZVVyaSArICdTaWdJbWFnZS8wJyArICc/bm9DYWNoZT0nICsgdGhpcy5nZW5lcmF0ZVVVSUQoKSxcclxuICAgICAgdHJ1ZVxyXG4gICAgKTtcclxuICAgIHhocjIucmVzcG9uc2VUeXBlID0gJ2Jsb2InO1xyXG4gICAgeGhyMi5vbmxvYWQgPSAoKSA9PiB7XHJcbiAgICAgIHZhciBpbWcgPSBuZXcgSW1hZ2UoKTtcclxuICAgICAgaW1nLnNyYyA9IHRoaXMuZ2V0QmxvYlVSTCh4aHIyLnJlc3BvbnNlKTtcclxuICAgICAgLy9cdFx0XHRcdGltZy5zcmMgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTCh4aHIyLnJlc3BvbnNlKTtcclxuICAgICAgaW1nLm9ubG9hZCA9ICgpID0+IHtcclxuICAgICAgICB0aGlzLmN0eC5kcmF3SW1hZ2UoaW1nLCAwLCAwKTtcclxuICAgICAgICB0aGlzLnJldm9rZUJsb2JVUkwoaW1nLnNyYyk7XHJcbiAgICAgICAgaW1nID0gbnVsbDtcclxuICAgICAgfTtcclxuICAgIH07XHJcbiAgICB4aHIyLnNlbmQobnVsbCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgU2lnV2ViRXZlbnQoKSB7XHJcbiAgICB2YXIgT2xkRXZTdGF0dXMgPSB0aGlzLkV2U3RhdHVzO1xyXG5cclxuICAgIHZhciB4aHIgPSB0aGlzLlNpZ1dlYmNyZWF0ZVhIUigpO1xyXG5cclxuICAgIGlmICh4aHIpIHtcclxuICAgICAgeGhyLm9wZW4oXHJcbiAgICAgICAgJ0dFVCcsXHJcbiAgICAgICAgdGhpcy5iYXNlVXJpICsgJ0V2ZW50U3RhdHVzJyArICc/bm9DYWNoZT0nICsgdGhpcy5nZW5lcmF0ZVVVSUQoKSxcclxuICAgICAgICB0cnVlXHJcbiAgICAgICk7XHJcbiAgICAgIHhoci5vbmxvYWQgPSAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5FdlN0YXR1cyA9IHhoci5yZXNwb25zZVRleHQ7XHJcbiAgICAgICAgaWYgKE9sZEV2U3RhdHVzICYgMHgwMSAmJiB0aGlzLkV2U3RhdHVzICYgMHgwMikge1xyXG4gICAgICAgICAgaWYgKHRoaXMub25TaWdQZW5Eb3duKSB7XHJcbiAgICAgICAgICAgIHRoaXMub25TaWdQZW5Eb3duKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoT2xkRXZTdGF0dXMgJiAweDAyICYmIHRoaXMuRXZTdGF0dXMgJiAweDAxKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5vblNpZ1BlblVwKSB7XHJcbiAgICAgICAgICAgIHRoaXMub25TaWdQZW5VcCgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfTtcclxuICAgICAgeGhyLnNlbmQobnVsbCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgc2V0U2lnV2ViRm9udFRocmVzaG9sZCh2KSB7XHJcbiAgICB0aGlzLlNpZ1dlYkZvbnRUaHJlc2hvbGQgPSB2O1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGNyZWF0ZUxjZEJpdG1hcEZyb21DYW52YXMob3VyQ2FudmFzLCB4cCwgeXAsIHdpZHRoLCBoZWlnaHQpIHtcclxuICAgIHZhciBjYW52YXNDdHggPSBvdXJDYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcclxuICAgIHZhciBpbWdEYXRhID0gY2FudmFzQ3R4LmdldEltYWdlRGF0YSgwLCAwLCB3aWR0aCwgaGVpZ2h0KTtcclxuICAgIHZhciBqID0gMDtcclxuICAgIHZhciBzVmFsID0gMDtcclxuICAgIHZhciBvdXREYXRhID0gJyc7XHJcbiAgICB2YXIgb3V0SWR4ID0gMDtcclxuICAgIHZhciBkYXRhID0gaW1nRGF0YS5kYXRhO1xyXG5cclxuICAgIGZvciAodmFyIHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspXHJcbiAgICAgIGZvciAodmFyIHggPSAwOyB4IDwgd2lkdGg7IHgrKykge1xyXG4gICAgICAgIHZhciB0bXAxID0gZGF0YVtqXTtcclxuICAgICAgICB2YXIgdG1wMiA9IGRhdGFbaiArIDFdO1xyXG4gICAgICAgIHZhciB0bXAzID0gZGF0YVtqICsgMl07XHJcbiAgICAgICAgdmFyIHRtcDQgPSBkYXRhW2ogKyAzXTtcclxuXHJcbiAgICAgICAgLy9cdFx0XHRcdFx0c1ZhbCA9IHRtcDEgKyAodG1wMiA8PCA4ICkgKyAoIHRtcDMgPDwgMTYgKSArICh0bXA0IDw8IDI0ICk7XHJcbiAgICAgICAgaiA9IGogKyA0O1xyXG4gICAgICAgIGlmICh0bXAxIDwgdGhpcy5TaWdXZWJGb250VGhyZXNob2xkKSB7XHJcbiAgICAgICAgICBvdXREYXRhICs9ICdCJztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgb3V0RGF0YSArPSAnVyc7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgcmV0dXJuIG91dERhdGE7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgdG9IZXgoTmliVmFsKSB7XHJcbiAgICBzd2l0Y2ggKE5pYlZhbCkge1xyXG4gICAgICBjYXNlIDA6XHJcbiAgICAgICAgcmV0dXJuICcwJztcclxuICAgICAgY2FzZSAxOlxyXG4gICAgICAgIHJldHVybiAnMSc7XHJcbiAgICAgIGNhc2UgMjpcclxuICAgICAgICByZXR1cm4gJzInO1xyXG4gICAgICBjYXNlIDM6XHJcbiAgICAgICAgcmV0dXJuICczJztcclxuICAgICAgY2FzZSA0OlxyXG4gICAgICAgIHJldHVybiAnNCc7XHJcbiAgICAgIGNhc2UgNTpcclxuICAgICAgICByZXR1cm4gJzUnO1xyXG4gICAgICBjYXNlIDY6XHJcbiAgICAgICAgcmV0dXJuICc2JztcclxuICAgICAgY2FzZSA3OlxyXG4gICAgICAgIHJldHVybiAnNyc7XHJcbiAgICAgIGNhc2UgODpcclxuICAgICAgICByZXR1cm4gJzgnO1xyXG4gICAgICBjYXNlIDk6XHJcbiAgICAgICAgcmV0dXJuICc5JztcclxuICAgICAgY2FzZSAxMDpcclxuICAgICAgICByZXR1cm4gJ0EnO1xyXG4gICAgICBjYXNlIDExOlxyXG4gICAgICAgIHJldHVybiAnQic7XHJcbiAgICAgIGNhc2UgMTI6XHJcbiAgICAgICAgcmV0dXJuICdDJztcclxuICAgICAgY2FzZSAxMzpcclxuICAgICAgICByZXR1cm4gJ0QnO1xyXG4gICAgICBjYXNlIDE0OlxyXG4gICAgICAgIHJldHVybiAnRSc7XHJcbiAgICAgIGNhc2UgMTU6XHJcbiAgICAgICAgcmV0dXJuICdGJztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHN0YXRpYyBUb0hleFN0cmluZyhCeXRlVmFsKSB7XHJcbiAgICB2YXIgU3RyID0gJyc7XHJcbiAgICBTdHIgKz0gdGhpcy50b0hleCgoQnl0ZVZhbCA+PiA0KSAmIDB4MGYpO1xyXG4gICAgU3RyICs9IHRoaXMudG9IZXgoQnl0ZVZhbCAmIDB4MGYpO1xyXG4gICAgcmV0dXJuIFN0cjtcclxuICB9XHJcblxyXG4gIHN0YXRpYyB0ZXh0VG9UYWJsZXQoeCwgeSwgaGVpZ2h0LCBzdHIsIGZudCkge1xyXG4gICAgdmFyIGMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcclxuICAgIHZhciBjbnR4ID0gYy5nZXRDb250ZXh0KCcyZCcpO1xyXG4gICAgY250eC5mb250ID0gZm50O1xyXG4gICAgdmFyIHR4dCA9IHN0cjtcclxuICAgIHZhciB4cyA9IE1hdGgucm91bmQoY250eC5tZWFzdXJlVGV4dCh0eHQpLndpZHRoKTtcclxuICAgIHZhciB5cyA9IGhlaWdodDtcclxuICAgIGMud2lkdGggPSB4cztcclxuICAgIGMuaGVpZ2h0ID0geXM7XHJcblxyXG4gICAgY250eC5mb250ID0gZm50O1xyXG4gICAgY250eC5maWxsU3R5bGUgPSAnI0ZGRkZGRic7XHJcbiAgICBjbnR4LnJlY3QoMCwgMCwgeHMsIHlzKTtcclxuICAgIGNudHguZmlsbCgpO1xyXG5cclxuICAgIGNudHguZmlsbFN0eWxlID0gJyMwMDAwMDAnO1xyXG4gICAgY250eC50ZXh0QmFzZWxpbmUgPSAndG9wJztcclxuICAgIGNudHguZmlsbFRleHQodHh0LCAwLCAwKTtcclxuXHJcbiAgICBjbnR4LmRyYXdJbWFnZShjbnR4LmNhbnZhcywgMCwgMCwgeHMsIHlzKTtcclxuXHJcbiAgICB2YXIgR3N0ciA9IHRoaXMuY3JlYXRlTGNkQml0bWFwRnJvbUNhbnZhcyhjLCAwLCAwLCB4cywgeXMpO1xyXG5cclxuICAgIHRoaXMuTGNkV3JpdGVJbWFnZVN0cmVhbSgwLCAyLCB4LCB5LCB4cywgeXMsIEdzdHIpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIExjZFdyaXRlSW1hZ2UoRHN0LCBNb2RlLCBYcCwgWXAsIFVybCkge1xyXG4gICAgdmFyIFByb3AgPSAnTGNkV3JpdGVJbWFnZS8nO1xyXG4gICAgdmFyIE5ld1VybCA9IFVybC5yZXBsYWNlKC9cXC8vZywgJ18nKTtcclxuXHJcbiAgICBQcm9wID0gUHJvcCArIERzdCArICcsJyArIE1vZGUgKyAnLCcgKyBYcCArICcsJyArIFlwICsgJywnICsgTmV3VXJsO1xyXG4gICAgdGhpcy5TaWdXZWJTZXRQcm9wZXJ0eVN5bmMoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgTGNkV3JpdGVMb2NhbEltYWdlKERzdCwgTW9kZSwgWHAsIFlwLCBVcmwpIHtcclxuICAgIHZhciBQcm9wID0gJ0xjZFdyaXRlSW1hZ2UvJztcclxuXHJcbiAgICBQcm9wID0gUHJvcCArIERzdCArICcsJyArIE1vZGUgKyAnLCcgKyBYcCArICcsJyArIFlwICsgJywnICsgVXJsO1xyXG4gICAgdGhpcy5TaWdXZWJTZXRQcm9wZXJ0eShQcm9wKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBMY2RXcml0ZUltYWdlU3RyZWFtKERzdCwgTW9kZSwgWHAsIFlwLCBYcywgWXMsIFVybCkge1xyXG4gICAgdmFyIFByb3AxID1cclxuICAgICAgJ0xjZFdyaXRlSW1hZ2VTdHJlYW1QYXJhbXMvJyArXHJcbiAgICAgIERzdCArXHJcbiAgICAgICcsJyArXHJcbiAgICAgIE1vZGUgK1xyXG4gICAgICAnLCcgK1xyXG4gICAgICBYcCArXHJcbiAgICAgICcsJyArXHJcbiAgICAgIFlwICtcclxuICAgICAgJywnICtcclxuICAgICAgWHMgK1xyXG4gICAgICAnLCcgK1xyXG4gICAgICBZcztcclxuICAgIHZhciBQcm9wMiA9ICdMY2RXcml0ZUltYWdlU3RyZWFtLyc7XHJcblxyXG4gICAgdGhpcy5TaWdXZWJTZXRQcm9wZXJ0eVN5bmMoUHJvcDEpO1xyXG4gICAgdGhpcy5TaWdXZWJTZXRJbWFnZVN0cmVhbVByb3BlcnR5KFByb3AyLCBVcmwpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIExjZFdyaXRlSW1hZ2VCbG9iKERzdCwgTW9kZSwgWHAsIFlwLCBYcywgWXMsIFVybCkge1xyXG4gICAgdmFyIFByb3AgPSAnTGNkV3JpdGVJbWFnZVN0cmVhbS8nO1xyXG5cclxuICAgIFByb3AgPSBQcm9wICsgRHN0ICsgJywnICsgTW9kZSArICcsJyArIFhwICsgJywnICsgWXAgKyAnLCcgKyBYcyArICcsJyArIFlzO1xyXG4gICAgdGhpcy5TaWdXZWJTZXRJbWFnZUJsb2JQcm9wZXJ0eShQcm9wLCBVcmwpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIG1lYXN1cmVUZXh0KHBUZXh0LCBwRm9udFNpemUsIHBTdHlsZSkge1xyXG4gICAgdmFyIGxEaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsRGl2Jyk7XHJcblxyXG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsRGl2KTtcclxuXHJcbiAgICBpZiAocFN0eWxlICE9IG51bGwpIHtcclxuICAgICAgbERpdi5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgcFN0eWxlKTtcclxuICAgIH1cclxuICAgIGxEaXYuc3R5bGUuZm9udFNpemUgPSAnJyArIHBGb250U2l6ZSArICdweCc7XHJcbiAgICBsRGl2LnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcclxuICAgIGxEaXYuc3R5bGUubGVmdCA9ICctMTAwMCc7XHJcbiAgICBsRGl2LnN0eWxlLnRvcCA9ICctMTAwMCc7XHJcblxyXG4gICAgbERpdi5pbm5lckhUTUwgPSBwVGV4dDtcclxuXHJcbiAgICB2YXIgbFJlc3VsdCA9IHtcclxuICAgICAgd2lkdGg6IGxEaXYuY2xpZW50V2lkdGgsXHJcbiAgICAgIGhlaWdodDogbERpdi5jbGllbnRIZWlnaHQsXHJcbiAgICB9O1xyXG5cclxuICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobERpdik7XHJcbiAgICBsRGl2ID0gbnVsbDtcclxuXHJcbiAgICByZXR1cm4gbFJlc3VsdDtcclxuICB9XHJcbiAgc3RhdGljIEdldFZlcnNpb25TdHJpbmcoKSB7XHJcbiAgICB2YXIgUHJvcCA9ICdWZXJzaW9uJztcclxuXHJcbiAgICBQcm9wID0gUHJvcDtcclxuICAgIHZhciBTdHIgPSB0aGlzLlNpZ1dlYkdldFZlcnNpb24oUHJvcCk7XHJcbiAgICBpZihTdHIgPT0gbnVsbClcclxuICAgICAgcmV0dXJuIFN0cjtcclxuXHJcbiAgICB2YXIgdHJpbVN0ciA9IFN0ci5zbGljZSgxLCBTdHIubGVuZ3RoIC0gMik7XHJcbiAgICByZXR1cm4gdHJpbVN0cjtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBJc1BlbkRvd24oKSB7XHJcbiAgICByZXR1cm4gdGhpcy5FdlN0YXR1cyAmIDB4MDE7XHJcbiAgfVxyXG5cclxuICAvL1xyXG4gIC8vXHRcdFx0U2lnUGx1c05FVFNpZy5jc1xyXG4gIC8vXHJcbiAgc3RhdGljIENsZWFyVGFibGV0KCkge1xyXG4gICAgdmFyIFByb3AgPSAnQ2xlYXJTaWduYXR1cmUnO1xyXG5cclxuICAgIFByb3AgPSBQcm9wO1xyXG4gICAgcmV0dXJuIHRoaXMuU2lnV2ViR2V0UHJvcGVydHkoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgTnVtYmVyT2ZUYWJsZXRQb2ludHMoKSB7XHJcbiAgICB2YXIgUHJvcCA9ICdUb3RhbFBvaW50cyc7XHJcblxyXG4gICAgUHJvcCA9IFByb3A7XHJcbiAgICByZXR1cm4gdGhpcy5TaWdXZWJHZXRQcm9wZXJ0eShQcm9wKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBTZXRTaWdTdHJpbmcoc2lnU3RyLCBjdHgpIHtcclxuICAgIHZhciBQcm9wID0gJ1NpZ1N0cmluZyc7XHJcblxyXG4gICAgUHJvcCA9IFByb3A7XHJcbiAgICB2YXIgeGhyID0gdGhpcy5TaWdXZWJjcmVhdGVYSFIoKTtcclxuXHJcbiAgICBpZiAoeGhyKSB7XHJcbiAgICAgIHhoci5vcGVuKCdQT1NUJywgdGhpcy5iYXNlVXJpICsgUHJvcCk7XHJcbiAgICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAndGV4dC9wbGFpbicpO1xyXG4gICAgICB4aHIuc2VuZChzaWdTdHIpO1xyXG4gICAgICB4aHIub25sb2FkID0gKCkgPT4ge1xyXG4gICAgICAgIGlmIChjdHgpIHtcclxuICAgICAgICAgIHZhciBjYW4gPSBjdHguY2FudmFzO1xyXG4gICAgICAgICAgdGhpcy5TZXRJbWFnZVhTaXplKGNhbi53aWR0aCk7XHJcbiAgICAgICAgICB0aGlzLlNldEltYWdlWVNpemUoY2FuLmhlaWdodCk7XHJcbiAgICAgICAgICB0aGlzLkdldFNpZ0ltYWdlKGN0eCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuICcnO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIEdldFNpZ1N0cmluZygpIHtcclxuICAgIHZhciBQcm9wID0gJ1NpZ1N0cmluZyc7XHJcblxyXG4gICAgUHJvcCA9IFByb3A7XHJcbiAgICB2YXIgU3RyID0gdGhpcy5TaWdXZWJHZXRQcm9wZXJ0eShQcm9wKTtcclxuXHJcbiAgICByZXR1cm4gU3RyLnNsaWNlKDEsIFN0ci5sZW5ndGggLSAxKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBTZXRTaWdDb21wcmVzc2lvbk1vZGUodikge1xyXG4gICAgdmFyIFByb3AgPSAnQ29tcHJlc3Npb25Nb2RlLyc7XHJcblxyXG4gICAgUHJvcCA9IFByb3AgKyB2O1xyXG4gICAgdGhpcy5TaWdXZWJTZXRQcm9wZXJ0eVN5bmMoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgR2V0U2lnQ29tcHJlc3Npb25Nb2RlKCkge1xyXG4gICAgdmFyIFByb3AgPSAnQ29tcHJlc3Npb25Nb2RlJztcclxuXHJcbiAgICBQcm9wID0gUHJvcDtcclxuICAgIHJldHVybiB0aGlzLlNpZ1dlYkdldFByb3BlcnR5KFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIFNldEVuY3J5cHRpb25Nb2RlKHYpIHtcclxuICAgIHZhciBQcm9wID0gJ0VuY3J5cHRpb25Nb2RlLyc7XHJcblxyXG4gICAgUHJvcCA9IFByb3AgKyB2O1xyXG4gICAgdGhpcy5TaWdXZWJTZXRQcm9wZXJ0eVN5bmMoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgR2V0RW5jcnlwdGlvbk1vZGUoKSB7XHJcbiAgICB2YXIgUHJvcCA9ICdFbmNyeXB0aW9uTW9kZSc7XHJcblxyXG4gICAgUHJvcCA9IFByb3A7XHJcbiAgICByZXR1cm4gdGhpcy5TaWdXZWJHZXRQcm9wZXJ0eShQcm9wKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBTZXRLZXlTdHJpbmcoa2V5U3RyaW5nKSB7XHJcbiAgICB2YXIgUHJvcCA9ICdLZXlTdHJpbmcnO1xyXG5cclxuICAgIFByb3AgPSBQcm9wO1xyXG4gICAgdGhpcy5TaWdXZWJTZXRTdHJlYW1Qcm9wZXJ0eShQcm9wLCBrZXlTdHJpbmcpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIEdldEtleVN0cmluZygpIHtcclxuICAgIHZhciBQcm9wID0gJ0tleVN0cmluZyc7XHJcblxyXG4gICAgUHJvcCA9IFByb3A7XHJcbiAgICB2YXIgU3RyID0gdGhpcy5TaWdXZWJHZXRQcm9wZXJ0eShQcm9wKTtcclxuXHJcbiAgICByZXR1cm4gU3RyLnNsaWNlKDEsIFN0ci5sZW5ndGggLSAxKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBBdXRvS2V5U3RhcnQoKSB7XHJcbiAgICB2YXIgUHJvcCA9ICdBdXRvS2V5U3RhcnQnO1xyXG5cclxuICAgIFByb3AgPSBQcm9wO1xyXG4gICAgdGhpcy5TaWdXZWJTZXRQcm9wZXJ0eVN5bmMoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgQXV0b0tleUZpbmlzaCgpIHtcclxuICAgIHZhciBQcm9wID0gJ0F1dG9LZXlGaW5pc2gnO1xyXG5cclxuICAgIFByb3AgPSBQcm9wO1xyXG4gICAgdGhpcy5TaWdXZWJTZXRQcm9wZXJ0eVN5bmMoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgU2V0QXV0b0tleURhdGEoa2V5RGF0YSkge1xyXG4gICAgdmFyIFByb3AgPSAnU2V0QXV0b0tleURhdGEnO1xyXG5cclxuICAgIFByb3AgPSBQcm9wO1xyXG4gICAgdGhpcy5TaWdXZWJTZXRTdHJlYW1Qcm9wZXJ0eShQcm9wLCBrZXlEYXRhKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBBdXRvS2V5QWRkRGF0YShrZXlEYXRhKSB7XHJcbiAgICB2YXIgUHJvcCA9ICdBdXRvS2V5QWRkRGF0YSc7XHJcblxyXG4gICAgUHJvcCA9IFByb3A7XHJcbiAgICB0aGlzLlNpZ1dlYlNldFN0cmVhbVByb3BlcnR5KFByb3AsIGtleURhdGEpO1xyXG4gICAgcmV0dXJuIHRoaXMuR2V0S2V5U3RyaW5nKCk7XHJcbiAgfVxyXG5cclxuICAvL1x0XHRmdW5jdGlvbiAgR2V0S2V5UmVjZWlwdCggKSB7fVxyXG5cclxuICBzdGF0aWMgR2V0S2V5UmVjZWlwdEFzY2lpKCkge1xyXG4gICAgdmFyIFByb3AgPSAnS2V5UmVjZWlwdEFzY2lpJztcclxuXHJcbiAgICBQcm9wID0gUHJvcDtcclxuICAgIHZhciBTdHIgPSB0aGlzLlNpZ1dlYkdldFByb3BlcnR5KFByb3ApO1xyXG5cclxuICAgIHJldHVybiBTdHIuc2xpY2UoMSwgU3RyLmxlbmd0aCAtIDEpO1xyXG4gIH1cclxuXHJcbiAgLy9cdFx0ZnVuY3Rpb24gIEdldFNpZ1JlY2VpcHQoICkge31cclxuXHJcbiAgc3RhdGljIEdldFNpZ1JlY2VpcHRBc2NpaSgpIHtcclxuICAgIHZhciBQcm9wID0gJ1NpZ1JlY2VpcHRBc2NpaSc7XHJcblxyXG4gICAgUHJvcCA9IFByb3A7XHJcbiAgICB2YXIgU3RyID0gdGhpcy5TaWdXZWJHZXRQcm9wZXJ0eShQcm9wKTtcclxuXHJcbiAgICByZXR1cm4gU3RyLnNsaWNlKDEsIFN0ci5sZW5ndGggLSAxKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBTZXRUaW1lU3RhbXAodGltZVN0YW1wKSB7XHJcbiAgICB2YXIgUHJvcCA9ICdUaW1lU3RhbXAnO1xyXG5cclxuICAgIFByb3AgPSBQcm9wO1xyXG4gICAgdGhpcy5TaWdXZWJTZXRTdHJlYW1Qcm9wZXJ0eShQcm9wLCB0aW1lU3RhbXApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIEdldFRpbWVTdGFtcCgpIHtcclxuICAgIHZhciBQcm9wID0gJ1RpbWVTdGFtcCc7XHJcblxyXG4gICAgUHJvcCA9IFByb3A7XHJcbiAgICB2YXIgU3RyID0gdGhpcy5TaWdXZWJHZXRQcm9wZXJ0eShQcm9wKTtcclxuXHJcbiAgICByZXR1cm4gU3RyLnNsaWNlKDEsIFN0ci5sZW5ndGggLSAxKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBTZXRBbm5vdGF0ZShhbm5vdGF0ZSkge1xyXG4gICAgdmFyIFByb3AgPSAnQW5ub3RhdGUnO1xyXG5cclxuICAgIFByb3AgPSBQcm9wO1xyXG4gICAgdGhpcy5TaWdXZWJTZXRTdHJlYW1Qcm9wZXJ0eShQcm9wLCBhbm5vdGF0ZSk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgR2V0QW5ub3RhdGUoKSB7XHJcbiAgICB2YXIgUHJvcCA9ICdBbm5vdGF0ZSc7XHJcblxyXG4gICAgUHJvcCA9IFByb3A7XHJcbiAgICB2YXIgU3RyID0gdGhpcy5TaWdXZWJHZXRQcm9wZXJ0eShQcm9wKTtcclxuXHJcbiAgICByZXR1cm4gU3RyLnNsaWNlKDEsIFN0ci5sZW5ndGggLSAxKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBTZXRTYXZlU2lnSW5mbyh2KSB7XHJcbiAgICB2YXIgUHJvcCA9ICdTYXZlU2lnSW5mby8nO1xyXG5cclxuICAgIFByb3AgPSBQcm9wICsgdjtcclxuICAgIHRoaXMuU2lnV2ViU2V0UHJvcGVydHlTeW5jKFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIEdldFNhdmVTaWdJbmZvKCkge1xyXG4gICAgdmFyIFByb3AgPSAnU2F2ZVNpZ0luZm8nO1xyXG5cclxuICAgIFByb3AgPSBQcm9wO1xyXG4gICAgcmV0dXJuIHRoaXMuU2lnV2ViR2V0UHJvcGVydHkoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgU2V0U2F2ZVByZXNzdXJlRGF0YSh2KSB7XHJcbiAgICB2YXIgUHJvcCA9ICdTYXZlUHJlc3N1cmVEYXRhLyc7XHJcblxyXG4gICAgUHJvcCA9IFByb3AgKyB2O1xyXG4gICAgdGhpcy5TaWdXZWJTZXRQcm9wZXJ0eVN5bmMoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgR2V0U2F2ZVByZXNzdXJlRGF0YSgpIHtcclxuICAgIHZhciBQcm9wID0gJ1NhdmVQcmVzc3VyZURhdGEnO1xyXG5cclxuICAgIFByb3AgPSBQcm9wO1xyXG4gICAgcmV0dXJuIHRoaXMuU2lnV2ViR2V0UHJvcGVydHkoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgU2V0U2F2ZVRpbWVEYXRhKHYpIHtcclxuICAgIHZhciBQcm9wID0gJ1NhdmVUaW1lRGF0YS8nO1xyXG5cclxuICAgIFByb3AgPSBQcm9wICsgdjtcclxuICAgIHRoaXMuU2lnV2ViU2V0UHJvcGVydHlTeW5jKFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIEdldFNhdmVUaW1lRGF0YSgpIHtcclxuICAgIHZhciBQcm9wID0gJ1NhdmVUaW1lRGF0YSc7XHJcblxyXG4gICAgUHJvcCA9IFByb3A7XHJcbiAgICByZXR1cm4gdGhpcy5TaWdXZWJHZXRQcm9wZXJ0eShQcm9wKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBTZXRBbnRpQWxpYXNTcG90U2l6ZSh2KSB7XHJcbiAgICB2YXIgUHJvcCA9ICdBbnRpQWxpYXNTcG90U2l6ZS8nO1xyXG5cclxuICAgIFByb3AgPSBQcm9wICsgdjtcclxuICAgIHRoaXMuU2lnV2ViU2V0UHJvcGVydHlTeW5jKFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIEdldEFudGlBbGlhc1Nwb3RTaXplKCkge1xyXG4gICAgdmFyIFByb3AgPSAnQW50aUFsaWFzU3BvdFNpemUnO1xyXG5cclxuICAgIFByb3AgPSBQcm9wO1xyXG4gICAgcmV0dXJuIHRoaXMuU2lnV2ViR2V0UHJvcGVydHkoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgU2V0QW50aUFsaWFzTGluZVNjYWxlKHYpIHtcclxuICAgIHZhciBQcm9wID0gJ0FudGlBbGlhc0xpbmVTY2FsZS8nO1xyXG5cclxuICAgIFByb3AgPSBQcm9wICsgdjtcclxuICAgIHRoaXMuU2lnV2ViU2V0UHJvcGVydHlTeW5jKFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIEdldEFudGlBbGlhc0xpbmVTY2FsZSgpIHtcclxuICAgIHZhciBQcm9wID0gJ0FudGlBbGlhc0xpbmVTY2FsZSc7XHJcblxyXG4gICAgUHJvcCA9IFByb3A7XHJcbiAgICByZXR1cm4gdGhpcy5TaWdXZWJHZXRQcm9wZXJ0eShQcm9wKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBHZXROdW1iZXJPZlN0cm9rZXMoKSB7XHJcbiAgICB2YXIgUHJvcCA9ICdOdW1iZXJPZlN0cm9rZXMnO1xyXG5cclxuICAgIFByb3AgPSBQcm9wO1xyXG4gICAgcmV0dXJuIHRoaXMuU2lnV2ViR2V0UHJvcGVydHkoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgR2V0TnVtUG9pbnRzRm9yU3Ryb2tlKHYpIHtcclxuICAgIHZhciBQcm9wID0gJ051bWJlck9mUG9pbnRzSW5TdHJva2UvJztcclxuXHJcbiAgICBQcm9wID0gUHJvcCArIHY7XHJcbiAgICByZXR1cm4gdGhpcy5TaWdXZWJHZXRQcm9wZXJ0eShQcm9wKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBHZXRQb2ludFhWYWx1ZSh2MSwgdjIpIHtcclxuICAgIHZhciBQcm9wID0gJ1BvaW50WFZhbHVlLyc7XHJcblxyXG4gICAgUHJvcCA9IFByb3AgKyB2MSArICcvJyArIHYyO1xyXG4gICAgcmV0dXJuIHRoaXMuU2lnV2ViR2V0UHJvcGVydHkoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgR2V0UG9pbnRZVmFsdWUodjEsIHYyKSB7XHJcbiAgICB2YXIgUHJvcCA9ICdQb2ludFlWYWx1ZS8nO1xyXG5cclxuICAgIFByb3AgPSBQcm9wICsgdjEgKyAnLycgKyB2MjtcclxuICAgIHJldHVybiB0aGlzLlNpZ1dlYkdldFByb3BlcnR5KFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIFNldEFudGlBbGlhc0VuYWJsZSh2KSB7XHJcbiAgICB2YXIgUHJvcCA9ICdBbnRpQWxpYXNFbmFibGUvJztcclxuXHJcbiAgICBQcm9wID0gUHJvcCArIHY7XHJcbiAgICB0aGlzLlNpZ1dlYlNldFByb3BlcnR5U3luYyhQcm9wKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBHZXRBbnRpQWxpYXNFbmFibGUoKSB7XHJcbiAgICB2YXIgUHJvcCA9ICdBbnRpQWxpYXNFbmFibGUnO1xyXG5cclxuICAgIFByb3AgPSBQcm9wO1xyXG4gICAgcmV0dXJuIHRoaXMuU2lnV2ViR2V0UHJvcGVydHkoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgU2V0VXNlQW1iaWVudENvbG9ycyh2KSB7XHJcbiAgICB2YXIgUHJvcCA9ICdVc2VBbWJpZW50Q29sb3JzLyc7XHJcblxyXG4gICAgUHJvcCA9IFByb3AgKyB2O1xyXG4gICAgdGhpcy5TaWdXZWJTZXRQcm9wZXJ0eVN5bmMoUHJvcCk7XHJcbiAgfVxyXG5cclxuICAvL1xyXG4gIC8vXHRcdFNpZ1BsdXNORVREaXNwbGF5LmNzXHJcbiAgLy9cclxuICBzdGF0aWMgU2V0RGlzcGxheVhTaXplKHYpIHtcclxuICAgIHZhciBQcm9wID0gJ0Rpc3BsYXlYU2l6ZS8nO1xyXG5cclxuICAgIFByb3AgPSBQcm9wICsgdjtcclxuICAgIHRoaXMuU2lnV2ViU2V0UHJvcGVydHlTeW5jKFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIEdldERpc3BsYXlYU2l6ZSgpIHtcclxuICAgIHZhciBQcm9wID0gJ0Rpc3BsYXlYU2l6ZSc7XHJcblxyXG4gICAgUHJvcCA9IFByb3A7XHJcbiAgICByZXR1cm4gdGhpcy5TaWdXZWJHZXRQcm9wZXJ0eShQcm9wKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBTZXREaXNwbGF5WVNpemUodikge1xyXG4gICAgdmFyIFByb3AgPSAnRGlzcGxheVlTaXplLyc7XHJcblxyXG4gICAgUHJvcCA9IFByb3AgKyB2O1xyXG4gICAgdGhpcy5TaWdXZWJTZXRQcm9wZXJ0eVN5bmMoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgR2V0RGlzcGxheVlTaXplKCkge1xyXG4gICAgdmFyIFByb3AgPSAnRGlzcGxheVlTaXplJztcclxuXHJcbiAgICBQcm9wID0gUHJvcDtcclxuICAgIHJldHVybiB0aGlzLlNpZ1dlYkdldFByb3BlcnR5KFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIFNldERpc3BsYXlQZW5XaWR0aCh2KSB7XHJcbiAgICB2YXIgUHJvcCA9ICdEaXNwbGF5UGVuV2lkdGgvJztcclxuXHJcbiAgICBQcm9wID0gUHJvcCArIHY7XHJcbiAgICB0aGlzLlNpZ1dlYlNldFByb3BlcnR5U3luYyhQcm9wKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBHZXREaXNwbGF5UGVuV2lkdGgoKSB7XHJcbiAgICB2YXIgUHJvcCA9ICdEaXNwbGF5UGVuV2lkdGgnO1xyXG5cclxuICAgIFByb3AgPSBQcm9wO1xyXG4gICAgcmV0dXJuIHRoaXMuU2lnV2ViR2V0UHJvcGVydHkoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgU2V0RGlzcGxheVRpbWVTdGFtcCh2KSB7XHJcbiAgICB2YXIgUHJvcCA9ICdEaXNwbGF5VGltZVN0YW1wLyc7XHJcblxyXG4gICAgUHJvcCA9IFByb3AgKyB2O1xyXG4gICAgdGhpcy5TaWdXZWJTZXRQcm9wZXJ0eVN5bmMoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgR2V0RGlzcGxheVRpbWVTdGFtcCgpIHtcclxuICAgIHZhciBQcm9wID0gJ0Rpc3BsYXlUaW1lU3RhbXAnO1xyXG5cclxuICAgIFByb3AgPSBQcm9wO1xyXG4gICAgcmV0dXJuIHRoaXMuU2lnV2ViR2V0UHJvcGVydHkoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgU2V0RGlzcGxheVRpbWVTdGFtcFBvc1godikge1xyXG4gICAgdmFyIFByb3AgPSAnRGlzcGxheVRpbWVTdGFtcFBvc1gvJztcclxuXHJcbiAgICBQcm9wID0gUHJvcCArIHY7XHJcbiAgICB0aGlzLlNpZ1dlYlNldFByb3BlcnR5U3luYyhQcm9wKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBHZXREaXNwbGF5VGltZVN0YW1wUG9zWCgpIHtcclxuICAgIHZhciBQcm9wID0gJ0Rpc3BsYXlUaW1lU3RhbXBQb3NYJztcclxuXHJcbiAgICBQcm9wID0gUHJvcDtcclxuICAgIHJldHVybiB0aGlzLlNpZ1dlYkdldFByb3BlcnR5KFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIFNldERpc3BsYXlUaW1lU3RhbXBQb3NZKHYpIHtcclxuICAgIHZhciBQcm9wID0gJ0Rpc3BsYXlUaW1lU3RhbXBQb3NZLyc7XHJcblxyXG4gICAgUHJvcCA9IFByb3AgKyB2O1xyXG4gICAgdGhpcy5TaWdXZWJTZXRQcm9wZXJ0eVN5bmMoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgR2V0RGlzcGxheVRpbWVTdGFtcFBvc1koKSB7XHJcbiAgICB2YXIgUHJvcCA9ICdEaXNwbGF5VGltZVN0YW1wUG9zWSc7XHJcblxyXG4gICAgUHJvcCA9IFByb3A7XHJcbiAgICByZXR1cm4gdGhpcy5TaWdXZWJHZXRQcm9wZXJ0eShQcm9wKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBTZXREaXNwbGF5VGltZVN0YW1wU2l6ZSh2KSB7XHJcbiAgICB2YXIgUHJvcCA9ICdEaXNwbGF5VGltZVN0YW1wU2l6ZS8nO1xyXG5cclxuICAgIFByb3AgPSBQcm9wICsgdjtcclxuICAgIHRoaXMuU2lnV2ViU2V0UHJvcGVydHlTeW5jKFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIEdldERpc3BsYXlUaW1lU3RhbXBTaXplKCkge1xyXG4gICAgdmFyIFByb3AgPSAnRGlzcGxheVRpbWVTdGFtcFNpemUnO1xyXG5cclxuICAgIFByb3AgPSBQcm9wO1xyXG4gICAgcmV0dXJuIHRoaXMuU2lnV2ViR2V0UHJvcGVydHkoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgU2V0RGlzcGxheUFubm90YXRlKHYpIHtcclxuICAgIHZhciBQcm9wID0gJ0Rpc3BsYXlBbm5vdGF0ZS8nO1xyXG5cclxuICAgIFByb3AgPSBQcm9wICsgdjtcclxuICAgIHRoaXMuU2lnV2ViU2V0UHJvcGVydHlTeW5jKFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIEdldERpc3BsYXlBbm5vdGF0ZSgpIHtcclxuICAgIHZhciBQcm9wID0gJ0Rpc3BsYXlBbm5vdGF0ZSc7XHJcblxyXG4gICAgUHJvcCA9IFByb3A7XHJcbiAgICByZXR1cm4gdGhpcy5TaWdXZWJHZXRQcm9wZXJ0eShQcm9wKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBTZXREaXNwbGF5QW5ub3RhdGVQb3NYKHYpIHtcclxuICAgIHZhciBQcm9wID0gJ0Rpc3BsYXlBbm5vdGF0ZVBvc1gvJztcclxuXHJcbiAgICBQcm9wID0gUHJvcCArIHY7XHJcbiAgICB0aGlzLlNpZ1dlYlNldFByb3BlcnR5U3luYyhQcm9wKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBHZXREaXNwbGF5QW5ub3RhdGVQb3NYKCkge1xyXG4gICAgdmFyIFByb3AgPSAnRGlzcGxheUFubm90YXRlUG9zWCc7XHJcblxyXG4gICAgUHJvcCA9IFByb3A7XHJcbiAgICByZXR1cm4gdGhpcy5TaWdXZWJHZXRQcm9wZXJ0eShQcm9wKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBTZXREaXNwbGF5QW5ub3RhdGVQb3NZKHYpIHtcclxuICAgIHZhciBQcm9wID0gJ0Rpc3BsYXlBbm5vdGF0ZVBvc1kvJztcclxuXHJcbiAgICBQcm9wID0gUHJvcCArIHY7XHJcbiAgICB0aGlzLlNpZ1dlYlNldFByb3BlcnR5U3luYyhQcm9wKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBHZXREaXNwbGF5QW5ub3RhdGVQb3NZKCkge1xyXG4gICAgdmFyIFByb3AgPSAnRGlzcGxheUFubm90YXRlUG9zWSc7XHJcblxyXG4gICAgUHJvcCA9IFByb3A7XHJcbiAgICByZXR1cm4gdGhpcy5TaWdXZWJHZXRQcm9wZXJ0eShQcm9wKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBTZXREaXNwbGF5QW5ub3RhdGVTaXplKHYpIHtcclxuICAgIHZhciBQcm9wID0gJ0Rpc3BsYXlBbm5vdGF0ZVNpemUvJztcclxuXHJcbiAgICBQcm9wID0gUHJvcCArIHY7XHJcbiAgICB0aGlzLlNpZ1dlYlNldFByb3BlcnR5U3luYyhQcm9wKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBHZXREaXNwbGF5QW5ub3RhdGVTaXplKCkge1xyXG4gICAgdmFyIFByb3AgPSAnRGlzcGxheUFubm90YXRlU2l6ZSc7XHJcblxyXG4gICAgUHJvcCA9IFByb3A7XHJcbiAgICByZXR1cm4gdGhpcy5TaWdXZWJHZXRQcm9wZXJ0eShQcm9wKTtcclxuICB9XHJcblxyXG4gIC8vXHJcbiAgLy9cdFx0U2lnUGx1c05FVEltYWdlLmNzXHJcbiAgLy9cclxuICAvL1x0XHRmdW5jdGlvbiAgR2V0U2lnSW1hZ2VCNjQoIClcclxuICAvL1x0XHRcdHtcclxuICAvL1x0XHRcdHZhciB4aHIyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XHJcbiAgLy9cdFx0XHR4aHIyLm9wZW4oXCJHRVRcIiwgYmFzZVVyaSArIFwiU2lnSW1hZ2UvMVwiLCBmYWxzZSApO1xyXG4gIC8vXHRcdFx0eGhyMi5yZXNwb25zZVR5cGUgPSBcImJsb2JcIlxyXG4gIC8vXHRcdFx0eGhyMi5zZW5kKG51bGwpO1xyXG4gIC8vXHRcdFx0aWYgKHhocjIucmVhZHlTdGF0ZSA9PSA0ICYmIHhoci5zdGF0dXMgPT0gMjAwKVxyXG4gIC8vXHRcdFx0XHR7XHJcbiAgLy9cdFx0XHRcdHJldHVybiB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTCh4aHIyLnJlc3BvbnNlKTtcclxuICAvL1x0XHRcdFx0fVxyXG4gIC8vXHRcdFx0cmV0dXJuIG51bGw7XHJcbiAgLy9cdFx0XHR9XHJcblxyXG4gIHN0YXRpYyBTZXRJbWFnZVhTaXplKHYpIHtcclxuICAgIHZhciBQcm9wID0gJ0ltYWdlWFNpemUvJztcclxuXHJcbiAgICBQcm9wID0gUHJvcCArIHY7XHJcbiAgICB0aGlzLlNpZ1dlYlNldFByb3BlcnR5U3luYyhQcm9wKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBHZXRJbWFnZVhTaXplKCkge1xyXG4gICAgdmFyIFByb3AgPSAnSW1hZ2VYU2l6ZSc7XHJcblxyXG4gICAgUHJvcCA9IFByb3A7XHJcbiAgICByZXR1cm4gdGhpcy5TaWdXZWJHZXRQcm9wZXJ0eShQcm9wKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBTZXRJbWFnZVlTaXplKHYpIHtcclxuICAgIHZhciBQcm9wID0gJ0ltYWdlWVNpemUvJztcclxuXHJcbiAgICBQcm9wID0gUHJvcCArIHY7XHJcbiAgICB0aGlzLlNpZ1dlYlNldFByb3BlcnR5U3luYyhQcm9wKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBHZXRJbWFnZVlTaXplKCkge1xyXG4gICAgdmFyIFByb3AgPSAnSW1hZ2VZU2l6ZSc7XHJcblxyXG4gICAgUHJvcCA9IFByb3A7XHJcbiAgICByZXR1cm4gdGhpcy5TaWdXZWJHZXRQcm9wZXJ0eShQcm9wKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBTZXRJbWFnZVBlbldpZHRoKHYpIHtcclxuICAgIHZhciBQcm9wID0gJ0ltYWdlUGVuV2lkdGgvJztcclxuXHJcbiAgICBQcm9wID0gUHJvcCArIHY7XHJcbiAgICB0aGlzLlNpZ1dlYlNldFByb3BlcnR5U3luYyhQcm9wKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBHZXRJbWFnZVBlbldpZHRoKCkge1xyXG4gICAgdmFyIFByb3AgPSAnSW1hZ2VQZW5XaWR0aCc7XHJcblxyXG4gICAgUHJvcCA9IFByb3A7XHJcbiAgICByZXR1cm4gdGhpcy5TaWdXZWJHZXRQcm9wZXJ0eShQcm9wKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBTZXRJbWFnZVRpbWVTdGFtcCh2KSB7XHJcbiAgICB2YXIgUHJvcCA9ICdJbWFnZVRpbWVTdGFtcC8nO1xyXG5cclxuICAgIFByb3AgPSBQcm9wICsgdjtcclxuICAgIHRoaXMuU2lnV2ViU2V0UHJvcGVydHlTeW5jKFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIEdldEltYWdlVGltZVN0YW1wKCkge1xyXG4gICAgdmFyIFByb3AgPSAnSW1hZ2VUaW1lU3RhbXAnO1xyXG5cclxuICAgIFByb3AgPSBQcm9wO1xyXG4gICAgcmV0dXJuIHRoaXMuU2lnV2ViR2V0UHJvcGVydHkoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgU2V0SW1hZ2VUaW1lU3RhbXBQb3NYKHYpIHtcclxuICAgIHZhciBQcm9wID0gJ0ltYWdlVGltZVN0YW1wUG9zWC8nO1xyXG5cclxuICAgIFByb3AgPSBQcm9wICsgdjtcclxuICAgIHRoaXMuU2lnV2ViU2V0UHJvcGVydHlTeW5jKFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIEdldEltYWdlVGltZVN0YW1wUG9zWCgpIHtcclxuICAgIHZhciBQcm9wID0gJ0ltYWdlVGltZVN0YW1wUG9zWCc7XHJcblxyXG4gICAgUHJvcCA9IFByb3A7XHJcbiAgICByZXR1cm4gdGhpcy5TaWdXZWJHZXRQcm9wZXJ0eShQcm9wKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBTZXRJbWFnZVRpbWVTdGFtcFBvc1kodikge1xyXG4gICAgdmFyIFByb3AgPSAnSW1hZ2VUaW1lU3RhbXBQb3NZLyc7XHJcblxyXG4gICAgUHJvcCA9IFByb3AgKyB2O1xyXG4gICAgdGhpcy5TaWdXZWJTZXRQcm9wZXJ0eVN5bmMoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgR2V0SW1hZ2VUaW1lU3RhbXBQb3NZKCkge1xyXG4gICAgdmFyIFByb3AgPSAnSW1hZ2VUaW1lU3RhbXBQb3NZJztcclxuXHJcbiAgICBQcm9wID0gUHJvcDtcclxuICAgIHJldHVybiB0aGlzLlNpZ1dlYkdldFByb3BlcnR5KFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIFNldEltYWdlVGltZVN0YW1wU2l6ZSh2KSB7XHJcbiAgICB2YXIgUHJvcCA9ICdJbWFnZVRpbWVTdGFtcFNpemUvJztcclxuXHJcbiAgICBQcm9wID0gUHJvcCArIHY7XHJcbiAgICB0aGlzLlNpZ1dlYlNldFByb3BlcnR5U3luYyhQcm9wKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBHZXRJbWFnZVRpbWVTdGFtcFNpemUoKSB7XHJcbiAgICB2YXIgUHJvcCA9ICdJbWFnZVRpbWVTdGFtcFNpemUnO1xyXG5cclxuICAgIFByb3AgPSBQcm9wO1xyXG4gICAgcmV0dXJuIHRoaXMuU2lnV2ViR2V0UHJvcGVydHkoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgU2V0SW1hZ2VBbm5vdGF0ZSh2KSB7XHJcbiAgICB2YXIgUHJvcCA9ICdJbWFnZUFubm90YXRlLyc7XHJcblxyXG4gICAgUHJvcCA9IFByb3AgKyB2O1xyXG4gICAgdGhpcy5TaWdXZWJTZXRQcm9wZXJ0eVN5bmMoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgR2V0SW1hZ2VBbm5vdGF0ZSgpIHtcclxuICAgIHZhciBQcm9wID0gJ0ltYWdlQW5ub3RhdGUnO1xyXG5cclxuICAgIFByb3AgPSBQcm9wO1xyXG4gICAgcmV0dXJuIHRoaXMuU2lnV2ViR2V0UHJvcGVydHkoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgU2V0SW1hZ2VBbm5vdGF0ZVBvc1godikge1xyXG4gICAgdmFyIFByb3AgPSAnSW1hZ2VBbm5vdGF0ZVBvc1gvJztcclxuXHJcbiAgICBQcm9wID0gUHJvcCArIHY7XHJcbiAgICB0aGlzLlNpZ1dlYlNldFByb3BlcnR5U3luYyhQcm9wKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBHZXRJbWFnZUFubm90YXRlUG9zWCgpIHtcclxuICAgIHZhciBQcm9wID0gJ0ltYWdlQW5ub3RhdGVQb3NYJztcclxuXHJcbiAgICBQcm9wID0gUHJvcDtcclxuICAgIHJldHVybiB0aGlzLlNpZ1dlYkdldFByb3BlcnR5KFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIFNldEltYWdlQW5ub3RhdGVQb3NZKHYpIHtcclxuICAgIHZhciBQcm9wID0gJ0ltYWdlQW5ub3RhdGVQb3NZLyc7XHJcblxyXG4gICAgUHJvcCA9IFByb3AgKyB2O1xyXG4gICAgdGhpcy5TaWdXZWJTZXRQcm9wZXJ0eVN5bmMoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgR2V0SW1hZ2VBbm5vdGF0ZVBvc1koKSB7XHJcbiAgICB2YXIgUHJvcCA9ICdJbWFnZUFubm90YXRlUG9zWSc7XHJcblxyXG4gICAgUHJvcCA9IFByb3A7XHJcbiAgICByZXR1cm4gdGhpcy5TaWdXZWJHZXRQcm9wZXJ0eShQcm9wKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBTZXRJbWFnZUFubm90YXRlU2l6ZSh2KSB7XHJcbiAgICB2YXIgUHJvcCA9ICdJbWFnZUFubm90YXRlU2l6ZS8nO1xyXG5cclxuICAgIFByb3AgPSBQcm9wICsgdjtcclxuICAgIHRoaXMuU2lnV2ViU2V0UHJvcGVydHlTeW5jKFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIEdldEltYWdlQW5ub3RhdGVTaXplKCkge1xyXG4gICAgdmFyIFByb3AgPSAnSW1hZ2VBbm5vdGF0ZVNpemUnO1xyXG5cclxuICAgIFByb3AgPSBQcm9wO1xyXG4gICAgcmV0dXJuIHRoaXMuU2lnV2ViR2V0UHJvcGVydHkoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgU2V0SnVzdGlmeVgodikge1xyXG4gICAgdmFyIFByb3AgPSAnSnVzdGlmeVgvJztcclxuXHJcbiAgICBQcm9wID0gUHJvcCArIHY7XHJcbiAgICB0aGlzLlNpZ1dlYlNldFByb3BlcnR5U3luYyhQcm9wKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBHZXRKdXN0aWZ5WCgpIHtcclxuICAgIHZhciBQcm9wID0gJ0p1c3RpZnlYJztcclxuXHJcbiAgICBQcm9wID0gUHJvcDtcclxuICAgIHJldHVybiB0aGlzLlNpZ1dlYkdldFByb3BlcnR5KFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIFNldEp1c3RpZnlZKHYpIHtcclxuICAgIHZhciBQcm9wID0gJ0p1c3RpZnlZLyc7XHJcblxyXG4gICAgUHJvcCA9IFByb3AgKyB2O1xyXG4gICAgdGhpcy5TaWdXZWJTZXRQcm9wZXJ0eVN5bmMoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgR2V0SnVzdGlmeVkoKSB7XHJcbiAgICB2YXIgUHJvcCA9ICdKdXN0aWZ5WSc7XHJcblxyXG4gICAgUHJvcCA9IFByb3A7XHJcbiAgICByZXR1cm4gdGhpcy5TaWdXZWJHZXRQcm9wZXJ0eShQcm9wKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBTZXRKdXN0aWZ5TW9kZSh2KSB7XHJcbiAgICB2YXIgUHJvcCA9ICdKdXN0aWZ5TW9kZS8nO1xyXG5cclxuICAgIFByb3AgPSBQcm9wICsgdjtcclxuICAgIHRoaXMuU2lnV2ViU2V0UHJvcGVydHlTeW5jKFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIEdldEp1c3RpZnlNb2RlKCkge1xyXG4gICAgdmFyIFByb3AgPSAnSnVzdGlmeU1vZGUnO1xyXG5cclxuICAgIFByb3AgPSBQcm9wO1xyXG4gICAgcmV0dXJuIHRoaXMuU2lnV2ViR2V0UHJvcGVydHkoUHJvcCk7XHJcbiAgfVxyXG5cclxuICAvL1xyXG4gIC8vXHRcdFNpZ1BsdXNORVRLZXlQYWQuY3NcclxuICAvL1xyXG4gIHN0YXRpYyBLZXlQYWRBZGRIb3RTcG90KGtleSwgY29vcmQsIHhwLCB5cCwgeHMsIHlzKSB7XHJcbiAgICB2YXIgUHJvcCA9ICdLZXlQYWRBZGRIb3RTcG90Lyc7XHJcbiAgICBQcm9wID0gUHJvcCArIGtleSArICcsJyArIGNvb3JkICsgJywnICsgeHAgKyAnLCcgKyB5cCArICcsJyArIHhzICsgJywnICsgeXM7XHJcbiAgICB0aGlzLlNpZ1dlYlNldFByb3BlcnR5U3luYyhQcm9wKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBLZXlQYWRNYXJrSG90U3BvdChrZXksIGNvb3JkLCB4cCwgeXAsIHhzLCB5cykge1xyXG4gICAgdGhpcy5MQ0RXcml0ZVN0cmluZygwLCAyLCB4cCwgeXAsICcxNnB0IHNhbnMtc2VyaWYnLCAzMiwgJysnKTtcclxuICAgIHRoaXMuTENEV3JpdGVTdHJpbmcoMCwgMiwgeHAgKyB4cywgeXAsICcxNnB0IHNhbnMtc2VyaWYnLCAzMiwgJysnKTtcclxuICAgIHRoaXMuTENEV3JpdGVTdHJpbmcoMCwgMiwgeHAsIHlwICsgeXMsICcxNnB0IHNhbnMtc2VyaWYnLCAzMiwgJysnKTtcclxuICAgIHRoaXMuTENEV3JpdGVTdHJpbmcoMCwgMiwgeHAgKyB4cywgeXAgKyB5cywgJzE2cHQgc2Fucy1zZXJpZicsIDMyLCAnKycpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIEtleVBhZFF1ZXJ5SG90U3BvdChrZXkpIHtcclxuICAgIHZhciBQcm9wID0gJ0tleVBhZFF1ZXJ5SG90U3BvdC8nO1xyXG4gICAgUHJvcCA9IFByb3AgKyBrZXk7XHJcbiAgICByZXR1cm4gdGhpcy5TaWdXZWJHZXRQcm9wZXJ0eShQcm9wKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBLZXlQYWRDbGVhckhvdFNwb3RMaXN0KCkge1xyXG4gICAgdmFyIFByb3AgPSAnS2V5UGFkQ2xlYXJIb3RTcG90TGlzdCc7XHJcbiAgICB0aGlzLlNpZ1dlYlNldFByb3BlcnR5U3luYyhQcm9wKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBTZXRTaWdXaW5kb3coY29vcmRzLCB4cCwgeXAsIHhzLCB5cykge1xyXG4gICAgdmFyIFByb3AgPSAnU2lnV2luZG93Lyc7XHJcbiAgICBQcm9wID0gUHJvcCArIGNvb3JkcyArICcsJyArIHhwICsgJywnICsgeXAgKyAnLCcgKyB4cyArICcsJyArIHlzO1xyXG4gICAgdGhpcy5TaWdXZWJTZXRQcm9wZXJ0eVN5bmMoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgQ2xlYXJTaWdXaW5kb3coaW5zaWRlKSB7XHJcbiAgICB2YXIgUHJvcCA9ICdDbGVhclNpZ1dpbmRvdy8nO1xyXG4gICAgUHJvcCA9IFByb3AgKyBpbnNpZGU7XHJcbiAgICB0aGlzLlNpZ1dlYlNldFByb3BlcnR5U3luYyhQcm9wKTtcclxuICB9XHJcblxyXG4gIC8vXHJcbiAgLy9cdFx0U2lnUGx1c05FVExDRC5jc1xyXG4gIC8vXHJcbiAgc3RhdGljIFNldExDRENhcHR1cmVNb2RlKHYpIHtcclxuICAgIHZhciBQcm9wID0gJ0NhcHR1cmVNb2RlLyc7XHJcblxyXG4gICAgUHJvcCA9IFByb3AgKyB2O1xyXG4gICAgdGhpcy5TaWdXZWJTZXRQcm9wZXJ0eVN5bmMoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgR2V0TENEQ2FwdHVyZU1vZGUoKSB7XHJcbiAgICB2YXIgUHJvcCA9ICdDYXB0dXJlTW9kZSc7XHJcblxyXG4gICAgUHJvcCA9IFByb3A7XHJcbiAgICByZXR1cm4gdGhpcy5TaWdXZWJHZXRQcm9wZXJ0eShQcm9wKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBMQ0RTZXRXaW5kb3coeFAsIHlQLCB4UywgeVMpIHtcclxuICAgIHZhciBQcm9wID0gJ0xDRFNldFdpbmRvdy8nO1xyXG4gICAgUHJvcCA9IFByb3AgKyB4UCArICcsJyArIHlQICsgJywnICsgeFMgKyAnLCcgKyB5UztcclxuICAgIHRoaXMuU2lnV2ViU2V0UHJvcGVydHlTeW5jKFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIExDRFdyaXRlU3RyaW5nKGRlc3QsIG1vZGUsIHgsIHksIGZudCwgc2l6ZSwgc3RyKSB7XHJcbiAgICB2YXIgYyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xyXG4gICAgdmFyIGNudHggPSBjLmdldENvbnRleHQoJzJkJyk7XHJcbiAgICBjbnR4LmZvbnQgPSBmbnQ7XHJcbiAgICB2YXIgdHh0ID0gc3RyO1xyXG4gICAgdmFyIHhzID0gTWF0aC5yb3VuZChjbnR4Lm1lYXN1cmVUZXh0KHR4dCkud2lkdGgpO1xyXG4gICAgdmFyIHlzID0gc2l6ZTtcclxuICAgIGMud2lkdGggPSB4cztcclxuICAgIGMuaGVpZ2h0ID0geXM7XHJcblxyXG4gICAgaWYgKHhzID09IDApIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNudHguZm9udCA9IGZudDtcclxuICAgIGNudHguZmlsbFN0eWxlID0gJyNGRkZGRkYnO1xyXG4gICAgY250eC5yZWN0KDAsIDAsIHhzLCB5cyk7XHJcbiAgICBjbnR4LmZpbGwoKTtcclxuXHJcbiAgICBjbnR4LmZpbGxTdHlsZSA9ICcjMDAwMDAwJztcclxuICAgIGNudHgudGV4dEJhc2VsaW5lID0gJ3RvcCc7XHJcbiAgICBjbnR4LmZpbGxUZXh0KHR4dCwgMCwgMCk7XHJcblxyXG4gICAgY250eC5kcmF3SW1hZ2UoY250eC5jYW52YXMsIDAsIDAsIHhzLCB5cyk7XHJcblxyXG4gICAgdmFyIEdzdHIgPSB0aGlzLmNyZWF0ZUxjZEJpdG1hcEZyb21DYW52YXMoYywgeCwgeSwgeHMsIHlzKTtcclxuXHJcbiAgICB0aGlzLkxjZFdyaXRlSW1hZ2VTdHJlYW0oZGVzdCwgbW9kZSwgeCwgeSwgeHMsIHlzLCBHc3RyKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBMQ0REcmF3UmVjdGFuZ2xlKGRlc3QsIG1vZGUsIHgsIHksIHhzLCB5cywgZmlsbCkge1xyXG4gICAgdmFyIGMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcclxuICAgIHZhciBjbnR4ID0gYy5nZXRDb250ZXh0KCcyZCcpO1xyXG5cclxuICAgIGMud2lkdGggPSB4cztcclxuICAgIGMuaGVpZ2h0ID0geXM7XHJcblxyXG4gICAgY250eC5maWxsU3R5bGUgPSBmaWxsO1xyXG4gICAgY250eC5yZWN0KDAsIDAsIHhzLCB5cyk7XHJcbiAgICBjbnR4LmZpbGwoKTtcclxuXHJcbiAgICBjbnR4LmRyYXdJbWFnZShjbnR4LmNhbnZhcywgMCwgMCwgeHMsIHlzKTtcclxuICAgIHZhciBHc3RyID0gdGhpcy5jcmVhdGVMY2RCaXRtYXBGcm9tQ2FudmFzKGMsIHgsIHksIHhzLCB5cyk7XHJcbiAgICB0aGlzLkxjZFdyaXRlSW1hZ2VCbG9iKGRlc3QsIG1vZGUsIHgsIHksIHhzLCB5cywgR3N0cik7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgTENERHJhd0J1dHRvbihkZXN0LCBtb2RlLCB4LCB5LCB4cywgeXMsIHN0cnlzLCBmaWxsLCBmbnQsIHN0cikge1xyXG4gICAgdmFyIGMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcclxuICAgIHZhciBjbnR4ID0gYy5nZXRDb250ZXh0KCcyZCcpO1xyXG4gICAgY250eC5mb250ID0gZm50O1xyXG4gICAgdmFyIHR4dCA9IHN0cjtcclxuICAgIHZhciBzeHMgPSBNYXRoLnJvdW5kKGNudHgubWVhc3VyZVRleHQodHh0KS53aWR0aCk7XHJcbiAgICB2YXIgc3lzID0gc3RyeXM7XHJcbiAgICBjLndpZHRoID0geHM7XHJcbiAgICBjLmhlaWdodCA9IHlzO1xyXG5cclxuICAgIGNudHguZm9udCA9IGZudDtcclxuICAgIGNudHguZmlsbFN0eWxlID0gZmlsbDtcclxuICAgIGNudHgucmVjdCgwLCAwLCB4cywgeXMpO1xyXG4gICAgY250eC5maWxsKCk7XHJcblxyXG4gICAgY250eC5maWxsU3R5bGUgPSAnI0ZGRkZGRic7XHJcbiAgICBjbnR4LnRleHRCYXNlbGluZSA9ICd0b3AnO1xyXG4gICAgY250eC5maWxsVGV4dCh0eHQsICh4cyAtIHN4cykgLyAyLCAoeXMgLSBzeXMpIC8gMik7XHJcblxyXG4gICAgY250eC5kcmF3SW1hZ2UoY250eC5jYW52YXMsIDAsIDAsIHhzLCB5cyk7XHJcblxyXG4gICAgdmFyIEdzdHIgPSB0aGlzLmNyZWF0ZUxjZEJpdG1hcEZyb21DYW52YXMoYywgeCwgeSwgeHMsIHlzKTtcclxuXHJcbiAgICB0aGlzLkxjZFdyaXRlSW1hZ2VCbG9iKGRlc3QsIG1vZGUsIHgsIHksIHhzLCB5cywgR3N0cik7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgTENEV3JpdGVTdHJpbmdXaW5kb3coZGVzdCwgbW9kZSwgeCwgeSwgZm50LCB4c2l6ZSwgeXNpemUsIHN0cikge1xyXG4gICAgdmFyIGMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcclxuICAgIHZhciBjbnR4ID0gYy5nZXRDb250ZXh0KCcyZCcpO1xyXG4gICAgY250eC5mb250ID0gZm50O1xyXG4gICAgdmFyIHR4dCA9IHN0cjtcclxuICAgIHZhciB4cyA9IHhzaXplO1xyXG4gICAgdmFyIHlzID0geXNpemU7XHJcbiAgICBjLndpZHRoID0geHM7XHJcbiAgICBjLmhlaWdodCA9IHlzO1xyXG5cclxuICAgIGNudHguZm9udCA9IGZudDtcclxuICAgIGNudHguZmlsbFN0eWxlID0gJyNGRkZGRkYnO1xyXG4gICAgY250eC5yZWN0KDAsIDAsIHhzLCB5cyk7XHJcbiAgICBjbnR4LmZpbGwoKTtcclxuXHJcbiAgICBjbnR4LmZpbGxTdHlsZSA9ICcjMDAwMDAwJztcclxuICAgIGNudHgudGV4dEJhc2VsaW5lID0gJ3RvcCc7XHJcbiAgICBjbnR4LmZpbGxUZXh0KHR4dCwgMCwgMCk7XHJcblxyXG4gICAgY250eC5kcmF3SW1hZ2UoY250eC5jYW52YXMsIDAsIDAsIHhzLCB5cyk7XHJcblxyXG4gICAgdmFyIEdzdHIgPSB0aGlzLmNyZWF0ZUxjZEJpdG1hcEZyb21DYW52YXMoYywgeCwgeSwgeHMsIHlzKTtcclxuXHJcbiAgICB0aGlzLkxjZFdyaXRlSW1hZ2VCbG9iKGRlc3QsIG1vZGUsIHgsIHksIHhzLCB5cywgR3N0cik7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgTENEU3RyaW5nV2lkdGgoZm50LCBzdHIpIHtcclxuICAgIHZhciBjID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XHJcbiAgICB2YXIgY250eCA9IGMuZ2V0Q29udGV4dCgnMmQnKTtcclxuICAgIGNudHguZm9udCA9IGZudDtcclxuICAgIHZhciB0eHQgPSBzdHI7XHJcbiAgICB2YXIgeHMgPSBNYXRoLnJvdW5kKGNudHgubWVhc3VyZVRleHQodHh0KS53aWR0aCk7XHJcblxyXG4gICAgcmV0dXJuIHhzO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIExDRFN0cmluZ0hlaWdodChmbnQsIHN0cikge1xyXG4gICAgcmV0dXJuIDE2O1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIExjZFJlZnJlc2goTW9kZSwgWHAsIFlwLCBYcywgWXMpIHtcclxuICAgIHZhciBQcm9wID0gJ0xjZFJlZnJlc2gvJztcclxuXHJcbiAgICBQcm9wID0gUHJvcCArIE1vZGUgKyAnLCcgKyBYcCArICcsJyArIFlwICsgJywnICsgWHMgKyAnLCcgKyBZcztcclxuICAgIHRoaXMuU2lnV2ViU2V0UHJvcGVydHlTeW5jKFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIExDRFNlbmRDbWRTdHJpbmcoQ21kU3RyLCBSZXR1cm5Db3VudCwgUmVzdWx0LCBUaW1lT3V0KSB7XHJcbiAgICB2YXIgUHJvcCA9ICdMY2RTZW5kQ21kU3RyaW5nLyc7XHJcblxyXG4gICAgUHJvcCA9IFByb3AgKyBSZXR1cm5Db3VudCArICcsJyArIFRpbWVPdXQ7XHJcbiAgICBSZXN1bHQgPSB0aGlzLlNpZ1dlYlNldFN0cmVhbVByb3BlcnR5KFByb3AsIENtZFN0cik7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgTENEU2VuZENtZERhdGEoQ21kU3RyLCBSZXR1cm5Db3VudCwgUmVzdWx0LCBUaW1lT3V0KSB7XHJcbiAgICB2YXIgUHJvcCA9ICdMY2RTZW5kQ21kRGF0YS8nO1xyXG5cclxuICAgIFByb3AgPSBQcm9wICsgUmV0dXJuQ291bnQgKyAnLCcgKyBUaW1lT3V0O1xyXG4gICAgUmVzdWx0ID0gdGhpcy5TaWdXZWJTZXRTdHJlYW1Qcm9wZXJ0eShQcm9wLCBDbWRTdHIpO1xyXG4gIH1cclxuXHJcbiAgLy9cdFx0ZnVuY3Rpb24gIExDRFNlbmRXaW5kb3dlZEdyYXBoaWNDYW52YXMoICBkZXN0LCBtb2RlLCAgeCwgIHksIGNhbnZhcyApXHJcbiAgLy9cdFx0XHQge1xyXG4gIC8vXHRcdFx0IH1cclxuXHJcbiAgLy9cdFx0ZnVuY3Rpb24gIExDRFNlbmRXaW5kb3dlZEdyYXBoaWNDYW52YXMoICBkZXN0LCBtb2RlLCAgeCwgIHksICB4cywgIHlzLCBjYW52YXMgKVxyXG4gIC8vXHRcdFx0e1xyXG4gIC8vXHRcdFx0dmFyIEdzdHIgPSB0aGlzLmNyZWF0ZUxjZEJpdG1hcEZyb21DYW52YXMoIGNhbnZhcywgMCwgMCwgeHMsIHlzKVxyXG4gIC8vXHRcdFx0TGNkV3JpdGVJbWFnZVN0cmVhbSggZGVzdCwgbW9kZSwgeCwgeSwgeHMsIHlzLCBHc3RyICk7XHJcbiAgLy9cdFx0XHR9XHJcblxyXG4gIHN0YXRpYyBMQ0RTZW5kV2luZG93ZWRHcmFwaGljQ2FudmFzKGRlc3QsIG1vZGUsIHgsIHksIHhzLCB5cywgYywgeHBzLCB5cHMpIHtcclxuICAgIHZhciBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcclxuICAgIHZhciBHc3RyID0gdGhpcy5jcmVhdGVMY2RCaXRtYXBGcm9tQ2FudmFzKGNhbnZhcywgeHBzLCB5cHMsIHhzLCB5cyk7XHJcbiAgICB0aGlzLkxjZFdyaXRlSW1hZ2VTdHJlYW0oZGVzdCwgbW9kZSwgeCwgeSwgeHMsIHlzLCBHc3RyKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBMQ0RTZW5kR3JhcGhpY1VybChkZXN0LCBtb2RlLCB4LCB5LCB1cmwpIHtcclxuICAgIHRoaXMuTGNkV3JpdGVJbWFnZShkZXN0LCBtb2RlLCB4LCB5LCB1cmwpO1xyXG4gIH1cclxuXHJcbiAgLy9cdFx0ZnVuY3Rpb24gIExDRFNlbmRHcmFwaGljKCAgRGVzdCwgIE1vZGUsICBYUG9zLCAgWVBvcywgIEltYWdlRmlsZU5hbWUgKSB7fVxyXG4gIC8vXHRcdGZ1bmN0aW9uICBMQ0RTZW5kR3JhcGhpY1VSTCggIERlc3QsICBNb2RlLCAgWFBvcywgIFlQb3MsICBVUkwgKSB7fVxyXG5cclxuICBzdGF0aWMgTENEQ2xlYXIoKSB7XHJcbiAgICB2YXIgUHJvcCA9ICdMY2RDbGVhcic7XHJcblxyXG4gICAgUHJvcCA9IFByb3A7XHJcbiAgICByZXR1cm4gdGhpcy5TaWdXZWJHZXRQcm9wZXJ0eShQcm9wKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBMQ0RTZXRUYWJsZXRNYXAoXHJcbiAgICBMQ0RUeXBlLFxyXG4gICAgTENEWFNpemUsXHJcbiAgICBMQ0RZU2l6ZSxcclxuICAgIExDRFhTdGFydCxcclxuICAgIExDRFlTdGFydCxcclxuICAgIExDRFhTdG9wLFxyXG4gICAgTENEWVN0b3BcclxuICApIHt9XHJcblxyXG4gIHN0YXRpYyBMQ0RTZXRQaXhlbERlcHRoKHYpIHtcclxuICAgIHZhciBQcm9wID0gJ0xjZFNldFBpeGVsRGVwdGgvJztcclxuXHJcbiAgICBQcm9wID0gUHJvcCArIHY7XHJcbiAgICB0aGlzLlNpZ1dlYlNldFByb3BlcnR5U3luYyhQcm9wKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBMQ0RHZXRMQ0RTaXplKCkge1xyXG4gICAgdmFyIFByb3AgPSAnTGNkR2V0TGNkU2l6ZSc7XHJcblxyXG4gICAgUHJvcCA9IFByb3A7XHJcbiAgICByZXR1cm4gdGhpcy5TaWdXZWJHZXRQcm9wZXJ0eShQcm9wKTtcclxuICB9XHJcbiAgc3RhdGljIExDREdldENvbXByZXNzaW9uTW9kZSgpIHtcclxuICAgIHZhciBQcm9wID0gJ0xjZENvbXByZXNzaW9uTW9kZSc7XHJcblxyXG4gICAgUHJvcCA9IFByb3A7XHJcbiAgICByZXR1cm4gdGhpcy5TaWdXZWJHZXRQcm9wZXJ0eShQcm9wKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBMQ0RHZXRaQ29tcHJlc3Npb25Nb2RlKCkge1xyXG4gICAgdmFyIFByb3AgPSAnTGNkWkNvbXByZXNzaW9uTW9kZSc7XHJcblxyXG4gICAgUHJvcCA9IFByb3A7XHJcbiAgICByZXR1cm4gdGhpcy5TaWdXZWJHZXRQcm9wZXJ0eShQcm9wKTtcclxuICB9XHJcblxyXG4gIC8vXHJcbiAgLy9cdFx0U2lnUGx1c05FVExDRC5jc1xyXG4gIC8vXHJcblxyXG4gIHN0YXRpYyBTZXRSZWFsVGFibGV0U3RhdGUodikge1xyXG4gICAgdmFyIFByb3AgPSAnVGFibGV0U3RhdGUvJztcclxuXHJcbiAgICBQcm9wID0gUHJvcCArIHY7XHJcbiAgICB0aGlzLlNpZ1dlYlNldFByb3BlcnR5U3luYyhQcm9wKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBHZXRUYWJsZXRTdGF0ZSgpIHtcclxuICAgIHZhciBQcm9wID0gJ1RhYmxldFN0YXRlJztcclxuXHJcbiAgICBQcm9wID0gUHJvcDtcclxuICAgIHJldHVybiB0aGlzLlNpZ1dlYkdldFByb3BlcnR5KFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIFNldFRhYmxldExvZ2ljYWxYU2l6ZSh2KSB7XHJcbiAgICB2YXIgUHJvcCA9ICdUYWJsZXRMb2dpY2FsWFNpemUvJztcclxuXHJcbiAgICBQcm9wID0gUHJvcCArIHY7XHJcbiAgICB0aGlzLlNpZ1dlYlNldFByb3BlcnR5U3luYyhQcm9wKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBHZXRUYWJsZXRMb2dpY2FsWFNpemUoKSB7XHJcbiAgICB2YXIgUHJvcCA9ICdUYWJsZXRMb2dpY2FsWFNpemUnO1xyXG5cclxuICAgIFByb3AgPSBQcm9wO1xyXG4gICAgcmV0dXJuIHRoaXMuU2lnV2ViR2V0UHJvcGVydHkoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgR2V0VGFibGV0TG9naWNhbFlTaXplKCkge1xyXG4gICAgdmFyIFByb3AgPSAnVGFibGV0TG9naWNhbFlTaXplJztcclxuXHJcbiAgICBQcm9wID0gUHJvcDtcclxuICAgIHJldHVybiB0aGlzLlNpZ1dlYkdldFByb3BlcnR5KFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIFNldFRhYmxldExvZ2ljYWxZU2l6ZSh2KSB7XHJcbiAgICB2YXIgUHJvcCA9ICdUYWJsZXRMb2dpY2FsWVNpemUvJztcclxuXHJcbiAgICBQcm9wID0gUHJvcCArIHY7XHJcbiAgICB0aGlzLlNpZ1dlYlNldFByb3BlcnR5U3luYyhQcm9wKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBTZXRUYWJsZXRYU3RhcnQodikge1xyXG4gICAgdmFyIFByb3AgPSAnVGFibGV0WFN0YXJ0Lyc7XHJcblxyXG4gICAgUHJvcCA9IFByb3AgKyB2O1xyXG4gICAgdGhpcy5TaWdXZWJTZXRQcm9wZXJ0eVN5bmMoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgR2V0VGFibGV0WFN0YXJ0KCkge1xyXG4gICAgdmFyIFByb3AgPSAnVGFibGV0WFN0YXJ0JztcclxuXHJcbiAgICBQcm9wID0gUHJvcDtcclxuICAgIHJldHVybiB0aGlzLlNpZ1dlYkdldFByb3BlcnR5KFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIFNldFRhYmxldFlTdGFydCh2KSB7XHJcbiAgICB2YXIgUHJvcCA9ICdUYWJsZXRZU3RhcnQvJztcclxuXHJcbiAgICBQcm9wID0gUHJvcCArIHY7XHJcbiAgICB0aGlzLlNpZ1dlYlNldFByb3BlcnR5U3luYyhQcm9wKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBHZXRUYWJsZXRZU3RhcnQoKSB7XHJcbiAgICB2YXIgUHJvcCA9ICdUYWJsZXRZU3RhcnQnO1xyXG5cclxuICAgIFByb3AgPSBQcm9wO1xyXG4gICAgcmV0dXJuIHRoaXMuU2lnV2ViR2V0UHJvcGVydHkoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgU2V0VGFibGV0WFN0b3Aodikge1xyXG4gICAgdmFyIFByb3AgPSAnVGFibGV0WFN0b3AvJztcclxuXHJcbiAgICBQcm9wID0gUHJvcCArIHY7XHJcbiAgICB0aGlzLlNpZ1dlYlNldFByb3BlcnR5U3luYyhQcm9wKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBHZXRUYWJsZXRYU3RvcCgpIHtcclxuICAgIHZhciBQcm9wID0gJ1RhYmxldFhTdG9wJztcclxuXHJcbiAgICBQcm9wID0gUHJvcDtcclxuICAgIHJldHVybiB0aGlzLlNpZ1dlYkdldFByb3BlcnR5KFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIFNldFRhYmxldFlTdG9wKHYpIHtcclxuICAgIHZhciBQcm9wID0gJ1RhYmxldFlTdG9wLyc7XHJcblxyXG4gICAgUHJvcCA9IFByb3AgKyB2O1xyXG4gICAgdGhpcy5TaWdXZWJTZXRQcm9wZXJ0eVN5bmMoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgR2V0VGFibGV0WVN0b3AoKSB7XHJcbiAgICB2YXIgUHJvcCA9ICdUYWJsZXRZU3RvcCc7XHJcblxyXG4gICAgUHJvcCA9IFByb3A7XHJcbiAgICByZXR1cm4gdGhpcy5TaWdXZWJHZXRQcm9wZXJ0eShQcm9wKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBTZXRUYWJsZXRGaWx0ZXJQb2ludHModikge1xyXG4gICAgdmFyIFByb3AgPSAnVGFibGV0RmlsdGVyUG9pbnRzLyc7XHJcblxyXG4gICAgUHJvcCA9IFByb3AgKyB2O1xyXG4gICAgdGhpcy5TaWdXZWJTZXRQcm9wZXJ0eVN5bmMoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgR2V0VGFibGV0RmlsdGVyUG9pbnRzKCkge1xyXG4gICAgdmFyIFByb3AgPSAnVGFibGV0RmlsdGVyUG9pbnRzJztcclxuXHJcbiAgICBQcm9wID0gUHJvcDtcclxuICAgIHJldHVybiB0aGlzLlNpZ1dlYkdldFByb3BlcnR5KFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIFNldFRhYmxldFRpbWluZ0FkdmFuY2Uodikge1xyXG4gICAgdmFyIFByb3AgPSAnVGFibGV0VGltaW5nQWR2YW5jZS8nO1xyXG5cclxuICAgIFByb3AgPSBQcm9wICsgdjtcclxuICAgIHRoaXMuU2lnV2ViU2V0UHJvcGVydHlTeW5jKFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIEdldFRhYmxldFRpbWluZ0FkdmFuY2UoKSB7XHJcbiAgICB2YXIgUHJvcCA9ICdUYWJsZXRUaW1pbmdBZHZhbmNlJztcclxuXHJcbiAgICBQcm9wID0gUHJvcDtcclxuICAgIHJldHVybiB0aGlzLlNpZ1dlYkdldFByb3BlcnR5KFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIFNldFRhYmxldENvbVBvcnQodikge1xyXG4gICAgdmFyIFByb3AgPSAnVGFibGV0Q29tUG9ydC8nO1xyXG5cclxuICAgIFByb3AgPSBQcm9wICsgdjtcclxuICAgIHRoaXMuU2lnV2ViU2V0UHJvcGVydHlTeW5jKFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIEdldFRhYmxldENvbVBvcnQoKSB7XHJcbiAgICB2YXIgUHJvcCA9ICdUYWJsZXRDb21Qb3J0JztcclxuXHJcbiAgICBQcm9wID0gUHJvcDtcclxuICAgIHJldHVybiB0aGlzLlNpZ1dlYkdldFByb3BlcnR5KFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIFNldFRhYmxldEJhdWRSYXRlKHYpIHtcclxuICAgIHZhciBQcm9wID0gJ1RhYmxldEJhdWRSYXRlLyc7XHJcblxyXG4gICAgUHJvcCA9IFByb3AgKyB2O1xyXG4gICAgdGhpcy5TaWdXZWJTZXRQcm9wZXJ0eVN5bmMoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgR2V0VGFibGV0QmF1ZFJhdGUoKSB7XHJcbiAgICB2YXIgUHJvcCA9ICdUYWJsZXRCYXVkUmF0ZSc7XHJcblxyXG4gICAgUHJvcCA9IFByb3A7XHJcbiAgICByZXR1cm4gdGhpcy5TaWdXZWJHZXRQcm9wZXJ0eShQcm9wKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBTZXRUYWJsZXRSb3RhdGlvbih2KSB7XHJcbiAgICB2YXIgUHJvcCA9ICdUYWJsZXRSb3RhdGlvbi8nO1xyXG5cclxuICAgIFByb3AgPSBQcm9wICsgdjtcclxuICAgIHRoaXMuU2lnV2ViU2V0UHJvcGVydHlTeW5jKFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIEdldFRhYmxldFJvdGF0aW9uKCkge1xyXG4gICAgdmFyIFByb3AgPSAnVGFibGV0Um90YXRpb24nO1xyXG5cclxuICAgIFByb3AgPSBQcm9wO1xyXG4gICAgcmV0dXJuIHRoaXMuU2lnV2ViR2V0UHJvcGVydHkoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgU2V0VGFibGV0VHlwZSh2KSB7XHJcbiAgICB2YXIgUHJvcCA9ICdUYWJsZXRUeXBlLyc7XHJcblxyXG4gICAgUHJvcCA9IFByb3AgKyB2O1xyXG4gICAgdGhpcy5TaWdXZWJTZXRQcm9wZXJ0eVN5bmMoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgR2V0VGFibGV0VHlwZSgpIHtcclxuICAgIHZhciBQcm9wID0gJ1RhYmxldFR5cGUnO1xyXG5cclxuICAgIFByb3AgPSBQcm9wO1xyXG4gICAgcmV0dXJuIHRoaXMuU2lnV2ViR2V0UHJvcGVydHkoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgU2V0U2VydmVyVGFibGV0VHlwZSh2KSB7XHJcbiAgICB2YXIgUHJvcCA9ICdTZXJ2ZXJUYWJsZXRUeXBlLyc7XHJcblxyXG4gICAgUHJvcCA9IFByb3AgKyB2O1xyXG4gICAgdGhpcy5TaWdXZWJTZXRQcm9wZXJ0eVN5bmMoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgR2V0U2VydmVyVGFibGV0VHlwZSgpIHtcclxuICAgIHZhciBQcm9wID0gJ1NlcnZlclRhYmxldFR5cGUnO1xyXG5cclxuICAgIFByb3AgPSBQcm9wO1xyXG4gICAgcmV0dXJuIHRoaXMuU2lnV2ViR2V0UHJvcGVydHkoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgU2V0VGFibGV0Q29tVGVzdCh2KSB7XHJcbiAgICB2YXIgUHJvcCA9ICdUYWJsZXRDb21UZXN0Lyc7XHJcblxyXG4gICAgUHJvcCA9IFByb3AgKyB2O1xyXG4gICAgdGhpcy5TaWdXZWJTZXRQcm9wZXJ0eVN5bmMoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgR2V0VGFibGV0Q29tVGVzdCgpIHtcclxuICAgIHZhciBQcm9wID0gJ1RhYmxldENvbVRlc3QnO1xyXG5cclxuICAgIFByb3AgPSBQcm9wO1xyXG4gICAgcmV0dXJuIHRoaXMuU2lnV2ViR2V0UHJvcGVydHkoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgU2V0VGFibGV0UmVzb2x1dGlvbih2KSB7XHJcbiAgICB2YXIgUHJvcCA9ICdUYWJsZXRSZXNvbHV0aW9uLyc7XHJcblxyXG4gICAgUHJvcCA9IFByb3AgKyB2O1xyXG4gICAgdGhpcy5TaWdXZWJTZXRQcm9wZXJ0eVN5bmMoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgR2V0VGFibGV0UmVzb2x1dGlvbigpIHtcclxuICAgIHZhciBQcm9wID0gJ1RhYmxldFJlc29sdXRpb24nO1xyXG5cclxuICAgIFByb3AgPSBQcm9wO1xyXG4gICAgcmV0dXJuIHRoaXMuU2lnV2ViR2V0UHJvcGVydHkoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgVGFibGV0Q29ubmVjdFF1ZXJ5KCkge1xyXG4gICAgdmFyIFByb3AgPSAnVGFibGV0Q29ubmVjdFF1ZXJ5JztcclxuXHJcbiAgICBQcm9wID0gUHJvcDtcclxuICAgIHJldHVybiB0aGlzLlNpZ1dlYkdldFByb3BlcnR5KFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIFRhYmxldE1vZGVsTnVtYmVyKCkge1xyXG4gICAgdmFyIFByb3AgPSAnVGFibGV0TW9kZWxOdW1iZXInO1xyXG5cclxuICAgIFByb3AgPSBQcm9wO1xyXG4gICAgcmV0dXJuIHRoaXMuU2lnV2ViR2V0UHJvcGVydHkoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgVGFibGV0U2VyaWFsTnVtYmVyKCkge1xyXG4gICAgdmFyIFByb3AgPSAnVGFibGV0U2VyaWFsTnVtYmVyJztcclxuXHJcbiAgICBQcm9wID0gUHJvcDtcclxuICAgIHJldHVybiB0aGlzLlNpZ1dlYkdldFByb3BlcnR5KFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIFNldFRhYmxldFBvcnRQYXRoKHYpIHtcclxuICAgIHZhciBQcm9wID0gJ1RhYmxldFBvcnRQYXRoLyc7XHJcblxyXG4gICAgUHJvcCA9IFByb3AgKyB2O1xyXG4gICAgdGhpcy5TaWdXZWJTZXRQcm9wZXJ0eVN5bmMoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgU2V0VGFibGV0TG9jYWxJbmlGaWxlUGF0aCh2KSB7XHJcbiAgICB2YXIgUHJvcCA9ICdUYWJsZXRMb2NhbEluaUZpbGVQYXRoLyc7XHJcblxyXG4gICAgUHJvcCA9IFByb3AgKyB2O1xyXG4gICAgdGhpcy5TaWdXZWJTZXRQcm9wZXJ0eVN5bmMoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgU2V0VGFibGV0TW9kZWwodikge1xyXG4gICAgdmFyIFByb3AgPSAnVGFibGV0TW9kZWwvJztcclxuXHJcbiAgICBQcm9wID0gUHJvcCArIHY7XHJcbiAgICB0aGlzLlNpZ1dlYlNldFByb3BlcnR5U3luYyhQcm9wKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBTZXRTZXJpYWxQb3J0Q2xvc2VEZWxheSh2KSB7XHJcbiAgICB2YXIgUHJvcCA9ICdTZXJpYWxQb3J0Q2xvc2VEZWxheS8nO1xyXG5cclxuICAgIFByb3AgPSBQcm9wICsgdjtcclxuICAgIHRoaXMuU2lnV2ViU2V0UHJvcGVydHlTeW5jKFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIEdldFNlcmlhbFBvcnRDbG9zZURlbGF5KCkge1xyXG4gICAgdmFyIFByb3AgPSAnU2VyaWFsUG9ydENsb3NlRGVsYXknO1xyXG5cclxuICAgIFByb3AgPSBQcm9wO1xyXG4gICAgcmV0dXJuIHRoaXMuU2lnV2ViR2V0UHJvcGVydHkoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgRW5hYmxlVGFibGV0RW5jcnlwdGlvbigpIHtcclxuICAgIHZhciBQcm9wID0gJ0VuYWJsZVRhYmxldEVuY3J5cHRpb24nO1xyXG5cclxuICAgIFByb3AgPSBQcm9wO1xyXG4gICAgdGhpcy5TaWdXZWJTZXRQcm9wZXJ0eVN5bmMoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgU2V0VGFibGV0RW5jcnlwdGlvbk1vZGUoaG1vZGUsIHRtb2RlKSB7XHJcbiAgICB2YXIgUHJvcCA9ICdUYWJsZXRFbmNyeXB0aW9uTW9kZS8nO1xyXG5cclxuICAgIFByb3AgPSBQcm9wICsgaG1vZGUgKyAnLCcgKyB0bW9kZTtcclxuICAgIHRoaXMuU2lnV2ViU2V0UHJvcGVydHlTeW5jKFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIFNldE1heExvZ0ZpbGVTaXplKHYpIHtcclxuICAgIHZhciBQcm9wID0gJ01heExvZ0ZpbGVTaXplLyc7XHJcblxyXG4gICAgUHJvcCA9IFByb3AgKyB2O1xyXG4gICAgdGhpcy5TaWdXZWJTZXRQcm9wZXJ0eVN5bmMoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgR2V0U2lnU29ja1NlcnZlclBhdGgoKSB7XHJcbiAgICB2YXIgUHJvcCA9ICdTaWdTb2NrU2VydmVyUGF0aCc7XHJcblxyXG4gICAgUHJvcCA9IFByb3A7XHJcbiAgICByZXR1cm4gdGhpcy5TaWdXZWJHZXRQcm9wZXJ0eShQcm9wKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBHZXRTaWdTb2NrQ2xpZW50TmFtZSgpIHtcclxuICAgIHZhciBQcm9wID0gJ1NpZ1NvY2tDbGllbnROYW1lJztcclxuXHJcbiAgICBQcm9wID0gUHJvcDtcclxuICAgIHJldHVybiB0aGlzLlNpZ1dlYkdldFByb3BlcnR5KFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIEdldFNpZ1NvY2tQb3J0TnVtYmVyKCkge1xyXG4gICAgdmFyIFByb3AgPSAnU2lnU29ja1BvcnROdW1iZXInO1xyXG5cclxuICAgIFByb3AgPSBQcm9wO1xyXG4gICAgcmV0dXJuIHRoaXMuU2lnV2ViR2V0UHJvcGVydHkoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgU2V0U2lnU29ja1NlcnZlclBhdGgodikge1xyXG4gICAgdmFyIFByb3AgPSAnU2lnU29ja1NlcnZlclBhdGgvJztcclxuXHJcbiAgICBQcm9wID0gUHJvcCArIHY7XHJcbiAgICB0aGlzLlNpZ1dlYlNldFByb3BlcnR5U3luYyhQcm9wKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBTZXRTaWdTb2NrQ2xpZW50TmFtZSh2KSB7XHJcbiAgICB2YXIgUHJvcCA9ICdTaWdTb2NrQ2xpZW50TmFtZS8nO1xyXG5cclxuICAgIFByb3AgPSBQcm9wICsgdjtcclxuICAgIHRoaXMuU2lnV2ViU2V0UHJvcGVydHlTeW5jKFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIFNldFBvcnROdW1iZXIodikge1xyXG4gICAgdmFyIFByb3AgPSAnUG9ydE51bWJlci8nO1xyXG5cclxuICAgIFByb3AgPSBQcm9wICsgdjtcclxuICAgIHRoaXMuU2lnV2ViU2V0UHJvcGVydHlTeW5jKFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIFNldFNpZ1NvY2tQb3J0TnVtYmVyKHYpIHtcclxuICAgIHZhciBQcm9wID0gJ1NpZ1NvY2tQb3J0TnVtYmVyLyc7XHJcblxyXG4gICAgUHJvcCA9IFByb3AgKyB2O1xyXG4gICAgdGhpcy5TaWdXZWJTZXRQcm9wZXJ0eVN5bmMoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgR2V0RmlybXdhcmVSZXZpc2lvbigpIHtcclxuICAgIHZhciBQcm9wID0gJ0Zpcm13YXJlUmV2aXNpb24nO1xyXG5cclxuICAgIFByb3AgPSBQcm9wO1xyXG4gICAgcmV0dXJuIHRoaXMuU2lnV2ViR2V0UHJvcGVydHkoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgU2V0VGFibGV0RGF0YShzaWdTdHIpIHtcclxuICAgIHZhciBQcm9wID0gJ1RhYmxldERhdGEnO1xyXG5cclxuICAgIFByb3AgPSBQcm9wO1xyXG4gICAgdGhpcy5TaWdXZWJTZXRTdHJlYW1Qcm9wZXJ0eShQcm9wLCBzaWdTdHIpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIEdldFRhYmxldERhdGEoKSB7XHJcbiAgICB2YXIgUHJvcCA9ICdUYWJsZXREYXRhJztcclxuXHJcbiAgICBQcm9wID0gUHJvcDtcclxuICAgIHZhciBTdHIgPSB0aGlzLlNpZ1dlYkdldFByb3BlcnR5KFByb3ApO1xyXG5cclxuICAgIHJldHVybiBTdHIuc2xpY2UoMSwgU3RyLmxlbmd0aCAtIDEpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIE9wZW5UYWJsZXQodikge1xyXG4gICAgdmFyIFByb3AgPSAnT3BlblRhYmxldC8nO1xyXG5cclxuICAgIFByb3AgPSBQcm9wICsgdjtcclxuICAgIHRoaXMuU2lnV2ViU2V0UHJvcGVydHlTeW5jKFByb3ApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIENsb3NlVGFibGV0KCkge1xyXG4gICAgdmFyIFByb3AgPSAnQ2xvc2VUYWJsZXQnO1xyXG5cclxuICAgIFByb3AgPSBQcm9wO1xyXG4gICAgdGhpcy5TaWdXZWJTZXRQcm9wZXJ0eShQcm9wKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBSZXNldFBhcmFtZXRlcnMoKSB7XHJcbiAgICB2YXIgUHJvcCA9ICdSZXNldFBhcmFtZXRlcnMnO1xyXG5cclxuICAgIFByb3AgPSBQcm9wO1xyXG4gICAgdGhpcy5TaWdXZWJTZXRQcm9wZXJ0eVN5bmMoUHJvcCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgdGVzdFJhd0RhdGEoKSB7XHJcbiAgICB0aGlzLk9wZW5UYWJsZXQoMSk7XHJcbiAgICB2YXIgU3RyMSA9IHRoaXMuR2V0VGFibGV0RGF0YSgpO1xyXG4gICAgdGhpcy5DbG9zZVRhYmxldCgpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIFNldFRhYmxldFN0YXRlKHYsIGN0eCwgdHYpIHtcclxuICAgIHZhciBkZWxheTtcclxuXHJcbiAgICBpZiAodHYpIHtcclxuICAgICAgZGVsYXkgPSB0djtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGRlbGF5ID0gMTAwO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLkdldFRhYmxldFN0YXRlKCkgIT0gdikge1xyXG4gICAgICBpZiAodiA9PSAxKSB7XHJcbiAgICAgICAgaWYgKGN0eCkge1xyXG4gICAgICAgICAgdmFyIGNhbiA9IGN0eC5jYW52YXM7XHJcbiAgICAgICAgICB0aGlzLlNldERpc3BsYXlYU2l6ZShjYW4ud2lkdGgpO1xyXG4gICAgICAgICAgdGhpcy5TZXREaXNwbGF5WVNpemUoY2FuLmhlaWdodCk7XHJcbiAgICAgICAgICB0aGlzLlNpZ1dlYlNldERpc3BsYXlUYXJnZXQoY3R4KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5TZXRSZWFsVGFibGV0U3RhdGUodik7XHJcbiAgICAgICAgdmFyIGRhdGEgPSB0aGlzLkdldFRhYmxldFN0YXRlKCk7XHJcbiAgICAgICAgdmFyIGRhdGFSZXN1bHQgPSBkYXRhID09ICcnIHx8IGRhdGEgPT0gbnVsbCA/IDAgOiBOdW1iZXIoZGF0YSk7XHJcbiAgICAgICAgdmFyIHRtciA9IG51bGw7XHJcbiAgICAgICAgaWYgKGN0eCAmJiBkYXRhUmVzdWx0ICE9IDApIHtcclxuICAgICAgICAgIHRtciA9IHNldEludGVydmFsKCgpID0+IHRoaXMuU2lnV2ViUmVmcmVzaCgpLCBkZWxheSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRtciA9IG51bGw7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdG1yO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmIChjdHgpIHtcclxuICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY3R4KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5TaWdXZWJTZXREaXNwbGF5VGFyZ2V0KG51bGwpO1xyXG4gICAgICAgIHRoaXMuU2V0UmVhbFRhYmxldFN0YXRlKHYpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcbn1cclxuIl19