@datagrok-libraries/utils 3.1.3 → 3.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "access": "public"
5
5
  },
6
6
  "fullName": "Utils",
7
- "version": "3.1.3",
7
+ "version": "3.1.4",
8
8
  "description": "Common utilities",
9
9
  "dependencies": {
10
10
  "cash-dom": "^8.1.1",
@@ -73,13 +73,13 @@ export class ComputationView extends FunctionView {
73
73
  this.parentCall = parentCall;
74
74
  this.parentView = parentCall === null || parentCall === void 0 ? void 0 : parentCall.parentCall.aux['view'];
75
75
  this.basePath = `/${parentCall === null || parentCall === void 0 ? void 0 : parentCall.func.name}`;
76
- this.onFuncCallReady.subscribe({
76
+ this.subs.push(this.onFuncCallReady.subscribe({
77
77
  complete: () => __awaiter(this, void 0, void 0, function* () {
78
78
  yield this.getPackageUrls();
79
79
  this.buildRibbonMenu();
80
80
  this.changeViewName(parentCall.func.friendlyName);
81
81
  })
82
- });
82
+ }));
83
83
  }
84
84
  /**
85
85
  * Looks for
@@ -156,4 +156,4 @@ export class ComputationView extends FunctionView {
156
156
  });
157
157
  }
158
158
  }
159
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcHV0YXRpb24tdmlldy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNvbXB1dGF0aW9uLXZpZXcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsZ0NBQWdDO0FBQ2hDLDRCQUE0QjtBQUM1QixPQUFPLEtBQUssSUFBSSxNQUFNLG1CQUFtQixDQUFDO0FBQzFDLE9BQU8sS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdEMsT0FBTyxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0QyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBRTFCOzs7Ozs7Ozs7Ozs7OztLQWNLO0FBQ0wsTUFBTSxPQUFnQixlQUFnQixTQUFRLFlBQVk7SUFDeEQ7Ozs7T0FJRztJQUNILFlBQ0UsUUFBZ0IsRUFDVCxVQUlILEVBQUMsY0FBYyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFDO1FBRTNDLEtBQUssQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFObEIsWUFBTyxHQUFQLE9BQU8sQ0FJNkI7UUFvQjdDOztVQUVFO1FBQ0YsYUFBUSxHQUErRCxJQUFJLENBQUM7UUFFNUU7O1VBRUU7UUFDRixpQkFBWSxHQUEyRCxJQUFJLENBQUM7UUFFNUU7O1VBRUU7UUFDRixZQUFPLEdBQWlDLElBQUksQ0FBQztRQUU3Qzs7VUFFRTtRQUNGLGNBQVMsR0FBaUMsSUFBSSxDQUFDO1FBRS9DOztVQUVFO1FBQ0YsbUJBQWMsR0FBaUMsSUFBSSxDQUFDO1FBRXBEOzs7VUFHRTtRQUNGLGFBQVEsR0FBbUMsR0FBUyxFQUFFO1lBQ3BELG9FQUFvRTtZQUNwRSxNQUFNLElBQUksR0FBRyxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxXQUFDLE9BQUEsSUFBSSxDQUFDLEVBQUUsTUFBSyxNQUFBLElBQUksQ0FBQyxJQUFJLDBDQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUEsQ0FBQSxFQUFBLENBQUMsQ0FBQztZQUNqRyxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxNQUFNLElBQUksQ0FBQyxPQUFPLHNCQUFzQixLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLENBQUEsQ0FBQyxDQUFDLDJCQUEyQixDQUFDO1FBQzdKLENBQUMsQ0FBQSxDQUFDO1FBakRBLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVTtZQUFFLE9BQU8sQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUU5RSxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxhQUFWLFVBQVUsdUJBQVYsVUFBVSxDQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDckQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLFVBQVUsYUFBVixVQUFVLHVCQUFWLFVBQVUsQ0FBRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFNUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUM7WUFDN0IsUUFBUSxFQUFFLEdBQVMsRUFBRTtnQkFDbkIsTUFBTSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQzVCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztnQkFDdkIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ3BELENBQUMsQ0FBQTtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFxQ0Q7Ozs7O01BS0U7SUFDTyxlQUFlO1FBQ3RCLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFeEIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBRXhCLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZO1lBQUUsT0FBTztRQUVuSSxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVsRCxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQzdDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO2dCQUM5QixVQUFVLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDN0Q7aUJBQU07Z0JBQ0wsTUFBTSxTQUFTLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO2dCQUN2RCxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO29CQUM1QixTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUMzQyxDQUFDLENBQUMsQ0FBQztnQkFDSCxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7YUFDdkI7U0FDRjtRQUVELElBQUksSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDckQsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7Z0JBQ2xDLFVBQVUsQ0FBQyxJQUFJLENBQUMscUJBQXFCLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUNyRTtpQkFBTTtnQkFDTCxNQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLHNCQUFzQixDQUFDLENBQUM7Z0JBQzNELElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7b0JBQ2hDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ3ZDLENBQUMsQ0FBQyxDQUFDO2dCQUNILFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQzthQUN2QjtTQUNGO1FBRUQsSUFBSSxJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUN0RSxVQUFVO2lCQUNQLEtBQUssQ0FBQyxRQUFRLENBQUM7aUJBQ2YsS0FBSyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLEVBQUUsQ0FBTyxNQUFjLEVBQUUsRUFBRSxnREFBQyxPQUFBLEVBQUUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxZQUFhLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sSUFBSSxDQUFDLFlBQWEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQSxHQUFBLENBQUM7aUJBQ3BLLFFBQVEsRUFBRSxDQUFDO1NBQ2Y7UUFFRCxJQUFJLElBQUksQ0FBQyxTQUFTO1lBQ2hCLFVBQVUsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFVLEVBQUUsQ0FBQyxDQUFDO1FBRTNELElBQUksSUFBSSxDQUFDLGNBQWM7WUFDckIsVUFBVSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBZSxFQUFFLENBQUMsQ0FBQztRQUVyRSxJQUFJLElBQUksQ0FBQyxPQUFPO1lBQ2QsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQVEsRUFBRSxDQUFDLENBQUM7UUFFakQsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2pCLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQVMsRUFBRTtnQkFDbEMsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO2dCQUM1QyxDQUFDLE1BQU0sSUFBSSxDQUFDLFFBQVMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDbkYsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUMsQ0FBQztnQkFDdEIsTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztnQkFDbEQsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO1lBQzlCLENBQUMsQ0FBQSxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7SUFFRDs7O01BR0U7SUFDWSxjQUFjOztZQUMxQixvRUFBb0U7WUFDcEUsTUFBTSxJQUFJLEdBQUcsQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsV0FBQyxPQUFBLElBQUksQ0FBQyxFQUFFLE1BQUssTUFBQSxJQUFJLENBQUMsVUFBVSwwQ0FBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQSxDQUFBLEVBQUEsQ0FBQyxDQUFDO1lBRTVHLE1BQU0sWUFBWSxHQUFHLENBQUMsTUFBTSxDQUFBLElBQUksYUFBSixJQUFJLHVCQUFKLElBQUksQ0FBRSxhQUFhLEVBQUUsQ0FBUSxDQUFBLENBQUMsY0FBYyxDQUFDO1lBQ3pFLElBQUksWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVM7Z0JBQ2pDLElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBUyxFQUFFLGdEQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUM7WUFFeEUsTUFBTSxhQUFhLEdBQUcsQ0FBQyxNQUFNLENBQUEsSUFBSSxhQUFKLElBQUksdUJBQUosSUFBSSxDQUFFLGFBQWEsRUFBRSxDQUFRLENBQUEsQ0FBQyxtQkFBbUIsQ0FBQztZQUMvRSxJQUFJLGFBQWEsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjO2dCQUN2QyxJQUFJLENBQUMsY0FBYyxHQUFHLEdBQVMsRUFBRSxnREFBRyxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFDO1FBQ2hGLENBQUM7S0FBQTtDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgdmFsaWQtanNkb2MgKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4gKi9cbmltcG9ydCAqIGFzIGdyb2sgZnJvbSAnZGF0YWdyb2stYXBpL2dyb2snO1xuaW1wb3J0ICogYXMgdWkgZnJvbSAnZGF0YWdyb2stYXBpL3VpJztcbmltcG9ydCAqIGFzIERHIGZyb20gJ2RhdGFncm9rLWFwaS9kZyc7XG5pbXBvcnQge0Z1bmN0aW9uVmlld30gZnJvbSAnLi9mdW5jdGlvbi12aWV3JztcbmltcG9ydCBkYXlqcyBmcm9tICdkYXlqcyc7XG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgaGFuZGxpbmcgQ29tcHV0ZSBtb2RlbHMgKHNlZSBodHRwczovL2dpdGh1Yi5jb20vZGF0YWdyb2stYWkvcHVibGljL2Jsb2IvbWFzdGVyL2hlbHAvY29tcHV0ZS9jb21wdXRlLm1kKS5cbiAqIEluIG1vc3QgY2FzZXMsIHRoZSBjb21wdXRhdGlvbiBpcyBhIHNpbXBsZSB7QGxpbmsgRnVuY31cbiAqIEV4dGVuZCBpdCBpbiBjYXNlcyB3aGVyZSBhIGJlaGF2aW9yIG9yIFVJIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIHtAbGluayBGdW5jdGlvblZpZXd9IGlzIG5lZWRlZC5cbiAqXG4gKiBJdCBwcm92aWRlcyB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uYWxpdHkgb3V0LW9mLXRoZS1ib3gsIHdoZXJlIGVhY2ggc2VjdGlvbiBjb3VsZCBiZSBjdXN0b21pemVkOlxuICogLSBhIHN0cnVjdHVyZWQgd2F5IHRvIHJlcHJlc2VudCBpbnB1dCBhbmQgb3V0cHV0IHBhcmFtZXRlcnM6IHtAbGluayBwYXJhbWV0ZXJzfVxuICogLSBnZW5lcmljIHdheSB0byBnZW5lcmF0ZSBVSSBmb3IgaW5wdXRzLCBvdXRwdXRzLCBhbmQgaW50ZXJhY3Rpdml0eSAocnVubmluZyB0aGUgbW9kZWwsIGV0YylcbiAqICAgLSBwZXJzaXN0aW5nIGhpc3RvcmljYWwgcmVzdWx0cyB0byB0aGUgZGIgKHZpYSB7QGxpbmsgcGFyYW1ldGVyc30pXG4gKiAtIGV4cG9ydCAodG8gRXhjZWwgYW5kIFBERik6IHtAbGluayBleHBvcnR9XG4gKiAtIGVhc3kgbG9hZGluZyBvZiBoaXN0b3JpY2FsIHJ1bnNcbiAqIC0gcm91dGluZ1xuICogLSBlbnRlcmluZyB0aGUgcmVhbCwgbWVhc3VyZWQgKGFzIG9wcG9zZWQgdG8gcHJlZGljdGVkKSB2YWx1ZXMgbWFudWFsbHlcbiAqIC0gbm90aWZpY2F0aW9ucyBmb3IgY2hhbmdpbmcgaW5wdXRzLCBjb21wbGV0aW9uIG9mIGNvbXB1dGF0aW9ucywgZXRjOiB7QGxpbmsgb25JbnB1dENoYW5nZWR9XG4gKiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIENvbXB1dGF0aW9uVmlldyBleHRlbmRzIEZ1bmN0aW9uVmlldyB7XG4gIC8qKlxuICAgKiBPdmVycmlkZWQgdG86XG4gICAqIDEpIGFkZCBnZXR0aW5nIEhlbHAgYW5kIFJlcG9ydEJ1ZyBVUkxzIGZyb20gdGhlIHBhY2thZ2UuXG4gICAqIDIpIGNoYW5nZSByb3V0aW5nIGxvZ2ljIGZvciBtb2RlbHNcbiAgICovXG4gIGNvbnN0cnVjdG9yKFxuICAgIGZ1bmNOYW1lOiBzdHJpbmcsXG4gICAgcHVibGljIG9wdGlvbnM6IHtcbiAgICAgIGhpc3RvcnlFbmFibGVkOiBib29sZWFuLFxuICAgICAgaXNUYWJiZWQ6IGJvb2xlYW4sXG4gICAgICBwYXJlbnRDYWxsPzogREcuRnVuY0NhbGxcbiAgICB9ID0ge2hpc3RvcnlFbmFibGVkOiB0cnVlLCBpc1RhYmJlZDogZmFsc2V9XG4gICkge1xuICAgIHN1cGVyKGZ1bmNOYW1lLCBvcHRpb25zKTtcblxuICAgIGlmICghb3B0aW9ucy5wYXJlbnRDYWxsKSBvcHRpb25zLnBhcmVudENhbGwgPSBncm9rLmZ1bmN0aW9ucy5nZXRDdXJyZW50Q2FsbCgpO1xuXG4gICAgY29uc3QgcGFyZW50Q2FsbCA9IG9wdGlvbnMucGFyZW50Q2FsbDtcbiAgICB0aGlzLnBhcmVudENhbGwgPSBwYXJlbnRDYWxsO1xuICAgIHRoaXMucGFyZW50VmlldyA9IHBhcmVudENhbGw/LnBhcmVudENhbGwuYXV4Wyd2aWV3J107XG4gICAgdGhpcy5iYXNlUGF0aCA9IGAvJHtwYXJlbnRDYWxsPy5mdW5jLm5hbWV9YDtcblxuICAgIHRoaXMub25GdW5jQ2FsbFJlYWR5LnN1YnNjcmliZSh7XG4gICAgICBjb21wbGV0ZTogYXN5bmMgKCkgPT4ge1xuICAgICAgICBhd2FpdCB0aGlzLmdldFBhY2thZ2VVcmxzKCk7XG4gICAgICAgIHRoaXMuYnVpbGRSaWJib25NZW51KCk7XG4gICAgICAgIHRoaXMuY2hhbmdlVmlld05hbWUocGFyZW50Q2FsbC5mdW5jLmZyaWVuZGx5TmFtZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKiogT3ZlcnJpZGUgdG8gY3VzdG9taXplIGdldHRpbmcgbW9ja3NcbiAgICAqIEBzdGFiaWxpdHkgU3RhYmxlXG4gICovXG4gIGdldE1vY2tzOiAoe21vY2tOYW1lOiBzdHJpbmcsIGFjdGlvbjogKCkgPT4gUHJvbWlzZTx2b2lkPn1bXSkgfCBudWxsID0gbnVsbDtcblxuICAvKiogT3ZlcnJpZGUgdG8gY3VzdG9taXplIGdldHRpbmcgdGVtcGxhdGVzXG4gICAgKiBAc3RhYmlsaXR5IFN0YWJsZVxuICAqL1xuICBnZXRUZW1wbGF0ZXM6ICh7bmFtZTogc3RyaW5nLCBhY3Rpb246ICgpID0+IFByb21pc2U8dm9pZD59W10pIHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqIE92ZXJyaWRlIHRvIGN1c3RvbWl6ZSBnZXR0aW5nIGhlbHAgZmVhdHVyZS4gQ2FsbGVkIHdoZW4gXCJIZWxwXCIgaXMgY2xpY2tlZC5cbiAgICAqIEBzdGFiaWxpdHkgU3RhYmxlXG4gICovXG4gIGdldEhlbHA6ICgoKSA9PiBQcm9taXNlPHZvaWQ+KSB8IG51bGwgPSBudWxsO1xuXG4gIC8qKiBPdmVycmlkZSB0byBjdXN0b21pemUgYnVnIHJlcG9ydGluZyBmZWF0dXJlLiBDYWxsZWQgd2hlbiBcIlJlcG9ydCBhIGJ1Z1wiIGlzIGNsaWNrZWQuXG4gICAgKiBAc3RhYmlsaXR5IFN0YWJsZVxuICAqL1xuICByZXBvcnRCdWc6ICgoKSA9PiBQcm9taXNlPHZvaWQ+KSB8IG51bGwgPSBudWxsO1xuXG4gIC8qKiBPdmVycmlkZSB0byBjdXN0b21pemUgZmVhdHVyZSByZXF1ZXN0IGZlYXR1cmUuIENhbGxlZCB3aGVuIFwiUmVxdWVzdCBhIGZlYXR1cmVcIiBpcyBjbGlja2VkLlxuICAgICogQHN0YWJpbGl0eSBTdGFibGVcbiAgKi9cbiAgcmVxdWVzdEZlYXR1cmU6ICgoKSA9PiBQcm9taXNlPHZvaWQ+KSB8IG51bGwgPSBudWxsO1xuXG4gIC8qKiBPdmVycmlkZSB0byBjdXN0b21pemUgXCJhYm91dFwiIGluZm8gb2J0YWluaW5nIGZlYXR1cmUuIENhbGxlZCB3aGVuIFwiQWJvdXRcIiBpcyBjbGlja2VkLlxuICAgICogRGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBmaW5kcyB7QGxpbmsgdGhpcy5mdW5jQ2FsbH0ncyBwYWNrYWdlIGFuZCBzaG93cyBpdCdzIHByb3BlcnRpZXMuXG4gICAgKiBAc3RhYmlsaXR5IFN0YWJsZVxuICAqL1xuICBnZXRBYm91dDogKCgpID0+IFByb21pc2U8c3RyaW5nPikgfCBudWxsID0gYXN5bmMgKCkgPT4ge1xuICAgIC8vIERFQUxJTkcgV0lUSCBCVUc6IGh0dHBzOi8vcmVkZGF0YS5hdGxhc3NpYW4ubmV0L2Jyb3dzZS9HUk9LLTEyMzA2XG4gICAgY29uc3QgcGFjayA9IChhd2FpdCBncm9rLmRhcGkucGFja2FnZXMubGlzdCgpKS5maW5kKChwYWNrKSA9PiBwYWNrLmlkID09PSB0aGlzLmZ1bmM/LnBhY2thZ2UuaWQpO1xuICAgIHJldHVybiBwYWNrID8gYCR7cGFjay5mcmllbmRseU5hbWV9IHYuJHtwYWNrLnZlcnNpb259Llxcbkxhc3QgdXBkYXRlZCBvbiAke2RheWpzKHBhY2sudXBkYXRlZE9uKS5mb3JtYXQoJ1lZWVkgTU1NIEQsIEhIOm1tJyl9YDogYE5vIHBhY2thZ2UgaW5mbyB3YXMgZm91bmRgO1xuICB9O1xuXG4gIC8qKlxuICAgKiBMb29rcyBmb3JcbiAgICoge0BsaW5rIGdldE1vY2tzfSwge0BsaW5rIGdldFRlbXBsYXRlc30sIHtAbGluayBnZXRIZWxwfSwge0BsaW5rIHJlcG9ydEJ1Z30sIHtAbGluayByZXF1ZXN0RmVhdHVyZX0sIHtAbGluayBnZXRBYm91dH0sIHtAbGluayBleHBvcnRDb25maWd9XG4gICAqIG1lbWJlcnMgYW5kIGNyZWF0ZXMgXCJNb2RlbFwiIG1lbnVcbiAgICogQHN0YWJpbGl0eSBTdGFibGVcbiAgKi9cbiAgb3ZlcnJpZGUgYnVpbGRSaWJib25NZW51KCkge1xuICAgIHRoaXMucmliYm9uTWVudS5jbGVhcigpO1xuXG4gICAgc3VwZXIuYnVpbGRSaWJib25NZW51KCk7XG5cbiAgICBpZiAoIXRoaXMuZXhwb3J0Q29uZmlnICYmICF0aGlzLnJlcG9ydEJ1ZyAmJiAhdGhpcy5yZXF1ZXN0RmVhdHVyZSAmJiAhdGhpcy5nZXRIZWxwICYmICF0aGlzLmdldE1vY2tzICYmICF0aGlzLmdldFRlbXBsYXRlcykgcmV0dXJuO1xuXG4gICAgY29uc3QgcmliYm9uTWVudSA9IHRoaXMucmliYm9uTWVudS5ncm91cCgnTW9kZWwnKTtcblxuICAgIGlmICh0aGlzLmdldE1vY2tzICYmIHRoaXMuZ2V0TW9ja3MubGVuZ3RoID4gMCkge1xuICAgICAgaWYgKHRoaXMuZ2V0TW9ja3MubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIHJpYmJvbk1lbnUuaXRlbSgnSW5wdXQgZGF0YSBtb2NrJywgdGhpcy5nZXRNb2Nrc1swXS5hY3Rpb24pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgZGF0YUdyb3VwID0gcmliYm9uTWVudS5ncm91cCgnSW5wdXQgZGF0YSBtb2NrcycpO1xuICAgICAgICB0aGlzLmdldE1vY2tzLmZvckVhY2goKHZhbCkgPT4ge1xuICAgICAgICAgIGRhdGFHcm91cC5pdGVtKHZhbC5tb2NrTmFtZSwgdmFsLmFjdGlvbik7XG4gICAgICAgIH0pO1xuICAgICAgICByaWJib25NZW51LmVuZEdyb3VwKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZ2V0VGVtcGxhdGVzICYmIHRoaXMuZ2V0VGVtcGxhdGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIGlmICh0aGlzLmdldFRlbXBsYXRlcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgcmliYm9uTWVudS5pdGVtKCdJbnB1dCBkYXRhIHRlbXBsYXRlJywgdGhpcy5nZXRUZW1wbGF0ZXNbMF0uYWN0aW9uKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGRhdGFHcm91cCA9IHJpYmJvbk1lbnUuZ3JvdXAoJ0lucHV0IGRhdGEgdGVtcGxhdGVzJyk7XG4gICAgICAgIHRoaXMuZ2V0VGVtcGxhdGVzLmZvckVhY2goKHZhbCkgPT4ge1xuICAgICAgICAgIGRhdGFHcm91cC5pdGVtKHZhbC5uYW1lLCB2YWwuYWN0aW9uKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJpYmJvbk1lbnUuZW5kR3JvdXAoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5leHBvcnRDb25maWcgJiYgdGhpcy5leHBvcnRDb25maWcuc3VwcG9ydGVkRm9ybWF0cy5sZW5ndGggPiAwKSB7XG4gICAgICByaWJib25NZW51XG4gICAgICAgIC5ncm91cCgnRXhwb3J0JylcbiAgICAgICAgLml0ZW1zKHRoaXMuZXhwb3J0Q29uZmlnLnN1cHBvcnRlZEZvcm1hdHMsIGFzeW5jIChmb3JtYXQ6IHN0cmluZykgPT4gREcuVXRpbHMuZG93bmxvYWQodGhpcy5leHBvcnRDb25maWchLmZpbGVuYW1lKGZvcm1hdCksIGF3YWl0IHRoaXMuZXhwb3J0Q29uZmlnIS5leHBvcnQoZm9ybWF0KSkpXG4gICAgICAgIC5lbmRHcm91cCgpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnJlcG9ydEJ1ZylcbiAgICAgIHJpYmJvbk1lbnUuaXRlbSgnUmVwb3J0IGEgYnVnJywgKCkgPT4gdGhpcy5yZXBvcnRCdWchKCkpO1xuXG4gICAgaWYgKHRoaXMucmVxdWVzdEZlYXR1cmUpXG4gICAgICByaWJib25NZW51Lml0ZW0oJ1JlcXVlc3QgYSBmZWF0dXJlJywgKCkgPT4gdGhpcy5yZXF1ZXN0RmVhdHVyZSEoKSk7XG5cbiAgICBpZiAodGhpcy5nZXRIZWxwKVxuICAgICAgcmliYm9uTWVudS5pdGVtKCdIZWxwJywgKCkgPT4gdGhpcy5nZXRIZWxwISgpKTtcblxuICAgIGlmICh0aGlzLmdldEFib3V0KSB7XG4gICAgICByaWJib25NZW51Lml0ZW0oJ0Fib3V0JywgYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCBkaWFsb2cgPSB1aS5kaWFsb2coJ0N1cnJlbnQgdmVyc2lvbicpO1xuICAgICAgICAoYXdhaXQgdGhpcy5nZXRBYm91dCEoKSkuc3BsaXQoJ1xcbicpLmZvckVhY2goKGxpbmUpID0+IGRpYWxvZy5hZGQodWkubGFiZWwobGluZSkpKTtcbiAgICAgICAgZGlhbG9nLm9uT0soKCkgPT4ge30pO1xuICAgICAgICBkaWFsb2cuZ2V0QnV0dG9uKCdDQU5DRUwnKS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgICAgICBkaWFsb2cuc2hvdyh7Y2VudGVyOiB0cnVlfSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRmluZHMge0BsaW5rIHRoaXMuZnVuY0NhbGx9J3MgcGFja2FnZSBhbmQgcmV0cmlldmVzIGl0J3MgdmFyaWFibGVzLlxuICAgKiBAc3RhYmlsaXR5IFN0YWJsZVxuICAqL1xuICBwcml2YXRlIGFzeW5jIGdldFBhY2thZ2VVcmxzKCkge1xuICAgIC8vIERFQUxJTkcgV0lUSCBCVUc6IGh0dHBzOi8vcmVkZGF0YS5hdGxhc3NpYW4ubmV0L2Jyb3dzZS9HUk9LLTEyMzA2XG4gICAgY29uc3QgcGFjayA9IChhd2FpdCBncm9rLmRhcGkucGFja2FnZXMubGlzdCgpKS5maW5kKChwYWNrKSA9PiBwYWNrLmlkID09PSB0aGlzLnBhcmVudENhbGw/LmZ1bmMucGFja2FnZS5pZCk7XG5cbiAgICBjb25zdCByZXBvcnRCdWdVcmwgPSAoYXdhaXQgcGFjaz8uZ2V0UHJvcGVydGllcygpIGFzIGFueSkuUkVQT1JUX0JVR19VUkw7XG4gICAgaWYgKHJlcG9ydEJ1Z1VybCAmJiAhdGhpcy5yZXBvcnRCdWcpXG4gICAgICB0aGlzLnJlcG9ydEJ1ZyA9IGFzeW5jICgpID0+IHsgd2luZG93Lm9wZW4ocmVwb3J0QnVnVXJsLCAnX2JsYW5rJyk7IH07XG5cbiAgICBjb25zdCByZXFGZWF0dXJlVXJsID0gKGF3YWl0IHBhY2s/LmdldFByb3BlcnRpZXMoKSBhcyBhbnkpLlJFUVVFU1RfRkVBVFVSRV9VUkw7XG4gICAgaWYgKHJlcUZlYXR1cmVVcmwgJiYgIXRoaXMucmVxdWVzdEZlYXR1cmUpXG4gICAgICB0aGlzLnJlcXVlc3RGZWF0dXJlID0gYXN5bmMgKCkgPT4geyB3aW5kb3cub3BlbihyZXFGZWF0dXJlVXJsLCAnX2JsYW5rJyk7IH07XG4gIH1cbn1cbiJdfQ==
159
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcHV0YXRpb24tdmlldy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNvbXB1dGF0aW9uLXZpZXcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsZ0NBQWdDO0FBQ2hDLDRCQUE0QjtBQUM1QixPQUFPLEtBQUssSUFBSSxNQUFNLG1CQUFtQixDQUFDO0FBQzFDLE9BQU8sS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdEMsT0FBTyxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0QyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBRTFCOzs7Ozs7Ozs7Ozs7OztLQWNLO0FBQ0wsTUFBTSxPQUFnQixlQUFnQixTQUFRLFlBQVk7SUFDeEQ7Ozs7T0FJRztJQUNILFlBQ0UsUUFBZ0IsRUFDVCxVQUlILEVBQUMsY0FBYyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFDO1FBRTNDLEtBQUssQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFObEIsWUFBTyxHQUFQLE9BQU8sQ0FJNkI7UUFvQjdDOztVQUVFO1FBQ0YsYUFBUSxHQUErRCxJQUFJLENBQUM7UUFFNUU7O1VBRUU7UUFDRixpQkFBWSxHQUEyRCxJQUFJLENBQUM7UUFFNUU7O1VBRUU7UUFDRixZQUFPLEdBQWlDLElBQUksQ0FBQztRQUU3Qzs7VUFFRTtRQUNGLGNBQVMsR0FBaUMsSUFBSSxDQUFDO1FBRS9DOztVQUVFO1FBQ0YsbUJBQWMsR0FBaUMsSUFBSSxDQUFDO1FBRXBEOzs7VUFHRTtRQUNGLGFBQVEsR0FBbUMsR0FBUyxFQUFFO1lBQ3BELG9FQUFvRTtZQUNwRSxNQUFNLElBQUksR0FBRyxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFB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LDBDQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFBLENBQUEsRUFBQSxDQUFDLENBQUM7WUFFNUcsTUFBTSxZQUFZLEdBQUcsQ0FBQyxNQUFNLENBQUEsSUFBSSxhQUFKLElBQUksdUJBQUosSUFBSSxDQUFFLGFBQWEsRUFBRSxDQUFRLENBQUEsQ0FBQyxjQUFjLENBQUM7WUFDekUsSUFBSSxZQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUztnQkFDakMsSUFBSSxDQUFDLFNBQVMsR0FBRyxHQUFTLEVBQUUsZ0RBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQztZQUV4RSxNQUFNLGFBQWEsR0FBRyxDQUFDLE1BQU0sQ0FBQSxJQUFJLGFBQUosSUFBSSx1QkFBSixJQUFJLENBQUUsYUFBYSxFQUFFLENBQVEsQ0FBQSxDQUFDLG1CQUFtQixDQUFDO1lBQy9FLElBQUksYUFBYSxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWM7Z0JBQ3ZDLElBQUksQ0FBQyxjQUFjLEdBQUcsR0FBUyxFQUFFLGdEQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUM7UUFDaEYsQ0FBQztLQUFBO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSB2YWxpZC1qc2RvYyAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiAqL1xuaW1wb3J0ICogYXMgZ3JvayBmcm9tICdkYXRhZ3Jvay1hcGkvZ3Jvayc7XG5pbXBvcnQgKiBhcyB1aSBmcm9tICdkYXRhZ3Jvay1hcGkvdWknO1xuaW1wb3J0ICogYXMgREcgZnJvbSAnZGF0YWdyb2stYXBpL2RnJztcbmltcG9ydCB7RnVuY3Rpb25WaWV3fSBmcm9tICcuL2Z1bmN0aW9uLXZpZXcnO1xuaW1wb3J0IGRheWpzIGZyb20gJ2RheWpzJztcblxuLyoqXG4gKiBCYXNlIGNsYXNzIGZvciBoYW5kbGluZyBDb21wdXRlIG1vZGVscyAoc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRhZ3Jvay1haS9wdWJsaWMvYmxvYi9tYXN0ZXIvaGVscC9jb21wdXRlL2NvbXB1dGUubWQpLlxuICogSW4gbW9zdCBjYXNlcywgdGhlIGNvbXB1dGF0aW9uIGlzIGEgc2ltcGxlIHtAbGluayBGdW5jfVxuICogRXh0ZW5kIGl0IGluIGNhc2VzIHdoZXJlIGEgYmVoYXZpb3Igb3IgVUkgbm90IHN1cHBvcnRlZCBieSB0aGUge0BsaW5rIEZ1bmN0aW9uVmlld30gaXMgbmVlZGVkLlxuICpcbiAqIEl0IHByb3ZpZGVzIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25hbGl0eSBvdXQtb2YtdGhlLWJveCwgd2hlcmUgZWFjaCBzZWN0aW9uIGNvdWxkIGJlIGN1c3RvbWl6ZWQ6XG4gKiAtIGEgc3RydWN0dXJlZCB3YXkgdG8gcmVwcmVzZW50IGlucHV0IGFuZCBvdXRwdXQgcGFyYW1ldGVyczoge0BsaW5rIHBhcmFtZXRlcnN9XG4gKiAtIGdlbmVyaWMgd2F5IHRvIGdlbmVyYXRlIFVJIGZvciBpbnB1dHMsIG91dHB1dHMsIGFuZCBpbnRlcmFjdGl2aXR5IChydW5uaW5nIHRoZSBtb2RlbCwgZXRjKVxuICogICAtIHBlcnNpc3RpbmcgaGlzdG9yaWNhbCByZXN1bHRzIHRvIHRoZSBkYiAodmlhIHtAbGluayBwYXJhbWV0ZXJzfSlcbiAqIC0gZXhwb3J0ICh0byBFeGNlbCBhbmQgUERGKToge0BsaW5rIGV4cG9ydH1cbiAqIC0gZWFzeSBsb2FkaW5nIG9mIGhpc3RvcmljYWwgcnVuc1xuICogLSByb3V0aW5nXG4gKiAtIGVudGVyaW5nIHRoZSByZWFsLCBtZWFzdXJlZCAoYXMgb3Bwb3NlZCB0byBwcmVkaWN0ZWQpIHZhbHVlcyBtYW51YWxseVxuICogLSBub3RpZmljYXRpb25zIGZvciBjaGFuZ2luZyBpbnB1dHMsIGNvbXBsZXRpb24gb2YgY29tcHV0YXRpb25zLCBldGM6IHtAbGluayBvbklucHV0Q2hhbmdlZH1cbiAqICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQ29tcHV0YXRpb25WaWV3IGV4dGVuZHMgRnVuY3Rpb25WaWV3IHtcbiAgLyoqXG4gICAqIE92ZXJyaWRlZCB0bzpcbiAgICogMSkgYWRkIGdldHRpbmcgSGVscCBhbmQgUmVwb3J0QnVnIFVSTHMgZnJvbSB0aGUgcGFja2FnZS5cbiAgICogMikgY2hhbmdlIHJvdXRpbmcgbG9naWMgZm9yIG1vZGVsc1xuICAgKi9cbiAgY29uc3RydWN0b3IoXG4gICAgZnVuY05hbWU6IHN0cmluZyxcbiAgICBwdWJsaWMgb3B0aW9uczoge1xuICAgICAgaGlzdG9yeUVuYWJsZWQ6IGJvb2xlYW4sXG4gICAgICBpc1RhYmJlZDogYm9vbGVhbixcbiAgICAgIHBhcmVudENhbGw/OiBERy5GdW5jQ2FsbFxuICAgIH0gPSB7aGlzdG9yeUVuYWJsZWQ6IHRydWUsIGlzVGFiYmVkOiBmYWxzZX1cbiAgKSB7XG4gICAgc3VwZXIoZnVuY05hbWUsIG9wdGlvbnMpO1xuXG4gICAgaWYgKCFvcHRpb25zLnBhcmVudENhbGwpIG9wdGlvbnMucGFyZW50Q2FsbCA9IGdyb2suZnVuY3Rpb25zLmdldEN1cnJlbnRDYWxsKCk7XG5cbiAgICBjb25zdCBwYXJlbnRDYWxsID0gb3B0aW9ucy5wYXJlbnRDYWxsO1xuICAgIHRoaXMucGFyZW50Q2FsbCA9IHBhcmVudENhbGw7XG4gICAgdGhpcy5wYXJlbnRWaWV3ID0gcGFyZW50Q2FsbD8ucGFyZW50Q2FsbC5hdXhbJ3ZpZXcnXTtcbiAgICB0aGlzLmJhc2VQYXRoID0gYC8ke3BhcmVudENhbGw/LmZ1bmMubmFtZX1gO1xuXG4gICAgdGhpcy5zdWJzLnB1c2godGhpcy5vbkZ1bmNDYWxsUmVhZHkuc3Vic2NyaWJlKHtcbiAgICAgIGNvbXBsZXRlOiBhc3luYyAoKSA9PiB7XG4gICAgICAgIGF3YWl0IHRoaXMuZ2V0UGFja2FnZVVybHMoKTtcbiAgICAgICAgdGhpcy5idWlsZFJpYmJvbk1lbnUoKTtcbiAgICAgICAgdGhpcy5jaGFuZ2VWaWV3TmFtZShwYXJlbnRDYWxsLmZ1bmMuZnJpZW5kbHlOYW1lKTtcbiAgICAgIH1cbiAgICB9KSk7XG4gIH1cblxuICAvKiogT3ZlcnJpZGUgdG8gY3VzdG9taXplIGdldHRpbmcgbW9ja3NcbiAgICAqIEBzdGFiaWxpdHkgU3RhYmxlXG4gICovXG4gIGdldE1vY2tzOiAoe21vY2tOYW1lOiBzdHJpbmcsIGFjdGlvbjogKCkgPT4gUHJvbWlzZTx2b2lkPn1bXSkgfCBudWxsID0gbnVsbDtcblxuICAvKiogT3ZlcnJpZGUgdG8gY3VzdG9taXplIGdldHRpbmcgdGVtcGxhdGVzXG4gICAgKiBAc3RhYmlsaXR5IFN0YWJsZVxuICAqL1xuICBnZXRUZW1wbGF0ZXM6ICh7bmFtZTogc3RyaW5nLCBhY3Rpb246ICgpID0+IFByb21pc2U8dm9pZD59W10pIHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqIE92ZXJyaWRlIHRvIGN1c3RvbWl6ZSBnZXR0aW5nIGhlbHAgZmVhdHVyZS4gQ2FsbGVkIHdoZW4gXCJIZWxwXCIgaXMgY2xpY2tlZC5cbiAgICAqIEBzdGFiaWxpdHkgU3RhYmxlXG4gICovXG4gIGdldEhlbHA6ICgoKSA9PiBQcm9taXNlPHZvaWQ+KSB8IG51bGwgPSBudWxsO1xuXG4gIC8qKiBPdmVycmlkZSB0byBjdXN0b21pemUgYnVnIHJlcG9ydGluZyBmZWF0dXJlLiBDYWxsZWQgd2hlbiBcIlJlcG9ydCBhIGJ1Z1wiIGlzIGNsaWNrZWQuXG4gICAgKiBAc3RhYmlsaXR5IFN0YWJsZVxuICAqL1xuICByZXBvcnRCdWc6ICgoKSA9PiBQcm9taXNlPHZvaWQ+KSB8IG51bGwgPSBudWxsO1xuXG4gIC8qKiBPdmVycmlkZSB0byBjdXN0b21pemUgZmVhdHVyZSByZXF1ZXN0IGZlYXR1cmUuIENhbGxlZCB3aGVuIFwiUmVxdWVzdCBhIGZlYXR1cmVcIiBpcyBjbGlja2VkLlxuICAgICogQHN0YWJpbGl0eSBTdGFibGVcbiAgKi9cbiAgcmVxdWVzdEZlYXR1cmU6ICgoKSA9PiBQcm9taXNlPHZvaWQ+KSB8IG51bGwgPSBudWxsO1xuXG4gIC8qKiBPdmVycmlkZSB0byBjdXN0b21pemUgXCJhYm91dFwiIGluZm8gb2J0YWluaW5nIGZlYXR1cmUuIENhbGxlZCB3aGVuIFwiQWJvdXRcIiBpcyBjbGlja2VkLlxuICAgICogRGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBmaW5kcyB7QGxpbmsgdGhpcy5mdW5jQ2FsbH0ncyBwYWNrYWdlIGFuZCBzaG93cyBpdCdzIHByb3BlcnRpZXMuXG4gICAgKiBAc3RhYmlsaXR5IFN0YWJsZVxuICAqL1xuICBnZXRBYm91dDogKCgpID0+IFByb21pc2U8c3RyaW5nPikgfCBudWxsID0gYXN5bmMgKCkgPT4ge1xuICAgIC8vIERFQUxJTkcgV0lUSCBCVUc6IGh0dHBzOi8vcmVkZGF0YS5hdGxhc3NpYW4ubmV0L2Jyb3dzZS9HUk9LLTEyMzA2XG4gICAgY29uc3QgcGFjayA9IChhd2FpdCBncm9rLmRhcGkucGFja2FnZXMubGlzdCgpKS5maW5kKChwYWNrKSA9PiBwYWNrLmlkID09PSB0aGlzLmZ1bmM/LnBhY2thZ2UuaWQpO1xuICAgIHJldHVybiBwYWNrID8gYCR7cGFjay5mcmllbmRseU5hbWV9IHYuJHtwYWNrLnZlcnNpb259Llxcbkxhc3QgdXBkYXRlZCBvbiAke2RheWpzKHBhY2sudXBkYXRlZE9uKS5mb3JtYXQoJ1lZWVkgTU1NIEQsIEhIOm1tJyl9YDogYE5vIHBhY2thZ2UgaW5mbyB3YXMgZm91bmRgO1xuICB9O1xuXG4gIC8qKlxuICAgKiBMb29rcyBmb3JcbiAgICoge0BsaW5rIGdldE1vY2tzfSwge0BsaW5rIGdldFRlbXBsYXRlc30sIHtAbGluayBnZXRIZWxwfSwge0BsaW5rIHJlcG9ydEJ1Z30sIHtAbGluayByZXF1ZXN0RmVhdHVyZX0sIHtAbGluayBnZXRBYm91dH0sIHtAbGluayBleHBvcnRDb25maWd9XG4gICAqIG1lbWJlcnMgYW5kIGNyZWF0ZXMgXCJNb2RlbFwiIG1lbnVcbiAgICogQHN0YWJpbGl0eSBTdGFibGVcbiAgKi9cbiAgb3ZlcnJpZGUgYnVpbGRSaWJib25NZW51KCkge1xuICAgIHRoaXMucmliYm9uTWVudS5jbGVhcigpO1xuXG4gICAgc3VwZXIuYnVpbGRSaWJib25NZW51KCk7XG5cbiAgICBpZiAoIXRoaXMuZXhwb3J0Q29uZmlnICYmICF0aGlzLnJlcG9ydEJ1ZyAmJiAhdGhpcy5yZXF1ZXN0RmVhdHVyZSAmJiAhdGhpcy5nZXRIZWxwICYmICF0aGlzLmdldE1vY2tzICYmICF0aGlzLmdldFRlbXBsYXRlcykgcmV0dXJuO1xuXG4gICAgY29uc3QgcmliYm9uTWVudSA9IHRoaXMucmliYm9uTWVudS5ncm91cCgnTW9kZWwnKTtcblxuICAgIGlmICh0aGlzLmdldE1vY2tzICYmIHRoaXMuZ2V0TW9ja3MubGVuZ3RoID4gMCkge1xuICAgICAgaWYgKHRoaXMuZ2V0TW9ja3MubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIHJpYmJvbk1lbnUuaXRlbSgnSW5wdXQgZGF0YSBtb2NrJywgdGhpcy5nZXRNb2Nrc1swXS5hY3Rpb24pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgZGF0YUdyb3VwID0gcmliYm9uTWVudS5ncm91cCgnSW5wdXQgZGF0YSBtb2NrcycpO1xuICAgICAgICB0aGlzLmdldE1vY2tzLmZvckVhY2goKHZhbCkgPT4ge1xuICAgICAgICAgIGRhdGFHcm91cC5pdGVtKHZhbC5tb2NrTmFtZSwgdmFsLmFjdGlvbik7XG4gICAgICAgIH0pO1xuICAgICAgICByaWJib25NZW51LmVuZEdyb3VwKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZ2V0VGVtcGxhdGVzICYmIHRoaXMuZ2V0VGVtcGxhdGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIGlmICh0aGlzLmdldFRlbXBsYXRlcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgcmliYm9uTWVudS5pdGVtKCdJbnB1dCBkYXRhIHRlbXBsYXRlJywgdGhpcy5nZXRUZW1wbGF0ZXNbMF0uYWN0aW9uKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGRhdGFHcm91cCA9IHJpYmJvbk1lbnUuZ3JvdXAoJ0lucHV0IGRhdGEgdGVtcGxhdGVzJyk7XG4gICAgICAgIHRoaXMuZ2V0VGVtcGxhdGVzLmZvckVhY2goKHZhbCkgPT4ge1xuICAgICAgICAgIGRhdGFHcm91cC5pdGVtKHZhbC5uYW1lLCB2YWwuYWN0aW9uKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJpYmJvbk1lbnUuZW5kR3JvdXAoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5leHBvcnRDb25maWcgJiYgdGhpcy5leHBvcnRDb25maWcuc3VwcG9ydGVkRm9ybWF0cy5sZW5ndGggPiAwKSB7XG4gICAgICByaWJib25NZW51XG4gICAgICAgIC5ncm91cCgnRXhwb3J0JylcbiAgICAgICAgLml0ZW1zKHRoaXMuZXhwb3J0Q29uZmlnLnN1cHBvcnRlZEZvcm1hdHMsIGFzeW5jIChmb3JtYXQ6IHN0cmluZykgPT4gREcuVXRpbHMuZG93bmxvYWQodGhpcy5leHBvcnRDb25maWchLmZpbGVuYW1lKGZvcm1hdCksIGF3YWl0IHRoaXMuZXhwb3J0Q29uZmlnIS5leHBvcnQoZm9ybWF0KSkpXG4gICAgICAgIC5lbmRHcm91cCgpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnJlcG9ydEJ1ZylcbiAgICAgIHJpYmJvbk1lbnUuaXRlbSgnUmVwb3J0IGEgYnVnJywgKCkgPT4gdGhpcy5yZXBvcnRCdWchKCkpO1xuXG4gICAgaWYgKHRoaXMucmVxdWVzdEZlYXR1cmUpXG4gICAgICByaWJib25NZW51Lml0ZW0oJ1JlcXVlc3QgYSBmZWF0dXJlJywgKCkgPT4gdGhpcy5yZXF1ZXN0RmVhdHVyZSEoKSk7XG5cbiAgICBpZiAodGhpcy5nZXRIZWxwKVxuICAgICAgcmliYm9uTWVudS5pdGVtKCdIZWxwJywgKCkgPT4gdGhpcy5nZXRIZWxwISgpKTtcblxuICAgIGlmICh0aGlzLmdldEFib3V0KSB7XG4gICAgICByaWJib25NZW51Lml0ZW0oJ0Fib3V0JywgYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCBkaWFsb2cgPSB1aS5kaWFsb2coJ0N1cnJlbnQgdmVyc2lvbicpO1xuICAgICAgICAoYXdhaXQgdGhpcy5nZXRBYm91dCEoKSkuc3BsaXQoJ1xcbicpLmZvckVhY2goKGxpbmUpID0+IGRpYWxvZy5hZGQodWkubGFiZWwobGluZSkpKTtcbiAgICAgICAgZGlhbG9nLm9uT0soKCkgPT4ge30pO1xuICAgICAgICBkaWFsb2cuZ2V0QnV0dG9uKCdDQU5DRUwnKS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgICAgICBkaWFsb2cuc2hvdyh7Y2VudGVyOiB0cnVlfSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRmluZHMge0BsaW5rIHRoaXMuZnVuY0NhbGx9J3MgcGFja2FnZSBhbmQgcmV0cmlldmVzIGl0J3MgdmFyaWFibGVzLlxuICAgKiBAc3RhYmlsaXR5IFN0YWJsZVxuICAqL1xuICBwcml2YXRlIGFzeW5jIGdldFBhY2thZ2VVcmxzKCkge1xuICAgIC8vIERFQUxJTkcgV0lUSCBCVUc6IGh0dHBzOi8vcmVkZGF0YS5hdGxhc3NpYW4ubmV0L2Jyb3dzZS9HUk9LLTEyMzA2XG4gICAgY29uc3QgcGFjayA9IChhd2FpdCBncm9rLmRhcGkucGFja2FnZXMubGlzdCgpKS5maW5kKChwYWNrKSA9PiBwYWNrLmlkID09PSB0aGlzLnBhcmVudENhbGw/LmZ1bmMucGFja2FnZS5pZCk7XG5cbiAgICBjb25zdCByZXBvcnRCdWdVcmwgPSAoYXdhaXQgcGFjaz8uZ2V0UHJvcGVydGllcygpIGFzIGFueSkuUkVQT1JUX0JVR19VUkw7XG4gICAgaWYgKHJlcG9ydEJ1Z1VybCAmJiAhdGhpcy5yZXBvcnRCdWcpXG4gICAgICB0aGlzLnJlcG9ydEJ1ZyA9IGFzeW5jICgpID0+IHsgd2luZG93Lm9wZW4ocmVwb3J0QnVnVXJsLCAnX2JsYW5rJyk7IH07XG5cbiAgICBjb25zdCByZXFGZWF0dXJlVXJsID0gKGF3YWl0IHBhY2s/LmdldFByb3BlcnRpZXMoKSBhcyBhbnkpLlJFUVVFU1RfRkVBVFVSRV9VUkw7XG4gICAgaWYgKHJlcUZlYXR1cmVVcmwgJiYgIXRoaXMucmVxdWVzdEZlYXR1cmUpXG4gICAgICB0aGlzLnJlcXVlc3RGZWF0dXJlID0gYXN5bmMgKCkgPT4geyB3aW5kb3cub3BlbihyZXFGZWF0dXJlVXJsLCAnX2JsYW5rJyk7IH07XG4gIH1cbn1cbiJdfQ==
@@ -1 +1 @@
1
- {"version":3,"file":"function-view.d.ts","sourceRoot":"","sources":["function-view.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"function-view.d.ts","sourceRoot":"","sources":["function-view.ts"],"names":[],"mappings":"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"}
@@ -58,7 +58,7 @@ export class FunctionView extends DG.ViewBase {
58
58
  };
59
59
  this.box = true;
60
60
  // Changing view and building IO are reasonable only after FuncCall is linked
61
- this.onFuncCallReady.subscribe({
61
+ this.subs.push(this.onFuncCallReady.subscribe({
62
62
  complete: () => __awaiter(this, void 0, void 0, function* () {
63
63
  this.changeViewName(this.funcCall.func.friendlyName);
64
64
  this.build();
@@ -69,7 +69,7 @@ export class FunctionView extends DG.ViewBase {
69
69
  this.setAsLoaded();
70
70
  }
71
71
  })
72
- });
72
+ }));
73
73
  this.init();
74
74
  }
75
75
  /**
@@ -205,7 +205,7 @@ export class FunctionView extends DG.ViewBase {
205
205
  */
206
206
  buildHistoryBlock() {
207
207
  const newHistoryBlock = UiUtils.historyPanel(this.func);
208
- newHistoryBlock.onRunChosen.subscribe((id) => __awaiter(this, void 0, void 0, function* () { return this.linkFunccall(yield this.loadRun(id)); }));
208
+ this.subs.push(newHistoryBlock.onRunChosen.subscribe((id) => __awaiter(this, void 0, void 0, function* () { return this.linkFunccall(yield this.loadRun(id)); })));
209
209
  ui.empty(this.historyRoot);
210
210
  this.historyRoot.style.removeProperty('justify-content');
211
211
  this.historyRoot.style.width = '100%';
@@ -381,4 +381,4 @@ export class FunctionView extends DG.ViewBase {
381
381
  });
382
382
  }
383
383
  }
384
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuY3Rpb24tdmlldy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImZ1bmN0aW9uLXZpZXcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsZ0NBQWdDO0FBQ2hDLDRCQUE0QjtBQUM1QixPQUFPLEtBQUssSUFBSSxNQUFNLG1CQUFtQixDQUFDO0FBQzFDLE9BQU8sS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdEMsT0FBTyxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0QyxPQUFPLEVBQUMsT0FBTyxFQUFFLGVBQWUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUM5QyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBRXJELHVDQUF1QztBQUN2QyxNQUFNLFFBQVEsR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBRTlDLE1BQU0sT0FBZ0IsWUFBYSxTQUFRLEVBQUUsQ0FBQyxRQUFRO0lBV3BEOzs7Ozs7T0FNRztJQUNILFlBQ1ksUUFBZ0IsRUFDbkIsVUFBd0QsRUFBQyxjQUFjLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUM7UUFFdEcsS0FBSyxFQUFFLENBQUM7UUFIRSxhQUFRLEdBQVIsUUFBUSxDQUFRO1FBQ25CLFlBQU8sR0FBUCxPQUFPLENBQXdGO1FBakI5RixVQUFLLEdBQVcsVUFBVSxDQUFDO1FBRXJDLDhDQUE4QztRQUNwQyxxQkFBZ0IsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBRWpELG1EQUFtRDtRQUM1QyxvQkFBZSxHQUFHLElBQUksZUFBZSxDQUFRLEtBQUssQ0FBQyxDQUFDO1FBcUczRDs7VUFFRTtRQUNGLGlCQUFZLEdBaUNELElBQUksQ0FBQztRQXNRTixnQkFBVyxHQUFtQixFQUFFLENBQUMsSUFBSSxDQUFDLEVB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QyxRQUFRO2dCQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsNENBQTRDLENBQUMsQ0FBQztZQUVsRixNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3RDLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUNoRSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3RCLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLHNDQUFzQztZQUNsRSxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDWCxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBRXJDLCtEQUErRDtZQUMvRCxnRUFBZ0U7WUFDaEUsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNwRyxDQUFDO0tBQUE7Q0F1QkYiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSB2YWxpZC1qc2RvYyAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiAqL1xuaW1wb3J0ICogYXMgZ3JvayBmcm9tICdkYXRhZ3Jvay1hcGkvZ3Jvayc7XG5pbXBvcnQgKiBhcyB1aSBmcm9tICdkYXRhZ3Jvay1hcGkvdWknO1xuaW1wb3J0ICogYXMgREcgZnJvbSAnZGF0YWdyb2stYXBpL2RnJztcbmltcG9ydCB7U3ViamVjdCwgQmVoYXZpb3JTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7aGlzdG9yeVV0aWxzfSBmcm9tICcuL2hpc3RvcnktdXRpbHMnO1xuaW1wb3J0IHtVaVV0aWxzfSBmcm9tICcuL3NoYXJlZC1jb21wb25lbnRzL3VpLXV0aWxzJztcblxuLy8gR2V0dGluZyBpbml0YWwgVVJMIHVzZXIgZW50ZXJlZCB3aXRoXG5jb25zdCBzdGFydFVybCA9IG5ldyBVUkwoZ3Jvay5zaGVsbC5zdGFydFVyaSk7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBGdW5jdGlvblZpZXcgZXh0ZW5kcyBERy5WaWV3QmFzZSB7XG4gIHByb3RlY3RlZCBfZnVuY0NhbGw/OiBERy5GdW5jQ2FsbDtcbiAgcHJvdGVjdGVkIF9sYXN0Q2FsbD86IERHLkZ1bmNDYWxsO1xuICBwcm90ZWN0ZWQgX3R5cGU6IHN0cmluZyA9ICdmdW5jdGlvbic7XG5cbiAgLy8gZW1pdHRlZCB3aGVuIGFmdGVyIGEgbmV3IEZ1bmNDYWxsIGlzIGxpbmtlZFxuICBwcm90ZWN0ZWQgZnVuY0NhbGxSZXBsYWNlZCA9IG5ldyBTdWJqZWN0PHRydWU+KCk7XG5cbiAgLy8gZW1pdHRlZCB3aGVuIGFmdGVyIGFuIGluaXRpYWwgRnVuY0NhbGwgaXMgbGlua2VkXG4gIHB1YmxpYyBvbkZ1bmNDYWxsUmVhZHkgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGZhbHNlPihmYWxzZSk7XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgYSBuZXcgdmlldyB1c2luZyBmdW5jdGlvbiB3aXRoIHRoZSBnaXZlbiB7QGxpbmsgZnVuY05hbWV9LiBBbiBmdWxseS1zcGVjaWZpZWQgbmFtZSBpcyBleHBlY3RlZC5cbiAgICogU2VhcmNoIG9mIHRoZSBmdW5jdGlvbiBpcyBhc3luYywgc28gYXN5bmMge0BsaW5rIGluaXR9IGZ1bmN0aW9uIGlzIHVzZWQuXG4gICAqIEFsbCBvdGhlciBmdW5jdGlvbnMgYXJlIGNhbGxlZCBvbmx5IHdoZW4gaW5pdGlhbGl6YXRpb24gaXMgb3ZlciBhbmQge0BsaW5rIHRoaXMub25GdW5jQ2FsbFJlYWR5fSBpcyBlbWl0dGVkLlxuICAgKiBAcGFyYW0gZnVuY05hbWUgTmFtZSBvZiBERy5GdW5jIChlaXRoZXIgc2NyaXB0IG9yIHBhY2thZ2UgZnVuY3Rpb24pIHRvIHVzZSBhcyB2aWV3IGZvdW5kYXRpb25cbiAgICogQHBhcmFtIG9wdGlvbnMgQ29uZmlndXJhdGlvbiBvYmplY3QgZm9yIHRoZSB2aWV3LlxuICAgKi9cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGZ1bmNOYW1lOiBzdHJpbmcsXG4gICAgcHVibGljIG9wdGlvbnM6IHtoaXN0b3J5RW5hYmxlZDogYm9vbGVhbiwgaXNUYWJiZWQ6IGJvb2xlYW59ID0ge2hpc3RvcnlFbmFibGVkOiB0cnVlLCBpc1RhYmJlZDogZmFsc2V9XG4gICkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5ib3ggPSB0cnVlO1xuXG4gICAgLy8gQ2hhbmdpbmcgdmlldyBhbmQgYnVpbGRpbmcgSU8gYXJlIHJlYXNvbmFibGUgb25seSBhZnRlciBGdW5jQ2FsbCBpcyBsaW5rZWRcbiAgICB0aGlzLm9uRnVuY0NhbGxSZWFkeS5zdWJzY3JpYmUoe1xuICAgICAgY29tcGxldGU6IGFzeW5jICgpID0+IHtcbiAgICAgICAgdGhpcy5jaGFuZ2VWaWV3TmFtZSh0aGlzLmZ1bmNDYWxsLmZ1bmMuZnJpZW5kbHlOYW1lKTtcbiAgICAgICAgdGhpcy5idWlsZCgpO1xuXG4gICAgICAgIGlmICh0aGlzLmdldFN0YXJ0SWQoKSkge1xuICAgICAgICAgIGF3YWl0IHRoaXMub25CZWZvcmVMb2FkUnVuKCk7XG4gICAgICAgICAgdGhpcy5sYXN0Q2FsbCA9IHRoaXMuZnVuY0NhbGw7XG4gICAgICAgICAgYXdhaXQgdGhpcy5vbkFmdGVyTG9hZFJ1bih0aGlzLmZ1bmNDYWxsKTtcblxuICAgICAgICAgIHRoaXMuc2V0QXNMb2FkZWQoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5pbml0KCk7XG4gIH1cblxuICAvKipcbiAgICogQ2hhbmdlcyB0aGUgbmFtZSBvZiB0aGUgdmlldy4gVGhpcyBtZXRob2QgYWxzbyBkZWFscyB3aXRoIHJhcmUgYnVnIHdoZW4gdmlldyBuYW1lIGlzIG5vdCB1cGRhdGVkIGFmdGVyIGNoYW5nZS5cbiAgICogQHBhcmFtIG5ld05hbWUgTmV3IG5hbWUgZm9yIHRoZSB2aWV3XG4gICAqL1xuICBwcm90ZWN0ZWQgY2hhbmdlVmlld05hbWUobmV3TmFtZTogc3RyaW5nKSB7XG4gICAgLy8gVE9ETzogRmluZCBhIHJlcHJvZHVjaWJsZSBzYW1wbGUgb2YgdGhlIGJ1Z1xuICAgIHRoaXMubmFtZSA9IG5ld05hbWU7XG4gICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignZGl2LmQ0LXJpYmJvbi1uYW1lJyk/LnJlcGxhY2VDaGlsZHJlbih1aS5zcGFuKFtuZXdOYW1lXSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTdGFydElkKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgLy8gVG8gcHJldmVudCBsb2FkaW5nIHNhbWUgSUQgb24gb3BlbmluZyBkaWZmZXJlbnQgcGFja2FnZSxcbiAgICAvLyB3ZSBzaG91bGQgY2hlY2sgaWYgd2UgaGF2ZSBhbHJlYWR5IGxvYWRlZCBydW4gYnkgdGhpcyBJRFxuXG4gICAgLy9AdHMtaWdub3JlXG4gICAgcmV0dXJuICghZ3Jvay5zaGVsbC5nZXRWYXIoJ2lzTG9hZGVkJykpID8gc3RhcnRVcmwuc2VhcmNoUGFyYW1zLmdldCgnaWQnKTogdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRBc0xvYWRlZCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICByZXR1cm4gZ3Jvay5zaGVsbC5zZXRWYXIoJ2lzTG9hZGVkJywgdHJ1ZSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGN1cnJlbnQgZnVuY3Rpb24gY2FsbCBvZiB0aGUgdmlld1xuICAgKiBAcmV0dXJucyBUaGUgYWN0dWFsIGZ1bmNjYWxsIGFzc29jaWF0ZWQgd2l0aCB0aGUgdmlld1xuICAgKiBAc3RhYmlsaXR5IFN0YWJsZVxuICovXG4gIHB1YmxpYyBnZXQgZnVuY0NhbGwoKTogREcuRnVuY0NhbGwge1xuICAgIHJldHVybiB0aGlzLl9mdW5jQ2FsbCE7XG4gIH1cblxuICAvKipcbiAgICogR2V0IEZ1bmMgb2YgdGhlIHZpZXdcbiAgICogQHJldHVybnMgVGhlIGFjdHVhbCBmdW5jIGFzc29jaWF0ZWQgd2l0aCB0aGUgdmlld1xuICAgKiBAc3RhYmlsaXR5IFN0YWJsZVxuICovXG4gIGdldCBmdW5jKCkge1xuICAgIHJldHVybiB0aGlzLmZ1bmNDYWxsPy5mdW5jO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBkYXRhIG9mIGxhc3QgY2FsbCBvZiBhc3NvY2lhdGVkIGZ1bmN0aW9uXG4gICAqIEByZXR1cm5zIFRoZSBhY3R1YWwgZnVuYyBhc3NvY2lhdGVkIHdpdGggdGhlIHZpZXdcbiAgICogQHN0YWJpbGl0eSBTdGFibGVcbiAqL1xuICBnZXQgbGFzdENhbGwoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2xhc3RDYWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCBkYXRhIG9mIGxhc3QgY2FsbCBvZiBhc3NvY2lhdGVkIGZ1bmN0aW9uXG4gICAqIEBzdGFiaWxpdHkgU3RhYmxlXG4gKi9cbiAgc2V0IGxhc3RDYWxsKGxhc3RDYWxsOiBERy5GdW5jQ2FsbCB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuX2xhc3RDYWxsID0gbGFzdENhbGw7XG4gIH1cblxuICAvKipcbiAgICogVmlldyB0eXBlXG4gICAqIEBzdGFiaWxpdHkgU3RhYmxlXG4gKi9cbiAgcHVibGljIGdldCB0eXBlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3R5cGU7XG4gIH1cblxuICAvKiogRXhwb3J0IG9wdGlvbnMuIENvdWxkIGJlIG92ZXJyaWRlbiBwYXJ0aWFsbHksIHVzaW5nIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgZWFjaCBvcHRpb24uXG4gICAgKiBAc3RhYmlsaXR5IFN0YWJsZVxuICAqL1xuICBleHBvcnRDb25maWc6IHtcbiAgICAvKiogT3ZlcnJpZGUgdG8gcHJvdmlkZSBjdXN0b20gZXhwb3J0IGxvZ2ljLlxuICAgICAgKiBUaGVyZSBpcyBubyBkZWZhdWx0IGltcGxlbWVudGF0aW9uLCBzaW5jZSwgaW4gZ2VuZXJhbCwgZXhwb3J0IGlzIGRlcGVuZGVudCBvbiB0aGUgVUkuXG4gICAgICAqXG4gICAgICAqIEByZXR1cm5zIEJsb2Igd2l0aCBkYXRhIHRvIGJlIGV4cG9ydGVkIGludG8gdGhlIGZpbGUuXG4gICAgICAqIEBzdGFiaWxpdHkgU3RhYmxlXG4gICAgKi9cbiAgICBleHBvcnQ6ICgoZm9ybWF0OiBzdHJpbmcpID0+IFByb21pc2U8QmxvYj4pO1xuXG5cbiAgICAvKiogRmlsZW5hbWUgZm9yIGV4cG9ydGVkIGZpbGVzLiBPdmVycmlkZSBmb3IgY3VzdG9tIGZpbGVuYW1lcy5cbiAgICAgICogRGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBpcyB7QGxpbmsgZGVmYXVsdEV4cG9ydEZpbGVuYW1lfVxuICAgICAgKiBAcGFyYW0gZm9ybWF0IEZvcm1hdCBuYW1lIHRvIGJlIGV4cG9ydGVkXG4gICAgICAqIEByZXR1cm5zIFRoZSBhY3R1YWwgZmlsZW5hbWUgdG8gYmUgdXNlZCBmb3IgdGhlIGdlbmVyYXRlZCBmaWxlLlxuICAgICAgKiBAc3RhYmlsaXR5IFN0YWJsZVxuICAgICovXG4gICAgZmlsZW5hbWU6ICgoZm9ybWF0OiBzdHJpbmcpID0+IHN0cmluZyk7XG5cbiAgICAvKiogT3ZlcnJpZGUgdG8gcHJvdmlkZSBjdXN0b20gbGlzdCBvZiBzdXBwb3J0ZWQgZXhwb3J0IGZvcm1hdHMuXG4gICAgICogRGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBpcyB7QGxpbmsgZGVmYXVsdFN1cHBvcnRlZEV4cG9ydEZvcm1hdHN9XG4gICAgICogVGhlc2UgZm9ybWF0cyBhcmUgYXZhaWxhYmxlIHVuZGVyIHRoZSBcIkV4cG9ydFwiIHBvcHVwIG9uIHRoZSByaWJib24gcGFuZWwuXG4gICAgICogQHJldHVybnMgVGhlIGFycmF5IG9mIGZvcm1hdHMgYXZhaWxhYmxlIGZvciB0aGUgZXhwb3J0LlxuICAgICAqIEBzdGFiaWxpdHkgU3RhYmxlXG4gICAgKi9cbiAgICBzdXBwb3J0ZWRGb3JtYXRzOiBzdHJpbmdbXTtcblxuICAgIC8qKiBPdmVycmlkZSB0byBwcm92aWRlIGN1c3RvbSBmaWxlIGV4dGVuc2lvbnMgZm9yIGV4cG9ydGVkIGZvcm1hdHMuXG4gICAgICAgKiBEZWZhdWx0IGltcGxlbWVudGF0aW9uIGlzIHtAbGluayBkZWZhdWx0U3VwcG9ydGVkRXhwb3J0RXh0ZW5zaW9uc31cbiAgICAgICAqIFRoZXNlIGV4dGVuc2lvbnMgYXJlIHVzZWQgaW4gZmlsZW5hbWVzIHtAbGluayBleHBvcnRGaWxlbmFtZX0uXG4gICAgICAgKiBAcmV0dXJucyBUaGUgbWFwcGluZyBiZXR3ZWVuIHN1cHBvcnRlZCBleHBvcnQgZm9ybWF0cyBhbmQgdGhlaXIgZXh0ZW5zaW9ucy5cbiAgICAgICAqIEBzdGFiaWxpdHkgU3RhYmxlXG4gICAgICovXG4gICAgc3VwcG9ydGVkRXh0ZW5zaW9uczogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgfSB8IG51bGwgPSBudWxsO1xuXG4gIC8qKlxuICAgKiBMaW5rcyBGdW5jQ2FsbCB0byB0aGUgdmlldy4gSW4gYWRkaXRpb24sIHNldHMgXCJwYXRoXCIgYW5kIFwibmFtZVwiIHByb3BlcnRpZXMgdG8gY29ycmVzcG9uZGluZyBvbmVzLlxuICAgKiBBZnRlciBsaW5raW5nLCBlbWl0cyB7QGxpbmsgdGhpcy5mdW5jQ2FsbFJlcGxhY2VkfSBldmVudC5cbiAgICogQHBhcmFtIGZ1bmNDYWxsIFRoZSBhY3R1YWwgZnVuY2NhbGwgdG8gYmUgYXNzb2NpYXRlZCB3aXRoIHRoZSB2aWV3XG4gICAqIEBzdGFiaWxpdHkgU3RhYmxlXG4gKi9cbiAgcHVibGljIGxpbmtGdW5jY2FsbChmdW5jQ2FsbDogREcuRnVuY0NhbGwpIHtcbiAgICBjb25zdCBpc1ByZXZpb3VzSGlzdG9yaWNhbCA9IHRoaXMuX2Z1bmNDYWxsPy5vcHRpb25zWydpc0hpc3RvcmljYWwnXTtcbiAgICB0aGlzLl9mdW5jQ2FsbCA9IGZ1bmNDYWxsO1xuXG4gICAgaWYgKCF0aGlzLm9wdGlvbnMuaXNUYWJiZWQpIHtcbiAgICAgIGlmIChmdW5jQ2FsbC5vcHRpb25zWydpc0hpc3RvcmljYWwnXSkge1xuICAgICAgICBpZiAoIWlzUHJldmlvdXNIaXN0b3JpY2FsKVxuICAgICAgICAgIHRoaXMuY2hhbmdlVmlld05hbWUoYCR7dGhpcy5uYW1lfSDigJQgJHtmdW5jQ2FsbC5vcHRpb25zWyd0aXRsZSddID8/IG5ldyBEYXRlKGZ1bmNDYWxsLnN0YXJ0ZWQudG9TdHJpbmcoKSkudG9Mb2NhbGVTdHJpbmcoJ2VuLXVzJywge21vbnRoOiAnc2hvcnQnLCBkYXk6ICdudW1lcmljJywgaG91cjogJ251bWVyaWMnLCBtaW51dGU6ICdudW1lcmljJ30pfWApO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgdGhpcy5jaGFuZ2VWaWV3TmFtZShgJHt0aGlzLm5hbWUuc3Vic3RyaW5nKDAsICh0aGlzLm5hbWUuaW5kZXhPZignIOKAlCAnKSA+IDApID8gdGhpcy5uYW1lLmluZGV4T2YoJyDigJQgJykgOiB1bmRlZmluZWQpfSDigJQgJHtmdW5jQ2FsbC5vcHRpb25zWyd0aXRsZSddID8/IG5ldyBEYXRlKGZ1bmNDYWxsLnN0YXJ0ZWQudG9TdHJpbmcoKSkudG9Mb2NhbGVTdHJpbmcoJ2VuLXVzJywge21vbnRoOiAnc2hvcnQnLCBkYXk6ICdudW1lcmljJywgaG91cjogJ251bWVyaWMnLCBtaW51dGU6ICdudW1lcmljJ30pfWApO1xuICAgICAgICB0aGlzLnBhdGggPSBgP2lkPSR7dGhpcy5fZnVuY0NhbGwhLmlkfWA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnBhdGggPSBgYDtcblxuICAgICAgICB0aGlzLmNoYW5nZVZpZXdOYW1lKGAke3RoaXMubmFtZS5zdWJzdHJpbmcoMCwgKHRoaXMubmFtZS5pbmRleE9mKCcg4oCUICcpID4gMCkgPyB0aGlzLm5hbWUuaW5kZXhPZignIOKAlCAnKSA6IHVuZGVmaW5lZCl9YCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5mdW5jQ2FsbFJlcGxhY2VkLm5leHQodHJ1ZSk7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIGxvYWRzIGNvcnJlc3BvbmRpbmcgRnVuY0NhbGwgZnJvbSBEQiBpZiBcImlkXCIgcGFyYW0gaXMgcHJvdmlkZWQgaW4gVVJMLlxuICAgKiBAc3RhYmlsaXR5IFN0YWJsZVxuICAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgbG9hZEZ1bmNDYWxsQnlJZCgpIHtcbiAgICB1aS5zZXRVcGRhdGVJbmRpY2F0b3IodGhpcy5yb290LCB0cnVlKTtcblxuICAgIGNvbnN0IHJ1bklkID0gdGhpcy5nZXRTdGFydElkKCk7XG4gICAgaWYgKHJ1bklkICYmICF0aGlzLm9wdGlvbnMuaXNUYWJiZWQpIHtcbiAgICAgIHRoaXMubGlua0Z1bmNjYWxsKGF3YWl0IGhpc3RvcnlVdGlscy5sb2FkUnVuKHJ1bklkKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGZ1bmM6IERHLkZ1bmMgPSBhd2FpdCBncm9rLmZ1bmN0aW9ucy5ldmFsKHRoaXMuZnVuY05hbWUpO1xuICAgICAgdGhpcy5saW5rRnVuY2NhbGwoZnVuYy5wcmVwYXJlKHt9KSk7XG4gICAgfVxuXG4gICAgdWkuc2V0VXBkYXRlSW5kaWNhdG9yKHRoaXMucm9vdCwgZmFsc2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCBmb3IgYW55IGFzeW5jIGxvZ2ljIHRoYXQgY291bGQgbm90IGJlIHBsYWNlZCBpbiB0aGUgY29uc3RydWN0b3IgZGlyZWN0bHkuXG4gICAqIEl0IGlzIG9ubHkgY2FsbGVkIGluIHRoZSBjb25zdHJ1Y3RvciwgYnV0IG5vdCBhd2FpdGVkLlxuICAgKiBBIHNvb24gYXMge0BsaW5rIHRoaXMuZnVuY0NhbGx9IGlzIHNldCwge0BsaW5rIHRoaXMub25GdW5jQ2FsbFJlYWR5fSBpcyBlbWl0dGVkLlxuICAgKiBAc3RhYmlsaXR5IFN0YWJsZVxuICovXG4gIHB1YmxpYyBhc3luYyBpbml0KCkge1xuICAgIGF3YWl0IHRoaXMubG9hZEZ1bmNDYWxsQnlJZCgpO1xuXG4gICAgdGhpcy5vbkZ1bmNDYWxsUmVhZHkuY29tcGxldGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPdmVycmlkZSB0byBjcmVhdGUgYSBmdWxseSBjdXN0b20gVUkgaW5jbHVkaW5nIHJpYmJvbiBtZW51cyBhbmQgcGFuZWxzXG4gICAqIEBzdGFiaWxpdHkgU3RhYmxlXG4gKi9cbiAgcHVibGljIGJ1aWxkKCk6IHZvaWQge1xuICAgIHVpLmVtcHR5KHRoaXMucm9vdCk7XG4gICAgdGhpcy5yb290LmFwcGVuZENoaWxkKHRoaXMuYnVpbGRJTygpKTtcblxuICAgIGlmICh0aGlzLm9wdGlvbnMuaGlzdG9yeUVuYWJsZWQpIHRoaXMuYnVpbGRIaXN0b3J5QmxvY2soKTtcbiAgICB0aGlzLmJ1aWxkUmliYm9uTWVudSgpO1xuICAgIHRoaXMuYnVpbGRSaWJib25QYW5lbHMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPdmVycmlkZSB0byBjcmVhdGUgYSBjdXN0b20gaW5wdXQtb3V0cHV0IGJsb2NrLlxuICAgKiBAcmV0dXJucyBUaGUgSFRNTEVsZW1lbnQgd2l0aCB3aG9sZSBVSSBleGNsdWRpbmcgcmliYm9uIG1lbnVzIGFuZCBwYW5lbHNcbiAgICogQHN0YWJpbGl0eSBTdGFibGVcbiAqL1xuICBwdWJsaWMgYWJzdHJhY3QgYnVpbGRJTygpOiBIVE1MRWxlbWVudDtcblxuICAvKipcbiAgICogT3ZlcnJpZGUgdG8gY3JlYXRlIGEgY3VzdG9tIGhpc3RvcmljYWwgcnVucyBjb250cm9sLlxuICAgKiBAcmV0dXJucyBUaGUgSFRNTEVsZW1lbnQgd2l0aCBoaXN0b3J5IGJsb2NrIFVJXG4gICAqIEBzdGFiaWxpdHkgU3RhYmxlXG4gKi9cbiAgcHVibGljIGJ1aWxkSGlzdG9yeUJsb2NrKCk6IEhUTUxFbGVtZW50IHtcbiAgICBjb25zdCBuZXdIaXN0b3J5QmxvY2sgPSBVaVV0aWxzLmhpc3RvcnlQYW5lbCh0aGlzLmZ1bmMhKTtcblxuICAgIG5ld0hpc3RvcnlCbG9jay5vblJ1bkNob3Nlbi5zdWJzY3JpYmUoYXN5bmMgKGlkKSA9PiB0aGlzLmxpbmtGdW5jY2FsbChhd2FpdCB0aGlzLmxvYWRSdW4oaWQpKSk7XG5cbiAgICB1aS5lbXB0eSh0aGlzLmhpc3RvcnlSb290KTtcbiAgICB0aGlzLmhpc3RvcnlSb290LnN0eWxlLnJlbW92ZVByb3BlcnR5KCdqdXN0aWZ5LWNvbnRlbnQnKTtcbiAgICB0aGlzLmhpc3RvcnlSb290LnN0eWxlLndpZHRoID0gJzEwMCUnO1xuICAgIHRoaXMuaGlzdG9yeVJvb3QuYXBwZW5kKG5ld0hpc3RvcnlCbG9jay5yb290KTtcbiAgICByZXR1cm4gbmV3SGlzdG9yeUJsb2NrLnJvb3Q7XG4gIH1cblxuICAvKipcbiAgICogTG9va3MgZm9yIHtAbGluayBzdXBwb3J0ZWRFeHBvcnRGb3JtYXRzfSBtZW1iZXJzIGFuZCBjcmVhdGVzIHJpYmJvbiBwYW5lbFxuICAgKiBAcmV0dXJucyBUaGUgSFRNTEVsZW1lbnRzIG9mIHJpYmJvblBhbmVsc1xuICAgKiBAc3RhYmlsaXR5IFN0YWJsZVxuICovXG4gIGJ1aWxkUmliYm9uUGFuZWxzKCk6IEhUTUxFbGVtZW50W11bXSB7XG4gICAgY29uc3QgbmV3UmliYm9uUGFuZWxzOiBIVE1MRWxlbWVudFtdW10gPSBbXG4gICAgICBbLi4uKHRoaXMuZXhwb3J0Q29uZmlnICYmIHRoaXMuZXhwb3J0Q29uZmlnLnN1cHBvcnRlZEZvcm1hdHMubGVuZ3RoID4gMCkgPyBbdWkuZGl2SChbXG4gICAgICAgIHVpLmNvbWJvUG9wdXAoXG4gICAgICAgICAgdWkuaWNvbkZBKCdhcnJvdy10by1ib3R0b20nKSxcbiAgICAgICAgICB0aGlzLmV4cG9ydENvbmZpZy5zdXBwb3J0ZWRGb3JtYXRzLFxuICAgICAgICAgIGFzeW5jIChmb3JtYXQ6IHN0cmluZykgPT4gREcuVXRpbHMuZG93bmxvYWQodGhpcy5leHBvcnRDb25maWchLmZpbGVuYW1lKGZvcm1hdCksIGF3YWl0IHRoaXMuZXhwb3J0Q29uZmlnIS5leHBvcnQoZm9ybWF0KSkpLFxuICAgICAgXSldOiBbXVxuICAgICAgXV07XG5cbiAgICBpZiAodGhpcy5mdW5jPy5pZCkge1xuICAgICAgY29uc3QgaGlzdG9yeUJ1dHRvbiA9IHVpLmljb25GQSgnaGlzdG9yeScsICgpID0+IHtcbiAgICAgICAgZ3Jvay5zaGVsbC53aW5kb3dzLnNob3dQcm9wZXJ0aWVzID0gIWdyb2suc2hlbGwud2luZG93cy5zaG93UHJvcGVydGllcztcbiAgICAgICAgaGlzdG9yeUJ1dHRvbi5jbGFzc0xpc3QudG9nZ2xlKCdkNC1jdXJyZW50Jyk7XG4gICAgICAgIGdyb2suc2hlbGwubyA9IHRoaXMuaGlzdG9yeVJvb3Q7XG4gICAgICB9KTtcblxuICAgICAgaGlzdG9yeUJ1dHRvbi5jbGFzc0xpc3QuYWRkKCdkNC10b2dnbGUtYnV0dG9uJyk7XG4gICAgICBpZiAoZ3Jvay5zaGVsbC53aW5kb3dzLnNob3dQcm9wZXJ0aWVzKSBoaXN0b3J5QnV0dG9uLmNsYXNzTGlzdC5hZGQoJ2Q0LWN1cnJlbnQnKTtcblxuICAgICAgbmV3UmliYm9uUGFuZWxzLnB1c2goW1xuICAgICAgICBoaXN0b3J5QnV0dG9uXG4gICAgICBdKTtcbiAgICB9XG5cbiAgICB0aGlzLnNldFJpYmJvblBhbmVscyhuZXdSaWJib25QYW5lbHMpO1xuICAgIHJldHVybiBuZXdSaWJib25QYW5lbHM7XG4gIH1cblxuICAvKipcbiAgICogT3ZlcnJpZGUgdG8gY3JlYXRlIGEgY3VzdG9tIHJpYmJvbiBtZW51IG9uIHRoZSB0b3AuXG4gICAqIEBzdGFiaWxpdHkgU3RhYmxlXG4gKi9cbiAgcHVibGljIGJ1aWxkUmliYm9uTWVudSgpIHtcblxuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCBiZWZvcmUgc2F2aW5nIHRoZSBGVW5jQ2FsbCByZXN1bHRzIHRvIHRoZSBoaXN0b3JpY2FsIHJlc3VsdHMsIHJldHVybnMgdGhlIHNhdmVkIGNhbGwuIFNlZSBhbHNvIHtAbGluayBzYXZlUnVufS5cbiAgICogQHBhcmFtIGNhbGxUb1NhdmUgRnVuY0NhbGwgb2JqZWN0IHRvIHNhdmVcbiAgICogQHJldHVybnMgU2F2ZWQgRnVuY0NhbGxcbiAgICogQHN0YWJpbGl0eSBTdGFibGVcbiAqL1xuICBwdWJsaWMgYXN5bmMgb25CZWZvcmVTYXZlUnVuKGNhbGxUb1NhdmU6IERHLkZ1bmNDYWxsKSB7IH1cblxuICAvKipcbiAgICogU2F2ZXMgdGhlIGNvbXB1dGF0aW9uIHJlc3VsdHMgdG8gdGhlIGhpc3RvcmljYWwgcmVzdWx0cywgcmV0dXJucyB0aGUgc2F2ZWQgY2FsbC4gU2VlIGFsc28ge0BsaW5rIHNhdmVSdW59LlxuICAgKiBAcGFyYW0gc2F2ZWRDYWxsIEZ1bmNDYWxsIG9iamVjdCB0byBzYXZlXG4gICAqIEByZXR1cm5zIFNhdmVkIEZ1bmNDYWxsXG4gICAqIEBzdGFiaWxpdHkgU3RhYmxlXG4gKi9cbiAgcHVibGljIGFzeW5jIG9uQWZ0ZXJTYXZlUnVuKHNhdmVkQ2FsbDogREcuRnVuY0NhbGwpIHsgfVxuXG4gIC8qKlxuICAgKiBTYXZlcyB0aGUgY29tcHV0YXRpb24gcmVzdWx0cyB0byB0aGUgaGlzdG9yaWNhbCByZXN1bHRzLCByZXR1cm5zIHRoZSBzYXZlZCBjYWxsLiBTZWUgYWxzbyB7QGxpbmsgbG9hZFJ1bn0uXG4gICAqIEBwYXJhbSBjYWxsVG9TYXZlIEZ1bmNDYWxsIG9iamVjdCB0byBzYXZlXG4gICAqIEByZXR1cm5zIFNhdmVkIEZ1bmNDYWxsXG4gICAqIEBzdGFiaWxpdHkgU3RhYmxlXG4gKi9cbiAgcHVibGljIGFzeW5jIHNhdmVSdW4oY2FsbFRvU2F2ZTogREcuRnVuY0NhbGwpOiBQcm9taXNlPERHLkZ1bmNDYWxsPiB7XG4gICAgYXdhaXQgdGhpcy5vbkJlZm9yZVNhdmVSdW4oY2FsbFRvU2F2ZSk7XG4gICAgY29uc3Qgc2F2ZWRDYWxsID0gYXdhaXQgaGlzdG9yeVV0aWxzLnNhdmVSdW4oY2FsbFRvU2F2ZSk7XG4gICAgc2F2ZWRDYWxsLm9wdGlvbnNbJ2lzSGlzdG9yaWNhbCddID0gZmFsc2U7XG4gICAgdGhpcy5saW5rRnVuY2NhbGwoc2F2ZWRDYWxsKTtcblxuICAgIGlmICh0aGlzLm9wdGlvbnMuaGlzdG9yeUVuYWJsZWQpIHRoaXMuYnVpbGRIaXN0b3J5QmxvY2soKTtcbiAgICBpZiAoIXRoaXMub3B0aW9ucy5pc1RhYmJlZCkgdGhpcy5wYXRoID0gYD9pZD0ke3NhdmVkQ2FsbC5pZH1gO1xuXG4gICAgYXdhaXQgdGhpcy5vbkFmdGVyU2F2ZVJ1bihzYXZlZENhbGwpO1xuICAgIHJldHVybiBzYXZlZENhbGw7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGVkIGJlZm9yZSBkZWxldGluZyB0aGUgY29tcHV0YXRpb24gcmVzdWx0cyBmcm9tIGhpc3RvcnksIHJldHVybnMgaXRzIGlkLiBTZWUgYWxzbyB7QGxpbmsgbG9hZFJ1bn0uXG4gICAqIEBwYXJhbSBjYWxsVG9EZWxldGUgRnVuY0NhbGwgb2JqZWN0IHRvIGJlIGRlbGV0ZWRcbiAgICogQHN0YWJpbGl0eSBTdGFibGVcbiAqL1xuICBwdWJsaWMgYXN5bmMgb25CZWZvcmVEZWxldGVSdW4oY2FsbFRvRGVsZXRlOiBERy5GdW5jQ2FsbCkgeyB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCBhZnRlciBkZWxldGluZyB0aGUgY29tcHV0YXRpb24gcmVzdWx0cyBmcm9tIGhpc3RvcnksIHJldHVybnMgaXRzIGlkLiBTZWUgYWxzbyB7QGxpbmsgbG9hZFJ1bn0uXG4gICAqIEBwYXJhbSBkZWxldGVkQ2FsbCBkZWxldGVkIEZ1bmNDYWxsIHZhbHVlXG4gICAqIEBzdGFiaWxpdHkgU3RhYmxlXG4gKi9cbiAgcHVibGljIGFzeW5jIG9uQWZ0ZXJEZWxldGVSdW4oZGVsZXRlZENhbGw6IERHLkZ1bmNDYWxsKSB7IH1cblxuICAvKipcbiAgICogRGVsZXRlcyB0aGUgY29tcHV0YXRpb24gcmVzdWx0cyBmcm9tIGhpc3RvcnksIHJldHVybnMgaXRzIGlkLiBTZWUgYWxzbyB7QGxpbmsgbG9hZFJ1bn0uXG4gICAqIEBwYXJhbSBjYWxsVG9EZWxldGUgRnVuY0NhbGwgb2JqZWN0IHRvIGRlbGV0ZVxuICAgKiBAcmV0dXJucyBJRCBvZiBkZWxldGVkIGhpc3RvcmljYWwgcnVuXG4gICAqIEBzdGFiaWxpdHkgU3RhYmxlXG4gKi9cblxuICBwdWJsaWMgYXN5bmMgZGVsZXRlUnVuKGNhbGxUb0RlbGV0ZTogREcuRnVuY0NhbGwpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGF3YWl0IHRoaXMub25CZWZvcmVEZWxldGVSdW4oY2FsbFRvRGVsZXRlKTtcbiAgICBhd2FpdCBoaXN0b3J5VXRpbHMuZGVsZXRlUnVuKGNhbGxUb0RlbGV0ZSk7XG4gICAgYXdhaXQgdGhpcy5vbkFmdGVyRGVsZXRlUnVuKGNhbGxUb0RlbGV0ZSk7XG4gICAgcmV0dXJuIGNhbGxUb0RlbGV0ZS5pZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgYmVmb3JlIGZldGNoaW5nIHRoZSBoaXN0b3JpY2FsIHJ1biBkYXRhIGluIHtAbGluayBsb2FkUnVufS5cbiAgICogQHN0YWJpbGl0eSBTdGFibGVcbiAqL1xuICBwdWJsaWMgYXN5bmMgb25CZWZvcmVMb2FkUnVuKCkge31cblxuICAvKipcbiAgICogQ2FsbGVkIGFmdGVyIGZldGNoaW5nIHRoZSBoaXN0b3JpY2FsIHJ1biBkYXRhIGluIHtAbGluayBsb2FkUnVufS5cbiAgICogQHBhcmFtIGZ1bmNDYWxsIEZ1bmNDYWxsIGZldGNoZWQgZnJvbSBzZXJ2ZXIgZHVyaW5nIHtAbGluayBsb2FkUnVufVxuICAgKiBAc3RhYmlsaXR5IFN0YWJsZVxuICovXG4gIHB1YmxpYyBhc3luYyBvbkFmdGVyTG9hZFJ1bihmdW5jQ2FsbDogREcuRnVuY0NhbGwpIHt9XG5cbiAgLyoqXG4gICAqIExvYWRzIHRoZSBzcGVjaWZpZWQgaGlzdG9yaWNhbCBydW4uIFNlZSBhbHNvIHtAbGluayBzYXZlUnVufS5cbiAgICogQHBhcmFtIGZ1bmNDYWxsSWQgSUQgb2YgRnVuY0NhbGwgdG8gbG9vayBmb3IuIEdldCBpdCB1c2luZyB7QHNlZSBmdW5jQ2FsbC5pZH0gZmllbGRcbiAgICogQHJldHVybnMgRnVuY0NhbGwgYXVnZW1lbnRlZCB3aXRoIGlucHV0cycgYW5kIG91dHB1dHMnIHZhbHVlc1xuICAgKiBAc3RhYmlsaXR5IFN0YWJsZVxuICovXG5cbiAgcHVibGljIGFzeW5jIGxvYWRSdW4oZnVuY0NhbGxJZDogc3RyaW5nKTogUHJvbWlzZTxERy5GdW5jQ2FsbD4ge1xuICAgIGF3YWl0IHRoaXMub25CZWZvcmVMb2FkUnVuKCk7XG4gICAgY29uc3QgcHVsbGVkUnVuID0gYXdhaXQgaGlzdG9yeVV0aWxzLmxvYWRSdW4oZnVuY0NhbGxJZCk7XG4gICAgdGhpcy5sYXN0Q2FsbCA9IHB1bGxlZFJ1bjtcbiAgICBhd2FpdCB0aGlzLm9uQWZ0ZXJMb2FkUnVuKHB1bGxlZFJ1bik7XG4gICAgcmV0dXJuIHB1bGxlZFJ1bjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgYmVmb3JlIGFjdHVhbCBjb21wdXRhdGlvbnMgYXJlIG1hZGUge0BsaW5rIHJ1bn0uXG4gICAqIEBwYXJhbSBmdW5jVG9DYWxsIEZ1bmNDYWxsIG9iamVjdCB0byBiZSBjYWxsZWQge0BzZWUgREcuRnVuY0NhbGwuY2FsbCgpfVxuICAgKiBAc3RhYmlsaXR5IFN0YWJsZVxuICAqL1xuICBwdWJsaWMgYXN5bmMgb25CZWZvcmVSdW4oZnVuY1RvQ2FsbDogREcuRnVuY0NhbGwpIHt9XG5cbiAgLyoqXG4gICAgKiBDYWxsZWQgYWZ0ZXIgYWN0dWFsIGNvbXB1dGF0aW9ucyBhcmUgbWFkZSB7QGxpbmsgcnVufS5cbiAgICAqIEBwYXJhbSBydW5GdW5jIEZ1bmNDYWxsIG9iamVjdCBhZnRlciBjYWxsIG1ldGhvZCB7QHNlZSBERy5GdW5jQ2FsbC5jYWxsKCl9XG4gICAgKiBAc3RhYmlsaXR5IFN0YWJsZVxuICAgKi9cbiAgcHVibGljIGFzeW5jIG9uQWZ0ZXJSdW4ocnVuRnVuYzogREcuRnVuY0NhbGwpIHt9XG5cbiAgLyoqXG4gICAgKiBDYWxsZWQgdG8gcGVyZm9ybSBhY3R1YWwgY29tcHV0YXRpb25zLlxuICAgICogQHN0YWJpbGl0eSBTdGFibGVcbiAgICovXG4gIHB1YmxpYyBhc3luYyBydW4oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLmZ1bmNDYWxsKSB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBjb3JyZXNwb2RpbmcgZnVuY3Rpb24gaXMgbm90IHNwZWNpZmllZCcpO1xuXG4gICAgYXdhaXQgdGhpcy5vbkJlZm9yZVJ1bih0aGlzLmZ1bmNDYWxsKTtcbiAgICBjb25zdCBwaSA9IERHLlRhc2tCYXJQcm9ncmVzc0luZGljYXRvci5jcmVhdGUoJ0NhbGN1bGF0aW5nLi4uJyk7XG4gICAgdGhpcy5mdW5jQ2FsbC5uZXdJZCgpO1xuICAgIGF3YWl0IHRoaXMuZnVuY0NhbGwuY2FsbCgpOyAvLyBDQVVUSU9OOiBtdXRhdGVzIHRoZSBmdW5jQ2FsbCBmaWVsZFxuICAgIHBpLmNsb3NlKCk7XG4gICAgYXdhaXQgdGhpcy5vbkFmdGVyUnVuKHRoaXMuZnVuY0NhbGwpO1xuXG4gICAgLy8gSWYgYSB2aWV3IGlzIGluY2FwdXNsYXRlZCBpbnRvIGEgdGFiIChlLmcuIGluIFBpcGVsaW5lVmlldyksXG4gICAgLy8gdGhlcmUgaXMgbm8gbmVlZCB0byBzYXZlIHJ1biB0aWxsIGFuIGVudGlyZSBwaXBlbGluZSBpcyBvdmVyLlxuICAgIHRoaXMubGFzdENhbGwgPSB0aGlzLm9wdGlvbnMuaXNUYWJiZWQgPyB0aGlzLmZ1bmNDYWxsLmNsb25lKCkgOiBhd2FpdCB0aGlzLnNhdmVSdW4odGhpcy5mdW5jQ2FsbCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGlzdG9yeVJvb3Q6IEhUTUxEaXZFbGVtZW50ID0gdWkuZGl2VihbXSwge3N0eWxlOiB7J2p1c3RpZnktY29udGVudCc6ICdjZW50ZXInfX0pO1xuXG4gIC8qKlxuICAgICogRGVmYXVsdCBleHBvcnQgZmlsZW5hbWUgZ2VuZXJhdGlvbiBtZXRob2QuXG4gICAgKiBJdCBhdXRvbWF0aWNhbGx5IHJlcGxhY2VzIGFsbCBzeW1ib2xzIHVuc3VwcG9ydGVkIGJ5IFdpbmRvd3MgZmlsZXN5c3RlbS5cbiAgICAqIEBwYXJhbSBmb3JtYXQgQSBmb3JtYXQgbGlzdGVkIGluIHtAbGluayBkZWZhdWx0U3VwcG9ydGVkRXhwb3J0Rm9ybWF0c30uXG4gICAgKiBAc3RhYmlsaXR5IFN0YWJsZVxuICAgKi9cbiAgcHJvdGVjdGVkIGRlZmF1bHRFeHBvcnRGaWxlbmFtZSA9IChmb3JtYXQ6IHN0cmluZykgPT4ge1xuICAgIHJldHVybiBgJHt0aGlzLm5hbWV9IC0gJHtuZXcgRGF0ZSgpLnRvTG9jYWxlU3RyaW5nKCdlbi1VUycpLnJlcGxhY2VBbGwoLzp8XFwvL2csICctJyl9LiR7dGhpcy5leHBvcnRDb25maWchLnN1cHBvcnRlZEV4dGVuc2lvbnNbZm9ybWF0XX1gO1xuICB9O1xuXG4gIHByb3RlY3RlZCBkZWZhdWx0U3VwcG9ydGVkRXhwb3J0RXh0ZW5zaW9uczogKCkgPT4gUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9ICgpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgJ0V4Y2VsJzogJ3hsc3gnXG4gICAgfTtcbiAgfTtcblxuICBwcm90ZWN0ZWQgZGVmYXVsdFN1cHBvcnRlZEV4cG9ydEZvcm1hdHMgPSAoKSA9PiB7XG4gICAgcmV0dXJuIFsnRXhjZWwnXTtcbiAgfTtcbn1cbiJdfQ==
384
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuY3Rpb24tdmlldy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImZ1bmN0aW9uLXZpZXcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsZ0NBQWdDO0FBQ2hDLDRCQUE0QjtBQUM1QixPQUFPLEtBQUssSUFBSSxNQUFNLG1CQUFtQixDQUFDO0FBQzFDLE9BQU8sS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdEMsT0FBTyxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0QyxPQUFPLEVBQUMsT0FBTyxFQUFFLGVBQWUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUM5QyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBRXJELHVDQUF1QztBQUN2QyxNQUFNLFFBQVEsR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBRTlDLE1BQU0sT0FBZ0IsWUFBYSxTQUFRLEVBQUUsQ0FBQyxRQUFRO0lBV3BEOzs7Ozs7T0FNRztJQUNILFlBQ1ksUUFBZ0IsRUFDbkIsVUFBd0QsRUFBQyxjQUFjLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUM7UUFFdEcsS0FBSyxFQUFFLENBQUM7UUFIRSxhQUFRLEdBQVIsUUFBUSxDQUFRO1FBQ25CLFlBQU8sR0FBUCxPQUFPLENBQXdGO1FBakI5RixVQUFLLEdBQVcsVUFBVSxDQUFDO1FBRXJDLDhDQUE4QztRQUNwQyxxQkFBZ0IsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBRWpELG1EQUFtRDtRQUM1QyxvQkFBZSxHQUFHLElBQUksZUFBZSxDQUFRLEtBQUssQ0FBQyxDQUFDO1FBdUczRDs7VUFFRTtRQUNGLGlCQUFZLEdBaUNELElBQUksQ0FBQztRQXdRTixnQkFBVyxHQUFtQixFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFDLEtBQUssRUFBRSxFQUFDLGlCQUFpQixFQUFFLFFBQVEsRUFBQyxFQUFDLENBQUMsQ0FBQztRQUU1Rjs7Ozs7V0FLRztRQUNPLDBCQUFxQixHQUFHLENBQUMsTUFBYyxFQUFFLEVBQUU7WUFDbkQsT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLE1BQU0sSUFBSSxJQUFJLEVBQUUsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsWUFBYSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDM0ksQ0FBQyxDQUFDO1FBRVEscUNBQWdDLEdBQWlDLEdBQUcsRUFBRTtZQUM5RSxPQUFPO2dCQUNMLE9BQU8sRUFBRSxNQUFNO2FBQ2hCLENBQUM7UUFDSixDQUFDLENBQUM7UUFFUSxrQ0FBNkIsR0FBRyxHQUFHLEVBQUU7WUFDN0MsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25CLENBQUMsQ0FBQztRQXpaQSxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQztRQUVoQiw2RUFBNkU7UUFDN0UsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQ1osSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUM7WUFDN0IsUUFBUSxFQUFFLEdBQVMsRUFBRTtnQkFDbkIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFDckQsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUViLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFO29CQUNyQixNQUFNLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztvQkFDN0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO29CQUM5QixNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO29CQUV6QyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7aUJBQ3BCO1lBQ0gsQ0FBQyxDQUFBO1NBQ0YsQ0FBQyxDQUNILENBQUM7UUFFRixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDZCxDQUFDO0lBRUQ7OztPQUdHO0lBQ08sY0FBYyxDQUFDLE9BQWU7O1FBQ3RDLDhDQUE4QztRQUM5QyxJQUFJLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQztRQUNwQixNQUFBLFFBQVEsQ0FBQyxhQUFhLENBQUMsb0JBQW9CLENBQUMsMENBQUUsZUFBZSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEYsQ0FBQztJQUVPLFVBQVU7UUFDaEIsMkRBQTJEO1FBQzNELDJEQUEyRDtRQUUzRCxZQUFZO1FBQ1osT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUN2RixDQUFDO0lBRU8sV0FBVztRQUNqQixhQUFhO1FBQ2IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVEOzs7O0tBSUM7SUFDRCxJQUFXLFFBQVE7UUFDakIsT0FBTyxJQUFJLENBQUMsU0FBVSxDQUFDO0lBQ3pCLENBQUM7SUFFRDs7OztLQUlDO0lBQ0QsSUFBSSxJQUFJOztRQUNOLE9BQU8sTUFBQSxJQUFJLENBQUMsUUFBUSwwQ0FBRSxJQUFJLENBQUM7SUFDN0IsQ0FBQztJQUVEOzs7O0tBSUM7SUFDRCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUVEOzs7S0FHQztJQUNELElBQUksUUFBUSxDQUFDLFFBQWlDO1FBQzVDLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO0lBQzVCLENBQUM7SUFFRDs7O0tBR0M7SUFDRCxJQUFXLElBQUk7UUFDYixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQXdDRDs7Ozs7S0FLQztJQUNNLFlBQVksQ0FBQyxRQUFxQjs7UUFDdkMsTUFBTSxvQkFBb0IsR0FBRyxNQUFBLElBQUksQ0FBQyxTQUFTLDBDQUFFLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNyRSxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQztRQUUxQixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUU7WUFDMUIsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxFQUFFO2dCQUNwQyxJQUFJLENBQUMsb0JBQW9CO29CQUN2QixJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksTUFBTSxNQUFBLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLG1DQUFJLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLEVBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDOztvQkFFMU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sTUFBQSxRQUFRLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxtQ0FBSSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxFQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDaFMsSUFBSSxDQUFDLElBQUksR0FBRyxPQUFPLElBQUksQ0FBQyxTQUFVLENBQUMsRUFBRSxFQUFFLENBQUM7YUFDekM7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUM7Z0JBRWYsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2FBQ3pIO1NBQ0Y7UUFFRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRDs7O01BR0U7SUFDYyxnQkFBZ0I7O1lBQzlCLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBRXZDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNoQyxJQUFJLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFO2dCQUNuQyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sWUFBWSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2FBQ3REO2lCQUFNO2dCQUNMLE1BQU0sSUFBSSxHQUFZLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUMvRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQzthQUNyQztZQUVELEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzFDLENBQUM7S0FBQTtJQUVEOzs7OztLQUtDO0lBQ1ksSUFBSTs7WUFDZixNQUFNLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBRTlCLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDbEMsQ0FBQztLQUFBO0lBRUQ7OztLQUdDO0lBQ00sS0FBSztRQUNWLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBRXRDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjO1lBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDMUQsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFTRDs7OztLQUlDO0lBQ00saUJBQWlCO1FBQ3RCLE1BQU0sZUFBZSxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUssQ0FBQyxDQUFDO1FBRXpELElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUNaLGVBQWUsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQU8sRUFBRSxFQUFFLEVBQUUsZ0RBQUMsT0FBQSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBLEdBQUEsQ0FBQyxDQUMvRixDQUFDO1FBRUYsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQztRQUN0QyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUMsT0FBTyxlQUFlLENBQUMsSUFBSSxDQUFDO0lBQzlCLENBQUM7SUFFRDs7OztLQUlDO0lBQ0QsaUJBQWlCOztRQUNmLE1BQU0sZUFBZSxHQUFvQjtZQUN2QyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7d0JBQ2xGLEVBQUUsQ0FBQyxVQUFVLENBQ1gsRUFBRSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxFQUM1QixJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixFQUNsQyxDQUFPLE1BQWMsRUFBRSxFQUFFLGdEQUFDLE9BQUEsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFlBQWEsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxJQUFJLENBQUMsWUFBYSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFBLEdBQUEsQ0FBQztxQkFDN0gsQ0FBQyxDQUFDLENBQUEsQ0FBQyxDQUFDLEVBQUU7YUFDTjtTQUFDLENBQUM7UUFFTCxJQUFJLE1BQUEsSUFBSSxDQUFDLElBQUksMENBQUUsRUFBRSxFQUFFO1lBQ2pCLE1BQU0sYUFBYSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLEdBQUcsRUFBRTtnQkFDOUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsY0FBYyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDO2dCQUN2RSxhQUFhLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFDN0MsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztZQUNsQyxDQUFDLENBQUMsQ0FBQztZQUVILGFBQWEsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLENBQUM7WUFDaEQsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxjQUFjO2dCQUFFLGFBQWEsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBRWpGLGVBQWUsQ0FBQyxJQUFJLENBQUM7Z0JBQ25CLGFBQWE7YUFDZCxDQUFDLENBQUM7U0FDSjtRQUVELElBQUksQ0FBQyxlQUFlLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDdEMsT0FBTyxlQUFlLENBQUM7SUFDekIsQ0FBQztJQUVEOzs7S0FHQztJQUNNLGVBQWU7SUFFdEIsQ0FBQztJQUVEOzs7OztLQUtDO0lBQ1ksZUFBZSxDQUFDLFVBQXVCOzhEQUFJLENBQUM7S0FBQTtJQUV6RDs7Ozs7S0FLQztJQUNZLGNBQWMsQ0FBQyxTQUFzQjs4REFBSSxDQUFDO0tBQUE7SUFFdkQ7Ozs7O0tBS0M7SUFDWSxPQUFPLENBQUMsVUFBdUI7O1lBQzFDLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUN2QyxNQUFNLFNBQVMsR0FBRyxNQUFNLFlBQVksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDekQsU0FBUyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsR0FBRyxLQUFLLENBQUM7WUFDMUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUU3QixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYztnQkFBRSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUMxRCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRO2dCQUFFLElBQUksQ0FBQyxJQUFJLEdBQUcsT0FBTyxTQUFTLENBQUMsRUFBRSxFQUFFLENBQUM7WUFFOUQsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3JDLE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7S0FBQTtJQUVEOzs7O0tBSUM7SUFDWSxpQkFBaUIsQ0FBQyxZQUF5Qjs4REFBSSxDQUFDO0tBQUE7SUFFN0Q7Ozs7S0FJQztJQUNZLGdCQUFnQixDQUFDLFdBQXdCOzhEQUFJLENBQUM7S0FBQTtJQUUzRDs7Ozs7S0FLQztJQUVZLFNBQVMsQ0FBQyxZQUF5Qjs7WUFDOUMsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDM0MsTUFBTSxZQUFZLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQzNDLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQzFDLE9BQU8sWUFBWSxDQUFDLEVBQUUsQ0FBQztRQUN6QixDQUFDO0tBQUE7SUFFRDs7O0tBR0M7SUFDWSxlQUFlOzhEQUFJLENBQUM7S0FBQTtJQUVqQzs7OztLQUlDO0lBQ1ksY0FBYyxDQUFDLFFBQXFCOzhEQUFHLENBQUM7S0FBQTtJQUVyRDs7Ozs7S0FLQztJQUVZLE9BQU8sQ0FBQyxVQUFrQjs7WUFDckMsTUFBTSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDN0IsTUFBTSxTQUFTLEdBQUcsTUFBTSxZQUFZLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3pELElBQUksQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDO1lBQzFCLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNyQyxPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDO0tBQUE7SUFFRDs7OztNQUlFO0lBQ1csV0FBVyxDQUFDLFVBQXVCOzhEQUFHLENBQUM7S0FBQTtJQUVwRDs7OztPQUlHO0lBQ1UsVUFBVSxDQUFDLE9BQW9COzhEQUFHLENBQUM7S0FBQTtJQUVoRDs7O09BR0c7SUFDVSxHQUFHOztZQUNkLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUTtnQkFBRSxNQUFNLElBQUksS0FBSyxDQUFDLDRDQUE0QyxDQUFDLENBQUM7WUFFbEYsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN0QyxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsd0JBQXdCLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDaEUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN0QixNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxzQ0FBc0M7WUFDbEUsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ1gsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUVyQywrREFBK0Q7WUFDL0QsZ0VBQWdFO1lBQ2hFLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDcEcsQ0FBQztLQUFBO0NBdUJGIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgdmFsaWQtanNkb2MgKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4gKi9cbmltcG9ydCAqIGFzIGdyb2sgZnJvbSAnZGF0YWdyb2stYXBpL2dyb2snO1xuaW1wb3J0ICogYXMgdWkgZnJvbSAnZGF0YWdyb2stYXBpL3VpJztcbmltcG9ydCAqIGFzIERHIGZyb20gJ2RhdGFncm9rLWFwaS9kZyc7XG5pbXBvcnQge1N1YmplY3QsIEJlaGF2aW9yU3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2hpc3RvcnlVdGlsc30gZnJvbSAnLi9oaXN0b3J5LXV0aWxzJztcbmltcG9ydCB7VWlVdGlsc30gZnJvbSAnLi9zaGFyZWQtY29tcG9uZW50cy91aS11dGlscyc7XG5cbi8vIEdldHRpbmcgaW5pdGFsIFVSTCB1c2VyIGVudGVyZWQgd2l0aFxuY29uc3Qgc3RhcnRVcmwgPSBuZXcgVVJMKGdyb2suc2hlbGwuc3RhcnRVcmkpO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRnVuY3Rpb25WaWV3IGV4dGVuZHMgREcuVmlld0Jhc2Uge1xuICBwcm90ZWN0ZWQgX2Z1bmNDYWxsPzogREcuRnVuY0NhbGw7XG4gIHByb3RlY3RlZCBfbGFzdENhbGw/OiBERy5GdW5jQ2FsbDtcbiAgcHJvdGVjdGVkIF90eXBlOiBzdHJpbmcgPSAnZnVuY3Rpb24nO1xuXG4gIC8vIGVtaXR0ZWQgd2hlbiBhZnRlciBhIG5ldyBGdW5jQ2FsbCBpcyBsaW5rZWRcbiAgcHJvdGVjdGVkIGZ1bmNDYWxsUmVwbGFjZWQgPSBuZXcgU3ViamVjdDx0cnVlPigpO1xuXG4gIC8vIGVtaXR0ZWQgd2hlbiBhZnRlciBhbiBpbml0aWFsIEZ1bmNDYWxsIGlzIGxpbmtlZFxuICBwdWJsaWMgb25GdW5jQ2FsbFJlYWR5ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxmYWxzZT4oZmFsc2UpO1xuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIGEgbmV3IHZpZXcgdXNpbmcgZnVuY3Rpb24gd2l0aCB0aGUgZ2l2ZW4ge0BsaW5rIGZ1bmNOYW1lfS4gQW4gZnVsbHktc3BlY2lmaWVkIG5hbWUgaXMgZXhwZWN0ZWQuXG4gICAqIFNlYXJjaCBvZiB0aGUgZnVuY3Rpb24gaXMgYXN5bmMsIHNvIGFzeW5jIHtAbGluayBpbml0fSBmdW5jdGlvbiBpcyB1c2VkLlxuICAgKiBBbGwgb3RoZXIgZnVuY3Rpb25zIGFyZSBjYWxsZWQgb25seSB3aGVuIGluaXRpYWxpemF0aW9uIGlzIG92ZXIgYW5kIHtAbGluayB0aGlzLm9uRnVuY0NhbGxSZWFkeX0gaXMgZW1pdHRlZC5cbiAgICogQHBhcmFtIGZ1bmNOYW1lIE5hbWUgb2YgREcuRnVuYyAoZWl0aGVyIHNjcmlwdCBvciBwYWNrYWdlIGZ1bmN0aW9uKSB0byB1c2UgYXMgdmlldyBmb3VuZGF0aW9uXG4gICAqIEBwYXJhbSBvcHRpb25zIENvbmZpZ3VyYXRpb24gb2JqZWN0IGZvciB0aGUgdmlldy5cbiAgICovXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBmdW5jTmFtZTogc3RyaW5nLFxuICAgIHB1YmxpYyBvcHRpb25zOiB7aGlzdG9yeUVuYWJsZWQ6IGJvb2xlYW4sIGlzVGFiYmVkOiBib29sZWFufSA9IHtoaXN0b3J5RW5hYmxlZDogdHJ1ZSwgaXNUYWJiZWQ6IGZhbHNlfVxuICApIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuYm94ID0gdHJ1ZTtcblxuICAgIC8vIENoYW5naW5nIHZpZXcgYW5kIGJ1aWxkaW5nIElPIGFyZSByZWFzb25hYmxlIG9ubHkgYWZ0ZXIgRnVuY0NhbGwgaXMgbGlua2VkXG4gICAgdGhpcy5zdWJzLnB1c2goXG4gICAgICB0aGlzLm9uRnVuY0NhbGxSZWFkeS5zdWJzY3JpYmUoe1xuICAgICAgICBjb21wbGV0ZTogYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIHRoaXMuY2hhbmdlVmlld05hbWUodGhpcy5mdW5jQ2FsbC5mdW5jLmZyaWVuZGx5TmFtZSk7XG4gICAgICAgICAgdGhpcy5idWlsZCgpO1xuXG4gICAgICAgICAgaWYgKHRoaXMuZ2V0U3RhcnRJZCgpKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLm9uQmVmb3JlTG9hZFJ1bigpO1xuICAgICAgICAgICAgdGhpcy5sYXN0Q2FsbCA9IHRoaXMuZnVuY0NhbGw7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLm9uQWZ0ZXJMb2FkUnVuKHRoaXMuZnVuY0NhbGwpO1xuXG4gICAgICAgICAgICB0aGlzLnNldEFzTG9hZGVkKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLmluaXQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGFuZ2VzIHRoZSBuYW1lIG9mIHRoZSB2aWV3LiBUaGlzIG1ldGhvZCBhbHNvIGRlYWxzIHdpdGggcmFyZSBidWcgd2hlbiB2aWV3IG5hbWUgaXMgbm90IHVwZGF0ZWQgYWZ0ZXIgY2hhbmdlLlxuICAgKiBAcGFyYW0gbmV3TmFtZSBOZXcgbmFtZSBmb3IgdGhlIHZpZXdcbiAgICovXG4gIHByb3RlY3RlZCBjaGFuZ2VWaWV3TmFtZShuZXdOYW1lOiBzdHJpbmcpIHtcbiAgICAvLyBUT0RPOiBGaW5kIGEgcmVwcm9kdWNpYmxlIHNhbXBsZSBvZiB0aGUgYnVnXG4gICAgdGhpcy5uYW1lID0gbmV3TmFtZTtcbiAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdkaXYuZDQtcmliYm9uLW5hbWUnKT8ucmVwbGFjZUNoaWxkcmVuKHVpLnNwYW4oW25ld05hbWVdKSk7XG4gIH1cblxuICBwcml2YXRlIGdldFN0YXJ0SWQoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAvLyBUbyBwcmV2ZW50IGxvYWRpbmcgc2FtZSBJRCBvbiBvcGVuaW5nIGRpZmZlcmVudCBwYWNrYWdlLFxuICAgIC8vIHdlIHNob3VsZCBjaGVjayBpZiB3ZSBoYXZlIGFscmVhZHkgbG9hZGVkIHJ1biBieSB0aGlzIElEXG5cbiAgICAvL0B0cy1pZ25vcmVcbiAgICByZXR1cm4gKCFncm9rLnNoZWxsLmdldFZhcignaXNMb2FkZWQnKSkgPyBzdGFydFVybC5zZWFyY2hQYXJhbXMuZ2V0KCdpZCcpOiB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIHNldEFzTG9hZGVkKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHJldHVybiBncm9rLnNoZWxsLnNldFZhcignaXNMb2FkZWQnLCB0cnVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgY3VycmVudCBmdW5jdGlvbiBjYWxsIG9mIHRoZSB2aWV3XG4gICAqIEByZXR1cm5zIFRoZSBhY3R1YWwgZnVuY2NhbGwgYXNzb2NpYXRlZCB3aXRoIHRoZSB2aWV3XG4gICAqIEBzdGFiaWxpdHkgU3RhYmxlXG4gKi9cbiAgcHVibGljIGdldCBmdW5jQ2FsbCgpOiBERy5GdW5jQ2FsbCB7XG4gICAgcmV0dXJuIHRoaXMuX2Z1bmNDYWxsITtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgRnVuYyBvZiB0aGUgdmlld1xuICAgKiBAcmV0dXJucyBUaGUgYWN0dWFsIGZ1bmMgYXNzb2NpYXRlZCB3aXRoIHRoZSB2aWV3XG4gICAqIEBzdGFiaWxpdHkgU3RhYmxlXG4gKi9cbiAgZ2V0IGZ1bmMoKSB7XG4gICAgcmV0dXJuIHRoaXMuZnVuY0NhbGw/LmZ1bmM7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGRhdGEgb2YgbGFzdCBjYWxsIG9mIGFzc29jaWF0ZWQgZnVuY3Rpb25cbiAgICogQHJldHVybnMgVGhlIGFjdHVhbCBmdW5jIGFzc29jaWF0ZWQgd2l0aCB0aGUgdmlld1xuICAgKiBAc3RhYmlsaXR5IFN0YWJsZVxuICovXG4gIGdldCBsYXN0Q2FsbCgpIHtcbiAgICByZXR1cm4gdGhpcy5fbGFzdENhbGw7XG4gIH1cblxuICAvKipcbiAgICogU2V0IGRhdGEgb2YgbGFzdCBjYWxsIG9mIGFzc29jaWF0ZWQgZnVuY3Rpb25cbiAgICogQHN0YWJpbGl0eSBTdGFibGVcbiAqL1xuICBzZXQgbGFzdENhbGwobGFzdENhbGw6IERHLkZ1bmNDYWxsIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5fbGFzdENhbGwgPSBsYXN0Q2FsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBWaWV3IHR5cGVcbiAgICogQHN0YWJpbGl0eSBTdGFibGVcbiAqL1xuICBwdWJsaWMgZ2V0IHR5cGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fdHlwZTtcbiAgfVxuXG4gIC8qKiBFeHBvcnQgb3B0aW9ucy4gQ291bGQgYmUgb3ZlcnJpZGVuIHBhcnRpYWxseSwgdXNpbmcgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBvZiBlYWNoIG9wdGlvbi5cbiAgICAqIEBzdGFiaWxpdHkgU3RhYmxlXG4gICovXG4gIGV4cG9ydENvbmZpZzoge1xuICAgIC8qKiBPdmVycmlkZSB0byBwcm92aWRlIGN1c3RvbSBleHBvcnQgbG9naWMuXG4gICAgICAqIFRoZXJlIGlzIG5vIGRlZmF1bHQgaW1wbGVtZW50YXRpb24sIHNpbmNlLCBpbiBnZW5lcmFsLCBleHBvcnQgaXMgZGVwZW5kZW50IG9uIHRoZSBVSS5cbiAgICAgICpcbiAgICAgICogQHJldHVybnMgQmxvYiB3aXRoIGRhdGEgdG8gYmUgZXhwb3J0ZWQgaW50byB0aGUgZmlsZS5cbiAgICAgICogQHN0YWJpbGl0eSBTdGFibGVcbiAgICAqL1xuICAgIGV4cG9ydDogKChmb3JtYXQ6IHN0cmluZykgPT4gUHJvbWlzZTxCbG9iPik7XG5cblxuICAgIC8qKiBGaWxlbmFtZSBmb3IgZXhwb3J0ZWQgZmlsZXMuIE92ZXJyaWRlIGZvciBjdXN0b20gZmlsZW5hbWVzLlxuICAgICAgKiBEZWZhdWx0IGltcGxlbWVudGF0aW9uIGlzIHtAbGluayBkZWZhdWx0RXhwb3J0RmlsZW5hbWV9XG4gICAgICAqIEBwYXJhbSBmb3JtYXQgRm9ybWF0IG5hbWUgdG8gYmUgZXhwb3J0ZWRcbiAgICAgICogQHJldHVybnMgVGhlIGFjdHVhbCBmaWxlbmFtZSB0byBiZSB1c2VkIGZvciB0aGUgZ2VuZXJhdGVkIGZpbGUuXG4gICAgICAqIEBzdGFiaWxpdHkgU3RhYmxlXG4gICAgKi9cbiAgICBmaWxlbmFtZTogKChmb3JtYXQ6IHN0cmluZykgPT4gc3RyaW5nKTtcblxuICAgIC8qKiBPdmVycmlkZSB0byBwcm92aWRlIGN1c3RvbSBsaXN0IG9mIHN1cHBvcnRlZCBleHBvcnQgZm9ybWF0cy5cbiAgICAgKiBEZWZhdWx0IGltcGxlbWVudGF0aW9uIGlzIHtAbGluayBkZWZhdWx0U3VwcG9ydGVkRXhwb3J0Rm9ybWF0c31cbiAgICAgKiBUaGVzZSBmb3JtYXRzIGFyZSBhdmFpbGFibGUgdW5kZXIgdGhlIFwiRXhwb3J0XCIgcG9wdXAgb24gdGhlIHJpYmJvbiBwYW5lbC5cbiAgICAgKiBAcmV0dXJucyBUaGUgYXJyYXkgb2YgZm9ybWF0cyBhdmFpbGFibGUgZm9yIHRoZSBleHBvcnQuXG4gICAgICogQHN0YWJpbGl0eSBTdGFibGVcbiAgICAqL1xuICAgIHN1cHBvcnRlZEZvcm1hdHM6IHN0cmluZ1tdO1xuXG4gICAgLyoqIE92ZXJyaWRlIHRvIHByb3ZpZGUgY3VzdG9tIGZpbGUgZXh0ZW5zaW9ucyBmb3IgZXhwb3J0ZWQgZm9ybWF0cy5cbiAgICAgICAqIERlZmF1bHQgaW1wbGVtZW50YXRpb24gaXMge0BsaW5rIGRlZmF1bHRTdXBwb3J0ZWRFeHBvcnRFeHRlbnNpb25zfVxuICAgICAgICogVGhlc2UgZXh0ZW5zaW9ucyBhcmUgdXNlZCBpbiBmaWxlbmFtZXMge0BsaW5rIGV4cG9ydEZpbGVuYW1lfS5cbiAgICAgICAqIEByZXR1cm5zIFRoZSBtYXBwaW5nIGJldHdlZW4gc3VwcG9ydGVkIGV4cG9ydCBmb3JtYXRzIGFuZCB0aGVpciBleHRlbnNpb25zLlxuICAgICAgICogQHN0YWJpbGl0eSBTdGFibGVcbiAgICAgKi9cbiAgICBzdXBwb3J0ZWRFeHRlbnNpb25zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICB9IHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqXG4gICAqIExpbmtzIEZ1bmNDYWxsIHRvIHRoZSB2aWV3LiBJbiBhZGRpdGlvbiwgc2V0cyBcInBhdGhcIiBhbmQgXCJuYW1lXCIgcHJvcGVydGllcyB0byBjb3JyZXNwb25kaW5nIG9uZXMuXG4gICAqIEFmdGVyIGxpbmtpbmcsIGVtaXRzIHtAbGluayB0aGlzLmZ1bmNDYWxsUmVwbGFjZWR9IGV2ZW50LlxuICAgKiBAcGFyYW0gZnVuY0NhbGwgVGhlIGFjdHVhbCBmdW5jY2FsbCB0byBiZSBhc3NvY2lhdGVkIHdpdGggdGhlIHZpZXdcbiAgICogQHN0YWJpbGl0eSBTdGFibGVcbiAqL1xuICBwdWJsaWMgbGlua0Z1bmNjYWxsKGZ1bmNDYWxsOiBERy5GdW5jQ2FsbCkge1xuICAgIGNvbnN0IGlzUHJldmlvdXNIaXN0b3JpY2FsID0gdGhpcy5fZnVuY0NhbGw/Lm9wdGlvbnNbJ2lzSGlzdG9yaWNhbCddO1xuICAgIHRoaXMuX2Z1bmNDYWxsID0gZnVuY0NhbGw7XG5cbiAgICBpZiAoIXRoaXMub3B0aW9ucy5pc1RhYmJlZCkge1xuICAgICAgaWYgKGZ1bmNDYWxsLm9wdGlvbnNbJ2lzSGlzdG9yaWNhbCddKSB7XG4gICAgICAgIGlmICghaXNQcmV2aW91c0hpc3RvcmljYWwpXG4gICAgICAgICAgdGhpcy5jaGFuZ2VWaWV3TmFtZShgJHt0aGlzLm5hbWV9IOKAlCAke2Z1bmNDYWxsLm9wdGlvbnNbJ3RpdGxlJ10gPz8gbmV3IERhdGUoZnVuY0NhbGwuc3RhcnRlZC50b1N0cmluZygpKS50b0xvY2FsZVN0cmluZygnZW4tdXMnLCB7bW9udGg6ICdzaG9ydCcsIGRheTogJ251bWVyaWMnLCBob3VyOiAnbnVtZXJpYycsIG1pbnV0ZTogJ251bWVyaWMnfSl9YCk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICB0aGlzLmNoYW5nZVZpZXdOYW1lKGAke3RoaXMubmFtZS5zdWJzdHJpbmcoMCwgKHRoaXMubmFtZS5pbmRleE9mKCcg4oCUICcpID4gMCkgPyB0aGlzLm5hbWUuaW5kZXhPZignIOKAlCAnKSA6IHVuZGVmaW5lZCl9IOKAlCAke2Z1bmNDYWxsLm9wdGlvbnNbJ3RpdGxlJ10gPz8gbmV3IERhdGUoZnVuY0NhbGwuc3RhcnRlZC50b1N0cmluZygpKS50b0xvY2FsZVN0cmluZygnZW4tdXMnLCB7bW9udGg6ICdzaG9ydCcsIGRheTogJ251bWVyaWMnLCBob3VyOiAnbnVtZXJpYycsIG1pbnV0ZTogJ251bWVyaWMnfSl9YCk7XG4gICAgICAgIHRoaXMucGF0aCA9IGA/aWQ9JHt0aGlzLl9mdW5jQ2FsbCEuaWR9YDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucGF0aCA9IGBgO1xuXG4gICAgICAgIHRoaXMuY2hhbmdlVmlld05hbWUoYCR7dGhpcy5uYW1lLnN1YnN0cmluZygwLCAodGhpcy5uYW1lLmluZGV4T2YoJyDigJQgJykgPiAwKSA/IHRoaXMubmFtZS5pbmRleE9mKCcg4oCUICcpIDogdW5kZWZpbmVkKX1gKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmZ1bmNDYWxsUmVwbGFjZWQubmV4dCh0cnVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgbG9hZHMgY29ycmVzcG9uZGluZyBGdW5jQ2FsbCBmcm9tIERCIGlmIFwiaWRcIiBwYXJhbSBpcyBwcm92aWRlZCBpbiBVUkwuXG4gICAqIEBzdGFiaWxpdHkgU3RhYmxlXG4gICovXG4gIHByb3RlY3RlZCBhc3luYyBsb2FkRnVuY0NhbGxCeUlkKCkge1xuICAgIHVpLnNldFVwZGF0ZUluZGljYXRvcih0aGlzLnJvb3QsIHRydWUpO1xuXG4gICAgY29uc3QgcnVuSWQgPSB0aGlzLmdldFN0YXJ0SWQoKTtcbiAgICBpZiAocnVuSWQgJiYgIXRoaXMub3B0aW9ucy5pc1RhYmJlZCkge1xuICAgICAgdGhpcy5saW5rRnVuY2NhbGwoYXdhaXQgaGlzdG9yeVV0aWxzLmxvYWRSdW4ocnVuSWQpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgZnVuYzogREcuRnVuYyA9IGF3YWl0IGdyb2suZnVuY3Rpb25zLmV2YWwodGhpcy5mdW5jTmFtZSk7XG4gICAgICB0aGlzLmxpbmtGdW5jY2FsbChmdW5jLnByZXBhcmUoe30pKTtcbiAgICB9XG5cbiAgICB1aS5zZXRVcGRhdGVJbmRpY2F0b3IodGhpcy5yb290LCBmYWxzZSk7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIGZvciBhbnkgYXN5bmMgbG9naWMgdGhhdCBjb3VsZCBub3QgYmUgcGxhY2VkIGluIHRoZSBjb25zdHJ1Y3RvciBkaXJlY3RseS5cbiAgICogSXQgaXMgb25seSBjYWxsZWQgaW4gdGhlIGNvbnN0cnVjdG9yLCBidXQgbm90IGF3YWl0ZWQuXG4gICAqIEEgc29vbiBhcyB7QGxpbmsgdGhpcy5mdW5jQ2FsbH0gaXMgc2V0LCB7QGxpbmsgdGhpcy5vbkZ1bmNDYWxsUmVhZHl9IGlzIGVtaXR0ZWQuXG4gICAqIEBzdGFiaWxpdHkgU3RhYmxlXG4gKi9cbiAgcHVibGljIGFzeW5jIGluaXQoKSB7XG4gICAgYXdhaXQgdGhpcy5sb2FkRnVuY0NhbGxCeUlkKCk7XG5cbiAgICB0aGlzLm9uRnVuY0NhbGxSZWFkeS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIE92ZXJyaWRlIHRvIGNyZWF0ZSBhIGZ1bGx5IGN1c3RvbSBVSSBpbmNsdWRpbmcgcmliYm9uIG1lbnVzIGFuZCBwYW5lbHNcbiAgICogQHN0YWJpbGl0eSBTdGFibGVcbiAqL1xuICBwdWJsaWMgYnVpbGQoKTogdm9pZCB7XG4gICAgdWkuZW1wdHkodGhpcy5yb290KTtcbiAgICB0aGlzLnJvb3QuYXBwZW5kQ2hpbGQodGhpcy5idWlsZElPKCkpO1xuXG4gICAgaWYgKHRoaXMub3B0aW9ucy5oaXN0b3J5RW5hYmxlZCkgdGhpcy5idWlsZEhpc3RvcnlCbG9jaygpO1xuICAgIHRoaXMuYnVpbGRSaWJib25NZW51KCk7XG4gICAgdGhpcy5idWlsZFJpYmJvblBhbmVscygpO1xuICB9XG5cbiAgLyoqXG4gICAqIE92ZXJyaWRlIHRvIGNyZWF0ZSBhIGN1c3RvbSBpbnB1dC1vdXRwdXQgYmxvY2suXG4gICAqIEByZXR1cm5zIFRoZSBIVE1MRWxlbWVudCB3aXRoIHdob2xlIFVJIGV4Y2x1ZGluZyByaWJib24gbWVudXMgYW5kIHBhbmVsc1xuICAgKiBAc3RhYmlsaXR5IFN0YWJsZVxuICovXG4gIHB1YmxpYyBhYnN0cmFjdCBidWlsZElPKCk6IEhUTUxFbGVtZW50O1xuXG4gIC8qKlxuICAgKiBPdmVycmlkZSB0byBjcmVhdGUgYSBjdXN0b20gaGlzdG9yaWNhbCBydW5zIGNvbnRyb2wuXG4gICAqIEByZXR1cm5zIFRoZSBIVE1MRWxlbWVudCB3aXRoIGhpc3RvcnkgYmxvY2sgVUlcbiAgICogQHN0YWJpbGl0eSBTdGFibGVcbiAqL1xuICBwdWJsaWMgYnVpbGRIaXN0b3J5QmxvY2soKTogSFRNTEVsZW1lbnQge1xuICAgIGNvbnN0IG5ld0hpc3RvcnlCbG9jayA9IFVpVXRpbHMuaGlzdG9yeVBhbmVsKHRoaXMuZnVuYyEpO1xuXG4gICAgdGhpcy5zdWJzLnB1c2goXG4gICAgICBuZXdIaXN0b3J5QmxvY2sub25SdW5DaG9zZW4uc3Vic2NyaWJlKGFzeW5jIChpZCkgPT4gdGhpcy5saW5rRnVuY2NhbGwoYXdhaXQgdGhpcy5sb2FkUnVuKGlkKSkpXG4gICAgKTtcblxuICAgIHVpLmVtcHR5KHRoaXMuaGlzdG9yeVJvb3QpO1xuICAgIHRoaXMuaGlzdG9yeVJvb3Quc3R5bGUucmVtb3ZlUHJvcGVydHkoJ2p1c3RpZnktY29udGVudCcpO1xuICAgIHRoaXMuaGlzdG9yeVJvb3Quc3R5bGUud2lkdGggPSAnMTAwJSc7XG4gICAgdGhpcy5oaXN0b3J5Um9vdC5hcHBlbmQobmV3SGlzdG9yeUJsb2NrLnJvb3QpO1xuICAgIHJldHVybiBuZXdIaXN0b3J5QmxvY2sucm9vdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb29rcyBmb3Ige0BsaW5rIHN1cHBvcnRlZEV4cG9ydEZvcm1hdHN9IG1lbWJlcnMgYW5kIGNyZWF0ZXMgcmliYm9uIHBhbmVsXG4gICAqIEByZXR1cm5zIFRoZSBIVE1MRWxlbWVudHMgb2YgcmliYm9uUGFuZWxzXG4gICAqIEBzdGFiaWxpdHkgU3RhYmxlXG4gKi9cbiAgYnVpbGRSaWJib25QYW5lbHMoKTogSFRNTEVsZW1lbnRbXVtdIHtcbiAgICBjb25zdCBuZXdSaWJib25QYW5lbHM6IEhUTUxFbGVtZW50W11bXSA9IFtcbiAgICAgIFsuLi4odGhpcy5leHBvcnRDb25maWcgJiYgdGhpcy5leHBvcnRDb25maWcuc3VwcG9ydGVkRm9ybWF0cy5sZW5ndGggPiAwKSA/IFt1aS5kaXZIKFtcbiAgICAgICAgdWkuY29tYm9Qb3B1cChcbiAgICAgICAgICB1aS5pY29uRkEoJ2Fycm93LXRvLWJvdHRvbScpLFxuICAgICAgICAgIHRoaXMuZXhwb3J0Q29uZmlnLnN1cHBvcnRlZEZvcm1hdHMsXG4gICAgICAgICAgYXN5bmMgKGZvcm1hdDogc3RyaW5nKSA9PiBERy5VdGlscy5kb3dubG9hZCh0aGlzLmV4cG9ydENvbmZpZyEuZmlsZW5hbWUoZm9ybWF0KSwgYXdhaXQgdGhpcy5leHBvcnRDb25maWchLmV4cG9ydChmb3JtYXQpKSksXG4gICAgICBdKV06IFtdXG4gICAgICBdXTtcblxuICAgIGlmICh0aGlzLmZ1bmM/LmlkKSB7XG4gICAgICBjb25zdCBoaXN0b3J5QnV0dG9uID0gdWkuaWNvbkZBKCdoaXN0b3J5JywgKCkgPT4ge1xuICAgICAgICBncm9rLnNoZWxsLndpbmRvd3Muc2hvd1Byb3BlcnRpZXMgPSAhZ3Jvay5zaGVsbC53aW5kb3dzLnNob3dQcm9wZXJ0aWVzO1xuICAgICAgICBoaXN0b3J5QnV0dG9uLmNsYXNzTGlzdC50b2dnbGUoJ2Q0LWN1cnJlbnQnKTtcbiAgICAgICAgZ3Jvay5zaGVsbC5vID0gdGhpcy5oaXN0b3J5Um9vdDtcbiAgICAgIH0pO1xuXG4gICAgICBoaXN0b3J5QnV0dG9uLmNsYXNzTGlzdC5hZGQoJ2Q0LXRvZ2dsZS1idXR0b24nKTtcbiAgICAgIGlmIChncm9rLnNoZWxsLndpbmRvd3Muc2hvd1Byb3BlcnRpZXMpIGhpc3RvcnlCdXR0b24uY2xhc3NMaXN0LmFkZCgnZDQtY3VycmVudCcpO1xuXG4gICAgICBuZXdSaWJib25QYW5lbHMucHVzaChbXG4gICAgICAgIGhpc3RvcnlCdXR0b25cbiAgICAgIF0pO1xuICAgIH1cblxuICAgIHRoaXMuc2V0UmliYm9uUGFuZWxzKG5ld1JpYmJvblBhbmVscyk7XG4gICAgcmV0dXJuIG5ld1JpYmJvblBhbmVscztcbiAgfVxuXG4gIC8qKlxuICAgKiBPdmVycmlkZSB0byBjcmVhdGUgYSBjdXN0b20gcmliYm9uIG1lbnUgb24gdGhlIHRvcC5cbiAgICogQHN0YWJpbGl0eSBTdGFibGVcbiAqL1xuICBwdWJsaWMgYnVpbGRSaWJib25NZW51KCkge1xuXG4gIH1cblxuICAvKipcbiAgICogQ2FsbGVkIGJlZm9yZSBzYXZpbmcgdGhlIEZVbmNDYWxsIHJlc3VsdHMgdG8gdGhlIGhpc3RvcmljYWwgcmVzdWx0cywgcmV0dXJucyB0aGUgc2F2ZWQgY2FsbC4gU2VlIGFsc28ge0BsaW5rIHNhdmVSdW59LlxuICAgKiBAcGFyYW0gY2FsbFRvU2F2ZSBGdW5jQ2FsbCBvYmplY3QgdG8gc2F2ZVxuICAgKiBAcmV0dXJucyBTYXZlZCBGdW5jQ2FsbFxuICAgKiBAc3RhYmlsaXR5IFN0YWJsZVxuICovXG4gIHB1YmxpYyBhc3luYyBvbkJlZm9yZVNhdmVSdW4oY2FsbFRvU2F2ZTogREcuRnVuY0NhbGwpIHsgfVxuXG4gIC8qKlxuICAgKiBTYXZlcyB0aGUgY29tcHV0YXRpb24gcmVzdWx0cyB0byB0aGUgaGlzdG9yaWNhbCByZXN1bHRzLCByZXR1cm5zIHRoZSBzYXZlZCBjYWxsLiBTZWUgYWxzbyB7QGxpbmsgc2F2ZVJ1bn0uXG4gICAqIEBwYXJhbSBzYXZlZENhbGwgRnVuY0NhbGwgb2JqZWN0IHRvIHNhdmVcbiAgICogQHJldHVybnMgU2F2ZWQgRnVuY0NhbGxcbiAgICogQHN0YWJpbGl0eSBTdGFibGVcbiAqL1xuICBwdWJsaWMgYXN5bmMgb25BZnRlclNhdmVSdW4oc2F2ZWRDYWxsOiBERy5GdW5jQ2FsbCkgeyB9XG5cbiAgLyoqXG4gICAqIFNhdmVzIHRoZSBjb21wdXRhdGlvbiByZXN1bHRzIHRvIHRoZSBoaXN0b3JpY2FsIHJlc3VsdHMsIHJldHVybnMgdGhlIHNhdmVkIGNhbGwuIFNlZSBhbHNvIHtAbGluayBsb2FkUnVufS5cbiAgICogQHBhcmFtIGNhbGxUb1NhdmUgRnVuY0NhbGwgb2JqZWN0IHRvIHNhdmVcbiAgICogQHJldHVybnMgU2F2ZWQgRnVuY0NhbGxcbiAgICogQHN0YWJpbGl0eSBTdGFibGVcbiAqL1xuICBwdWJsaWMgYXN5bmMgc2F2ZVJ1bihjYWxsVG9TYXZlOiBERy5GdW5jQ2FsbCk6IFByb21pc2U8REcuRnVuY0NhbGw+IHtcbiAgICBhd2FpdCB0aGlzLm9uQmVmb3JlU2F2ZVJ1bihjYWxsVG9TYXZlKTtcbiAgICBjb25zdCBzYXZlZENhbGwgPSBhd2FpdCBoaXN0b3J5VXRpbHMuc2F2ZVJ1bihjYWxsVG9TYXZlKTtcbiAgICBzYXZlZENhbGwub3B0aW9uc1snaXNIaXN0b3JpY2FsJ10gPSBmYWxzZTtcbiAgICB0aGlzLmxpbmtGdW5jY2FsbChzYXZlZENhbGwpO1xuXG4gICAgaWYgKHRoaXMub3B0aW9ucy5oaXN0b3J5RW5hYmxlZCkgdGhpcy5idWlsZEhpc3RvcnlCbG9jaygpO1xuICAgIGlmICghdGhpcy5vcHRpb25zLmlzVGFiYmVkKSB0aGlzLnBhdGggPSBgP2lkPSR7c2F2ZWRDYWxsLmlkfWA7XG5cbiAgICBhd2FpdCB0aGlzLm9uQWZ0ZXJTYXZlUnVuKHNhdmVkQ2FsbCk7XG4gICAgcmV0dXJuIHNhdmVkQ2FsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgYmVmb3JlIGRlbGV0aW5nIHRoZSBjb21wdXRhdGlvbiByZXN1bHRzIGZyb20gaGlzdG9yeSwgcmV0dXJucyBpdHMgaWQuIFNlZSBhbHNvIHtAbGluayBsb2FkUnVufS5cbiAgICogQHBhcmFtIGNhbGxUb0RlbGV0ZSBGdW5jQ2FsbCBvYmplY3QgdG8gYmUgZGVsZXRlZFxuICAgKiBAc3RhYmlsaXR5IFN0YWJsZVxuICovXG4gIHB1YmxpYyBhc3luYyBvbkJlZm9yZURlbGV0ZVJ1bihjYWxsVG9EZWxldGU6IERHLkZ1bmNDYWxsKSB7IH1cblxuICAvKipcbiAgICogQ2FsbGVkIGFmdGVyIGRlbGV0aW5nIHRoZSBjb21wdXRhdGlvbiByZXN1bHRzIGZyb20gaGlzdG9yeSwgcmV0dXJucyBpdHMgaWQuIFNlZSBhbHNvIHtAbGluayBsb2FkUnVufS5cbiAgICogQHBhcmFtIGRlbGV0ZWRDYWxsIGRlbGV0ZWQgRnVuY0NhbGwgdmFsdWVcbiAgICogQHN0YWJpbGl0eSBTdGFibGVcbiAqL1xuICBwdWJsaWMgYXN5bmMgb25BZnRlckRlbGV0ZVJ1bihkZWxldGVkQ2FsbDogREcuRnVuY0NhbGwpIHsgfVxuXG4gIC8qKlxuICAgKiBEZWxldGVzIHRoZSBjb21wdXRhdGlvbiByZXN1bHRzIGZyb20gaGlzdG9yeSwgcmV0dXJucyBpdHMgaWQuIFNlZSBhbHNvIHtAbGluayBsb2FkUnVufS5cbiAgICogQHBhcmFtIGNhbGxUb0RlbGV0ZSBGdW5jQ2FsbCBvYmplY3QgdG8gZGVsZXRlXG4gICAqIEByZXR1cm5zIElEIG9mIGRlbGV0ZWQgaGlzdG9yaWNhbCBydW5cbiAgICogQHN0YWJpbGl0eSBTdGFibGVcbiAqL1xuXG4gIHB1YmxpYyBhc3luYyBkZWxldGVSdW4oY2FsbFRvRGVsZXRlOiBERy5GdW5jQ2FsbCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgYXdhaXQgdGhpcy5vbkJlZm9yZURlbGV0ZVJ1bihjYWxsVG9EZWxldGUpO1xuICAgIGF3YWl0IGhpc3RvcnlVdGlscy5kZWxldGVSdW4oY2FsbFRvRGVsZXRlKTtcbiAgICBhd2FpdCB0aGlzLm9uQWZ0ZXJEZWxldGVSdW4oY2FsbFRvRGVsZXRlKTtcbiAgICByZXR1cm4gY2FsbFRvRGVsZXRlLmlkO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCBiZWZvcmUgZmV0Y2hpbmcgdGhlIGhpc3RvcmljYWwgcnVuIGRhdGEgaW4ge0BsaW5rIGxvYWRSdW59LlxuICAgKiBAc3RhYmlsaXR5IFN0YWJsZVxuICovXG4gIHB1YmxpYyBhc3luYyBvbkJlZm9yZUxvYWRSdW4oKSB7fVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgYWZ0ZXIgZmV0Y2hpbmcgdGhlIGhpc3RvcmljYWwgcnVuIGRhdGEgaW4ge0BsaW5rIGxvYWRSdW59LlxuICAgKiBAcGFyYW0gZnVuY0NhbGwgRnVuY0NhbGwgZmV0Y2hlZCBmcm9tIHNlcnZlciBkdXJpbmcge0BsaW5rIGxvYWRSdW59XG4gICAqIEBzdGFiaWxpdHkgU3RhYmxlXG4gKi9cbiAgcHVibGljIGFzeW5jIG9uQWZ0ZXJMb2FkUnVuKGZ1bmNDYWxsOiBERy5GdW5jQ2FsbCkge31cblxuICAvKipcbiAgICogTG9hZHMgdGhlIHNwZWNpZmllZCBoaXN0b3JpY2FsIHJ1bi4gU2VlIGFsc28ge0BsaW5rIHNhdmVSdW59LlxuICAgKiBAcGFyYW0gZnVuY0NhbGxJZCBJRCBvZiBGdW5jQ2FsbCB0byBsb29rIGZvci4gR2V0IGl0IHVzaW5nIHtAc2VlIGZ1bmNDYWxsLmlkfSBmaWVsZFxuICAgKiBAcmV0dXJucyBGdW5jQ2FsbCBhdWdlbWVudGVkIHdpdGggaW5wdXRzJyBhbmQgb3V0cHV0cycgdmFsdWVzXG4gICAqIEBzdGFiaWxpdHkgU3RhYmxlXG4gKi9cblxuICBwdWJsaWMgYXN5bmMgbG9hZFJ1bihmdW5jQ2FsbElkOiBzdHJpbmcpOiBQcm9taXNlPERHLkZ1bmNDYWxsPiB7XG4gICAgYXdhaXQgdGhpcy5vbkJlZm9yZUxvYWRSdW4oKTtcbiAgICBjb25zdCBwdWxsZWRSdW4gPSBhd2FpdCBoaXN0b3J5VXRpbHMubG9hZFJ1bihmdW5jQ2FsbElkKTtcbiAgICB0aGlzLmxhc3RDYWxsID0gcHVsbGVkUnVuO1xuICAgIGF3YWl0IHRoaXMub25BZnRlckxvYWRSdW4ocHVsbGVkUnVuKTtcbiAgICByZXR1cm4gcHVsbGVkUnVuO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCBiZWZvcmUgYWN0dWFsIGNvbXB1dGF0aW9ucyBhcmUgbWFkZSB7QGxpbmsgcnVufS5cbiAgICogQHBhcmFtIGZ1bmNUb0NhbGwgRnVuY0NhbGwgb2JqZWN0IHRvIGJlIGNhbGxlZCB7QHNlZSBERy5GdW5jQ2FsbC5jYWxsKCl9XG4gICAqIEBzdGFiaWxpdHkgU3RhYmxlXG4gICovXG4gIHB1YmxpYyBhc3luYyBvbkJlZm9yZVJ1bihmdW5jVG9DYWxsOiBERy5GdW5jQ2FsbCkge31cblxuICAvKipcbiAgICAqIENhbGxlZCBhZnRlciBhY3R1YWwgY29tcHV0YXRpb25zIGFyZSBtYWRlIHtAbGluayBydW59LlxuICAgICogQHBhcmFtIHJ1bkZ1bmMgRnVuY0NhbGwgb2JqZWN0IGFmdGVyIGNhbGwgbWV0aG9kIHtAc2VlIERHLkZ1bmNDYWxsLmNhbGwoKX1cbiAgICAqIEBzdGFiaWxpdHkgU3RhYmxlXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgb25BZnRlclJ1bihydW5GdW5jOiBERy5GdW5jQ2FsbCkge31cblxuICAvKipcbiAgICAqIENhbGxlZCB0byBwZXJmb3JtIGFjdHVhbCBjb21wdXRhdGlvbnMuXG4gICAgKiBAc3RhYmlsaXR5IFN0YWJsZVxuICAgKi9cbiAgcHVibGljIGFzeW5jIHJ1bigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuZnVuY0NhbGwpIHRocm93IG5ldyBFcnJvcignVGhlIGNvcnJlc3BvZGluZyBmdW5jdGlvbiBpcyBub3Qgc3BlY2lmaWVkJyk7XG5cbiAgICBhd2FpdCB0aGlzLm9uQmVmb3JlUnVuKHRoaXMuZnVuY0NhbGwpO1xuICAgIGNvbnN0IHBpID0gREcuVGFza0JhclByb2dyZXNzSW5kaWNhdG9yLmNyZWF0ZSgnQ2FsY3VsYXRpbmcuLi4nKTtcbiAgICB0aGlzLmZ1bmNDYWxsLm5ld0lkKCk7XG4gICAgYXdhaXQgdGhpcy5mdW5jQ2FsbC5jYWxsKCk7IC8vIENBVVRJT046IG11dGF0ZXMgdGhlIGZ1bmNDYWxsIGZpZWxkXG4gICAgcGkuY2xvc2UoKTtcbiAgICBhd2FpdCB0aGlzLm9uQWZ0ZXJSdW4odGhpcy5mdW5jQ2FsbCk7XG5cbiAgICAvLyBJZiBhIHZpZXcgaXMgaW5jYXB1c2xhdGVkIGludG8gYSB0YWIgKGUuZy4gaW4gUGlwZWxpbmVWaWV3KSxcbiAgICAvLyB0aGVyZSBpcyBubyBuZWVkIHRvIHNhdmUgcnVuIHRpbGwgYW4gZW50aXJlIHBpcGVsaW5lIGlzIG92ZXIuXG4gICAgdGhpcy5sYXN0Q2FsbCA9IHRoaXMub3B0aW9ucy5pc1RhYmJlZCA/IHRoaXMuZnVuY0NhbGwuY2xvbmUoKSA6IGF3YWl0IHRoaXMuc2F2ZVJ1bih0aGlzLmZ1bmNDYWxsKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoaXN0b3J5Um9vdDogSFRNTERpdkVsZW1lbnQgPSB1aS5kaXZWKFtdLCB7c3R5bGU6IHsnanVzdGlmeS1jb250ZW50JzogJ2NlbnRlcid9fSk7XG5cbiAgLyoqXG4gICAgKiBEZWZhdWx0IGV4cG9ydCBmaWxlbmFtZSBnZW5lcmF0aW9uIG1ldGhvZC5cbiAgICAqIEl0IGF1dG9tYXRpY2FsbHkgcmVwbGFjZXMgYWxsIHN5bWJvbHMgdW5zdXBwb3J0ZWQgYnkgV2luZG93cyBmaWxlc3lzdGVtLlxuICAgICogQHBhcmFtIGZvcm1hdCBBIGZvcm1hdCBsaXN0ZWQgaW4ge0BsaW5rIGRlZmF1bHRTdXBwb3J0ZWRFeHBvcnRGb3JtYXRzfS5cbiAgICAqIEBzdGFiaWxpdHkgU3RhYmxlXG4gICAqL1xuICBwcm90ZWN0ZWQgZGVmYXVsdEV4cG9ydEZpbGVuYW1lID0gKGZvcm1hdDogc3RyaW5nKSA9PiB7XG4gICAgcmV0dXJuIGAke3RoaXMubmFtZX0gLSAke25ldyBEYXRlKCkudG9Mb2NhbGVTdHJpbmcoJ2VuLVVTJykucmVwbGFjZUFsbCgvOnxcXC8vZywgJy0nKX0uJHt0aGlzLmV4cG9ydENvbmZpZyEuc3VwcG9ydGVkRXh0ZW5zaW9uc1tmb3JtYXRdfWA7XG4gIH07XG5cbiAgcHJvdGVjdGVkIGRlZmF1bHRTdXBwb3J0ZWRFeHBvcnRFeHRlbnNpb25zOiAoKSA9PiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0gKCkgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICAnRXhjZWwnOiAneGxzeCdcbiAgICB9O1xuICB9O1xuXG4gIHByb3RlY3RlZCBkZWZhdWx0U3VwcG9ydGVkRXhwb3J0Rm9ybWF0cyA9ICgpID0+IHtcbiAgICByZXR1cm4gWydFeGNlbCddO1xuICB9O1xufVxuIl19
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline-view.d.ts","sourceRoot":"","sources":["pipeline-view.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAEtC,OAAO,EAAC,OAAO,EAAC,MAAM,MAAM,CAAC;AAE7B,OAAO,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAC,eAAe,EAAC,MAAM,oBAAoB,CAAC;AAEnD,OAAO,0BAA0B,CAAC;AAElC,qBAAa,YAAa,SAAQ,eAAe;IA+C7C,OAAO,CAAC,WAAW;IA9Cd,KAAK;;oBAA4C,MAAM;kBAAQ,YAAY;;MAAI;IAC/E,eAAe,uBAA8B;IAEpD,OAAO,CAAC,QAAQ,CAA8B;IAG9C,SAAS,CAAC,4BAA4B,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAIlE;IAEF,SAAS,CAAC,yBAAyB,iBAEjC;IAEF,SAAS,CAAC,kBAAkB,WAAkB,MAAM,mBAmBlD;IAEF,YAAY;;;yBArBkC,MAAM;;MA0BlD;gBAGA,QAAQ,EAAE,MAAM,EACR,WAAW,EAAE;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAC,EAAE;IAQrB,IAAI;IAwEV,OAAO;IA2BD,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IAwB1C;;;;;;OAMG;IACU,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC;CAgB/D"}
1
+ {"version":3,"file":"pipeline-view.d.ts","sourceRoot":"","sources":["pipeline-view.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAEtC,OAAO,EAAC,OAAO,EAAC,MAAM,MAAM,CAAC;AAE7B,OAAO,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAC,eAAe,EAAC,MAAM,oBAAoB,CAAC;AAEnD,OAAO,0BAA0B,CAAC;AAElC,qBAAa,YAAa,SAAQ,eAAe;IA+C7C,OAAO,CAAC,WAAW;IA9Cd,KAAK;;oBAA4C,MAAM;kBAAQ,YAAY;;MAAI;IAC/E,eAAe,uBAA8B;IAEpD,OAAO,CAAC,QAAQ,CAA8B;IAG9C,SAAS,CAAC,4BAA4B,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAIlE;IAEF,SAAS,CAAC,yBAAyB,iBAEjC;IAEF,SAAS,CAAC,kBAAkB,WAAkB,MAAM,mBAmBlD;IAEF,YAAY;;;yBArBkC,MAAM;;MA0BlD;gBAGA,QAAQ,EAAE,MAAM,EACR,WAAW,EAAE;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAC,EAAE;IAQrB,IAAI;IA0EV,OAAO;IA2BD,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IAwB1C;;;;;;OAMG;IACU,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC;CAkB/D"}
@@ -64,11 +64,11 @@ export class PipelineView extends ComputationView {
64
64
  //@ts-ignore
65
65
  this.steps[stepConfig.funcName] = {};
66
66
  });
67
- grok.functions.onAfterRunAction.pipe(filter((run) => Object.keys(this.steps).includes(run.func.nqName))).subscribe((run) => {
67
+ this.subs.push(grok.functions.onAfterRunAction.pipe(filter((run) => Object.keys(this.steps).includes(run.func.nqName))).subscribe((run) => {
68
68
  this.onStepCompleted.next(run);
69
69
  if (run.func.nqName === this.stepsConfig[this.stepsConfig.length - 1].funcName)
70
70
  this.run();
71
- });
71
+ }));
72
72
  const stepScripts = Object.keys(this.steps).map((stepNqName) => {
73
73
  const stepScript = grok.functions.eval(stepNqName);
74
74
  return stepScript;
@@ -162,7 +162,7 @@ export class PipelineView extends ComputationView {
162
162
  loadRun(funcCallId) {
163
163
  return __awaiter(this, void 0, void 0, function* () {
164
164
  const { parentRun: pulledParentRun, childRuns: pulledChildRuns } = yield historyUtils.loadChildRuns(funcCallId);
165
- this.onFuncCallReady.subscribe({
165
+ this.subs.push(this.onFuncCallReady.subscribe({
166
166
  complete: () => __awaiter(this, void 0, void 0, function* () {
167
167
  yield this.onBeforeLoadRun();
168
168
  pulledChildRuns.forEach((pulledChildRun) => __awaiter(this, void 0, void 0, function* () {
@@ -170,9 +170,9 @@ export class PipelineView extends ComputationView {
170
170
  }));
171
171
  yield this.onAfterLoadRun(pulledParentRun);
172
172
  })
173
- });
173
+ }));
174
174
  return pulledParentRun;
175
175
  });
176
176
  }
177
177
  }
178
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZWxpbmUtdmlldy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInBpcGVsaW5lLXZpZXcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsZ0NBQWdDO0FBQ2hDLE9BQU8sS0FBSyxJQUFJLE1BQU0sbUJBQW1CLENBQUM7QUFDMUMsT0FBTyxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0QyxPQUFPLEtBQUssRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3RDLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUU3QyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDbkQsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3RDLE9BQU8sMEJBQTBCLENBQUM7QUFFbEMsTUFBTSxPQUFPLFlBQWEsU0FBUSxlQUFlO0lBNkMvQyxZQUNFLFFBQWdCLEVBQ1IsV0FBaUM7UUFFekMsS0FBSyxDQUNILFFBQVEsRUFDUixFQUFDLGNBQWMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBQyxDQUN4QyxDQUFDO1FBTE0sZ0JBQVcsR0FBWCxXQUFXLENBQXNCO1FBOUNwQyxVQUFLLEdBQUcsRUFBc0UsQ0FBQztRQUMvRSxvQkFBZSxHQUFHLElBQUksT0FBTyxFQUFlLENBQUM7UUFFNUMsYUFBUSxHQUF5QixJQUFJLENBQUM7UUFFOUMsZ0VBQWdFO1FBQ3RELGlDQUE0QixHQUFpQyxHQUFHLEVBQUU7WUFDMUUsT0FBTztnQkFDTCxTQUFTLEVBQUUsS0FBSzthQUNqQixDQUFDO1FBQ0osQ0FBQyxDQUFDO1FBRVEsOEJBQXlCLEdBQUcsR0FBRyxFQUFFO1lBQ3pDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNyQixDQUFDLENB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O2FBQ0YsQ0FBQyxDQUFDO1lBQ0gsT0FBTyxlQUFlLENBQUM7UUFDekIsQ0FBQztLQUFBO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSB2YWxpZC1qc2RvYyAqL1xuaW1wb3J0ICogYXMgZ3JvayBmcm9tICdkYXRhZ3Jvay1hcGkvZ3Jvayc7XG5pbXBvcnQgKiBhcyB1aSBmcm9tICdkYXRhZ3Jvay1hcGkvdWknO1xuaW1wb3J0ICogYXMgREcgZnJvbSAnZGF0YWdyb2stYXBpL2RnJztcbmltcG9ydCBKU1ppcCBmcm9tICdqc3ppcCc7XG5pbXBvcnQge1N1YmplY3R9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtoaXN0b3J5VXRpbHN9IGZyb20gJy4vaGlzdG9yeS11dGlscyc7XG5pbXBvcnQge0Z1bmN0aW9uVmlld30gZnJvbSAnLi9mdW5jdGlvbi12aWV3JztcbmltcG9ydCB7Q29tcHV0YXRpb25WaWV3fSBmcm9tICcuL2NvbXB1dGF0aW9uLXZpZXcnO1xuaW1wb3J0IHtmaWx0ZXJ9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCAnLi4vY3NzL3BpcGVsaW5lLXZpZXcuY3NzJztcblxuZXhwb3J0IGNsYXNzIFBpcGVsaW5lVmlldyBleHRlbmRzIENvbXB1dGF0aW9uVmlldyB7XG4gIHB1YmxpYyBzdGVwcyA9IHt9IGFzIHtbc2NyaXB0TnFOYW1lOiBzdHJpbmddOiB7IGVkaXRvcjogc3RyaW5nLCB2aWV3OiBGdW5jdGlvblZpZXcgfX07XG4gIHB1YmxpYyBvblN0ZXBDb21wbGV0ZWQgPSBuZXcgU3ViamVjdDxERy5GdW5jQ2FsbD4oKTtcblxuICBwcml2YXRlIHN0ZXBUYWJzOiBERy5UYWJDb250cm9sIHwgbnVsbCA9IG51bGw7XG5cbiAgLy8gUGlwZWxpbmVWaWV3IHVuaXRlcyBzZXZlcmFsIGV4cG9ydCBmaWxlcyBpbnRvIHNpbmdsZSBaSVAgZmlsZVxuICBwcm90ZWN0ZWQgcGlwZWxpbmVWaWV3RXhwb3J0RXh0ZW5zaW9uczogKCkgPT4gUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9ICgpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgJ0FyY2hpdmUnOiAnemlwJ1xuICAgIH07XG4gIH07XG5cbiAgcHJvdGVjdGVkIHBpcGVsaW5lVmlld0V4cG9ydEZvcm1hdHMgPSAoKSA9PiB7XG4gICAgcmV0dXJuIFsnQXJjaGl2ZSddO1xuICB9O1xuXG4gIHByb3RlY3RlZCBwaXBlbGluZVZpZXdFeHBvcnQgPSBhc3luYyAoZm9ybWF0OiBzdHJpbmcpID0+IHtcbiAgICBpZiAoZm9ybWF0ICE9PSAnQXJjaGl2ZScpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoaXMgZXhwb3J0IGZvcm1hdCBpcyBub3Qgc3VwcG9ydGVkJyk7XG5cbiAgICBpZiAoIXRoaXMuc3RlcFRhYnMpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1NldCBzdGVwIHRhYnMgcGxlYXNlIGZvciBleHBvcnQnKTtcblxuICAgIGNvbnN0IHppcCA9IG5ldyBKU1ppcCgpO1xuXG4gICAgZm9yIChjb25zdCB7bnFOYW1lLCBzdGVwVmlld30gb2YgT2JqZWN0LmVudHJpZXModGhpcy5zdGVwcylcbiAgICAgIC5tYXAoKFtucU5hbWUsIHN0ZXBdKSA9PiAoe25xTmFtZSwgc3RlcFZpZXc6IHN0ZXAudmlld30pKSkge1xuICAgICAgdGhpcy5zdGVwVGFicy5jdXJyZW50UGFuZSA9IHRoaXMuc3RlcFRhYnM/LmdldFBhbmUobnFOYW1lKTtcbiAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChyKSA9PiBzZXRUaW1lb3V0KHIsIDEwMCkpO1xuICAgICAgY29uc3Qgc3RlcEJsb2IgPSBhd2FpdCBzdGVwVmlldy5leHBvcnRDb25maWchLmV4cG9ydCgnRXhjZWwnKTtcblxuICAgICAgemlwLmZpbGUoc3RlcFZpZXcuZXhwb3J0Q29uZmlnIS5maWxlbmFtZSgnRXhjZWwnKSwgc3RlcEJsb2IsIHtiaW5hcnk6IHRydWUsIGNyZWF0ZUZvbGRlcnM6IGZhbHNlfSk7XG4gICAgfTtcblxuICAgIHJldHVybiBhd2FpdCB6aXAuZ2VuZXJhdGVBc3luYyh7dHlwZTogJ2Jsb2InfSk7XG4gIH07XG5cbiAgZXhwb3J0Q29uZmlnID0ge1xuICAgIHN1cHBvcnRlZEV4dGVuc2lvbnM6IHRoaXMucGlwZWxpbmVWaWV3RXhwb3J0RXh0ZW5zaW9ucygpLFxuICAgIHN1cHBvcnRlZEZvcm1hdHM6IHRoaXMucGlwZWxpbmVWaWV3RXhwb3J0Rm9ybWF0cygpLFxuICAgIGV4cG9ydDogdGhpcy5waXBlbGluZVZpZXdFeHBvcnQsXG4gICAgZmlsZW5hbWU6IHRoaXMuZGVmYXVsdEV4cG9ydEZpbGVuYW1lLFxuICB9O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGZ1bmNOYW1lOiBzdHJpbmcsXG4gICAgcHJpdmF0ZSBzdGVwc0NvbmZpZzoge2Z1bmNOYW1lOiBzdHJpbmd9W11cbiAgKSB7XG4gICAgc3VwZXIoXG4gICAgICBmdW5jTmFtZSxcbiAgICAgIHtoaXN0b3J5RW5hYmxlZDogdHJ1ZSwgaXNUYWJiZWQ6IGZhbHNlfVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgYXN5bmMgaW5pdCgpIHtcbiAgICBhd2FpdCB0aGlzLmxvYWRGdW5jQ2FsbEJ5SWQoKTtcblxuICAgIHRoaXMuc3RlcHNDb25maWcuZm9yRWFjaCgoc3RlcENvbmZpZykgPT4ge1xuICAgICAgLy9AdHMtaWdub3JlXG4gICAgICB0aGlzLnN0ZXBzW3N0ZXBDb25maWcuZnVuY05hbWVdID0ge307XG4gICAgfSk7XG5cbiAgICBncm9rLmZ1bmN0aW9ucy5vbkFmdGVyUnVuQWN0aW9uLnBpcGUoXG4gICAgICBmaWx0ZXIoKHJ1bikgPT4gT2JqZWN0LmtleXModGhpcy5zdGVwcykuaW5jbHVkZXMocnVuLmZ1bmMubnFOYW1lKSlcbiAgICApLnN1YnNjcmliZSgocnVuKSA9PiB7XG4gICAgICB0aGlzLm9uU3RlcENvbXBsZXRlZC5uZXh0KHJ1bik7XG5cbiAgICAgIGlmIChydW4uZnVuYy5ucU5hbWUgPT09IHRoaXMuc3RlcHNDb25maWdbdGhpcy5zdGVwc0NvbmZpZy5sZW5ndGgtMV0uZnVuY05hbWUpIHRoaXMucnVuKCk7XG4gICAgfSk7XG5cbiAgICBjb25zdCBzdGVwU2NyaXB0cyA9IE9iamVjdC5rZXlzKHRoaXMuc3RlcHMpLm1hcCgoc3RlcE5xTmFtZSkgPT4ge1xuICAgICAgY29uc3Qgc3RlcFNjcmlwdCA9IChncm9rLmZ1bmN0aW9ucy5ldmFsKHN0ZXBOcU5hbWUpIGFzIFByb21pc2U8REcuRnVuYz4pO1xuICAgICAgcmV0dXJuIHN0ZXBTY3JpcHQ7XG4gICAgfSk7XG4gICAgY29uc3QgYWxsU3RlcHNMb2FkaW5nID0gUHJvbWlzZS5hbGwoc3RlcFNjcmlwdHMpIGFzIFByb21pc2U8REcuU2NyaXB0W10+O1xuICAgIHRoaXMucm9vdC5jbGFzc0xpc3QucmVtb3ZlKCd1aS1wYW5lbCcpO1xuXG4gICAgY29uc3QgbG9hZGVkU2NyaXB0cyA9IGF3YWl0IGFsbFN0ZXBzTG9hZGluZztcblxuICAgIGNvbnN0IGVkaXRvckZ1bmNzID0ge30gYXMge1tlZGl0b3I6IHN0cmluZ106IERHLkZ1bmN9O1xuXG4gICAgY29uc3QgRURJVE9SX1RBRyA9ICdlZGl0b3I6JyBhcyBjb25zdDtcbiAgICBjb25zdCBORVdMSU5FID0gJ1xcbicgYXMgY29uc3Q7XG4gICAgY29uc3QgREVGQVVMVF9FRElUT1IgPSAnQ29tcHV0ZTpQaXBlbGluZVN0ZXBFZGl0b3InO1xuXG4gICAgY29uc3QgZXh0cmFjdEVkaXRvciA9IChzY3JpcHQ6IERHLlNjcmlwdCkgPT4ge1xuICAgICAgY29uc3Qgc2NyaXB0Q29kZSA9IHNjcmlwdC5zY3JpcHQ7XG4gICAgICBjb25zdCBlZGl0b3JUYWdJbmRleCA9IHNjcmlwdENvZGUuaW5kZXhPZihFRElUT1JfVEFHKTtcbiAgICAgIGlmIChlZGl0b3JUYWdJbmRleCA8IDApXG4gICAgICAgIHJldHVybiBERUZBVUxUX0VESVRPUjtcblxuICAgICAgY29uc3QgbmV3bGluZUluZGV4ID0gc2NyaXB0Q29kZS5pbmRleE9mKE5FV0xJTkUsIGVkaXRvclRhZ0luZGV4KTtcbiAgICAgIGNvbnN0IGVkaXRvckZ1bmNOYW1lID0gc2NyaXB0Q29kZS5zdWJzdHJpbmcoZWRpdG9yVGFnSW5kZXggKyBFRElUT1JfVEFHLmxlbmd0aCwgbmV3bGluZUluZGV4KS50cmltKCk7XG5cbiAgICAgIHJldHVybiBlZGl0b3JGdW5jTmFtZTtcbiAgICB9O1xuXG4gICAgY29uc3QgZWRpdG9yc0xvYWRpbmcgPSBsb2FkZWRTY3JpcHRzLm1hcChhc3luYyAobG9hZGVkU2NyaXB0KSA9PiB7XG4gICAgICAvLyBUTyBETzogcmVwbGFjZSBmb3IgdHlwZSBndWFyZFxuICAgICAgY29uc3QgZWRpdG9yTmFtZSA9IChsb2FkZWRTY3JpcHQuc2NyaXB0KSA/IGV4dHJhY3RFZGl0b3IobG9hZGVkU2NyaXB0KTogREVGQVVMVF9FRElUT1I7XG4gICAgICBpZiAoIWVkaXRvckZ1bmNzW2VkaXRvck5hbWVdKVxuICAgICAgICBlZGl0b3JGdW5jc1tlZGl0b3JOYW1lXSA9IGF3YWl0KGdyb2suZnVuY3Rpb25zLmV2YWwoZWRpdG9yTmFtZS5zcGxpdCgnICcpLmpvaW4oJycpKSBhcyBQcm9taXNlPERHLkZ1bmM+KTtcbiAgICAgIHRoaXMuc3RlcHNbbG9hZGVkU2NyaXB0Lm5xTmFtZV0uZWRpdG9yID0gZWRpdG9yTmFtZTtcblxuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgIH0pO1xuXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoZWRpdG9yc0xvYWRpbmcpO1xuXG4gICAgY29uc3Qgdmlld3NMb2FkaW5nID0gbG9hZGVkU2NyaXB0cy5tYXAoYXN5bmMgKGxvYWRlZFNjcmlwdCkgPT4ge1xuICAgICAgY29uc3Qgc2NyaXB0Q2FsbDogREcuRnVuY0NhbGwgPSBsb2FkZWRTY3JpcHQucHJlcGFyZSgpO1xuXG4gICAgICB0aGlzLnN0ZXBzW2xvYWRlZFNjcmlwdC5ucU5hbWVdLnZpZXcgPVxuICAgICAgICBhd2FpdCBlZGl0b3JGdW5jc1t0aGlzLnN0ZXBzW2xvYWRlZFNjcmlwdC5ucU5hbWVdLmVkaXRvcl0uYXBwbHkoeydjYWxsJzogc2NyaXB0Q2FsbH0pIGFzIEZ1bmN0aW9uVmlldztcblxuICAgICAgaWYgKCF0aGlzLnN0ZXBzW2xvYWRlZFNjcmlwdC5ucU5hbWVdLnZpZXcub25GdW5jQ2FsbFJlYWR5LnZhbHVlKSB7XG4gICAgICAgIGNvbnN0IHByb20gPSB0aGlzLnN0ZXBzW2xvYWRlZFNjcmlwdC5ucU5hbWVdLnZpZXcub25GdW5jQ2FsbFJlYWR5LnRvUHJvbWlzZSgpO1xuICAgICAgICByZXR1cm4gcHJvbTtcbiAgICAgIH0gZWxzZSB7IHJldHVybiBQcm9taXNlLnJlc29sdmUoKTsgfVxuICAgIH0pO1xuXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwodmlld3NMb2FkaW5nKTtcblxuICAgIHRoaXMub25GdW5jQ2FsbFJlYWR5LmNvbXBsZXRlKCk7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgYnVpbGRJTygpIHtcbiAgICBjb25zdCB0YWJzID0gT2JqZWN0LmVudHJpZXModGhpcy5zdGVwcylcbiAgICAgIC5yZWR1Y2UoKHByZXYsIFtmdW5jTmFtZSwgc3RlcF0pID0+ICh7XG4gICAgICAgIC4uLnByZXYsXG4gICAgICAgIFtmdW5jTmFtZV06IHN0ZXAudmlldy5yb290XG4gICAgICB9KSwge30gYXMgUmVjb3JkPHN0cmluZywgSFRNTEVsZW1lbnQ+KTtcblxuICAgIGNvbnN0IHBpcGVsaW5lVGFicyA9IHVpLnRhYkNvbnRyb2wodGFicyk7XG5cbiAgICBjb25zdCB0YWJzTGluZSA9IHBpcGVsaW5lVGFicy5wYW5lc1swXS5oZWFkZXIucGFyZW50RWxlbWVudCE7XG4gICAgdGFic0xpbmUuY2xhc3NMaXN0LmFkZCgnZDQtcmliYm9uJywgJ3BpcGVsaW5lLXZpZXcnKTtcbiAgICB0YWJzTGluZS5jbGFzc0xpc3QucmVtb3ZlKCdkNC10YWItaGVhZGVyLXN0cmlwZScpO1xuICAgIHRhYnNMaW5lLmZpcnN0Q2hpbGQhLnJlbW92ZSgpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGlwZWxpbmVUYWJzLnBhbmVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBwaXBlbGluZVRhYnMucGFuZXNbaV0uaGVhZGVyLmNsYXNzTGlzdC5hZGQoJ2Q0LXJpYmJvbi1uYW1lJyk7XG4gICAgICBwaXBlbGluZVRhYnMucGFuZXNbaV0uaGVhZGVyLmNsYXNzTGlzdC5yZW1vdmUoJ2Q0LXRhYi1oZWFkZXInKTtcbiAgICB9XG4gICAgcGlwZWxpbmVUYWJzLnBhbmVzWzBdLmhlYWRlci5zdHlsZS5tYXJnaW5MZWZ0ID0gJzEycHgnO1xuXG4gICAgcGlwZWxpbmVUYWJzLnJvb3Quc3R5bGUuaGVpZ2h0ID0gJzEwMCUnO1xuICAgIHBpcGVsaW5lVGFicy5yb290LnN0eWxlLndpZHRoID0gJzEwMCUnO1xuXG4gICAgdGhpcy5zdGVwVGFicyA9IHBpcGVsaW5lVGFicztcblxuICAgIHJldHVybiBwaXBlbGluZVRhYnMucm9vdDtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBhc3luYyBydW4oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLmZ1bmNDYWxsKSB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBjb3JyZXNwb2RpbmcgZnVuY3Rpb24gaXMgbm90IHNwZWNpZmllZCcpO1xuXG4gICAgYXdhaXQgdGhpcy5vbkJlZm9yZVJ1bih0aGlzLmZ1bmNDYWxsKTtcbiAgICBjb25zdCBwaSA9IERHLlRhc2tCYXJQcm9ncmVzc0luZGljYXRvci5jcmVhdGUoJ0NhbGN1bGF0aW5nLi4uJyk7XG4gICAgdGhpcy5mdW5jQ2FsbC5uZXdJZCgpO1xuICAgIGF3YWl0IHRoaXMuZnVuY0NhbGwuY2FsbCgpOyAvLyBtdXRhdGVzIHRoZSBmdW5jQ2FsbCBmaWVsZFxuICAgIHBpLmNsb3NlKCk7XG5cbiAgICBPYmplY3QudmFsdWVzKHRoaXMuc3RlcHMpXG4gICAgICAuZm9yRWFjaChhc3luYyAoc3RlcCkgPT4ge1xuICAgICAgICBjb25zdCBzY3JpcHRDYWxsID0gc3RlcC52aWV3LmZ1bmNDYWxsO1xuXG4gICAgICAgIHNjcmlwdENhbGwub3B0aW9uc1sncGFyZW50Q2FsbElkJ10gPSB0aGlzLmZ1bmNDYWxsIS5pZDtcblxuICAgICAgICB0aGlzLnN0ZXBzW3NjcmlwdENhbGwuZnVuYy5ucU5hbWVdLnZpZXcubGFzdENhbGwgPVxuICAgICAgICAgIGF3YWl0IHRoaXMuc3RlcHNbc2NyaXB0Q2FsbC5mdW5jLm5xTmFtZV0udmlldy5zYXZlUnVuKHNjcmlwdENhbGwpO1xuICAgICAgfSk7XG5cbiAgICBhd2FpdCB0aGlzLm9uQWZ0ZXJSdW4odGhpcy5mdW5jQ2FsbCk7XG5cbiAgICB0aGlzLmxhc3RDYWxsID0gYXdhaXQgdGhpcy5zYXZlUnVuKHRoaXMuZnVuY0NhbGwpO1xuICB9XG5cbiAgLyoqXG4gICAqIE92ZXJyaWRlZCB0byB1c2Uge0BsaW5rIGxvYWRDaGlsZFJ1bnN9IGR1cmluZyBydW4gbG9hZC5cbiAgICogVGhpcyBpbXBsZW1lbnRhdGlvbiB0YWtlcyBcInBhcmVudENhbGxJZFwiIGFuZCBsb29rcyBmb3IgdGhlIGZ1bmNDYWxscyB3aXRoIG9wdGlvbnMucGFyZW50Q2FsbElkID0gcGFyZW50Q2FsbElkLlxuICAgKiBFYWNoIGNoaWxkIHJ1biBpcyByZWxhdGVkIHRvIHRoZSBwYXJ0aWN1bGFyIHBpcGVsaW5lIHN0ZXAuXG4gICAqIEBwYXJhbSBmdW5jQ2FsbElkIElEIG9mIHRoZSBwYXJlbnQgRnVuY0NhbGxcbiAgICogQHJldHVybnMgUGFyZW50IEZ1bmNDYWxsXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgbG9hZFJ1bihmdW5jQ2FsbElkOiBzdHJpbmcpOiBQcm9taXNlPERHLkZ1bmNDYWxsPiB7XG4gICAgY29uc3Qge3BhcmVudFJ1bjogcHVsbGVkUGFyZW50UnVuLCBjaGlsZFJ1bnM6IHB1bGxlZENoaWxkUnVuc30gPSBhd2FpdCBoaXN0b3J5VXRpbHMubG9hZENoaWxkUnVucyhmdW5jQ2FsbElkKTtcblxuICAgIHRoaXMub25GdW5jQ2FsbFJlYWR5LnN1YnNjcmliZSh7XG4gICAgICBjb21wbGV0ZTogYXN5bmMgKCkgPT4ge1xuICAgICAgICBhd2FpdCB0aGlzLm9uQmVmb3JlTG9hZFJ1bigpO1xuXG4gICAgICAgIHB1bGxlZENoaWxkUnVucy5mb3JFYWNoKGFzeW5jIChwdWxsZWRDaGlsZFJ1bikgPT4ge1xuICAgICAgICAgIHRoaXMuc3RlcHNbcHVsbGVkQ2hpbGRSdW4uZnVuYy5ucU5hbWVdLnZpZXcubG9hZFJ1bihwdWxsZWRDaGlsZFJ1bi5pZCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGF3YWl0IHRoaXMub25BZnRlckxvYWRSdW4ocHVsbGVkUGFyZW50UnVuKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcHVsbGVkUGFyZW50UnVuO1xuICB9XG59XG4iXX0=
178
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZWxpbmUtdmlldy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInBpcGVsaW5lLXZpZXcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsZ0NBQWdDO0FBQ2hDLE9BQU8sS0FBSyxJQUFJLE1BQU0sbUJBQW1CLENBQUM7QUFDMUMsT0FBTyxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0QyxPQUFPLEtBQUssRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3RDLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUU3QyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDbkQsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3RDLE9BQU8sMEJBQTBCLENBQUM7QUFFbEMsTUFBTSxPQUFPLFlBQWEsU0FBUSxlQUFlO0lBNkMvQyxZQUNFLFFBQWdCLEVBQ1IsV0FBaUM7UUFFekMsS0FBSyxDQUNILFFBQVEsRUFDUixFQUFDLGNBQWMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBQyxDQUN4QyxDQUFDO1FBTE0sZ0JBQVcsR0FBWCxXQUFXLENBQXNCO1FBOUNwQyxVQUFLLEdBQUcsRUFBc0UsQ0FBQztRQUMvRSxvQkFBZSxHQUFHLElBQUksT0FBTyxFQUFlLENBQUM7UUFFNUMsYUFBUSxHQUF5QixJQUFJLENBQUM7UUFFOUMsZ0VBQWdFO1FBQ3RELGlDQUE0QixHQUFpQyxHQUFHLEVBQUU7WUFDMUUsT0FBTztnQkFDTCxTQUFTLEVBQUUsS0FBSzthQUNqQixDQUFDO1FBQ0osQ0FBQyxDQUFDO1FBRVEsOEJBQXlCLEdBQUcsR0FBRyxFQUFFO1lBQ3pDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNyQixDQUFDLENB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QUM7b0JBRUgsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQyxDQUFDO2dCQUM3QyxDQUFDLENBQUE7YUFDRixDQUFDLENBQ0gsQ0FBQztZQUNGLE9BQU8sZUFBZSxDQUFDO1FBQ3pCLENBQUM7S0FBQTtDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgdmFsaWQtanNkb2MgKi9cbmltcG9ydCAqIGFzIGdyb2sgZnJvbSAnZGF0YWdyb2stYXBpL2dyb2snO1xuaW1wb3J0ICogYXMgdWkgZnJvbSAnZGF0YWdyb2stYXBpL3VpJztcbmltcG9ydCAqIGFzIERHIGZyb20gJ2RhdGFncm9rLWFwaS9kZyc7XG5pbXBvcnQgSlNaaXAgZnJvbSAnanN6aXAnO1xuaW1wb3J0IHtTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7aGlzdG9yeVV0aWxzfSBmcm9tICcuL2hpc3RvcnktdXRpbHMnO1xuaW1wb3J0IHtGdW5jdGlvblZpZXd9IGZyb20gJy4vZnVuY3Rpb24tdmlldyc7XG5pbXBvcnQge0NvbXB1dGF0aW9uVmlld30gZnJvbSAnLi9jb21wdXRhdGlvbi12aWV3JztcbmltcG9ydCB7ZmlsdGVyfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgJy4uL2Nzcy9waXBlbGluZS12aWV3LmNzcyc7XG5cbmV4cG9ydCBjbGFzcyBQaXBlbGluZVZpZXcgZXh0ZW5kcyBDb21wdXRhdGlvblZpZXcge1xuICBwdWJsaWMgc3RlcHMgPSB7fSBhcyB7W3NjcmlwdE5xTmFtZTogc3RyaW5nXTogeyBlZGl0b3I6IHN0cmluZywgdmlldzogRnVuY3Rpb25WaWV3IH19O1xuICBwdWJsaWMgb25TdGVwQ29tcGxldGVkID0gbmV3IFN1YmplY3Q8REcuRnVuY0NhbGw+KCk7XG5cbiAgcHJpdmF0ZSBzdGVwVGFiczogREcuVGFiQ29udHJvbCB8IG51bGwgPSBudWxsO1xuXG4gIC8vIFBpcGVsaW5lVmlldyB1bml0ZXMgc2V2ZXJhbCBleHBvcnQgZmlsZXMgaW50byBzaW5nbGUgWklQIGZpbGVcbiAgcHJvdGVjdGVkIHBpcGVsaW5lVmlld0V4cG9ydEV4dGVuc2lvbnM6ICgpID0+IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSAoKSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgICdBcmNoaXZlJzogJ3ppcCdcbiAgICB9O1xuICB9O1xuXG4gIHByb3RlY3RlZCBwaXBlbGluZVZpZXdFeHBvcnRGb3JtYXRzID0gKCkgPT4ge1xuICAgIHJldHVybiBbJ0FyY2hpdmUnXTtcbiAgfTtcblxuICBwcm90ZWN0ZWQgcGlwZWxpbmVWaWV3RXhwb3J0ID0gYXN5bmMgKGZvcm1hdDogc3RyaW5nKSA9PiB7XG4gICAgaWYgKGZvcm1hdCAhPT0gJ0FyY2hpdmUnKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGlzIGV4cG9ydCBmb3JtYXQgaXMgbm90IHN1cHBvcnRlZCcpO1xuXG4gICAgaWYgKCF0aGlzLnN0ZXBUYWJzKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdTZXQgc3RlcCB0YWJzIHBsZWFzZSBmb3IgZXhwb3J0Jyk7XG5cbiAgICBjb25zdCB6aXAgPSBuZXcgSlNaaXAoKTtcblxuICAgIGZvciAoY29uc3Qge25xTmFtZSwgc3RlcFZpZXd9IG9mIE9iamVjdC5lbnRyaWVzKHRoaXMuc3RlcHMpXG4gICAgICAubWFwKChbbnFOYW1lLCBzdGVwXSkgPT4gKHtucU5hbWUsIHN0ZXBWaWV3OiBzdGVwLnZpZXd9KSkpIHtcbiAgICAgIHRoaXMuc3RlcFRhYnMuY3VycmVudFBhbmUgPSB0aGlzLnN0ZXBUYWJzPy5nZXRQYW5lKG5xTmFtZSk7XG4gICAgICBhd2FpdCBuZXcgUHJvbWlzZSgocikgPT4gc2V0VGltZW91dChyLCAxMDApKTtcbiAgICAgIGNvbnN0IHN0ZXBCbG9iID0gYXdhaXQgc3RlcFZpZXcuZXhwb3J0Q29uZmlnIS5leHBvcnQoJ0V4Y2VsJyk7XG5cbiAgICAgIHppcC5maWxlKHN0ZXBWaWV3LmV4cG9ydENvbmZpZyEuZmlsZW5hbWUoJ0V4Y2VsJyksIHN0ZXBCbG9iLCB7YmluYXJ5OiB0cnVlLCBjcmVhdGVGb2xkZXJzOiBmYWxzZX0pO1xuICAgIH07XG5cbiAgICByZXR1cm4gYXdhaXQgemlwLmdlbmVyYXRlQXN5bmMoe3R5cGU6ICdibG9iJ30pO1xuICB9O1xuXG4gIGV4cG9ydENvbmZpZyA9IHtcbiAgICBzdXBwb3J0ZWRFeHRlbnNpb25zOiB0aGlzLnBpcGVsaW5lVmlld0V4cG9ydEV4dGVuc2lvbnMoKSxcbiAgICBzdXBwb3J0ZWRGb3JtYXRzOiB0aGlzLnBpcGVsaW5lVmlld0V4cG9ydEZvcm1hdHMoKSxcbiAgICBleHBvcnQ6IHRoaXMucGlwZWxpbmVWaWV3RXhwb3J0LFxuICAgIGZpbGVuYW1lOiB0aGlzLmRlZmF1bHRFeHBvcnRGaWxlbmFtZSxcbiAgfTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBmdW5jTmFtZTogc3RyaW5nLFxuICAgIHByaXZhdGUgc3RlcHNDb25maWc6IHtmdW5jTmFtZTogc3RyaW5nfVtdXG4gICkge1xuICAgIHN1cGVyKFxuICAgICAgZnVuY05hbWUsXG4gICAgICB7aGlzdG9yeUVuYWJsZWQ6IHRydWUsIGlzVGFiYmVkOiBmYWxzZX1cbiAgICApO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGFzeW5jIGluaXQoKSB7XG4gICAgYXdhaXQgdGhpcy5sb2FkRnVuY0NhbGxCeUlkKCk7XG5cbiAgICB0aGlzLnN0ZXBzQ29uZmlnLmZvckVhY2goKHN0ZXBDb25maWcpID0+IHtcbiAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgdGhpcy5zdGVwc1tzdGVwQ29uZmlnLmZ1bmNOYW1lXSA9IHt9O1xuICAgIH0pO1xuXG4gICAgdGhpcy5zdWJzLnB1c2goXG4gICAgICBncm9rLmZ1bmN0aW9ucy5vbkFmdGVyUnVuQWN0aW9uLnBpcGUoXG4gICAgICAgIGZpbHRlcigocnVuKSA9PiBPYmplY3Qua2V5cyh0aGlzLnN0ZXBzKS5pbmNsdWRlcyhydW4uZnVuYy5ucU5hbWUpKVxuICAgICAgKS5zdWJzY3JpYmUoKHJ1bikgPT4ge1xuICAgICAgICB0aGlzLm9uU3RlcENvbXBsZXRlZC5uZXh0KHJ1bik7XG5cbiAgICAgICAgaWYgKHJ1bi5mdW5jLm5xTmFtZSA9PT0gdGhpcy5zdGVwc0NvbmZpZ1t0aGlzLnN0ZXBzQ29uZmlnLmxlbmd0aC0xXS5mdW5jTmFtZSkgdGhpcy5ydW4oKTtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIGNvbnN0IHN0ZXBTY3JpcHRzID0gT2JqZWN0LmtleXModGhpcy5zdGVwcykubWFwKChzdGVwTnFOYW1lKSA9PiB7XG4gICAgICBjb25zdCBzdGVwU2NyaXB0ID0gKGdyb2suZnVuY3Rpb25zLmV2YWwoc3RlcE5xTmFtZSkgYXMgUHJvbWlzZTxERy5GdW5jPik7XG4gICAgICByZXR1cm4gc3RlcFNjcmlwdDtcbiAgICB9KTtcbiAgICBjb25zdCBhbGxTdGVwc0xvYWRpbmcgPSBQcm9taXNlLmFsbChzdGVwU2NyaXB0cykgYXMgUHJvbWlzZTxERy5TY3JpcHRbXT47XG4gICAgdGhpcy5yb290LmNsYXNzTGlzdC5yZW1vdmUoJ3VpLXBhbmVsJyk7XG5cbiAgICBjb25zdCBsb2FkZWRTY3JpcHRzID0gYXdhaXQgYWxsU3RlcHNMb2FkaW5nO1xuXG4gICAgY29uc3QgZWRpdG9yRnVuY3MgPSB7fSBhcyB7W2VkaXRvcjogc3RyaW5nXTogREcuRnVuY307XG5cbiAgICBjb25zdCBFRElUT1JfVEFHID0gJ2VkaXRvcjonIGFzIGNvbnN0O1xuICAgIGNvbnN0IE5FV0xJTkUgPSAnXFxuJyBhcyBjb25zdDtcbiAgICBjb25zdCBERUZBVUxUX0VESVRPUiA9ICdDb21wdXRlOlBpcGVsaW5lU3RlcEVkaXRvcic7XG5cbiAgICBjb25zdCBleHRyYWN0RWRpdG9yID0gKHNjcmlwdDogREcuU2NyaXB0KSA9PiB7XG4gICAgICBjb25zdCBzY3JpcHRDb2RlID0gc2NyaXB0LnNjcmlwdDtcbiAgICAgIGNvbnN0IGVkaXRvclRhZ0luZGV4ID0gc2NyaXB0Q29kZS5pbmRleE9mKEVESVRPUl9UQUcpO1xuICAgICAgaWYgKGVkaXRvclRhZ0luZGV4IDwgMClcbiAgICAgICAgcmV0dXJuIERFRkFVTFRfRURJVE9SO1xuXG4gICAgICBjb25zdCBuZXdsaW5lSW5kZXggPSBzY3JpcHRDb2RlLmluZGV4T2YoTkVXTElORSwgZWRpdG9yVGFnSW5kZXgpO1xuICAgICAgY29uc3QgZWRpdG9yRnVuY05hbWUgPSBzY3JpcHRDb2RlLnN1YnN0cmluZyhlZGl0b3JUYWdJbmRleCArIEVESVRPUl9UQUcubGVuZ3RoLCBuZXdsaW5lSW5kZXgpLnRyaW0oKTtcblxuICAgICAgcmV0dXJuIGVkaXRvckZ1bmNOYW1lO1xuICAgIH07XG5cbiAgICBjb25zdCBlZGl0b3JzTG9hZGluZyA9IGxvYWRlZFNjcmlwdHMubWFwKGFzeW5jIChsb2FkZWRTY3JpcHQpID0+IHtcbiAgICAgIC8vIFRPIERPOiByZXBsYWNlIGZvciB0eXBlIGd1YXJkXG4gICAgICBjb25zdCBlZGl0b3JOYW1lID0gKGxvYWRlZFNjcmlwdC5zY3JpcHQpID8gZXh0cmFjdEVkaXRvcihsb2FkZWRTY3JpcHQpOiBERUZBVUxUX0VESVRPUjtcbiAgICAgIGlmICghZWRpdG9yRnVuY3NbZWRpdG9yTmFtZV0pXG4gICAgICAgIGVkaXRvckZ1bmNzW2VkaXRvck5hbWVdID0gYXdhaXQoZ3Jvay5mdW5jdGlvbnMuZXZhbChlZGl0b3JOYW1lLnNwbGl0KCcgJykuam9pbignJykpIGFzIFByb21pc2U8REcuRnVuYz4pO1xuICAgICAgdGhpcy5zdGVwc1tsb2FkZWRTY3JpcHQubnFOYW1lXS5lZGl0b3IgPSBlZGl0b3JOYW1lO1xuXG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgfSk7XG5cbiAgICBhd2FpdCBQcm9taXNlLmFsbChlZGl0b3JzTG9hZGluZyk7XG5cbiAgICBjb25zdCB2aWV3c0xvYWRpbmcgPSBsb2FkZWRTY3JpcHRzLm1hcChhc3luYyAobG9hZGVkU2NyaXB0KSA9PiB7XG4gICAgICBjb25zdCBzY3JpcHRDYWxsOiBERy5GdW5jQ2FsbCA9IGxvYWRlZFNjcmlwdC5wcmVwYXJlKCk7XG5cbiAgICAgIHRoaXMuc3RlcHNbbG9hZGVkU2NyaXB0Lm5xTmFtZV0udmlldyA9XG4gICAgICAgIGF3YWl0IGVkaXRvckZ1bmNzW3RoaXMuc3RlcHNbbG9hZGVkU2NyaXB0Lm5xTmFtZV0uZWRpdG9yXS5hcHBseSh7J2NhbGwnOiBzY3JpcHRDYWxsfSkgYXMgRnVuY3Rpb25WaWV3O1xuXG4gICAgICBpZiAoIXRoaXMuc3RlcHNbbG9hZGVkU2NyaXB0Lm5xTmFtZV0udmlldy5vbkZ1bmNDYWxsUmVhZHkudmFsdWUpIHtcbiAgICAgICAgY29uc3QgcHJvbSA9IHRoaXMuc3RlcHNbbG9hZGVkU2NyaXB0Lm5xTmFtZV0udmlldy5vbkZ1bmNDYWxsUmVhZHkudG9Qcm9taXNlKCk7XG4gICAgICAgIHJldHVybiBwcm9tO1xuICAgICAgfSBlbHNlIHsgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOyB9XG4gICAgfSk7XG5cbiAgICBhd2FpdCBQcm9taXNlLmFsbCh2aWV3c0xvYWRpbmcpO1xuXG4gICAgdGhpcy5vbkZ1bmNDYWxsUmVhZHkuY29tcGxldGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBidWlsZElPKCkge1xuICAgIGNvbnN0IHRhYnMgPSBPYmplY3QuZW50cmllcyh0aGlzLnN0ZXBzKVxuICAgICAgLnJlZHVjZSgocHJldiwgW2Z1bmNOYW1lLCBzdGVwXSkgPT4gKHtcbiAgICAgICAgLi4ucHJldixcbiAgICAgICAgW2Z1bmNOYW1lXTogc3RlcC52aWV3LnJvb3RcbiAgICAgIH0pLCB7fSBhcyBSZWNvcmQ8c3RyaW5nLCBIVE1MRWxlbWVudD4pO1xuXG4gICAgY29uc3QgcGlwZWxpbmVUYWJzID0gdWkudGFiQ29udHJvbCh0YWJzKTtcblxuICAgIGNvbnN0IHRhYnNMaW5lID0gcGlwZWxpbmVUYWJzLnBhbmVzWzBdLmhlYWRlci5wYXJlbnRFbGVtZW50ITtcbiAgICB0YWJzTGluZS5jbGFzc0xpc3QuYWRkKCdkNC1yaWJib24nLCAncGlwZWxpbmUtdmlldycpO1xuICAgIHRhYnNMaW5lLmNsYXNzTGlzdC5yZW1vdmUoJ2Q0LXRhYi1oZWFkZXItc3RyaXBlJyk7XG4gICAgdGFic0xpbmUuZmlyc3RDaGlsZCEucmVtb3ZlKCk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwaXBlbGluZVRhYnMucGFuZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHBpcGVsaW5lVGFicy5wYW5lc1tpXS5oZWFkZXIuY2xhc3NMaXN0LmFkZCgnZDQtcmliYm9uLW5hbWUnKTtcbiAgICAgIHBpcGVsaW5lVGFicy5wYW5lc1tpXS5oZWFkZXIuY2xhc3NMaXN0LnJlbW92ZSgnZDQtdGFiLWhlYWRlcicpO1xuICAgIH1cbiAgICBwaXBlbGluZVRhYnMucGFuZXNbMF0uaGVhZGVyLnN0eWxlLm1hcmdpbkxlZnQgPSAnMTJweCc7XG5cbiAgICBwaXBlbGluZVRhYnMucm9vdC5zdHlsZS5oZWlnaHQgPSAnMTAwJSc7XG4gICAgcGlwZWxpbmVUYWJzLnJvb3Quc3R5bGUud2lkdGggPSAnMTAwJSc7XG5cbiAgICB0aGlzLnN0ZXBUYWJzID0gcGlwZWxpbmVUYWJzO1xuXG4gICAgcmV0dXJuIHBpcGVsaW5lVGFicy5yb290O1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGFzeW5jIHJ1bigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuZnVuY0NhbGwpIHRocm93IG5ldyBFcnJvcignVGhlIGNvcnJlc3BvZGluZyBmdW5jdGlvbiBpcyBub3Qgc3BlY2lmaWVkJyk7XG5cbiAgICBhd2FpdCB0aGlzLm9uQmVmb3JlUnVuKHRoaXMuZnVuY0NhbGwpO1xuICAgIGNvbnN0IHBpID0gREcuVGFza0JhclByb2dyZXNzSW5kaWNhdG9yLmNyZWF0ZSgnQ2FsY3VsYXRpbmcuLi4nKTtcbiAgICB0aGlzLmZ1bmNDYWxsLm5ld0lkKCk7XG4gICAgYXdhaXQgdGhpcy5mdW5jQ2FsbC5jYWxsKCk7IC8vIG11dGF0ZXMgdGhlIGZ1bmNDYWxsIGZpZWxkXG4gICAgcGkuY2xvc2UoKTtcblxuICAgIE9iamVjdC52YWx1ZXModGhpcy5zdGVwcylcbiAgICAgIC5mb3JFYWNoKGFzeW5jIChzdGVwKSA9PiB7XG4gICAgICAgIGNvbnN0IHNjcmlwdENhbGwgPSBzdGVwLnZpZXcuZnVuY0NhbGw7XG5cbiAgICAgICAgc2NyaXB0Q2FsbC5vcHRpb25zWydwYXJlbnRDYWxsSWQnXSA9IHRoaXMuZnVuY0NhbGwhLmlkO1xuXG4gICAgICAgIHRoaXMuc3RlcHNbc2NyaXB0Q2FsbC5mdW5jLm5xTmFtZV0udmlldy5sYXN0Q2FsbCA9XG4gICAgICAgICAgYXdhaXQgdGhpcy5zdGVwc1tzY3JpcHRDYWxsLmZ1bmMubnFOYW1lXS52aWV3LnNhdmVSdW4oc2NyaXB0Q2FsbCk7XG4gICAgICB9KTtcblxuICAgIGF3YWl0IHRoaXMub25BZnRlclJ1bih0aGlzLmZ1bmNDYWxsKTtcblxuICAgIHRoaXMubGFzdENhbGwgPSBhd2FpdCB0aGlzLnNhdmVSdW4odGhpcy5mdW5jQ2FsbCk7XG4gIH1cblxuICAvKipcbiAgICogT3ZlcnJpZGVkIHRvIHVzZSB7QGxpbmsgbG9hZENoaWxkUnVuc30gZHVyaW5nIHJ1biBsb2FkLlxuICAgKiBUaGlzIGltcGxlbWVudGF0aW9uIHRha2VzIFwicGFyZW50Q2FsbElkXCIgYW5kIGxvb2tzIGZvciB0aGUgZnVuY0NhbGxzIHdpdGggb3B0aW9ucy5wYXJlbnRDYWxsSWQgPSBwYXJlbnRDYWxsSWQuXG4gICAqIEVhY2ggY2hpbGQgcnVuIGlzIHJlbGF0ZWQgdG8gdGhlIHBhcnRpY3VsYXIgcGlwZWxpbmUgc3RlcC5cbiAgICogQHBhcmFtIGZ1bmNDYWxsSWQgSUQgb2YgdGhlIHBhcmVudCBGdW5jQ2FsbFxuICAgKiBAcmV0dXJucyBQYXJlbnQgRnVuY0NhbGxcbiAgICovXG4gIHB1YmxpYyBhc3luYyBsb2FkUnVuKGZ1bmNDYWxsSWQ6IHN0cmluZyk6IFByb21pc2U8REcuRnVuY0NhbGw+IHtcbiAgICBjb25zdCB7cGFyZW50UnVuOiBwdWxsZWRQYXJlbnRSdW4sIGNoaWxkUnVuczogcHVsbGVkQ2hpbGRSdW5zfSA9IGF3YWl0IGhpc3RvcnlVdGlscy5sb2FkQ2hpbGRSdW5zKGZ1bmNDYWxsSWQpO1xuXG4gICAgdGhpcy5zdWJzLnB1c2goXG4gICAgICB0aGlzLm9uRnVuY0NhbGxSZWFkeS5zdWJzY3JpYmUoe1xuICAgICAgICBjb21wbGV0ZTogYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIGF3YWl0IHRoaXMub25CZWZvcmVMb2FkUnVuKCk7XG5cbiAgICAgICAgICBwdWxsZWRDaGlsZFJ1bnMuZm9yRWFjaChhc3luYyAocHVsbGVkQ2hpbGRSdW4pID0+IHtcbiAgICAgICAgICAgIHRoaXMuc3RlcHNbcHVsbGVkQ2hpbGRSdW4uZnVuYy5ucU5hbWVdLnZpZXcubG9hZFJ1bihwdWxsZWRDaGlsZFJ1bi5pZCk7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBhd2FpdCB0aGlzLm9uQWZ0ZXJMb2FkUnVuKHB1bGxlZFBhcmVudFJ1bik7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgICByZXR1cm4gcHVsbGVkUGFyZW50UnVuO1xuICB9XG59XG4iXX0=
@@ -1 +1 @@
1
- {"version":3,"file":"rich-function-view.d.ts","sourceRoot":"","sources":["rich-function-view.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACtC,OAAO,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAO7C,OAAO,+BAA+B,CAAC;AAmCvC,qBAAa,gBAAiB,SAAQ,YAAY;IAiBvC,OAAO,EAAE;QAAE,cAAc,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAC;IAf/D,OAAO,CAAC,eAAe,CAAiB;IAGxC,OAAO,CAAC,SAAS,CAAS;IAE1B,MAAM,CAAC,YAAY,CACjB,QAAQ,EAAE,EAAE,CAAC,QAAQ,EACrB,OAAO,GAAE;QAAC,cAAc,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KACb;gBAMvC,QAAQ,EAAE,MAAM,EACT,OAAO,GAAE;QAAE,cAAc,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KACrB;IAWzC;;;OAGG;IACa,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAW/D;;;;OAIG;IACI,OAAO,IAAI,WAAW;IA6BtB,eAAe,IAAI,WAAW;IAOrC,OAAO,CAAC,QAAQ,CAAmB;IAE5B,gBAAgB,IAAI,WAAW;IAiJzB,cAAc,CAAC,SAAS,EAAE,EAAE,CAAC,QAAQ;IAgBlD,OAAO,CAAC,iBAAiB,CAAoC;IAE7D,SAAS,KAAK,oBAAoB,YAEjC;IAED,SAAS,KAAK,UAAU,aAEvB;IAED,SAAS,KAAK,kBAAkB,kCAmB/B;YAEa,KAAK;IAanB,OAAO,CAAC,gBAAgB;IAiHxB;;;;;OAKG;IACH,SAAS,CAAC,aAAa,WAAkB,MAAM,mBAoI7C;IAEF,YAAY;;;yBAtI6B,MAAM;;MA2I7C;CACH"}
1
+ {"version":3,"file":"rich-function-view.d.ts","sourceRoot":"","sources":["rich-function-view.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACtC,OAAO,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAO7C,OAAO,+BAA+B,CAAC;AAmCvC,qBAAa,gBAAiB,SAAQ,YAAY;IAiBvC,OAAO,EAAE;QAAE,cAAc,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAC;IAf/D,OAAO,CAAC,eAAe,CAAiB;IAGxC,OAAO,CAAC,SAAS,CAAS;IAE1B,MAAM,CAAC,YAAY,CACjB,QAAQ,EAAE,EAAE,CAAC,QAAQ,EACrB,OAAO,GAAE;QAAC,cAAc,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KACb;gBAMvC,QAAQ,EAAE,MAAM,EACT,OAAO,GAAE;QAAE,cAAc,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KACrB;IAazC;;;OAGG;IACa,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAW/D;;;;OAIG;IACI,OAAO,IAAI,WAAW;IA6BtB,eAAe,IAAI,WAAW;IAOrC,OAAO,CAAC,QAAQ,CAAmB;IAE5B,gBAAgB,IAAI,WAAW;IA6JzB,cAAc,CAAC,SAAS,EAAE,EAAE,CAAC,QAAQ;IAgBlD,OAAO,CAAC,iBAAiB,CAAoC;IAE7D,SAAS,KAAK,oBAAoB,YAEjC;IAED,SAAS,KAAK,UAAU,aAEvB;IAED,SAAS,KAAK,kBAAkB,kCAmB/B;YAEa,KAAK;IAanB,OAAO,CAAC,gBAAgB;IAsHxB;;;;;OAKG;IACH,SAAS,CAAC,aAAa,WAAkB,MAAM,mBAoI7C;IAEF,YAAY;;;yBAtI6B,MAAM;;MA2I7C;CACH"}
@@ -175,11 +175,11 @@ export class RichFunctionView extends FunctionView {
175
175
  export: this.defaultExport,
176
176
  filename: this.defaultExportFilename,
177
177
  };
178
- this.onFuncCallReady.subscribe({
178
+ this.subs.push(this.onFuncCallReady.subscribe({
179
179
  complete: () => {
180
180
  this.basePath = `scripts/${this.funcCall.func.id}/view`;
181
181
  }
182
- });
182
+ }));
183
183
  }
184
184
  static fromFuncCall(funcCall, options = { historyEnabled: true, isTabbed: false }) {
185
185
  return new this(funcCall.func.nqName, options);
@@ -261,7 +261,7 @@ export class RichFunctionView extends FunctionView {
261
261
  const subscribeOnFcChanges = () => {
262
262
  var _a;
263
263
  const currentParam = (_a = this.funcCall.outputParams[dfProp.name]) !== null && _a !== void 0 ? _a : this.funcCall.inputParams[dfProp.name];
264
- currentParam.onChanged.subscribe(() => {
264
+ const paramSub = currentParam.onChanged.subscribe(() => {
265
265
  loadedViewers.forEach((viewer) => __awaiter(this, void 0, void 0, function* () {
266
266
  if (Object.values(viewerTypesMapping).includes(viewer.type)) {
267
267
  viewer.dataFrame = currentParam.value;
@@ -274,9 +274,10 @@ export class RichFunctionView extends FunctionView {
274
274
  }
275
275
  }));
276
276
  });
277
+ this.subs.push(paramSub);
277
278
  };
278
279
  subscribeOnFcChanges();
279
- this.funcCallReplaced.subscribe(subscribeOnFcChanges);
280
+ this.subs.push(this.funcCallReplaced.subscribe(subscribeOnFcChanges));
280
281
  });
281
282
  const dfBlockTitle = (_a = dfProp.options['caption']) !== null && _a !== void 0 ? _a : dfProp.name;
282
283
  const dfBlock = ui.wait(() => __awaiter(this, void 0, void 0, function* () {
@@ -287,12 +288,13 @@ export class RichFunctionView extends FunctionView {
287
288
  const subscribeOnFcChanges = () => {
288
289
  var _a;
289
290
  const currentParam = (_a = this.funcCall.outputParams[dfProp.name]) !== null && _a !== void 0 ? _a : this.funcCall.inputParams[dfProp.name];
290
- currentParam.onChanged.subscribe(() => {
291
+ const paramSub = currentParam.onChanged.subscribe(() => {
291
292
  this.tabsElem.root.style.removeProperty('display');
292
293
  });
294
+ this.subs.push(paramSub);
293
295
  };
294
296
  subscribeOnFcChanges();
295
- this.funcCallReplaced.subscribe(subscribeOnFcChanges);
297
+ this.subs.push(this.funcCallReplaced.subscribe(subscribeOnFcChanges));
296
298
  }
297
299
  return ui.divV([
298
300
  // Removing title margin on top of block titles
@@ -308,14 +310,15 @@ export class RichFunctionView extends FunctionView {
308
310
  let scalarsTable = generateScalarsTable();
309
311
  tabScalarProps.forEach((tabScalarProp) => {
310
312
  const subscribeOnFcChanges = () => {
311
- this.funcCall.outputParams[tabScalarProp.name].onChanged.subscribe(() => {
313
+ const paramSub = this.funcCall.outputParams[tabScalarProp.name].onChanged.subscribe(() => {
312
314
  const newScalarsTable = generateScalarsTable();
313
315
  scalarsTable.replaceWith(newScalarsTable);
314
316
  scalarsTable = newScalarsTable;
315
317
  });
318
+ this.subs.push(paramSub);
316
319
  };
317
320
  subscribeOnFcChanges();
318
- this.funcCallReplaced.subscribe(subscribeOnFcChanges);
321
+ this.subs.push(this.funcCallReplaced.subscribe(subscribeOnFcChanges));
319
322
  });
320
323
  const dfSections = [];
321
324
  let currentWidth = 0;
@@ -416,10 +419,11 @@ export class RichFunctionView extends FunctionView {
416
419
  // const buttonWrapper = ui.div([...this.options.isTabbed && isFuncScript() ? [openScriptBtn]: [], runButton]);
417
420
  const buttonWrapper = ui.div([runButton]);
418
421
  ui.tooltip.bind(buttonWrapper, () => runButton.disabled ? (this.isRunning ? 'Computations are in progress' : 'Some inputs are invalid') : '');
419
- this.checkDisability.subscribe(() => {
422
+ const disabilitySub = this.checkDisability.subscribe(() => {
420
423
  const isValid = (wu(this.funcCall.inputs.values()).every((v) => v !== null && v !== undefined)) && !this.isRunning;
421
424
  runButton.disabled = !isValid;
422
425
  });
426
+ this.subs.push(disabilitySub);
423
427
  const inputs = ui.divV([], 'ui-form');
424
428
  let prevCategory = 'Misc';
425
429
  wu(this.funcCall.inputParams.values())
@@ -454,7 +458,7 @@ export class RichFunctionView extends FunctionView {
454
458
  this.funcCall.inputs[val.name] = (_d = (_c = this.funcCall.inputs[val.name]) !== null && _c !== void 0 ? _c : prop.defaultValue) !== null && _d !== void 0 ? _d : null;
455
459
  };
456
460
  subscribeOnFcChanges();
457
- this.funcCallReplaced.subscribe(subscribeOnFcChanges);
461
+ this.subs.push(this.funcCallReplaced.subscribe(subscribeOnFcChanges));
458
462
  t.onChanged(() => {
459
463
  // Resolving case of propertyType = DATAFRAME
460
464
  if (!!t.property)
@@ -470,7 +474,7 @@ export class RichFunctionView extends FunctionView {
470
474
  ;
471
475
  this.checkDisability.next();
472
476
  });
473
- val.onChanged.subscribe(() => {
477
+ const valChangeSub = val.onChanged.subscribe(() => {
474
478
  var _a;
475
479
  const newValue = this.funcCall.inputs[val.name];
476
480
  if (val.property.propertyType === DG.TYPE.DATA_FRAME) {
@@ -495,6 +499,7 @@ export class RichFunctionView extends FunctionView {
495
499
  }
496
500
  this.checkDisability.next();
497
501
  });
502
+ this.subs.push(valChangeSub);
498
503
  if (prop.category !== prevCategory)
499
504
  inputs.append(ui.h2(prop.category));
500
505
  if (t.value === null)
@@ -552,4 +557,4 @@ const plotToSheet = (exportWb, sheet, plot, columnForImage, rowForImage = 0) =>
552
557
  ext: { width: canvas.width, height: canvas.height },
553
558
  });
554
559
  });
555
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmljaC1mdW5jdGlvbi12aWV3LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicmljaC1mdW5jdGlvbi12aWV3LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLGdDQUFnQztBQUNoQyw0QkFBNEI7QUFDNUIsT0FBTyxLQUFLLElBQUksTUFBTSxtQkFBbUIsQ0FBQztBQUMxQyxPQUFPLEtBQUssRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3RDLE9BQU8sS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdEMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sT0FBTyxNQUFNLFNBQVMsQ0FBQztBQUM5QixPQUFPLFdBQVcsTUFBTSxhQUFhLENBQUM7QUFDdEMsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3BCLE9BQU8sQ0FBQyxNQUFNLFVBQVUsQ0FBQztBQUN6QixPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUNyRCxPQUFPLCtCQUErQixDQUFDO0FBRXZDLDJEQUEyRDtBQUMzRCxNQUFNLGtCQUFrQixHQUE0QjtJQUNsRCxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsU0FBUztJQUNqQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsUUFBUTtJQUMvQixDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsUUFBUTtJQUNoQyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsU0FBUztJQUNqQyxDQUFDLGFBQWEsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsWUFBWTtJQUN2QyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTztJQUM5QixDQUFDLE1BQU0s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QUFLLEVBQUUsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO29DQUMxRixFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO29DQUMxRixFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO29DQUMxRixFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO2lDQUMvRixDQUFDLENBQUM7Z0NBQ0gsU0FBUyxDQUNQLGNBQWMsQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLFlBQVksRUFBRSxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsRUFDekUsS0FBSyxFQUNMLFNBQVMsQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsRUFDNUIsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssR0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUNoRixDQUFDOzZCQUNIO2lDQUFNO2dDQUNMLE1BQU0sV0FBVyxDQUNmLGNBQWMsRUFDZCxjQUFjLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQ3pFLE1BQU0sQ0FBQyxJQUFJLEVBQ1gsU0FBUyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUM1QixDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxHQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQ2hGLENBQUM7NkJBQ0g7eUJBQ0Y7cUJBQ0Y7b0JBQUEsQ0FBQztpQkFDSDthQUNGO1lBQUEsQ0FBQztZQUNGLE1BQU0sTUFBTSxHQUFHLE1BQU0sY0FBYyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUV2RCxPQUFPLElBQUksSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBQyxJQUFJLEVBQUUsU0FBUyxFQUFDLENBQUMsQ0FBQztRQUMvQyxDQUFDLENBQUEsQ0FBQztRQUVGLGlCQUFZLEdBQUc7WUFDYixtQkFBbUIsRUFBRSxJQUFJLENBQUMsZ0NBQWdDLEVBQUU7WUFDNUQsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLDZCQUE2QixFQUFFO1lBQ3RELE1BQU0sRUFBRSxJQUFJLENBQUMsYUFBYTtZQUMxQixRQUFRLEVBQUUsSUFBSSxDQUFDLHFCQUFxQjtTQUNyQyxDQUFDO1FBaGhCQSxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQztZQUM3QixRQUFRLEVBQUUsR0FBRyxFQUFFO2dCQUNiLElBQUksQ0FBQyxRQUFRLEdBQUcsV0FBVyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sQ0FBQztZQUMxRCxDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQXBCRCxNQUFNLENBQUMsWUFBWSxDQUNqQixRQUFxQixFQUNyQixVQUNBLEVBQUMsY0FBYyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFDO1FBRXZDLE9BQU8sSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQWdCRDs7O09BR0c7SUFDYSxVQUFVLENBQUMsT0FBb0I7UUFDN0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNsQyxHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDN0MsQ0FBQyxDQUFDLENBQUM7UUFDSCxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssT0FBTyxDQUFDLENBQUM7UUFDL0UsSUFBSSxjQUFjO1lBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEdBQUcsY0FBYyxDQUFDO1FBRS9ELE9BQU8sT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksT0FBTztRQUNaLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUUxQyxFQUFFLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUMxQyxJQUFJLEtBQUssR0FBRyxHQUFHO2dCQUNiLENBQUMsQ0FBQyxVQUFVLENBQUMsVUFBVyxDQUFDLENBQUMsUUFBUSxDQUFDLG1CQUFtQixDQUFDLENBQUM7O2dCQUV4RCxDQUFDLENBQUMsVUFBVSxDQUFDLFVBQVcsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQy9ELENBQUMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDNUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ2xDLFdBQVcsQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQztRQUNqQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztRQUUxQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUNwQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDbEMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztZQUNwQyxDQUFDLENBQUMsQ0FBQztTQUNKO1FBRUQsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsV0FBVyxDQUFDLEVBQUUsRUFBQyxLQUFLLEVBQUUsRUFBQyxhQUFhLEVBQUUsS0FBSyxFQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLFFBQVEsQ0FBQztRQUU3QixVQUFVLENBQUMsYUFBYyxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO1FBRW5ELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVNLGVBQWU7UUFDcEIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFFeEMsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUtNLGdCQUFnQjtRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQztRQUV4QyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ25DLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxZQUFZLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUMxRyxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsWUFBWSxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFFOUcsa0VBQWtFO1lBQ2xFLE1BQU0sZ0JBQWdCLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUM7Z0JBQzVGLHlGQUF5RjtnQkFDekYsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLE1BQU0sSUFBSSxDQUFDLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFDO2dCQUNqRyxFQUFFLENBQUMsQ0FBQztZQUVOLE1BQU0sUUFBUSxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLEVBQUU7O2dCQUNsRCxJQUFJLGNBQWMsR0FBRyxDQUFDLENBQUM7Z0JBQ3ZCLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQU0sRUFBRSxXQUFtQixFQUFFLEVBQUU7b0JBQ2hFLE1BQU0sU0FBUyxHQUFHLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUVsRSxjQUFjLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUEsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDdkQsQ0FBQyxDQUFDLENBQUM7Z0JBRUgsTUFBTSxPQUFPLEdBQXlCLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQU8sVUFBbUMsRUFBRSxFQUFFOztvQkFDNUgsTUFBTSxZQUFZLEdBQWlCLE1BQUEsTUFBQSxNQUFBLE1BQUEsSUFBSSxDQUFDLFFBQVEsMENBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsMENBQUUsS0FBSyxtQ0FBSSxNQUFBLElBQUksQ0FBQyxRQUFTLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsMENBQUUsS0FBSyxtQ0FBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBRTNKLE1BQU0sTUFBTSxHQUFHLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxZQUFZLENBQUMsQ0FBQSxDQUFDLENBQUMsTUFBTSxZQUFZLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQWMsQ0FBQztvQkFDcE0sTUFBTSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQztvQkFFOUIsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQzt3QkFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQzs7d0JBQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUUvSSxPQUFPLE1BQU0sQ0FBQztnQkFDaEIsQ0FBQyxDQUFBLENBQUMsQ0FBQyxDQUFDO2dCQUVKLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxhQUFhLEVBQUUsRUFBRTtvQkFDN0IsTUFBTSxvQkFBb0IsR0FBRyxHQUFHLEVBQUU7O3dCQUNoQyxNQUFNLFlBQVksR0FBcUIsTUFBQSxJQUFJLENBQUMsUUFBUyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLG1DQUFJLElBQUksQ0FBQyxRQUFTLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQzt3QkFFM0gsWUFBWSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFOzRCQUNwQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQU8sTUFBTSxFQUFFLEVBQUU7Z0NBQ3JDLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUU7b0NBQzNELE1BQU0sQ0FBQyxTQUFTLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQztpQ0FDdkM7cUNBQU07b0NBQ0wsd0ZBQXdGO29DQUN4RixNQUFNLFNBQVMsR0FBRyxNQUFNLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFjLENBQUM7b0NBQ25GLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztvQ0FDeEMsTUFBTSxHQUFHLFNBQVMsQ0FBQztpQ0FDcEI7NEJBQ0gsQ0FBQyxDQUFBLENBQUMsQ0FBQzt3QkFDTCxDQUFDLENBQUMsQ0FBQztvQkFDTCxDQUFDLENBQUM7b0JBRUYsb0JBQW9CLEVBQUUsQ0FBQztvQkFDdkIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO2dCQUN4RCxDQUFDLENBQUMsQ0FBQztnQkFFSCxNQUFNLFlBQVksR0FBVyxNQUFBLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLG1DQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUM7Z0JBRXRFLE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBUyxFQUFFO29CQUNqQyxNQUFNLGFBQWEsR0FBRyxNQUFNLE9BQU8sQ0FBQztvQkFDcEMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUNaLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FDZixhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQUMsS0FBSyxFQUFFLEVBQUMsV0FBVyxFQUFFLE1BQU0sRUFBQyxFQUFDLENBQUMsQ0FDM0UsQ0FDRixDQUFDO2dCQUNKLENBQUMsQ0FBQSxDQUFDLENBQUM7Z0JBRUgsSUFBSSxRQUFRLEtBQUssT0FBTyxFQUFFO29CQUN4QixNQUFNLG9CQUFvQixHQUFHLEdBQUcsRUFBRTs7d0JBQ2hDLE1BQU0sWUFBWSxHQUFxQixNQUFBLElBQUksQ0FBQyxRQUFTLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsbUNBQUksSUFBSSxDQUFDLFFBQVMsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUUzSCxZQUFZLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7NEJBQ3BDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUM7d0JBQ3JELENBQUMsQ0FBQyxDQUFDO29CQUNMLENBQUMsQ0FBQztvQkFFRixvQkFBb0IsRUFBRSxDQUFDO29CQUN2QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLG9CQUFvQixDQUFDLENBQUM7aUJBQ3ZEO2dCQUVELE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQztvQkFDYiwrQ0FBK0M7b0JBQy9DLEVBQUUsQ0FBQyxFQUFFLENBQUMsWUFBWSxvQkFBTSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxLQUFLLEVBQUUsRUFBQyxZQUFZLEVBQUUsS0FBSyxFQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO29CQUM3RSxPQUFPO2lCQUNSLEVBQUUsRUFBQyxLQUFLLG9CQUFNLENBQUMsY0FBYyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLE9BQU8sRUFBRSxHQUFHLGNBQWMsR0FBRyxFQUFDLENBQUEsQ0FBQyxDQUFDLEVBQUMsT0FBTyxFQUFFLE1BQU0sRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDO1lBQzlGLENBQUMsQ0FBQyxDQUFDO1lBRUgsTUFBTSxvQkFBb0IsR0FBRyxHQUFHLEVBQUU7Z0JBQ2hDLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUMvQixjQUFjLEVBQ2QsQ0FBQyxVQUF1QixFQUFFLEVBQUUsV0FBQyxPQUFBLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxNQUFBLElBQUksQ0FBQyxRQUFRLDBDQUFFLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFBLEVBQUEsQ0FDckgsQ0FBQyxJQUFJLENBQUM7Z0JBQ1AsS0FBSyxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO2dCQUMvQixPQUFPLEtBQUssQ0FBQztZQUNmLENBQUMsQ0FBQztZQUVGLElBQUksWUFBWSxHQUFHLG9CQUFvQixFQUFFLENBQUM7WUFFMUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLGFBQWEsRUFBRSxFQUFFO2dCQUN2QyxNQUFNLG9CQUFvQixHQUFHLEdBQUcsRUFBRTtvQkFDL0IsSUFBSSxDQUFDLFFBQVMsQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBc0IsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTt3QkFDN0YsTUFBTSxlQUFlLEdBQUcsb0JBQW9CLEVBQUUsQ0FBQzt3QkFDL0MsWUFBWSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsQ0FBQzt3QkFDMUMsWUFBWSxHQUFHLGVBQWUsQ0FBQztvQkFDakMsQ0FBQyxDQUFDLENBQUM7Z0JBQ0wsQ0FBQyxDQUFDO2dCQUVGLG9CQUFvQixFQUFFLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsb0JBQW9CLENBQUMsQ0FBQztZQUN4RCxDQUFDLENBQUMsQ0FBQztZQUVILE1BQU0sVUFBVSxHQUFHLEVBQW1CLENBQUM7WUFDdkMsSUFBSSxZQUFZLEdBQUcsQ0FBQyxDQUFDO1lBQ3JCLElBQUksY0FBYyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUMsS0FBSyxFQUFFLEVBQUMsZUFBZSxFQUFFLE1BQU0sRUFBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLHVDQUF1QztZQUM3RyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFO2dCQUNwQyxNQUFNLFVBQVUsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFFakQsSUFBSSxZQUFZLEdBQUcsVUFBVSxLQUFLLEdBQUcsRUFBRTtvQkFDckMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztvQkFDL0IsVUFBVSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztvQkFDaEMsY0FBYyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQzdCLFlBQVksR0FBRyxDQUFDLENBQUM7aUJBQ2xCO3FCQUFNLElBQUksWUFBWSxHQUFHLFVBQVUsR0FBRyxHQUFHLEVBQUU7b0JBQzFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7b0JBQy9CLFlBQVksSUFBSSxVQUFVLENBQUM7aUJBQzVCO3FCQUFNO29CQUNMLFVBQVUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7b0JBQ2hDLGNBQWMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUM3QixjQUFjLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUMvQixZQUFZLEdBQUcsVUFBVSxDQUFDO2lCQUMzQjtnQkFFRCxJQUFJLE9BQU8sS0FBSyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUM7b0JBQ2pDLFVBQVUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDcEMsQ0FBQyxDQUFDLENBQUM7WUFFSCxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFO2dCQUNuQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLFVBQVUsRUFBRSxHQUFHLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFBLENBQUMsQ0FBQyxFQUFFLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQztZQUN6RyxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxXQUFXLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQzdCLFdBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV2QyxPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0lBRVksY0FBYyxDQUFDLFNBQXNCOztZQUNoRCxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVMsQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUF3QixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQzdFLElBQUksQ0FBQyxRQUFTLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUN0RSxDQUFDLENBQUMsQ0FBQztZQUVILEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUyxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQXdCLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDNUUsSUFBSSxDQUFDLFFBQVMsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ3JFLENBQUMsQ0FBQyxDQUFDO1lBRUgsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNuRCxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDbEMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzdDLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztLQUFBO0lBS0QsSUFBYyxvQkFBb0I7O1FBQ2hDLE9BQU8sQ0FBQSxNQUFBLElBQUksQ0FBQyxJQUFJLDBDQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxZQUFZLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSSxLQUFLLENBQUM7SUFDckgsQ0FBQztJQUVELElBQWMsVUFBVTtRQUN0QixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELElBQWMsa0JBQWtCO1FBQzlCLE1BQU0sR0FBRyxHQUFHLEVBQW1DLENBQUM7UUFFaEQsSUFBSSxJQUFJLENBQUMsb0JBQW9CLEVBQUU7WUFDN0IsSUFBSSxDQUFDLElBQUssQ0FBQyxNQUFNO2dCQUNmLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFlBQVksSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLElBQUksQ0FBQztnQkFDbEYsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDM0U7UUFFRCxJQUFJLENBQUMsSUFBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUMvQixNQUFNLFFBQVEsR0FBRyxDQUFDLENBQUMsUUFBUSxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFBLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO1lBRTlELElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQztnQkFDZixHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDOztnQkFFdEIsR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEIsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFYSxLQUFLOztZQUNqQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztZQUN0QixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzVCLElBQUk7Z0JBQ0YsTUFBTSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7YUFDbEI7WUFBQyxPQUFPLENBQU0sRUFBRTtnQkFDZixJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNyQjtvQkFBUztnQkFDUixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztnQkFDdkIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsQ0FBQzthQUM3QjtRQUNILENBQUM7S0FBQTtJQUVPLGdCQUFnQjtRQUN0QixNQUFNLFNBQVMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxHQUFTLEVBQUUsZ0RBQUMsT0FBQSxNQUFNLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQSxHQUFBLENBQUMsQ0FBQztRQUN0RSx3QkFBd0I7UUFDeEIsTUFBTSxZQUFZLEdBQUcsR0FBRyxFQUFFO1lBQ3hCLFlBQVk7WUFDWixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUM1QixDQUFDLENBQUM7UUFDRiwrQkFBK0I7UUFDL0IsTUFBTSxhQUFhLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsR0FBUyxFQUFFO1lBQ3hELE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sV0FBWSxJQUFJLENBQUMsSUFBa0IsQ0FBQyxFQUFFLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMzRixDQUFDLENBQUEsQ0FBQyxDQUFDO1FBQ0gsK0dBQStHO1FBQy9HLE1BQU0sYUFBYSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQzFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLDhCQUE4QixDQUFDLENBQUMsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUU5SSxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDbEMsTUFBTSxPQUFPLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQ3BILFNBQVMsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxPQUFPLENBQUM7UUFDaEMsQ0FBQyxDQUFDLENBQUM7UUFFSCxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUN0QyxJQUFJLFlBQVksR0FBRyxNQUFNLENBQUM7UUFDMUIsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFTLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBd0IsQ0FBQzthQUMxRCxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7YUFDdEIsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7O1lBQ2YsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLFFBQVEsQ0FBQztZQUMxQixJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLEtBQUssZUFBZSxFQUFFO2dCQUNwRCxNQUFNLENBQUMsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLE1BQUEsSUFBSSxDQUFDLE9BQU8sbUNBQUksSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxJQUFVLEVBQUUsRUFBRTtvQkFDMUUsSUFBSSxDQUFDLFFBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQztvQkFDeEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDOUIsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLFlBQVk7b0JBQ2hDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztnQkFFdEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDNUIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDdkI7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO29CQUNoRCxFQUFFLENBQUMsVUFBVSxDQUFDLE1BQUEsSUFBSSxDQUFDLE9BQU8sbUNBQUksSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQSxDQUFDO29CQUNsRSxFQUFFLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFFN0IsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsQ0FBTyxFQUFFLEVBQUUsRUFBRTtvQkFDL0IsSUFBSSxFQUFFLENBQUMsR0FBRyxJQUFJLE9BQU87d0JBQ25CLE1BQU0sSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUN2QixDQUFDLENBQUEsQ0FBQztnQkFFRixDQUFDLENBQUMsWUFBWSxDQUFDLFVBQVcsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQUEsSUFBSSxDQUFDLE9BQU8sbUNBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDN0UsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztvQkFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztnQkFFL0QsTUFBTSxvQkFBb0IsR0FBRyxHQUFHLEVBQUU7O29CQUNoQyxDQUFDLENBQUMsS0FBSyxHQUFHLE1BQUEsTUFBQSxJQUFJLENBQUMsUUFBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLG1DQUFJLElBQUksQ0FBQyxZQUFZLG1DQUFJLElBQUksQ0FBQztvQkFDdkUsSUFBSSxDQUFDLFFBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQUEsTUFBQSxJQUFJLENBQUMsUUFBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLG1DQUFJLElBQUksQ0FBQyxZQUFZLG1DQUFJLElBQUksQ0FBQztnQkFDakcsQ0FBQyxDQUFDO2dCQUVGLG9CQUFvQixFQUFFLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsb0JBQW9CLENBQUMsQ0FBQztnQkFFdEQsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7b0JBQ2YsNkNBQTZDO29CQUM3QyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUTt3QkFBRSxPQUFPO29CQUV6QixJQUFJLENBQUMsUUFBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQztnQkFDNUMsQ0FBQyxDQUFDLENBQUM7Z0JBRUgsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUU7b0JBQ2IsSUFBSSxDQUFDLFFBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUM7b0JBQzFDLElBQUksQ0FBQyxDQUFDLEtBQUssS0FBSyxJQUFJO3dCQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7O3dCQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztvQkFBQyxDQUFDO29CQUVoSSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUM5QixDQUFDLENBQUMsQ0FBQztnQkFFSCxHQUFHLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7O29CQUMzQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBRWpELElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyxZQUFZLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUU7d0JBQ3BELG9FQUFvRTt3QkFDcEUsTUFBTSxhQUFhLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxNQUFBLElBQUksQ0FBQyxPQUFPLG1DQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO3dCQUMzRyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7d0JBQ3ZDLENBQUMsR0FBRyxhQUFhLENBQUM7d0JBRWxCLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFOzRCQUNiLElBQUksQ0FBQyxRQUFTLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDOzRCQUMxQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEtBQUssSUFBSTtnQ0FBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDOztnQ0FBTSxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7NEJBQUMsQ0FBQzs0QkFFaEksSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsQ0FBQzt3QkFDOUIsQ0FBQyxDQUFDLENBQUM7cUJBQ0o7eUJBQU07d0JBQ0wsQ0FBQyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7d0JBQ2pCLENBQUMsQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDO3dCQUNuQixDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztxQkFDakI7b0JBRUQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDOUIsQ0FBQyxDQUFDLENBQUM7Z0JBRUgsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLFlBQVk7b0JBQ2hDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztnQkFFdEMsSUFBSSxDQUFDLENBQUMsS0FBSyxLQUFLLElBQUk7b0JBQUUsU0FBUyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7Z0JBQ2hELE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ3ZCO1lBQ0QsWUFBWSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDL0IsQ0FBQyxDQUFDLENBQUM7UUFDTCxhQUFhO1FBQ2IsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7UUFDakQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN2QixNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNwQyxNQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDaEMsTUFBTSxDQUFDLEtBQUssQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBRWpDLE9BQU8sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDMUIsQ0FBQztDQW9KRjtBQUVELE1BQU0sWUFBWSxHQUFHLENBQUMsSUFBWSxFQUFFLFNBQW9CLEVBQUUsRUFBRTtJQUMxRCxNQUFNLFNBQVMsR0FBRyxHQUFHLFNBQVMsTUFBTSxJQUFJLEVBQUUsQ0FBQztJQUMzQyxPQUFPLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUNyRSxDQUFDLENBQUM7QUFFRixJQUFLLFNBR0o7QUFIRCxXQUFLLFNBQVM7SUFDWiw0QkFBZSxDQUFBO0lBQ2YsOEJBQWlCLENBQUE7QUFDbkIsQ0FBQyxFQUhJLFNBQVMsS0FBVCxTQUFTLFFBR2I7QUFFRCxNQUFNLGNBQWMsR0FBRyxDQUFDLEtBQXdCLEVBQUUsT0FBNEQsRUFBRSxFQUFFO0lBQ2hILEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxXQUFXLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLEVBQUMsSUFBSSxFQUFFLElBQUksRUFBQyxDQUFDO0lBQ2xFLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtRQUN6QixLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzdELENBQUMsQ0FBQyxDQUFDO0lBRUgsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FDakMsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFdBQVcsQ0FBQyxNQUFNLENBQ2pGLEdBQUcsR0FBRyxDQUFDO0lBQ1IsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQztJQUN0SCxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsR0FBRyxDQUFDO0FBQ3hILENBQUMsQ0FBQztBQUVGLE1BQU0sU0FBUyxHQUFHLENBQUMsS0FBd0IsRUFBRSxFQUFnQixFQUFFLFNBQWlCLENBQUMsRUFBRSxNQUFjLENBQUMsRUFBRSxFQUFFO0lBQ3BHLEtBQUssSUFBSSxDQUFDLEdBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUNqRCxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQzFFLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FDOUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQ2pGLEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQ2xDLEdBQUcsR0FBRyxDQUFDO0tBQ1Q7SUFDRCxLQUFLLElBQUksUUFBUSxHQUFHLENBQUMsRUFBRSxRQUFRLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLEVBQUU7UUFDL0QsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUFFO1lBQ2xDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLE1BQU0sR0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQy9GO0FBQ0gsQ0FBQyxDQUFDO0FBRUYsTUFBTSxXQUFXLEdBQUcsQ0FBTyxRQUEwQixFQUFFLEtBQXdCLEVBQUUsSUFBaUIsRUFBRSxjQUFzQixFQUFFLGNBQXNCLENBQUMsRUFBRSxFQUFFO0lBQ3JKLE1BQU0sTUFBTSxHQUFHLE1BQU0sV0FBVyxDQUFDLElBQW1CLEVBQUUsRUFBQyxPQUFPLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQztJQUN4RSxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBRTlDLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUM7UUFDaEMsTUFBTSxFQUFFLE9BQU87UUFDZixTQUFTLEVBQUUsS0FBSztLQUNqQixDQUFDLENBQUM7SUFDSCxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRTtRQUN0QixFQUFFLEVBQUUsRUFBQyxHQUFHLEVBQUUsY0FBYyxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUM7UUFDM0MsR0FBRyxFQUFFLEVBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUM7S0FDbEQsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFBLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSB2YWxpZC1qc2RvYyAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiAqL1xuaW1wb3J0ICogYXMgZ3JvayBmcm9tICdkYXRhZ3Jvay1hcGkvZ3Jvayc7XG5pbXBvcnQgKiBhcyB1aSBmcm9tICdkYXRhZ3Jvay1hcGkvdWknO1xuaW1wb3J0ICogYXMgREcgZnJvbSAnZGF0YWdyb2stYXBpL2RnJztcbmltcG9ydCB7RnVuY3Rpb25WaWV3fSBmcm9tICcuL2Z1bmN0aW9uLXZpZXcnO1xuaW1wb3J0IEV4Y2VsSlMgZnJvbSAnZXhjZWxqcyc7XG5pbXBvcnQgaHRtbDJjYW52YXMgZnJvbSAnaHRtbDJjYW52YXMnO1xuaW1wb3J0IHd1IGZyb20gJ3d1JztcbmltcG9ydCAkIGZyb20gJ2Nhc2gtZG9tJztcbmltcG9ydCB7U3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1VpVXRpbHN9IGZyb20gJy4vc2hhcmVkLWNvbXBvbmVudHMvdWktdXRpbHMnO1xuaW1wb3J0ICcuLi9jc3MvcmljaC1mdW5jdGlvbi12aWV3LmNzcyc7XG5cbi8vIG1hcHBpbmcgZnJvbSBpbnRlcm5hbCBEYXJ0IGxhYmVscyB0byBKUyBERy5WSUVXRVIgbGFiZWxzXG5jb25zdCB2aWV3ZXJUeXBlc01hcHBpbmc6IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9ID0ge1xuICBbJ2JhcmNoYXJ0J106IERHLlZJRVdFUi5CQVJfQ0hBUlQsXG4gIFsnYm94cGxvdCddOiBERy5WSUVXRVIuQk9YX1BMT1QsXG4gIFsnY2FsZW5kYXInXTogREcuVklFV0VSLkNBTEVOREFSLFxuICBbJ2NvcnJwbG90J106IERHLlZJRVdFUi5DT1JSX1BMT1QsXG4gIFsnZGVuc2l0eXBsb3QnXTogREcuVklFV0VSLkRFTlNJVFlfUExPVCxcbiAgWydmaWx0ZXJzJ106IERHLlZJRVdFUi5GSUxURVJTLFxuICBbJ2Zvcm0nXTogREcuVklFV0VSLkZPUk0sXG4gIFsnZ2xvYmUnXTogREcuVklFV0VSLkdMT0JFLFxuICBbJ2dvb2dsZW1hcCddOiBERy5WSUVXRVIuR09PR0xFX01BUCxcbiAgWydncmlkJ106IERHLlZJRVdFUi5HUklELFxuICBbJ2hlYXRtYXAnXTogREcuVklFV0VSLkhFQVRfTUFQLFxuICBbJ2hpc3RvZ3JhbSddOiBERy5WSUVXRVIuSElTVE9HUkFNLFxuICBbJ2xpbmVjaGFydCddOiBERy5WSUVXRVIuTElORV9DSEFSVCxcbiAgWydtYXJrdXAnXTogREcuVklFV0VSLk1BUktVUCxcbiAgWydtYXRyaXhwbG90J106IERHLlZJRVdFUi5NQVRSSVhfUExPVCxcbiAgWyduZXR3b3JrZGlhZ3JhbSddOiBERy5WSUVXRVIuTkVUV09SS19ESUFHUkFNLFxuICBbJ3BjcGxvdCddOiBERy5WSUVXRVIuUENfUExPVCxcbiAgWydwaWVjaGFydCddOiBERy5WSUVXRVIuUElFX0NIQVJULFxuICBbJ3NjYXR0ZXJwbG90J106IERHLlZJRVdFUi5TQ0FUVEVSX1BMT1QsXG4gIFsnc2NhdHRlcnBsb3QzZCddOiBERy5WSUVXRVIuU0NBVFRFUl9QTE9UXzNELFxuICBbJ3NoYXBlbWFwJ106IERHLlZJRVdFUi5TSEFQRV9NQVAsXG4gIFsnc3RhdGlzdGljcyddOiBERy5WSUVXRVIuU1RBVElTVElDUyxcbiAgWyd0aWxldmlld2VyJ106IERHLlZJRVdFUi5USUxFX1ZJRVdFUixcbiAgWyd0aW1lbGluZXMnXTogREcuVklFV0VSLlRJTUVMSU5FUyxcbiAgWyd0cmVlbWFwJ106IERHLlZJRVdFUi5UUkVFX01BUCxcbiAgWyd0cmVsbGlzcGxvdCddOiBERy5WSUVXRVIuVFJFTExJU19QTE9ULFxuICBbJ3dvcmRjbG91ZCddOiBERy5WSUVXRVIuV09SRF9DTE9VRCxcbn07XG5cbmNvbnN0IEZJTEVfSU5QVVRfVFlQRSA9ICdmaWxlJztcblxuZXhwb3J0IGNsYXNzIFJpY2hGdW5jdGlvblZpZXcgZXh0ZW5kcyBGdW5jdGlvblZpZXcge1xuICAvLyBlbWl0dGVkIHdoZW4gcnVuQnV0dG9uIGRpc2FiaWxpdHkgc2hvdWxkIGJlIGNoZWNrZWRcbiAgcHJpdmF0ZSBjaGVja0Rpc2FiaWxpdHkgPSBuZXcgU3ViamVjdCgpO1xuXG4gIC8vIHN0b3JlcyB0aGUgcnVubmluZyBzdGF0ZVxuICBwcml2YXRlIGlzUnVubmluZyA9IGZhbHNlO1xuXG4gIHN0YXRpYyBmcm9tRnVuY0NhbGwoXG4gICAgZnVuY0NhbGw6IERHLkZ1bmNDYWxsLFxuICAgIG9wdGlvbnM6IHtoaXN0b3J5RW5hYmxlZDogYm9vbGVhbiwgaXNUYWJiZWQ6IGJvb2xlYW59ID1cbiAgICB7aGlzdG9yeUVuYWJsZWQ6IHRydWUsIGlzVGFiYmVkOiBmYWxzZX1cbiAgKSB7XG4gICAgcmV0dXJuIG5ldyB0aGlzKGZ1bmNDYWxsLmZ1bmMubnFOYW1lLCBvcHRpb25zKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGZ1bmNOYW1lOiBzdHJpbmcsXG4gICAgcHVibGljIG9wdGlvbnM6IHsgaGlzdG9yeUVuYWJsZWQ6IGJvb2xlYW4sIGlzVGFiYmVkOiBib29sZWFufSA9XG4gICAge2hpc3RvcnlFbmFibGVkOiB0cnVlLCBpc1RhYmJlZDogZmFsc2V9XG4gICkge1xuICAgIHN1cGVyKGZ1bmNOYW1lLCBvcHRpb25zKTtcblxuICAgIHRoaXMub25GdW5jQ2FsbFJlYWR5LnN1YnNjcmliZSh7XG4gICAgICBjb21wbGV0ZTogKCkgPT4ge1xuICAgICAgICB0aGlzLmJhc2VQYXRoID0gYHNjcmlwdHMvJHt0aGlzLmZ1bmNDYWxsLmZ1bmMuaWR9L3ZpZXdgO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFNob3dpbmcgVUkgYWZ0ZXIgY29tcGxldGlvbiBvZiBmdW5jdGlvbiBjYWxsLlxuICAgKiBAcGFyYW0gcnVuRnVuY1xuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIG9uQWZ0ZXJSdW4ocnVuRnVuYzogREcuRnVuY0NhbGwpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLnRhYnNFbGVtLnJvb3Quc3R5bGUucmVtb3ZlUHJvcGVydHkoJ2Rpc3BsYXknKTtcbiAgICB0aGlzLnRhYnNFbGVtLnBhbmVzLmZvckVhY2goKHRhYikgPT4ge1xuICAgICAgdGFiLmhlYWRlci5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnZGlzcGxheScpO1xuICAgIH0pO1xuICAgIGNvbnN0IGZpcnN0T3V0cHV0VGFiID0gdGhpcy50YWJzRWxlbS5wYW5lcy5maW5kKCh0YWIpID0+IHRhYi5uYW1lICE9PSAnSW5wdXQnKTtcbiAgICBpZiAoZmlyc3RPdXRwdXRUYWIpIHRoaXMudGFic0VsZW0uY3VycmVudFBhbmUgPSBmaXJzdE91dHB1dFRhYjtcblxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSaWNoRnVuY3Rpb25WaWV3IGhhcyBhZGF2YW5jZWQgYXV0b21hdGljIFVJIGJ1aWxkZXIuIEl0IHRha2VzIHtAbGluayB0aGlzLmZ1bmNDYWxsfSBhcyBhIGJhc2UgYW5kIGNvbnN0cnVjdHMgZmxleGlibGUgdmlldy5cbiAgICogVGhpcyB2aWV3IGlzIHVwZGF0ZWQgYXV0b21hdGljYWxseSB3aGVuIHtAbGluayB0aGlzLmZ1bmNDYWxsUmVwbGFjZWR9IGlzIGVtaXR0ZWQgb3IgYW55IG9mIGlucHV0L291dHB1dCBwYXJhbSBjaGFuZ2VzLlxuICAgKiBAcmV0dXJucyBIVE1MRWxlbWVudCBhdHRhY2hlZCB0byB0aGUgcm9vdCBvZiB0aGUgdmlld1xuICAgKi9cbiAgcHVibGljIGJ1aWxkSU8oKTogSFRNTEVsZW1lbnQge1xuICAgIGNvbnN0IGlucHV0QmxvY2sgPSB0aGlzLmJ1aWxkSW5wdXRCbG9jaygpO1xuXG4gICAgdWkudG9vbHMuaGFuZGxlUmVzaXplKGlucHV0QmxvY2ssICh3aWR0aCkgPT4ge1xuICAgICAgaWYgKHdpZHRoIDwgMzUwKVxuICAgICAgICAkKGlucHV0QmxvY2suZmlyc3RDaGlsZCEpLmFkZENsYXNzKCd1aS1mb3JtLWNvbmRlbnNlZCcpO1xuICAgICAgZWxzZVxuICAgICAgICAkKGlucHV0QmxvY2suZmlyc3RDaGlsZCEpLnJlbW92ZUNsYXNzKCd1aS1mb3JtLWNvbmRlbnNlZCcpO1xuICAgIH0pO1xuXG4gICAgY29uc3Qgb3V0cHV0QmxvY2sgPSB0aGlzLmJ1aWxkT3V0cHV0QmxvY2soKTtcbiAgICBvdXRwdXRCbG9jay5zdHlsZS5oZWlnaHQgPSAnMTAwJSc7XG4gICAgb3V0cHV0QmxvY2suc3R5bGUud2lkdGggPSAnMTAwJSc7XG4gICAgdGhpcy50YWJzRWxlbS5yb290LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG5cbiAgICBpZiAoISF0aGlzLnRhYnNFbGVtLmdldFBhbmUoJ0lucHV0JykpIHtcbiAgICAgIHRoaXMudGFic0VsZW0ucGFuZXMuZm9yRWFjaCgodGFiKSA9PiB7XG4gICAgICAgIHRhYi5oZWFkZXIuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IG91dCA9IHVpLnNwbGl0SChbaW5wdXRCbG9jaywgdWkucGFuZWwoW291dHB1dEJsb2NrXSwge3N0eWxlOiB7J3BhZGRpbmctdG9wJzogJzBweCd9fSldLCBudWxsLCB0cnVlKTtcbiAgICBvdXQuc3R5bGUucGFkZGluZyA9ICcwIDEycHgnO1xuXG4gICAgaW5wdXRCbG9jay5wYXJlbnRFbGVtZW50IS5zdHlsZS5tYXhXaWR0aCA9ICc0NTBweCc7XG5cbiAgICByZXR1cm4gb3V0O1xuICB9XG5cbiAgcHVibGljIGJ1aWxkSW5wdXRCbG9jaygpOiBIVE1MRWxlbWVudCB7XG4gICAgY29uc3QgZm9ybURpdiA9IHRoaXMucmVuZGVyUnVuU2VjdGlvbigpO1xuXG4gICAgcmV0dXJuIGZvcm1EaXY7XG4gIH1cblxuICAvLyBNYWluIGVsZW1lbnQgb2YgdGhlIG91dHB1dCBibG9jay4gU3RvcmVzIGFsbCB0aGUgdGFicyBmb3IgdGhlIG91dHB1dCBhbmQgaW5wdXRcbiAgcHJpdmF0ZSB0YWJzRWxlbSA9IHVpLnRhYkNvbnRyb2woKTtcblxuICBwdWJsaWMgYnVpbGRPdXRwdXRCbG9jaygpOiBIVE1MRWxlbWVudCB7XG4gICAgdGhpcy50YWJzRWxlbS5yb290LnN0eWxlLndpZHRoID0gJzEwMCUnO1xuXG4gICAgdGhpcy50YWJzTGFiZWxzLmZvckVhY2goKHRhYkxhYmVsKSA9PiB7XG4gICAgICBjb25zdCB0YWJEZlByb3BzID0gdGhpcy5jYXRlZ29yeVRvUGFyYW1NYXBbdGFiTGFiZWxdLmZpbHRlcigocCkgPT4gcC5wcm9wZXJ0eVR5cGUgPT09IERHLlRZUEUuREFUQV9GUkFNRSk7XG4gICAgICBjb25zdCB0YWJTY2FsYXJQcm9wcyA9IHRoaXMuY2F0ZWdvcnlUb1BhcmFtTWFwW3RhYkxhYmVsXS5maWx0ZXIoKHApID0+IHAucHJvcGVydHlUeXBlICE9PSBERy5UWVBFLkRBVEFfRlJBTUUpO1xuXG4gICAgICAvLyBkZlByb3Aub3B0aW9uc1sndmlld2VyJ10gY291bGQgYmUgZW1wdHksIHNvIHdlIG5lZWQgdG8gY2hlY2sgaXRcbiAgICAgIGNvbnN0IHBhcnNlZFRhYkRmUHJvcHMgPSB0YWJEZlByb3BzLm1hcCgoZGZQcm9wKSA9PiAoZGZQcm9wLm9wdGlvbnNbJ3ZpZXdlciddICE9PSB1bmRlZmluZWQpID9cbiAgICAgICAgLy8gdHJ1ZSBhbmQgZmFsc2UgdmFsdWVzIGFyZSByZXRyaWV2ZWQgYXMgc3RyaW5nLCBzbyB3ZSBjYWxsIEpTT04ucGFyc2Ugb24gdGhlbSBvbmNlIG1vcmVcbiAgICAgICAgSlNPTi5wYXJzZShkZlByb3Aub3B0aW9uc1sndmlld2VyJ10sIChfLCB2KSA9PiB2ID09PSAndHJ1ZScgfHwgdiA9PT0gJ2ZhbHNlJyA/IEpTT04ucGFyc2Uodik6IHYpOlxuICAgICAgICBbXSk7XG5cbiAgICAgIGNvbnN0IGRmQmxvY2tzID0gdGFiRGZQcm9wcy5tYXAoKGRmUHJvcCwgZGZJbmRleCkgPT4ge1xuICAgICAgICBsZXQgZnVsbEJsb2NrV2lkdGggPSAwO1xuICAgICAgICBwYXJzZWRUYWJEZlByb3BzW2RmSW5kZXhdLmZvckVhY2goKF86IGFueSwgdmlld2VySW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICAgIGNvbnN0IGJsb2NrU2l6ZSA9IHBhcnNlZFRhYkRmUHJvcHNbZGZJbmRleF1bdmlld2VySW5kZXhdWydibG9jayddO1xuXG4gICAgICAgICAgZnVsbEJsb2NrV2lkdGggKz0gYmxvY2tTaXplID8gcGFyc2VJbnQoYmxvY2tTaXplKTogMDtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3Qgdmlld2VyczogUHJvbWlzZTxERy5WaWV3ZXJbXT4gPSBQcm9taXNlLmFsbChwYXJzZWRUYWJEZlByb3BzW2RmSW5kZXhdLm1hcChhc3luYyAodmlld2VyRGVzYzoge1trZXk6IHN0cmluZ106IHN0cmluZ30pID0+IHtcbiAgICAgICAgICBjb25zdCBpbml0aWFsVmFsdWU6IERHLkRhdGFGcmFtZSA9IHRoaXMuZnVuY0NhbGw/Lm91dHB1dHNbZGZQcm9wLm5hbWVdPy52YWx1ZSA/PyB0aGlzLmZ1bmNDYWxsIS5pbnB1dFBhcmFtc1tkZlByb3AubmFtZV0/LnZhbHVlID8/IGdyb2suZGF0YS5kZW1vLmRlbW9nKDEpO1xuXG4gICAgICAgICAgY29uc3Qgdmlld2VyID0gdmlld2VyVHlwZXNNYXBwaW5nW3ZpZXdlckRlc2NbJ3R5cGUnXV0gPyBERy5WaWV3ZXIuZnJvbVR5cGUodmlld2VyVHlwZXNNYXBwaW5nW3ZpZXdlckRlc2NbJ3R5cGUnXV0sIGluaXRpYWxWYWx1ZSk6IGF3YWl0IGluaXRpYWxWYWx1ZS5wbG90LmZyb21UeXBlKHZpZXdlckRlc2NbJ3R5cGUnXSkgYXMgREcuVmlld2VyO1xuICAgICAgICAgIHZpZXdlci5zZXRPcHRpb25zKHZpZXdlckRlc2MpO1xuXG4gICAgICAgICAgaWYgKHRoaXMuZGZUb1ZpZXdlck1hcHBpbmdbZGZQcm9wLm5hbWVdKSB0aGlzLmRmVG9WaWV3ZXJNYXBwaW5nW2RmUHJvcC5uYW1lXS5wdXNoKHZpZXdlcik7IGVsc2UgdGhpcy5kZlRvVmlld2VyTWFwcGluZ1tkZlByb3AubmFtZV0gPSBbdmlld2VyXTtcblxuICAgICAgICAgIHJldHVybiB2aWV3ZXI7XG4gICAgICAgIH0pKTtcblxuICAgICAgICB2aWV3ZXJzLnRoZW4oKGxvYWRlZFZpZXdlcnMpID0+IHtcbiAgICAgICAgICBjb25zdCBzdWJzY3JpYmVPbkZjQ2hhbmdlcyA9ICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRQYXJhbTogREcuRnVuY0NhbGxQYXJhbSA9IHRoaXMuZnVuY0NhbGwhLm91dHB1dFBhcmFtc1tkZlByb3AubmFtZV0gPz8gdGhpcy5mdW5jQ2FsbCEuaW5wdXRQYXJhbXNbZGZQcm9wLm5hbWVdO1xuXG4gICAgICAgICAgICBjdXJyZW50UGFyYW0ub25DaGFuZ2VkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgIGxvYWRlZFZpZXdlcnMuZm9yRWFjaChhc3luYyAodmlld2VyKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKE9iamVjdC52YWx1ZXModmlld2VyVHlwZXNNYXBwaW5nKS5pbmNsdWRlcyh2aWV3ZXIudHlwZSkpIHtcbiAgICAgICAgICAgICAgICAgIHZpZXdlci5kYXRhRnJhbWUgPSBjdXJyZW50UGFyYW0udmFsdWU7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIC8vIFVzZXItZGVmaW5lZCB2aWV3ZXJzIChlLmcuIE91dGxpZXJzU2VsZWN0aW9uVmlld2VyKSBjb3VsZCBjcmVhdGVkIG9ubHkgYXN5bmNocm9ub3VzbHlcbiAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld1ZpZXdlciA9IGF3YWl0IGN1cnJlbnRQYXJhbS52YWx1ZS5wbG90LmZyb21UeXBlKHZpZXdlci50eXBlKSBhcyBERy5WaWV3ZXI7XG4gICAgICAgICAgICAgICAgICB2aWV3ZXIucm9vdC5yZXBsYWNlV2l0aChuZXdWaWV3ZXIucm9vdCk7XG4gICAgICAgICAgICAgICAgICB2aWV3ZXIgPSBuZXdWaWV3ZXI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH07XG5cbiAgICAgICAgICBzdWJzY3JpYmVPbkZjQ2hhbmdlcygpO1xuICAgICAgICAgIHRoaXMuZnVuY0NhbGxSZXBsYWNlZC5zdWJzY3JpYmUoc3Vic2NyaWJlT25GY0NoYW5nZXMpO1xuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBkZkJsb2NrVGl0bGU6IHN0cmluZyA9IGRmUHJvcC5vcHRpb25zWydjYXB0aW9uJ10gPz8gZGZQcm9wLm5hbWU7XG5cbiAgICAgICAgY29uc3QgZGZCbG9jayA9IHVpLndhaXQoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGxvYWRlZFZpZXdlcnMgPSBhd2FpdCB2aWV3ZXJzO1xuICAgICAgICAgIHJldHVybiB1aS5kaXZIKFxuICAgICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgICAgICAgIGxvYWRlZFZpZXdlcnMubWFwKCh2aWV3ZXIpID0+IHZpZXdlci5yb290LCB7c3R5bGU6IHsnZmxleC13cmFwJzogJ3dyYXAnfX0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHRhYkxhYmVsID09PSAnSW5wdXQnKSB7XG4gICAgICAgICAgY29uc3Qgc3Vic2NyaWJlT25GY0NoYW5nZXMgPSAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50UGFyYW06IERHLkZ1bmNDYWxsUGFyYW0gPSB0aGlzLmZ1bmNDYWxsIS5vdXRwdXRQYXJhbXNbZGZQcm9wLm5hbWVdID8/IHRoaXMuZnVuY0NhbGwhLmlucHV0UGFyYW1zW2RmUHJvcC5uYW1lXTtcblxuICAgICAgICAgICAgY3VycmVudFBhcmFtLm9uQ2hhbmdlZC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLnRhYnNFbGVtLnJvb3Quc3R5bGUucmVtb3ZlUHJvcGVydHkoJ2Rpc3BsYXknKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH07XG5cbiAgICAgICAgICBzdWJzY3JpYmVPbkZjQ2hhbmdlcygpO1xuICAgICAgICAgIHRoaXMuZnVuY0NhbGxSZXBsYWNlZC5zdWJzY3JpYmUoc3Vic2NyaWJlT25GY0NoYW5nZXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHVpLmRpdlYoW1xuICAgICAgICAgIC8vIFJlbW92aW5nIHRpdGxlIG1hcmdpbiBvbiB0b3Agb2YgYmxvY2sgdGl0bGVzXG4gICAgICAgICAgdWkuaDIoZGZCbG9ja1RpdGxlLCB7Li4uKGRmSW5kZXggPiAwKSA/IHtzdHlsZTogeydtYXJnaW4tdG9wJzogJzBweCd9fSA6IHt9fSksXG4gICAgICAgICAgZGZCbG9ja1xuICAgICAgICBdLCB7c3R5bGU6IHsuLi4oZnVsbEJsb2NrV2lkdGggPiAwKSA/IHsnd2lkdGgnOiBgJHtmdWxsQmxvY2tXaWR0aH0lYH06IHsnd2lkdGgnOiBgMTAwJWB9fX0pO1xuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IGdlbmVyYXRlU2NhbGFyc1RhYmxlID0gKCkgPT4ge1xuICAgICAgICBjb25zdCB0YWJsZSA9IERHLkh0bWxUYWJsZS5jcmVhdGUoXG4gICAgICAgICAgdGFiU2NhbGFyUHJvcHMsXG4gICAgICAgICAgKHNjYWxhclByb3A6IERHLlByb3BlcnR5KSA9PiBbc2NhbGFyUHJvcC5uYW1lLCB0aGlzLmZ1bmNDYWxsPy5vdXRwdXRzW3NjYWxhclByb3AubmFtZV0sIHNjYWxhclByb3Aub3B0aW9uc1sndW5pdHMnXV1cbiAgICAgICAgKS5yb290O1xuICAgICAgICB0YWJsZS5zdHlsZS5tYXhXaWR0aCA9ICc0MDBweCc7XG4gICAgICAgIHJldHVybiB0YWJsZTtcbiAgICAgIH07XG5cbiAgICAgIGxldCBzY2FsYXJzVGFibGUgPSBnZW5lcmF0ZVNjYWxhcnNUYWJsZSgpO1xuXG4gICAgICB0YWJTY2FsYXJQcm9wcy5mb3JFYWNoKCh0YWJTY2FsYXJQcm9wKSA9PiB7XG4gICAgICAgIGNvbnN0IHN1YnNjcmliZU9uRmNDaGFuZ2VzID0gKCkgPT4ge1xuICAgICAgICAgICh0aGlzLmZ1bmNDYWxsIS5vdXRwdXRQYXJhbXNbdGFiU2NhbGFyUHJvcC5uYW1lXSBhcyBERy5GdW5jQ2FsbFBhcmFtKS5vbkNoYW5nZWQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5ld1NjYWxhcnNUYWJsZSA9IGdlbmVyYXRlU2NhbGFyc1RhYmxlKCk7XG4gICAgICAgICAgICBzY2FsYXJzVGFibGUucmVwbGFjZVdpdGgobmV3U2NhbGFyc1RhYmxlKTtcbiAgICAgICAgICAgIHNjYWxhcnNUYWJsZSA9IG5ld1NjYWxhcnNUYWJsZTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfTtcblxuICAgICAgICBzdWJzY3JpYmVPbkZjQ2hhbmdlcygpO1xuICAgICAgICB0aGlzLmZ1bmNDYWxsUmVwbGFjZWQuc3Vic2NyaWJlKHN1YnNjcmliZU9uRmNDaGFuZ2VzKTtcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBkZlNlY3Rpb25zID0gW10gYXMgSFRNTEVsZW1lbnRbXTtcbiAgICAgIGxldCBjdXJyZW50V2lkdGggPSAwO1xuICAgICAgbGV0IGN1cnJlbnRTZWN0aW9uID0gdWkuZGl2SChbXSwge3N0eWxlOiB7J21hcmdpbi1ib3R0b20nOiAnMjVweCd9fSk7IC8vIEFkZGluZyBzbWFsbCBtYXJnaW4gYmV0d2VlbiBzZWN0aW9uc1xuICAgICAgZGZCbG9ja3MuZm9yRWFjaCgoZGZCbG9jaywgZGZJbmRleCkgPT4ge1xuICAgICAgICBjb25zdCBibG9ja1dpZHRoID0gcGFyc2VJbnQoZGZCbG9jay5zdHlsZS53aWR0aCk7XG5cbiAgICAgICAgaWYgKGN1cnJlbnRXaWR0aCArIGJsb2NrV2lkdGggPT09IDEwMCkge1xuICAgICAgICAgIGN1cnJlbnRTZWN0aW9uLmFwcGVuZChkZkJsb2NrKTtcbiAgICAgICAgICBkZlNlY3Rpb25zLnB1c2goY3VycmVudFNlY3Rpb24pO1xuICAgICAgICAgIGN1cnJlbnRTZWN0aW9uID0gdWkuZGl2SChbXSk7XG4gICAgICAgICAgY3VycmVudFdpZHRoID0gMDtcbiAgICAgICAgfSBlbHNlIGlmIChjdXJyZW50V2lkdGggKyBibG9ja1dpZHRoIDwgMTAwKSB7XG4gICAgICAgICAgY3VycmVudFNlY3Rpb24uYXBwZW5kKGRmQmxvY2spO1xuICAgICAgICAgIGN1cnJlbnRXaWR0aCArPSBibG9ja1dpZHRoO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGRmU2VjdGlvbnMucHVzaChjdXJyZW50U2VjdGlvbik7XG4gICAgICAgICAgY3VycmVudFNlY3Rpb24gPSB1aS5kaXZIKFtdKTtcbiAgICAgICAgICBjdXJyZW50U2VjdGlvbi5hcHBlbmQoZGZCbG9jayk7XG4gICAgICAgICAgY3VycmVudFdpZHRoID0gYmxvY2tXaWR0aDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChkZkluZGV4ID09PSBkZkJsb2Nrcy5sZW5ndGggLSAxKVxuICAgICAgICAgIGRmU2VjdGlvbnMucHVzaChjdXJyZW50U2VjdGlvbik7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy50YWJzRWxlbS5hZGRQYW5lKHRhYkxhYmVsLCAoKSA9PiB7XG4gICAgICAgIHJldHVybiB1aS5kaXZWKFsuLi5kZlNlY3Rpb25zLCAuLi50YWJTY2FsYXJQcm9wcy5sZW5ndGggPyBbdWkuaDIoJ1NjYWxhciB2YWx1ZXMnKV06IFtdLCBzY2FsYXJzVGFibGVdKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgY29uc3Qgb3V0cHV0QmxvY2sgPSB1aS5ib3goKTtcbiAgICBvdXRwdXRCbG9jay5hcHBlbmQodGhpcy50YWJzRWxlbS5yb290KTtcblxuICAgIHJldHVybiBvdXRwdXRCbG9jaztcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBvbkFmdGVyTG9hZFJ1bihsb2FkZWRSdW46IERHLkZ1bmNDYWxsKSB7XG4gICAgd3UodGhpcy5mdW5jQ2FsbCEub3V0cHV0UGFyYW1zLnZhbHVlcygpIGFzIERHLkZ1bmNDYWxsUGFyYW1bXSkuZm9yRWFjaCgob3V0KSA9PiB7XG4gICAgICB0aGlzLmZ1bmNDYWxsIS5zZXRQYXJhbVZhbHVlKG91dC5uYW1lLCBsb2FkZWRSdW4ub3V0cHV0c1tvdXQubmFtZV0pO1xuICAgIH0pO1xuXG4gICAgd3UodGhpcy5mdW5jQ2FsbCEuaW5wdXRQYXJhbXMudmFsdWVzKCkgYXMgREcuRnVuY0NhbGxQYXJhbVtdKS5mb3JFYWNoKChpbnApID0+IHtcbiAgICAgIHRoaXMuZnVuY0NhbGwhLnNldFBhcmFtVmFsdWUoaW5wLm5hbWUsIGxvYWRlZFJ1bi5pbnB1dHNbaW5wLm5hbWVdKTtcbiAgICB9KTtcblxuICAgIHRoaXMudGFic0VsZW0ucm9vdC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnZGlzcGxheScpO1xuICAgIHRoaXMudGFic0VsZW0ucGFuZXMuZm9yRWFjaCgodGFiKSA9PiB7XG4gICAgICB0YWIuaGVhZGVyLnN0eWxlLnJlbW92ZVByb3BlcnR5KCdkaXNwbGF5Jyk7XG4gICAgfSk7XG4gIH1cblxuICAvLyBTdG9yZXMgbWFwcGluZyBiZXR3ZWVuIERGIGFuZCBpdHMnIHZpZXdlcnNcbiAgcHJpdmF0ZSBkZlRvVmlld2VyTWFwcGluZzoge1trZXk6IHN0cmluZ106IERHLlZpZXdlcltdfSA9IHt9O1xuXG4gIHByb3RlY3RlZCBnZXQgaXNJbnB1dFBhbmVsUmVxdWlyZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZnVuYz8uaW5wdXRzLnNvbWUoKHApID0+IHAucHJvcGVydHlUeXBlID09IERHLlRZUEUuREFUQV9GUkFNRSAmJiBwLm9wdGlvbnNbJ3ZpZXdlciddICE9IG51bGwpIHx8IGZhbHNlO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldCB0YWJzTGFiZWxzKCkge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLmNhdGVnb3J5VG9QYXJhbU1hcCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IGNhdGVnb3J5VG9QYXJhbU1hcCgpIHtcbiAgICBjb25zdCBtYXAgPSB7fSBhcyBSZWNvcmQ8c3RyaW5nLCBERy5Qcm9wZXJ0eVtdPjtcblxuICAgIGlmICh0aGlzLmlzSW5wdXRQYW5lbFJlcXVpcmVkKSB7XG4gICAgICB0aGlzLmZ1bmMhLmlucHV0cy5cbiAgICAgICAgZmlsdGVyKChwKSA9PiBwLnByb3BlcnR5VHlwZSA9PSBERy5UWVBFLkRBVEFfRlJBTUUgJiYgcC5vcHRpb25zWyd2aWV3ZXInXSAhPSBudWxsKS5cbiAgICAgICAgZm9yRWFjaCgocCkgPT4gbWFwWydJbnB1dCddID8gbWFwWydJbnB1dCddLnB1c2gocCk6IG1hcFsnSW5wdXQnXSA9IFtwXSk7XG4gICAgfVxuXG4gICAgdGhpcy5mdW5jIS5vdXRwdXRzLmZvckVhY2goKHApID0+IHtcbiAgICAgIGNvbnN0IGNhdGVnb3J5ID0gcC5jYXRlZ29yeSA9PT0gJ01pc2MnID8gJ091dHB1dCc6IHAuY2F0ZWdvcnk7XG5cbiAgICAgIGlmIChtYXBbY2F0ZWdvcnldKVxuICAgICAgICBtYXBbY2F0ZWdvcnldLnB1c2gocCk7XG4gICAgICBlbHNlXG4gICAgICAgIG1hcFtjYXRlZ29yeV0gPSBbcF07XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbWFwO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBkb1J1bigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLmlzUnVubmluZyA9IHRydWU7XG4gICAgdGhpcy5jaGVja0Rpc2FiaWxpdHkubmV4dCgpO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLnJ1bigpO1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgZ3Jvay5zaGVsbC5lcnJvcihlKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5pc1J1bm5pbmcgPSBmYWxzZTtcbiAgICAgIHRoaXMuY2hlY2tEaXNhYmlsaXR5Lm5leHQoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlbmRlclJ1blNlY3Rpb24oKTogSFRNTEVsZW1lbnQge1xuICAgIGNvbnN0IHJ1bkJ1dHRvbiA9IHVpLmJpZ0J1dHRvbignUnVuJywgYXN5bmMgKCkgPT4gYXdhaXQgdGhpcy5kb1J1bigpKTtcbiAgICAvLyBSRVBMQUNFIEJZIFRZUEUgR1VBUkRcbiAgICBjb25zdCBpc0Z1bmNTY3JpcHQgPSAoKSA9PiB7XG4gICAgICAvL0B0cy1pZ25vcmVcbiAgICAgIHJldHVybiAhIXRoaXMuZnVuYy5zY3JpcHQ7XG4gICAgfTtcbiAgICAvLyBUTyBETzogbW92ZSBidXR0b24gc29tZXdoZXJlXG4gICAgY29uc3Qgb3BlblNjcmlwdEJ0biA9IHVpLmJ1dHRvbignT3BlbiBzY3JpcHQnLCBhc3luYyAoKSA9PiB7XG4gICAgICB3aW5kb3cub3BlbihgJHt3aW5kb3cubG9jYXRpb24ub3JpZ2lufS9zY3JpcHQvJHsodGhpcy5mdW5jIGFzIERHLlNjcmlwdCkuaWR9YCwgJ19ibGFuaycpO1xuICAgIH0pO1xuICAgIC8vIGNvbnN0IGJ1dHRvbldyYXBwZXIgPSB1aS5kaXYoWy4uLnRoaXMub3B0aW9ucy5pc1RhYmJlZCAmJiBpc0Z1bmNTY3JpcHQoKSA/IFtvcGVuU2NyaXB0QnRuXTogW10sIHJ1bkJ1dHRvbl0pO1xuICAgIGNvbnN0IGJ1dHRvbldyYXBwZXIgPSB1aS5kaXYoW3J1bkJ1dHRvbl0pO1xuICAgIHVpLnRvb2x0aXAuYmluZChidXR0b25XcmFwcGVyLCAoKSA9PiBydW5CdXR0b24uZGlzYWJsZWQgPyAodGhpcy5pc1J1bm5pbmcgPyAnQ29tcHV0YXRpb25zIGFyZSBpbiBwcm9ncmVzcycgOiAnU29tZSBpbnB1dHMgYXJlIGludmFsaWQnKSA6ICcnKTtcblxuICAgIHRoaXMuY2hlY2tEaXNhYmlsaXR5LnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBjb25zdCBpc1ZhbGlkID0gKHd1KHRoaXMuZnVuY0NhbGwhLmlucHV0cy52YWx1ZXMoKSkuZXZlcnkoKHYpID0+IHYgIT09IG51bGwgJiYgdiAhPT0gdW5kZWZpbmVkKSkgJiYgIXRoaXMuaXNSdW5uaW5nO1xuICAgICAgcnVuQnV0dG9uLmRpc2FibGVkID0gIWlzVmFsaWQ7XG4gICAgfSk7XG5cbiAgICBjb25zdCBpbnB1dHMgPSB1aS5kaXZWKFtdLCAndWktZm9ybScpO1xuICAgIGxldCBwcmV2Q2F0ZWdvcnkgPSAnTWlzYyc7XG4gICAgd3UodGhpcy5mdW5jQ2FsbCEuaW5wdXRQYXJhbXMudmFsdWVzKCkgYXMgREcuRnVuY0NhbGxQYXJhbVtdKVxuICAgICAgLmZpbHRlcigodmFsKSA9PiAhIXZhbClcbiAgICAgIC5mb3JFYWNoKCh2YWwpID0+IHtcbiAgICAgICAgY29uc3QgcHJvcCA9IHZhbC5wcm9wZXJ0eTtcbiAgICAgICAgaWYgKHByb3AucHJvcGVydHlUeXBlLnRvU3RyaW5nKCkgPT09IEZJTEVfSU5QVVRfVFlQRSkge1xuICAgICAgICAgIGNvbnN0IHQgPSBVaVV0aWxzLmZpbGVJbnB1dChwcm9wLmNhcHRpb24gPz8gcHJvcC5uYW1lLCBudWxsLCAoZmlsZTogRmlsZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5mdW5jQ2FsbCEuaW5wdXRzW3Byb3AubmFtZV0gPSBmaWxlO1xuICAgICAgICAgICAgdGhpcy5jaGVja0Rpc2FiaWxpdHkubmV4dCgpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGlmIChwcm9wLmNhdGVnb3J5ICE9PSBwcmV2Q2F0ZWdvcnkpXG4gICAgICAgICAgICBpbnB1dHMuYXBwZW5kKHVpLmgyKHByb3AuY2F0ZWdvcnkpKTtcblxuICAgICAgICAgIHRoaXMuY2hlY2tEaXNhYmlsaXR5Lm5leHQoKTtcbiAgICAgICAgICBpbnB1dHMuYXBwZW5kKHQucm9vdCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbGV0IHQgPSBwcm9wLnByb3BlcnR5VHlwZSA9PT0gREcuVFlQRS5EQVRBX0ZSQU1FID9cbiAgICAgICAgICAgIHVpLnRhYmxlSW5wdXQocHJvcC5jYXB0aW9uID8/IHByb3AubmFtZSwgbnVsbCwgZ3Jvay5zaGVsbC50YWJsZXMpOlxuICAgICAgICAgICAgdWkuaW5wdXQuZm9yUHJvcGVydHkocHJvcCk7XG5cbiAgICAgICAgICB0LmlucHV0Lm9ua2V5ZG93biA9IGFzeW5jIChldikgPT4ge1xuICAgICAgICAgICAgaWYgKGV2LmtleSA9PSAnRW50ZXInKVxuICAgICAgICAgICAgICBhd2FpdCB0aGlzLmRvUnVuKCk7XG4gICAgICAgICAgfTtcblxuICAgICAgICAgIHQuY2FwdGlvbkxhYmVsLmZpcnN0Q2hpbGQhLnJlcGxhY2VXaXRoKHVpLnNwYW4oW3Byb3AuY2FwdGlvbiA/PyBwcm9wLm5hbWVdKSk7XG4gICAgICAgICAgaWYgKHByb3Aub3B0aW9uc1sndW5pdHMnXSkgdC5hZGRQb3N0Zml4KHByb3Aub3B0aW9uc1sndW5pdHMnXSk7XG5cbiAgICAgICAgICBjb25zdCBzdWJzY3JpYmVPbkZjQ2hhbmdlcyA9ICgpID0+IHtcbiAgICAgICAgICAgIHQudmFsdWUgPSB0aGlzLmZ1bmNDYWxsIS5pbnB1dHNbdmFsLm5hbWVdID8/IHByb3AuZGVmYXVsdFZhbHVlID8/IG51bGw7XG4gICAgICAgICAgICB0aGlzLmZ1bmNDYWxsIS5pbnB1dHNbdmFsLm5hbWVdID0gdGhpcy5mdW5jQ2FsbCEuaW5wdXRzW3ZhbC5uYW1lXSA/PyBwcm9wLmRlZmF1bHRWYWx1ZSA/PyBudWxsO1xuICAgICAgICAgIH07XG5cbiAgICAgICAgICBzdWJzY3JpYmVPbkZjQ2hhbmdlcygpO1xuICAgICAgICAgIHRoaXMuZnVuY0NhbGxSZXBsYWNlZC5zdWJzY3JpYmUoc3Vic2NyaWJlT25GY0NoYW5nZXMpO1xuXG4gICAgICAgICAgdC5vbkNoYW5nZWQoKCkgPT4ge1xuICAgICAgICAgICAgLy8gUmVzb2x2aW5nIGNhc2Ugb2YgcHJvcGVydHlUeXBlID0gREFUQUZSQU1FXG4gICAgICAgICAgICBpZiAoISF0LnByb3BlcnR5KSByZXR1cm47XG5cbiAgICAgICAgICAgIHRoaXMuZnVuY0NhbGwhLmlucHV0c1t2YWwubmFtZV0gPSB0LnZhbHVlO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgdC5vbklucHV0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZnVuY0NhbGwhLmlucHV0c1t2YWwubmFtZV0gPSB0LnZhbHVlO1xuICAgICAgICAgICAgaWYgKHQudmFsdWUgPT09IG51bGwpIHNldFRpbWVvdXQoKCkgPT4gdC5pbnB1dC5jbGFzc0xpc3QuYWRkKCdkNC1pbnZhbGlkJyksIDEwMCk7IGVsc2UgdC5pbnB1dC5jbGFzc0xpc3QucmVtb3ZlKCdkNC1pbnZhbGlkJyk7IDtcblxuICAgICAgICAgICAgdGhpcy5jaGVja0Rpc2FiaWxpdHkubmV4dCgpO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgdmFsLm9uQ2hhbmdlZC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLmZ1bmNDYWxsIS5pbnB1dHNbdmFsLm5hbWVdO1xuXG4gICAgICAgICAgICBpZiAodmFsLnByb3BlcnR5LnByb3BlcnR5VHlwZSA9PT0gREcuVFlQRS5EQVRBX0ZSQU1FKSB7XG4gICAgICAgICAgICAgIC8vIERFQUxJTkcgV0lUSCBCVUc6IGh0dHBzOi8vcmVkZGF0YS5hdGxhc3NpYW4ubmV0L2Jyb3dzZS9HUk9LLTEyMjIzXG4gICAgICAgICAgICAgIGNvbnN0IG5ld1RhYmxlSW5wdXQgPSB1aS50YWJsZUlucHV0KHByb3AuY2FwdGlvbiA/PyBwcm9wLm5hbWUsIG5ld1ZhbHVlLCBbLi4uZ3Jvay5zaGVsbC50YWJsZXMsIG5ld1ZhbHVlXSk7XG4gICAgICAgICAgICAgIHQucm9vdC5yZXBsYWNlV2l0aChuZXdUYWJsZUlucHV0LnJvb3QpO1xuICAgICAgICAgICAgICB0ID0gbmV3VGFibGVJbnB1dDtcblxuICAgICAgICAgICAgICB0Lm9uSW5wdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZnVuY0NhbGwhLmlucHV0c1t2YWwubmFtZV0gPSB0LnZhbHVlO1xuICAgICAgICAgICAgICAgIGlmICh0LnZhbHVlID09PSBudWxsKSBzZXRUaW1lb3V0KCgpID0+IHQuaW5wdXQuY2xhc3NMaXN0LmFkZCgnZDQtaW52YWxpZCcpLCAxMDApOyBlbHNlIHQuaW5wdXQuY2xhc3NMaXN0LnJlbW92ZSgnZDQtaW52YWxpZCcpOyA7XG5cbiAgICAgICAgICAgICAgICB0aGlzLmNoZWNrRGlzYWJpbGl0eS5uZXh0KCk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdC5ub3RpZnkgPSBmYWxzZTtcbiAgICAgICAgICAgICAgdC52YWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAgICAgICAgICB0Lm5vdGlmeSA9IHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuY2hlY2tEaXNhYmlsaXR5Lm5leHQoKTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIGlmIChwcm9wLmNhdGVnb3J5ICE9PSBwcmV2Q2F0ZWdvcnkpXG4gICAgICAgICAgICBpbnB1dHMuYXBwZW5kKHVpLmgyKHByb3AuY2F0ZWdvcnkpKTtcblxuICAgICAgICAgIGlmICh0LnZhbHVlID09PSBudWxsKSBydW5CdXR0b24uZGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICAgIGlucHV0cy5hcHBlbmQodC5yb290KTtcbiAgICAgICAgfVxuICAgICAgICBwcmV2Q2F0ZWdvcnkgPSBwcm9wLmNhdGVnb3J5O1xuICAgICAgfSk7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IGJ1dHRvbnMgPSB1aS5idXR0b25zSW5wdXQoW2J1dHRvbldyYXBwZXJdKTtcbiAgICBpbnB1dHMuYXBwZW5kKGJ1dHRvbnMpO1xuICAgIGlucHV0cy5jbGFzc0xpc3QucmVtb3ZlKCd1aS1wYW5lbCcpO1xuICAgIGlucHV0cy5zdHlsZS5wYWRkaW5nVG9wID0gJzBweCc7XG4gICAgaW5wdXRzLnN0eWxlLnBhZGRpbmdMZWZ0ID0gJzBweCc7XG5cbiAgICByZXR1cm4gdWkuZGl2KFtpbnB1dHNdKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSaWNoRnVuY3Rpb25WaWV3IGtub3cgZXZlcnl0aGluZyBhYm91dCBpdHMgVUksIHNvIGl0IGV4cG9ydHMgbm90IG9ubHkgZGF0YSwgYnV0IGFsc28gdmlld2VyIHNjcmVlbnNob3RzLlxuICAgKiBUaGlzIGZ1bmN0aW9uIGl0ZXJhdGVzIG92ZXIgYWxsIG9mIHRoZSB0YWJzIGFuZCBzZXF1ZW50YWxseSBleHBvcnRzIGFsbCBkYXRhZnJhbWVzLCB0aGVpciB2aWV3ZXJzIGFuZCBzY2FsYXJzLlxuICAgKiBAcGFyYW0gZm9ybWF0IGZvcm1hdCBuZWVkZWQgdG8gZXhwb3J0LiBTZWUge0BsaW5rIHRoaXMuZGVmYXVsdFN1cHBvcnRlZEV4cG9ydEZvcm1hdHN9IGZvciBhdmFpbGFibGUgZm9ybWF0cy5cbiAgICogQHJldHVybnMgUHJvbWlzZTxCbG9iPiB3aXRoIGRhdGEgcmVhZHkgZm9yIGRvd25sb2FkXG4gICAqL1xuICBwcm90ZWN0ZWQgZGVmYXVsdEV4cG9ydCA9IGFzeW5jIChmb3JtYXQ6IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IGxhc3RDYWxsID0gdGhpcy5sYXN0Q2FsbDtcbiAgICBpZiAoIWxhc3RDYWxsKSB0aHJvdyBuZXcgRXJyb3IoYEZ1bmN0aW9uIHdhcyBub3QgY2FsbGVkYCk7XG5cbiAgICBpZiAoIXRoaXMuZXhwb3J0Q29uZmlnIS5zdXBwb3J0ZWRGb3JtYXRzLmluY2x1ZGVzKGZvcm1hdCkpIHRocm93IG5ldyBFcnJvcihgRm9ybWF0IFwiJHtmb3JtYXR9XCIgaXMgbm90IHN1cHBvcnRlZC5gKTtcblxuICAgIGlmICghdGhpcy5mdW5jKSB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBjb3JyZXNwb2RpbmcgZnVuY3Rpb24gaXMgbm90IHNwZWNpZmllZCcpO1xuXG4gICAgY29uc3QgQkxPQl9UWVBFID0gJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0O2NoYXJzZXQ9VVRGLTgnO1xuICAgIGNvbnN0IGV4cG9ydFdvcmtib29rID0gbmV3IEV4Y2VsSlMuV29ya2Jvb2soKTtcblxuICAgIGNvbnN0IGlzU2NhbGFyVHlwZSA9ICh0eXBlOiBERy5UWVBFKSA9PiAoREcuVFlQRVNfU0NBTEFSLmhhcyh0eXBlKSk7XG5cbiAgICBjb25zdCBpc0RhdGFGcmFtZSA9ICh0eXBlOiBERy5UWVBFKSA9PiAodHlwZSA9PT0gREcuVFlQRS5EQVRBX0ZSQU1FKTtcblxuICAgIGNvbnN0IGRmSW5wdXRzID0gdGhpcy5mdW5jLmlucHV0cy5maWx0ZXIoKGlucHV0KSA9PiBpc0RhdGFGcmFtZShpbnB1dC5wcm9wZXJ0eVR5cGUpKTtcbiAgICBjb25zdCBzY2FsYXJJbnB1dHMgPSB0aGlzLmZ1bmMuaW5wdXRzLmZpbHRlcigoaW5wdXQpID0+IGlzU2NhbGFyVHlwZShpbnB1dC5wcm9wZXJ0eVR5cGUpKTtcbiAgICBjb25zdCBkZk91dHB1dHMgPSB0aGlzLmZ1bmMub3V0cHV0cy5maWx0ZXIoKG91dHB1dCkgPT4gaXNEYXRhRnJhbWUob3V0cHV0LnByb3BlcnR5VHlwZSkpO1xuICAgIGNvbnN0IHNjYWxhck91dHB1dHMgPSB0aGlzLmZ1bmMub3V0cHV0cy5maWx0ZXIoKG91dHB1dCkgPT4gaXNTY2FsYXJUeXBlKG91dHB1dC5wcm9wZXJ0eVR5cGUpKTtcblxuICAgIGNvbnN0IGlucHV0UGFyYW1zID0gWy4uLmxhc3RDYWxsLmlucHV0UGFyYW1zLnZhbHVlcygpXSBhcyBERy5GdW5jQ2FsbFBhcmFtW107XG4gICAgY29uc3Qgb3V0cHV0UGFyYW1zID0gWy4uLmxhc3RDYWxsLm91dHB1dFBhcmFtcy52YWx1ZXMoKV0gYXMgREcuRnVuY0NhbGxQYXJhbVtdO1xuXG4gICAgZGZJbnB1dHMuZm9yRWFjaCgoZGZJbnB1dCkgPT4ge1xuICAgICAgY29uc3QgdmlzaWJsZVRpdGxlID0gZGZJbnB1dC5vcHRpb25zLmNhcHRpb24gfHwgZGZJbnB1dC5uYW1lO1xuICAgICAgY29uc3QgY3VycmVudERmU2hlZXQgPSBleHBvcnRXb3JrYm9vay5hZGRXb3Jrc2hlZXQoZ2V0U2hlZXROYW1lKHZpc2libGVUaXRsZSwgRElSRUNUSU9OLklOUFVUKSk7XG5cbiAgICAgIGNvbnN0IGN1cnJlbnREZiA9IChsYXN0Q2FsbC5pbnB1dHNbZGZJbnB1dC5uYW1lXSBhcyBERy5EYXRhRnJhbWUpO1xuICAgICAgZGZUb1NoZWV0KGN1cnJlbnREZlNoZWV0LCBjdXJyZW50RGYpO1xuICAgIH0pO1xuXG4gICAgaWYgKHNjYWxhcklucHV0cy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IGlucHV0U2NhbGFyc1NoZWV0ID0gZXhwb3J0V29ya2Jvb2suYWRkV29ya3NoZWV0KCdJbnB1dCBzY2FsYXJzJyk7XG4gICAgICBzY2FsYXJzVG9TaGVldChpbnB1dFNjYWxhcnNTaGVldCwgc2NhbGFySW5wdXRzLm1hcCgoc2NhbGFySW5wdXQpID0+ICh7XG4gICAgICAgIGNhcHRpb246IHNjYWxhcklucHV0Lm9wdGlvbnNbJ2NhcHRpb24nXSB8fCBzY2FsYXJJbnB1dC5uYW1lLFxuICAgICAgICB2YWx1ZTogbGFzdENhbGwuaW5wdXRzW3NjYWxhcklucHV0Lm5hbWVdLFxuICAgICAgICB1bml0czogc2NhbGFySW5wdXQub3B0aW9uc1sndW5pdHMnXSB8fCAnJyxcbiAgICAgIH0pKSk7XG4gICAgfVxuXG4gICAgZGZPdXRwdXRzLmZvckVhY2goKGRmT3V0cHV0KSA9PiB7XG4gICAgICBjb25zdCB2aXNpYmxlVGl0bGUgPSBkZk91dHB1dC5vcHRpb25zLmNhcHRpb24gfHwgZGZPdXRwdXQubmFtZTtcbiAgICAgIGNvbnN0IGN1cnJlbnREZlNoZWV0ID0gZXhwb3J0V29ya2Jvb2suYWRkV29ya3NoZWV0KGdldFNoZWV0TmFtZSh2aXNpYmxlVGl0bGUsIERJUkVDVElPTi5PVVRQVVQpKTtcblxuICAgICAgY29uc3QgY3VycmVudERmID0gKGxhc3RDYWxsLm91dHB1dHNbZGZPdXRwdXQubmFtZV0gYXMgREcuRGF0YUZyYW1lKTtcbiAgICAgIGRmVG9TaGVldChjdXJyZW50RGZTaGVldCwgY3VycmVudERmKTtcbiAgICB9KTtcblxuXG4gICAgaWYgKHNjYWxhck91dHB1dHMubGVuZ3RoKSB7XG4gICAgICBjb25zdCBvdXRwdXRTY2FsYXJzU2hlZXQgPSBleHBvcnRXb3JrYm9vay5hZGRXb3Jrc2hlZXQoJ091dHB1dCBzY2FsYXJzJyk7XG4gICAgICBzY2FsYXJzVG9TaGVldChvdXRwdXRTY2FsYXJzU2hlZXQsIHNjYWxhck91dHB1dHMubWFwKChzY2FsYXJPdXRwdXQpID0+ICh7XG4gICAgICAgIGNhcHRpb246IHNjYWxhck91dHB1dC5vcHRpb25zWydjYXB0aW9uJ10gfHwgc2NhbGFyT3V0cHV0Lm5hbWUsXG4gICAgICAgIHZhbHVlOiBsYXN0Q2FsbC5vdXRwdXRzW3NjYWxhck91dHB1dC5uYW1lXSxcbiAgICAgICAgdW5pdHM6IHNjYWxhck91dHB1dC5vcHRpb25zWyd1bml0cyddIHx8ICcnLFxuICAgICAgfSkpKTtcbiAgICB9XG5cbiAgICBjb25zdCB0YWJDb250cm9sID0gdGhpcy50YWJzRWxlbTtcbiAgICBmb3IgKGNvbnN0IHRhYkxhYmVsIG9mIHRoaXMudGFic0xhYmVscykge1xuICAgICAgdGFiQ29udHJvbC5jdXJyZW50UGFuZSA9IHRhYkNvbnRyb2wuZ2V0UGFuZSh0YWJMYWJlbCk7XG4gICAgICBhd2FpdCBuZXcgUHJvbWlzZSgocikgPT4gc2V0VGltZW91dChyLCAxMDApKTtcbiAgICAgIGlmICh0YWJMYWJlbCA9PT0gJ0lucHV0Jykge1xuICAgICAgICBmb3IgKGNvbnN0IGlucHV0UGFyYW0gb2YgaW5wdXRQYXJhbXMuZmlsdGVyKChpbnB1dFBhcmFtKSA9PiBpbnB1dFBhcmFtLnByb3BlcnR5LnByb3BlcnR5VHlwZSA9PT0gREcuVFlQRS5EQVRBX0ZSQU1FKSkge1xuICAgICAgICAgIGNvbnN0IG5vbkdyaWRWaWV3ZXJzID0gdGhpcy5kZlRvVmlld2VyTWFwcGluZ1tpbnB1dFBhcmFtLm5hbWVdXG4gICAgICAgICAgICAuZmlsdGVyKCh2aWV3ZXIpID0+IHZpZXdlci50eXBlICE9PSBERy5WSUVXRVIuR1JJRClcbiAgICAgICAgICAgIC5maWx0ZXIoKHZpZXdlcikgPT4gT2JqZWN0LnZhbHVlcyh2aWV3ZXJUeXBlc01hcHBpbmcpLmluY2x1ZGVzKHZpZXdlci50eXBlKSk7XG5cbiAgICAgICAgICBjb25zdCBkZklucHV0ID0gZGZJbnB1dHMuZmluZCgoaW5wdXQpID0+IGlucHV0Lm5hbWUgPT09IGlucHV0UGFyYW0ubmFtZSk7XG4gICAgICAgICAgY29uc3QgdmlzaWJsZVRpdGxlID0gZGZJbnB1dCEub3B0aW9ucy5jYXB0aW9uIHx8IGlucHV0UGFyYW0ubmFtZTtcbiAgICAgICAgICBjb25zdCBjdXJyZW50RGYgPSAobGFzdENhbGwuaW5wdXRzW2RmSW5wdXQhLm5hbWVdIGFzIERHLkRhdGFGcmFtZSk7XG5cbiAgICAgICAgICBmb3IgKGNvbnN0IFtpbmRleCwgdmlld2VyXSBvZiBub25HcmlkVmlld2Vycy5lbnRyaWVzKCkpIHtcbiAgICAgICAgICAgIGF3YWl0IHBsb3RUb1NoZWV0KFxuICAgICAgICAgICAgICBleHBvcnRXb3JrYm9vayxcbiAgICAgICAgICAgICAgZXhwb3J0V29ya2Jvb2suZ2V0V29ya3NoZWV0KGdldFNoZWV0TmFtZSh2aXNpYmxlVGl0bGUsIERJUkVDVElPTi5JTlBVVCkpLFxuICAgICAgICAgICAgICB2aWV3ZXIucm9vdCxcbiAgICAgICAgICAgICAgY3VycmVudERmLmNvbHVtbnMubGVuZ3RoICsgMixcbiAgICAgICAgICAgICAgKGluZGV4ID4gMCkgPyBNYXRoLmNlaWwobm9uR3JpZFZpZXdlcnNbaW5kZXgtMV0ucm9vdC5jbGllbnRIZWlnaHQgLyAyMCkgKyAxIDogMFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmb3IgKGNvbnN0IG91dHB1dFBhcmFtIG9mIG91dHB1dFBhcmFtcy5maWx0ZXIoXG4gICAgICAgICAgKG91dHB1dFBhcmFtKSA9PiBvdXRwdXRQYXJhbS5wcm9wZXJ0eS5wcm9wZXJ0eVR5cGUgPT09IERHLlRZUEUuREFUQV9GUkFNRSAmJlxuICAgICAgICAgIChcbiAgICAgICAgICAgICh0YWJMYWJlbCA9PT0gJ091dHB1dCcgJiYgb3V0cHV0UGFyYW0ucHJvcGVydHkuY2F0ZWdvcnkgPT09ICdNaXNjJyB8fCBvdXRwdXRQYXJhbS5wcm9wZXJ0eS5jYXRlZ29yeSA9PT0gJ091dHB1dCcpIHx8XG4gICAgICAgICAgICAodGFiTGFiZWwgIT09ICdPdXRwdXQnICYmIG91dHB1dFBhcmFtLnByb3BlcnR5LmNhdGVnb3J5ID09PSB0YWJMYWJlbClcbiAgICAgICAgICApXG4gICAgICAgICkpIHtcbiAgICAgICAgICBjb25zdCBub25HcmlkVmlld2VycyA9IHRoaXMuZGZUb1ZpZXdlck1hcHBpbmdbb3V0cHV0UGFyYW0ucHJvcGVydHkubmFtZV1cbiAgICAgICAgICAgIC5maWx0ZXIoKHZpZXdlcikgPT4gdmlld2VyLnR5cGUgIT09IERHLlZJRVdFUi5HUklEKVxuICAgICAgICAgICAgLmZpbHRlcigodmlld2VyKSA9PiBPYmplY3QudmFsdWVzKHZpZXdlclR5cGVzTWFwcGluZykuaW5jbHVkZXModmlld2VyLnR5cGUpKTtcblxuICAgICAgICAgIGNvbnN0IGRmT3V0cHV0ID0gZGZPdXRwdXRzLmZpbmQoKG91dHB1dCkgPT4gb3V0cHV0Lm5hbWUgPT09IG91dHB1dFBhcmFtLnByb3BlcnR5Lm5hbWUpITtcbiAgICAgICAgICBjb25zdCB2aXNpYmxlVGl0bGUgPSBkZk91dHB1dC5vcHRpb25zLmNhcHRpb24gfHwgb3V0cHV0UGFyYW0ucHJvcGVydHkubmFtZTtcbiAgICAgICAgICBjb25zdCBjdXJyZW50RGYgPSAobGFzdENhbGwub3V0cHV0c1tkZk91dHB1dC5uYW1lXSBhcyBERy5EYXRhRnJhbWUpO1xuXG4gICAgICAgICAgZm9yIChjb25zdCBbaW5kZXgsIHZpZXdlcl0gb2Ygbm9uR3JpZFZpZXdlcnMuZW50cmllcygpKSB7XG4gICAgICAgICAgICBpZiAodmlld2VyLnR5cGUgPT09IERHLlZJRVdFUi5TVEFUSVNUSUNTKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGxlbmd0aCA9IGN1cnJlbnREZi5jb2x1bW5zLmxlbmd0aDtcbiAgICAgICAgICAgICAgY29uc3Qgc3RhdHMgPSBERy5EYXRhRnJhbWUuZnJvbUNvbHVtbnMoW1xuICAgICAgICAgICAgICAgIERHLkNvbHVtbi5zdHJpbmcoJ05hbWUnLCBsZW5ndGgpLmluaXQoKGk6IG51bWJlcikgPT4gY3VycmVudERmLmNvbHVtbnMuYnlJbmRleChpKS5uYW1lKSxcbiAgICAgICAgICAgICAgICBERy5Db2x1bW4uaW50KCdWYWx1ZXMnLCBsZW5ndGgpLmluaXQoKGk6IG51bWJlcikgPT4gY3VycmVudERmLmNvbHVtbnMuYnlJbmRleChpKS5zdGF0cy52YWx1ZUNvdW50KSxcbiAgICAgICAgICAgICAgICBERy5Db2x1bW4uaW50KCdOdWxscycsIGxlbmd0aCkuaW5pdCgoaTogbnVtYmVyKSA9PiBjdXJyZW50RGYuY29sdW1ucy5ieUluZGV4KGkpLnN0YXRzLm1pc3NpbmdWYWx1ZUNvdW50KSxcbiAgICAgICAgICAgICAgICBERy5Db2x1bW4uZmxvYXQoJ01pbicsIGxlbmd0aCkuaW5pdCgoaTogbnVtYmVyKSA9PiBjdXJyZW50RGYuY29sdW1ucy5ieUluZGV4KGkpLnN0YXRzLm1pbiksXG4gICAgICAgICAgICAgICAgREcuQ29sdW1uLmZsb2F0KCdNYXgnLCBsZW5ndGgpLmluaXQoKGk6IG51bWJlcikgPT4gY3VycmVudERmLmNvbHVtbnMuYnlJbmRleChpKS5zdGF0cy5tYXgpLFxuICAgICAgICAgICAgICAgIERHLkNvbHVtbi5mbG9hdCgnQXZnJywgbGVuZ3RoKS5pbml0KChpOiBudW1iZXIpID0+IGN1cnJlbnREZi5jb2x1bW5zLmJ5SW5kZXgoaSkuc3RhdHMuYXZnKSxcbiAgICAgICAgICAgICAgICBERy5Db2x1bW4uZmxvYXQoJ1N0ZGV2JywgbGVuZ3RoKS5pbml0KChpOiBudW1iZXIpID0+IGN1cnJlbnREZi5jb2x1bW5zLmJ5SW5kZXgoaSkuc3RhdHMuc3RkZXYpLFxuICAgICAgICAgICAgICBdKTtcbiAgICAgICAgICAgICAgZGZUb1NoZWV0KFxuICAgICAgICAgICAgICAgIGV4cG9ydFdvcmtib29rLmdldFdvcmtzaGVldChnZXRTaGVldE5hbWUodmlzaWJsZVRpdGxlLCBESVJFQ1RJT04uT1VUUFVUKSksXG4gICAgICAgICAgICAgICAgc3RhdHMsXG4gICAgICAgICAgICAgICAgY3VycmVudERmLmNvbHVtbnMubGVuZ3RoICsgMixcbiAgICAgICAgICAgICAgICAoaW5kZXggPiAwKSA/IE1hdGguY2VpbChub25HcmlkVmlld2Vyc1tpbmRleC0xXS5yb290LmNsaWVudEhlaWdodCAvIDIwKSArIDEgOiAwXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBhd2FpdCBwbG90VG9TaGVldChcbiAgICAgICAgICAgICAgICBleHBvcnRXb3JrYm9vayxcbiAgICAgICAgICAgICAgICBleHBvcnRXb3JrYm9vay5nZXRXb3Jrc2hlZXQoZ2V0U2hlZXROYW1lKHZpc2libGVUaXRsZSwgRElSRUNUSU9OLk9VVFBVVCkpLFxuICAgICAgICAgICAgICAgIHZpZXdlci5yb290LFxuICAgICAgICAgICAgICAgIGN1cnJlbnREZi5jb2x1bW5zLmxlbmd0aCArIDIsXG4gICAgICAgICAgICAgICAgKGluZGV4ID4gMCkgPyBNYXRoLmNlaWwobm9uR3JpZFZpZXdlcnNbaW5kZXgtMV0ucm9vdC5jbGllbnRIZWlnaHQgLyAyMCkgKyAxIDogMFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9O1xuICAgIGNvbnN0IGJ1ZmZlciA9IGF3YWl0IGV4cG9ydFdvcmtib29rLnhsc3gud3JpdGVCdWZmZXIoKTtcblxuICAgIHJldHVybiBuZXcgQmxvYihbYnVmZmVyXSwge3R5cGU6IEJMT0JfVFlQRX0pO1xuICB9O1xuXG4gIGV4cG9ydENvbmZpZyA9IHtcbiAgICBzdXBwb3J0ZWRFeHRlbnNpb25zOiB0aGlzLmRlZmF1bHRTdXBwb3J0ZWRFeHBvcnRFeHRlbnNpb25zKCksXG4gICAgc3VwcG9ydGVkRm9ybWF0czogdGhpcy5kZWZhdWx0U3VwcG9ydGVkRXhwb3J0Rm9ybWF0cygpLFxuICAgIGV4cG9ydDogdGhpcy5kZWZhdWx0RXhwb3J0LFxuICAgIGZpbGVuYW1lOiB0aGlzLmRlZmF1bHRFeHBvcnRGaWxlbmFtZSxcbiAgfTtcbn1cblxuY29uc3QgZ2V0U2hlZXROYW1lID0gKG5hbWU6IHN0cmluZywgZGlyZWN0aW9uOiBESVJFQ1RJT04pID0+IHtcbiAgY29uc3QgaWRlYWxOYW1lID0gYCR7ZGlyZWN0aW9ufSAtICR7bmFtZX1gO1xuICByZXR1cm4gKGlkZWFsTmFtZS5sZW5ndGggPiAzMSkgPyBuYW1lLnN1YnN0cmluZygwLCAzMikgOiBpZGVhbE5hbWU7XG59O1xuXG5lbnVtIERJUkVDVElPTiB7XG4gIElOUFVUID0gJ0lucHV0JyxcbiAgT1VUUFVUID0gJ091dHB1dCdcbn1cblxuY29uc3Qgc2NhbGFyc1RvU2hlZXQgPSAoc2hlZXQ6IEV4Y2VsSlMuV29ya3NoZWV0LCBzY2FsYXJzOiB7IGNhcHRpb246IHN0cmluZywgdmFsdWU6IHN0cmluZywgdW5pdHM6IHN0cmluZyB9W10pID0+IHtcbiAgc2hlZXQuYWRkUm93KFsnUGFyYW1ldGVyJywgJ1ZhbHVlJywgJ1VuaXRzJ10pLmZvbnQgPSB7Ym9sZDogdHJ1ZX07XG4gIHNjYWxhcnMuZm9yRWFjaCgoc2NhbGFyKSA9PiB7XG4gICAgc2hlZXQuYWRkUm93KFtzY2FsYXIuY2FwdGlvbiwgc2NhbGFyLnZhbHVlLCBzY2FsYXIudW5pdHNdKTtcbiAgfSk7XG5cbiAgc2hlZXQuZ2V0Q29sdW1uKDEpLndpZHRoID0gTWF0aC5tYXgoXG4gICAgLi4uc2NhbGFycy5tYXAoKHNjYWxhcikgPT4gc2NhbGFyLmNhcHRpb24udG9TdHJpbmcoKS5sZW5ndGgpLCAnUGFyYW1ldGVyJy5sZW5ndGhcbiAgKSAqIDEuMjtcbiAgc2hlZXQuZ2V0Q29sdW1uKDIpLndpZHRoID0gTWF0aC5tYXgoLi4uc2NhbGFycy5tYXAoKHNjYWxhcikgPT4gc2NhbGFyLnZhbHVlLnRvU3RyaW5nKCkubGVuZ3RoKSwgJ1ZhbHVlJy5sZW5ndGgpICogMS4yO1xuICBzaGVldC5nZXRDb2x1bW4oMykud2lkdGggPSBNYXRoLm1heCguLi5zY2FsYXJzLm1hcCgoc2NhbGFyKSA9PiBzY2FsYXIudW5pdHMudG9TdHJpbmcoKS5sZW5ndGgpLCAnVW5pdHMnLmxlbmd0aCkgKiAxLjI7XG59O1xuXG5jb25zdCBkZlRvU2hlZXQgPSAoc2hlZXQ6IEV4Y2VsSlMuV29ya3NoZWV0LCBkZjogREcuRGF0YUZyYW1lLCBjb2x1bW46IG51bWJlciA9IDAsIHJvdzogbnVtYmVyID0gMCkgPT4ge1xuICBmb3IgKGxldCBpPSAwOyBpIDwgZGYuY29sdW1ucy5uYW1lcygpLmxlbmd0aDsgaSsrKSB7XG4gICAgc2hlZXQuZ2V0Q2VsbCgxICsgcm93LCAxICsgaSArIGNvbHVtbikudmFsdWUgPSBkZi5jb2x1bW5zLmJ5SW5kZXgoaSkubmFtZTtcbiAgICBzaGVldC5nZXRDb2x1bW4oMSArIGkgKyBjb2x1bW4pLndpZHRoID0gTWF0aC5tYXgoXG4gICAgICAuLi5kZi5jb2x1bW5zLmJ5SW5kZXgoaSkuY2F0ZWdvcmllcy5tYXAoKGNhdGVnb3J5KSA9PiBjYXRlZ29yeS50b1N0cmluZygpLmxlbmd0aCksXG4gICAgICBkZi5jb2x1bW5zLmJ5SW5kZXgoaSkubmFtZS5sZW5ndGhcbiAgICApICogMS4yO1xuICB9XG4gIGZvciAobGV0IGRmQ29sdW1uID0gMDsgZGZDb2x1bW4gPCBkZi5jb2x1bW5zLmxlbmd0aDsgZGZDb2x1bW4rKykge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGYucm93Q291bnQ7IGkrKylcbiAgICAgIHNoZWV0LmdldENlbGwoaSArIDIgKyByb3csIDEgKyBjb2x1bW4rZGZDb2x1bW4pLnZhbHVlID0gZGYuY29sdW1ucy5ieUluZGV4KGRmQ29sdW1uKS5nZXQoaSk7XG4gIH1cbn07XG5cbmNvbnN0IHBsb3RUb1NoZWV0ID0gYXN5bmMgKGV4cG9ydFdiOiBFeGNlbEpTLldvcmtib29rLCBzaGVldDogRXhjZWxKUy5Xb3Jrc2hlZXQsIHBsb3Q6IEhUTUxFbGVtZW50LCBjb2x1bW5Gb3JJbWFnZTogbnVtYmVyLCByb3dGb3JJbWFnZTogbnVtYmVyID0gMCkgPT4ge1xuICBjb25zdCBjYW52YXMgPSBhd2FpdCBodG1sMmNhbnZhcyhwbG90IGFzIEhUTUxFbGVtZW50LCB7bG9nZ2luZzogZmFsc2V9KTtcbiAgY29uc3QgZGF0YVVybCA9IGNhbnZhcy50b0RhdGFVUkwoJ2ltYWdlL3BuZycpO1xuXG4gIGNvbnN0IGltYWdlSWQgPSBleHBvcnRXYi5hZGRJbWFnZSh7XG4gICAgYmFzZTY0OiBkYXRhVXJsLFxuICAgIGV4dGVuc2lvbjogJ3BuZycsXG4gIH0pO1xuICBzaGVldC5hZGRJbWFnZShpbWFnZUlkLCB7XG4gICAgdGw6IHtjb2w6IGNvbHVtbkZvckltYWdlLCByb3c6IHJvd0ZvckltYWdlfSxcbiAgICBleHQ6IHt3aWR0aDogY2FudmFzLndpZHRoLCBoZWlnaHQ6IGNhbnZhcy5oZWlnaHR9LFxuICB9KTtcbn07XG4iXX0=
560
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmljaC1mdW5jdGlvbi12aWV3LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicmljaC1mdW5jdGlvbi12aWV3LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLGdDQUFnQztBQUNoQyw0QkFBNEI7QUFDNUIsT0FBTyxLQUFLLElBQUksTUFBTSxtQkFBbUIsQ0FBQztBQUMxQyxPQUFPLEtBQUssRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3RDLE9BQU8sS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdEMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sT0FBTyxNQUFNLFNBQVMsQ0FBQztBQUM5QixPQUFPLFdBQVcsTUFBTSxhQUFhLENBQUM7QUFDdEMsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3BCLE9BQU8sQ0FBQyxNQUFNLFVBQVUsQ0FBQztBQUN6QixPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUNyRCxPQUFPLCtCQUErQixDQUFDO0FBRXZDLDJEQUEyRDtBQUMzRCxNQUFNLGtCQUFrQixHQUE0QjtJQUNsRCxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsU0FBUztJQUNqQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsUUFBUTtJQUMvQixDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsUUFBUTtJQUNoQyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsU0FBUztJQUNqQyxDQUFDLGFBQWEsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsWUFBWTtJQUN2QyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTztJQUM5QixDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSTtJQUN4QixDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSztJQUMxQixDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsVUFBVTtJQUNuQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSTtJQUN4QixDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsUUFBUTtJQUMvQixDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsU0FBUztJQUNsQyxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsVUFBVTtJQUNuQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTTtJQUM1QixDQUFDLFlBQVksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsV0FBVztJQUNyQyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxlQUFlO0lBQzdDLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPO0lBQzdCLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxTQUFTO0lBQ2pDLENBQUMsYUFBYSxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxZQUFZO0lBQ3ZDLENBQUMsZUFBZSxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxlQUFlO0lBQzVDLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxTQUFTO0lBQ2pDLENBQUMsWUFBWSxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxVQUFVO0lBQ3BDLENBQUMsWUFBWSxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxXQUFXO0lBQ3JDLENBQUMsV0FBVyxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxTQUFTO0lBQ2xDLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxRQUFRO0lBQy9CLENBQUMsYUFBYSxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxZQUFZO0lBQ3ZDLENBQUMsV0FBVyxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxVQUFVO0NBQ3BDLENBQUM7QUFFRixNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUM7QUFFL0IsTUFBTSxPQUFPLGdCQUFpQixTQUFRLFlBQVk7SUFlaEQsWUFDRSxRQUFnQixFQUNULFVBQ1AsRUFBQyxjQUFjLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUM7UUFFdkMsS0FBSyxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUhsQixZQUFPLEdBQVAsT0FBTyxDQUN5QjtRQWpCekMsc0RBQXNEO1FBQzlDLG9CQUFlLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUV4QywyQkFBMkI7UUFDbkIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQWlGMUIsaUZBQWlGO1FBQ3pFLGFBQVEsR0FBRyxFQUFFLENBQUMsVUFBVSxFQUFFLENBQUM7UUE4S25DLDZDQUE2QztRQUNyQyxzQkFBaUIsR0FBaUMsRUFBRSxDQUFDO1FBa0s3RDs7Ozs7V0FLRztRQUNPLGtCQUFhLEdBQUcsQ0FBTyxNQUFjLEVBQUUsRUFBRTtZQUNqRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQy9CLElBQUksQ0FBQyxRQUFRO2dCQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztZQUUxRCxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO2dCQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsV0FBVyxNQUFNLHFCQUFxQixDQUFDLENBQUM7WUFFbkgsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJO2dCQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsNENBQTRDLENBQUMsQ0FBQztZQUU5RSxNQUFNLFNBQVMsR0FBRyxpRkFBaUYsQ0FBQztZQUNwRyxNQUFNLGNBQWMsR0FBRyxJQUFJLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUU5QyxNQUFNLFlBQVksR0FBRyxDQUFDLElBQWEsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBRXBFLE1BQU0sV0FBVyxHQUFHLENBQUMsSUFBYSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBRXJFLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1lBQ3JGLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1lBQzFGLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1lBQ3pGLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1lBRTlGLE1BQU0sV0FBVyxHQUFHLENBQUMsR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUF1QixDQUFDO1lBQzdFLE1BQU0sWUFBWSxHQUFHLENBQUMsR0FBRyxRQUFRLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUF1QixDQUFDO1lBRS9FLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtnQkFDM0IsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQztnQkFDN0QsTUFBTSxjQUFjLEdBQUcsY0FBYyxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2dCQUVoRyxNQUFNLFNBQVMsR0FBSSxRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQWtCLENBQUM7Z0JBQ2xFLFNBQVMsQ0FBQyxjQUFjLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDdkMsQ0FBQyxDQUFDLENBQUM7WUFFSCxJQUFJLFlBQVksQ0FBQyxNQUFNLEVBQUU7Z0JBQ3ZCLE1BQU0saUJBQWlCLEdBQUcsY0FBYyxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUMsQ0FBQztnQkFDdkUsY0FBYyxDQUFDLGlCQUFpQixFQUFFLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUM7b0JBQ25FLE9BQU8sRUFBRSxXQUFXLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxJQUFJO29CQUMzRCxLQUFLLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO29CQUN4QyxLQUFLLEVBQUUsV0FBVyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFO2lCQUMxQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ047WUFFRCxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7Z0JBQzdCLE1BQU0sWUFBWSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUM7Z0JBQy9ELE1BQU0sY0FBYyxHQUFHLGNBQWMsQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLFlBQVksRUFBRSxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztnQkFFakcsTUFBTSxTQUFTLEdBQUksUUFBUSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFrQixDQUFDO2dCQUNwRSxTQUFTLENBQUMsY0FBYyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQ3ZDLENBQUMsQ0FBQyxDQUFDO1lBR0gsSUFBSSxhQUFhLENBQUMsTUFBTSxFQUFFO2dCQUN4QixNQUFNLGtCQUFrQixHQUFHLGNBQWMsQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztnQkFDekUsY0FBYyxDQUFDLGtCQUFrQixFQUFFLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDLENBQUM7b0JBQ3RFLE9BQU8sRUFBRSxZQUFZLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLFlBQVksQ0FBQyxJQUFJO29CQUM3RCxLQUFLLEVBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDO29CQUMxQyxLQUFLLEVBQUUsWUFBWSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFO2lCQUMzQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ047WUFFRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQ2pDLEtBQUssTUFBTSxRQUFRLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtnQkFDdEMsVUFBVSxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUN0RCxNQUFNLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQzdDLElBQUksUUFBUSxLQUFLLE9BQU8sRUFBRTtvQkFDeEIsS0FBSyxNQUFNLFVBQVUsSUFBSSxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLFlBQVksS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFO3dCQUNwSCxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQzs2QkFDM0QsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDOzZCQUNsRCxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7d0JBRS9FLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUN6RSxNQUFNLFlBQVksR0FBRyxPQUFRLENBQUMsT0FBTyxDQUFDLE9BQU8sSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDO3dCQUNqRSxNQUFNLFNBQVMsR0FBSSxRQUFRLENBQUMsTUFBTSxDQUFDLE9BQVEsQ0FBQyxJQUFJLENBQWtCLENBQUM7d0JBRW5FLEtBQUssTUFBTSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsSUFBSSxjQUFjLENBQUMsT0FBTyxFQUFFLEVBQUU7NEJBQ3RELE1BQU0sV0FBVyxDQUNmLGNBQWMsRUFDZCxjQUFjLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQ3hFLE1BQU0sQ0FBQyxJQUFJLEVBQ1gsU0FBUyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUM1QixDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxHQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQ2hGLENBQUM7eUJBQ0g7d0JBQUEsQ0FBQztxQkFDSDtpQkFDRjtxQkFBTTtvQkFDTCxLQUFLLE1BQU0sV0FBVyxJQUFJLFlBQVksQ0FBQyxNQUFNLENBQzNDLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLFlBQVksS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVU7d0JBQ3pFLENBQ0UsQ0FBQyxRQUFRLEtBQUssUUFBUSxJQUFJLFdBQVcsQ0FBQyxRQUFRLENBQUMsUUFBUSxLQUFLLE1BQU0sSUFBSSxXQUFXLENBQUMsUUFBUSxDQUFDLFFBQVEsS0FBSyxRQUFRLENBQUM7NEJBQ2pILENBQUMsUUFBUSxLQUFLLFFBQVEsSUFBSSxXQUFXLENBQUMsUUFBUSxDQUFDLFFBQVEsS0FBSyxRQUFRLENBQUMsQ0FDdEUsQ0FDRixFQUFFO3dCQUNELE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQzs2QkFDckUsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDOzZCQUNsRCxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7d0JBRS9FLE1BQU0sUUFBUSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUUsQ0FBQzt3QkFDeEYsTUFBTSxZQUFZLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLElBQUksV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7d0JBQzNFLE1BQU0sU0FBUyxHQUFJLFFBQVEsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBa0IsQ0FBQzt3QkFFcEUsS0FBSyxNQUFNLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxJQUFJLGNBQWMsQ0FBQyxPQUFPLEVBQUUsRUFBRTs0QkFDdEQsSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLEVBQUUsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFO2dDQUN4QyxNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztnQ0FDeEMsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUM7b0NBQ3JDLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFTLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztvQ0FDdkYsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQVMsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQztvQ0FDbEcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQVMsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDO29DQUN4RyxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO29DQUMxRixFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO29DQUMxRixFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO29DQUMxRixFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO2lDQUMvRixDQUFDLENBQUM7Z0NBQ0gsU0FBUyxDQUNQLGNBQWMsQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLFlBQVksRUFBRSxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsRUFDekUsS0FBSyxFQUNMLFNBQVMsQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsRUFDNUIsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssR0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMs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RUFBRSxDQUFDLEVBQUU7WUFDbEMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsTUFBTSxHQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDL0Y7QUFDSCxDQUFDLENBQUM7QUFFRixNQUFNLFdBQVcsR0FBRyxDQUFPLFFBQTBCLEVBQUUsS0FBd0IsRUFBRSxJQUFpQixFQUFFLGNBQXNCLEVBQUUsY0FBc0IsQ0FBQyxFQUFFLEVBQUU7SUFDckosTUFBTSxNQUFNLEdBQUcsTUFBTSxXQUFXLENBQUMsSUFBbUIsRUFBRSxFQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUMsQ0FBQyxDQUFDO0lBQ3hFLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUM7SUFFOUMsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQztRQUNoQyxNQUFNLEVBQUUsT0FBTztRQUNmLFNBQVMsRUFBRSxLQUFLO0tBQ2pCLENBQUMsQ0FBQztJQUNILEtBQUssQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFO1FBQ3RCLEVBQUUsRUFBRSxFQUFDLEdBQUcsRUFBRSxjQUFjLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBQztRQUMzQyxHQUFHLEVBQUUsRUFBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU0sRUFBQztLQUNsRCxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIHZhbGlkLWpzZG9jICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuICovXG5pbXBvcnQgKiBhcyBncm9rIGZyb20gJ2RhdGFncm9rLWFwaS9ncm9rJztcbmltcG9ydCAqIGFzIHVpIGZyb20gJ2RhdGFncm9rLWFwaS91aSc7XG5pbXBvcnQgKiBhcyBERyBmcm9tICdkYXRhZ3Jvay1hcGkvZGcnO1xuaW1wb3J0IHtGdW5jdGlvblZpZXd9IGZyb20gJy4vZnVuY3Rpb24tdmlldyc7XG5pbXBvcnQgRXhjZWxKUyBmcm9tICdleGNlbGpzJztcbmltcG9ydCBodG1sMmNhbnZhcyBmcm9tICdodG1sMmNhbnZhcyc7XG5pbXBvcnQgd3UgZnJvbSAnd3UnO1xuaW1wb3J0ICQgZnJvbSAnY2FzaC1kb20nO1xuaW1wb3J0IHtTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7VWlVdGlsc30gZnJvbSAnLi9zaGFyZWQtY29tcG9uZW50cy91aS11dGlscyc7XG5pbXBvcnQgJy4uL2Nzcy9yaWNoLWZ1bmN0aW9uLXZpZXcuY3NzJztcblxuLy8gbWFwcGluZyBmcm9tIGludGVybmFsIERhcnQgbGFiZWxzIHRvIEpTIERHLlZJRVdFUiBsYWJlbHNcbmNvbnN0IHZpZXdlclR5cGVzTWFwcGluZzoge1trZXk6IHN0cmluZ106IHN0cmluZ30gPSB7XG4gIFsnYmFyY2hhcnQnXTogREcuVklFV0VSLkJBUl9DSEFSVCxcbiAgWydib3hwbG90J106IERHLlZJRVdFUi5CT1hfUExPVCxcbiAgWydjYWxlbmRhciddOiBERy5WSUVXRVIuQ0FMRU5EQVIsXG4gIFsnY29ycnBsb3QnXTogREcuVklFV0VSLkNPUlJfUExPVCxcbiAgWydkZW5zaXR5cGxvdCddOiBERy5WSUVXRVIuREVOU0lUWV9QTE9ULFxuICBbJ2ZpbHRlcnMnXTogREcuVklFV0VSLkZJTFRFUlMsXG4gIFsnZm9ybSddOiBERy5WSUVXRVIuRk9STSxcbiAgWydnbG9iZSddOiBERy5WSUVXRVIuR0xPQkUsXG4gIFsnZ29vZ2xlbWFwJ106IERHLlZJRVdFUi5HT09HTEVfTUFQLFxuICBbJ2dyaWQnXTogREcuVklFV0VSLkdSSUQsXG4gIFsnaGVhdG1hcCddOiBERy5WSUVXRVIuSEVBVF9NQVAsXG4gIFsnaGlzdG9ncmFtJ106IERHLlZJRVdFUi5ISVNUT0dSQU0sXG4gIFsnbGluZWNoYXJ0J106IERHLlZJRVdFUi5MSU5FX0NIQVJULFxuICBbJ21hcmt1cCddOiBERy5WSUVXRVIuTUFSS1VQLFxuICBbJ21hdHJpeHBsb3QnXTogREcuVklFV0VSLk1BVFJJWF9QTE9ULFxuICBbJ25ldHdvcmtkaWFncmFtJ106IERHLlZJRVdFUi5ORVRXT1JLX0RJQUdSQU0sXG4gIFsncGNwbG90J106IERHLlZJRVdFUi5QQ19QTE9ULFxuICBbJ3BpZWNoYXJ0J106IERHLlZJRVdFUi5QSUVfQ0hBUlQsXG4gIFsnc2NhdHRlcnBsb3QnXTogREcuVklFV0VSLlNDQVRURVJfUExPVCxcbiAgWydzY2F0dGVycGxvdDNkJ106IERHLlZJRVdFUi5TQ0FUVEVSX1BMT1RfM0QsXG4gIFsnc2hhcGVtYXAnXTogREcuVklFV0VSLlNIQVBFX01BUCxcbiAgWydzdGF0aXN0aWNzJ106IERHLlZJRVdFUi5TVEFUSVNUSUNTLFxuICBbJ3RpbGV2aWV3ZXInXTogREcuVklFV0VSLlRJTEVfVklFV0VSLFxuICBbJ3RpbWVsaW5lcyddOiBERy5WSUVXRVIuVElNRUxJTkVTLFxuICBbJ3RyZWVtYXAnXTogREcuVklFV0VSLlRSRUVfTUFQLFxuICBbJ3RyZWxsaXNwbG90J106IERHLlZJRVdFUi5UUkVMTElTX1BMT1QsXG4gIFsnd29yZGNsb3VkJ106IERHLlZJRVdFUi5XT1JEX0NMT1VELFxufTtcblxuY29uc3QgRklMRV9JTlBVVF9UWVBFID0gJ2ZpbGUnO1xuXG5leHBvcnQgY2xhc3MgUmljaEZ1bmN0aW9uVmlldyBleHRlbmRzIEZ1bmN0aW9uVmlldyB7XG4gIC8vIGVtaXR0ZWQgd2hlbiBydW5CdXR0b24gZGlzYWJpbGl0eSBzaG91bGQgYmUgY2hlY2tlZFxuICBwcml2YXRlIGNoZWNrRGlzYWJpbGl0eSA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgLy8gc3RvcmVzIHRoZSBydW5uaW5nIHN0YXRlXG4gIHByaXZhdGUgaXNSdW5uaW5nID0gZmFsc2U7XG5cbiAgc3RhdGljIGZyb21GdW5jQ2FsbChcbiAgICBmdW5jQ2FsbDogREcuRnVuY0NhbGwsXG4gICAgb3B0aW9uczoge2hpc3RvcnlFbmFibGVkOiBib29sZWFuLCBpc1RhYmJlZDogYm9vbGVhbn0gPVxuICAgIHtoaXN0b3J5RW5hYmxlZDogdHJ1ZSwgaXNUYWJiZWQ6IGZhbHNlfVxuICApIHtcbiAgICByZXR1cm4gbmV3IHRoaXMoZnVuY0NhbGwuZnVuYy5ucU5hbWUsIG9wdGlvbnMpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgZnVuY05hbWU6IHN0cmluZyxcbiAgICBwdWJsaWMgb3B0aW9uczogeyBoaXN0b3J5RW5hYmxlZDogYm9vbGVhbiwgaXNUYWJiZWQ6IGJvb2xlYW59ID1cbiAgICB7aGlzdG9yeUVuYWJsZWQ6IHRydWUsIGlzVGFiYmVkOiBmYWxzZX1cbiAgKSB7XG4gICAgc3VwZXIoZnVuY05hbWUsIG9wdGlvbnMpO1xuXG4gICAgdGhpcy5zdWJzLnB1c2goXG4gICAgICB0aGlzLm9uRnVuY0NhbGxSZWFkeS5zdWJzY3JpYmUoe1xuICAgICAgICBjb21wbGV0ZTogKCkgPT4ge1xuICAgICAgICAgIHRoaXMuYmFzZVBhdGggPSBgc2NyaXB0cy8ke3RoaXMuZnVuY0NhbGwuZnVuYy5pZH0vdmlld2A7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTaG93aW5nIFVJIGFmdGVyIGNvbXBsZXRpb24gb2YgZnVuY3Rpb24gY2FsbC5cbiAgICogQHBhcmFtIHJ1bkZ1bmNcbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSBvbkFmdGVyUnVuKHJ1bkZ1bmM6IERHLkZ1bmNDYWxsKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy50YWJzRWxlbS5yb290LnN0eWxlLnJlbW92ZVByb3BlcnR5KCdkaXNwbGF5Jyk7XG4gICAgdGhpcy50YWJzRWxlbS5wYW5lcy5mb3JFYWNoKCh0YWIpID0+IHtcbiAgICAgIHRhYi5oZWFkZXIuc3R5bGUucmVtb3ZlUHJvcGVydHkoJ2Rpc3BsYXknKTtcbiAgICB9KTtcbiAgICBjb25zdCBmaXJzdE91dHB1dFRhYiA9IHRoaXMudGFic0VsZW0ucGFuZXMuZmluZCgodGFiKSA9PiB0YWIubmFtZSAhPT0gJ0lucHV0Jyk7XG4gICAgaWYgKGZpcnN0T3V0cHV0VGFiKSB0aGlzLnRhYnNFbGVtLmN1cnJlbnRQYW5lID0gZmlyc3RPdXRwdXRUYWI7XG5cbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gIH1cblxuICAvKipcbiAgICogUmljaEZ1bmN0aW9uVmlldyBoYXMgYWRhdmFuY2VkIGF1dG9tYXRpYyBVSSBidWlsZGVyLiBJdCB0YWtlcyB7QGxpbmsgdGhpcy5mdW5jQ2FsbH0gYXMgYSBiYXNlIGFuZCBjb25zdHJ1Y3RzIGZsZXhpYmxlIHZpZXcuXG4gICAqIFRoaXMgdmlldyBpcyB1cGRhdGVkIGF1dG9tYXRpY2FsbHkgd2hlbiB7QGxpbmsgdGhpcy5mdW5jQ2FsbFJlcGxhY2VkfSBpcyBlbWl0dGVkIG9yIGFueSBvZiBpbnB1dC9vdXRwdXQgcGFyYW0gY2hhbmdlcy5cbiAgICogQHJldHVybnMgSFRNTEVsZW1lbnQgYXR0YWNoZWQgdG8gdGhlIHJvb3Qgb2YgdGhlIHZpZXdcbiAgICovXG4gIHB1YmxpYyBidWlsZElPKCk6IEhUTUxFbGVtZW50IHtcbiAgICBjb25zdCBpbnB1dEJsb2NrID0gdGhpcy5idWlsZElucHV0QmxvY2soKTtcblxuICAgIHVpLnRvb2xzLmhhbmRsZVJlc2l6ZShpbnB1dEJsb2NrLCAod2lkdGgpID0+IHtcbiAgICAgIGlmICh3aWR0aCA8IDM1MClcbiAgICAgICAgJChpbnB1dEJsb2NrLmZpcnN0Q2hpbGQhKS5hZGRDbGFzcygndWktZm9ybS1jb25kZW5zZWQnKTtcbiAgICAgIGVsc2VcbiAgICAgICAgJChpbnB1dEJsb2NrLmZpcnN0Q2hpbGQhKS5yZW1vdmVDbGFzcygndWktZm9ybS1jb25kZW5zZWQnKTtcbiAgICB9KTtcblxuICAgIGNvbnN0IG91dHB1dEJsb2NrID0gdGhpcy5idWlsZE91dHB1dEJsb2NrKCk7XG4gICAgb3V0cHV0QmxvY2suc3R5bGUuaGVpZ2h0ID0gJzEwMCUnO1xuICAgIG91dHB1dEJsb2NrLnN0eWxlLndpZHRoID0gJzEwMCUnO1xuICAgIHRoaXMudGFic0VsZW0ucm9vdC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuXG4gICAgaWYgKCEhdGhpcy50YWJzRWxlbS5nZXRQYW5lKCdJbnB1dCcpKSB7XG4gICAgICB0aGlzLnRhYnNFbGVtLnBhbmVzLmZvckVhY2goKHRhYikgPT4ge1xuICAgICAgICB0YWIuaGVhZGVyLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCBvdXQgPSB1aS5zcGxpdEgoW2lucHV0QmxvY2ssIHVpLnBhbmVsKFtvdXRwdXRCbG9ja10sIHtzdHlsZTogeydwYWRkaW5nLXRvcCc6ICcwcHgnfX0pXSwgbnVsbCwgdHJ1ZSk7XG4gICAgb3V0LnN0eWxlLnBhZGRpbmcgPSAnMCAxMnB4JztcblxuICAgIGlucHV0QmxvY2sucGFyZW50RWxlbWVudCEuc3R5bGUubWF4V2lkdGggPSAnNDUwcHgnO1xuXG4gICAgcmV0dXJuIG91dDtcbiAgfVxuXG4gIHB1YmxpYyBidWlsZElucHV0QmxvY2soKTogSFRNTEVsZW1lbnQge1xuICAgIGNvbnN0IGZvcm1EaXYgPSB0aGlzLnJlbmRlclJ1blNlY3Rpb24oKTtcblxuICAgIHJldHVybiBmb3JtRGl2O1xuICB9XG5cbiAgLy8gTWFpbiBlbGVtZW50IG9mIHRoZSBvdXRwdXQgYmxvY2suIFN0b3JlcyBhbGwgdGhlIHRhYnMgZm9yIHRoZSBvdXRwdXQgYW5kIGlucHV0XG4gIHByaXZhdGUgdGFic0VsZW0gPSB1aS50YWJDb250cm9sKCk7XG5cbiAgcHVibGljIGJ1aWxkT3V0cHV0QmxvY2soKTogSFRNTEVsZW1lbnQge1xuICAgIHRoaXMudGFic0VsZW0ucm9vdC5zdHlsZS53aWR0aCA9ICcxMDAlJztcblxuICAgIHRoaXMudGFic0xhYmVscy5mb3JFYWNoKCh0YWJMYWJlbCkgPT4ge1xuICAgICAgY29uc3QgdGFiRGZQcm9wcyA9IHRoaXMuY2F0ZWdvcnlUb1BhcmFtTWFwW3RhYkxhYmVsXS5maWx0ZXIoKHApID0+IHAucHJvcGVydHlUeXBlID09PSBERy5UWVBFLkRBVEFfRlJBTUUpO1xuICAgICAgY29uc3QgdGFiU2NhbGFyUHJvcHMgPSB0aGlzLmNhdGVnb3J5VG9QYXJhbU1hcFt0YWJMYWJlbF0uZmlsdGVyKChwKSA9PiBwLnByb3BlcnR5VHlwZSAhPT0gREcuVFlQRS5EQVRBX0ZSQU1FKTtcblxuICAgICAgLy8gZGZQcm9wLm9wdGlvbnNbJ3ZpZXdlciddIGNvdWxkIGJlIGVtcHR5LCBzbyB3ZSBuZWVkIHRvIGNoZWNrIGl0XG4gICAgICBjb25zdCBwYXJzZWRUYWJEZlByb3BzID0gdGFiRGZQcm9wcy5tYXAoKGRmUHJvcCkgPT4gKGRmUHJvcC5vcHRpb25zWyd2aWV3ZXInXSAhPT0gdW5kZWZpbmVkKSA/XG4gICAgICAgIC8vIHRydWUgYW5kIGZhbHNlIHZhbHVlcyBhcmUgcmV0cmlldmVkIGFzIHN0cmluZywgc28gd2UgY2FsbCBKU09OLnBhcnNlIG9uIHRoZW0gb25jZSBtb3JlXG4gICAgICAgIEpTT04ucGFyc2UoZGZQcm9wLm9wdGlvbnNbJ3ZpZXdlciddLCAoXywgdikgPT4gdiA9PT0gJ3RydWUnIHx8IHYgPT09ICdmYWxzZScgPyBKU09OLnBhcnNlKHYpOiB2KTpcbiAgICAgICAgW10pO1xuXG4gICAgICBjb25zdCBkZkJsb2NrcyA9IHRhYkRmUHJvcHMubWFwKChkZlByb3AsIGRmSW5kZXgpID0+IHtcbiAgICAgICAgbGV0IGZ1bGxCbG9ja1dpZHRoID0gMDtcbiAgICAgICAgcGFyc2VkVGFiRGZQcm9wc1tkZkluZGV4XS5mb3JFYWNoKChfOiBhbnksIHZpZXdlckluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgICBjb25zdCBibG9ja1NpemUgPSBwYXJzZWRUYWJEZlByb3BzW2RmSW5kZXhdW3ZpZXdlckluZGV4XVsnYmxvY2snXTtcblxuICAgICAgICAgIGZ1bGxCbG9ja1dpZHRoICs9IGJsb2NrU2l6ZSA/IHBhcnNlSW50KGJsb2NrU2l6ZSk6IDA7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IHZpZXdlcnM6IFByb21pc2U8REcuVmlld2VyW10+ID0gUHJvbWlzZS5hbGwocGFyc2VkVGFiRGZQcm9wc1tkZkluZGV4XS5tYXAoYXN5bmMgKHZpZXdlckRlc2M6IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9KSA9PiB7XG4gICAgICAgICAgY29uc3QgaW5pdGlhbFZhbHVlOiBERy5EYXRhRnJhbWUgPSB0aGlzLmZ1bmNDYWxsPy5vdXRwdXRzW2RmUHJvcC5uYW1lXT8udmFsdWUgPz8gdGhpcy5mdW5jQ2FsbCEuaW5wdXRQYXJhbXNbZGZQcm9wLm5hbWVdPy52YWx1ZSA/PyBncm9rLmRhdGEuZGVtby5kZW1vZygxKTtcblxuICAgICAgICAgIGNvbnN0IHZpZXdlciA9IHZpZXdlclR5cGVzTWFwcGluZ1t2aWV3ZXJEZXNjWyd0eXBlJ11dID8gREcuVmlld2VyLmZyb21UeXBlKHZpZXdlclR5cGVzTWFwcGluZ1t2aWV3ZXJEZXNjWyd0eXBlJ11dLCBpbml0aWFsVmFsdWUpOiBhd2FpdCBpbml0aWFsVmFsdWUucGxvdC5mcm9tVHlwZSh2aWV3ZXJEZXNjWyd0eXBlJ10pIGFzIERHLlZpZXdlcjtcbiAgICAgICAgICB2aWV3ZXIuc2V0T3B0aW9ucyh2aWV3ZXJEZXNjKTtcblxuICAgICAgICAgIGlmICh0aGlzLmRmVG9WaWV3ZXJNYXBwaW5nW2RmUHJvcC5uYW1lXSkgdGhpcy5kZlRvVmlld2VyTWFwcGluZ1tkZlByb3AubmFtZV0ucHVzaCh2aWV3ZXIpOyBlbHNlIHRoaXMuZGZUb1ZpZXdlck1hcHBpbmdbZGZQcm9wLm5hbWVdID0gW3ZpZXdlcl07XG5cbiAgICAgICAgICByZXR1cm4gdmlld2VyO1xuICAgICAgICB9KSk7XG5cbiAgICAgICAgdmlld2Vycy50aGVuKChsb2FkZWRWaWV3ZXJzKSA9PiB7XG4gICAgICAgICAgY29uc3Qgc3Vic2NyaWJlT25GY0NoYW5nZXMgPSAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50UGFyYW06IERHLkZ1bmNDYWxsUGFyYW0gPSB0aGlzLmZ1bmNDYWxsIS5vdXRwdXRQYXJhbXNbZGZQcm9wLm5hbWVdID8/IHRoaXMuZnVuY0NhbGwhLmlucHV0UGFyYW1zW2RmUHJvcC5uYW1lXTtcblxuICAgICAgICAgICAgY29uc3QgcGFyYW1TdWIgPSBjdXJyZW50UGFyYW0ub25DaGFuZ2VkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgIGxvYWRlZFZpZXdlcnMuZm9yRWFjaChhc3luYyAodmlld2VyKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKE9iamVjdC52YWx1ZXModmlld2VyVHlwZXNNYXBwaW5nKS5pbmNsdWRlcyh2aWV3ZXIudHlwZSkpIHtcbiAgICAgICAgICAgICAgICAgIHZpZXdlci5kYXRhRnJhbWUgPSBjdXJyZW50UGFyYW0udmFsdWU7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIC8vIFVzZXItZGVmaW5lZCB2aWV3ZXJzIChlLmcuIE91dGxpZXJzU2VsZWN0aW9uVmlld2VyKSBjb3VsZCBjcmVhdGVkIG9ubHkgYXN5bmNocm9ub3VzbHlcbiAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld1ZpZXdlciA9IGF3YWl0IGN1cnJlbnRQYXJhbS52YWx1ZS5wbG90LmZyb21UeXBlKHZpZXdlci50eXBlKSBhcyBERy5WaWV3ZXI7XG4gICAgICAgICAgICAgICAgICB2aWV3ZXIucm9vdC5yZXBsYWNlV2l0aChuZXdWaWV3ZXIucm9vdCk7XG4gICAgICAgICAgICAgICAgICB2aWV3ZXIgPSBuZXdWaWV3ZXI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB0aGlzLnN1YnMucHVzaChwYXJhbVN1Yik7XG4gICAgICAgICAgfTtcblxuICAgICAgICAgIHN1YnNjcmliZU9uRmNDaGFuZ2VzKCk7XG4gICAgICAgICAgdGhpcy5zdWJzLnB1c2goXG4gICAgICAgICAgICB0aGlzLmZ1bmNDYWxsUmVwbGFjZWQuc3Vic2NyaWJlKHN1YnNjcmliZU9uRmNDaGFuZ2VzKVxuICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IGRmQmxvY2tUaXRsZTogc3RyaW5nID0gZGZQcm9wLm9wdGlvbnNbJ2NhcHRpb24nXSA/PyBkZlByb3AubmFtZTtcblxuICAgICAgICBjb25zdCBkZkJsb2NrID0gdWkud2FpdChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgY29uc3QgbG9hZGVkVmlld2VycyA9IGF3YWl0IHZpZXdlcnM7XG4gICAgICAgICAgcmV0dXJuIHVpLmRpdkgoXG4gICAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgICAgICAgbG9hZGVkVmlld2Vycy5tYXAoKHZpZXdlcikgPT4gdmlld2VyLnJvb3QsIHtzdHlsZTogeydmbGV4LXdyYXAnOiAnd3JhcCd9fSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICApO1xuICAgICAgICB9KTtcblxuICAgICAgICBpZiAodGFiTGFiZWwgPT09ICdJbnB1dCcpIHtcbiAgICAgICAgICBjb25zdCBzdWJzY3JpYmVPbkZjQ2hhbmdlcyA9ICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRQYXJhbTogREcuRnVuY0NhbGxQYXJhbSA9IHRoaXMuZnVuY0NhbGwhLm91dHB1dFBhcmFtc1tkZlByb3AubmFtZV0gPz8gdGhpcy5mdW5jQ2FsbCEuaW5wdXRQYXJhbXNbZGZQcm9wLm5hbWVdO1xuXG4gICAgICAgICAgICBjb25zdCBwYXJhbVN1YiA9IGN1cnJlbnRQYXJhbS5vbkNoYW5nZWQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy50YWJzRWxlbS5yb290LnN0eWxlLnJlbW92ZVByb3BlcnR5KCdkaXNwbGF5Jyk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgdGhpcy5zdWJzLnB1c2gocGFyYW1TdWIpO1xuICAgICAgICAgIH07XG5cbiAgICAgICAgICBzdWJzY3JpYmVPbkZjQ2hhbmdlcygpO1xuICAgICAgICAgIHRoaXMuc3Vicy5wdXNoKFxuICAgICAgICAgICAgdGhpcy5mdW5jQ2FsbFJlcGxhY2VkLnN1YnNjcmliZShzdWJzY3JpYmVPbkZjQ2hhbmdlcylcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHVpLmRpdlYoW1xuICAgICAgICAgIC8vIFJlbW92aW5nIHRpdGxlIG1hcmdpbiBvbiB0b3Agb2YgYmxvY2sgdGl0bGVzXG4gICAgICAgICAgdWkuaDIoZGZCbG9ja1RpdGxlLCB7Li4uKGRmSW5kZXggPiAwKSA/IHtzdHlsZTogeydtYXJnaW4tdG9wJzogJzBweCd9fSA6IHt9fSksXG4gICAgICAgICAgZGZCbG9ja1xuICAgICAgICBdLCB7c3R5bGU6IHsuLi4oZnVsbEJsb2NrV2lkdGggPiAwKSA/IHsnd2lkdGgnOiBgJHtmdWxsQmxvY2tXaWR0aH0lYH06IHsnd2lkdGgnOiBgMTAwJWB9fX0pO1xuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IGdlbmVyYXRlU2NhbGFyc1RhYmxlID0gKCkgPT4ge1xuICAgICAgICBjb25zdCB0YWJsZSA9IERHLkh0bWxUYWJsZS5jcmVhdGUoXG4gICAgICAgICAgdGFiU2NhbGFyUHJvcHMsXG4gICAgICAgICAgKHNjYWxhclByb3A6IERHLlByb3BlcnR5KSA9PiBbc2NhbGFyUHJvcC5uYW1lLCB0aGlzLmZ1bmNDYWxsPy5vdXRwdXRzW3NjYWxhclByb3AubmFtZV0sIHNjYWxhclByb3Aub3B0aW9uc1sndW5pdHMnXV1cbiAgICAgICAgKS5yb290O1xuICAgICAgICB0YWJsZS5zdHlsZS5tYXhXaWR0aCA9ICc0MDBweCc7XG4gICAgICAgIHJldHVybiB0YWJsZTtcbiAgICAgIH07XG5cbiAgICAgIGxldCBzY2FsYXJzVGFibGUgPSBnZW5lcmF0ZVNjYWxhcnNUYWJsZSgpO1xuXG4gICAgICB0YWJTY2FsYXJQcm9wcy5mb3JFYWNoKCh0YWJTY2FsYXJQcm9wKSA9PiB7XG4gICAgICAgIGNvbnN0IHN1YnNjcmliZU9uRmNDaGFuZ2VzID0gKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHBhcmFtU3ViID0gKHRoaXMuZnVuY0NhbGwhLm91dHB1dFBhcmFtc1t0YWJTY2FsYXJQcm9wLm5hbWVdIGFzIERHLkZ1bmNDYWxsUGFyYW0pLm9uQ2hhbmdlZC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbmV3U2NhbGFyc1RhYmxlID0gZ2VuZXJhdGVTY2FsYXJzVGFibGUoKTtcbiAgICAgICAgICAgIHNjYWxhcnNUYWJsZS5yZXBsYWNlV2l0aChuZXdTY2FsYXJzVGFibGUpO1xuICAgICAgICAgICAgc2NhbGFyc1RhYmxlID0gbmV3U2NhbGFyc1RhYmxlO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgdGhpcy5zdWJzLnB1c2gocGFyYW1TdWIpO1xuICAgICAgICB9O1xuXG4gICAgICAgIHN1YnNjcmliZU9uRmNDaGFuZ2VzKCk7XG4gICAgICAgIHRoaXMuc3Vicy5wdXNoKFxuICAgICAgICAgIHRoaXMuZnVuY0NhbGxSZXBsYWNlZC5zdWJzY3JpYmUoc3Vic2NyaWJlT25GY0NoYW5nZXMpXG4gICAgICAgICk7XG4gICAgICB9KTtcblxuICAgICAgY29uc3QgZGZTZWN0aW9ucyA9IFtdIGFzIEhUTUxFbGVtZW50W107XG4gICAgICBsZXQgY3VycmVudFdpZHRoID0gMDtcbiAgICAgIGxldCBjdXJyZW50U2VjdGlvbiA9IHVpLmRpdkgoW10sIHtzdHlsZTogeydtYXJnaW4tYm90dG9tJzogJzI1cHgnfX0pOyAvLyBBZGRpbmcgc21hbGwgbWFyZ2luIGJldHdlZW4gc2VjdGlvbnNcbiAgICAgIGRmQmxvY2tzLmZvckVhY2goKGRmQmxvY2ssIGRmSW5kZXgpID0+IHtcbiAgICAgICAgY29uc3QgYmxvY2tXaWR0aCA9IHBhcnNlSW50KGRmQmxvY2suc3R5bGUud2lkdGgpO1xuXG4gICAgICAgIGlmIChjdXJyZW50V2lkdGggKyBibG9ja1dpZHRoID09PSAxMDApIHtcbiAgICAgICAgICBjdXJyZW50U2VjdGlvbi5hcHBlbmQoZGZCbG9jayk7XG4gICAgICAgICAgZGZTZWN0aW9ucy5wdXNoKGN1cnJlbnRTZWN0aW9uKTtcbiAgICAgICAgICBjdXJyZW50U2VjdGlvbiA9IHVpLmRpdkgoW10pO1xuICAgICAgICAgIGN1cnJlbnRXaWR0aCA9IDA7XG4gICAgICAgIH0gZWxzZSBpZiAoY3VycmVudFdpZHRoICsgYmxvY2tXaWR0aCA8IDEwMCkge1xuICAgICAgICAgIGN1cnJlbnRTZWN0aW9uLmFwcGVuZChkZkJsb2NrKTtcbiAgICAgICAgICBjdXJyZW50V2lkdGggKz0gYmxvY2tXaWR0aDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBkZlNlY3Rpb25zLnB1c2goY3VycmVudFNlY3Rpb24pO1xuICAgICAgICAgIGN1cnJlbnRTZWN0aW9uID0gdWkuZGl2SChbXSk7XG4gICAgICAgICAgY3VycmVudFNlY3Rpb24uYXBwZW5kKGRmQmxvY2spO1xuICAgICAgICAgIGN1cnJlbnRXaWR0aCA9IGJsb2NrV2lkdGg7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZGZJbmRleCA9PT0gZGZCbG9ja3MubGVuZ3RoIC0gMSlcbiAgICAgICAgICBkZlNlY3Rpb25zLnB1c2goY3VycmVudFNlY3Rpb24pO1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMudGFic0VsZW0uYWRkUGFuZSh0YWJMYWJlbCwgKCkgPT4ge1xuICAgICAgICByZXR1cm4gdWkuZGl2VihbLi4uZGZTZWN0aW9ucywgLi4udGFiU2NhbGFyUHJvcHMubGVuZ3RoID8gW3VpLmgyKCdTY2FsYXIgdmFsdWVzJyldOiBbXSwgc2NhbGFyc1RhYmxlXSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGNvbnN0IG91dHB1dEJsb2NrID0gdWkuYm94KCk7XG4gICAgb3V0cHV0QmxvY2suYXBwZW5kKHRoaXMudGFic0VsZW0ucm9vdCk7XG5cbiAgICByZXR1cm4gb3V0cHV0QmxvY2s7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgb25BZnRlckxvYWRSdW4obG9hZGVkUnVuOiBERy5GdW5jQ2FsbCkge1xuICAgIHd1KHRoaXMuZnVuY0NhbGwhLm91dHB1dFBhcmFtcy52YWx1ZXMoKSBhcyBERy5GdW5jQ2FsbFBhcmFtW10pLmZvckVhY2goKG91dCkgPT4ge1xuICAgICAgdGhpcy5mdW5jQ2FsbCEuc2V0UGFyYW1WYWx1ZShvdXQubmFtZSwgbG9hZGVkUnVuLm91dHB1dHNbb3V0Lm5hbWVdKTtcbiAgICB9KTtcblxuICAgIHd1KHRoaXMuZnVuY0NhbGwhLmlucHV0UGFyYW1zLnZhbHVlcygpIGFzIERHLkZ1bmNDYWxsUGFyYW1bXSkuZm9yRWFjaCgoaW5wKSA9PiB7XG4gICAgICB0aGlzLmZ1bmNDYWxsIS5zZXRQYXJhbVZhbHVlKGlucC5uYW1lLCBsb2FkZWRSdW4uaW5wdXRzW2lucC5uYW1lXSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnRhYnNFbGVtLnJvb3Quc3R5bGUucmVtb3ZlUHJvcGVydHkoJ2Rpc3BsYXknKTtcbiAgICB0aGlzLnRhYnNFbGVtLnBhbmVzLmZvckVhY2goKHRhYikgPT4ge1xuICAgICAgdGFiLmhlYWRlci5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnZGlzcGxheScpO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gU3RvcmVzIG1hcHBpbmcgYmV0d2VlbiBERiBhbmQgaXRzJyB2aWV3ZXJzXG4gIHByaXZhdGUgZGZUb1ZpZXdlck1hcHBpbmc6IHtba2V5OiBzdHJpbmddOiBERy5WaWV3ZXJbXX0gPSB7fTtcblxuICBwcm90ZWN0ZWQgZ2V0IGlzSW5wdXRQYW5lbFJlcXVpcmVkKCkge1xuICAgIHJldHVybiB0aGlzLmZ1bmM/LmlucHV0cy5zb21lKChwKSA9PiBwLnByb3BlcnR5VHlwZSA9PSBERy5UWVBFLkRBVEFfRlJBTUUgJiYgcC5vcHRpb25zWyd2aWV3ZXInXSAhPSBudWxsKSB8fCBmYWxzZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgdGFic0xhYmVscygpIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5jYXRlZ29yeVRvUGFyYW1NYXApO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldCBjYXRlZ29yeVRvUGFyYW1NYXAoKSB7XG4gICAgY29uc3QgbWFwID0ge30gYXMgUmVjb3JkPHN0cmluZywgREcuUHJvcGVydHlbXT47XG5cbiAgICBpZiAodGhpcy5pc0lucHV0UGFuZWxSZXF1aXJlZCkge1xuICAgICAgdGhpcy5mdW5jIS5pbnB1dHMuXG4gICAgICAgIGZpbHRlcigocCkgPT4gcC5wcm9wZXJ0eVR5cGUgPT0gREcuVFlQRS5EQVRBX0ZSQU1FICYmIHAub3B0aW9uc1sndmlld2VyJ10gIT0gbnVsbCkuXG4gICAgICAgIGZvckVhY2goKHApID0+IG1hcFsnSW5wdXQnXSA/IG1hcFsnSW5wdXQnXS5wdXNoKHApOiBtYXBbJ0lucHV0J10gPSBbcF0pO1xuICAgIH1cblxuICAgIHRoaXMuZnVuYyEub3V0cHV0cy5mb3JFYWNoKChwKSA9PiB7XG4gICAgICBjb25zdCBjYXRlZ29yeSA9IHAuY2F0ZWdvcnkgPT09ICdNaXNjJyA/ICdPdXRwdXQnOiBwLmNhdGVnb3J5O1xuXG4gICAgICBpZiAobWFwW2NhdGVnb3J5XSlcbiAgICAgICAgbWFwW2NhdGVnb3J5XS5wdXNoKHApO1xuICAgICAgZWxzZVxuICAgICAgICBtYXBbY2F0ZWdvcnldID0gW3BdO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIG1hcDtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZG9SdW4oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5pc1J1bm5pbmcgPSB0cnVlO1xuICAgIHRoaXMuY2hlY2tEaXNhYmlsaXR5Lm5leHQoKTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5ydW4oKTtcbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIGdyb2suc2hlbGwuZXJyb3IoZSk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuaXNSdW5uaW5nID0gZmFsc2U7XG4gICAgICB0aGlzLmNoZWNrRGlzYWJpbGl0eS5uZXh0KCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZW5kZXJSdW5TZWN0aW9uKCk6IEhUTUxFbGVtZW50IHtcbiAgICBjb25zdCBydW5CdXR0b24gPSB1aS5iaWdCdXR0b24oJ1J1bicsIGFzeW5jICgpID0+IGF3YWl0IHRoaXMuZG9SdW4oKSk7XG4gICAgLy8gUkVQTEFDRSBCWSBUWVBFIEdVQVJEXG4gICAgY29uc3QgaXNGdW5jU2NyaXB0ID0gKCkgPT4ge1xuICAgICAgLy9AdHMtaWdub3JlXG4gICAgICByZXR1cm4gISF0aGlzLmZ1bmMuc2NyaXB0O1xuICAgIH07XG4gICAgLy8gVE8gRE86IG1vdmUgYnV0dG9uIHNvbWV3aGVyZVxuICAgIGNvbnN0IG9wZW5TY3JpcHRCdG4gPSB1aS5idXR0b24oJ09wZW4gc2NyaXB0JywgYXN5bmMgKCkgPT4ge1xuICAgICAgd2luZG93Lm9wZW4oYCR7d2luZG93LmxvY2F0aW9uLm9yaWdpbn0vc2NyaXB0LyR7KHRoaXMuZnVuYyBhcyBERy5TY3JpcHQpLmlkfWAsICdfYmxhbmsnKTtcbiAgICB9KTtcbiAgICAvLyBjb25zdCBidXR0b25XcmFwcGVyID0gdWkuZGl2KFsuLi50aGlzLm9wdGlvbnMuaXNUYWJiZWQgJiYgaXNGdW5jU2NyaXB0KCkgPyBbb3BlblNjcmlwdEJ0bl06IFtdLCBydW5CdXR0b25dKTtcbiAgICBjb25zdCBidXR0b25XcmFwcGVyID0gdWkuZGl2KFtydW5CdXR0b25dKTtcbiAgICB1aS50b29sdGlwLmJpbmQoYnV0dG9uV3JhcHBlciwgKCkgPT4gcnVuQnV0dG9uLmRpc2FibGVkID8gKHRoaXMuaXNSdW5uaW5nID8gJ0NvbXB1dGF0aW9ucyBhcmUgaW4gcHJvZ3Jlc3MnIDogJ1NvbWUgaW5wdXRzIGFyZSBpbnZhbGlkJykgOiAnJyk7XG5cbiAgICBjb25zdCBkaXNhYmlsaXR5U3ViID0gdGhpcy5jaGVja0Rpc2FiaWxpdHkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIGNvbnN0IGlzVmFsaWQgPSAod3UodGhpcy5mdW5jQ2FsbCEuaW5wdXRzLnZhbHVlcygpKS5ldmVyeSgodikgPT4gdiAhPT0gbnVsbCAmJiB2ICE9PSB1bmRlZmluZWQpKSAmJiAhdGhpcy5pc1J1bm5pbmc7XG4gICAgICBydW5CdXR0b24uZGlzYWJsZWQgPSAhaXNWYWxpZDtcbiAgICB9KTtcbiAgICB0aGlzLnN1YnMucHVzaChkaXNhYmlsaXR5U3ViKTtcblxuICAgIGNvbnN0IGlucHV0cyA9IHVpLmRpdlYoW10sICd1aS1mb3JtJyk7XG4gICAgbGV0IHByZXZDYXRlZ29yeSA9ICdNaXNjJztcbiAgICB3dSh0aGlzLmZ1bmNDYWxsIS5pbnB1dFBhcmFtcy52YWx1ZXMoKSBhcyBERy5GdW5jQ2FsbFBhcmFtW10pXG4gICAgICAuZmlsdGVyKCh2YWwpID0+ICEhdmFsKVxuICAgICAgLmZvckVhY2goKHZhbCkgPT4ge1xuICAgICAgICBjb25zdCBwcm9wID0gdmFsLnByb3BlcnR5O1xuICAgICAgICBpZiAocHJvcC5wcm9wZXJ0eVR5cGUudG9TdHJpbmcoKSA9PT0gRklMRV9JTlBVVF9UWVBFKSB7XG4gICAgICAgICAgY29uc3QgdCA9IFVpVXRpbHMuZmlsZUlucHV0KHByb3AuY2FwdGlvbiA/PyBwcm9wLm5hbWUsIG51bGwsIChmaWxlOiBGaWxlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmZ1bmNDYWxsIS5pbnB1dHNbcHJvcC5uYW1lXSA9IGZpbGU7XG4gICAgICAgICAgICB0aGlzLmNoZWNrRGlzYWJpbGl0eS5uZXh0KCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgaWYgKHByb3AuY2F0ZWdvcnkgIT09IHByZXZDYXRlZ29yeSlcbiAgICAgICAgICAgIGlucHV0cy5hcHBlbmQodWkuaDIocHJvcC5jYXRlZ29yeSkpO1xuXG4gICAgICAgICAgdGhpcy5jaGVja0Rpc2FiaWxpdHkubmV4dCgpO1xuICAgICAgICAgIGlucHV0cy5hcHBlbmQodC5yb290KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsZXQgdCA9IHByb3AucHJvcGVydHlUeXBlID09PSBERy5UWVBFLkRBVEFfRlJBTUUgP1xuICAgICAgICAgICAgdWkudGFibGVJbnB1dChwcm9wLmNhcHRpb24gPz8gcHJvcC5uYW1lLCBudWxsLCBncm9rLnNoZWxsLnRhYmxlcyk6XG4gICAgICAgICAgICB1aS5pbnB1dC5mb3JQcm9wZXJ0eShwcm9wKTtcblxuICAgICAgICAgIHQuaW5wdXQub25rZXlkb3duID0gYXN5bmMgKGV2KSA9PiB7XG4gICAgICAgICAgICBpZiAoZXYua2V5ID09ICdFbnRlcicpXG4gICAgICAgICAgICAgIGF3YWl0IHRoaXMuZG9SdW4oKTtcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgdC5jYXB0aW9uTGFiZWwuZmlyc3RDaGlsZCEucmVwbGFjZVdpdGgodWkuc3BhbihbcHJvcC5jYXB0aW9uID8/IHByb3AubmFtZV0pKTtcbiAgICAgICAgICBpZiAocHJvcC5vcHRpb25zWyd1bml0cyddKSB0LmFkZFBvc3RmaXgocHJvcC5vcHRpb25zWyd1bml0cyddKTtcblxuICAgICAgICAgIGNvbnN0IHN1YnNjcmliZU9uRmNDaGFuZ2VzID0gKCkgPT4ge1xuICAgICAgICAgICAgdC52YWx1ZSA9IHRoaXMuZnVuY0NhbGwhLmlucHV0c1t2YWwubmFtZV0gPz8gcHJvcC5kZWZhdWx0VmFsdWUgPz8gbnVsbDtcbiAgICAgICAgICAgIHRoaXMuZnVuY0NhbGwhLmlucHV0c1t2YWwubmFtZV0gPSB0aGlzLmZ1bmNDYWxsIS5pbnB1dHNbdmFsLm5hbWVdID8/IHByb3AuZGVmYXVsdFZhbHVlID8/IG51bGw7XG4gICAgICAgICAgfTtcblxuICAgICAgICAgIHN1YnNjcmliZU9uRmNDaGFuZ2VzKCk7XG4gICAgICAgICAgdGhpcy5zdWJzLnB1c2goXG4gICAgICAgICAgICB0aGlzLmZ1bmNDYWxsUmVwbGFjZWQuc3Vic2NyaWJlKHN1YnNjcmliZU9uRmNDaGFuZ2VzKVxuICAgICAgICAgICk7XG5cbiAgICAgICAgICB0Lm9uQ2hhbmdlZCgoKSA9PiB7XG4gICAgICAgICAgICAvLyBSZXNvbHZpbmcgY2FzZSBvZiBwcm9wZXJ0eVR5cGUgPSBEQVRBRlJBTUVcbiAgICAgICAgICAgIGlmICghIXQucHJvcGVydHkpIHJldHVybjtcblxuICAgICAgICAgICAgdGhpcy5mdW5jQ2FsbCEuaW5wdXRzW3ZhbC5uYW1lXSA9IHQudmFsdWU7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICB0Lm9uSW5wdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5mdW5jQ2FsbCEuaW5wdXRzW3ZhbC5uYW1lXSA9IHQudmFsdWU7XG4gICAgICAgICAgICBpZiAodC52YWx1ZSA9PT0gbnVsbCkgc2V0VGltZW91dCgoKSA9PiB0LmlucHV0LmNsYXNzTGlzdC5hZGQoJ2Q0LWludmFsaWQnKSwgMTAwKTsgZWxzZSB0LmlucHV0LmNsYXNzTGlzdC5yZW1vdmUoJ2Q0LWludmFsaWQnKTsgO1xuXG4gICAgICAgICAgICB0aGlzLmNoZWNrRGlzYWJpbGl0eS5uZXh0KCk7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBjb25zdCB2YWxDaGFuZ2VTdWIgPSB2YWwub25DaGFuZ2VkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IHRoaXMuZnVuY0NhbGwhLmlucHV0c1t2YWwubmFtZV07XG5cbiAgICAgICAgICAgIGlmICh2YWwucHJvcGVydHkucHJvcGVydHlUeXBlID09PSBERy5UWVBFLkRBVEFfRlJBTUUpIHtcbiAgICAgICAgICAgICAgLy8gREVBTElORyBXSVRIIEJVRzogaHR0cHM6Ly9yZWRkYXRhLmF0bGFzc2lhbi5uZXQvYnJvd3NlL0dST0stMTIyMjNcbiAgICAgICAgICAgICAgY29uc3QgbmV3VGFibGVJbnB1dCA9IHVpLnRhYmxlSW5wdXQocHJvcC5jYXB0aW9uID8/IHByb3AubmFtZSwgbmV3VmFsdWUsIFsuLi5ncm9rLnNoZWxsLnRhYmxlcywgbmV3VmFsdWVdKTtcbiAgICAgICAgICAgICAgdC5yb290LnJlcGxhY2VXaXRoKG5ld1RhYmxlSW5wdXQucm9vdCk7XG4gICAgICAgICAgICAgIHQgPSBuZXdUYWJsZUlucHV0O1xuXG4gICAgICAgICAgICAgIHQub25JbnB1dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5mdW5jQ2FsbCEuaW5wdXRzW3ZhbC5uYW1lXSA9IHQudmFsdWU7XG4gICAgICAgICAgICAgICAgaWYgKHQudmFsdWUgPT09IG51bGwpIHNldFRpbWVvdXQoKCkgPT4gdC5pbnB1dC5jbGFzc0xpc3QuYWRkKCdkNC1pbnZhbGlkJyksIDEwMCk7IGVsc2UgdC5pbnB1dC5jbGFzc0xpc3QucmVtb3ZlKCdkNC1pbnZhbGlkJyk7IDtcblxuICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tEaXNhYmlsaXR5Lm5leHQoKTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0Lm5vdGlmeSA9IGZhbHNlO1xuICAgICAgICAgICAgICB0LnZhbHVlID0gbmV3VmFsdWU7XG4gICAgICAgICAgICAgIHQubm90aWZ5ID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5jaGVja0Rpc2FiaWxpdHkubmV4dCgpO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgdGhpcy5zdWJzLnB1c2godmFsQ2hhbmdlU3ViKTtcblxuICAgICAgICAgIGlmIChwcm9wLmNhdGVnb3J5ICE9PSBwcmV2Q2F0ZWdvcnkpXG4gICAgICAgICAgICBpbnB1dHMuYXBwZW5kKHVpLmgyKHByb3AuY2F0ZWdvcnkpKTtcblxuICAgICAgICAgIGlmICh0LnZhbHVlID09PSBudWxsKSBydW5CdXR0b24uZGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICAgIGlucHV0cy5hcHBlbmQodC5yb290KTtcbiAgICAgICAgfVxuICAgICAgICBwcmV2Q2F0ZWdvcnkgPSBwcm9wLmNhdGVnb3J5O1xuICAgICAgfSk7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IGJ1dHRvbnMgPSB1aS5idXR0b25zSW5wdXQoW2J1dHRvbldyYXBwZXJdKTtcbiAgICBpbnB1dHMuYXBwZW5kKGJ1dHRvbnMpO1xuICAgIGlucHV0cy5jbGFzc0xpc3QucmVtb3ZlKCd1aS1wYW5lbCcpO1xuICAgIGlucHV0cy5zdHlsZS5wYWRkaW5nVG9wID0gJzBweCc7XG4gICAgaW5wdXRzLnN0eWxlLnBhZGRpbmdMZWZ0ID0gJzBweCc7XG5cbiAgICByZXR1cm4gdWkuZGl2KFtpbnB1dHNdKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSaWNoRnVuY3Rpb25WaWV3IGtub3cgZXZlcnl0aGluZyBhYm91dCBpdHMgVUksIHNvIGl0IGV4cG9ydHMgbm90IG9ubHkgZGF0YSwgYnV0IGFsc28gdmlld2VyIHNjcmVlbnNob3RzLlxuICAgKiBUaGlzIGZ1bmN0aW9uIGl0ZXJhdGVzIG92ZXIgYWxsIG9mIHRoZSB0YWJzIGFuZCBzZXF1ZW50YWxseSBleHBvcnRzIGFsbCBkYXRhZnJhbWVzLCB0aGVpciB2aWV3ZXJzIGFuZCBzY2FsYXJzLlxuICAgKiBAcGFyYW0gZm9ybWF0IGZvcm1hdCBuZWVkZWQgdG8gZXhwb3J0LiBTZWUge0BsaW5rIHRoaXMuZGVmYXVsdFN1cHBvcnRlZEV4cG9ydEZvcm1hdHN9IGZvciBhdmFpbGFibGUgZm9ybWF0cy5cbiAgICogQHJldHVybnMgUHJvbWlzZTxCbG9iPiB3aXRoIGRhdGEgcmVhZHkgZm9yIGRvd25sb2FkXG4gICAqL1xuICBwcm90ZWN0ZWQgZGVmYXVsdEV4cG9ydCA9IGFzeW5jIChmb3JtYXQ6IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IGxhc3RDYWxsID0gdGhpcy5sYXN0Q2FsbDtcbiAgICBpZiAoIWxhc3RDYWxsKSB0aHJvdyBuZXcgRXJyb3IoYEZ1bmN0aW9uIHdhcyBub3QgY2FsbGVkYCk7XG5cbiAgICBpZiAoIXRoaXMuZXhwb3J0Q29uZmlnIS5zdXBwb3J0ZWRGb3JtYXRzLmluY2x1ZGVzKGZvcm1hdCkpIHRocm93IG5ldyBFcnJvcihgRm9ybWF0IFwiJHtmb3JtYXR9XCIgaXMgbm90IHN1cHBvcnRlZC5gKTtcblxuICAgIGlmICghdGhpcy5mdW5jKSB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBjb3JyZXNwb2RpbmcgZnVuY3Rpb24gaXMgbm90IHNwZWNpZmllZCcpO1xuXG4gICAgY29uc3QgQkxPQl9UWVBFID0gJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0O2NoYXJzZXQ9VVRGLTgnO1xuICAgIGNvbnN0IGV4cG9ydFdvcmtib29rID0gbmV3IEV4Y2VsSlMuV29ya2Jvb2soKTtcblxuICAgIGNvbnN0IGlzU2NhbGFyVHlwZSA9ICh0eXBlOiBERy5UWVBFKSA9PiAoREcuVFlQRVNfU0NBTEFSLmhhcyh0eXBlKSk7XG5cbiAgICBjb25zdCBpc0RhdGFGcmFtZSA9ICh0eXBlOiBERy5UWVBFKSA9PiAodHlwZSA9PT0gREcuVFlQRS5EQVRBX0ZSQU1FKTtcblxuICAgIGNvbnN0IGRmSW5wdXRzID0gdGhpcy5mdW5jLmlucHV0cy5maWx0ZXIoKGlucHV0KSA9PiBpc0RhdGFGcmFtZShpbnB1dC5wcm9wZXJ0eVR5cGUpKTtcbiAgICBjb25zdCBzY2FsYXJJbnB1dHMgPSB0aGlzLmZ1bmMuaW5wdXRzLmZpbHRlcigoaW5wdXQpID0+IGlzU2NhbGFyVHlwZShpbnB1dC5wcm9wZXJ0eVR5cGUpKTtcbiAgICBjb25zdCBkZk91dHB1dHMgPSB0aGlzLmZ1bmMub3V0cHV0cy5maWx0ZXIoKG91dHB1dCkgPT4gaXNEYXRhRnJhbWUob3V0cHV0LnByb3BlcnR5VHlwZSkpO1xuICAgIGNvbnN0IHNjYWxhck91dHB1dHMgPSB0aGlzLmZ1bmMub3V0cHV0cy5maWx0ZXIoKG91dHB1dCkgPT4gaXNTY2FsYXJUeXBlKG91dHB1dC5wcm9wZXJ0eVR5cGUpKTtcblxuICAgIGNvbnN0IGlucHV0UGFyYW1zID0gWy4uLmxhc3RDYWxsLmlucHV0UGFyYW1zLnZhbHVlcygpXSBhcyBERy5GdW5jQ2FsbFBhcmFtW107XG4gICAgY29uc3Qgb3V0cHV0UGFyYW1zID0gWy4uLmxhc3RDYWxsLm91dHB1dFBhcmFtcy52YWx1ZXMoKV0gYXMgREcuRnVuY0NhbGxQYXJhbVtdO1xuXG4gICAgZGZJbnB1dHMuZm9yRWFjaCgoZGZJbnB1dCkgPT4ge1xuICAgICAgY29uc3QgdmlzaWJsZVRpdGxlID0gZGZJbnB1dC5vcHRpb25zLmNhcHRpb24gfHwgZGZJbnB1dC5uYW1lO1xuICAgICAgY29uc3QgY3VycmVudERmU2hlZXQgPSBleHBvcnRXb3JrYm9vay5hZGRXb3Jrc2hlZXQoZ2V0U2hlZXROYW1lKHZpc2libGVUaXRsZSwgRElSRUNUSU9OLklOUFVUKSk7XG5cbiAgICAgIGNvbnN0IGN1cnJlbnREZiA9IChsYXN0Q2FsbC5pbnB1dHNbZGZJbnB1dC5uYW1lXSBhcyBERy5EYXRhRnJhbWUpO1xuICAgICAgZGZUb1NoZWV0KGN1cnJlbnREZlNoZWV0LCBjdXJyZW50RGYpO1xuICAgIH0pO1xuXG4gICAgaWYgKHNjYWxhcklucHV0cy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IGlucHV0U2NhbGFyc1NoZWV0ID0gZXhwb3J0V29ya2Jvb2suYWRkV29ya3NoZWV0KCdJbnB1dCBzY2FsYXJzJyk7XG4gICAgICBzY2FsYXJzVG9TaGVldChpbnB1dFNjYWxhcnNTaGVldCwgc2NhbGFySW5wdXRzLm1hcCgoc2NhbGFySW5wdXQpID0+ICh7XG4gICAgICAgIGNhcHRpb246IHNjYWxhcklucHV0Lm9wdGlvbnNbJ2NhcHRpb24nXSB8fCBzY2FsYXJJbnB1dC5uYW1lLFxuICAgICAgICB2YWx1ZTogbGFzdENhbGwuaW5wdXRzW3NjYWxhcklucHV0Lm5hbWVdLFxuICAgICAgICB1bml0czogc2NhbGFySW5wdXQub3B0aW9uc1sndW5pdHMnXSB8fCAnJyxcbiAgICAgIH0pKSk7XG4gICAgfVxuXG4gICAgZGZPdXRwdXRzLmZvckVhY2goKGRmT3V0cHV0KSA9PiB7XG4gICAgICBjb25zdCB2aXNpYmxlVGl0bGUgPSBkZk91dHB1dC5vcHRpb25zLmNhcHRpb24gfHwgZGZPdXRwdXQubmFtZTtcbiAgICAgIGNvbnN0IGN1cnJlbnREZlNoZWV0ID0gZXhwb3J0V29ya2Jvb2suYWRkV29ya3NoZWV0KGdldFNoZWV0TmFtZSh2aXNpYmxlVGl0bGUsIERJUkVDVElPTi5PVVRQVVQpKTtcblxuICAgICAgY29uc3QgY3VycmVudERmID0gKGxhc3RDYWxsLm91dHB1dHNbZGZPdXRwdXQubmFtZV0gYXMgREcuRGF0YUZyYW1lKTtcbiAgICAgIGRmVG9TaGVldChjdXJyZW50RGZTaGVldCwgY3VycmVudERmKTtcbiAgICB9KTtcblxuXG4gICAgaWYgKHNjYWxhck91dHB1dHMubGVuZ3RoKSB7XG4gICAgICBjb25zdCBvdXRwdXRTY2FsYXJzU2hlZXQgPSBleHBvcnRXb3JrYm9vay5hZGRXb3Jrc2hlZXQoJ091dHB1dCBzY2FsYXJzJyk7XG4gICAgICBzY2FsYXJzVG9TaGVldChvdXRwdXRTY2FsYXJzU2hlZXQsIHNjYWxhck91dHB1dHMubWFwKChzY2FsYXJPdXRwdXQpID0+ICh7XG4gICAgICAgIGNhcHRpb246IHNjYWxhck91dHB1dC5vcHRpb25zWydjYXB0aW9uJ10gfHwgc2NhbGFyT3V0cHV0Lm5hbWUsXG4gICAgICAgIHZhbHVlOiBsYXN0Q2FsbC5vdXRwdXRzW3NjYWxhck91dHB1dC5uYW1lXSxcbiAgICAgICAgdW5pdHM6IHNjYWxhck91dHB1dC5vcHRpb25zWyd1bml0cyddIHx8ICcnLFxuICAgICAgfSkpKTtcbiAgICB9XG5cbiAgICBjb25zdCB0YWJDb250cm9sID0gdGhpcy50YWJzRWxlbTtcbiAgICBmb3IgKGNvbnN0IHRhYkxhYmVsIG9mIHRoaXMudGFic0xhYmVscykge1xuICAgICAgdGFiQ29udHJvbC5jdXJyZW50UGFuZSA9IHRhYkNvbnRyb2wuZ2V0UGFuZSh0YWJMYWJlbCk7XG4gICAgICBhd2FpdCBuZXcgUHJvbWlzZSgocikgPT4gc2V0VGltZW91dChyLCAxMDApKTtcbiAgICAgIGlmICh0YWJMYWJlbCA9PT0gJ0lucHV0Jykge1xuICAgICAgICBmb3IgKGNvbnN0IGlucHV0UGFyYW0gb2YgaW5wdXRQYXJhbXMuZmlsdGVyKChpbnB1dFBhcmFtKSA9PiBpbnB1dFBhcmFtLnByb3BlcnR5LnByb3BlcnR5VHlwZSA9PT0gREcuVFlQRS5EQVRBX0ZSQU1FKSkge1xuICAgICAgICAgIGNvbnN0IG5vbkdyaWRWaWV3ZXJzID0gdGhpcy5kZlRvVmlld2VyTWFwcGluZ1tpbnB1dFBhcmFtLm5hbWVdXG4gICAgICAgICAgICAuZmlsdGVyKCh2aWV3ZXIpID0+IHZpZXdlci50eXBlICE9PSBERy5WSUVXRVIuR1JJRClcbiAgICAgICAgICAgIC5maWx0ZXIoKHZpZXdlcikgPT4gT2JqZWN0LnZhbHVlcyh2aWV3ZXJUeXBlc01hcHBpbmcpLmluY2x1ZGVzKHZpZXdlci50eXBlKSk7XG5cbiAgICAgICAgICBjb25zdCBkZklucHV0ID0gZGZJbnB1dHMuZmluZCgoaW5wdXQpID0+IGlucHV0Lm5hbWUgPT09IGlucHV0UGFyYW0ubmFtZSk7XG4gICAgICAgICAgY29uc3QgdmlzaWJsZVRpdGxlID0gZGZJbnB1dCEub3B0aW9ucy5jYXB0aW9uIHx8IGlucHV0UGFyYW0ubmFtZTtcbiAgICAgICAgICBjb25zdCBjdXJyZW50RGYgPSAobGFzdENhbGwuaW5wdXRzW2RmSW5wdXQhLm5hbWVdIGFzIERHLkRhdGFGcmFtZSk7XG5cbiAgICAgICAgICBmb3IgKGNvbnN0IFtpbmRleCwgdmlld2VyXSBvZiBub25HcmlkVmlld2Vycy5lbnRyaWVzKCkpIHtcbiAgICAgICAgICAgIGF3YWl0IHBsb3RUb1NoZWV0KFxuICAgICAgICAgICAgICBleHBvcnRXb3JrYm9vayxcbiAgICAgICAgICAgICAgZXhwb3J0V29ya2Jvb2suZ2V0V29ya3NoZWV0KGdldFNoZWV0TmFtZSh2aXNpYmxlVGl0bGUsIERJUkVDVElPTi5JTlBVVCkpLFxuICAgICAgICAgICAgICB2aWV3ZXIucm9vdCxcbiAgICAgICAgICAgICAgY3VycmVudERmLmNvbHVtbnMubGVuZ3RoICsgMixcbiAgICAgICAgICAgICAgKGluZGV4ID4gMCkgPyBNYXRoLmNlaWwobm9uR3JpZFZpZXdlcnNbaW5kZXgtMV0ucm9vdC5jbGllbnRIZWlnaHQgLyAyMCkgKyAxIDogMFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmb3IgKGNvbnN0IG91dHB1dFBhcmFtIG9mIG91dHB1dFBhcmFtcy5maWx0ZXIoXG4gICAgICAgICAgKG91dHB1dFBhcmFtKSA9PiBvdXRwdXRQYXJhbS5wcm9wZXJ0eS5wcm9wZXJ0eVR5cGUgPT09IERHLlRZUEUuREFUQV9GUkFNRSAmJlxuICAgICAgICAgIChcbiAgICAgICAgICAgICh0YWJMYWJlbCA9PT0gJ091dHB1dCcgJiYgb3V0cHV0UGFyYW0ucHJvcGVydHkuY2F0ZWdvcnkgPT09ICdNaXNjJyB8fCBvdXRwdXRQYXJhbS5wcm9wZXJ0eS5jYXRlZ29yeSA9PT0gJ091dHB1dCcpIHx8XG4gICAgICAgICAgICAodGFiTGFiZWwgIT09ICdPdXRwdXQnICYmIG91dHB1dFBhcmFtLnByb3BlcnR5LmNhdGVnb3J5ID09PSB0YWJMYWJlbClcbiAgICAgICAgICApXG4gICAgICAgICkpIHtcbiAgICAgICAgICBjb25zdCBub25HcmlkVmlld2VycyA9IHRoaXMuZGZUb1ZpZXdlck1hcHBpbmdbb3V0cHV0UGFyYW0ucHJvcGVydHkubmFtZV1cbiAgICAgICAgICAgIC5maWx0ZXIoKHZpZXdlcikgPT4gdmlld2VyLnR5cGUgIT09IERHLlZJRVdFUi5HUklEKVxuICAgICAgICAgICAgLmZpbHRlcigodmlld2VyKSA9PiBPYmplY3QudmFsdWVzKHZpZXdlclR5cGVzTWFwcGluZykuaW5jbHVkZXModmlld2VyLnR5cGUpKTtcblxuICAgICAgICAgIGNvbnN0IGRmT3V0cHV0ID0gZGZPdXRwdXRzLmZpbmQoKG91dHB1dCkgPT4gb3V0cHV0Lm5hbWUgPT09IG91dHB1dFBhcmFtLnByb3BlcnR5Lm5hbWUpITtcbiAgICAgICAgICBjb25zdCB2aXNpYmxlVGl0bGUgPSBkZk91dHB1dC5vcHRpb25zLmNhcHRpb24gfHwgb3V0cHV0UGFyYW0ucHJvcGVydHkubmFtZTtcbiAgICAgICAgICBjb25zdCBjdXJyZW50RGYgPSAobGFzdENhbGwub3V0cHV0c1tkZk91dHB1dC5uYW1lXSBhcyBERy5EYXRhRnJhbWUpO1xuXG4gICAgICAgICAgZm9yIChjb25zdCBbaW5kZXgsIHZpZXdlcl0gb2Ygbm9uR3JpZFZpZXdlcnMuZW50cmllcygpKSB7XG4gICAgICAgICAgICBpZiAodmlld2VyLnR5cGUgPT09IERHLlZJRVdFUi5TVEFUSVNUSUNTKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGxlbmd0aCA9IGN1cnJlbnREZi5jb2x1bW5zLmxlbmd0aDtcbiAgICAgICAgICAgICAgY29uc3Qgc3RhdHMgPSBERy5EYXRhRnJhbWUuZnJvbUNvbHVtbnMoW1xuICAgICAgICAgICAgICAgIERHLkNvbHVtbi5zdHJpbmcoJ05hbWUnLCBsZW5ndGgpLmluaXQoKGk6IG51bWJlcikgPT4gY3VycmVudERmLmNvbHVtbnMuYnlJbmRleChpKS5uYW1lKSxcbiAgICAgICAgICAgICAgICBERy5Db2x1bW4uaW50KCdWYWx1ZXMnLCBsZW5ndGgpLmluaXQoKGk6IG51bWJlcikgPT4gY3VycmVudERmLmNvbHVtbnMuYnlJbmRleChpKS5zdGF0cy52YWx1ZUNvdW50KSxcbiAgICAgICAgICAgICAgICBERy5Db2x1bW4uaW50KCdOdWxscycsIGxlbmd0aCkuaW5pdCgoaTogbnVtYmVyKSA9PiBjdXJyZW50RGYuY29sdW1ucy5ieUluZGV4KGkpLnN0YXRzLm1pc3NpbmdWYWx1ZUNvdW50KSxcbiAgICAgICAgICAgICAgICBERy5Db2x1bW4uZmxvYXQoJ01pbicsIGxlbmd0aCkuaW5pdCgoaTogbnVtYmVyKSA9PiBjdXJyZW50RGYuY29sdW1ucy5ieUluZGV4KGkpLnN0YXRzLm1pbiksXG4gICAgICAgICAgICAgICAgREcuQ29sdW1uLmZsb2F0KCdNYXgnLCBsZW5ndGgpLmluaXQoKGk6IG51bWJlcikgPT4gY3VycmVudERmLmNvbHVtbnMuYnlJbmRleChpKS5zdGF0cy5tYXgpLFxuICAgICAgICAgICAgICAgIERHLkNvbHVtbi5mbG9hdCgnQXZnJywgbGVuZ3RoKS5pbml0KChpOiBudW1iZXIpID0+IGN1cnJlbnREZi5jb2x1bW5zLmJ5SW5kZXgoaSkuc3RhdHMuYXZnKSxcbiAgICAgICAgICAgICAgICBERy5Db2x1bW4uZmxvYXQoJ1N0ZGV2JywgbGVuZ3RoKS5pbml0KChpOiBudW1iZXIpID0+IGN1cnJlbnREZi5jb2x1bW5zLmJ5SW5kZXgoaSkuc3RhdHMuc3RkZXYpLFxuICAgICAgICAgICAgICBdKTtcbiAgICAgICAgICAgICAgZGZUb1NoZWV0KFxuICAgICAgICAgICAgICAgIGV4cG9ydFdvcmtib29rLmdldFdvcmtzaGVldChnZXRTaGVldE5hbWUodmlzaWJsZVRpdGxlLCBESVJFQ1RJT04uT1VUUFVUKSksXG4gICAgICAgICAgICAgICAgc3RhdHMsXG4gICAgICAgICAgICAgICAgY3VycmVudERmLmNvbHVtbnMubGVuZ3RoICsgMixcbiAgICAgICAgICAgICAgICAoaW5kZXggPiAwKSA/IE1hdGguY2VpbChub25HcmlkVmlld2Vyc1tpbmRleC0xXS5yb290LmNsaWVudEhlaWdodCAvIDIwKSArIDEgOiAwXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBhd2FpdCBwbG90VG9TaGVldChcbiAgICAgICAgICAgICAgICBleHBvcnRXb3JrYm9vayxcbiAgICAgICAgICAgICAgICBleHBvcnRXb3JrYm9vay5nZXRXb3Jrc2hlZXQoZ2V0U2hlZXROYW1lKHZpc2libGVUaXRsZSwgRElSRUNUSU9OLk9VVFBVVCkpLFxuICAgICAgICAgICAgICAgIHZpZXdlci5yb290LFxuICAgICAgICAgICAgICAgIGN1cnJlbnREZi5jb2x1bW5zLmxlbmd0aCArIDIsXG4gICAgICAgICAgICAgICAgKGluZGV4ID4gMCkgPyBNYXRoLmNlaWwobm9uR3JpZFZpZXdlcnNbaW5kZXgtMV0ucm9vdC5jbGllbnRIZWlnaHQgLyAyMCkgKyAxIDogMFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9O1xuICAgIGNvbnN0IGJ1ZmZlciA9IGF3YWl0IGV4cG9ydFdvcmtib29rLnhsc3gud3JpdGVCdWZmZXIoKTtcblxuICAgIHJldHVybiBuZXcgQmxvYihbYnVmZmVyXSwge3R5cGU6IEJMT0JfVFlQRX0pO1xuICB9O1xuXG4gIGV4cG9ydENvbmZpZyA9IHtcbiAgICBzdXBwb3J0ZWRFeHRlbnNpb25zOiB0aGlzLmRlZmF1bHRTdXBwb3J0ZWRFeHBvcnRFeHRlbnNpb25zKCksXG4gICAgc3VwcG9ydGVkRm9ybWF0czogdGhpcy5kZWZhdWx0U3VwcG9ydGVkRXhwb3J0Rm9ybWF0cygpLFxuICAgIGV4cG9ydDogdGhpcy5kZWZhdWx0RXhwb3J0LFxuICAgIGZpbGVuYW1lOiB0aGlzLmRlZmF1bHRFeHBvcnRGaWxlbmFtZSxcbiAgfTtcbn1cblxuY29uc3QgZ2V0U2hlZXROYW1lID0gKG5hbWU6IHN0cmluZywgZGlyZWN0aW9uOiBESVJFQ1RJT04pID0+IHtcbiAgY29uc3QgaWRlYWxOYW1lID0gYCR7ZGlyZWN0aW9ufSAtICR7bmFtZX1gO1xuICByZXR1cm4gKGlkZWFsTmFtZS5sZW5ndGggPiAzMSkgPyBuYW1lLnN1YnN0cmluZygwLCAzMikgOiBpZGVhbE5hbWU7XG59O1xuXG5lbnVtIERJUkVDVElPTiB7XG4gIElOUFVUID0gJ0lucHV0JyxcbiAgT1VUUFVUID0gJ091dHB1dCdcbn1cblxuY29uc3Qgc2NhbGFyc1RvU2hlZXQgPSAoc2hlZXQ6IEV4Y2VsSlMuV29ya3NoZWV0LCBzY2FsYXJzOiB7IGNhcHRpb246IHN0cmluZywgdmFsdWU6IHN0cmluZywgdW5pdHM6IHN0cmluZyB9W10pID0+IHtcbiAgc2hlZXQuYWRkUm93KFsnUGFyYW1ldGVyJywgJ1ZhbHVlJywgJ1VuaXRzJ10pLmZvbnQgPSB7Ym9sZDogdHJ1ZX07XG4gIHNjYWxhcnMuZm9yRWFjaCgoc2NhbGFyKSA9PiB7XG4gICAgc2hlZXQuYWRkUm93KFtzY2FsYXIuY2FwdGlvbiwgc2NhbGFyLnZhbHVlLCBzY2FsYXIudW5pdHNdKTtcbiAgfSk7XG5cbiAgc2hlZXQuZ2V0Q29sdW1uKDEpLndpZHRoID0gTWF0aC5tYXgoXG4gICAgLi4uc2NhbGFycy5tYXAoKHNjYWxhcikgPT4gc2NhbGFyLmNhcHRpb24udG9TdHJpbmcoKS5sZW5ndGgpLCAnUGFyYW1ldGVyJy5sZW5ndGhcbiAgKSAqIDEuMjtcbiAgc2hlZXQuZ2V0Q29sdW1uKDIpLndpZHRoID0gTWF0aC5tYXgoLi4uc2NhbGFycy5tYXAoKHNjYWxhcikgPT4gc2NhbGFyLnZhbHVlLnRvU3RyaW5nKCkubGVuZ3RoKSwgJ1ZhbHVlJy5sZW5ndGgpICogMS4yO1xuICBzaGVldC5nZXRDb2x1bW4oMykud2lkdGggPSBNYXRoLm1heCguLi5zY2FsYXJzLm1hcCgoc2NhbGFyKSA9PiBzY2FsYXIudW5pdHMudG9TdHJpbmcoKS5sZW5ndGgpLCAnVW5pdHMnLmxlbmd0aCkgKiAxLjI7XG59O1xuXG5jb25zdCBkZlRvU2hlZXQgPSAoc2hlZXQ6IEV4Y2VsSlMuV29ya3NoZWV0LCBkZjogREcuRGF0YUZyYW1lLCBjb2x1bW46IG51bWJlciA9IDAsIHJvdzogbnVtYmVyID0gMCkgPT4ge1xuICBmb3IgKGxldCBpPSAwOyBpIDwgZGYuY29sdW1ucy5uYW1lcygpLmxlbmd0aDsgaSsrKSB7XG4gICAgc2hlZXQuZ2V0Q2VsbCgxICsgcm93LCAxICsgaSArIGNvbHVtbikudmFsdWUgPSBkZi5jb2x1bW5zLmJ5SW5kZXgoaSkubmFtZTtcbiAgICBzaGVldC5nZXRDb2x1bW4oMSArIGkgKyBjb2x1bW4pLndpZHRoID0gTWF0aC5tYXgoXG4gICAgICAuLi5kZi5jb2x1bW5zLmJ5SW5kZXgoaSkuY2F0ZWdvcmllcy5tYXAoKGNhdGVnb3J5KSA9PiBjYXRlZ29yeS50b1N0cmluZygpLmxlbmd0aCksXG4gICAgICBkZi5jb2x1bW5zLmJ5SW5kZXgoaSkubmFtZS5sZW5ndGhcbiAgICApICogMS4yO1xuICB9XG4gIGZvciAobGV0IGRmQ29sdW1uID0gMDsgZGZDb2x1bW4gPCBkZi5jb2x1bW5zLmxlbmd0aDsgZGZDb2x1bW4rKykge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGYucm93Q291bnQ7IGkrKylcbiAgICAgIHNoZWV0LmdldENlbGwoaSArIDIgKyByb3csIDEgKyBjb2x1bW4rZGZDb2x1bW4pLnZhbHVlID0gZGYuY29sdW1ucy5ieUluZGV4KGRmQ29sdW1uKS5nZXQoaSk7XG4gIH1cbn07XG5cbmNvbnN0IHBsb3RUb1NoZWV0ID0gYXN5bmMgKGV4cG9ydFdiOiBFeGNlbEpTLldvcmtib29rLCBzaGVldDogRXhjZWxKUy5Xb3Jrc2hlZXQsIHBsb3Q6IEhUTUxFbGVtZW50LCBjb2x1bW5Gb3JJbWFnZTogbnVtYmVyLCByb3dGb3JJbWFnZTogbnVtYmVyID0gMCkgPT4ge1xuICBjb25zdCBjYW52YXMgPSBhd2FpdCBodG1sMmNhbnZhcyhwbG90IGFzIEhUTUxFbGVtZW50LCB7bG9nZ2luZzogZmFsc2V9KTtcbiAgY29uc3QgZGF0YVVybCA9IGNhbnZhcy50b0RhdGFVUkwoJ2ltYWdlL3BuZycpO1xuXG4gIGNvbnN0IGltYWdlSWQgPSBleHBvcnRXYi5hZGRJbWFnZSh7XG4gICAgYmFzZTY0OiBkYXRhVXJsLFxuICAgIGV4dGVuc2lvbjogJ3BuZycsXG4gIH0pO1xuICBzaGVldC5hZGRJbWFnZShpbWFnZUlkLCB7XG4gICAgdGw6IHtjb2w6IGNvbHVtbkZvckltYWdlLCByb3c6IHJvd0ZvckltYWdlfSxcbiAgICBleHQ6IHt3aWR0aDogY2FudmFzLndpZHRoLCBoZWlnaHQ6IGNhbnZhcy5oZWlnaHR9LFxuICB9KTtcbn07XG4iXX0=