construct-hub 0.4.498 → 0.4.499
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/.jsii +127 -44
- package/.jsii.tabl.json +1 -1
- package/API.md +69 -0
- package/lib/api.d.ts +20 -0
- package/lib/api.js +1 -1
- package/lib/construct-hub.d.ts +15 -1
- package/lib/construct-hub.js +3 -2
- package/lib/monitored-certificate/index.js +3 -1
- package/lib/monitoring/index.d.ts +28 -3
- package/lib/monitoring/index.js +79 -3
- package/lib/monitoring/web-canary.js +2 -1
- package/lib/package-sources/code-artifact.js +1 -1
- package/lib/package-sources/npmjs.js +1 -1
- package/lib/package-tag/index.js +3 -3
- package/lib/package-tag-group/index.js +2 -2
- package/lib/preload-file/index.js +1 -1
- package/lib/s3/storage.js +1 -1
- package/lib/spdx-license.js +1 -1
- package/package.json +1 -1
package/lib/construct-hub.js
CHANGED
|
@@ -47,6 +47,7 @@ class ConstructHub extends constructs_1.Construct {
|
|
|
47
47
|
});
|
|
48
48
|
this.monitoring = new monitoring_1.Monitoring(this, 'Monitoring', {
|
|
49
49
|
alarmActions: props.alarmActions,
|
|
50
|
+
alarmOverrides: props.alarmOverrides,
|
|
50
51
|
});
|
|
51
52
|
const overviewDashboard = new overview_dashboard_1.OverviewDashboard(this, 'OverviewDashboard', {
|
|
52
53
|
lambdaServiceAlarmThreshold: 70,
|
|
@@ -412,7 +413,7 @@ class ConstructHub extends constructs_1.Construct {
|
|
|
412
413
|
}
|
|
413
414
|
exports.ConstructHub = ConstructHub;
|
|
414
415
|
_a = JSII_RTTI_SYMBOL_1;
|
|
415
|
-
ConstructHub[_a] = { fqn: "construct-hub.ConstructHub", version: "0.4.
|
|
416
|
+
ConstructHub[_a] = { fqn: "construct-hub.ConstructHub", version: "0.4.499" };
|
|
416
417
|
/**
|
|
417
418
|
* How possibly risky operations (such as doc-generation, which requires
|
|
418
419
|
* installing the indexed packages in order to trans-literate sample code) are
|
|
@@ -452,4 +453,4 @@ var Isolation;
|
|
|
452
453
|
*/
|
|
453
454
|
Isolation[Isolation["NO_INTERNET_ACCESS"] = 2] = "NO_INTERNET_ACCESS";
|
|
454
455
|
})(Isolation || (exports.Isolation = Isolation = {}));
|
|
455
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RydWN0LWh1Yi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jb25zdHJ1Y3QtaHViLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsc0dBQTJFO0FBQzNFLDZDQUFvRDtBQUVwRCwyQ0FBMkM7QUFFM0MsaURBQTRFO0FBRTVFLHlDQUF5QztBQUN6QywrQ0FBdUQ7QUFJdkQsMkNBQXVDO0FBQ3ZDLHlFQUE0RTtBQUU1RSx1Q0FBZ0Q7QUFFaEQseURBQXFEO0FBQ3JELG1EQUFnRDtBQUNoRCx5REFBcUQ7QUFDckQsMkRBQXdEO0FBQ3hELDJEQUF1RDtBQUN2RCwyREFBNkQ7QUFDN0QsMERBQTZFO0FBQzdFLCtEQUEyRDtBQUMzRCwyREFBdUQ7QUFDdkQsMERBQXVEO0FBQ3ZELHVEQUF5RTtBQUN6RSw2Q0FBMEM7QUFDMUMsNkRBQXlEO0FBRXpELHVEQUEwQztBQUkxQywwQ0FBZ0Q7QUFDaEQsaURBQTZDO0FBQzdDLHFDQU1rQjtBQXNPbEI7O0dBRUc7QUFDSCxNQUFhLFlBQWEsU0FBUSxzQkFBUztJQVV6QyxZQUNFLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixRQUEyQixFQUFFO1FBRTdCLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsSUFDRSxLQUFLLENBQUMscUJBQXFCLElBQUksSUFBSTtZQUNuQyxLQUFLLENBQUMsc0JBQXNCLElBQUksSUFBSSxFQUNwQyxDQUFDO1lBQ0QsTUFBTSxJQUFJLEtBQUssQ0FDYiwwSEFBMEgsQ0FDM0gsQ0FBQztRQUNKLENBQUM7UUFFRCxNQUFNLHVCQUF1QixHQUFHLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxpQkFBaUI7WUFDeEUsQ0FBQyxDQUFDLElBQUk7WUFDTixDQUFDLENBQUMsS0FBSyxDQUFDO1FBRVYsTUFBTSxjQUFjLEdBQUcsMEJBQWdCLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRTtZQUN4RCxRQUFRLEVBQUUsS0FBSyxDQUFDLGVBQWU7U0FD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RSxDQUFDO0lBQzlFLENBQUM7O0FBM2NILG9DQTRjQzs7O0FBRUQ7Ozs7O0dBS0c7QUFDSCxJQUFZLFNBaUNYO0FBakNELFdBQVksU0FBUztJQUNuQjs7Ozs7Ozs7Ozs7O09BWUc7SUFDSCxtRkFBeUIsQ0FBQTtJQUV6Qjs7OztPQUlHO0lBQ0gsK0VBQXVCLENBQUE7SUFFdkI7Ozs7Ozs7O09BUUc7SUFDSCxxRUFBa0IsQ0FBQTtBQUNwQixDQUFDLEVBakNXLFNBQVMseUJBQVQsU0FBUyxRQWlDcEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcHBsaWNhdGlvbiB9IGZyb20gJ0Bhd3MtY2RrL2F3cy1zZXJ2aWNlY2F0YWxvZ2FwcHJlZ2lzdHJ5LWFscGhhJztcbmltcG9ydCB7IER1cmF0aW9uLCBTdGFjaywgVGFncyB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCAqIGFzIGN3IGZyb20gJ2F3cy1jZGstbGliL2F3cy1jbG91ZHdhdGNoJztcbmltcG9ydCAqIGFzIGVjMiBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWMyJztcbmltcG9ydCAqIGFzIGlhbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7IEFueVByaW5jaXBhbCwgRWZmZWN0LCBQb2xpY3lTdGF0ZW1lbnQgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7IFJldGVudGlvbkRheXMgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbG9ncyc7XG5pbXBvcnQgKiBhcyBzMyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtczMnO1xuaW1wb3J0IHsgQmxvY2tQdWJsaWNBY2Nlc3MgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtczMnO1xuaW1wb3J0ICogYXMgc2VjcmV0c21hbmFnZXIgZnJvbSAnYXdzLWNkay1saWIvYXdzLXNlY3JldHNtYW5hZ2VyJztcbmltcG9ydCAqIGFzIHNxcyBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc3FzJztcbmltcG9ydCB7IElTdGF0ZU1hY2hpbmUgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc3RlcGZ1bmN0aW9ucyc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IGNyZWF0ZVJlc3RyaWN0ZWRTZWN1cml0eUdyb3VwcyB9IGZyb20gJy4vX2xpbWl0ZWQtaW50ZXJuZXQtYWNjZXNzJztcbmltcG9ydCB7IEFsYXJtQWN0aW9ucywgQWxhcm1TZXZlcml0aWVzLCBEb21haW4gfSBmcm9tICcuL2FwaSc7XG5pbXBvcnQgeyBEZW55TGlzdCwgSW5nZXN0aW9uIH0gZnJvbSAnLi9iYWNrZW5kJztcbmltcG9ydCB7IERlbnlMaXN0UnVsZSB9IGZyb20gJy4vYmFja2VuZC9kZW55LWxpc3QvYXBpJztcbmltcG9ydCB7IEZlZWRCdWlsZGVyIH0gZnJvbSAnLi9iYWNrZW5kL2ZlZWQtYnVpbGRlcic7XG5pbXBvcnQgeyBJbnZlbnRvcnkgfSBmcm9tICcuL2JhY2tlbmQvaW52ZW50b3J5JztcbmltcG9ydCB7IExpY2Vuc2VMaXN0IH0gZnJvbSAnLi9iYWNrZW5kL2xpY2Vuc2UtbGlzdCc7XG5pbXBvcnQgeyBPcmNoZXN0cmF0aW9uIH0gZnJvbSAnLi9iYWNrZW5kL29yY2hlc3RyYXRpb24nO1xuaW1wb3J0IHsgUGFja2FnZVN0YXRzIH0gZnJvbSAnLi9iYWNrZW5kL3BhY2thZ2Utc3RhdHMnO1xuaW1wb3J0IHsgUmVsZWFzZU5vdGVGZXRjaGVyIH0gZnJvbSAnLi9iYWNrZW5kL3JlbGVhc2Utbm90ZXMnO1xuaW1wb3J0IHsgQ0FUQUxPR19LRVksIFNUT1JBR0VfS0VZX1BSRUZJWCB9IGZyb20gJy4vYmFja2VuZC9zaGFyZWQvY29uc3RhbnRzJztcbmltcG9ydCB7IFZlcnNpb25UcmFja2VyIH0gZnJvbSAnLi9iYWNrZW5kL3ZlcnNpb24tdHJhY2tlcic7XG5pbXBvcnQgeyBCYWNrZW5kRGFzaGJvYXJkIH0gZnJvbSAnLi9iYWNrZW5kLWRhc2hib2FyZCc7XG5pbXBvcnQgeyBSZXBvc2l0b3J5IH0gZnJvbSAnLi9jb2RlYXJ0aWZhY3QvcmVwb3NpdG9yeSc7XG5pbXBvcnQgeyBEb21haW5SZWRpcmVjdCwgRG9tYWluUmVkaXJlY3RTb3VyY2UgfSBmcm9tICcuL2RvbWFpbi1yZWRpcmVjdCc7XG5pbXBvcnQgeyBNb25pdG9yaW5nIH0gZnJvbSAnLi9tb25pdG9yaW5nJztcbmltcG9ydCB7IE92ZXJ2aWV3RGFzaGJvYXJkIH0gZnJvbSAnLi9vdmVydmlldy1kYXNoYm9hcmQnO1xuaW1wb3J0IHsgSVBhY2thZ2VTb3VyY2UgfSBmcm9tICcuL3BhY2thZ2Utc291cmNlJztcbmltcG9ydCB7IE5wbUpzIH0gZnJvbSAnLi9wYWNrYWdlLXNvdXJjZXMnO1xuaW1wb3J0IHsgUGFja2FnZVRhZyB9IGZyb20gJy4vcGFja2FnZS10YWcnO1xuaW1wb3J0IHsgUGFja2FnZVRhZ0dyb3VwIH0gZnJvbSAnLi9wYWNrYWdlLXRhZy1ncm91cCc7XG5pbXBvcnQgeyBQcmVsb2FkRmlsZSB9IGZyb20gJy4vcHJlbG9hZC1maWxlJztcbmltcG9ydCB7IFMzU3RvcmFnZUZhY3RvcnkgfSBmcm9tICcuL3MzL3N0b3JhZ2UnO1xuaW1wb3J0IHsgU3BkeExpY2Vuc2UgfSBmcm9tICcuL3NwZHgtbGljZW5zZSc7XG5pbXBvcnQge1xuICBXZWJBcHAsXG4gIFBhY2thZ2VMaW5rQ29uZmlnLFxuICBGZWF0dXJlZFBhY2thZ2VzLFxuICBGZWF0dXJlRmxhZ3MsXG4gIENhdGVnb3J5LFxufSBmcm9tICcuL3dlYmFwcCc7XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBmb3IgZ2VuZXJhdGluZyBSU1MgYW5kIEFUT00gZmVlZCBmb3IgdGhlIGxhdGVzdCBwYWNrYWdlc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEZlZWRDb25maWd1cmF0aW9uIHtcbiAgLyoqXG4gICAqIEdpdGh1YiB0b2tlbiBmb3IgZ2VuZXJhdGluZyByZWxlYXNlIG5vdGVzLiBXaGVuIG1pc3Npbmcgbm8gcmVsZWFzZSBub3RlcyB3aWxsIGJlIGluY2x1ZGVkIGluIHRoZSBnZW5lcmF0ZWQgUlNTL0FUT00gZmVlZFxuICAgKi9cbiAgcmVhZG9ubHkgZ2l0aHViVG9rZW5TZWNyZXQ/OiBzZWNyZXRzbWFuYWdlci5JU2VjcmV0O1xuXG4gIC8qKlxuICAgKiBUaXRsZSB1c2VkIGluIHRoZSBnZW5lcmF0ZWQgZmVlZFxuICAgKi9cbiAgcmVhZG9ubHkgZmVlZFRpdGxlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBkZXNjcmlwdGlvbiB1c2VkIGluIHRoZSBnZW5lcmF0ZWQgZmVlZFxuICAgKi9cbiAgcmVhZG9ubHkgZmVlZERlc2NyaXB0aW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFByb3BzIGZvciBgQ29uc3RydWN0SHViYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb25zdHJ1Y3RIdWJQcm9wcyB7XG4gIC8qKlxuICAgKiBDb25uZWN0IHRoZSBodWIgdG8gYSBkb21haW4gKHJlcXVpcmVzIGEgaG9zdGVkIHpvbmUgYW5kIGEgY2VydGlmaWNhdGUpLlxuICAgKi9cbiAgcmVhZG9ubHkgZG9tYWluPzogRG9tYWluO1xuXG4gIC8qKlxuICAgKiBBY3Rpb25zIHRvIHBlcmZvcm0gd2hlbiBhbGFybXMgYXJlIHNldC5cbiAgICovXG4gIHJlYWRvbmx5IGFsYXJtQWN0aW9ucz86IEFsYXJtQWN0aW9ucztcblxuICAvKipcbiAgICogQ29uZmlndXJlIHRoZSBzZXZlcml0aWVzIG9mIHZhcmlvdXMgYWxhcm1zLlxuICAgKi9cbiAgcmVhZG9ubHkgYWxhcm1TZXZlcml0aWVzPzogQWxhcm1TZXZlcml0aWVzO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGNvbXB1dGUgZW52aXJvbm1lbnRzIGZvciBzZW5zaXRpdmUgdGFza3MgKHdoaWNoIG9wZXJhdGUgb25cbiAgICogdW4tdHJ1c3RlZCBjb21wbGV4IGRhdGEsIHN1Y2ggYXMgdGhlIHRyYW5zbGl0ZXJhdG9yLCB3aGljaCBvcGVyYXRlcyB3aXRoXG4gICAqIGV4dGVybmFsbHktc291cmNlZCBucG0gcGFja2FnZSB0YXJiYWxscykgc2hvdWxkIHJ1biBpbiBuZXR3b3JrLWlzb2xhdGVkXG4gICAqIGVudmlyb25tZW50cy4gVGhpcyBpbXBsaWVzIHRoZSBjcmVhdGlvbiBvZiBhZGRpdG9uYWwgcmVzb3VyY2VzLCBpbmNsdWRpbmc6XG4gICAqXG4gICAqIC0gQSBWUEMgd2l0aCBvbmx5IGlzb2xhdGVkIHN1Ym5ldHMuXG4gICAqIC0gVlBDIEVuZHBvaW50cyAoQ2xvdWRXYXRjaCBMb2dzLCBDb2RlQXJ0aWZhY3QsIENvZGVBcnRpZmFjdCBBUEksIFMzLCAuLi4pXG4gICAqIC0gQSBDb2RlQXJ0aWZhY3QgUmVwb3NpdG9yeSB3aXRoIGFuIGV4dGVybmFsIGNvbm5lY3Rpb24gdG8gbnBtanMuY29tXG4gICAqXG4gICAqIEBkZXByZWNhdGVkIHVzZSBzZW5zaXRpdmVUYXNrSXNvbGF0aW9uIGluc3RlYWQuXG4gICAqL1xuICByZWFkb25seSBpc29sYXRlU2Vuc2l0aXZlVGFza3M/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGNvbXB1dGUgZW52aXJvbm1lbnRzIGZvciBzZW5zaXRpdmUgdGFza3MgKHdoaWNoIG9wZXJhdGUgb25cbiAgICogdW4tdHJ1c3RlZCBjb21wbGV4IGRhdGEsIHN1Y2ggYXMgdGhlIHRyYW5zbGl0ZXJhdG9yLCB3aGljaCBvcGVyYXRlcyB3aXRoXG4gICAqIGV4dGVybmFsbHktc291cmNlZCBucG0gcGFja2FnZSB0YXJiYWxscykgc2hvdWxkIHJ1biBpbiBuZXR3b3JrLWlzb2xhdGVkXG4gICAqIGVudmlyb25tZW50cy4gVGhpcyBpbXBsaWVzIHRoZSBjcmVhdGlvbiBvZiBhZGRpdG9uYWwgcmVzb3VyY2VzLCBpbmNsdWRpbmc6XG4gICAqXG4gICAqIC0gQSBWUEMgd2l0aCBvbmx5IGlzb2xhdGVkIHN1Ym5ldHMuXG4gICAqIC0gVlBDIEVuZHBvaW50cyAoQ2xvdWRXYXRjaCBMb2dzLCBDb2RlQXJ0aWZhY3QsIENvZGVBcnRpZmFjdCBBUEksIFMzLCAuLi4pXG4gICAqIC0gQSBDb2RlQXJ0aWZhY3QgUmVwb3NpdG9yeSB3aXRoIGFuIGV4dGVybmFsIGNvbm5lY3Rpb24gdG8gbnBtanMuY29tXG4gICAqXG4gICAqIEBkZWZhdWx0IElzb2xhdGlvbi5OT19JTlRFUk5FVF9BQ0NFU1NcbiAgICovXG4gIHJlYWRvbmx5IHNlbnNpdGl2ZVRhc2tJc29sYXRpb24/OiBJc29sYXRpb247XG5cbiAgLyoqXG4gICAqIEhvdyBsb25nIHRvIHJldGFpbiBDbG91ZFdhdGNoIGxvZ3MgZm9yLlxuICAgKlxuICAgKiBAZGVmYXVsdHMgUmV0ZW50aW9uRGF5cy5URU5fWUVBUlNcbiAgICovXG4gIHJlYWRvbmx5IGxvZ1JldGVudGlvbj86IFJldGVudGlvbkRheXM7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBDbG91ZFdhdGNoIGRhc2hib2FyZCB0aGF0IHJlcHJlc2VudHMgdGhlIGhlYWx0aCBvZiBiYWNrZW5kXG4gICAqIHN5c3RlbXMuXG4gICAqL1xuICByZWFkb25seSBiYWNrZW5kRGFzaGJvYXJkTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogQSBsaXN0IG9mIHBhY2thZ2VzIHRvIGJsb2NrIGZyb20gdGhlIGNvbnN0cnVjdCBodWIuXG4gICAqXG4gICAqIEBkZWZhdWx0IFtdXG4gICAqL1xuICByZWFkb25seSBkZW55TGlzdD86IERlbnlMaXN0UnVsZVtdO1xuXG4gIC8qKlxuICAgKiBUaGUgcGFja2FnZSBzb3VyY2VzIHRvIHJlZ2lzdGVyIHdpdGggdGhpcyBDb25zdHJ1Y3RIdWIgaW5zdGFuY2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gYSBzdGFuZGFyZCBucG1qcy5jb20gcGFja2FnZSBzb3VyY2Ugd2lsbCBiZSBjb25maWd1cmVkLlxuICAgKi9cbiAgcmVhZG9ubHkgcGFja2FnZVNvdXJjZXM/OiBJUGFja2FnZVNvdXJjZVtdO1xuXG4gIC8qKlxuICAgKiBUaGUgYWxsb3dlZCBsaWNlbnNlcyBmb3IgcGFja2FnZXMgaW5kZXhlZCBieSB0aGlzIGluc3RhbmNlIG9mIENvbnN0cnVjdEh1Yi5cbiAgICpcbiAgICogQGRlZmF1bHQgWy4uLlNwZHhMaWNlbnNlLmFwYWNoZSgpLC4uLlNwZHhMaWNlbnNlLmJzZCgpLC4uLlNwZHhMaWNlbnNlLmNkZGwoKSwuLi5TcGR4TGljZW5zZS5lcGwoKSxTcGR4TGljZW5zZS5JU0MsLi4uU3BkeExpY2Vuc2UubWl0KCksU3BkeExpY2Vuc2UuTVBMXzJfMF1cbiAgICovXG4gIHJlYWRvbmx5IGFsbG93ZWRMaWNlbnNlcz86IFNwZHhMaWNlbnNlW107XG5cbiAgLyoqXG4gICAqIFdoZW4gdXNpbmcgYSBDb2RlQXJ0aWZhY3QgcGFja2FnZSBzb3VyY2UsIGl0IGlzIG9mdGVuIGRlc2lyYWJsZSB0byBoYXZlXG4gICAqIENvbnN0cnVjdEh1YiBwcm92aXNpb24gaXQncyBpbnRlcm5hbCBDb2RlQXJ0aWZhY3QgcmVwb3NpdG9yeSBpbiB0aGUgc2FtZVxuICAgKiBDb2RlQXJ0aWZhY3QgZG9tYWluLCBhbmQgdG8gY29uZmlndXJlIHRoZSBwYWNrYWdlIHNvdXJjZSByZXBvc2l0b3J5IGFzIGFuXG4gICAqIHVwc3RyZWFtIG9mIHRoZSBpbnRlcm5hbCByZXBvc2l0b3J5LiBUaGlzIHdheSwgYWxsIHBhY2thZ2VzIGluIHRoZSBzb3VyY2VcbiAgICogYXJlIGF2YWlsYWJsZSB0byBDb25zdHJ1Y3RIdWIncyBiYWNrZW5kIHByb2Nlc3NpbmcuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm9uZS5cbiAgICovXG4gIHJlYWRvbmx5IGNvZGVBcnRpZmFjdERvbWFpbj86IENvZGVBcnRpZmFjdERvbWFpblByb3BzO1xuXG4gIC8qKlxuICAgKiBDb25maWd1cmF0aW9uIGZvciBjdXN0b20gcGFja2FnZSBwYWdlIGxpbmtzLlxuICAgKi9cbiAgcmVhZG9ubHkgcGFja2FnZUxpbmtzPzogUGFja2FnZUxpbmtDb25maWdbXTtcblxuICAvKipcbiAgICogQ29uZmlndXJhdGlvbiBmb3IgY3VzdG9tIHBhY2thZ2UgdGFnc1xuICAgKi9cbiAgcmVhZG9ubHkgcGFja2FnZVRhZ3M/OiBQYWNrYWdlVGFnW107XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gZm9yIGdyb3VwaW5nIGN1c3RvbSBwYWNrYWdlIHRhZ3NcbiAgICovXG4gIHJlYWRvbmx5IHBhY2thZ2VUYWdHcm91cHM/OiBQYWNrYWdlVGFnR3JvdXBbXTtcblxuICAvKipcbiAgICogQ29uZmlndXJhdGlvbiBmb3IgcGFja2FnZXMgdG8gZmVhdHVyZSBvbiB0aGUgaG9tZSBwYWdlLlxuICAgKiBAZGVmYXVsdCAtIERpc3BsYXkgdGhlIDEwIG1vc3QgcmVjZW50bHkgdXBkYXRlZCBwYWNrYWdlc1xuICAgKi9cbiAgcmVhZG9ubHkgZmVhdHVyZWRQYWNrYWdlcz86IEZlYXR1cmVkUGFja2FnZXM7XG5cbiAgLyoqXG4gICAqIENvbmZpZ3VyZSBmZWF0dXJlIGZsYWdzIGZvciB0aGUgd2ViIGFwcC5cbiAgICovXG4gIHJlYWRvbmx5IGZlYXR1cmVGbGFncz86IEZlYXR1cmVGbGFncztcblxuICAvKipcbiAgICogQ29uZmlndXJlIHdoZXRoZXIgb3Igbm90IHRoZSBiYWNrZW5kIHNob3VsZCBwZXJpb2RpY2FsbHkgcXVlcnkgTlBNXG4gICAqIGZvciB0aGUgbnVtYmVyIG9mIGRvd25sb2FkcyBhIHBhY2thZ2UgaGFzIGluIHRoZSBwYXN0IHdlZWssIGFuZFxuICAgKiBkaXNwbGF5IGRvd25sb2FkIGNvdW50cyBvbiB0aGUgd2ViIGFwcC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSB0cnVlIGlmIHBhY2thZ2VTb3VyY2VzIGlzIG5vdCBzcGVjaWZpZWQgKHRoZSBkZWZhdWx0cyBhcmVcbiAgICogdXNlZCksIGZhbHNlIG90aGVyd2lzZVxuICAgKi9cbiAgcmVhZG9ubHkgZmV0Y2hQYWNrYWdlU3RhdHM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBCcm93c2UgY2F0ZWdvcmllcy4gRWFjaCBjYXRlZ29yeSB3aWxsIGFwcGVhciBpbiB0aGUgaG9tZSBwYWdlIGFzIGEgYnV0dG9uXG4gICAqIHdpdGggYSBsaW5rIHRvIHRoZSByZWxldmFudCBzZWFyY2ggcXVlcnkuXG4gICAqL1xuICByZWFkb25seSBjYXRlZ29yaWVzPzogQ2F0ZWdvcnlbXTtcblxuICAvKipcbiAgICogV2lyZSBjb25zdHJ1Y3QgaHViIHRvIHVzZSB0aGUgZmFpbG92ZXIgc3RvcmFnZSBidWNrZXRzLlxuICAgKlxuICAgKiBEbyBub3QgYWN0aXZhdGUgdGhpcyBwcm9wZXJ0eSB1bnRpbCB5b3UndmUgcG9wdWxhdGVkIHlvdXIgZmFpbG92ZXIgYnVja2V0c1xuICAgKiB3aXRoIHRoZSBuZWNlc3NhcnkgZGF0YS5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vY2RrbGFicy9jb25zdHJ1Y3QtaHViL2Jsb2IvZGV2L2RvY3Mvb3BlcmF0b3ItcnVuYm9vay5tZCNzdG9yYWdlLWRpc2FzdGVyXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBmYWlsb3ZlclN0b3JhZ2U/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBIb3cgZnJlcXVlbnRseSBhbGwgcGFja2FnZXMgc2hvdWxkIGdldCBmdWxseSByZXByb2Nlc3NlZC5cbiAgICpcbiAgICogU2VlIHRoZSBvcGVyYXRvciBydW5ib29rIGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHJlcHJvY2Vzc2luZy5cbiAgICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vY2RrbGFicy9jb25zdHJ1Y3QtaHViL2Jsb2IvbWFpbi9kb2NzL29wZXJhdG9yLXJ1bmJvb2subWRcbiAgICpcbiAgICogQGRlZmF1bHQgLSBuZXZlclxuICAgKi9cbiAgcmVhZG9ubHkgcmVwcm9jZXNzRnJlcXVlbmN5PzogRHVyYXRpb247XG5cbiAgLyoqXG4gICAqIFBhY2thZ2UgdmVyc2lvbnMgdGhhdCBoYXZlIGJlZW4gcHVibGlzaGVkIGJlZm9yZSB0aGlzIHRpbWUgd2luZG93IHdpbGwgbm90IGJlIHJlcHJvY2Vzc2VkLlxuICAgKlxuICAgKiBAZGVmYXVsdCBEdXJhdGlvbi5kYXlzKDkwKVxuICAgKi9cbiAgcmVhZG9ubHkgcmVwcm9jZXNzQWdlPzogRHVyYXRpb247XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgZG9tYWlucyB3aGljaCB3aWxsIGJlIHNldCB1cCB0byByZWRpcmVjdCB0byB0aGUgcHJpbWFyeVxuICAgKiBjb25zdHJ1Y3QgaHViIGRvbWFpbi5cbiAgICpcbiAgICogQGRlZmF1bHQgW11cbiAgICovXG4gIHJlYWRvbmx5IGFkZGl0aW9uYWxEb21haW5zPzogRG9tYWluUmVkaXJlY3RTb3VyY2VbXTtcblxuICAvKipcbiAgICogSmF2YXNjcmlwdCB0byBydW4gb24gd2ViYXBwIGJlZm9yZSBhcHAgbG9hZHNcbiAgICpcbiAgICogQGRlZmF1bHQgLSBjcmVhdGUgYW4gZW1wdHkgZmlsZVxuICAgKi9cbiAgcmVhZG9ubHkgcHJlbG9hZFNjcmlwdD86IFByZWxvYWRGaWxlO1xuXG4gIC8qKlxuICAgKiBDcmVhdGUgYW4gQXBwUmVnaXN0cnkgYXBwbGljYXRpb24gYXNzb2NpYXRlZCB3aXRoIHRoZSBzdGFjayBjb250YWluaW5nXG4gICAqIHRoaXMgY29uc3RydWN0LlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBhcHBSZWdpc3RyeUFwcGxpY2F0aW9uPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQ29uZmlndXJhdGlvbiBmb3IgZ2VuZXJhdGluZyBSU1MvQXRvbSBmZWVkcyB3aXRoIHRoZSBsYXRlc3QgcGFja2FnZXMuIElmIHRoZSB2YWx1ZSBpcyBtaXNzaW5nXG4gICAqIHRoZSBnZW5lcmF0ZWQgUlNTL0FUT00gZmVlZCB3b3VsZCBub3QgY29udGFpbiByZWxlYXNlIG5vdGVzXG4gICAqL1xuICByZWFkb25seSBmZWVkQ29uZmlndXJhdGlvbj86IEZlZWRDb25maWd1cmF0aW9uO1xufVxuXG4vKipcbiAqIEluZm9ybWF0aW9uIHBlcnRhaW5pbmcgdG8gYW4gZXhpc3RpbmcgQ29kZUFydGlmYWN0IERvbWFpbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb2RlQXJ0aWZhY3REb21haW5Qcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgQ29kZUFydGlmYWN0IGRvbWFpbi5cbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogQW55IHVwc3RyZWFtIHJlcG9zaXRvcmllcyBpbiB0aGlzIENvZGVBcnRpZmFjdCBkb21haW4gdGhhdCBzaG91bGQgYmVcbiAgICogY29uZmlndXJlZCBvbiB0aGUgaW50ZXJuYWwgQ29kZUFydGlmYWN0IHJlcG9zaXRvcnkuXG4gICAqL1xuICByZWFkb25seSB1cHN0cmVhbXM/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBDb25zdHJ1Y3QgSHViLlxuICovXG5leHBvcnQgY2xhc3MgQ29uc3RydWN0SHViIGV4dGVuZHMgQ29uc3RydWN0IGltcGxlbWVudHMgaWFtLklHcmFudGFibGUge1xuICAvKipcbiAgICogVGhlIGZ1bmN0aW9uIG9wZXJhdG9ycyBjYW4gdXNlIHRvIHJlcHJvY2VzcyBhIHNwZWNpZmljIHBhY2thZ2UgdmVyc2lvblxuICAgKiB0aHJvdWdoIHRoZSBiYWNrZW5kIGRhdGEgcGlwZWxpbmUuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcmVnZW5lcmF0ZUFsbERvY3VtZW50YXRpb25QZXJQYWNrYWdlOiBJU3RhdGVNYWNoaW5lO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgaW5nZXN0aW9uOiBJbmdlc3Rpb247XG4gIHByaXZhdGUgcmVhZG9ubHkgbW9uaXRvcmluZzogTW9uaXRvcmluZztcblxuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzOiBDb25zdHJ1Y3RIdWJQcm9wcyA9IHt9XG4gICkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBpZiAoXG4gICAgICBwcm9wcy5pc29sYXRlU2Vuc2l0aXZlVGFza3MgIT0gbnVsbCAmJlxuICAgICAgcHJvcHMuc2Vuc2l0aXZlVGFza0lzb2xhdGlvbiAhPSBudWxsXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdTdXBwbHlpbmcgYm90aCBpc29sYXRlU2Vuc2l0aXZlVGFza3MgYW5kIHNlbnNpdGl2ZVRhc2tJc29sYXRpb24gaXMgbm90IHN1cHBvcnRlZC4gUmVtb3ZlIHVzYWdlIG9mIGlzb2xhdGVTZW5zaXRpdmVUYXNrcy4nXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IHNob3VsZEZldGNoUmVsZWFzZU5vdGVzID0gcHJvcHMuZmVlZENvbmZpZ3VyYXRpb24/LmdpdGh1YlRva2VuU2VjcmV0XG4gICAgICA/IHRydWVcbiAgICAgIDogZmFsc2U7XG5cbiAgICBjb25zdCBzdG9yYWdlRmFjdG9yeSA9IFMzU3RvcmFnZUZhY3RvcnkuZ2V0T3JDcmVhdGUodGhpcywge1xuICAgICAgZmFpbG92ZXI6IHByb3BzLmZhaWxvdmVyU3RvcmFnZSxcbiAgICB9KTtcblxuICAgIHRoaXMubW9uaXRvcmluZyA9IG5ldyBNb25pdG9yaW5nKHRoaXMsICdNb25pdG9yaW5nJywge1xuICAgICAgYWxhcm1BY3Rpb25zOiBwcm9wcy5hbGFybUFjdGlvbnMsXG4gICAgfSk7XG5cbiAgICBjb25zdCBvdmVydmlld0Rhc2hib2FyZCA9IG5ldyBPdmVydmlld0Rhc2hib2FyZCh0aGlzLCAnT3ZlcnZpZXdEYXNoYm9hcmQnLCB7XG4gICAgICBsYW1iZGFTZXJ2aWNlQWxhcm1UaHJlc2hvbGQ6IDcwLFxuICAgICAgZGFzaGJvYXJkTmFtZTogcHJvcHMuYmFja2VuZERhc2hib2FyZE5hbWVcbiAgICAgICAgPyBgJHtwcm9wcy5iYWNrZW5kRGFzaGJvYXJkTmFtZX0tb3ZlcnZpZXdgXG4gICAgICAgIDogdW5kZWZpbmVkLFxuICAgIH0pO1xuXG4gICAgY29uc3QgcGFja2FnZURhdGEgPSBzdG9yYWdlRmFjdG9yeS5uZXdCdWNrZXQodGhpcywgJ1BhY2thZ2VEYXRhJywge1xuICAgICAgYmxvY2tQdWJsaWNBY2Nlc3M6IEJsb2NrUHVibGljQWNjZXNzLkJMT0NLX0FMTCxcbiAgICAgIGVuZm9yY2VTU0w6IHRydWUsXG4gICAgICBlbmNyeXB0aW9uOiBzMy5CdWNrZXRFbmNyeXB0aW9uLlMzX01BTkFHRUQsXG4gICAgICBsaWZlY3ljbGVSdWxlczogW1xuICAgICAgICAvLyBBYm9ydCBtdWx0aS1wYXJ0IHVwbG9hZHMgYWZ0ZXIgMSBkYXlcbiAgICAgICAgeyBhYm9ydEluY29tcGxldGVNdWx0aXBhcnRVcGxvYWRBZnRlcjogRHVyYXRpb24uZGF5cygxKSB9LFxuICAgICAgICAvLyBUcmFuc2l0aW9uIG5vbi1jdXJyZW50IG9iamVjdCB2ZXJzaW9ucyB0byBJQSBhZnRlciAxIG1vbnRoXG4gICAgICAgIHtcbiAgICAgICAgICBub25jdXJyZW50VmVyc2lvblRyYW5zaXRpb25zOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHN0b3JhZ2VDbGFzczogczMuU3RvcmFnZUNsYXNzLklORlJFUVVFTlRfQUNDRVNTLFxuICAgICAgICAgICAgICB0cmFuc2l0aW9uQWZ0ZXI6IER1cmF0aW9uLmRheXMoMzEpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgICAvLyBQZXJtYW5lbnRseSBkZWxldGUgbm9uLWN1cnJlbnQgb2JqZWN0IHZlcnNpb25zIGFmdGVyIDMgbW9udGhzXG4gICAgICAgIHtcbiAgICAgICAgICBub25jdXJyZW50VmVyc2lvbkV4cGlyYXRpb246IER1cmF0aW9uLmRheXMoOTApLFxuICAgICAgICAgIGV4cGlyZWRPYmplY3REZWxldGVNYXJrZXI6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIC8vIFBlcm1hbmVudGx5IGRlbGV0ZSBub24tY3VycmVudCB2ZXJzaW9ucyBvZiBjYXRhbG9nLmpzb24gZWFybGllclxuICAgICAgICB7IG5vbmN1cnJlbnRWZXJzaW9uRXhwaXJhdGlvbjogRHVyYXRpb24uZGF5cyg3KSwgcHJlZml4OiBDQVRBTE9HX0tFWSB9LFxuICAgICAgICAvLyBEZWxldGUgc3RhdHMgY2h1bmsgZmlsZXMgYWZ0ZXIgMSBkYXlcbiAgICAgICAgeyBleHBpcmF0aW9uOiBEdXJhdGlvbi5kYXlzKDEpLCBwcmVmaXg6ICdzdGF0cy1jaHVua3MvJyB9LFxuICAgICAgXSxcbiAgICAgIHZlcnNpb25lZDogdHJ1ZSxcbiAgICB9KTtcblxuICAgIGNvbnN0IGlzb2xhdGlvbiA9XG4gICAgICBwcm9wcy5zZW5zaXRpdmVUYXNrSXNvbGF0aW9uID8/XG4gICAgICAocHJvcHMuaXNvbGF0ZVNlbnNpdGl2ZVRhc2tzXG4gICAgICAgID8gSXNvbGF0aW9uLk5PX0lOVEVSTkVUX0FDQ0VTU1xuICAgICAgICA6IElzb2xhdGlvbi5VTkxJTUlURURfSU5URVJORVRfQUNDRVNTKTtcblxuICAgIC8vIENyZWF0ZSBhbiBpbnRlcm5hbCBDb2RlQXJ0aWZhY3QgcmVwb3NpdG9yeSBpZiB3ZSBydW4gaW4gbmV0d29yay1jb250cm9sbGVkIG1vZGUsIG9yIGlmIGEgZG9tYWluIGlzIHByb3ZpZGVkLlxuICAgIGNvbnN0IGNvZGVBcnRpZmFjdCA9XG4gICAgICBpc29sYXRpb24gPT09IElzb2xhdGlvbi5OT19JTlRFUk5FVF9BQ0NFU1MgfHxcbiAgICAgIHByb3BzLmNvZGVBcnRpZmFjdERvbWFpbiAhPSBudWxsXG4gICAgICAgID8gbmV3IFJlcG9zaXRvcnkodGhpcywgJ0NvZGVBcnRpZmFjdCcsIHtcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnUHJveHkgdG8gbnBtanMuY29tIGZvciBDb25zdHJ1Y3RIdWInLFxuICAgICAgICAgICAgZG9tYWluTmFtZTogcHJvcHMuY29kZUFydGlmYWN0RG9tYWluPy5uYW1lLFxuICAgICAgICAgICAgZG9tYWluRXhpc3RzOiBwcm9wcy5jb2RlQXJ0aWZhY3REb21haW4gIT0gbnVsbCxcbiAgICAgICAgICAgIHVwc3RyZWFtczogcHJvcHMuY29kZUFydGlmYWN0RG9tYWluPy51cHN0cmVhbXMsXG4gICAgICAgICAgfSlcbiAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgeyB2cGMsIHZwY0VuZHBvaW50cywgdnBjU3VibmV0cywgdnBjU2VjdXJpdHlHcm91cHMgfSA9IHRoaXMuY3JlYXRlVnBjKFxuICAgICAgaXNvbGF0aW9uLFxuICAgICAgY29kZUFydGlmYWN0XG4gICAgKTtcblxuICAgIGNvbnN0IGRlbnlMaXN0ID0gbmV3IERlbnlMaXN0KHRoaXMsICdEZW55TGlzdCcsIHtcbiAgICAgIHJ1bGVzOiBwcm9wcy5kZW55TGlzdCA/PyBbXSxcbiAgICAgIHBhY2thZ2VEYXRhQnVja2V0OiBwYWNrYWdlRGF0YSxcbiAgICAgIHBhY2thZ2VEYXRhS2V5UHJlZml4OiBTVE9SQUdFX0tFWV9QUkVGSVgsXG4gICAgICBtb25pdG9yaW5nOiB0aGlzLm1vbml0b3JpbmcsXG4gICAgICBvdmVydmlld0Rhc2hib2FyZDogb3ZlcnZpZXdEYXNoYm9hcmQsXG4gICAgfSk7XG5cbiAgICAvLyBkaXNhYmxlIGZldGNoaW5nIHBhY2thZ2Ugc3RhdHMgYnkgZGVmYXVsdCBpZiBhIGRpZmZlcmVudCBwYWNrYWdlXG4gICAgLy8gc291cmNlIGlzIGNvbmZpZ3VyZWRcbiAgICBjb25zdCBmZXRjaFBhY2thZ2VTdGF0cyA9XG4gICAgICBwcm9wcy5mZXRjaFBhY2thZ2VTdGF0cyA/PyAocHJvcHMucGFja2FnZVNvdXJjZXMgPyBmYWxzZSA6IHRydWUpO1xuXG4gICAgbGV0IHBhY2thZ2VTdGF0czogUGFja2FnZVN0YXRzIHwgdW5kZWZpbmVkO1xuICAgIGNvbnN0IHN0YXRzS2V5ID0gJ3N0YXRzLmpzb24nO1xuICAgIGlmIChmZXRjaFBhY2thZ2VTdGF0cykge1xuICAgICAgcGFja2FnZVN0YXRzID0gbmV3IFBhY2thZ2VTdGF0cyh0aGlzLCAnU3RhdHMnLCB7XG4gICAgICAgIGJ1Y2tldDogcGFja2FnZURhdGEsXG4gICAgICAgIG1vbml0b3Jpbmc6IHRoaXMubW9uaXRvcmluZyxcbiAgICAgICAgbG9nUmV0ZW50aW9uOiBwcm9wcy5sb2dSZXRlbnRpb24sXG4gICAgICAgIG9iamVjdEtleTogc3RhdHNLZXksXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCB2ZXJzaW9uVHJhY2tlciA9IG5ldyBWZXJzaW9uVHJhY2tlcih0aGlzLCAnVmVyc2lvblRyYWNrZXInLCB7XG4gICAgICBidWNrZXQ6IHBhY2thZ2VEYXRhLFxuICAgICAgbW9uaXRvcmluZzogdGhpcy5tb25pdG9yaW5nLFxuICAgICAgbG9nUmV0ZW50aW9uOiBwcm9wcy5sb2dSZXRlbnRpb24sXG4gICAgfSk7XG5cbiAgICBjb25zdCBmZWVkQnVpbGRlciA9IG5ldyBGZWVkQnVpbGRlcih0aGlzLCAnRmVlZEJ1aWxkZXInLCB7XG4gICAgICBidWNrZXQ6IHBhY2thZ2VEYXRhLFxuICAgICAgb3ZlcnZpZXdEYXNoYm9hcmQsXG4gICAgICBmZWVkRGVzY3JpcHRpb246IHByb3BzLmZlZWRDb25maWd1cmF0aW9uPy5mZWVkRGVzY3JpcHRpb24sXG4gICAgICBmZWVkVGl0bGU6IHByb3BzLmZlZWRDb25maWd1cmF0aW9uPy5mZWVkVGl0bGUsXG4gICAgICBtb25pdG9yaW5nOiB0aGlzLm1vbml0b3JpbmcsXG4gICAgfSk7XG5cbiAgICBjb25zdCBvcmNoZXN0cmF0aW9uID0gbmV3IE9yY2hlc3RyYXRpb24odGhpcywgJ09yY2hlc3RyYXRpb24nLCB7XG4gICAgICBidWNrZXQ6IHBhY2thZ2VEYXRhLFxuICAgICAgY29kZUFydGlmYWN0LFxuICAgICAgZGVueUxpc3QsXG4gICAgICBsb2dSZXRlbnRpb246IHByb3BzLmxvZ1JldGVudGlvbixcbiAgICAgIG1vbml0b3Jpbmc6IHRoaXMubW9uaXRvcmluZyxcbiAgICAgIG92ZXJ2aWV3RGFzaGJvYXJkOiBvdmVydmlld0Rhc2hib2FyZCxcbiAgICAgIHZwYyxcbiAgICAgIHZwY0VuZHBvaW50cyxcbiAgICAgIHZwY1N1Ym5ldHMsXG4gICAgICB2cGNTZWN1cml0eUdyb3VwcyxcbiAgICAgIGZlZWRCdWlsZGVyLFxuICAgICAgYWxhcm1TZXZlcml0aWVzOiBwcm9wcy5hbGFybVNldmVyaXRpZXMsXG4gICAgfSk7XG4gICAgdGhpcy5yZWdlbmVyYXRlQWxsRG9jdW1lbnRhdGlvblBlclBhY2thZ2UgPVxuICAgICAgb3JjaGVzdHJhdGlvbi5yZWdlbmVyYXRlQWxsRG9jdW1lbnRhdGlvblBlclBhY2thZ2U7XG5cbiAgICAvLyByZWJ1aWxkIHRoZSBjYXRhbG9nIHdoZW4gdGhlIGRlbnkgbGlzdCBjaGFuZ2VzLlxuICAgIGRlbnlMaXN0LnBydW5lLm9uQ2hhbmdlSW52b2tlKG9yY2hlc3RyYXRpb24uY2F0YWxvZ0J1aWxkZXIuZnVuY3Rpb24pO1xuXG4gICAgY29uc3QgcGFja2FnZVRhZ3NTZXJpYWxpemVkID1cbiAgICAgIHByb3BzLnBhY2thZ2VUYWdzPy5tYXAoKGNvbmZpZykgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLmNvbmZpZyxcbiAgICAgICAgICBjb25kaXRpb246IGNvbmZpZy5jb25kaXRpb24uYmluZCgpLFxuICAgICAgICB9O1xuICAgICAgfSkgPz8gW107XG5cbiAgICBsZXQgcmVsZWFzZU5vdGVzO1xuICAgIGlmIChzaG91bGRGZXRjaFJlbGVhc2VOb3Rlcykge1xuICAgICAgcmVsZWFzZU5vdGVzID0gbmV3IFJlbGVhc2VOb3RlRmV0Y2hlcih0aGlzLCAnUmVsZWFzZU5vdGVzJywge1xuICAgICAgICBidWNrZXQ6IHBhY2thZ2VEYXRhLFxuICAgICAgICBnaXRIdWJDcmVkZW50aWFsc1NlY3JldDogcHJvcHMuZmVlZENvbmZpZ3VyYXRpb24/LmdpdGh1YlRva2VuU2VjcmV0LFxuICAgICAgICBmZWVkQnVpbGRlcixcbiAgICAgICAgbW9uaXRvcmluZzogdGhpcy5tb25pdG9yaW5nLFxuICAgICAgICBvdmVydmlld0Rhc2hib2FyZCxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMuaW5nZXN0aW9uID0gbmV3IEluZ2VzdGlvbih0aGlzLCAnSW5nZXN0aW9uJywge1xuICAgICAgYnVja2V0OiBwYWNrYWdlRGF0YSxcbiAgICAgIGNvZGVBcnRpZmFjdCxcbiAgICAgIG9yY2hlc3RyYXRpb24sXG4gICAgICBsb2dSZXRlbnRpb246IHByb3BzLmxvZ1JldGVudGlvbixcbiAgICAgIG1vbml0b3Jpbmc6IHRoaXMubW9uaXRvcmluZyxcbiAgICAgIHBhY2thZ2VMaW5rczogcHJvcHMucGFja2FnZUxpbmtzLFxuICAgICAgcGFja2FnZVRhZ3M6IHBhY2thZ2VUYWdzU2VyaWFsaXplZCxcbiAgICAgIHJlcHJvY2Vzc0ZyZXF1ZW5jeTogcHJvcHMucmVwcm9jZXNzRnJlcXVlbmN5LFxuICAgICAgcmVwcm9jZXNzQWdlOiBwcm9wcy5yZXByb2Nlc3NBZ2UsXG4gICAgICByZWxlYXNlTm90ZXNGZXRjaFF1ZXVlOiByZWxlYXNlTm90ZXM/LnF1ZXVlLFxuICAgICAgb3ZlcnZpZXdEYXNoYm9hcmQ6IG92ZXJ2aWV3RGFzaGJvYXJkLFxuICAgIH0pO1xuXG4gICAgY29uc3QgbGljZW5zZUxpc3QgPSBuZXcgTGljZW5zZUxpc3QodGhpcywgJ0xpY2Vuc2VMaXN0Jywge1xuICAgICAgbGljZW5zZXM6IHByb3BzLmFsbG93ZWRMaWNlbnNlcyA/PyBbXG4gICAgICAgIC4uLlNwZHhMaWNlbnNlLmFwYWNoZSgpLFxuICAgICAgICAuLi5TcGR4TGljZW5zZS5ic2QoKSxcbiAgICAgICAgLi4uU3BkeExpY2Vuc2UuY2RkbCgpLFxuICAgICAgICAuLi5TcGR4TGljZW5zZS5lcGwoKSxcbiAgICAgICAgU3BkeExpY2Vuc2UuSVNDLFxuICAgICAgICAuLi5TcGR4TGljZW5zZS5taXQoKSxcbiAgICAgICAgU3BkeExpY2Vuc2UuTVBMXzJfMCxcbiAgICAgIF0sXG4gICAgfSk7XG5cbiAgICBjb25zdCB3ZWJBcHAgPSBuZXcgV2ViQXBwKHRoaXMsICdXZWJBcHAnLCB7XG4gICAgICBkb21haW46IHByb3BzLmRvbWFpbixcbiAgICAgIG1vbml0b3Jpbmc6IHRoaXMubW9uaXRvcmluZyxcbiAgICAgIHBhY2thZ2VEYXRhLFxuICAgICAgcGFja2FnZUxpbmtzOiBwcm9wcy5wYWNrYWdlTGlua3MsXG4gICAgICBwYWNrYWdlVGFnczogcGFja2FnZVRhZ3NTZXJpYWxpemVkLFxuICAgICAgcGFja2FnZVRhZ0dyb3VwczogcHJvcHMucGFja2FnZVRhZ0dyb3VwcyxcbiAgICAgIGZlYXR1cmVkUGFja2FnZXM6IHByb3BzLmZlYXR1cmVkUGFja2FnZXMsXG4gICAgICBwYWNrYWdlU3RhdHMsXG4gICAgICBmZWF0dXJlRmxhZ3M6IHByb3BzLmZlYXR1cmVGbGFncyxcbiAgICAgIGNhdGVnb3JpZXM6IHByb3BzLmNhdGVnb3JpZXMsXG4gICAgICBwcmVsb2FkU2NyaXB0OiBwcm9wcy5wcmVsb2FkU2NyaXB0LFxuICAgICAgb3ZlcnZpZXdEYXNoYm9hcmQ6IG92ZXJ2aWV3RGFzaGJvYXJkLFxuICAgICAgaW5jbHVkZUZlZWRMaW5rOiB0cnVlLFxuICAgIH0pO1xuXG4gICAgLy8gU2V0IHRoZSBiYXNlIFVSTCB0aGF0IHdpbGwgYmUgdXNlZCBpbiB0aGUgUlNTL0FUT00gZmVlZFxuICAgIGZlZWRCdWlsZGVyLnNldENvbnN0cnVjdEh1YlVybCh3ZWJBcHAuYmFzZVVybCk7XG5cbiAgICBjb25zdCBzb3VyY2VzID0gbmV3IENvbnN0cnVjdCh0aGlzLCAnU291cmNlcycpO1xuICAgIGNvbnN0IHBhY2thZ2VTb3VyY2VzID0gKFxuICAgICAgcHJvcHMucGFja2FnZVNvdXJjZXMgPz8gW1xuICAgICAgICBuZXcgTnBtSnMoeyBhbGFybVNldmVyaXRpZXM6IHByb3BzLmFsYXJtU2V2ZXJpdGllcyB9KSxcbiAgICAgIF1cbiAgICApLm1hcCgoc291cmNlKSA9PlxuICAgICAgc291cmNlLmJpbmQoc291cmNlcywge1xuICAgICAgICBiYXNlVXJsOiB3ZWJBcHAuYmFzZVVybCxcbiAgICAgICAgZGVueUxpc3QsXG4gICAgICAgIGluZ2VzdGlvbjogdGhpcy5pbmdlc3Rpb24sXG4gICAgICAgIGxpY2Vuc2VMaXN0LFxuICAgICAgICBtb25pdG9yaW5nOiB0aGlzLm1vbml0b3JpbmcsXG4gICAgICAgIHF1ZXVlOiB0aGlzLmluZ2VzdGlvbi5xdWV1ZSxcbiAgICAgICAgcmVwb3NpdG9yeTogY29kZUFydGlmYWN0LFxuICAgICAgICBvdmVydmlld0Rhc2hib2FyZDogb3ZlcnZpZXdEYXNoYm9hcmQsXG4gICAgICB9KVxuICAgICk7XG5cbiAgICBjb25zdCBpbnZlbnRvcnkgPSBuZXcgSW52ZW50b3J5KHRoaXMsICdJbnZlbnRvcnlDYW5hcnknLCB7XG4gICAgICBidWNrZXQ6IHBhY2thZ2VEYXRhLFxuICAgICAgbG9nUmV0ZW50aW9uOiBwcm9wcy5sb2dSZXRlbnRpb24sXG4gICAgICBtb25pdG9yaW5nOiB0aGlzLm1vbml0b3JpbmcsXG4gICAgICBvdmVydmlld0Rhc2hib2FyZDogb3ZlcnZpZXdEYXNoYm9hcmQsXG4gICAgfSk7XG5cbiAgICBuZXcgQmFja2VuZERhc2hib2FyZCh0aGlzLCAnQmFja2VuZERhc2hib2FyZCcsIHtcbiAgICAgIHBhY2thZ2VEYXRhLFxuICAgICAgZGFzaGJvYXJkTmFtZTogcHJvcHMuYmFja2VuZERhc2hib2FyZE5hbWUsXG4gICAgICBwYWNrYWdlU291cmNlcyxcbiAgICAgIGluZ2VzdGlvbjogdGhpcy5pbmdlc3Rpb24sXG4gICAgICBpbnZlbnRvcnksXG4gICAgICBvcmNoZXN0cmF0aW9uLFxuICAgICAgZGVueUxpc3QsXG4gICAgICBwYWNrYWdlU3RhdHMsXG4gICAgICB2ZXJzaW9uVHJhY2tlcixcbiAgICAgIHJlbGVhc2VOb3RlcyxcbiAgICB9KTtcblxuICAgIC8vIGFkZCBkb21haW4gcmVkaXJlY3RzXG4gICAgaWYgKHByb3BzLmRvbWFpbikge1xuICAgICAgZm9yIChjb25zdCByZWRpcmN0U291cmNlIG9mIHByb3BzLmFkZGl0aW9uYWxEb21haW5zID8/IFtdKSB7XG4gICAgICAgIG5ldyBEb21haW5SZWRpcmVjdChcbiAgICAgICAgICB0aGlzLFxuICAgICAgICAgIGBSZWRpcmVjdC0ke3JlZGlyY3RTb3VyY2UuaG9zdGVkWm9uZS56b25lTmFtZX1gLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHNvdXJjZTogcmVkaXJjdFNvdXJjZSxcbiAgICAgICAgICAgIHRhcmdldERvbWFpbk5hbWU6IHByb3BzLmRvbWFpbj8uem9uZS56b25lTmFtZSxcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChwcm9wcy5hZGRpdGlvbmFsRG9tYWlucyAmJiBwcm9wcy5hZGRpdGlvbmFsRG9tYWlucy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAnQ2Fubm90IHNwZWNpZnkgXCJkb21haW5SZWRpcmVjdHNcIiBpZiBhIGRvbWFpbiBpcyBub3Qgc3BlY2lmaWVkJ1xuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChwcm9wcy5hcHBSZWdpc3RyeUFwcGxpY2F0aW9uID8/IHRydWUpIHtcbiAgICAgIGNvbnN0IGFwcGxpY2F0aW9uID0gbmV3IEFwcGxpY2F0aW9uKHRoaXMsICdBcHBsaWNhdGlvbicsIHtcbiAgICAgICAgYXBwbGljYXRpb25OYW1lOiAnQ29uc3RydWN0SHViJyxcbiAgICAgIH0pO1xuICAgICAgYXBwbGljYXRpb24uYXNzb2NpYXRlQXBwbGljYXRpb25XaXRoU3RhY2soU3RhY2sub2YodGhpcykpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgbGlzdCBvZiBhbGwgaGlnaC1zZXZlcml0eSBhbGFybXMgZnJvbSB0aGlzIENvbnN0cnVjdEh1YiBpbnN0YW5jZS5cbiAgICogVGhlc2Ugd2FycmFudCBpbW1lZGlhdGUgYXR0ZW50aW9uIGFzIHRoZXkgYXJlIGluZGljYXRpdmUgb2YgYSBzeXN0ZW0gaGVhbHRoXG4gICAqIGlzc3VlLlxuICAgKi9cbiAgcHVibGljIGdldCBoaWdoU2V2ZXJpdHlBbGFybXMoKTogY3cuSUFsYXJtW10ge1xuICAgIC8vIE5vdGU6IHRoZSBhcnJheSBpcyBhbHJlYWR5IHJldHVybmVkIGJ5LWNvcHkgYnkgTW9uaXRvcmluZywgc28gbm90IGNvcHlpbmcgYWdhaW4uXG4gICAgcmV0dXJuIHRoaXMubW9uaXRvcmluZy5oaWdoU2V2ZXJpdHlBbGFybXM7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIGxpc3Qgb2YgYWxsIGxvdy1zZXZlcml0eSBhbGFybXMgZnJvbSB0aGlzIENvbnN0cnVjdEh1YiBpbnN0YW5jZS5cbiAgICogVGhlc2UgZG8gbm90IG5lY2Vzc2l0YXRlIGltbWVkaWF0ZSBhdHRlbnRpb24sIGFzIHRoZXkgZG8gbm90IGhhdmUgZGlyZWN0XG4gICAqIGN1c3RvbWVyLXZpc2libGUgaW1wYWN0LCBvciBoYW5kbGluZyBpcyBub3QgdGltZS1zZW5zaXRpdmUuIFRoZXkgaW5kaWNhdGVcbiAgICogdGhhdCBzb21ldGhpbmcgdW51c3VhbCAobm90IG5lY2Vzc2FyaWx5IGJhZCkgaXMgaGFwcGVuaW5nLlxuICAgKi9cbiAgcHVibGljIGdldCBtZWRpdW1TZXZlcml0eUFsYXJtcygpOiBjdy5JQWxhcm1bXSB7XG4gICAgLy8gTm90ZTogdGhlIGFycmF5IGlzIGFscmVhZHkgcmV0dXJuZWQgYnktY29weSBieSBNb25pdG9yaW5nLCBzbyBub3QgY29weWluZyBhZ2Fpbi5cbiAgICByZXR1cm4gdGhpcy5tb25pdG9yaW5nLm1lZGl1bVNldmVyaXR5QWxhcm1zO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBsaXN0IG9mIGFsbCBsb3ctc2V2ZXJpdHkgYWxhcm1zIGZyb20gdGhpcyBDb25zdHJ1Y3RIdWIgaW5zdGFuY2UuXG4gICAqIFRoZXNlIGRvIG5vdCBuZWNlc3NpdGF0ZSBpbW1lZGlhdGUgYXR0ZW50aW9uLCBhcyB0aGV5IGRvIG5vdCBoYXZlIGRpcmVjdFxuICAgKiBjdXN0b21lci12aXNpYmxlIGltcGFjdCwgb3IgaGFuZGxpbmcgaXMgbm90IHRpbWUtc2Vuc2l0aXZlLiBUaGV5IGluZGljYXRlXG4gICAqIHRoYXQgc29tZXRoaW5nIHVudXN1YWwgKG5vdCBuZWNlc3NhcmlseSBiYWQpIGlzIGhhcHBlbmluZy5cbiAgICovXG4gIHB1YmxpYyBnZXQgbG93U2V2ZXJpdHlBbGFybXMoKTogY3cuSUFsYXJtW10ge1xuICAgIC8vIE5vdGU6IHRoZSBhcnJheSBpcyBhbHJlYWR5IHJldHVybmVkIGJ5LWNvcHkgYnkgTW9uaXRvcmluZywgc28gbm90IGNvcHlpbmcgYWdhaW4uXG4gICAgcmV0dXJuIHRoaXMubW9uaXRvcmluZy5sb3dTZXZlcml0eUFsYXJtcztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgbGlzdCBvZiBhbGwgYWxhcm1zIGNvbmZpZ3VyZWQgYnkgdGhpcyBDb25zdHJ1Y3RIdWIgaW5zdGFuY2UuXG4gICAqL1xuICBwdWJsaWMgZ2V0IGFsbEFsYXJtcygpOiBjdy5JQWxhcm1bXSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIC4uLnRoaXMuaGlnaFNldmVyaXR5QWxhcm1zLFxuICAgICAgLi4udGhpcy5sb3dTZXZlcml0eUFsYXJtcyxcbiAgICAgIC4uLnRoaXMubWVkaXVtU2V2ZXJpdHlBbGFybXMsXG4gICAgXTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZ3JhbnRQcmluY2lwYWwoKTogaWFtLklQcmluY2lwYWwge1xuICAgIHJldHVybiB0aGlzLmluZ2VzdGlvbi5ncmFudFByaW5jaXBhbDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaW5nZXN0aW9uUXVldWUoKTogc3FzLklRdWV1ZSB7XG4gICAgcmV0dXJuIHRoaXMuaW5nZXN0aW9uLnF1ZXVlO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVWcGMoXG4gICAgaXNvbGF0aW9uOiBJc29sYXRpb24sXG4gICAgY29kZUFydGlmYWN0OiBSZXBvc2l0b3J5IHwgdW5kZWZpbmVkXG4gICkge1xuICAgIGlmIChpc29sYXRpb24gPT09IElzb2xhdGlvbi5VTkxJTUlURURfSU5URVJORVRfQUNDRVNTKSB7XG4gICAgICByZXR1cm4geyB2cGM6IHVuZGVmaW5lZCwgdnBjRW5kcG9pbnRzOiB1bmRlZmluZWQsIHZwY1N1Ym5ldHM6IHVuZGVmaW5lZCB9O1xuICAgIH1cblxuICAgIGNvbnN0IHN1Ym5ldFR5cGUgPVxuICAgICAgaXNvbGF0aW9uID09PSBJc29sYXRpb24uTk9fSU5URVJORVRfQUNDRVNTXG4gICAgICAgID8gZWMyLlN1Ym5ldFR5cGUuUFJJVkFURV9JU09MQVRFRFxuICAgICAgICA6IGVjMi5TdWJuZXRUeXBlLlBSSVZBVEVfV0lUSF9FR1JFU1M7XG4gICAgY29uc3QgdnBjU3VibmV0cyA9IHsgc3VibmV0VHlwZSB9O1xuXG4gICAgY29uc3QgdnBjID0gbmV3IGVjMi5WcGModGhpcywgJ1ZQQycsIHtcbiAgICAgIGVuYWJsZURuc0hvc3RuYW1lczogdHJ1ZSxcbiAgICAgIGVuYWJsZURuc1N1cHBvcnQ6IHRydWUsXG4gICAgICAvLyBQcm92aXNpb24gbm8gTkFUIGdhdGV3YXlzIGlmIHdlIGFyZSBydW5uaW5nIElTT0xBVEVEICh3ZSB3b3VsZG4ndCBoYXZlIGEgcHVibGljIHN1Ym5ldClcbiAgICAgIG5hdEdhdGV3YXlzOlxuICAgICAgICBzdWJuZXRUeXBlID09PSBlYzIuU3VibmV0VHlwZS5QUklWQVRFX0lTT0xBVEVEID8gMCA6IHVuZGVmaW5lZCxcbiAgICAgIC8vIFByZS1hbGxvY2F0aW5nIFBVQkxJQyAvIFBSSVZBVEUgLyBJTlRFUk5BTCBzdWJuZXRzLCByZWdhcmRsZXNzIG9mIHVzZSwgc28gd2UgZG9uJ3QgY3JlYXRlXG4gICAgICAvLyBhIHdob2xlIG5ldyBWUEMgaWYgd2UgZXZlciBuZWVkIHRvIGludHJvZHVjZSBzdWJuZXRzIG9mIHRoZXNlIHR5cGVzLlxuICAgICAgc3VibmV0Q29uZmlndXJhdGlvbjogW1xuICAgICAgICAvLyBJZiB0aGVyZSBpcyBhIFBSSVZBVEUgc3VibmV0LCB0aGVyZSBtdXN0IGFsc28gaGF2ZSBhIFBVQkxJQyBzdWJuZXQgKGZvciBOQVQgZ2F0ZXdheXMpLlxuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ1B1YmxpYycsXG4gICAgICAgICAgc3VibmV0VHlwZTogZWMyLlN1Ym5ldFR5cGUuUFVCTElDLFxuICAgICAgICAgIHJlc2VydmVkOiBzdWJuZXRUeXBlID09PSBlYzIuU3VibmV0VHlwZS5QUklWQVRFX0lTT0xBVEVELFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ1ByaXZhdGUnLFxuICAgICAgICAgIHN1Ym5ldFR5cGU6IGVjMi5TdWJuZXRUeXBlLlBSSVZBVEVfV0lUSF9FR1JFU1MsXG4gICAgICAgICAgcmVzZXJ2ZWQ6IHN1Ym5ldFR5cGUgPT09IGVjMi5TdWJuZXRUeXBlLlBSSVZBVEVfSVNPTEFURUQsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAnSXNvbGF0ZWQnLFxuICAgICAgICAgIHN1Ym5ldFR5cGU6IGVjMi5TdWJuZXRUeXBlLlBSSVZBVEVfSVNPTEFURUQsXG4gICAgICAgICAgcmVzZXJ2ZWQ6IHN1Ym5ldFR5cGUgIT09IGVjMi5TdWJuZXRUeXBlLlBSSVZBVEVfSVNPTEFURUQsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuICAgIFRhZ3Mub2YodnBjLm5vZGUuZGVmYXVsdENoaWxkISkuYWRkKCdOYW1lJywgdnBjLm5vZGUucGF0aCk7XG5cbiAgICBjb25zdCBzZWN1cml0eUdyb3VwcyA9XG4gICAgICBzdWJuZXRUeXBlID09PSBlYzIuU3VibmV0VHlwZS5QUklWQVRFX1dJVEhfRUdSRVNTXG4gICAgICAgID8gY3JlYXRlUmVzdHJpY3RlZFNlY3VyaXR5R3JvdXBzKHRoaXMsIHZwYylcbiAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICAvLyBDcmVhdGluZyB0aGUgQ29kZUFydGlmYWN0IGVuZHBvaW50cyBvbmx5IGlmIGEgcmVwb3NpdG9yeSBpcyBwcmVzZW50LlxuICAgIGNvbnN0IGNvZGVBcnRpZmFjdEVuZHBvaW50cyA9IGNvZGVBcnRpZmFjdCAmJiB7XG4gICAgICBjb2RlQXJ0aWZhY3RBcGk6IHZwYy5hZGRJbnRlcmZhY2VFbmRwb2ludCgnQ29kZUFydGlmYWN0LkFQSScsIHtcbiAgICAgICAgcHJpdmF0ZURuc0VuYWJsZWQ6IGZhbHNlLFxuICAgICAgICBzZXJ2aWNlOiBuZXcgZWMyLkludGVyZmFjZVZwY0VuZHBvaW50QXdzU2VydmljZSgnY29kZWFydGlmYWN0LmFwaScpLFxuICAgICAgICBzdWJuZXRzOiB2cGNTdWJuZXRzLFxuICAgICAgICBzZWN1cml0eUdyb3VwcyxcbiAgICAgIH0pLFxuICAgICAgY29kZUFydGlmYWN0OiB2cGMuYWRkSW50ZXJmYWNlRW5kcG9pbnQoJ0NvZGVBcnRpZmFjdCcsIHtcbiAgICAgICAgcHJpdmF0ZURuc0VuYWJsZWQ6IHRydWUsXG4gICAgICAgIHNlcnZpY2U6IG5ldyBlYzIuSW50ZXJmYWNlVnBjRW5kcG9pbnRBd3NTZXJ2aWNlKFxuICAgICAgICAgICdjb2RlYXJ0aWZhY3QucmVwb3NpdG9yaWVzJ1xuICAgICAgICApLFxuICAgICAgICBzdWJuZXRzOiB2cGNTdWJuZXRzLFxuICAgICAgICBzZWN1cml0eUdyb3VwcyxcbiAgICAgIH0pLFxuICAgIH07XG5cbiAgICAvLyBXZSdsbCBvbmx5IHVzZSBWUEMgZW5kcG9pbnRzIGlmIHdlIGFyZSBjb25maWd1cmVkIHRvIHJ1biBpbiBhbiBJU09MQVRFRCBzdWJuZXQuXG4gICAgY29uc3QgdnBjRW5kcG9pbnRzID0ge1xuICAgICAgLi4uY29kZUFydGlmYWN0RW5kcG9pbnRzLFxuICAgICAgLy8gVGhpcyBpcyBuZWVkZWQgc28gdGhhdCBFQ1Mgd29ya2xvYWRzIGNhbiB1c2UgdGhlIGF3c2xvZ3MgZHJpdmVyXG4gICAgICBjbG91ZFdhdGNoTG9nczogdnBjLmFkZEludGVyZmFjZUVuZHBvaW50KCdDbG91ZFdhdGNoLkxvZ3MnLCB7XG4gICAgICAgIHByaXZhdGVEbnNFbmFibGVkOiB0cnVlLFxuICAgICAgICBzZXJ2aWNlOiBlYzIuSW50ZXJmYWNlVnBjRW5kcG9pbnRBd3NTZXJ2aWNlLkNMT1VEV0FUQ0hfTE9HUyxcbiAgICAgICAgc3VibmV0czogdnBjU3VibmV0cyxcbiAgICAgICAgc2VjdXJpdHlHcm91cHMsXG4gICAgICB9KSxcbiAgICAgIC8vIFRoZXNlIGFyZSBuZWVkZWQgZm9yIEVDUyB3b3JrbG9hZHMgdG8gYmUgYWJsZSB0byBwdWxsIGltYWdlc1xuICAgICAgZWNyQXBpOiB2cGMuYWRkSW50ZXJmYWNlRW5kcG9pbnQoJ0VDUi5BUEknLCB7XG4gICAgICAgIHByaXZhdGVEbnNFbmFibGVkOiB0cnVlLFxuICAgICAgICBzZXJ2aWNlOiBlYzIuSW50ZXJmYWNlVnBjRW5kcG9pbnRBd3NTZXJ2aWNlLkVDUixcbiAgICAgICAgc3VibmV0czogdnBjU3VibmV0cyxcbiAgICAgICAgc2VjdXJpdHlHcm91cHMsXG4gICAgICB9KSxcbiAgICAgIGVjcjogdnBjLmFkZEludGVyZmFjZUVuZHBvaW50KCdFQ1IuRG9ja2VyJywge1xuICAgICAgICBwcml2YXRlRG5zRW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgc2VydmljZTogZWMyLkludGVyZmFjZVZwY0VuZHBvaW50QXdzU2VydmljZS5FQ1JfRE9DS0VSLFxuICAgICAgICBzdWJuZXRzOiB2cGNTdWJuZXRzLFxuICAgICAgICBzZWN1cml0eUdyb3VwcyxcbiAgICAgIH0pLFxuICAgICAgLy8gVGhpcyBpcyBuZWVkZWQgKGFtb25nIG90aGVycykgZm9yIENvZGVBcnRpZmFjdCByZWdpc3RyeSB1c2FnZVxuICAgICAgczM6IHZwYy5hZGRHYXRld2F5RW5kcG9pbnQoJ1MzJywge1xuICAgICAgICBzZXJ2aWNlOiBlYzIuR2F0ZXdheVZwY0VuZHBvaW50QXdzU2VydmljZS5TMyxcbiAgICAgICAgc3VibmV0czogW3ZwY1N1Ym5ldHNdLFxuICAgICAgfSksXG4gICAgICAvLyBUaGlzIGlzIHVzZWZ1bCBmb3IgZ2V0dGluZyByZXN1bHRzIGZyb20gRUNTIHRhc2tzIHdpdGhpbiB3b3JrZmxvd3NcbiAgICAgIHN0ZXBGdW5jdGlvbnM6IHZwYy5hZGRJbnRlcmZhY2VFbmRwb2ludCgnU3RlcEZ1bmN0aW9ucycsIHtcbiAgICAgICAgcHJpdmF0ZURuc0VuYWJsZWQ6IHRydWUsXG4gICAgICAgIHNlcnZpY2U6IGVjMi5JbnRlcmZhY2VWcGNFbmRwb2ludEF3c1NlcnZpY2UuU1RFUF9GVU5DVElPTlMsXG4gICAgICAgIHN1Ym5ldHM6IHZwY1N1Ym5ldHMsXG4gICAgICAgIHNlY3VyaXR5R3JvdXBzLFxuICAgICAgfSksXG4gICAgfTtcblxuICAgIC8vIFRoZSBTMyBhY2Nlc3MgaXMgbmVjZXNzYXJ5IGZvciB0aGUgQ29kZUFydGlmYWN0IFJlcG9zaXRvcnkgYW5kIEVDUiBEb2NrZXJcbiAgICAvLyBlbmRwb2ludHMgdG8gYmUgdXNlZCAodGhleSBzZXJ2ZSBvYmplY3RzIGZyb20gUzMpLlxuICAgIHZwY0VuZHBvaW50cy5zMy5hZGRUb1BvbGljeShcbiAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBlZmZlY3Q6IEVmZmVjdC5BTExPVyxcbiAgICAgICAgYWN0aW9uczogWydzMzpHZXRPYmplY3QnXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgICAgLy8gVGhlIGluLXJlZ2lvbiBDb2RlQXJ0aWZhY3QgUzMgQnVja2V0XG4gICAgICAgICAgLi4uKGNvZGVBcnRpZmFjdCA/IFtgJHtjb2RlQXJ0aWZhY3QuczNCdWNrZXRBcm59LypgXSA6IFtdKSxcbiAgICAgICAgICAvLyBUaGUgaW4tcmVnaW9uIEVDUiBsYXllciBidWNrZXRcbiAgICAgICAgICBgYXJuOmF3czpzMzo6OnByb2QtJHtTdGFjay5vZih0aGlzKS5yZWdpb259LXN0YXJwb3J0LWxheWVyLWJ1Y2tldC8qYCxcbiAgICAgICAgXSxcbiAgICAgICAgLy8gSXQgZG9lc24ndCBzZWVtIHdlIGNhbiBjb25zdHJhaW4gcHJpbmNpcGFscyBmb3IgdGhlc2UgZ3JhbnRzICh1bmNsZWFyXG4gICAgICAgIC8vIHdoaWNoIHByaW5jaXBhbCB0aG9zZSBjYWxscyBhcmUgbWFkZSBmcm9tLCBvciBpZiB0aGF0IGlzIHNvbWV0aGluZyB3ZVxuICAgICAgICAvLyBjb3VsZCBuYW1lIGhlcmUpLlxuICAgICAgICBwcmluY2lwYWxzOiBbbmV3IEFueVByaW5jaXBhbCgpXSxcbiAgICAgICAgc2lkOiAnQWxsb3ctQ29kZUFydGlmYWN0LWFuZC1FQ1InLFxuICAgICAgfSlcbiAgICApO1xuXG4gICAgcmV0dXJuIHsgdnBjLCB2cGNFbmRwb2ludHMsIHZwY1N1Ym5ldHMsIHZwY1NlY3VyaXR5R3JvdXBzOiBzZWN1cml0eUdyb3VwcyB9O1xuICB9XG59XG5cbi8qKlxuICogSG93IHBvc3NpYmx5IHJpc2t5IG9wZXJhdGlvbnMgKHN1Y2ggYXMgZG9jLWdlbmVyYXRpb24sIHdoaWNoIHJlcXVpcmVzXG4gKiBpbnN0YWxsaW5nIHRoZSBpbmRleGVkIHBhY2thZ2VzIGluIG9yZGVyIHRvIHRyYW5zLWxpdGVyYXRlIHNhbXBsZSBjb2RlKSBhcmVcbiAqIGlzb2xhdGVkIHRvIG1pdGlnYXRlIHBvc3NpYmxlIGFyYml0cmFyeSBjb2RlIGV4ZWN1dGlvbiB2dWxuZXJhYmlsaXRpZXMgaW4gYW5kXG4gKiBhcm91bmQgYG5wbSBpbnN0YWxsYCBvciB0aGUgdHJhbnNsaXRlcmF0b3IncyB1c2Ugb2YgdGhlIFR5cGVTY3JpcHQgY29tcGlsZXIuXG4gKi9cbmV4cG9ydCBlbnVtIElzb2xhdGlvbiB7XG4gIC8qKlxuICAgKiBObyBpc29sYXRpb24gaXMgZG9uZSB3aGF0c29ldmVyLiBUaGUgZG9jLWdlbmVyYXRpb24gcHJvY2VzcyBzdGlsbCBpc1xuICAgKiBwcm92aXNpb25lZCB3aXRoIGxlYXN0LXByaXZpbGVnZSBwZXJtaXNzaW9ucywgYnV0IHJldGFpbnMgY29tcGxldGUgYWNjZXNzXG4gICAqIHRvIGludGVybmV0LlxuICAgKlxuICAgKiBXaGlsZSB0aGlzIG1heGltaXplcyB0aGUgY2hhbmNlcyBvZiBzdWNjZXNzZnVsbHkgaW5zdGFsbGluZyBwYWNrYWdlcyAoYW5kXG4gICAqIGhlbmNlIHN1Y2Nlc3NmdWxseSBnZW5lcmF0aW5nIGRvY3VtZW50YXRpb24gZm9yIHRob3NlKSwgaXQgaXMgYWxzbyB0aGVcbiAgICogbGVhc3Qgc2VjdXJlIG1vZGUgb2Ygb3BlcmF0aW9uLlxuICAgKlxuICAgKiBXZSBhZHZpc2UgeW91IG9ubHkgY29uc2lkZXIgdXNpbmcgdGhpcyBpc29sYXRpb24gbW9kZSBpZiB5b3UgYXJlIGhvc3RpbmcgYVxuICAgKiBDb25zdHJ1Y3RIdWIgaW5zdGFuY2UgdGhhdCBvbmx5IGluZGV4ZXMgdHJ1c3RlZCBwYWNrYWdlcyAoaW5jbHVkaW5nXG4gICAqIHRyYW5zaXRpdmUgZGVwZW5kZW5jaWVzKS5cbiAgICovXG4gIFVOTElNSVRFRF9JTlRFUk5FVF9BQ0NFU1MsXG5cbiAgLyoqXG4gICAqIFRoZSBzYW1lIHByb3RlY3Rpb25zIGFzIGBVTkxJTUlURURfSU5URVJORVRfQUNDRVNTYCwgZXhjZXB0IG91dGJvdW5kXG4gICAqIGludGVybmV0IGNvbm5lY3Rpb25zIGFyZSBsaW1pdGVkIHRvIElQIGFkZHJlc3MgcmFuZ2VzIGNvcnJlc3BvbmRpbmcgdG9cbiAgICogaG9zdGluZyBlbmRwb2ludHMgZm9yIG5wbWpzLmNvbS5cbiAgICovXG4gIExJTUlURURfSU5URVJORVRfQUNDRVNTLFxuXG4gIC8qKlxuICAgKiBUaGUgc2FtZSBwcm90ZWN0aW9ucyBhcyBgTElNSVRFRF9JTlRFUk5FVF9BQ0NFU1NgLCBleGNlcHQgYWxsIHJlbWFpbmluZ1xuICAgKiBpbnRlcm5ldCBhY2Nlc3MgaXMgcmVtb3ZlZC4gQWxsIHRyYWZmaWMgdG8gQVdTIHNlcnZpY2UgZW5kcG9pbnRzIGlzIHJvdXRlZFxuICAgKiB0aHJvdWdoIFZQQyBFbmRwb2ludHMsIGFzIHRoZSBjb21wdXRlIG5vZGVzIGFyZSBqYWlsZWQgaW4gYSBjb21wbGV0ZWx5XG4gICAqIGlzb2xhdGVkIFZQQy5cbiAgICpcbiAgICogVGhpcyBpcyB0aGUgbW9zdCBzZWN1cmUgKGFuZCByZWNvbW1lbmRlZCkgbW9kZSBvZiBvcGVyYXRpb24gZm9yXG4gICAqIENvbnN0cnVjdEh1YiBpbnN0YW5jZXMuXG4gICAqL1xuICBOT19JTlRFUk5FVF9BQ0NFU1MsXG59XG4iXX0=
|
|
456
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RydWN0LWh1Yi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jb25zdHJ1Y3QtaHViLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsc0dBQTJFO0FBQzNFLDZDQUFvRDtBQUVwRCwyQ0FBMkM7QUFFM0MsaURBQTRFO0FBRTVFLHlDQUF5QztBQUN6QywrQ0FBdUQ7QUFJdkQsMkNBQXVDO0FBQ3ZDLHlFQUE0RTtBQUU1RSx1Q0FBZ0Q7QUFFaEQseURBQXFEO0FBQ3JELG1EQUFnRDtBQUNoRCx5REFBcUQ7QUFDckQsMkRBQXdEO0FBQ3hELDJEQUF1RDtBQUN2RCwyREFBNkQ7QUFDN0QsMERBQTZFO0FBQzdFLCtEQUEyRDtBQUMzRCwyREFBdUQ7QUFDdkQsMERBQXVEO0FBQ3ZELHVEQUF5RTtBQUN6RSw2Q0FBMEM7QUFDMUMsNkRBQXlEO0FBRXpELHVEQUEwQztBQUkxQywwQ0FBZ0Q7QUFDaEQsaURBQTZDO0FBQzdDLHFDQU1rQjtBQW1QbEI7O0dBRUc7QUFDSCxNQUFhLFlBQWEsU0FBUSxzQkFBUztJQVV6QyxZQUNFLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixRQUEyQixFQUFFO1FBRTdCLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsSUFDRSxLQUFLLENBQUMscUJBQXFCLElBQUksSUFBSTtZQUNuQyxLQUFLLENBQUMsc0JBQXNCLElBQUksSUFBSSxFQUNwQyxDQUFDO1lBQ0QsTUFBTSxJQUFJLEtBQUssQ0FDYiwwSEFBMEgsQ0FDM0gsQ0FBQztRQUNKLENBQUM7UUFFRCxNQUFNLHVCQUF1QixHQUFHLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxpQkFBaUI7WUFDeEUsQ0FBQyxDQUFDLElBQUk7WUFDTixDQUFDLENBQUMsS0FBSyxDQUFDO1FBRVYsTUFBTSxjQUFjLEdBQUcsMEJBQWdCLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRTtZQUN4RCxRQUFRLEVBQUUsS0FBSyxDQUFDLGVBQWU7U0FD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LFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxjQUFjLEVBQUUsQ0FBQztJQUM5RSxDQUFDOztBQTVjSCxvQ0E2Y0M7OztBQUVEOzs7OztHQUtHO0FBQ0gsSUFBWSxTQWlDWDtBQWpDRCxXQUFZLFNBQVM7SUFDbkI7Ozs7Ozs7Ozs7OztPQVlHO0lBQ0gsbUZBQXlCLENBQUE7SUFFekI7Ozs7T0FJRztJQUNILCtFQUF1QixDQUFBO0lBRXZCOzs7Ozs7OztPQVFHO0lBQ0gscUVBQWtCLENBQUE7QUFDcEIsQ0FBQyxFQWpDVyxTQUFTLHlCQUFULFNBQVMsUUFpQ3BCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXBwbGljYXRpb24gfSBmcm9tICdAYXdzLWNkay9hd3Mtc2VydmljZWNhdGFsb2dhcHByZWdpc3RyeS1hbHBoYSc7XG5pbXBvcnQgeyBEdXJhdGlvbiwgU3RhY2ssIFRhZ3MgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgKiBhcyBjdyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY2xvdWR3YXRjaCc7XG5pbXBvcnQgKiBhcyBlYzIgZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjMic7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgeyBBbnlQcmluY2lwYWwsIEVmZmVjdCwgUG9saWN5U3RhdGVtZW50IH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgeyBSZXRlbnRpb25EYXlzIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxvZ3MnO1xuaW1wb3J0ICogYXMgczMgZnJvbSAnYXdzLWNkay1saWIvYXdzLXMzJztcbmltcG9ydCB7IEJsb2NrUHVibGljQWNjZXNzIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLXMzJztcbmltcG9ydCAqIGFzIHNlY3JldHNtYW5hZ2VyIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zZWNyZXRzbWFuYWdlcic7XG5pbXBvcnQgKiBhcyBzcXMgZnJvbSAnYXdzLWNkay1saWIvYXdzLXNxcyc7XG5pbXBvcnQgeyBJU3RhdGVNYWNoaW5lIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLXN0ZXBmdW5jdGlvbnMnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBjcmVhdGVSZXN0cmljdGVkU2VjdXJpdHlHcm91cHMgfSBmcm9tICcuL19saW1pdGVkLWludGVybmV0LWFjY2Vzcyc7XG5pbXBvcnQgeyBBbGFybUFjdGlvbnMsIEFsYXJtT3ZlcnJpZGUsIEFsYXJtU2V2ZXJpdGllcywgRG9tYWluIH0gZnJvbSAnLi9hcGknO1xuaW1wb3J0IHsgRGVueUxpc3QsIEluZ2VzdGlvbiB9IGZyb20gJy4vYmFja2VuZCc7XG5pbXBvcnQgeyBEZW55TGlzdFJ1bGUgfSBmcm9tICcuL2JhY2tlbmQvZGVueS1saXN0L2FwaSc7XG5pbXBvcnQgeyBGZWVkQnVpbGRlciB9IGZyb20gJy4vYmFja2VuZC9mZWVkLWJ1aWxkZXInO1xuaW1wb3J0IHsgSW52ZW50b3J5IH0gZnJvbSAnLi9iYWNrZW5kL2ludmVudG9yeSc7XG5pbXBvcnQgeyBMaWNlbnNlTGlzdCB9IGZyb20gJy4vYmFja2VuZC9saWNlbnNlLWxpc3QnO1xuaW1wb3J0IHsgT3JjaGVzdHJhdGlvbiB9IGZyb20gJy4vYmFja2VuZC9vcmNoZXN0cmF0aW9uJztcbmltcG9ydCB7IFBhY2thZ2VTdGF0cyB9IGZyb20gJy4vYmFja2VuZC9wYWNrYWdlLXN0YXRzJztcbmltcG9ydCB7IFJlbGVhc2VOb3RlRmV0Y2hlciB9IGZyb20gJy4vYmFja2VuZC9yZWxlYXNlLW5vdGVzJztcbmltcG9ydCB7IENBVEFMT0dfS0VZLCBTVE9SQUdFX0tFWV9QUkVGSVggfSBmcm9tICcuL2JhY2tlbmQvc2hhcmVkL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBWZXJzaW9uVHJhY2tlciB9IGZyb20gJy4vYmFja2VuZC92ZXJzaW9uLXRyYWNrZXInO1xuaW1wb3J0IHsgQmFja2VuZERhc2hib2FyZCB9IGZyb20gJy4vYmFja2VuZC1kYXNoYm9hcmQnO1xuaW1wb3J0IHsgUmVwb3NpdG9yeSB9IGZyb20gJy4vY29kZWFydGlmYWN0L3JlcG9zaXRvcnknO1xuaW1wb3J0IHsgRG9tYWluUmVkaXJlY3QsIERvbWFpblJlZGlyZWN0U291cmNlIH0gZnJvbSAnLi9kb21haW4tcmVkaXJlY3QnO1xuaW1wb3J0IHsgTW9uaXRvcmluZyB9IGZyb20gJy4vbW9uaXRvcmluZyc7XG5pbXBvcnQgeyBPdmVydmlld0Rhc2hib2FyZCB9IGZyb20gJy4vb3ZlcnZpZXctZGFzaGJvYXJkJztcbmltcG9ydCB7IElQYWNrYWdlU291cmNlIH0gZnJvbSAnLi9wYWNrYWdlLXNvdXJjZSc7XG5pbXBvcnQgeyBOcG1KcyB9IGZyb20gJy4vcGFja2FnZS1zb3VyY2VzJztcbmltcG9ydCB7IFBhY2thZ2VUYWcgfSBmcm9tICcuL3BhY2thZ2UtdGFnJztcbmltcG9ydCB7IFBhY2thZ2VUYWdHcm91cCB9IGZyb20gJy4vcGFja2FnZS10YWctZ3JvdXAnO1xuaW1wb3J0IHsgUHJlbG9hZEZpbGUgfSBmcm9tICcuL3ByZWxvYWQtZmlsZSc7XG5pbXBvcnQgeyBTM1N0b3JhZ2VGYWN0b3J5IH0gZnJvbSAnLi9zMy9zdG9yYWdlJztcbmltcG9ydCB7IFNwZHhMaWNlbnNlIH0gZnJvbSAnLi9zcGR4LWxpY2Vuc2UnO1xuaW1wb3J0IHtcbiAgV2ViQXBwLFxuICBQYWNrYWdlTGlua0NvbmZpZyxcbiAgRmVhdHVyZWRQYWNrYWdlcyxcbiAgRmVhdHVyZUZsYWdzLFxuICBDYXRlZ29yeSxcbn0gZnJvbSAnLi93ZWJhcHAnO1xuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gZm9yIGdlbmVyYXRpbmcgUlNTIGFuZCBBVE9NIGZlZWQgZm9yIHRoZSBsYXRlc3QgcGFja2FnZXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGZWVkQ29uZmlndXJhdGlvbiB7XG4gIC8qKlxuICAgKiBHaXRodWIgdG9rZW4gZm9yIGdlbmVyYXRpbmcgcmVsZWFzZSBub3Rlcy4gV2hlbiBtaXNzaW5nIG5vIHJlbGVhc2Ugbm90ZXMgd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUgZ2VuZXJhdGVkIFJTUy9BVE9NIGZlZWRcbiAgICovXG4gIHJlYWRvbmx5IGdpdGh1YlRva2VuU2VjcmV0Pzogc2VjcmV0c21hbmFnZXIuSVNlY3JldDtcblxuICAvKipcbiAgICogVGl0bGUgdXNlZCBpbiB0aGUgZ2VuZXJhdGVkIGZlZWRcbiAgICovXG4gIHJlYWRvbmx5IGZlZWRUaXRsZT86IHN0cmluZztcblxuICAvKipcbiAgICogZGVzY3JpcHRpb24gdXNlZCBpbiB0aGUgZ2VuZXJhdGVkIGZlZWRcbiAgICovXG4gIHJlYWRvbmx5IGZlZWREZXNjcmlwdGlvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wcyBmb3IgYENvbnN0cnVjdEh1YmAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29uc3RydWN0SHViUHJvcHMge1xuICAvKipcbiAgICogQ29ubmVjdCB0aGUgaHViIHRvIGEgZG9tYWluIChyZXF1aXJlcyBhIGhvc3RlZCB6b25lIGFuZCBhIGNlcnRpZmljYXRlKS5cbiAgICovXG4gIHJlYWRvbmx5IGRvbWFpbj86IERvbWFpbjtcblxuICAvKipcbiAgICogQWN0aW9ucyB0byBwZXJmb3JtIHdoZW4gYWxhcm1zIGFyZSBzZXQuXG4gICAqL1xuICByZWFkb25seSBhbGFybUFjdGlvbnM/OiBBbGFybUFjdGlvbnM7XG5cbiAgLyoqXG4gICAqIENvbmZpZ3VyZSB0aGUgc2V2ZXJpdGllcyBvZiB2YXJpb3VzIGFsYXJtcy5cbiAgICovXG4gIHJlYWRvbmx5IGFsYXJtU2V2ZXJpdGllcz86IEFsYXJtU2V2ZXJpdGllcztcblxuICAvKipcbiAgICogUGVyLWFsYXJtIG92ZXJyaWRlcyBrZXllZCBieSB0aGUgYWxhcm0ncyBDbG91ZFdhdGNoIGRpc3BsYXkgbmFtZSByZWxhdGl2ZVxuICAgKiB0byB0aGUgYENvbnN0cnVjdEh1YmAgY29uc3RydWN0IOKAlCBpLmUuIHRoZSBzYW1lIHN0cmluZyBhIGN1c3RvbWVyIHNlZXMgaW5cbiAgICogdGlja2V0cyBhbmQgdGhlIENsb3VkV2F0Y2ggY29uc29sZSAoZS5nLiAnU291cmNlcy9OcG1Kcy9DYW5hcnkvTm90UnVubmluZ09yRmFpbGluZycpLlxuICAgKlxuICAgKiBGb3IgZWFjaCBlbnRyeSwgc2V0IGBzZXZlcml0eWAgKGBBbGFybVNldmVyaXR5LkhJR0hgIC8gYE1FRElVTWAgLyBgTE9XYClcbiAgICogdG8gd2lyZSB0aGUgYWxhcm0gdG8gYSBkaWZmZXJlbnQgYnVja2V0J3MgYWN0aW9uLCBgYWN0aW9uc2AgdG8gc3VwcGx5XG4gICAqIGN1c3RvbSBhY3Rpb25zIHRoYXQgYnlwYXNzIHRoZSBidWNrZXRzLCBvciBib3RoLlxuICAgKlxuICAgKiBVbmtub3duIGtleXMgYXJlIHN1cmZhY2VkIGFzIHN5bnRoLXRpbWUgdmFsaWRhdGlvbiBlcnJvcnMuXG4gICAqL1xuICByZWFkb25seSBhbGFybU92ZXJyaWRlcz86IHsgW2FsYXJtTmFtZTogc3RyaW5nXTogQWxhcm1PdmVycmlkZSB9O1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGNvbXB1dGUgZW52aXJvbm1lbnRzIGZvciBzZW5zaXRpdmUgdGFza3MgKHdoaWNoIG9wZXJhdGUgb25cbiAgICogdW4tdHJ1c3RlZCBjb21wbGV4IGRhdGEsIHN1Y2ggYXMgdGhlIHRyYW5zbGl0ZXJhdG9yLCB3aGljaCBvcGVyYXRlcyB3aXRoXG4gICAqIGV4dGVybmFsbHktc291cmNlZCBucG0gcGFja2FnZSB0YXJiYWxscykgc2hvdWxkIHJ1biBpbiBuZXR3b3JrLWlzb2xhdGVkXG4gICAqIGVudmlyb25tZW50cy4gVGhpcyBpbXBsaWVzIHRoZSBjcmVhdGlvbiBvZiBhZGRpdG9uYWwgcmVzb3VyY2VzLCBpbmNsdWRpbmc6XG4gICAqXG4gICAqIC0gQSBWUEMgd2l0aCBvbmx5IGlzb2xhdGVkIHN1Ym5ldHMuXG4gICAqIC0gVlBDIEVuZHBvaW50cyAoQ2xvdWRXYXRjaCBMb2dzLCBDb2RlQXJ0aWZhY3QsIENvZGVBcnRpZmFjdCBBUEksIFMzLCAuLi4pXG4gICAqIC0gQSBDb2RlQXJ0aWZhY3QgUmVwb3NpdG9yeSB3aXRoIGFuIGV4dGVybmFsIGNvbm5lY3Rpb24gdG8gbnBtanMuY29tXG4gICAqXG4gICAqIEBkZXByZWNhdGVkIHVzZSBzZW5zaXRpdmVUYXNrSXNvbGF0aW9uIGluc3RlYWQuXG4gICAqL1xuICByZWFkb25seSBpc29sYXRlU2Vuc2l0aXZlVGFza3M/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGNvbXB1dGUgZW52aXJvbm1lbnRzIGZvciBzZW5zaXRpdmUgdGFza3MgKHdoaWNoIG9wZXJhdGUgb25cbiAgICogdW4tdHJ1c3RlZCBjb21wbGV4IGRhdGEsIHN1Y2ggYXMgdGhlIHRyYW5zbGl0ZXJhdG9yLCB3aGljaCBvcGVyYXRlcyB3aXRoXG4gICAqIGV4dGVybmFsbHktc291cmNlZCBucG0gcGFja2FnZSB0YXJiYWxscykgc2hvdWxkIHJ1biBpbiBuZXR3b3JrLWlzb2xhdGVkXG4gICAqIGVudmlyb25tZW50cy4gVGhpcyBpbXBsaWVzIHRoZSBjcmVhdGlvbiBvZiBhZGRpdG9uYWwgcmVzb3VyY2VzLCBpbmNsdWRpbmc6XG4gICAqXG4gICAqIC0gQSBWUEMgd2l0aCBvbmx5IGlzb2xhdGVkIHN1Ym5ldHMuXG4gICAqIC0gVlBDIEVuZHBvaW50cyAoQ2xvdWRXYXRjaCBMb2dzLCBDb2RlQXJ0aWZhY3QsIENvZGVBcnRpZmFjdCBBUEksIFMzLCAuLi4pXG4gICAqIC0gQSBDb2RlQXJ0aWZhY3QgUmVwb3NpdG9yeSB3aXRoIGFuIGV4dGVybmFsIGNvbm5lY3Rpb24gdG8gbnBtanMuY29tXG4gICAqXG4gICAqIEBkZWZhdWx0IElzb2xhdGlvbi5OT19JTlRFUk5FVF9BQ0NFU1NcbiAgICovXG4gIHJlYWRvbmx5IHNlbnNpdGl2ZVRhc2tJc29sYXRpb24/OiBJc29sYXRpb247XG5cbiAgLyoqXG4gICAqIEhvdyBsb25nIHRvIHJldGFpbiBDbG91ZFdhdGNoIGxvZ3MgZm9yLlxuICAgKlxuICAgKiBAZGVmYXVsdHMgUmV0ZW50aW9uRGF5cy5URU5fWUVBUlNcbiAgICovXG4gIHJlYWRvbmx5IGxvZ1JldGVudGlvbj86IFJldGVudGlvbkRheXM7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBDbG91ZFdhdGNoIGRhc2hib2FyZCB0aGF0IHJlcHJlc2VudHMgdGhlIGhlYWx0aCBvZiBiYWNrZW5kXG4gICAqIHN5c3RlbXMuXG4gICAqL1xuICByZWFkb25seSBiYWNrZW5kRGFzaGJvYXJkTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogQSBsaXN0IG9mIHBhY2thZ2VzIHRvIGJsb2NrIGZyb20gdGhlIGNvbnN0cnVjdCBodWIuXG4gICAqXG4gICAqIEBkZWZhdWx0IFtdXG4gICAqL1xuICByZWFkb25seSBkZW55TGlzdD86IERlbnlMaXN0UnVsZVtdO1xuXG4gIC8qKlxuICAgKiBUaGUgcGFja2FnZSBzb3VyY2VzIHRvIHJlZ2lzdGVyIHdpdGggdGhpcyBDb25zdHJ1Y3RIdWIgaW5zdGFuY2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gYSBzdGFuZGFyZCBucG1qcy5jb20gcGFja2FnZSBzb3VyY2Ugd2lsbCBiZSBjb25maWd1cmVkLlxuICAgKi9cbiAgcmVhZG9ubHkgcGFja2FnZVNvdXJjZXM/OiBJUGFja2FnZVNvdXJjZVtdO1xuXG4gIC8qKlxuICAgKiBUaGUgYWxsb3dlZCBsaWNlbnNlcyBmb3IgcGFja2FnZXMgaW5kZXhlZCBieSB0aGlzIGluc3RhbmNlIG9mIENvbnN0cnVjdEh1Yi5cbiAgICpcbiAgICogQGRlZmF1bHQgWy4uLlNwZHhMaWNlbnNlLmFwYWNoZSgpLC4uLlNwZHhMaWNlbnNlLmJzZCgpLC4uLlNwZHhMaWNlbnNlLmNkZGwoKSwuLi5TcGR4TGljZW5zZS5lcGwoKSxTcGR4TGljZW5zZS5JU0MsLi4uU3BkeExpY2Vuc2UubWl0KCksU3BkeExpY2Vuc2UuTVBMXzJfMF1cbiAgICovXG4gIHJlYWRvbmx5IGFsbG93ZWRMaWNlbnNlcz86IFNwZHhMaWNlbnNlW107XG5cbiAgLyoqXG4gICAqIFdoZW4gdXNpbmcgYSBDb2RlQXJ0aWZhY3QgcGFja2FnZSBzb3VyY2UsIGl0IGlzIG9mdGVuIGRlc2lyYWJsZSB0byBoYXZlXG4gICAqIENvbnN0cnVjdEh1YiBwcm92aXNpb24gaXQncyBpbnRlcm5hbCBDb2RlQXJ0aWZhY3QgcmVwb3NpdG9yeSBpbiB0aGUgc2FtZVxuICAgKiBDb2RlQXJ0aWZhY3QgZG9tYWluLCBhbmQgdG8gY29uZmlndXJlIHRoZSBwYWNrYWdlIHNvdXJjZSByZXBvc2l0b3J5IGFzIGFuXG4gICAqIHVwc3RyZWFtIG9mIHRoZSBpbnRlcm5hbCByZXBvc2l0b3J5LiBUaGlzIHdheSwgYWxsIHBhY2thZ2VzIGluIHRoZSBzb3VyY2VcbiAgICogYXJlIGF2YWlsYWJsZSB0byBDb25zdHJ1Y3RIdWIncyBiYWNrZW5kIHByb2Nlc3NpbmcuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm9uZS5cbiAgICovXG4gIHJlYWRvbmx5IGNvZGVBcnRpZmFjdERvbWFpbj86IENvZGVBcnRpZmFjdERvbWFpblByb3BzO1xuXG4gIC8qKlxuICAgKiBDb25maWd1cmF0aW9uIGZvciBjdXN0b20gcGFja2FnZSBwYWdlIGxpbmtzLlxuICAgKi9cbiAgcmVhZG9ubHkgcGFja2FnZUxpbmtzPzogUGFja2FnZUxpbmtDb25maWdbXTtcblxuICAvKipcbiAgICogQ29uZmlndXJhdGlvbiBmb3IgY3VzdG9tIHBhY2thZ2UgdGFnc1xuICAgKi9cbiAgcmVhZG9ubHkgcGFja2FnZVRhZ3M/OiBQYWNrYWdlVGFnW107XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gZm9yIGdyb3VwaW5nIGN1c3RvbSBwYWNrYWdlIHRhZ3NcbiAgICovXG4gIHJlYWRvbmx5IHBhY2thZ2VUYWdHcm91cHM/OiBQYWNrYWdlVGFnR3JvdXBbXTtcblxuICAvKipcbiAgICogQ29uZmlndXJhdGlvbiBmb3IgcGFja2FnZXMgdG8gZmVhdHVyZSBvbiB0aGUgaG9tZSBwYWdlLlxuICAgKiBAZGVmYXVsdCAtIERpc3BsYXkgdGhlIDEwIG1vc3QgcmVjZW50bHkgdXBkYXRlZCBwYWNrYWdlc1xuICAgKi9cbiAgcmVhZG9ubHkgZmVhdHVyZWRQYWNrYWdlcz86IEZlYXR1cmVkUGFja2FnZXM7XG5cbiAgLyoqXG4gICAqIENvbmZpZ3VyZSBmZWF0dXJlIGZsYWdzIGZvciB0aGUgd2ViIGFwcC5cbiAgICovXG4gIHJlYWRvbmx5IGZlYXR1cmVGbGFncz86IEZlYXR1cmVGbGFncztcblxuICAvKipcbiAgICogQ29uZmlndXJlIHdoZXRoZXIgb3Igbm90IHRoZSBiYWNrZW5kIHNob3VsZCBwZXJpb2RpY2FsbHkgcXVlcnkgTlBNXG4gICAqIGZvciB0aGUgbnVtYmVyIG9mIGRvd25sb2FkcyBhIHBhY2thZ2UgaGFzIGluIHRoZSBwYXN0IHdlZWssIGFuZFxuICAgKiBkaXNwbGF5IGRvd25sb2FkIGNvdW50cyBvbiB0aGUgd2ViIGFwcC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSB0cnVlIGlmIHBhY2thZ2VTb3VyY2VzIGlzIG5vdCBzcGVjaWZpZWQgKHRoZSBkZWZhdWx0cyBhcmVcbiAgICogdXNlZCksIGZhbHNlIG90aGVyd2lzZVxuICAgKi9cbiAgcmVhZG9ubHkgZmV0Y2hQYWNrYWdlU3RhdHM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBCcm93c2UgY2F0ZWdvcmllcy4gRWFjaCBjYXRlZ29yeSB3aWxsIGFwcGVhciBpbiB0aGUgaG9tZSBwYWdlIGFzIGEgYnV0dG9uXG4gICAqIHdpdGggYSBsaW5rIHRvIHRoZSByZWxldmFudCBzZWFyY2ggcXVlcnkuXG4gICAqL1xuICByZWFkb25seSBjYXRlZ29yaWVzPzogQ2F0ZWdvcnlbXTtcblxuICAvKipcbiAgICogV2lyZSBjb25zdHJ1Y3QgaHViIHRvIHVzZSB0aGUgZmFpbG92ZXIgc3RvcmFnZSBidWNrZXRzLlxuICAgKlxuICAgKiBEbyBub3QgYWN0aXZhdGUgdGhpcyBwcm9wZXJ0eSB1bnRpbCB5b3UndmUgcG9wdWxhdGVkIHlvdXIgZmFpbG92ZXIgYnVja2V0c1xuICAgKiB3aXRoIHRoZSBuZWNlc3NhcnkgZGF0YS5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vY2RrbGFicy9jb25zdHJ1Y3QtaHViL2Jsb2IvZGV2L2RvY3Mvb3BlcmF0b3ItcnVuYm9vay5tZCNzdG9yYWdlLWRpc2FzdGVyXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBmYWlsb3ZlclN0b3JhZ2U/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBIb3cgZnJlcXVlbnRseSBhbGwgcGFja2FnZXMgc2hvdWxkIGdldCBmdWxseSByZXByb2Nlc3NlZC5cbiAgICpcbiAgICogU2VlIHRoZSBvcGVyYXRvciBydW5ib29rIGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHJlcHJvY2Vzc2luZy5cbiAgICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vY2RrbGFicy9jb25zdHJ1Y3QtaHViL2Jsb2IvbWFpbi9kb2NzL29wZXJhdG9yLXJ1bmJvb2subWRcbiAgICpcbiAgICogQGRlZmF1bHQgLSBuZXZlclxuICAgKi9cbiAgcmVhZG9ubHkgcmVwcm9jZXNzRnJlcXVlbmN5PzogRHVyYXRpb247XG5cbiAgLyoqXG4gICAqIFBhY2thZ2UgdmVyc2lvbnMgdGhhdCBoYXZlIGJlZW4gcHVibGlzaGVkIGJlZm9yZSB0aGlzIHRpbWUgd2luZG93IHdpbGwgbm90IGJlIHJlcHJvY2Vzc2VkLlxuICAgKlxuICAgKiBAZGVmYXVsdCBEdXJhdGlvbi5kYXlzKDkwKVxuICAgKi9cbiAgcmVhZG9ubHkgcmVwcm9jZXNzQWdlPzogRHVyYXRpb247XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgZG9tYWlucyB3aGljaCB3aWxsIGJlIHNldCB1cCB0byByZWRpcmVjdCB0byB0aGUgcHJpbWFyeVxuICAgKiBjb25zdHJ1Y3QgaHViIGRvbWFpbi5cbiAgICpcbiAgICogQGRlZmF1bHQgW11cbiAgICovXG4gIHJlYWRvbmx5IGFkZGl0aW9uYWxEb21haW5zPzogRG9tYWluUmVkaXJlY3RTb3VyY2VbXTtcblxuICAvKipcbiAgICogSmF2YXNjcmlwdCB0byBydW4gb24gd2ViYXBwIGJlZm9yZSBhcHAgbG9hZHNcbiAgICpcbiAgICogQGRlZmF1bHQgLSBjcmVhdGUgYW4gZW1wdHkgZmlsZVxuICAgKi9cbiAgcmVhZG9ubHkgcHJlbG9hZFNjcmlwdD86IFByZWxvYWRGaWxlO1xuXG4gIC8qKlxuICAgKiBDcmVhdGUgYW4gQXBwUmVnaXN0cnkgYXBwbGljYXRpb24gYXNzb2NpYXRlZCB3aXRoIHRoZSBzdGFjayBjb250YWluaW5nXG4gICAqIHRoaXMgY29uc3RydWN0LlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBhcHBSZWdpc3RyeUFwcGxpY2F0aW9uPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQ29uZmlndXJhdGlvbiBmb3IgZ2VuZXJhdGluZyBSU1MvQXRvbSBmZWVkcyB3aXRoIHRoZSBsYXRlc3QgcGFja2FnZXMuIElmIHRoZSB2YWx1ZSBpcyBtaXNzaW5nXG4gICAqIHRoZSBnZW5lcmF0ZWQgUlNTL0FUT00gZmVlZCB3b3VsZCBub3QgY29udGFpbiByZWxlYXNlIG5vdGVzXG4gICAqL1xuICByZWFkb25seSBmZWVkQ29uZmlndXJhdGlvbj86IEZlZWRDb25maWd1cmF0aW9uO1xufVxuXG4vKipcbiAqIEluZm9ybWF0aW9uIHBlcnRhaW5pbmcgdG8gYW4gZXhpc3RpbmcgQ29kZUFydGlmYWN0IERvbWFpbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb2RlQXJ0aWZhY3REb21haW5Qcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgQ29kZUFydGlmYWN0IGRvbWFpbi5cbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogQW55IHVwc3RyZWFtIHJlcG9zaXRvcmllcyBpbiB0aGlzIENvZGVBcnRpZmFjdCBkb21haW4gdGhhdCBzaG91bGQgYmVcbiAgICogY29uZmlndXJlZCBvbiB0aGUgaW50ZXJuYWwgQ29kZUFydGlmYWN0IHJlcG9zaXRvcnkuXG4gICAqL1xuICByZWFkb25seSB1cHN0cmVhbXM/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBDb25zdHJ1Y3QgSHViLlxuICovXG5leHBvcnQgY2xhc3MgQ29uc3RydWN0SHViIGV4dGVuZHMgQ29uc3RydWN0IGltcGxlbWVudHMgaWFtLklHcmFudGFibGUge1xuICAvKipcbiAgICogVGhlIGZ1bmN0aW9uIG9wZXJhdG9ycyBjYW4gdXNlIHRvIHJlcHJvY2VzcyBhIHNwZWNpZmljIHBhY2thZ2UgdmVyc2lvblxuICAgKiB0aHJvdWdoIHRoZSBiYWNrZW5kIGRhdGEgcGlwZWxpbmUuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcmVnZW5lcmF0ZUFsbERvY3VtZW50YXRpb25QZXJQYWNrYWdlOiBJU3RhdGVNYWNoaW5lO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgaW5nZXN0aW9uOiBJbmdlc3Rpb247XG4gIHByaXZhdGUgcmVhZG9ubHkgbW9uaXRvcmluZzogTW9uaXRvcmluZztcblxuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzOiBDb25zdHJ1Y3RIdWJQcm9wcyA9IHt9XG4gICkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBpZiAoXG4gICAgICBwcm9wcy5pc29sYXRlU2Vuc2l0aXZlVGFza3MgIT0gbnVsbCAmJlxuICAgICAgcHJvcHMuc2Vuc2l0aXZlVGFza0lzb2xhdGlvbiAhPSBudWxsXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdTdXBwbHlpbmcgYm90aCBpc29sYXRlU2Vuc2l0aXZlVGFza3MgYW5kIHNlbnNpdGl2ZVRhc2tJc29sYXRpb24gaXMgbm90IHN1cHBvcnRlZC4gUmVtb3ZlIHVzYWdlIG9mIGlzb2xhdGVTZW5zaXRpdmVUYXNrcy4nXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IHNob3VsZEZldGNoUmVsZWFzZU5vdGVzID0gcHJvcHMuZmVlZENvbmZpZ3VyYXRpb24/LmdpdGh1YlRva2VuU2VjcmV0XG4gICAgICA/IHRydWVcbiAgICAgIDogZmFsc2U7XG5cbiAgICBjb25zdCBzdG9yYWdlRmFjdG9yeSA9IFMzU3RvcmFnZUZhY3RvcnkuZ2V0T3JDcmVhdGUodGhpcywge1xuICAgICAgZmFpbG92ZXI6IHByb3BzLmZhaWxvdmVyU3RvcmFnZSxcbiAgICB9KTtcblxuICAgIHRoaXMubW9uaXRvcmluZyA9IG5ldyBNb25pdG9yaW5nKHRoaXMsICdNb25pdG9yaW5nJywge1xuICAgICAgYWxhcm1BY3Rpb25zOiBwcm9wcy5hbGFybUFjdGlvbnMsXG4gICAgICBhbGFybU92ZXJyaWRlczogcHJvcHMuYWxhcm1PdmVycmlkZXMsXG4gICAgfSk7XG5cbiAgICBjb25zdCBvdmVydmlld0Rhc2hib2FyZCA9IG5ldyBPdmVydmlld0Rhc2hib2FyZCh0aGlzLCAnT3ZlcnZpZXdEYXNoYm9hcmQnLCB7XG4gICAgICBsYW1iZGFTZXJ2aWNlQWxhcm1UaHJlc2hvbGQ6IDcwLFxuICAgICAgZGFzaGJvYXJkTmFtZTogcHJvcHMuYmFja2VuZERhc2hib2FyZE5hbWVcbiAgICAgICAgPyBgJHtwcm9wcy5iYWNrZW5kRGFzaGJvYXJkTmFtZX0tb3ZlcnZpZXdgXG4gICAgICAgIDogdW5kZWZpbmVkLFxuICAgIH0pO1xuXG4gICAgY29uc3QgcGFja2FnZURhdGEgPSBzdG9yYWdlRmFjdG9yeS5uZXdCdWNrZXQodGhpcywgJ1BhY2thZ2VEYXRhJywge1xuICAgICAgYmxvY2tQdWJsaWNBY2Nlc3M6IEJsb2NrUHVibGljQWNjZXNzLkJMT0NLX0FMTCxcbiAgICAgIGVuZm9yY2VTU0w6IHRydWUsXG4gICAgICBlbmNyeXB0aW9uOiBzMy5CdWNrZXRFbmNyeXB0aW9uLlMzX01BTkFHRUQsXG4gICAgICBsaWZlY3ljbGVSdWxlczogW1xuICAgICAgICAvLyBBYm9ydCBtdWx0aS1wYXJ0IHVwbG9hZHMgYWZ0ZXIgMSBkYXlcbiAgICAgICAgeyBhYm9ydEluY29tcGxldGVNdWx0aXBhcnRVcGxvYWRBZnRlcjogRHVyYXRpb24uZGF5cygxKSB9LFxuICAgICAgICAvLyBUcmFuc2l0aW9uIG5vbi1jdXJyZW50IG9iamVjdCB2ZXJzaW9ucyB0byBJQSBhZnRlciAxIG1vbnRoXG4gICAgICAgIHtcbiAgICAgICAgICBub25jdXJyZW50VmVyc2lvblRyYW5zaXRpb25zOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHN0b3JhZ2VDbGFzczogczMuU3RvcmFnZUNsYXNzLklORlJFUVVFTlRfQUNDRVNTLFxuICAgICAgICAgICAgICB0cmFuc2l0aW9uQWZ0ZXI6IER1cmF0aW9uLmRheXMoMzEpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgICAvLyBQZXJtYW5lbnRseSBkZWxldGUgbm9uLWN1cnJlbnQgb2JqZWN0IHZlcnNpb25zIGFmdGVyIDMgbW9udGhzXG4gICAgICAgIHtcbiAgICAgICAgICBub25jdXJyZW50VmVyc2lvbkV4cGlyYXRpb246IER1cmF0aW9uLmRheXMoOTApLFxuICAgICAgICAgIGV4cGlyZWRPYmplY3REZWxldGVNYXJrZXI6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIC8vIFBlcm1hbmVudGx5IGRlbGV0ZSBub24tY3VycmVudCB2ZXJzaW9ucyBvZiBjYXRhbG9nLmpzb24gZWFybGllclxuICAgICAgICB7IG5vbmN1cnJlbnRWZXJzaW9uRXhwaXJhdGlvbjogRHVyYXRpb24uZGF5cyg3KSwgcHJlZml4OiBDQVRBTE9HX0tFWSB9LFxuICAgICAgICAvLyBEZWxldGUgc3RhdHMgY2h1bmsgZmlsZXMgYWZ0ZXIgMSBkYXlcbiAgICAgICAgeyBleHBpcmF0aW9uOiBEdXJhdGlvbi5kYXlzKDEpLCBwcmVmaXg6ICdzdGF0cy1jaHVua3MvJyB9LFxuICAgICAgXSxcbiAgICAgIHZlcnNpb25lZDogdHJ1ZSxcbiAgICB9KTtcblxuICAgIGNvbnN0IGlzb2xhdGlvbiA9XG4gICAgICBwcm9wcy5zZW5zaXRpdmVUYXNrSXNvbGF0aW9uID8/XG4gICAgICAocHJvcHMuaXNvbGF0ZVNlbnNpdGl2ZVRhc2tzXG4gICAgICAgID8gSXNvbGF0aW9uLk5PX0lOVEVSTkVUX0FDQ0VTU1xuICAgICAgICA6IElzb2xhdGlvbi5VTkxJTUlURURfSU5URVJORVRfQUNDRVNTKTtcblxuICAgIC8vIENyZWF0ZSBhbiBpbnRlcm5hbCBDb2RlQXJ0aWZhY3QgcmVwb3NpdG9yeSBpZiB3ZSBydW4gaW4gbmV0d29yay1jb250cm9sbGVkIG1vZGUsIG9yIGlmIGEgZG9tYWluIGlzIHByb3ZpZGVkLlxuICAgIGNvbnN0IGNvZGVBcnRpZmFjdCA9XG4gICAgICBpc29sYXRpb24gPT09IElzb2xhdGlvbi5OT19JTlRFUk5FVF9BQ0NFU1MgfHxcbiAgICAgIHByb3BzLmNvZGVBcnRpZmFjdERvbWFpbiAhPSBudWxsXG4gICAgICAgID8gbmV3IFJlcG9zaXRvcnkodGhpcywgJ0NvZGVBcnRpZmFjdCcsIHtcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnUHJveHkgdG8gbnBtanMuY29tIGZvciBDb25zdHJ1Y3RIdWInLFxuICAgICAgICAgICAgZG9tYWluTmFtZTogcHJvcHMuY29kZUFydGlmYWN0RG9tYWluPy5uYW1lLFxuICAgICAgICAgICAgZG9tYWluRXhpc3RzOiBwcm9wcy5jb2RlQXJ0aWZhY3REb21haW4gIT0gbnVsbCxcbiAgICAgICAgICAgIHVwc3RyZWFtczogcHJvcHMuY29kZUFydGlmYWN0RG9tYWluPy51cHN0cmVhbXMsXG4gICAgICAgICAgfSlcbiAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgeyB2cGMsIHZwY0VuZHBvaW50cywgdnBjU3VibmV0cywgdnBjU2VjdXJpdHlHcm91cHMgfSA9IHRoaXMuY3JlYXRlVnBjKFxuICAgICAgaXNvbGF0aW9uLFxuICAgICAgY29kZUFydGlmYWN0XG4gICAgKTtcblxuICAgIGNvbnN0IGRlbnlMaXN0ID0gbmV3IERlbnlMaXN0KHRoaXMsICdEZW55TGlzdCcsIHtcbiAgICAgIHJ1bGVzOiBwcm9wcy5kZW55TGlzdCA/PyBbXSxcbiAgICAgIHBhY2thZ2VEYXRhQnVja2V0OiBwYWNrYWdlRGF0YSxcbiAgICAgIHBhY2thZ2VEYXRhS2V5UHJlZml4OiBTVE9SQUdFX0tFWV9QUkVGSVgsXG4gICAgICBtb25pdG9yaW5nOiB0aGlzLm1vbml0b3JpbmcsXG4gICAgICBvdmVydmlld0Rhc2hib2FyZDogb3ZlcnZpZXdEYXNoYm9hcmQsXG4gICAgfSk7XG5cbiAgICAvLyBkaXNhYmxlIGZldGNoaW5nIHBhY2thZ2Ugc3RhdHMgYnkgZGVmYXVsdCBpZiBhIGRpZmZlcmVudCBwYWNrYWdlXG4gICAgLy8gc291cmNlIGlzIGNvbmZpZ3VyZWRcbiAgICBjb25zdCBmZXRjaFBhY2thZ2VTdGF0cyA9XG4gICAgICBwcm9wcy5mZXRjaFBhY2thZ2VTdGF0cyA/PyAocHJvcHMucGFja2FnZVNvdXJjZXMgPyBmYWxzZSA6IHRydWUpO1xuXG4gICAgbGV0IHBhY2thZ2VTdGF0czogUGFja2FnZVN0YXRzIHwgdW5kZWZpbmVkO1xuICAgIGNvbnN0IHN0YXRzS2V5ID0gJ3N0YXRzLmpzb24nO1xuICAgIGlmIChmZXRjaFBhY2thZ2VTdGF0cykge1xuICAgICAgcGFja2FnZVN0YXRzID0gbmV3IFBhY2thZ2VTdGF0cyh0aGlzLCAnU3RhdHMnLCB7XG4gICAgICAgIGJ1Y2tldDogcGFja2FnZURhdGEsXG4gICAgICAgIG1vbml0b3Jpbmc6IHRoaXMubW9uaXRvcmluZyxcbiAgICAgICAgbG9nUmV0ZW50aW9uOiBwcm9wcy5sb2dSZXRlbnRpb24sXG4gICAgICAgIG9iamVjdEtleTogc3RhdHNLZXksXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCB2ZXJzaW9uVHJhY2tlciA9IG5ldyBWZXJzaW9uVHJhY2tlcih0aGlzLCAnVmVyc2lvblRyYWNrZXInLCB7XG4gICAgICBidWNrZXQ6IHBhY2thZ2VEYXRhLFxuICAgICAgbW9uaXRvcmluZzogdGhpcy5tb25pdG9yaW5nLFxuICAgICAgbG9nUmV0ZW50aW9uOiBwcm9wcy5sb2dSZXRlbnRpb24sXG4gICAgfSk7XG5cbiAgICBjb25zdCBmZWVkQnVpbGRlciA9IG5ldyBGZWVkQnVpbGRlcih0aGlzLCAnRmVlZEJ1aWxkZXInLCB7XG4gICAgICBidWNrZXQ6IHBhY2thZ2VEYXRhLFxuICAgICAgb3ZlcnZpZXdEYXNoYm9hcmQsXG4gICAgICBmZWVkRGVzY3JpcHRpb246IHByb3BzLmZlZWRDb25maWd1cmF0aW9uPy5mZWVkRGVzY3JpcHRpb24sXG4gICAgICBmZWVkVGl0bGU6IHByb3BzLmZlZWRDb25maWd1cmF0aW9uPy5mZWVkVGl0bGUsXG4gICAgICBtb25pdG9yaW5nOiB0aGlzLm1vbml0b3JpbmcsXG4gICAgfSk7XG5cbiAgICBjb25zdCBvcmNoZXN0cmF0aW9uID0gbmV3IE9yY2hlc3RyYXRpb24odGhpcywgJ09yY2hlc3RyYXRpb24nLCB7XG4gICAgICBidWNrZXQ6IHBhY2thZ2VEYXRhLFxuICAgICAgY29kZUFydGlmYWN0LFxuICAgICAgZGVueUxpc3QsXG4gICAgICBsb2dSZXRlbnRpb246IHByb3BzLmxvZ1JldGVudGlvbixcbiAgICAgIG1vbml0b3Jpbmc6IHRoaXMubW9uaXRvcmluZyxcbiAgICAgIG92ZXJ2aWV3RGFzaGJvYXJkOiBvdmVydmlld0Rhc2hib2FyZCxcbiAgICAgIHZwYyxcbiAgICAgIHZwY0VuZHBvaW50cyxcbiAgICAgIHZwY1N1Ym5ldHMsXG4gICAgICB2cGNTZWN1cml0eUdyb3VwcyxcbiAgICAgIGZlZWRCdWlsZGVyLFxuICAgICAgYWxhcm1TZXZlcml0aWVzOiBwcm9wcy5hbGFybVNldmVyaXRpZXMsXG4gICAgfSk7XG4gICAgdGhpcy5yZWdlbmVyYXRlQWxsRG9jdW1lbnRhdGlvblBlclBhY2thZ2UgPVxuICAgICAgb3JjaGVzdHJhdGlvbi5yZWdlbmVyYXRlQWxsRG9jdW1lbnRhdGlvblBlclBhY2thZ2U7XG5cbiAgICAvLyByZWJ1aWxkIHRoZSBjYXRhbG9nIHdoZW4gdGhlIGRlbnkgbGlzdCBjaGFuZ2VzLlxuICAgIGRlbnlMaXN0LnBydW5lLm9uQ2hhbmdlSW52b2tlKG9yY2hlc3RyYXRpb24uY2F0YWxvZ0J1aWxkZXIuZnVuY3Rpb24pO1xuXG4gICAgY29uc3QgcGFja2FnZVRhZ3NTZXJpYWxpemVkID1cbiAgICAgIHByb3BzLnBhY2thZ2VUYWdzPy5tYXAoKGNvbmZpZykgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLmNvbmZpZyxcbiAgICAgICAgICBjb25kaXRpb246IGNvbmZpZy5jb25kaXRpb24uYmluZCgpLFxuICAgICAgICB9O1xuICAgICAgfSkgPz8gW107XG5cbiAgICBsZXQgcmVsZWFzZU5vdGVzO1xuICAgIGlmIChzaG91bGRGZXRjaFJlbGVhc2VOb3Rlcykge1xuICAgICAgcmVsZWFzZU5vdGVzID0gbmV3IFJlbGVhc2VOb3RlRmV0Y2hlcih0aGlzLCAnUmVsZWFzZU5vdGVzJywge1xuICAgICAgICBidWNrZXQ6IHBhY2thZ2VEYXRhLFxuICAgICAgICBnaXRIdWJDcmVkZW50aWFsc1NlY3JldDogcHJvcHMuZmVlZENvbmZpZ3VyYXRpb24/LmdpdGh1YlRva2VuU2VjcmV0LFxuICAgICAgICBmZWVkQnVpbGRlcixcbiAgICAgICAgbW9uaXRvcmluZzogdGhpcy5tb25pdG9yaW5nLFxuICAgICAgICBvdmVydmlld0Rhc2hib2FyZCxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMuaW5nZXN0aW9uID0gbmV3IEluZ2VzdGlvbih0aGlzLCAnSW5nZXN0aW9uJywge1xuICAgICAgYnVja2V0OiBwYWNrYWdlRGF0YSxcbiAgICAgIGNvZGVBcnRpZmFjdCxcbiAgICAgIG9yY2hlc3RyYXRpb24sXG4gICAgICBsb2dSZXRlbnRpb246IHByb3BzLmxvZ1JldGVudGlvbixcbiAgICAgIG1vbml0b3Jpbmc6IHRoaXMubW9uaXRvcmluZyxcbiAgICAgIHBhY2thZ2VMaW5rczogcHJvcHMucGFja2FnZUxpbmtzLFxuICAgICAgcGFja2FnZVRhZ3M6IHBhY2thZ2VUYWdzU2VyaWFsaXplZCxcbiAgICAgIHJlcHJvY2Vzc0ZyZXF1ZW5jeTogcHJvcHMucmVwcm9jZXNzRnJlcXVlbmN5LFxuICAgICAgcmVwcm9jZXNzQWdlOiBwcm9wcy5yZXByb2Nlc3NBZ2UsXG4gICAgICByZWxlYXNlTm90ZXNGZXRjaFF1ZXVlOiByZWxlYXNlTm90ZXM/LnF1ZXVlLFxuICAgICAgb3ZlcnZpZXdEYXNoYm9hcmQ6IG92ZXJ2aWV3RGFzaGJvYXJkLFxuICAgIH0pO1xuXG4gICAgY29uc3QgbGljZW5zZUxpc3QgPSBuZXcgTGljZW5zZUxpc3QodGhpcywgJ0xpY2Vuc2VMaXN0Jywge1xuICAgICAgbGljZW5zZXM6IHByb3BzLmFsbG93ZWRMaWNlbnNlcyA/PyBbXG4gICAgICAgIC4uLlNwZHhMaWNlbnNlLmFwYWNoZSgpLFxuICAgICAgICAuLi5TcGR4TGljZW5zZS5ic2QoKSxcbiAgICAgICAgLi4uU3BkeExpY2Vuc2UuY2RkbCgpLFxuICAgICAgICAuLi5TcGR4TGljZW5zZS5lcGwoKSxcbiAgICAgICAgU3BkeExpY2Vuc2UuSVNDLFxuICAgICAgICAuLi5TcGR4TGljZW5zZS5taXQoKSxcbiAgICAgICAgU3BkeExpY2Vuc2UuTVBMXzJfMCxcbiAgICAgIF0sXG4gICAgfSk7XG5cbiAgICBjb25zdCB3ZWJBcHAgPSBuZXcgV2ViQXBwKHRoaXMsICdXZWJBcHAnLCB7XG4gICAgICBkb21haW46IHByb3BzLmRvbWFpbixcbiAgICAgIG1vbml0b3Jpbmc6IHRoaXMubW9uaXRvcmluZyxcbiAgICAgIHBhY2thZ2VEYXRhLFxuICAgICAgcGFja2FnZUxpbmtzOiBwcm9wcy5wYWNrYWdlTGlua3MsXG4gICAgICBwYWNrYWdlVGFnczogcGFja2FnZVRhZ3NTZXJpYWxpemVkLFxuICAgICAgcGFja2FnZVRhZ0dyb3VwczogcHJvcHMucGFja2FnZVRhZ0dyb3VwcyxcbiAgICAgIGZlYXR1cmVkUGFja2FnZXM6IHByb3BzLmZlYXR1cmVkUGFja2FnZXMsXG4gICAgICBwYWNrYWdlU3RhdHMsXG4gICAgICBmZWF0dXJlRmxhZ3M6IHByb3BzLmZlYXR1cmVGbGFncyxcbiAgICAgIGNhdGVnb3JpZXM6IHByb3BzLmNhdGVnb3JpZXMsXG4gICAgICBwcmVsb2FkU2NyaXB0OiBwcm9wcy5wcmVsb2FkU2NyaXB0LFxuICAgICAgb3ZlcnZpZXdEYXNoYm9hcmQ6IG92ZXJ2aWV3RGFzaGJvYXJkLFxuICAgICAgaW5jbHVkZUZlZWRMaW5rOiB0cnVlLFxuICAgIH0pO1xuXG4gICAgLy8gU2V0IHRoZSBiYXNlIFVSTCB0aGF0IHdpbGwgYmUgdXNlZCBpbiB0aGUgUlNTL0FUT00gZmVlZFxuICAgIGZlZWRCdWlsZGVyLnNldENvbnN0cnVjdEh1YlVybCh3ZWJBcHAuYmFzZVVybCk7XG5cbiAgICBjb25zdCBzb3VyY2VzID0gbmV3IENvbnN0cnVjdCh0aGlzLCAnU291cmNlcycpO1xuICAgIGNvbnN0IHBhY2thZ2VTb3VyY2VzID0gKFxuICAgICAgcHJvcHMucGFja2FnZVNvdXJjZXMgPz8gW1xuICAgICAgICBuZXcgTnBtSnMoeyBhbGFybVNldmVyaXRpZXM6IHByb3BzLmFsYXJtU2V2ZXJpdGllcyB9KSxcbiAgICAgIF1cbiAgICApLm1hcCgoc291cmNlKSA9PlxuICAgICAgc291cmNlLmJpbmQoc291cmNlcywge1xuICAgICAgICBiYXNlVXJsOiB3ZWJBcHAuYmFzZVVybCxcbiAgICAgICAgZGVueUxpc3QsXG4gICAgICAgIGluZ2VzdGlvbjogdGhpcy5pbmdlc3Rpb24sXG4gICAgICAgIGxpY2Vuc2VMaXN0LFxuICAgICAgICBtb25pdG9yaW5nOiB0aGlzLm1vbml0b3JpbmcsXG4gICAgICAgIHF1ZXVlOiB0aGlzLmluZ2VzdGlvbi5xdWV1ZSxcbiAgICAgICAgcmVwb3NpdG9yeTogY29kZUFydGlmYWN0LFxuICAgICAgICBvdmVydmlld0Rhc2hib2FyZDogb3ZlcnZpZXdEYXNoYm9hcmQsXG4gICAgICB9KVxuICAgICk7XG5cbiAgICBjb25zdCBpbnZlbnRvcnkgPSBuZXcgSW52ZW50b3J5KHRoaXMsICdJbnZlbnRvcnlDYW5hcnknLCB7XG4gICAgICBidWNrZXQ6IHBhY2thZ2VEYXRhLFxuICAgICAgbG9nUmV0ZW50aW9uOiBwcm9wcy5sb2dSZXRlbnRpb24sXG4gICAgICBtb25pdG9yaW5nOiB0aGlzLm1vbml0b3JpbmcsXG4gICAgICBvdmVydmlld0Rhc2hib2FyZDogb3ZlcnZpZXdEYXNoYm9hcmQsXG4gICAgfSk7XG5cbiAgICBuZXcgQmFja2VuZERhc2hib2FyZCh0aGlzLCAnQmFja2VuZERhc2hib2FyZCcsIHtcbiAgICAgIHBhY2thZ2VEYXRhLFxuICAgICAgZGFzaGJvYXJkTmFtZTogcHJvcHMuYmFja2VuZERhc2hib2FyZE5hbWUsXG4gICAgICBwYWNrYWdlU291cmNlcyxcbiAgICAgIGluZ2VzdGlvbjogdGhpcy5pbmdlc3Rpb24sXG4gICAgICBpbnZlbnRvcnksXG4gICAgICBvcmNoZXN0cmF0aW9uLFxuICAgICAgZGVueUxpc3QsXG4gICAgICBwYWNrYWdlU3RhdHMsXG4gICAgICB2ZXJzaW9uVHJhY2tlcixcbiAgICAgIHJlbGVhc2VOb3RlcyxcbiAgICB9KTtcblxuICAgIC8vIGFkZCBkb21haW4gcmVkaXJlY3RzXG4gICAgaWYgKHByb3BzLmRvbWFpbikge1xuICAgICAgZm9yIChjb25zdCByZWRpcmN0U291cmNlIG9mIHByb3BzLmFkZGl0aW9uYWxEb21haW5zID8/IFtdKSB7XG4gICAgICAgIG5ldyBEb21haW5SZWRpcmVjdChcbiAgICAgICAgICB0aGlzLFxuICAgICAgICAgIGBSZWRpcmVjdC0ke3JlZGlyY3RTb3VyY2UuaG9zdGVkWm9uZS56b25lTmFtZX1gLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHNvdXJjZTogcmVkaXJjdFNvdXJjZSxcbiAgICAgICAgICAgIHRhcmdldERvbWFpbk5hbWU6IHByb3BzLmRvbWFpbj8uem9uZS56b25lTmFtZSxcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChwcm9wcy5hZGRpdGlvbmFsRG9tYWlucyAmJiBwcm9wcy5hZGRpdGlvbmFsRG9tYWlucy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAnQ2Fubm90IHNwZWNpZnkgXCJkb21haW5SZWRpcmVjdHNcIiBpZiBhIGRvbWFpbiBpcyBub3Qgc3BlY2lmaWVkJ1xuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChwcm9wcy5hcHBSZWdpc3RyeUFwcGxpY2F0aW9uID8/IHRydWUpIHtcbiAgICAgIGNvbnN0IGFwcGxpY2F0aW9uID0gbmV3IEFwcGxpY2F0aW9uKHRoaXMsICdBcHBsaWNhdGlvbicsIHtcbiAgICAgICAgYXBwbGljYXRpb25OYW1lOiAnQ29uc3RydWN0SHViJyxcbiAgICAgIH0pO1xuICAgICAgYXBwbGljYXRpb24uYXNzb2NpYXRlQXBwbGljYXRpb25XaXRoU3RhY2soU3RhY2sub2YodGhpcykpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgbGlzdCBvZiBhbGwgaGlnaC1zZXZlcml0eSBhbGFybXMgZnJvbSB0aGlzIENvbnN0cnVjdEh1YiBpbnN0YW5jZS5cbiAgICogVGhlc2Ugd2FycmFudCBpbW1lZGlhdGUgYXR0ZW50aW9uIGFzIHRoZXkgYXJlIGluZGljYXRpdmUgb2YgYSBzeXN0ZW0gaGVhbHRoXG4gICAqIGlzc3VlLlxuICAgKi9cbiAgcHVibGljIGdldCBoaWdoU2V2ZXJpdHlBbGFybXMoKTogY3cuSUFsYXJtW10ge1xuICAgIC8vIE5vdGU6IHRoZSBhcnJheSBpcyBhbHJlYWR5IHJldHVybmVkIGJ5LWNvcHkgYnkgTW9uaXRvcmluZywgc28gbm90IGNvcHlpbmcgYWdhaW4uXG4gICAgcmV0dXJuIHRoaXMubW9uaXRvcmluZy5oaWdoU2V2ZXJpdHlBbGFybXM7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIGxpc3Qgb2YgYWxsIGxvdy1zZXZlcml0eSBhbGFybXMgZnJvbSB0aGlzIENvbnN0cnVjdEh1YiBpbnN0YW5jZS5cbiAgICogVGhlc2UgZG8gbm90IG5lY2Vzc2l0YXRlIGltbWVkaWF0ZSBhdHRlbnRpb24sIGFzIHRoZXkgZG8gbm90IGhhdmUgZGlyZWN0XG4gICAqIGN1c3RvbWVyLXZpc2libGUgaW1wYWN0LCBvciBoYW5kbGluZyBpcyBub3QgdGltZS1zZW5zaXRpdmUuIFRoZXkgaW5kaWNhdGVcbiAgICogdGhhdCBzb21ldGhpbmcgdW51c3VhbCAobm90IG5lY2Vzc2FyaWx5IGJhZCkgaXMgaGFwcGVuaW5nLlxuICAgKi9cbiAgcHVibGljIGdldCBtZWRpdW1TZXZlcml0eUFsYXJtcygpOiBjdy5JQWxhcm1bXSB7XG4gICAgLy8gTm90ZTogdGhlIGFycmF5IGlzIGFscmVhZHkgcmV0dXJuZWQgYnktY29weSBieSBNb25pdG9yaW5nLCBzbyBub3QgY29weWluZyBhZ2Fpbi5cbiAgICByZXR1cm4gdGhpcy5tb25pdG9yaW5nLm1lZGl1bVNldmVyaXR5QWxhcm1zO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBsaXN0IG9mIGFsbCBsb3ctc2V2ZXJpdHkgYWxhcm1zIGZyb20gdGhpcyBDb25zdHJ1Y3RIdWIgaW5zdGFuY2UuXG4gICAqIFRoZXNlIGRvIG5vdCBuZWNlc3NpdGF0ZSBpbW1lZGlhdGUgYXR0ZW50aW9uLCBhcyB0aGV5IGRvIG5vdCBoYXZlIGRpcmVjdFxuICAgKiBjdXN0b21lci12aXNpYmxlIGltcGFjdCwgb3IgaGFuZGxpbmcgaXMgbm90IHRpbWUtc2Vuc2l0aXZlLiBUaGV5IGluZGljYXRlXG4gICAqIHRoYXQgc29tZXRoaW5nIHVudXN1YWwgKG5vdCBuZWNlc3NhcmlseSBiYWQpIGlzIGhhcHBlbmluZy5cbiAgICovXG4gIHB1YmxpYyBnZXQgbG93U2V2ZXJpdHlBbGFybXMoKTogY3cuSUFsYXJtW10ge1xuICAgIC8vIE5vdGU6IHRoZSBhcnJheSBpcyBhbHJlYWR5IHJldHVybmVkIGJ5LWNvcHkgYnkgTW9uaXRvcmluZywgc28gbm90IGNvcHlpbmcgYWdhaW4uXG4gICAgcmV0dXJuIHRoaXMubW9uaXRvcmluZy5sb3dTZXZlcml0eUFsYXJtcztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgbGlzdCBvZiBhbGwgYWxhcm1zIGNvbmZpZ3VyZWQgYnkgdGhpcyBDb25zdHJ1Y3RIdWIgaW5zdGFuY2UuXG4gICAqL1xuICBwdWJsaWMgZ2V0IGFsbEFsYXJtcygpOiBjdy5JQWxhcm1bXSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIC4uLnRoaXMuaGlnaFNldmVyaXR5QWxhcm1zLFxuICAgICAgLi4udGhpcy5sb3dTZXZlcml0eUFsYXJtcyxcbiAgICAgIC4uLnRoaXMubWVkaXVtU2V2ZXJpdHlBbGFybXMsXG4gICAgXTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZ3JhbnRQcmluY2lwYWwoKTogaWFtLklQcmluY2lwYWwge1xuICAgIHJldHVybiB0aGlzLmluZ2VzdGlvbi5ncmFudFByaW5jaXBhbDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaW5nZXN0aW9uUXVldWUoKTogc3FzLklRdWV1ZSB7XG4gICAgcmV0dXJuIHRoaXMuaW5nZXN0aW9uLnF1ZXVlO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVWcGMoXG4gICAgaXNvbGF0aW9uOiBJc29sYXRpb24sXG4gICAgY29kZUFydGlmYWN0OiBSZXBvc2l0b3J5IHwgdW5kZWZpbmVkXG4gICkge1xuICAgIGlmIChpc29sYXRpb24gPT09IElzb2xhdGlvbi5VTkxJTUlURURfSU5URVJORVRfQUNDRVNTKSB7XG4gICAgICByZXR1cm4geyB2cGM6IHVuZGVmaW5lZCwgdnBjRW5kcG9pbnRzOiB1bmRlZmluZWQsIHZwY1N1Ym5ldHM6IHVuZGVmaW5lZCB9O1xuICAgIH1cblxuICAgIGNvbnN0IHN1Ym5ldFR5cGUgPVxuICAgICAgaXNvbGF0aW9uID09PSBJc29sYXRpb24uTk9fSU5URVJORVRfQUNDRVNTXG4gICAgICAgID8gZWMyLlN1Ym5ldFR5cGUuUFJJVkFURV9JU09MQVRFRFxuICAgICAgICA6IGVjMi5TdWJuZXRUeXBlLlBSSVZBVEVfV0lUSF9FR1JFU1M7XG4gICAgY29uc3QgdnBjU3VibmV0cyA9IHsgc3VibmV0VHlwZSB9O1xuXG4gICAgY29uc3QgdnBjID0gbmV3IGVjMi5WcGModGhpcywgJ1ZQQycsIHtcbiAgICAgIGVuYWJsZURuc0hvc3RuYW1lczogdHJ1ZSxcbiAgICAgIGVuYWJsZURuc1N1cHBvcnQ6IHRydWUsXG4gICAgICAvLyBQcm92aXNpb24gbm8gTkFUIGdhdGV3YXlzIGlmIHdlIGFyZSBydW5uaW5nIElTT0xBVEVEICh3ZSB3b3VsZG4ndCBoYXZlIGEgcHVibGljIHN1Ym5ldClcbiAgICAgIG5hdEdhdGV3YXlzOlxuICAgICAgICBzdWJuZXRUeXBlID09PSBlYzIuU3VibmV0VHlwZS5QUklWQVRFX0lTT0xBVEVEID8gMCA6IHVuZGVmaW5lZCxcbiAgICAgIC8vIFByZS1hbGxvY2F0aW5nIFBVQkxJQyAvIFBSSVZBVEUgLyBJTlRFUk5BTCBzdWJuZXRzLCByZWdhcmRsZXNzIG9mIHVzZSwgc28gd2UgZG9uJ3QgY3JlYXRlXG4gICAgICAvLyBhIHdob2xlIG5ldyBWUEMgaWYgd2UgZXZlciBuZWVkIHRvIGludHJvZHVjZSBzdWJuZXRzIG9mIHRoZXNlIHR5cGVzLlxuICAgICAgc3VibmV0Q29uZmlndXJhdGlvbjogW1xuICAgICAgICAvLyBJZiB0aGVyZSBpcyBhIFBSSVZBVEUgc3VibmV0LCB0aGVyZSBtdXN0IGFsc28gaGF2ZSBhIFBVQkxJQyBzdWJuZXQgKGZvciBOQVQgZ2F0ZXdheXMpLlxuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ1B1YmxpYycsXG4gICAgICAgICAgc3VibmV0VHlwZTogZWMyLlN1Ym5ldFR5cGUuUFVCTElDLFxuICAgICAgICAgIHJlc2VydmVkOiBzdWJuZXRUeXBlID09PSBlYzIuU3VibmV0VHlwZS5QUklWQVRFX0lTT0xBVEVELFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ1ByaXZhdGUnLFxuICAgICAgICAgIHN1Ym5ldFR5cGU6IGVjMi5TdWJuZXRUeXBlLlBSSVZBVEVfV0lUSF9FR1JFU1MsXG4gICAgICAgICAgcmVzZXJ2ZWQ6IHN1Ym5ldFR5cGUgPT09IGVjMi5TdWJuZXRUeXBlLlBSSVZBVEVfSVNPTEFURUQsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAnSXNvbGF0ZWQnLFxuICAgICAgICAgIHN1Ym5ldFR5cGU6IGVjMi5TdWJuZXRUeXBlLlBSSVZBVEVfSVNPTEFURUQsXG4gICAgICAgICAgcmVzZXJ2ZWQ6IHN1Ym5ldFR5cGUgIT09IGVjMi5TdWJuZXRUeXBlLlBSSVZBVEVfSVNPTEFURUQsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuICAgIFRhZ3Mub2YodnBjLm5vZGUuZGVmYXVsdENoaWxkISkuYWRkKCdOYW1lJywgdnBjLm5vZGUucGF0aCk7XG5cbiAgICBjb25zdCBzZWN1cml0eUdyb3VwcyA9XG4gICAgICBzdWJuZXRUeXBlID09PSBlYzIuU3VibmV0VHlwZS5QUklWQVRFX1dJVEhfRUdSRVNTXG4gICAgICAgID8gY3JlYXRlUmVzdHJpY3RlZFNlY3VyaXR5R3JvdXBzKHRoaXMsIHZwYylcbiAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICAvLyBDcmVhdGluZyB0aGUgQ29kZUFydGlmYWN0IGVuZHBvaW50cyBvbmx5IGlmIGEgcmVwb3NpdG9yeSBpcyBwcmVzZW50LlxuICAgIGNvbnN0IGNvZGVBcnRpZmFjdEVuZHBvaW50cyA9IGNvZGVBcnRpZmFjdCAmJiB7XG4gICAgICBjb2RlQXJ0aWZhY3RBcGk6IHZwYy5hZGRJbnRlcmZhY2VFbmRwb2ludCgnQ29kZUFydGlmYWN0LkFQSScsIHtcbiAgICAgICAgcHJpdmF0ZURuc0VuYWJsZWQ6IGZhbHNlLFxuICAgICAgICBzZXJ2aWNlOiBuZXcgZWMyLkludGVyZmFjZVZwY0VuZHBvaW50QXdzU2VydmljZSgnY29kZWFydGlmYWN0LmFwaScpLFxuICAgICAgICBzdWJuZXRzOiB2cGNTdWJuZXRzLFxuICAgICAgICBzZWN1cml0eUdyb3VwcyxcbiAgICAgIH0pLFxuICAgICAgY29kZUFydGlmYWN0OiB2cGMuYWRkSW50ZXJmYWNlRW5kcG9pbnQoJ0NvZGVBcnRpZmFjdCcsIHtcbiAgICAgICAgcHJpdmF0ZURuc0VuYWJsZWQ6IHRydWUsXG4gICAgICAgIHNlcnZpY2U6IG5ldyBlYzIuSW50ZXJmYWNlVnBjRW5kcG9pbnRBd3NTZXJ2aWNlKFxuICAgICAgICAgICdjb2RlYXJ0aWZhY3QucmVwb3NpdG9yaWVzJ1xuICAgICAgICApLFxuICAgICAgICBzdWJuZXRzOiB2cGNTdWJuZXRzLFxuICAgICAgICBzZWN1cml0eUdyb3VwcyxcbiAgICAgIH0pLFxuICAgIH07XG5cbiAgICAvLyBXZSdsbCBvbmx5IHVzZSBWUEMgZW5kcG9pbnRzIGlmIHdlIGFyZSBjb25maWd1cmVkIHRvIHJ1biBpbiBhbiBJU09MQVRFRCBzdWJuZXQuXG4gICAgY29uc3QgdnBjRW5kcG9pbnRzID0ge1xuICAgICAgLi4uY29kZUFydGlmYWN0RW5kcG9pbnRzLFxuICAgICAgLy8gVGhpcyBpcyBuZWVkZWQgc28gdGhhdCBFQ1Mgd29ya2xvYWRzIGNhbiB1c2UgdGhlIGF3c2xvZ3MgZHJpdmVyXG4gICAgICBjbG91ZFdhdGNoTG9nczogdnBjLmFkZEludGVyZmFjZUVuZHBvaW50KCdDbG91ZFdhdGNoLkxvZ3MnLCB7XG4gICAgICAgIHByaXZhdGVEbnNFbmFibGVkOiB0cnVlLFxuICAgICAgICBzZXJ2aWNlOiBlYzIuSW50ZXJmYWNlVnBjRW5kcG9pbnRBd3NTZXJ2aWNlLkNMT1VEV0FUQ0hfTE9HUyxcbiAgICAgICAgc3VibmV0czogdnBjU3VibmV0cyxcbiAgICAgICAgc2VjdXJpdHlHcm91cHMsXG4gICAgICB9KSxcbiAgICAgIC8vIFRoZXNlIGFyZSBuZWVkZWQgZm9yIEVDUyB3b3JrbG9hZHMgdG8gYmUgYWJsZSB0byBwdWxsIGltYWdlc1xuICAgICAgZWNyQXBpOiB2cGMuYWRkSW50ZXJmYWNlRW5kcG9pbnQoJ0VDUi5BUEknLCB7XG4gICAgICAgIHByaXZhdGVEbnNFbmFibGVkOiB0cnVlLFxuICAgICAgICBzZXJ2aWNlOiBlYzIuSW50ZXJmYWNlVnBjRW5kcG9pbnRBd3NTZXJ2aWNlLkVDUixcbiAgICAgICAgc3VibmV0czogdnBjU3VibmV0cyxcbiAgICAgICAgc2VjdXJpdHlHcm91cHMsXG4gICAgICB9KSxcbiAgICAgIGVjcjogdnBjLmFkZEludGVyZmFjZUVuZHBvaW50KCdFQ1IuRG9ja2VyJywge1xuICAgICAgICBwcml2YXRlRG5zRW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgc2VydmljZTogZWMyLkludGVyZmFjZVZwY0VuZHBvaW50QXdzU2VydmljZS5FQ1JfRE9DS0VSLFxuICAgICAgICBzdWJuZXRzOiB2cGNTdWJuZXRzLFxuICAgICAgICBzZWN1cml0eUdyb3VwcyxcbiAgICAgIH0pLFxuICAgICAgLy8gVGhpcyBpcyBuZWVkZWQgKGFtb25nIG90aGVycykgZm9yIENvZGVBcnRpZmFjdCByZWdpc3RyeSB1c2FnZVxuICAgICAgczM6IHZwYy5hZGRHYXRld2F5RW5kcG9pbnQoJ1MzJywge1xuICAgICAgICBzZXJ2aWNlOiBlYzIuR2F0ZXdheVZwY0VuZHBvaW50QXdzU2VydmljZS5TMyxcbiAgICAgICAgc3VibmV0czogW3ZwY1N1Ym5ldHNdLFxuICAgICAgfSksXG4gICAgICAvLyBUaGlzIGlzIHVzZWZ1bCBmb3IgZ2V0dGluZyByZXN1bHRzIGZyb20gRUNTIHRhc2tzIHdpdGhpbiB3b3JrZmxvd3NcbiAgICAgIHN0ZXBGdW5jdGlvbnM6IHZwYy5hZGRJbnRlcmZhY2VFbmRwb2ludCgnU3RlcEZ1bmN0aW9ucycsIHtcbiAgICAgICAgcHJpdmF0ZURuc0VuYWJsZWQ6IHRydWUsXG4gICAgICAgIHNlcnZpY2U6IGVjMi5JbnRlcmZhY2VWcGNFbmRwb2ludEF3c1NlcnZpY2UuU1RFUF9GVU5DVElPTlMsXG4gICAgICAgIHN1Ym5ldHM6IHZwY1N1Ym5ldHMsXG4gICAgICAgIHNlY3VyaXR5R3JvdXBzLFxuICAgICAgfSksXG4gICAgfTtcblxuICAgIC8vIFRoZSBTMyBhY2Nlc3MgaXMgbmVjZXNzYXJ5IGZvciB0aGUgQ29kZUFydGlmYWN0IFJlcG9zaXRvcnkgYW5kIEVDUiBEb2NrZXJcbiAgICAvLyBlbmRwb2ludHMgdG8gYmUgdXNlZCAodGhleSBzZXJ2ZSBvYmplY3RzIGZyb20gUzMpLlxuICAgIHZwY0VuZHBvaW50cy5zMy5hZGRUb1BvbGljeShcbiAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBlZmZlY3Q6IEVmZmVjdC5BTExPVyxcbiAgICAgICAgYWN0aW9uczogWydzMzpHZXRPYmplY3QnXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgICAgLy8gVGhlIGluLXJlZ2lvbiBDb2RlQXJ0aWZhY3QgUzMgQnVja2V0XG4gICAgICAgICAgLi4uKGNvZGVBcnRpZmFjdCA/IFtgJHtjb2RlQXJ0aWZhY3QuczNCdWNrZXRBcm59LypgXSA6IFtdKSxcbiAgICAgICAgICAvLyBUaGUgaW4tcmVnaW9uIEVDUiBsYXllciBidWNrZXRcbiAgICAgICAgICBgYXJuOmF3czpzMzo6OnByb2QtJHtTdGFjay5vZih0aGlzKS5yZWdpb259LXN0YXJwb3J0LWxheWVyLWJ1Y2tldC8qYCxcbiAgICAgICAgXSxcbiAgICAgICAgLy8gSXQgZG9lc24ndCBzZWVtIHdlIGNhbiBjb25zdHJhaW4gcHJpbmNpcGFscyBmb3IgdGhlc2UgZ3JhbnRzICh1bmNsZWFyXG4gICAgICAgIC8vIHdoaWNoIHByaW5jaXBhbCB0aG9zZSBjYWxscyBhcmUgbWFkZSBmcm9tLCBvciBpZiB0aGF0IGlzIHNvbWV0aGluZyB3ZVxuICAgICAgICAvLyBjb3VsZCBuYW1lIGhlcmUpLlxuICAgICAgICBwcmluY2lwYWxzOiBbbmV3IEFueVByaW5jaXBhbCgpXSxcbiAgICAgICAgc2lkOiAnQWxsb3ctQ29kZUFydGlmYWN0LWFuZC1FQ1InLFxuICAgICAgfSlcbiAgICApO1xuXG4gICAgcmV0dXJuIHsgdnBjLCB2cGNFbmRwb2ludHMsIHZwY1N1Ym5ldHMsIHZwY1NlY3VyaXR5R3JvdXBzOiBzZWN1cml0eUdyb3VwcyB9O1xuICB9XG59XG5cbi8qKlxuICogSG93IHBvc3NpYmx5IHJpc2t5IG9wZXJhdGlvbnMgKHN1Y2ggYXMgZG9jLWdlbmVyYXRpb24sIHdoaWNoIHJlcXVpcmVzXG4gKiBpbnN0YWxsaW5nIHRoZSBpbmRleGVkIHBhY2thZ2VzIGluIG9yZGVyIHRvIHRyYW5zLWxpdGVyYXRlIHNhbXBsZSBjb2RlKSBhcmVcbiAqIGlzb2xhdGVkIHRvIG1pdGlnYXRlIHBvc3NpYmxlIGFyYml0cmFyeSBjb2RlIGV4ZWN1dGlvbiB2dWxuZXJhYmlsaXRpZXMgaW4gYW5kXG4gKiBhcm91bmQgYG5wbSBpbnN0YWxsYCBvciB0aGUgdHJhbnNsaXRlcmF0b3IncyB1c2Ugb2YgdGhlIFR5cGVTY3JpcHQgY29tcGlsZXIuXG4gKi9cbmV4cG9ydCBlbnVtIElzb2xhdGlvbiB7XG4gIC8qKlxuICAgKiBObyBpc29sYXRpb24gaXMgZG9uZSB3aGF0c29ldmVyLiBUaGUgZG9jLWdlbmVyYXRpb24gcHJvY2VzcyBzdGlsbCBpc1xuICAgKiBwcm92aXNpb25lZCB3aXRoIGxlYXN0LXByaXZpbGVnZSBwZXJtaXNzaW9ucywgYnV0IHJldGFpbnMgY29tcGxldGUgYWNjZXNzXG4gICAqIHRvIGludGVybmV0LlxuICAgKlxuICAgKiBXaGlsZSB0aGlzIG1heGltaXplcyB0aGUgY2hhbmNlcyBvZiBzdWNjZXNzZnVsbHkgaW5zdGFsbGluZyBwYWNrYWdlcyAoYW5kXG4gICAqIGhlbmNlIHN1Y2Nlc3NmdWxseSBnZW5lcmF0aW5nIGRvY3VtZW50YXRpb24gZm9yIHRob3NlKSwgaXQgaXMgYWxzbyB0aGVcbiAgICogbGVhc3Qgc2VjdXJlIG1vZGUgb2Ygb3BlcmF0aW9uLlxuICAgKlxuICAgKiBXZSBhZHZpc2UgeW91IG9ubHkgY29uc2lkZXIgdXNpbmcgdGhpcyBpc29sYXRpb24gbW9kZSBpZiB5b3UgYXJlIGhvc3RpbmcgYVxuICAgKiBDb25zdHJ1Y3RIdWIgaW5zdGFuY2UgdGhhdCBvbmx5IGluZGV4ZXMgdHJ1c3RlZCBwYWNrYWdlcyAoaW5jbHVkaW5nXG4gICAqIHRyYW5zaXRpdmUgZGVwZW5kZW5jaWVzKS5cbiAgICovXG4gIFVOTElNSVRFRF9JTlRFUk5FVF9BQ0NFU1MsXG5cbiAgLyoqXG4gICAqIFRoZSBzYW1lIHByb3RlY3Rpb25zIGFzIGBVTkxJTUlURURfSU5URVJORVRfQUNDRVNTYCwgZXhjZXB0IG91dGJvdW5kXG4gICAqIGludGVybmV0IGNvbm5lY3Rpb25zIGFyZSBsaW1pdGVkIHRvIElQIGFkZHJlc3MgcmFuZ2VzIGNvcnJlc3BvbmRpbmcgdG9cbiAgICogaG9zdGluZyBlbmRwb2ludHMgZm9yIG5wbWpzLmNvbS5cbiAgICovXG4gIExJTUlURURfSU5URVJORVRfQUNDRVNTLFxuXG4gIC8qKlxuICAgKiBUaGUgc2FtZSBwcm90ZWN0aW9ucyBhcyBgTElNSVRFRF9JTlRFUk5FVF9BQ0NFU1NgLCBleGNlcHQgYWxsIHJlbWFpbmluZ1xuICAgKiBpbnRlcm5ldCBhY2Nlc3MgaXMgcmVtb3ZlZC4gQWxsIHRyYWZmaWMgdG8gQVdTIHNlcnZpY2UgZW5kcG9pbnRzIGlzIHJvdXRlZFxuICAgKiB0aHJvdWdoIFZQQyBFbmRwb2ludHMsIGFzIHRoZSBjb21wdXRlIG5vZGVzIGFyZSBqYWlsZWQgaW4gYSBjb21wbGV0ZWx5XG4gICAqIGlzb2xhdGVkIFZQQy5cbiAgICpcbiAgICogVGhpcyBpcyB0aGUgbW9zdCBzZWN1cmUgKGFuZCByZWNvbW1lbmRlZCkgbW9kZSBvZiBvcGVyYXRpb24gZm9yXG4gICAqIENvbnN0cnVjdEh1YiBpbnN0YW5jZXMuXG4gICAqL1xuICBOT19JTlRFUk5FVF9BQ0NFU1MsXG59XG4iXX0=
|
|
@@ -42,6 +42,7 @@ class MonitoredCertificate extends constructs_1.Construct {
|
|
|
42
42
|
});
|
|
43
43
|
this.alarmAcmCertificateExpiresSoon =
|
|
44
44
|
this.metricAcmCertificateDaysToExpiry().createAlarm(this, 'ACMAlarm', {
|
|
45
|
+
alarmName: `${this.node.path}/ACMCertificateExpiresSoon`,
|
|
45
46
|
alarmDescription: `The ACM certificate ${props.certificate.certificateArn} will expire in less than 45 days!`,
|
|
46
47
|
comparisonOperator: aws_cloudwatch_1.ComparisonOperator.LESS_THAN_THRESHOLD,
|
|
47
48
|
evaluationPeriods: 1,
|
|
@@ -50,6 +51,7 @@ class MonitoredCertificate extends constructs_1.Construct {
|
|
|
50
51
|
});
|
|
51
52
|
this.alarmEndpointCertificateExpiresSoon =
|
|
52
53
|
this.metricEndpointCertificateDaysToExpiry().createAlarm(this, 'EndpointAlarm', {
|
|
54
|
+
alarmName: `${this.node.path}/EndpointCertificateExpiresSoon`,
|
|
53
55
|
alarmDescription: `The certificate used to serve ${props.domainName} will expire in less than 45 days!`,
|
|
54
56
|
comparisonOperator: aws_cloudwatch_1.ComparisonOperator.LESS_THAN_THRESHOLD,
|
|
55
57
|
evaluationPeriods: 1,
|
|
@@ -92,4 +94,4 @@ class MonitoredCertificate extends constructs_1.Construct {
|
|
|
92
94
|
}
|
|
93
95
|
}
|
|
94
96
|
exports.MonitoredCertificate = MonitoredCertificate;
|
|
95
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9uaXRvcmVkLWNlcnRpZmljYXRlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUE4QztBQUU5QywrREFPb0M7QUFDcEMsdURBQXdEO0FBQ3hELHVFQUFnRTtBQUNoRSwyQ0FBdUM7QUFDdkMsK0RBQTJEO0FBZ0MzRDs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFhLG9CQUFxQixTQUFRLHNCQUFTO0lBY2pELFlBQ0UsS0FBZ0IsRUFDaEIsRUFBVSxFQUNPLEtBQWdDO1FBRWpELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFGQSxVQUFLLEdBQUwsS0FBSyxDQUEyQjtRQUlqRCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsS0FBSyxDQUFDLFVBQVUsSUFBSSxjQUFjLENBQUM7UUFDN0QsSUFBSSxDQUFDLHVCQUF1QjtZQUMxQixLQUFLLENBQUMsZUFBZSxJQUFJLG1CQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUVwRCxNQUFNLGNBQWMsR0FBRyxJQUFJLHdDQUFrQixDQUFDLElBQUksRUFBRSxTQUFTLEVBQUU7WUFDN0QsV0FBVyxFQUFFLGdFQUFnRSxLQUFLLENBQUMsVUFBVSxFQUFFO1lBQy9GLFdBQVcsRUFBRTtnQkFDWCxtQkFBbUIsRUFBRSxPQUFPO2dCQUM1QixjQUFjLEVBQUUsS0FBSyxDQUFDLFVBQVU7Z0JBQ2hDLFdBQVcsRUFBRSxJQUFJLENBQUMsa0JBQWtCO2dCQUNwQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsdUJBQXVCO2FBQy9DO1lBQ0QsVUFBVSxFQUFFLElBQUs7WUFDakIsT0FBTyxFQUFFLHNCQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztTQUM3QixDQUFDLENBQUM7UUFDSCxNQUFNLElBQUksR0FBRyxJQUFJLGlCQUFJLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRTtZQUN0QyxXQUFXLEVBQUUsZ0JBQWdCLGNBQWMsQ0FBQyxZQUFZLDRCQUE0QjtZQUNwRixRQUFRLEVBQUUscUJBQVEsQ0FBQyxJQUFJLENBQUMsc0JBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDN0MsT0FBTyxFQUFFLENBQUMsSUFBSSxtQ0FBYyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1NBQzlDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyw4QkFBOEI7WUFDakMsSUFBSSxDQUFDLGdDQUFnQyxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBQ3BFLGdCQUFnQixFQUFFLHVCQUF1QixLQUFLLENBQUMsV0FBVyxDQUFDLGNBQWMsb0NBQW9DO2dCQUM3RyxrQkFBa0IsRUFBRSxtQ0FBa0IsQ0FBQyxtQkFBbUI7Z0JBQzFELGlCQUFpQixFQUFFLENBQUM7Z0JBQ3BCLFNBQVMsRUFBRSxFQUFFO2dCQUNiLGdCQUFnQixFQUFFLGlDQUFnQixDQUFDLFNBQVM7YUFDN0MsQ0FBQyxDQUFDO1FBRUwsSUFBSSxDQUFDLG1DQUFtQztZQUN0QyxJQUFJLENBQUMscUNBQXFDLEVBQUUsQ0FBQyxXQUFXLENBQ3RELElBQUksRUFDSixlQUFlLEVBQ2Y7Z0JBQ0UsZ0JBQWdCLEVBQUUsaUNBQWlDLEtBQUssQ0FBQyxVQUFVLG9DQUFvQztnQkFDdkcsa0JBQWtCLEVBQUUsbUNBQWtCLENBQUMsbUJBQW1CO2dCQUMxRCxpQkFBaUIsRUFBRSxDQUFDO2dCQUNwQixTQUFTLEVBQUUsRUFBRTtnQkFDYixnQkFBZ0IsRUFBRSxpQ0FBZ0IsQ0FBQyxTQUFTO2FBQzdDLENBQ0YsQ0FBQztRQUNKLDBFQUEwRTtRQUMxRSxJQUFJLENBQUMsbUNBQW1DLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLGdDQUFnQyxDQUFDLElBQW9CO1FBQzFELE9BQU8sSUFBSSx1QkFBTSxDQUFDO1lBQ2hCLE1BQU0sRUFBRSxzQkFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDeEIsU0FBUyxFQUFFLDBCQUFTLENBQUMsT0FBTztZQUM1QixHQUFHLElBQUk7WUFDUCxhQUFhLEVBQUUsRUFBRSxjQUFjLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsY0FBYyxFQUFFO1lBQ3hFLFNBQVMsRUFBRSx3QkFBd0I7WUFDbkMsVUFBVSxFQUFFLGNBQWM7WUFDMUIsTUFBTSxFQUFFLFdBQVcsRUFBRSxvRUFBb0U7U0FDMUYsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxxQ0FBcUMsQ0FBQyxJQUFvQjtRQUMvRCxPQUFPLElBQUksdUJBQU0sQ0FBQztZQUNoQixNQUFNLEVBQUUsc0JBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ3hCLFNBQVMsRUFBRSwwQkFBUyxDQUFDLE9BQU87WUFDNUIsR0FBRyxJQUFJO1lBQ1AsYUFBYSxFQUFFLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFO1lBQ3BELFNBQVMsRUFBRSxJQUFJLENBQUMsdUJBQXVCO1lBQ3ZDLFVBQVUsRUFBRSxJQUFJLENBQUMsa0JBQWtCO1NBQ3BDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQW5HRCxvREFtR0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEdXJhdGlvbiwgU3RhY2sgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBJQ2VydGlmaWNhdGUgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY2VydGlmaWNhdGVtYW5hZ2VyJztcbmltcG9ydCB7XG4gIEFsYXJtLFxuICBDb21wYXJpc29uT3BlcmF0b3IsXG4gIE1ldHJpYyxcbiAgTWV0cmljT3B0aW9ucyxcbiAgU3RhdGlzdGljLFxuICBUcmVhdE1pc3NpbmdEYXRhLFxufSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY2xvdWR3YXRjaCc7XG5pbXBvcnQgeyBSdWxlLCBTY2hlZHVsZSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1ldmVudHMnO1xuaW1wb3J0IHsgTGFtYmRhRnVuY3Rpb24gfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZXZlbnRzLXRhcmdldHMnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBDZXJ0aWZpY2F0ZU1vbml0b3IgfSBmcm9tICcuL2NlcnRpZmljYXRlLW1vbml0b3InO1xuXG5leHBvcnQgaW50ZXJmYWNlIE1vbml0b3JlZENlcnRpZmljYXRlUHJvcHMge1xuICAvKipcbiAgICogVGhlIEFDTSBjZXJ0aWZpY2F0ZSB0byBiZSBtb25pdG9yZWQuXG4gICAqL1xuICByZWFkb25seSBjZXJ0aWZpY2F0ZTogSUNlcnRpZmljYXRlO1xuXG4gIC8qKlxuICAgKiBUaGUgRE5TIG5hbWUgb2YgYW4gZW5kcG9pbnQgdXNpbmcgdGhlIG1vbml0b3JlZCBjZXJ0aWZpY2F0ZS5cbiAgICovXG4gIHJlYWRvbmx5IGRvbWFpbk5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWVzcGFjZSBvZiB0aGUgQ2xvdWRXYXRjaCBtZXRyaWMgZW1pdHRlZCBmb3IgdGhlIGFtb3VudCBvZiBkYXlzXG4gICAqIHJlbWFpbmluZyBiZWZvcmUgZXhwaXJ5IG9mIHRoZSBjZXJ0aWZpY2F0ZSB1c2VkIHRvIHNlcnZlIEhUVFBTIHRyYWZmaWMgb25cbiAgICogdGhlIGNvbmZpZ3VyZWQgYGRvbWFpbk5hbWVgLlxuICAgKlxuICAgKiBAZGVmYXVsdCBTdGFjay5vZih0aGlzKS5zdGFja05hbWVcbiAgICovXG4gIHJlYWRvbmx5IG1ldHJpY05hbWVzcGFjZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIENsb3VkV2F0Y2ggbWV0cmljIGVtaXR0ZWQgZm9yIHRoZSBhbW91bnQgb2YgZGF5cyByZW1haW5pbmdcbiAgICogYmVmb3JlIGV4cGlyeSBvZiB0aGUgY2VydGlmaWNhdGUgdXNlZCB0byBzZXJ2ZSBIVFRQUyB0cmFmZmljIG9uIHRoZVxuICAgKiBjb25maWd1cmVkIGBkb21haW5OYW1lYC5cbiAgICpcbiAgICogQGRlZmF1bHQgJ0RheXNUb0V4cGlyeSdcbiAgICovXG4gIHJlYWRvbmx5IG1ldHJpY05hbWU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogTW9uaXRvcnMgYW4gQUNNIGNlcnRpZmljYXRlJ3MgZXhwaXJhdGlvbiBkYXRlLiBUcmFja3MgdGhlIGRheXMgdG8gZXhwaXJ5XG4gKiBtZXRyaWMgcHVibGlzaGVkIGJ5IEFDTSAodW50aWwgdGhlIGNlcnRpZmljYXRlIGhhcyBleHBpcmVkKSwgYW5kIGFsc29cbiAqIGluc3BlY3RzIHRoZSBjZXJ0aWZpY2F0ZSB1c2VkIGJ5IHRoZSBwcm92aWRlZCBgZG9tYWluTmFtZWAgZW5kcG9pbnQgZm9yXG4gKiBzZXJ2aW5nIEhUVFBTIHdlYnBhZ2VzLlxuICpcbiAqIFRoZXNlIGVuc3VyZSBBQ00gY2VydGlmaWNhdGVzIGFyZSByb3RhdGVkIGJ5IHRoZSB0aW1lIGF1dG9tYXRlZCByZW5ld2FsIHdvdWxkXG4gKiBoYXZlIGhhcHBlbmVkICg2MCB0byA0NSBkYXlzIHByaW9yIHRvIGV4cGlyYXRpb24pLCBhbmQgdGhhdCB0aGUgZW5kcG9pbnQgaXNcbiAqIHVwZGF0ZWQgdG8gYSByZW5ld2VkIGNlcnRpZmljYXRlIGluIGR1ZSB0aW1lLlxuICovXG5leHBvcnQgY2xhc3MgTW9uaXRvcmVkQ2VydGlmaWNhdGUgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICAvKipcbiAgICogQWxhcm1zIHdoZW4gdGhlIEFDTSBjZXJ0aWZpY2F0ZSBleHBpcnkgaXMgbGVzcyB0aGFuIDQ1IGRheXMgZnJvbSBub3cuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYWxhcm1BY21DZXJ0aWZpY2F0ZUV4cGlyZXNTb29uOiBBbGFybTtcblxuICAvKipcbiAgICogQWxhcm1zIHdoZW4gdGhlIEVuZHBvaW50IGNlcnRpZmljYXRlIGV4cGlyeSBpcyBsZXNzIHRoYW4gNDUgZGF5cyBmcm9tIG5vdy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBhbGFybUVuZHBvaW50Q2VydGlmaWNhdGVFeHBpcmVzU29vbjogQWxhcm07XG5cbiAgcHJpdmF0ZSByZWFkb25seSBlbmRwb2ludE1ldHJpY05hbWU6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBlbmRwb2ludE1ldHJpY05hbWVzcGFjZTogc3RyaW5nO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJpdmF0ZSByZWFkb25seSBwcm9wczogTW9uaXRvcmVkQ2VydGlmaWNhdGVQcm9wc1xuICApIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgdGhpcy5lbmRwb2ludE1ldHJpY05hbWUgPSBwcm9wcy5tZXRyaWNOYW1lID8/ICdEYXlzVG9FeHBpcnknO1xuICAgIHRoaXMuZW5kcG9pbnRNZXRyaWNOYW1lc3BhY2UgPVxuICAgICAgcHJvcHMubWV0cmljTmFtZXNwYWNlID8/IFN0YWNrLm9mKHRoaXMpLnN0YWNrTmFtZTtcblxuICAgIGNvbnN0IGR5bmFtaWNNb25pdG9yID0gbmV3IENlcnRpZmljYXRlTW9uaXRvcih0aGlzLCAnTW9uaXRvcicsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBgTW9uaXRvcnMgdGhlIGRheXMgdG8gZXhwaXJ5IG9mIHRoZSBjZXJ0aWZpY2F0ZSB1c2VkIHRvIHNlcnZlICR7cHJvcHMuZG9tYWluTmFtZX1gLFxuICAgICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgQVdTX0VNRl9FTlZJUk9OTUVOVDogJ0xvY2FsJyxcbiAgICAgICAgSFRUUFNfRU5EUE9JTlQ6IHByb3BzLmRvbWFpbk5hbWUsXG4gICAgICAgIE1FVFJJQ19OQU1FOiB0aGlzLmVuZHBvaW50TWV0cmljTmFtZSxcbiAgICAgICAgTUVUUklDX05BTUVTUEFDRTogdGhpcy5lbmRwb2ludE1ldHJpY05hbWVzcGFjZSxcbiAgICAgIH0sXG4gICAgICBtZW1vcnlTaXplOiAxXzAyNCxcbiAgICAgIHRpbWVvdXQ6IER1cmF0aW9uLm1pbnV0ZXMoNSksXG4gICAgfSk7XG4gICAgY29uc3QgcnVsZSA9IG5ldyBSdWxlKHRoaXMsICdTY2hlZHVsZScsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBgRXhlY3V0ZXMgdGhlICR7ZHluYW1pY01vbml0b3IuZnVuY3Rpb25OYW1lfSBmdW5jdGlvbiBldmVyeSAzMCBtaW51dGVzYCxcbiAgICAgIHNjaGVkdWxlOiBTY2hlZHVsZS5yYXRlKER1cmF0aW9uLm1pbnV0ZXMoMzApKSxcbiAgICAgIHRhcmdldHM6IFtuZXcgTGFtYmRhRnVuY3Rpb24oZHluYW1pY01vbml0b3IpXSxcbiAgICB9KTtcblxuICAgIHRoaXMuYWxhcm1BY21DZXJ0aWZpY2F0ZUV4cGlyZXNTb29uID1cbiAgICAgIHRoaXMubWV0cmljQWNtQ2VydGlmaWNhdGVEYXlzVG9FeHBpcnkoKS5jcmVhdGVBbGFybSh0aGlzLCAnQUNNQWxhcm0nLCB7XG4gICAgICAgIGFsYXJtRGVzY3JpcHRpb246IGBUaGUgQUNNIGNlcnRpZmljYXRlICR7cHJvcHMuY2VydGlmaWNhdGUuY2VydGlmaWNhdGVBcm59IHdpbGwgZXhwaXJlIGluIGxlc3MgdGhhbiA0NSBkYXlzIWAsXG4gICAgICAgIGNvbXBhcmlzb25PcGVyYXRvcjogQ29tcGFyaXNvbk9wZXJhdG9yLkxFU1NfVEhBTl9USFJFU0hPTEQsXG4gICAgICAgIGV2YWx1YXRpb25QZXJpb2RzOiAxLFxuICAgICAgICB0aHJlc2hvbGQ6IDQ1LFxuICAgICAgICB0cmVhdE1pc3NpbmdEYXRhOiBUcmVhdE1pc3NpbmdEYXRhLkJSRUFDSElORyxcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5hbGFybUVuZHBvaW50Q2VydGlmaWNhdGVFeHBpcmVzU29vbiA9XG4gICAgICB0aGlzLm1ldHJpY0VuZHBvaW50Q2VydGlmaWNhdGVEYXlzVG9FeHBpcnkoKS5jcmVhdGVBbGFybShcbiAgICAgICAgdGhpcyxcbiAgICAgICAgJ0VuZHBvaW50QWxhcm0nLFxuICAgICAgICB7XG4gICAgICAgICAgYWxhcm1EZXNjcmlwdGlvbjogYFRoZSBjZXJ0aWZpY2F0ZSB1c2VkIHRvIHNlcnZlICR7cHJvcHMuZG9tYWluTmFtZX0gd2lsbCBleHBpcmUgaW4gbGVzcyB0aGFuIDQ1IGRheXMhYCxcbiAgICAgICAgICBjb21wYXJpc29uT3BlcmF0b3I6IENvbXBhcmlzb25PcGVyYXRvci5MRVNTX1RIQU5fVEhSRVNIT0xELFxuICAgICAgICAgIGV2YWx1YXRpb25QZXJpb2RzOiAxLFxuICAgICAgICAgIHRocmVzaG9sZDogNDUsXG4gICAgICAgICAgdHJlYXRNaXNzaW5nRGF0YTogVHJlYXRNaXNzaW5nRGF0YS5CUkVBQ0hJTkcsXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgLy8gRW5zdXJlIHdlIGRvbid0IGFsYXJtIGJlZm9yZSB0aGUgZnVuY3Rpb24ncyB0cmlnZ2VyIGhhcyBiZWVuIGNyZWF0ZWQuLi5cbiAgICB0aGlzLmFsYXJtRW5kcG9pbnRDZXJ0aWZpY2F0ZUV4cGlyZXNTb29uLm5vZGUuYWRkRGVwZW5kZW5jeShydWxlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgcmVtYWluaW5nIGRheXMgYmVmb3JlIHRoZSBtb25pdG9yZWQgY2VydGlmaWNhdGUgZXhwaXJlcywgYXMgZmFyIGFzIEFDTVxuICAgKiBpcyBjb25jZXJuZWQuIFRoaXMgbWV0cmljIGlzIG5vIGxvbmdlciBlbWl0dGVkIGFmdGVyIHRoZSBjZXJ0aWZpY2F0ZSBoYXNcbiAgICogZXhwaXJlZCAoYWxhcm1zIHNob3VsZCB0cmVhdCBtaXNzaW5nIGRhdGEgYXMgYDw9IDBgKS5cbiAgICovXG4gIHB1YmxpYyBtZXRyaWNBY21DZXJ0aWZpY2F0ZURheXNUb0V4cGlyeShvcHRzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIG5ldyBNZXRyaWMoe1xuICAgICAgcGVyaW9kOiBEdXJhdGlvbi5kYXlzKDEpLFxuICAgICAgc3RhdGlzdGljOiBTdGF0aXN0aWMuTUlOSU1VTSxcbiAgICAgIC4uLm9wdHMsXG4gICAgICBkaW1lbnNpb25zTWFwOiB7IENlcnRpZmljYXRlQXJuOiB0aGlzLnByb3BzLmNlcnRpZmljYXRlLmNlcnRpZmljYXRlQXJuIH0sXG4gICAgICBuYW1lc3BhY2U6ICdBV1MvQ2VydGlmaWNhdGVNYW5hZ2VyJyxcbiAgICAgIG1ldHJpY05hbWU6ICdEYXlzVG9FeHBpcnknLFxuICAgICAgcmVnaW9uOiAndXMtZWFzdC0xJywgLy8gPC0gQUNNIENlcnRpZmljYXRlcyBmb3IgQ2xvdWRGcm9udCBkaXN0cmlidXRpb25zIGFyZSBpbiB1cy1lYXN0LTFcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgcmVtYWluaW5nIGRheXMgYmVmb3JlIHRoZSBjZXJ0aWZpY2F0ZSBzZXJ2ZWQgYnkgdGhlIGNvbmZpZ3VyZWRcbiAgICogYGRvbWFpbk5hbWVgIGV4cGlyZXMuIFRoaXMgbWV0cmljIGlzIHB1Ymxpc2hlZCBhcyAwIGlmIHRoZSBjZXJ0aWZpY2F0ZSBoYXNcbiAgICogYWxyZWFkeSBleHBpcmVkLlxuICAgKi9cbiAgcHVibGljIG1ldHJpY0VuZHBvaW50Q2VydGlmaWNhdGVEYXlzVG9FeHBpcnkob3B0cz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWMge1xuICAgIHJldHVybiBuZXcgTWV0cmljKHtcbiAgICAgIHBlcmlvZDogRHVyYXRpb24uZGF5cygxKSxcbiAgICAgIHN0YXRpc3RpYzogU3RhdGlzdGljLk1JTklNVU0sXG4gICAgICAuLi5vcHRzLFxuICAgICAgZGltZW5zaW9uc01hcDogeyBEb21haW5OYW1lOiB0aGlzLnByb3BzLmRvbWFpbk5hbWUgfSxcbiAgICAgIG5hbWVzcGFjZTogdGhpcy5lbmRwb2ludE1ldHJpY05hbWVzcGFjZSxcbiAgICAgIG1ldHJpY05hbWU6IHRoaXMuZW5kcG9pbnRNZXRyaWNOYW1lLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9uaXRvcmVkLWNlcnRpZmljYXRlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUE4QztBQUU5QywrREFPb0M7QUFDcEMsdURBQXdEO0FBQ3hELHVFQUFnRTtBQUNoRSwyQ0FBdUM7QUFDdkMsK0RBQTJEO0FBZ0MzRDs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFhLG9CQUFxQixTQUFRLHNCQUFTO0lBY2pELFlBQ0UsS0FBZ0IsRUFDaEIsRUFBVSxFQUNPLEtBQWdDO1FBRWpELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFGQSxVQUFLLEdBQUwsS0FBSyxDQUEyQjtRQUlqRCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsS0FBSyxDQUFDLFVBQVUsSUFBSSxjQUFjLENBQUM7UUFDN0QsSUFBSSxDQUFDLHVCQUF1QjtZQUMxQixLQUFLLENBQUMsZUFBZSxJQUFJLG1CQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUVwRCxNQUFNLGNBQWMsR0FBRyxJQUFJLHdDQUFrQixDQUFDLElBQUksRUFBRSxTQUFTLEVBQUU7WUFDN0QsV0FBVyxFQUFFLGdFQUFnRSxLQUFLLENBQUMsVUFBVSxFQUFFO1lBQy9GLFdBQVcsRUFBRTtnQkFDWCxtQkFBbUIsRUFBRSxPQUFPO2dCQUM1QixjQUFjLEVBQUUsS0FBSyxDQUFDLFVBQVU7Z0JBQ2hDLFdBQVcsRUFBRSxJQUFJLENBQUMsa0JBQWtCO2dCQUNwQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsdUJBQXVCO2FBQy9DO1lBQ0QsVUFBVSxFQUFFLElBQUs7WUFDakIsT0FBTyxFQUFFLHNCQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztTQUM3QixDQUFDLENBQUM7UUFDSCxNQUFNLElBQUksR0FBRyxJQUFJLGlCQUFJLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRTtZQUN0QyxXQUFXLEVBQUUsZ0JBQWdCLGNBQWMsQ0FBQyxZQUFZLDRCQUE0QjtZQUNwRixRQUFRLEVBQUUscUJBQVEsQ0FBQyxJQUFJLENBQUMsc0JBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDN0MsT0FBTyxFQUFFLENBQUMsSUFBSSxtQ0FBYyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1NBQzlDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyw4QkFBOEI7WUFDakMsSUFBSSxDQUFDLGdDQUFnQyxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBQ3BFLFNBQVMsRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSw0QkFBNEI7Z0JBQ3hELGdCQUFnQixFQUFFLHVCQUF1QixLQUFLLENBQUMsV0FBVyxDQUFDLGNBQWMsb0NBQW9DO2dCQUM3RyxrQkFBa0IsRUFBRSxtQ0FBa0IsQ0FBQyxtQkFBbUI7Z0JBQzFELGlCQUFpQixFQUFFLENBQUM7Z0JBQ3BCLFNBQVMsRUFBRSxFQUFFO2dCQUNiLGdCQUFnQixFQUFFLGlDQUFnQixDQUFDLFNBQVM7YUFDN0MsQ0FBQyxDQUFDO1FBRUwsSUFBSSxDQUFDLG1DQUFtQztZQUN0QyxJQUFJLENBQUMscUNBQXFDLEVBQUUsQ0FBQyxXQUFXLENBQ3RELElBQUksRUFDSixlQUFlLEVBQ2Y7Z0JBQ0UsU0FBUyxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLGlDQUFpQztnQkFDN0QsZ0JBQWdCLEVBQUUsaUNBQWlDLEtBQUssQ0FBQyxVQUFVLG9DQUFvQztnQkFDdkcsa0JBQWtCLEVBQUUsbUNBQWtCLENBQUMsbUJBQW1CO2dCQUMxRCxpQkFBaUIsRUFBRSxDQUFDO2dCQUNwQixTQUFTLEVBQUUsRUFBRTtnQkFDYixnQkFBZ0IsRUFBRSxpQ0FBZ0IsQ0FBQyxTQUFTO2FBQzdDLENBQ0YsQ0FBQztRQUNKLDBFQUEwRTtRQUMxRSxJQUFJLENBQUMsbUNBQW1DLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLGdDQUFnQyxDQUFDLElBQW9CO1FBQzFELE9BQU8sSUFBSSx1QkFBTSxDQUFDO1lBQ2hCLE1BQU0sRUFBRSxzQkFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDeEIsU0FBUyxFQUFFLDBCQUFTLENBQUMsT0FBTztZQUM1QixHQUFHLElBQUk7WUFDUCxhQUFhLEVBQUUsRUFBRSxjQUFjLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsY0FBYyxFQUFFO1lBQ3hFLFNBQVMsRUFBRSx3QkFBd0I7WUFDbkMsVUFBVSxFQUFFLGNBQWM7WUFDMUIsTUFBTSxFQUFFLFdBQVcsRUFBRSxvRUFBb0U7U0FDMUYsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxxQ0FBcUMsQ0FBQyxJQUFvQjtRQUMvRCxPQUFPLElBQUksdUJBQU0sQ0FBQztZQUNoQixNQUFNLEVBQUUsc0JBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ3hCLFNBQVMsRUFBRSwwQkFBUyxDQUFDLE9BQU87WUFDNUIsR0FBRyxJQUFJO1lBQ1AsYUFBYSxFQUFFLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFO1lBQ3BELFNBQVMsRUFBRSxJQUFJLENBQUMsdUJBQXVCO1lBQ3ZDLFVBQVUsRUFBRSxJQUFJLENBQUMsa0JBQWtCO1NBQ3BDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQXJHRCxvREFxR0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEdXJhdGlvbiwgU3RhY2sgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBJQ2VydGlmaWNhdGUgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY2VydGlmaWNhdGVtYW5hZ2VyJztcbmltcG9ydCB7XG4gIEFsYXJtLFxuICBDb21wYXJpc29uT3BlcmF0b3IsXG4gIE1ldHJpYyxcbiAgTWV0cmljT3B0aW9ucyxcbiAgU3RhdGlzdGljLFxuICBUcmVhdE1pc3NpbmdEYXRhLFxufSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY2xvdWR3YXRjaCc7XG5pbXBvcnQgeyBSdWxlLCBTY2hlZHVsZSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1ldmVudHMnO1xuaW1wb3J0IHsgTGFtYmRhRnVuY3Rpb24gfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZXZlbnRzLXRhcmdldHMnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBDZXJ0aWZpY2F0ZU1vbml0b3IgfSBmcm9tICcuL2NlcnRpZmljYXRlLW1vbml0b3InO1xuXG5leHBvcnQgaW50ZXJmYWNlIE1vbml0b3JlZENlcnRpZmljYXRlUHJvcHMge1xuICAvKipcbiAgICogVGhlIEFDTSBjZXJ0aWZpY2F0ZSB0byBiZSBtb25pdG9yZWQuXG4gICAqL1xuICByZWFkb25seSBjZXJ0aWZpY2F0ZTogSUNlcnRpZmljYXRlO1xuXG4gIC8qKlxuICAgKiBUaGUgRE5TIG5hbWUgb2YgYW4gZW5kcG9pbnQgdXNpbmcgdGhlIG1vbml0b3JlZCBjZXJ0aWZpY2F0ZS5cbiAgICovXG4gIHJlYWRvbmx5IGRvbWFpbk5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWVzcGFjZSBvZiB0aGUgQ2xvdWRXYXRjaCBtZXRyaWMgZW1pdHRlZCBmb3IgdGhlIGFtb3VudCBvZiBkYXlzXG4gICAqIHJlbWFpbmluZyBiZWZvcmUgZXhwaXJ5IG9mIHRoZSBjZXJ0aWZpY2F0ZSB1c2VkIHRvIHNlcnZlIEhUVFBTIHRyYWZmaWMgb25cbiAgICogdGhlIGNvbmZpZ3VyZWQgYGRvbWFpbk5hbWVgLlxuICAgKlxuICAgKiBAZGVmYXVsdCBTdGFjay5vZih0aGlzKS5zdGFja05hbWVcbiAgICovXG4gIHJlYWRvbmx5IG1ldHJpY05hbWVzcGFjZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIENsb3VkV2F0Y2ggbWV0cmljIGVtaXR0ZWQgZm9yIHRoZSBhbW91bnQgb2YgZGF5cyByZW1haW5pbmdcbiAgICogYmVmb3JlIGV4cGlyeSBvZiB0aGUgY2VydGlmaWNhdGUgdXNlZCB0byBzZXJ2ZSBIVFRQUyB0cmFmZmljIG9uIHRoZVxuICAgKiBjb25maWd1cmVkIGBkb21haW5OYW1lYC5cbiAgICpcbiAgICogQGRlZmF1bHQgJ0RheXNUb0V4cGlyeSdcbiAgICovXG4gIHJlYWRvbmx5IG1ldHJpY05hbWU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogTW9uaXRvcnMgYW4gQUNNIGNlcnRpZmljYXRlJ3MgZXhwaXJhdGlvbiBkYXRlLiBUcmFja3MgdGhlIGRheXMgdG8gZXhwaXJ5XG4gKiBtZXRyaWMgcHVibGlzaGVkIGJ5IEFDTSAodW50aWwgdGhlIGNlcnRpZmljYXRlIGhhcyBleHBpcmVkKSwgYW5kIGFsc29cbiAqIGluc3BlY3RzIHRoZSBjZXJ0aWZpY2F0ZSB1c2VkIGJ5IHRoZSBwcm92aWRlZCBgZG9tYWluTmFtZWAgZW5kcG9pbnQgZm9yXG4gKiBzZXJ2aW5nIEhUVFBTIHdlYnBhZ2VzLlxuICpcbiAqIFRoZXNlIGVuc3VyZSBBQ00gY2VydGlmaWNhdGVzIGFyZSByb3RhdGVkIGJ5IHRoZSB0aW1lIGF1dG9tYXRlZCByZW5ld2FsIHdvdWxkXG4gKiBoYXZlIGhhcHBlbmVkICg2MCB0byA0NSBkYXlzIHByaW9yIHRvIGV4cGlyYXRpb24pLCBhbmQgdGhhdCB0aGUgZW5kcG9pbnQgaXNcbiAqIHVwZGF0ZWQgdG8gYSByZW5ld2VkIGNlcnRpZmljYXRlIGluIGR1ZSB0aW1lLlxuICovXG5leHBvcnQgY2xhc3MgTW9uaXRvcmVkQ2VydGlmaWNhdGUgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICAvKipcbiAgICogQWxhcm1zIHdoZW4gdGhlIEFDTSBjZXJ0aWZpY2F0ZSBleHBpcnkgaXMgbGVzcyB0aGFuIDQ1IGRheXMgZnJvbSBub3cuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYWxhcm1BY21DZXJ0aWZpY2F0ZUV4cGlyZXNTb29uOiBBbGFybTtcblxuICAvKipcbiAgICogQWxhcm1zIHdoZW4gdGhlIEVuZHBvaW50IGNlcnRpZmljYXRlIGV4cGlyeSBpcyBsZXNzIHRoYW4gNDUgZGF5cyBmcm9tIG5vdy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBhbGFybUVuZHBvaW50Q2VydGlmaWNhdGVFeHBpcmVzU29vbjogQWxhcm07XG5cbiAgcHJpdmF0ZSByZWFkb25seSBlbmRwb2ludE1ldHJpY05hbWU6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBlbmRwb2ludE1ldHJpY05hbWVzcGFjZTogc3RyaW5nO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJpdmF0ZSByZWFkb25seSBwcm9wczogTW9uaXRvcmVkQ2VydGlmaWNhdGVQcm9wc1xuICApIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgdGhpcy5lbmRwb2ludE1ldHJpY05hbWUgPSBwcm9wcy5tZXRyaWNOYW1lID8/ICdEYXlzVG9FeHBpcnknO1xuICAgIHRoaXMuZW5kcG9pbnRNZXRyaWNOYW1lc3BhY2UgPVxuICAgICAgcHJvcHMubWV0cmljTmFtZXNwYWNlID8/IFN0YWNrLm9mKHRoaXMpLnN0YWNrTmFtZTtcblxuICAgIGNvbnN0IGR5bmFtaWNNb25pdG9yID0gbmV3IENlcnRpZmljYXRlTW9uaXRvcih0aGlzLCAnTW9uaXRvcicsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBgTW9uaXRvcnMgdGhlIGRheXMgdG8gZXhwaXJ5IG9mIHRoZSBjZXJ0aWZpY2F0ZSB1c2VkIHRvIHNlcnZlICR7cHJvcHMuZG9tYWluTmFtZX1gLFxuICAgICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgQVdTX0VNRl9FTlZJUk9OTUVOVDogJ0xvY2FsJyxcbiAgICAgICAgSFRUUFNfRU5EUE9JTlQ6IHByb3BzLmRvbWFpbk5hbWUsXG4gICAgICAgIE1FVFJJQ19OQU1FOiB0aGlzLmVuZHBvaW50TWV0cmljTmFtZSxcbiAgICAgICAgTUVUUklDX05BTUVTUEFDRTogdGhpcy5lbmRwb2ludE1ldHJpY05hbWVzcGFjZSxcbiAgICAgIH0sXG4gICAgICBtZW1vcnlTaXplOiAxXzAyNCxcbiAgICAgIHRpbWVvdXQ6IER1cmF0aW9uLm1pbnV0ZXMoNSksXG4gICAgfSk7XG4gICAgY29uc3QgcnVsZSA9IG5ldyBSdWxlKHRoaXMsICdTY2hlZHVsZScsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBgRXhlY3V0ZXMgdGhlICR7ZHluYW1pY01vbml0b3IuZnVuY3Rpb25OYW1lfSBmdW5jdGlvbiBldmVyeSAzMCBtaW51dGVzYCxcbiAgICAgIHNjaGVkdWxlOiBTY2hlZHVsZS5yYXRlKER1cmF0aW9uLm1pbnV0ZXMoMzApKSxcbiAgICAgIHRhcmdldHM6IFtuZXcgTGFtYmRhRnVuY3Rpb24oZHluYW1pY01vbml0b3IpXSxcbiAgICB9KTtcblxuICAgIHRoaXMuYWxhcm1BY21DZXJ0aWZpY2F0ZUV4cGlyZXNTb29uID1cbiAgICAgIHRoaXMubWV0cmljQWNtQ2VydGlmaWNhdGVEYXlzVG9FeHBpcnkoKS5jcmVhdGVBbGFybSh0aGlzLCAnQUNNQWxhcm0nLCB7XG4gICAgICAgIGFsYXJtTmFtZTogYCR7dGhpcy5ub2RlLnBhdGh9L0FDTUNlcnRpZmljYXRlRXhwaXJlc1Nvb25gLFxuICAgICAgICBhbGFybURlc2NyaXB0aW9uOiBgVGhlIEFDTSBjZXJ0aWZpY2F0ZSAke3Byb3BzLmNlcnRpZmljYXRlLmNlcnRpZmljYXRlQXJufSB3aWxsIGV4cGlyZSBpbiBsZXNzIHRoYW4gNDUgZGF5cyFgLFxuICAgICAgICBjb21wYXJpc29uT3BlcmF0b3I6IENvbXBhcmlzb25PcGVyYXRvci5MRVNTX1RIQU5fVEhSRVNIT0xELFxuICAgICAgICBldmFsdWF0aW9uUGVyaW9kczogMSxcbiAgICAgICAgdGhyZXNob2xkOiA0NSxcbiAgICAgICAgdHJlYXRNaXNzaW5nRGF0YTogVHJlYXRNaXNzaW5nRGF0YS5CUkVBQ0hJTkcsXG4gICAgICB9KTtcblxuICAgIHRoaXMuYWxhcm1FbmRwb2ludENlcnRpZmljYXRlRXhwaXJlc1Nvb24gPVxuICAgICAgdGhpcy5tZXRyaWNFbmRwb2ludENlcnRpZmljYXRlRGF5c1RvRXhwaXJ5KCkuY3JlYXRlQWxhcm0oXG4gICAgICAgIHRoaXMsXG4gICAgICAgICdFbmRwb2ludEFsYXJtJyxcbiAgICAgICAge1xuICAgICAgICAgIGFsYXJtTmFtZTogYCR7dGhpcy5ub2RlLnBhdGh9L0VuZHBvaW50Q2VydGlmaWNhdGVFeHBpcmVzU29vbmAsXG4gICAgICAgICAgYWxhcm1EZXNjcmlwdGlvbjogYFRoZSBjZXJ0aWZpY2F0ZSB1c2VkIHRvIHNlcnZlICR7cHJvcHMuZG9tYWluTmFtZX0gd2lsbCBleHBpcmUgaW4gbGVzcyB0aGFuIDQ1IGRheXMhYCxcbiAgICAgICAgICBjb21wYXJpc29uT3BlcmF0b3I6IENvbXBhcmlzb25PcGVyYXRvci5MRVNTX1RIQU5fVEhSRVNIT0xELFxuICAgICAgICAgIGV2YWx1YXRpb25QZXJpb2RzOiAxLFxuICAgICAgICAgIHRocmVzaG9sZDogNDUsXG4gICAgICAgICAgdHJlYXRNaXNzaW5nRGF0YTogVHJlYXRNaXNzaW5nRGF0YS5CUkVBQ0hJTkcsXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgLy8gRW5zdXJlIHdlIGRvbid0IGFsYXJtIGJlZm9yZSB0aGUgZnVuY3Rpb24ncyB0cmlnZ2VyIGhhcyBiZWVuIGNyZWF0ZWQuLi5cbiAgICB0aGlzLmFsYXJtRW5kcG9pbnRDZXJ0aWZpY2F0ZUV4cGlyZXNTb29uLm5vZGUuYWRkRGVwZW5kZW5jeShydWxlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgcmVtYWluaW5nIGRheXMgYmVmb3JlIHRoZSBtb25pdG9yZWQgY2VydGlmaWNhdGUgZXhwaXJlcywgYXMgZmFyIGFzIEFDTVxuICAgKiBpcyBjb25jZXJuZWQuIFRoaXMgbWV0cmljIGlzIG5vIGxvbmdlciBlbWl0dGVkIGFmdGVyIHRoZSBjZXJ0aWZpY2F0ZSBoYXNcbiAgICogZXhwaXJlZCAoYWxhcm1zIHNob3VsZCB0cmVhdCBtaXNzaW5nIGRhdGEgYXMgYDw9IDBgKS5cbiAgICovXG4gIHB1YmxpYyBtZXRyaWNBY21DZXJ0aWZpY2F0ZURheXNUb0V4cGlyeShvcHRzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIG5ldyBNZXRyaWMoe1xuICAgICAgcGVyaW9kOiBEdXJhdGlvbi5kYXlzKDEpLFxuICAgICAgc3RhdGlzdGljOiBTdGF0aXN0aWMuTUlOSU1VTSxcbiAgICAgIC4uLm9wdHMsXG4gICAgICBkaW1lbnNpb25zTWFwOiB7IENlcnRpZmljYXRlQXJuOiB0aGlzLnByb3BzLmNlcnRpZmljYXRlLmNlcnRpZmljYXRlQXJuIH0sXG4gICAgICBuYW1lc3BhY2U6ICdBV1MvQ2VydGlmaWNhdGVNYW5hZ2VyJyxcbiAgICAgIG1ldHJpY05hbWU6ICdEYXlzVG9FeHBpcnknLFxuICAgICAgcmVnaW9uOiAndXMtZWFzdC0xJywgLy8gPC0gQUNNIENlcnRpZmljYXRlcyBmb3IgQ2xvdWRGcm9udCBkaXN0cmlidXRpb25zIGFyZSBpbiB1cy1lYXN0LTFcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgcmVtYWluaW5nIGRheXMgYmVmb3JlIHRoZSBjZXJ0aWZpY2F0ZSBzZXJ2ZWQgYnkgdGhlIGNvbmZpZ3VyZWRcbiAgICogYGRvbWFpbk5hbWVgIGV4cGlyZXMuIFRoaXMgbWV0cmljIGlzIHB1Ymxpc2hlZCBhcyAwIGlmIHRoZSBjZXJ0aWZpY2F0ZSBoYXNcbiAgICogYWxyZWFkeSBleHBpcmVkLlxuICAgKi9cbiAgcHVibGljIG1ldHJpY0VuZHBvaW50Q2VydGlmaWNhdGVEYXlzVG9FeHBpcnkob3B0cz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWMge1xuICAgIHJldHVybiBuZXcgTWV0cmljKHtcbiAgICAgIHBlcmlvZDogRHVyYXRpb24uZGF5cygxKSxcbiAgICAgIHN0YXRpc3RpYzogU3RhdGlzdGljLk1JTklNVU0sXG4gICAgICAuLi5vcHRzLFxuICAgICAgZGltZW5zaW9uc01hcDogeyBEb21haW5OYW1lOiB0aGlzLnByb3BzLmRvbWFpbk5hbWUgfSxcbiAgICAgIG5hbWVzcGFjZTogdGhpcy5lbmRwb2ludE1ldHJpY05hbWVzcGFjZSxcbiAgICAgIG1ldHJpY05hbWU6IHRoaXMuZW5kcG9pbnRNZXRyaWNOYW1lLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
@@ -2,7 +2,7 @@ import * as cw from 'aws-cdk-lib/aws-cloudwatch';
|
|
|
2
2
|
import { Watchful } from 'cdk-watchful';
|
|
3
3
|
import { Construct } from 'constructs';
|
|
4
4
|
import { IMonitoring } from './api';
|
|
5
|
-
import { AlarmActions, AlarmSeverity } from '../api';
|
|
5
|
+
import { AlarmActions, AlarmOverride, AlarmSeverity } from '../api';
|
|
6
6
|
/**
|
|
7
7
|
* Props for the monitoring construct.
|
|
8
8
|
*/
|
|
@@ -11,6 +11,13 @@ export interface MonitoringProps {
|
|
|
11
11
|
* ARNs of alarm actions to take for various severities.
|
|
12
12
|
*/
|
|
13
13
|
readonly alarmActions?: AlarmActions;
|
|
14
|
+
/**
|
|
15
|
+
* Per-alarm overrides keyed by the alarm's CloudWatch display name relative
|
|
16
|
+
* to the `ConstructHub` construct.
|
|
17
|
+
*/
|
|
18
|
+
readonly alarmOverrides?: {
|
|
19
|
+
[alarmName: string]: AlarmOverride;
|
|
20
|
+
};
|
|
14
21
|
}
|
|
15
22
|
/**
|
|
16
23
|
* Construct hub monitoring.
|
|
@@ -23,6 +30,8 @@ export interface MonitoringProps {
|
|
|
23
30
|
*/
|
|
24
31
|
export declare class Monitoring extends Construct implements IMonitoring {
|
|
25
32
|
private alarmActions?;
|
|
33
|
+
private alarmOverrides;
|
|
34
|
+
private matchedOverrideKeys;
|
|
26
35
|
private _highSeverityAlarms;
|
|
27
36
|
private _mediumSeverityAlarms;
|
|
28
37
|
private _lowSeverityAlarms;
|
|
@@ -39,8 +48,24 @@ export declare class Monitoring extends Construct implements IMonitoring {
|
|
|
39
48
|
* @param alarm
|
|
40
49
|
*/
|
|
41
50
|
addHighSeverityAlarm(title: string, alarm: cw.AlarmBase): void;
|
|
42
|
-
addLowSeverityAlarm(
|
|
43
|
-
addMediumSeverityAlarm(
|
|
51
|
+
addLowSeverityAlarm(title: string, alarm: cw.AlarmBase): void;
|
|
52
|
+
addMediumSeverityAlarm(title: string, alarm: cw.AlarmBase): void;
|
|
53
|
+
/**
|
|
54
|
+
* If `alarm` has an entry in `alarmOverrides`, fully wire it (actions,
|
|
55
|
+
* dashboard placement, bookkeeping) according to the override and return
|
|
56
|
+
* true. Otherwise return false to let the caller fall back to default
|
|
57
|
+
* bucket-based behavior.
|
|
58
|
+
*
|
|
59
|
+
* Lookup is by the alarm's CloudWatch display name (the `alarmName`
|
|
60
|
+
* property), with the `${stack}/${ConstructHub-id}/` prefix stripped — so
|
|
61
|
+
* customers write the same string they see in tickets.
|
|
62
|
+
*/
|
|
63
|
+
private applyOverride;
|
|
64
|
+
/**
|
|
65
|
+
* Returns the alarm's CloudWatch display name with the `${ConstructHub.path}/`
|
|
66
|
+
* prefix stripped, or undefined if the alarm has no explicit name.
|
|
67
|
+
*/
|
|
68
|
+
private relativeAlarmName;
|
|
44
69
|
get highSeverityAlarms(): cw.AlarmBase[];
|
|
45
70
|
get mediumSeverityAlarms(): cw.AlarmBase[];
|
|
46
71
|
get lowSeverityAlarms(): cw.AlarmBase[];
|
package/lib/monitoring/index.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Monitoring = void 0;
|
|
4
4
|
exports.addAlarm = addAlarm;
|
|
5
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
5
6
|
const cw = require("aws-cdk-lib/aws-cloudwatch");
|
|
6
7
|
const cdk_watchful_1 = require("cdk-watchful");
|
|
7
8
|
const constructs_1 = require("constructs");
|
|
@@ -19,7 +20,9 @@ const api_1 = require("../api");
|
|
|
19
20
|
class Monitoring extends constructs_1.Construct {
|
|
20
21
|
constructor(scope, id, props = {}) {
|
|
21
22
|
super(scope, id);
|
|
23
|
+
this.matchedOverrideKeys = new Set();
|
|
22
24
|
this.alarmActions = props.alarmActions;
|
|
25
|
+
this.alarmOverrides = props.alarmOverrides ?? {};
|
|
23
26
|
this.watchful = new cdk_watchful_1.Watchful(this, 'Watchful', {
|
|
24
27
|
// alarms that come from watchful are all considered normal severity
|
|
25
28
|
alarmActionArns: this.alarmActions?.normalSeverity
|
|
@@ -33,12 +36,21 @@ class Monitoring extends constructs_1.Construct {
|
|
|
33
36
|
this._lowSeverityAlarms = [];
|
|
34
37
|
this._mediumSeverityAlarms = [];
|
|
35
38
|
this.highSeverityDashboard = new cw.Dashboard(this, 'HighSeverityDashboard');
|
|
39
|
+
// Surface override keys that didn't match any alarm at synth time, so
|
|
40
|
+
// typos fail before deploy.
|
|
41
|
+
this.node.addValidation({
|
|
42
|
+
validate: () => Object.keys(this.alarmOverrides)
|
|
43
|
+
.filter((k) => !this.matchedOverrideKeys.has(k))
|
|
44
|
+
.map((k) => `alarmOverrides: '${k}' did not match any alarm. See ConstructHubProps.alarmOverrides for the list of overridable alarm names.`),
|
|
45
|
+
});
|
|
36
46
|
}
|
|
37
47
|
/**
|
|
38
48
|
* Adds a high-severity alarm. If this alarm goes off, the action specified in `highSeverityAlarmActionArn`
|
|
39
49
|
* @param alarm
|
|
40
50
|
*/
|
|
41
51
|
addHighSeverityAlarm(title, alarm) {
|
|
52
|
+
if (this.applyOverride(title, alarm, api_1.AlarmSeverity.HIGH))
|
|
53
|
+
return;
|
|
42
54
|
const highSeverityActionArn = this.alarmActions?.highSeverity;
|
|
43
55
|
if (highSeverityActionArn) {
|
|
44
56
|
alarm.addAlarmAction({
|
|
@@ -56,7 +68,9 @@ class Monitoring extends constructs_1.Construct {
|
|
|
56
68
|
}));
|
|
57
69
|
this._highSeverityAlarms.push(alarm);
|
|
58
70
|
}
|
|
59
|
-
addLowSeverityAlarm(
|
|
71
|
+
addLowSeverityAlarm(title, alarm) {
|
|
72
|
+
if (this.applyOverride(title, alarm, api_1.AlarmSeverity.LOW))
|
|
73
|
+
return;
|
|
60
74
|
const normalSeverityActionArn = this.alarmActions?.normalSeverity;
|
|
61
75
|
if (normalSeverityActionArn) {
|
|
62
76
|
alarm.addAlarmAction({
|
|
@@ -69,7 +83,9 @@ class Monitoring extends constructs_1.Construct {
|
|
|
69
83
|
}
|
|
70
84
|
this._lowSeverityAlarms.push(alarm);
|
|
71
85
|
}
|
|
72
|
-
addMediumSeverityAlarm(
|
|
86
|
+
addMediumSeverityAlarm(title, alarm) {
|
|
87
|
+
if (this.applyOverride(title, alarm, api_1.AlarmSeverity.MEDIUM))
|
|
88
|
+
return;
|
|
73
89
|
const actionArn = this.alarmActions?.mediumSeverity;
|
|
74
90
|
if (actionArn) {
|
|
75
91
|
alarm.addAlarmAction({
|
|
@@ -82,6 +98,66 @@ class Monitoring extends constructs_1.Construct {
|
|
|
82
98
|
}
|
|
83
99
|
this._mediumSeverityAlarms.push(alarm);
|
|
84
100
|
}
|
|
101
|
+
/**
|
|
102
|
+
* If `alarm` has an entry in `alarmOverrides`, fully wire it (actions,
|
|
103
|
+
* dashboard placement, bookkeeping) according to the override and return
|
|
104
|
+
* true. Otherwise return false to let the caller fall back to default
|
|
105
|
+
* bucket-based behavior.
|
|
106
|
+
*
|
|
107
|
+
* Lookup is by the alarm's CloudWatch display name (the `alarmName`
|
|
108
|
+
* property), with the `${stack}/${ConstructHub-id}/` prefix stripped — so
|
|
109
|
+
* customers write the same string they see in tickets.
|
|
110
|
+
*/
|
|
111
|
+
applyOverride(title, alarm, defaultSeverity) {
|
|
112
|
+
const relative = this.relativeAlarmName(alarm);
|
|
113
|
+
if (!relative)
|
|
114
|
+
return false;
|
|
115
|
+
const override = this.alarmOverrides[relative];
|
|
116
|
+
if (!override)
|
|
117
|
+
return false;
|
|
118
|
+
this.matchedOverrideKeys.add(relative);
|
|
119
|
+
const severity = override.severity ?? defaultSeverity;
|
|
120
|
+
if (override.actions && override.actions.length > 0) {
|
|
121
|
+
for (const action of override.actions) {
|
|
122
|
+
alarm.addAlarmAction(action);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
const arn = severity === api_1.AlarmSeverity.HIGH ? this.alarmActions?.highSeverity :
|
|
127
|
+
severity === api_1.AlarmSeverity.MEDIUM ? this.alarmActions?.mediumSeverity :
|
|
128
|
+
this.alarmActions?.normalSeverity;
|
|
129
|
+
if (arn)
|
|
130
|
+
alarm.addAlarmAction({ bind: () => ({ alarmActionArn: arn }) });
|
|
131
|
+
const action = severity === api_1.AlarmSeverity.HIGH ? this.alarmActions?.highSeverityAction :
|
|
132
|
+
severity === api_1.AlarmSeverity.MEDIUM ? this.alarmActions?.mediumSeverityAction :
|
|
133
|
+
this.alarmActions?.normalSeverityAction;
|
|
134
|
+
if (action)
|
|
135
|
+
alarm.addAlarmAction(action);
|
|
136
|
+
}
|
|
137
|
+
if (severity === api_1.AlarmSeverity.HIGH) {
|
|
138
|
+
this.highSeverityDashboard.addWidgets(new cw.AlarmWidget({ alarm, title, width: 24 }));
|
|
139
|
+
this._highSeverityAlarms.push(alarm);
|
|
140
|
+
}
|
|
141
|
+
else if (severity === api_1.AlarmSeverity.MEDIUM) {
|
|
142
|
+
this._mediumSeverityAlarms.push(alarm);
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
this._lowSeverityAlarms.push(alarm);
|
|
146
|
+
}
|
|
147
|
+
return true;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Returns the alarm's CloudWatch display name with the `${ConstructHub.path}/`
|
|
151
|
+
* prefix stripped, or undefined if the alarm has no explicit name.
|
|
152
|
+
*/
|
|
153
|
+
relativeAlarmName(alarm) {
|
|
154
|
+
const cfn = alarm.node.defaultChild;
|
|
155
|
+
const fullName = cfn?.alarmName;
|
|
156
|
+
if (!fullName || aws_cdk_lib_1.Token.isUnresolved(fullName))
|
|
157
|
+
return undefined;
|
|
158
|
+
const prefix = `${this.node.scope.node.path}/`;
|
|
159
|
+
return fullName.startsWith(prefix) ? fullName.slice(prefix.length) : undefined;
|
|
160
|
+
}
|
|
85
161
|
get highSeverityAlarms() {
|
|
86
162
|
return [...this._highSeverityAlarms];
|
|
87
163
|
}
|
|
@@ -124,4 +200,4 @@ function addAlarm(title, alarm, severity, monitoring) {
|
|
|
124
200
|
throw new Error(`Unknown alarm severity: ${severity}`);
|
|
125
201
|
}
|
|
126
202
|
}
|
|
127
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9uaXRvcmluZy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUE0SkEsNEJBY0M7QUExS0QsaURBQWlEO0FBQ2pELCtDQUF3QztBQUN4QywyQ0FBdUM7QUFFdkMsNkNBQXlDO0FBQ3pDLGdDQUFxRDtBQVlyRDs7Ozs7Ozs7R0FRRztBQUNILE1BQWEsVUFBVyxTQUFRLHNCQUFTO0lBZXZDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsUUFBeUIsRUFBRTtRQUNuRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQztRQUV2QyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksdUJBQVEsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFO1lBQzdDLG9FQUFvRTtZQUNwRSxlQUFlLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxjQUFjO2dCQUNoRCxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQztnQkFDcEMsQ0FBQyxDQUFDLEVBQUU7WUFDTixZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxvQkFBb0I7Z0JBQ25ELENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsb0JBQW9CLENBQUM7Z0JBQzFDLENBQUMsQ0FBQyxFQUFFO1NBQ1AsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsa0JBQWtCLEdBQUcsRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxFQUFFLENBQUM7UUFFaEMsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksRUFBRSxDQUFDLFNBQVMsQ0FDM0MsSUFBSSxFQUNKLHVCQUF1QixDQUN4QixDQUFDO0lBQ0osQ0FBQztJQUVE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QUNFLEdBQUc7WUFDSCxXQUFXLEVBQUUsSUFBSTtTQUNsQixDQUNGLENBQUM7UUFFRixJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxJQUFJLFNBQVMsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUQsQ0FBQztDQUNGO0FBaElELGdDQWdJQztBQUVELFNBQWdCLFFBQVEsQ0FBQyxLQUFhLEVBQUUsS0FBZSxFQUFFLFFBQXVCLEVBQUUsVUFBdUI7SUFDdkcsUUFBUSxRQUFRLEVBQUUsQ0FBQztRQUNqQixLQUFLLG1CQUFhLENBQUMsSUFBSTtZQUNyQixVQUFVLENBQUMsb0JBQW9CLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzlDLE1BQU07UUFDUixLQUFLLG1CQUFhLENBQUMsR0FBRztZQUNwQixVQUFVLENBQUMsbUJBQW1CLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzdDLE1BQU07UUFDUixLQUFLLG1CQUFhLENBQUMsTUFBTTtZQUN2QixVQUFVLENBQUMsc0JBQXNCLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ2hELE1BQU07UUFDUjtZQUNFLE1BQU0sSUFBSSxLQUFLLENBQUMsMkJBQTJCLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDM0QsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjdyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY2xvdWR3YXRjaCc7XG5pbXBvcnQgeyBXYXRjaGZ1bCB9IGZyb20gJ2Nkay13YXRjaGZ1bCc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IElNb25pdG9yaW5nIH0gZnJvbSAnLi9hcGknO1xuaW1wb3J0IHsgV2ViQ2FuYXJ5IH0gZnJvbSAnLi93ZWItY2FuYXJ5JztcbmltcG9ydCB7IEFsYXJtQWN0aW9ucywgQWxhcm1TZXZlcml0eSB9IGZyb20gJy4uL2FwaSc7XG5cbi8qKlxuICogUHJvcHMgZm9yIHRoZSBtb25pdG9yaW5nIGNvbnN0cnVjdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNb25pdG9yaW5nUHJvcHMge1xuICAvKipcbiAgICogQVJOcyBvZiBhbGFybSBhY3Rpb25zIHRvIHRha2UgZm9yIHZhcmlvdXMgc2V2ZXJpdGllcy5cbiAgICovXG4gIHJlYWRvbmx5IGFsYXJtQWN0aW9ucz86IEFsYXJtQWN0aW9ucztcbn1cblxuLyoqXG4gKiBDb25zdHJ1Y3QgaHViIG1vbml0b3JpbmcuXG4gKlxuICogVGhpcyBjb25zdHJ1Y3QgdXNlcyBjZGstd2F0Y2hmdWwgdG8gYXV0b21hdGljYWxseSBnZW5lcmF0ZSBhIGRhc2hib2FyZCBhbmQgYVxuICogc2V0IG9mIHN0YW5kYXJkIGFsYXJtcyBmb3IgY29tbW9uIHJlc291cmNlcy5cbiAqXG4gKiBDb21wb25lbnRzIHNob3VsZCB1c2UgdGhlIEFQSXMgb2YgdGhpcyBtb2R1bGUgdG8gYWRkIHdhdGNoZnVsIG1vbml0b3JzLFxuICogYW5kIGFkZCBjYW5hcmllcyBhbmQgYWxhcm1zIGFzIG5lZWRlZC5cbiAqL1xuZXhwb3J0IGNsYXNzIE1vbml0b3JpbmcgZXh0ZW5kcyBDb25zdHJ1Y3QgaW1wbGVtZW50cyBJTW9uaXRvcmluZyB7XG4gIHByaXZhdGUgYWxhcm1BY3Rpb25zPzogQWxhcm1BY3Rpb25zO1xuICBwcml2YXRlIF9oaWdoU2V2ZXJpdHlBbGFybXM6IGN3LkFsYXJtQmFzZVtdO1xuICBwcml2YXRlIF9tZWRpdW1TZXZlcml0eUFsYXJtczogY3cuQWxhcm1CYXNlW107XG4gIHByaXZhdGUgX2xvd1NldmVyaXR5QWxhcm1zOiBjdy5BbGFybUJhc2VbXTtcblxuICAvKipcbiAgICogQWxsb3dzIGFkZGluZyBhdXRvbWF0aWMgbW9uaXRvcmluZyB0byBzdGFuZGFyZCByZXNvdXJjZXMuIE5vdGUgdGhhdFxuICAgKiB3YXRjaGZ1bCBhbGFybXMgYXJlIGFsd2F5cyB0cmVhdGVkIGFzIF9ub3JtYWxfIHNldmVyaXR5LiBZb3UgY2FuIGFkZFxuICAgKiBoaWdoLXNldmVyaXR5IGFsYXJtIHZpYSBgYWRkSGlnaFNldmVyaXR5QWxhcm0oKWAuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgd2F0Y2hmdWw6IFdhdGNoZnVsO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgaGlnaFNldmVyaXR5RGFzaGJvYXJkOiBjdy5EYXNoYm9hcmQ7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IE1vbml0b3JpbmdQcm9wcyA9IHt9KSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIHRoaXMuYWxhcm1BY3Rpb25zID0gcHJvcHMuYWxhcm1BY3Rpb25zO1xuXG4gICAgdGhpcy53YXRjaGZ1bCA9IG5ldyBXYXRjaGZ1bCh0aGlzLCAnV2F0Y2hmdWwnLCB7XG4gICAgICAvLyBhbGFybXMgdGhhdCBjb21lIGZyb20gd2F0Y2hmdWwgYXJlIGFsbCBjb25zaWRlcmVkIG5vcm1hbCBzZXZlcml0eVxuICAgICAgYWxhcm1BY3Rpb25Bcm5zOiB0aGlzLmFsYXJtQWN0aW9ucz8ubm9ybWFsU2V2ZXJpdHlcbiAgICAgICAgPyBbdGhpcy5hbGFybUFjdGlvbnMubm9ybWFsU2V2ZXJpdHldXG4gICAgICAgIDogW10sXG4gICAgICBhbGFybUFjdGlvbnM6IHRoaXMuYWxhcm1BY3Rpb25zPy5ub3JtYWxTZXZlcml0eUFjdGlvblxuICAgICAgICA/IFt0aGlzLmFsYXJtQWN0aW9ucy5ub3JtYWxTZXZlcml0eUFjdGlvbl1cbiAgICAgICAgOiBbXSxcbiAgICB9KTtcblxuICAgIHRoaXMuX2hpZ2hTZXZlcml0eUFsYXJtcyA9IFtdO1xuICAgIHRoaXMuX2xvd1NldmVyaXR5QWxhcm1zID0gW107XG4gICAgdGhpcy5fbWVkaXVtU2V2ZXJpdHlBbGFybXMgPSBbXTtcblxuICAgIHRoaXMuaGlnaFNldmVyaXR5RGFzaGJvYXJkID0gbmV3IGN3LkRhc2hib2FyZChcbiAgICAgIHRoaXMsXG4gICAgICAnSGlnaFNldmVyaXR5RGFzaGJvYXJkJ1xuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIGhpZ2gtc2V2ZXJpdHkgYWxhcm0uIElmIHRoaXMgYWxhcm0gZ29lcyBvZmYsIHRoZSBhY3Rpb24gc3BlY2lmaWVkIGluIGBoaWdoU2V2ZXJpdHlBbGFybUFjdGlvbkFybmBcbiAgICogQHBhcmFtIGFsYXJtXG4gICAqL1xuICBwdWJsaWMgYWRkSGlnaFNldmVyaXR5QWxhcm0odGl0bGU6IHN0cmluZywgYWxhcm06IGN3LkFsYXJtQmFzZSkge1xuICAgIGNvbnN0IGhpZ2hTZXZlcml0eUFjdGlvbkFybiA9IHRoaXMuYWxhcm1BY3Rpb25zPy5oaWdoU2V2ZXJpdHk7XG4gICAgaWYgKGhpZ2hTZXZlcml0eUFjdGlvbkFybikge1xuICAgICAgYWxhcm0uYWRkQWxhcm1BY3Rpb24oe1xuICAgICAgICBiaW5kOiAoKSA9PiAoeyBhbGFybUFjdGlvbkFybjogaGlnaFNldmVyaXR5QWN0aW9uQXJuIH0pLFxuICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IGhpZ2hTZXZlcml0eUFjdGlvbiA9IHRoaXMuYWxhcm1BY3Rpb25zPy5oaWdoU2V2ZXJpdHlBY3Rpb247XG4gICAgaWYgKGhpZ2hTZXZlcml0eUFjdGlvbikge1xuICAgICAgYWxhcm0uYWRkQWxhcm1BY3Rpb24oaGlnaFNldmVyaXR5QWN0aW9uKTtcbiAgICB9XG5cbiAgICB0aGlzLmhpZ2hTZXZlcml0eURhc2hib2FyZC5hZGRXaWRnZXRzKFxuICAgICAgbmV3IGN3LkFsYXJtV2lkZ2V0KHtcbiAgICAgICAgYWxhcm0sXG4gICAgICAgIHRpdGxlLFxuICAgICAgICB3aWR0aDogMjQsXG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLl9oaWdoU2V2ZXJpdHlBbGFybXMucHVzaChhbGFybSk7XG4gIH1cblxuICBwdWJsaWMgYWRkTG93U2V2ZXJpdHlBbGFybShfdGl0bGU6IHN0cmluZywgYWxhcm06IGN3LkFsYXJtQmFzZSkge1xuICAgIGNvbnN0IG5vcm1hbFNldmVyaXR5QWN0aW9uQXJuID0gdGhpcy5hbGFybUFjdGlvbnM/Lm5vcm1hbFNldmVyaXR5O1xuICAgIGlmIChub3JtYWxTZXZlcml0eUFjdGlvbkFybikge1xuICAgICAgYWxhcm0uYWRkQWxhcm1BY3Rpb24oe1xuICAgICAgICBiaW5kOiAoKSA9PiAoeyBhbGFybUFjdGlvbkFybjogbm9ybWFsU2V2ZXJpdHlBY3Rpb25Bcm4gfSksXG4gICAgICB9KTtcbiAgICB9XG4gICAgY29uc3Qgbm9ybWFsU2V2ZXJpdHlBY3Rpb24gPSB0aGlzLmFsYXJtQWN0aW9ucz8ubm9ybWFsU2V2ZXJpdHlBY3Rpb247XG4gICAgaWYgKG5vcm1hbFNldmVyaXR5QWN0aW9uKSB7XG4gICAgICBhbGFybS5hZGRBbGFybUFjdGlvbihub3JtYWxTZXZlcml0eUFjdGlvbik7XG4gICAgfVxuICAgIHRoaXMuX2xvd1NldmVyaXR5QWxhcm1zLnB1c2goYWxhcm0pO1xuICB9XG5cbiAgcHVibGljIGFkZE1lZGl1bVNldmVyaXR5QWxhcm0oX3RpdGxlOiBzdHJpbmcsIGFsYXJtOiBjdy5BbGFybUJhc2UpIHtcbiAgICBjb25zdCBhY3Rpb25Bcm4gPSB0aGlzLmFsYXJtQWN0aW9ucz8ubWVkaXVtU2V2ZXJpdHk7XG4gICAgaWYgKGFjdGlvbkFybikge1xuICAgICAgYWxhcm0uYWRkQWxhcm1BY3Rpb24oe1xuICAgICAgICBiaW5kOiAoKSA9PiAoeyBhbGFybUFjdGlvbkFybjogYWN0aW9uQXJuIH0pLFxuICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuYWxhcm1BY3Rpb25zPy5tZWRpdW1TZXZlcml0eUFjdGlvbjtcbiAgICBpZiAoYWN0aW9uKSB7XG4gICAgICBhbGFybS5hZGRBbGFybUFjdGlvbihhY3Rpb24pO1xuICAgIH1cbiAgICB0aGlzLl9tZWRpdW1TZXZlcml0eUFsYXJtcy5wdXNoKGFsYXJtKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaGlnaFNldmVyaXR5QWxhcm1zKCkge1xuICAgIHJldHVybiBbLi4udGhpcy5faGlnaFNldmVyaXR5QWxhcm1zXTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbWVkaXVtU2V2ZXJpdHlBbGFybXMoKSB7XG4gICAgcmV0dXJuIFsuLi50aGlzLl9tZWRpdW1TZXZlcml0eUFsYXJtc107XG4gIH1cblxuICBwdWJsaWMgZ2V0IGxvd1NldmVyaXR5QWxhcm1zKCkge1xuICAgIHJldHVybiBbLi4udGhpcy5fbG93U2V2ZXJpdHlBbGFybXNdO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBjYW5hcnkgdGhhdCBwaW5ncyBhIGNlcnRhaW4gVVJMIGFuZCByYWlzZXMgYW4gYWxhcm0gaW4gY2FzZSB0aGUgVVJMXG4gICAqIHJlc3BvbmRzIHdpdGggYW4gZXJyb3Igb3ZlciA4MCUgb2YgdGhlIHRpbWVzLlxuICAgKlxuICAgKiBDYW5hcnkgZmFpbHVyZXMgYXJlIGFsd2F5cyBjb25zaWRlcmVkIGhpZ2gtc2V2ZXJpdHkgKGF0IHRoaXMgcG9pbnQpLlxuICAgKlxuICAgKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgY2FuYXJ5XG4gICAqIEBwYXJhbSB1cmwgVGhlIFVSTCB0byBwaW5nXG4gICAqL1xuICBwdWJsaWMgYWRkV2ViQ2FuYXJ5KG5hbWU6IHN0cmluZywgdXJsOiBzdHJpbmcpIHtcbiAgICBjb25zdCBjYW5hcnkgPSBuZXcgV2ViQ2FuYXJ5KFxuICAgICAgdGhpcyxcbiAgICAgIGBXZWJDYW5hcnkke25hbWUucmVwbGFjZSgvW15BLVowLTldL2dpLCAnJyl9YCxcbiAgICAgIHtcbiAgICAgICAgdXJsLFxuICAgICAgICBkaXNwbGF5TmFtZTogbmFtZSxcbiAgICAgIH1cbiAgICApO1xuXG4gICAgdGhpcy5hZGRIaWdoU2V2ZXJpdHlBbGFybShgJHtuYW1lfSBDYW5hcnlgLCBjYW5hcnkuYWxhcm0pO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhZGRBbGFybSh0aXRsZTogc3RyaW5nLCBhbGFybTogY3cuQWxhcm0sIHNldmVyaXR5OiBBbGFybVNldmVyaXR5LCBtb25pdG9yaW5nOiBJTW9uaXRvcmluZykge1xuICBzd2l0Y2ggKHNldmVyaXR5KSB7XG4gICAgY2FzZSBBbGFybVNldmVyaXR5LkhJR0g6XG4gICAgICBtb25pdG9yaW5nLmFkZEhpZ2hTZXZlcml0eUFsYXJtKHRpdGxlLCBhbGFybSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIEFsYXJtU2V2ZXJpdHkuTE9XOlxuICAgICAgbW9uaXRvcmluZy5hZGRMb3dTZXZlcml0eUFsYXJtKHRpdGxlLCBhbGFybSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIEFsYXJtU2V2ZXJpdHkuTUVESVVNOlxuICAgICAgbW9uaXRvcmluZy5hZGRNZWRpdW1TZXZlcml0eUFsYXJtKHRpdGxlLCBhbGFybSk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIGFsYXJtIHNldmVyaXR5OiAke3NldmVyaXR5fWApO1xuICB9XG59Il19
|
|
203
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9uaXRvcmluZy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUErUEEsNEJBY0M7QUE3UUQsNkNBQW9DO0FBQ3BDLGlEQUFpRDtBQUNqRCwrQ0FBd0M7QUFDeEMsMkNBQXVDO0FBRXZDLDZDQUF5QztBQUN6QyxnQ0FBb0U7QUFrQnBFOzs7Ozs7OztHQVFHO0FBQ0gsTUFBYSxVQUFXLFNBQVEsc0JBQVM7SUFpQnZDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsUUFBeUIsRUFBRTtRQUNuRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBZlgsd0JBQW1CLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztRQWlCOUMsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDLGNBQWMsSUFBSSxFQUFFLENBQUM7UUFFakQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLHVCQUFRLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRTtZQUM3QyxvRUFBb0U7WUFDcEUsZUFBZSxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsY0FBYztnQkFDaEQsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUM7Z0JBQ3BDLENBQUMsQ0FBQyxFQUFFO1lBQ04sWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsb0JBQW9CO2dCQUNuRCxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLG9CQUFvQixDQUFDO2dCQUMxQyxDQUFDLENBQUMsRUFBRTtTQUNQLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxtQkFBbUIsR0FBRyxFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMscUJBQXFCLEdB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Q0FBQyxFQUFFLEVBQzdDO1lBQ0UsR0FBRztZQUNILFdBQVcsRUFBRSxJQUFJO1NBQ2xCLENBQ0YsQ0FBQztRQUVGLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLElBQUksU0FBUyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1RCxDQUFDO0NBQ0Y7QUE1TkQsZ0NBNE5DO0FBRUQsU0FBZ0IsUUFBUSxDQUFDLEtBQWEsRUFBRSxLQUFlLEVBQUUsUUFBdUIsRUFBRSxVQUF1QjtJQUN2RyxRQUFRLFFBQVEsRUFBRSxDQUFDO1FBQ2pCLEtBQUssbUJBQWEsQ0FBQyxJQUFJO1lBQ3JCLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDOUMsTUFBTTtRQUNSLEtBQUssbUJBQWEsQ0FBQyxHQUFHO1lBQ3BCLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDN0MsTUFBTTtRQUNSLEtBQUssbUJBQWEsQ0FBQyxNQUFNO1lBQ3ZCLFVBQVUsQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDaEQsTUFBTTtRQUNSO1lBQ0UsTUFBTSxJQUFJLEtBQUssQ0FBQywyQkFBMkIsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUMzRCxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRva2VuIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0ICogYXMgY3cgZnJvbSAnYXdzLWNkay1saWIvYXdzLWNsb3Vkd2F0Y2gnO1xuaW1wb3J0IHsgV2F0Y2hmdWwgfSBmcm9tICdjZGstd2F0Y2hmdWwnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBJTW9uaXRvcmluZyB9IGZyb20gJy4vYXBpJztcbmltcG9ydCB7IFdlYkNhbmFyeSB9IGZyb20gJy4vd2ViLWNhbmFyeSc7XG5pbXBvcnQgeyBBbGFybUFjdGlvbnMsIEFsYXJtT3ZlcnJpZGUsIEFsYXJtU2V2ZXJpdHkgfSBmcm9tICcuLi9hcGknO1xuXG4vKipcbiAqIFByb3BzIGZvciB0aGUgbW9uaXRvcmluZyBjb25zdHJ1Y3QuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTW9uaXRvcmluZ1Byb3BzIHtcbiAgLyoqXG4gICAqIEFSTnMgb2YgYWxhcm0gYWN0aW9ucyB0byB0YWtlIGZvciB2YXJpb3VzIHNldmVyaXRpZXMuXG4gICAqL1xuICByZWFkb25seSBhbGFybUFjdGlvbnM/OiBBbGFybUFjdGlvbnM7XG5cbiAgLyoqXG4gICAqIFBlci1hbGFybSBvdmVycmlkZXMga2V5ZWQgYnkgdGhlIGFsYXJtJ3MgQ2xvdWRXYXRjaCBkaXNwbGF5IG5hbWUgcmVsYXRpdmVcbiAgICogdG8gdGhlIGBDb25zdHJ1Y3RIdWJgIGNvbnN0cnVjdC5cbiAgICovXG4gIHJlYWRvbmx5IGFsYXJtT3ZlcnJpZGVzPzogeyBbYWxhcm1OYW1lOiBzdHJpbmddOiBBbGFybU92ZXJyaWRlIH07XG59XG5cbi8qKlxuICogQ29uc3RydWN0IGh1YiBtb25pdG9yaW5nLlxuICpcbiAqIFRoaXMgY29uc3RydWN0IHVzZXMgY2RrLXdhdGNoZnVsIHRvIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGUgYSBkYXNoYm9hcmQgYW5kIGFcbiAqIHNldCBvZiBzdGFuZGFyZCBhbGFybXMgZm9yIGNvbW1vbiByZXNvdXJjZXMuXG4gKlxuICogQ29tcG9uZW50cyBzaG91bGQgdXNlIHRoZSBBUElzIG9mIHRoaXMgbW9kdWxlIHRvIGFkZCB3YXRjaGZ1bCBtb25pdG9ycyxcbiAqIGFuZCBhZGQgY2FuYXJpZXMgYW5kIGFsYXJtcyBhcyBuZWVkZWQuXG4gKi9cbmV4cG9ydCBjbGFzcyBNb25pdG9yaW5nIGV4dGVuZHMgQ29uc3RydWN0IGltcGxlbWVudHMgSU1vbml0b3Jpbmcge1xuICBwcml2YXRlIGFsYXJtQWN0aW9ucz86IEFsYXJtQWN0aW9ucztcbiAgcHJpdmF0ZSBhbGFybU92ZXJyaWRlczogeyBbYWxhcm1OYW1lOiBzdHJpbmddOiBBbGFybU92ZXJyaWRlIH07XG4gIHByaXZhdGUgbWF0Y2hlZE92ZXJyaWRlS2V5cyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICBwcml2YXRlIF9oaWdoU2V2ZXJpdHlBbGFybXM6IGN3LkFsYXJtQmFzZVtdO1xuICBwcml2YXRlIF9tZWRpdW1TZXZlcml0eUFsYXJtczogY3cuQWxhcm1CYXNlW107XG4gIHByaXZhdGUgX2xvd1NldmVyaXR5QWxhcm1zOiBjdy5BbGFybUJhc2VbXTtcblxuICAvKipcbiAgICogQWxsb3dzIGFkZGluZyBhdXRvbWF0aWMgbW9uaXRvcmluZyB0byBzdGFuZGFyZCByZXNvdXJjZXMuIE5vdGUgdGhhdFxuICAgKiB3YXRjaGZ1bCBhbGFybXMgYXJlIGFsd2F5cyB0cmVhdGVkIGFzIF9ub3JtYWxfIHNldmVyaXR5LiBZb3UgY2FuIGFkZFxuICAgKiBoaWdoLXNldmVyaXR5IGFsYXJtIHZpYSBgYWRkSGlnaFNldmVyaXR5QWxhcm0oKWAuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgd2F0Y2hmdWw6IFdhdGNoZnVsO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgaGlnaFNldmVyaXR5RGFzaGJvYXJkOiBjdy5EYXNoYm9hcmQ7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IE1vbml0b3JpbmdQcm9wcyA9IHt9KSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIHRoaXMuYWxhcm1BY3Rpb25zID0gcHJvcHMuYWxhcm1BY3Rpb25zO1xuICAgIHRoaXMuYWxhcm1PdmVycmlkZXMgPSBwcm9wcy5hbGFybU92ZXJyaWRlcyA/PyB7fTtcblxuICAgIHRoaXMud2F0Y2hmdWwgPSBuZXcgV2F0Y2hmdWwodGhpcywgJ1dhdGNoZnVsJywge1xuICAgICAgLy8gYWxhcm1zIHRoYXQgY29tZSBmcm9tIHdhdGNoZnVsIGFyZSBhbGwgY29uc2lkZXJlZCBub3JtYWwgc2V2ZXJpdHlcbiAgICAgIGFsYXJtQWN0aW9uQXJuczogdGhpcy5hbGFybUFjdGlvbnM/Lm5vcm1hbFNldmVyaXR5XG4gICAgICAgID8gW3RoaXMuYWxhcm1BY3Rpb25zLm5vcm1hbFNldmVyaXR5XVxuICAgICAgICA6IFtdLFxuICAgICAgYWxhcm1BY3Rpb25zOiB0aGlzLmFsYXJtQWN0aW9ucz8ubm9ybWFsU2V2ZXJpdHlBY3Rpb25cbiAgICAgICAgPyBbdGhpcy5hbGFybUFjdGlvbnMubm9ybWFsU2V2ZXJpdHlBY3Rpb25dXG4gICAgICAgIDogW10sXG4gICAgfSk7XG5cbiAgICB0aGlzLl9oaWdoU2V2ZXJpdHlBbGFybXMgPSBbXTtcbiAgICB0aGlzLl9sb3dTZXZlcml0eUFsYXJtcyA9IFtdO1xuICAgIHRoaXMuX21lZGl1bVNldmVyaXR5QWxhcm1zID0gW107XG5cbiAgICB0aGlzLmhpZ2hTZXZlcml0eURhc2hib2FyZCA9IG5ldyBjdy5EYXNoYm9hcmQoXG4gICAgICB0aGlzLFxuICAgICAgJ0hpZ2hTZXZlcml0eURhc2hib2FyZCdcbiAgICApO1xuXG4gICAgLy8gU3VyZmFjZSBvdmVycmlkZSBrZXlzIHRoYXQgZGlkbid0IG1hdGNoIGFueSBhbGFybSBhdCBzeW50aCB0aW1lLCBzb1xuICAgIC8vIHR5cG9zIGZhaWwgYmVmb3JlIGRlcGxveS5cbiAgICB0aGlzLm5vZGUuYWRkVmFsaWRhdGlvbih7XG4gICAgICB2YWxpZGF0ZTogKCkgPT5cbiAgICAgICAgT2JqZWN0LmtleXModGhpcy5hbGFybU92ZXJyaWRlcylcbiAgICAgICAgICAuZmlsdGVyKChrKSA9PiAhdGhpcy5tYXRjaGVkT3ZlcnJpZGVLZXlzLmhhcyhrKSlcbiAgICAgICAgICAubWFwKFxuICAgICAgICAgICAgKGspID0+XG4gICAgICAgICAgICAgIGBhbGFybU92ZXJyaWRlczogJyR7a30nIGRpZCBub3QgbWF0Y2ggYW55IGFsYXJtLiBTZWUgQ29uc3RydWN0SHViUHJvcHMuYWxhcm1PdmVycmlkZXMgZm9yIHRoZSBsaXN0IG9mIG92ZXJyaWRhYmxlIGFsYXJtIG5hbWVzLmBcbiAgICAgICAgICApLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBoaWdoLXNldmVyaXR5IGFsYXJtLiBJZiB0aGlzIGFsYXJtIGdvZXMgb2ZmLCB0aGUgYWN0aW9uIHNwZWNpZmllZCBpbiBgaGlnaFNldmVyaXR5QWxhcm1BY3Rpb25Bcm5gXG4gICAqIEBwYXJhbSBhbGFybVxuICAgKi9cbiAgcHVibGljIGFkZEhpZ2hTZXZlcml0eUFsYXJtKHRpdGxlOiBzdHJpbmcsIGFsYXJtOiBjdy5BbGFybUJhc2UpIHtcbiAgICBpZiAodGhpcy5hcHBseU92ZXJyaWRlKHRpdGxlLCBhbGFybSwgQWxhcm1TZXZlcml0eS5ISUdIKSkgcmV0dXJuO1xuXG4gICAgY29uc3QgaGlnaFNldmVyaXR5QWN0aW9uQXJuID0gdGhpcy5hbGFybUFjdGlvbnM/LmhpZ2hTZXZlcml0eTtcbiAgICBpZiAoaGlnaFNldmVyaXR5QWN0aW9uQXJuKSB7XG4gICAgICBhbGFybS5hZGRBbGFybUFjdGlvbih7XG4gICAgICAgIGJpbmQ6ICgpID0+ICh7IGFsYXJtQWN0aW9uQXJuOiBoaWdoU2V2ZXJpdHlBY3Rpb25Bcm4gfSksXG4gICAgICB9KTtcbiAgICB9XG4gICAgY29uc3QgaGlnaFNldmVyaXR5QWN0aW9uID0gdGhpcy5hbGFybUFjdGlvbnM/LmhpZ2hTZXZlcml0eUFjdGlvbjtcbiAgICBpZiAoaGlnaFNldmVyaXR5QWN0aW9uKSB7XG4gICAgICBhbGFybS5hZGRBbGFybUFjdGlvbihoaWdoU2V2ZXJpdHlBY3Rpb24pO1xuICAgIH1cblxuICAgIHRoaXMuaGlnaFNldmVyaXR5RGFzaGJvYXJkLmFkZFdpZGdldHMoXG4gICAgICBuZXcgY3cuQWxhcm1XaWRnZXQoe1xuICAgICAgICBhbGFybSxcbiAgICAgICAgdGl0bGUsXG4gICAgICAgIHdpZHRoOiAyNCxcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMuX2hpZ2hTZXZlcml0eUFsYXJtcy5wdXNoKGFsYXJtKTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRMb3dTZXZlcml0eUFsYXJtKHRpdGxlOiBzdHJpbmcsIGFsYXJtOiBjdy5BbGFybUJhc2UpIHtcbiAgICBpZiAodGhpcy5hcHBseU92ZXJyaWRlKHRpdGxlLCBhbGFybSwgQWxhcm1TZXZlcml0eS5MT1cpKSByZXR1cm47XG5cbiAgICBjb25zdCBub3JtYWxTZXZlcml0eUFjdGlvbkFybiA9IHRoaXMuYWxhcm1BY3Rpb25zPy5ub3JtYWxTZXZlcml0eTtcbiAgICBpZiAobm9ybWFsU2V2ZXJpdHlBY3Rpb25Bcm4pIHtcbiAgICAgIGFsYXJtLmFkZEFsYXJtQWN0aW9uKHtcbiAgICAgICAgYmluZDogKCkgPT4gKHsgYWxhcm1BY3Rpb25Bcm46IG5vcm1hbFNldmVyaXR5QWN0aW9uQXJuIH0pLFxuICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IG5vcm1hbFNldmVyaXR5QWN0aW9uID0gdGhpcy5hbGFybUFjdGlvbnM/Lm5vcm1hbFNldmVyaXR5QWN0aW9uO1xuICAgIGlmIChub3JtYWxTZXZlcml0eUFjdGlvbikge1xuICAgICAgYWxhcm0uYWRkQWxhcm1BY3Rpb24obm9ybWFsU2V2ZXJpdHlBY3Rpb24pO1xuICAgIH1cbiAgICB0aGlzLl9sb3dTZXZlcml0eUFsYXJtcy5wdXNoKGFsYXJtKTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRNZWRpdW1TZXZlcml0eUFsYXJtKHRpdGxlOiBzdHJpbmcsIGFsYXJtOiBjdy5BbGFybUJhc2UpIHtcbiAgICBpZiAodGhpcy5hcHBseU92ZXJyaWRlKHRpdGxlLCBhbGFybSwgQWxhcm1TZXZlcml0eS5NRURJVU0pKSByZXR1cm47XG5cbiAgICBjb25zdCBhY3Rpb25Bcm4gPSB0aGlzLmFsYXJtQWN0aW9ucz8ubWVkaXVtU2V2ZXJpdHk7XG4gICAgaWYgKGFjdGlvbkFybikge1xuICAgICAgYWxhcm0uYWRkQWxhcm1BY3Rpb24oe1xuICAgICAgICBiaW5kOiAoKSA9PiAoeyBhbGFybUFjdGlvbkFybjogYWN0aW9uQXJuIH0pLFxuICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuYWxhcm1BY3Rpb25zPy5tZWRpdW1TZXZlcml0eUFjdGlvbjtcbiAgICBpZiAoYWN0aW9uKSB7XG4gICAgICBhbGFybS5hZGRBbGFybUFjdGlvbihhY3Rpb24pO1xuICAgIH1cbiAgICB0aGlzLl9tZWRpdW1TZXZlcml0eUFsYXJtcy5wdXNoKGFsYXJtKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJZiBgYWxhcm1gIGhhcyBhbiBlbnRyeSBpbiBgYWxhcm1PdmVycmlkZXNgLCBmdWxseSB3aXJlIGl0IChhY3Rpb25zLFxuICAgKiBkYXNoYm9hcmQgcGxhY2VtZW50LCBib29ra2VlcGluZykgYWNjb3JkaW5nIHRvIHRoZSBvdmVycmlkZSBhbmQgcmV0dXJuXG4gICAqIHRydWUuIE90aGVyd2lzZSByZXR1cm4gZmFsc2UgdG8gbGV0IHRoZSBjYWxsZXIgZmFsbCBiYWNrIHRvIGRlZmF1bHRcbiAgICogYnVja2V0LWJhc2VkIGJlaGF2aW9yLlxuICAgKlxuICAgKiBMb29rdXAgaXMgYnkgdGhlIGFsYXJtJ3MgQ2xvdWRXYXRjaCBkaXNwbGF5IG5hbWUgKHRoZSBgYWxhcm1OYW1lYFxuICAgKiBwcm9wZXJ0eSksIHdpdGggdGhlIGAke3N0YWNrfS8ke0NvbnN0cnVjdEh1Yi1pZH0vYCBwcmVmaXggc3RyaXBwZWQg4oCUIHNvXG4gICAqIGN1c3RvbWVycyB3cml0ZSB0aGUgc2FtZSBzdHJpbmcgdGhleSBzZWUgaW4gdGlja2V0cy5cbiAgICovXG4gIHByaXZhdGUgYXBwbHlPdmVycmlkZShcbiAgICB0aXRsZTogc3RyaW5nLFxuICAgIGFsYXJtOiBjdy5BbGFybUJhc2UsXG4gICAgZGVmYXVsdFNldmVyaXR5OiBBbGFybVNldmVyaXR5XG4gICk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHJlbGF0aXZlID0gdGhpcy5yZWxhdGl2ZUFsYXJtTmFtZShhbGFybSk7XG4gICAgaWYgKCFyZWxhdGl2ZSkgcmV0dXJuIGZhbHNlO1xuICAgIGNvbnN0IG92ZXJyaWRlID0gdGhpcy5hbGFybU92ZXJyaWRlc1tyZWxhdGl2ZV07XG4gICAgaWYgKCFvdmVycmlkZSkgcmV0dXJuIGZhbHNlO1xuXG4gICAgdGhpcy5tYXRjaGVkT3ZlcnJpZGVLZXlzLmFkZChyZWxhdGl2ZSk7XG5cbiAgICBjb25zdCBzZXZlcml0eSA9IG92ZXJyaWRlLnNldmVyaXR5ID8/IGRlZmF1bHRTZXZlcml0eTtcblxuICAgIGlmIChvdmVycmlkZS5hY3Rpb25zICYmIG92ZXJyaWRlLmFjdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgZm9yIChjb25zdCBhY3Rpb24gb2Ygb3ZlcnJpZGUuYWN0aW9ucykge1xuICAgICAgICBhbGFybS5hZGRBbGFybUFjdGlvbihhY3Rpb24pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBhcm4gPVxuICAgICAgICBzZXZlcml0eSA9PT0gQWxhcm1TZXZlcml0eS5ISUdIID8gdGhpcy5hbGFybUFjdGlvbnM/LmhpZ2hTZXZlcml0eSA6XG4gICAgICAgICAgc2V2ZXJpdHkgPT09IEFsYXJtU2V2ZXJpdHkuTUVESVVNID8gdGhpcy5hbGFybUFjdGlvbnM/Lm1lZGl1bVNldmVyaXR5IDpcbiAgICAgICAgICAgIHRoaXMuYWxhcm1BY3Rpb25zPy5ub3JtYWxTZXZlcml0eTtcbiAgICAgIGlmIChhcm4pIGFsYXJtLmFkZEFsYXJtQWN0aW9uKHsgYmluZDogKCkgPT4gKHsgYWxhcm1BY3Rpb25Bcm46IGFybiB9KSB9KTtcblxuICAgICAgY29uc3QgYWN0aW9uID1cbiAgICAgICAgc2V2ZXJpdHkgPT09IEFsYXJtU2V2ZXJpdHkuSElHSCA/IHRoaXMuYWxhcm1BY3Rpb25zPy5oaWdoU2V2ZXJpdHlBY3Rpb24gOlxuICAgICAgICAgIHNldmVyaXR5ID09PSBBbGFybVNldmVyaXR5Lk1FRElVTSA/IHRoaXMuYWxhcm1BY3Rpb25zPy5tZWRpdW1TZXZlcml0eUFjdGlvbiA6XG4gICAgICAgICAgICB0aGlzLmFsYXJtQWN0aW9ucz8ubm9ybWFsU2V2ZXJpdHlBY3Rpb247XG4gICAgICBpZiAoYWN0aW9uKSBhbGFybS5hZGRBbGFybUFjdGlvbihhY3Rpb24pO1xuICAgIH1cblxuICAgIGlmIChzZXZlcml0eSA9PT0gQWxhcm1TZXZlcml0eS5ISUdIKSB7XG4gICAgICB0aGlzLmhpZ2hTZXZlcml0eURhc2hib2FyZC5hZGRXaWRnZXRzKFxuICAgICAgICBuZXcgY3cuQWxhcm1XaWRnZXQoeyBhbGFybSwgdGl0bGUsIHdpZHRoOiAyNCB9KVxuICAgICAgKTtcbiAgICAgIHRoaXMuX2hpZ2hTZXZlcml0eUFsYXJtcy5wdXNoKGFsYXJtKTtcbiAgICB9IGVsc2UgaWYgKHNldmVyaXR5ID09PSBBbGFybVNldmVyaXR5Lk1FRElVTSkge1xuICAgICAgdGhpcy5fbWVkaXVtU2V2ZXJpdHlBbGFybXMucHVzaChhbGFybSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2xvd1NldmVyaXR5QWxhcm1zLnB1c2goYWxhcm0pO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGFsYXJtJ3MgQ2xvdWRXYXRjaCBkaXNwbGF5IG5hbWUgd2l0aCB0aGUgYCR7Q29uc3RydWN0SHViLnBhdGh9L2BcbiAgICogcHJlZml4IHN0cmlwcGVkLCBvciB1bmRlZmluZWQgaWYgdGhlIGFsYXJtIGhhcyBubyBleHBsaWNpdCBuYW1lLlxuICAgKi9cbiAgcHJpdmF0ZSByZWxhdGl2ZUFsYXJtTmFtZShhbGFybTogY3cuQWxhcm1CYXNlKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBjZm4gPSBhbGFybS5ub2RlLmRlZmF1bHRDaGlsZCBhc1xuICAgICAgfCBjdy5DZm5BbGFybVxuICAgICAgfCBjdy5DZm5Db21wb3NpdGVBbGFybVxuICAgICAgfCB1bmRlZmluZWQ7XG4gICAgY29uc3QgZnVsbE5hbWUgPSBjZm4/LmFsYXJtTmFtZTtcbiAgICBpZiAoIWZ1bGxOYW1lIHx8IFRva2VuLmlzVW5yZXNvbHZlZChmdWxsTmFtZSkpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgY29uc3QgcHJlZml4ID0gYCR7dGhpcy5ub2RlLnNjb3BlIS5ub2RlLnBhdGh9L2A7XG4gICAgcmV0dXJuIGZ1bGxOYW1lLnN0YXJ0c1dpdGgocHJlZml4KSA/IGZ1bGxOYW1lLnNsaWNlKHByZWZpeC5sZW5ndGgpIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgcHVibGljIGdldCBoaWdoU2V2ZXJpdHlBbGFybXMoKSB7XG4gICAgcmV0dXJuIFsuLi50aGlzLl9oaWdoU2V2ZXJpdHlBbGFybXNdO1xuICB9XG5cbiAgcHVibGljIGdldCBtZWRpdW1TZXZlcml0eUFsYXJtcygpIHtcbiAgICByZXR1cm4gWy4uLnRoaXMuX21lZGl1bVNldmVyaXR5QWxhcm1zXTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbG93U2V2ZXJpdHlBbGFybXMoKSB7XG4gICAgcmV0dXJuIFsuLi50aGlzLl9sb3dTZXZlcml0eUFsYXJtc107XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIGNhbmFyeSB0aGF0IHBpbmdzIGEgY2VydGFpbiBVUkwgYW5kIHJhaXNlcyBhbiBhbGFybSBpbiBjYXNlIHRoZSBVUkxcbiAgICogcmVzcG9uZHMgd2l0aCBhbiBlcnJvciBvdmVyIDgwJSBvZiB0aGUgdGltZXMuXG4gICAqXG4gICAqIENhbmFyeSBmYWlsdXJlcyBhcmUgYWx3YXlzIGNvbnNpZGVyZWQgaGlnaC1zZXZlcml0eSAoYXQgdGhpcyBwb2ludCkuXG4gICAqXG4gICAqIEBwYXJhbSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBjYW5hcnlcbiAgICogQHBhcmFtIHVybCBUaGUgVVJMIHRvIHBpbmdcbiAgICovXG4gIHB1YmxpYyBhZGRXZWJDYW5hcnkobmFtZTogc3RyaW5nLCB1cmw6IHN0cmluZykge1xuICAgIGNvbnN0IGNhbmFyeSA9IG5ldyBXZWJDYW5hcnkoXG4gICAgICB0aGlzLFxuICAgICAgYFdlYkNhbmFyeSR7bmFtZS5yZXBsYWNlKC9bXkEtWjAtOV0vZ2ksICcnKX1gLFxuICAgICAge1xuICAgICAgICB1cmwsXG4gICAgICAgIGRpc3BsYXlOYW1lOiBuYW1lLFxuICAgICAgfVxuICAgICk7XG5cbiAgICB0aGlzLmFkZEhpZ2hTZXZlcml0eUFsYXJtKGAke25hbWV9IENhbmFyeWAsIGNhbmFyeS5hbGFybSk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFkZEFsYXJtKHRpdGxlOiBzdHJpbmcsIGFsYXJtOiBjdy5BbGFybSwgc2V2ZXJpdHk6IEFsYXJtU2V2ZXJpdHksIG1vbml0b3Jpbmc6IElNb25pdG9yaW5nKSB7XG4gIHN3aXRjaCAoc2V2ZXJpdHkpIHtcbiAgICBjYXNlIEFsYXJtU2V2ZXJpdHkuSElHSDpcbiAgICAgIG1vbml0b3JpbmcuYWRkSGlnaFNldmVyaXR5QWxhcm0odGl0bGUsIGFsYXJtKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgQWxhcm1TZXZlcml0eS5MT1c6XG4gICAgICBtb25pdG9yaW5nLmFkZExvd1NldmVyaXR5QWxhcm0odGl0bGUsIGFsYXJtKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgQWxhcm1TZXZlcml0eS5NRURJVU06XG4gICAgICBtb25pdG9yaW5nLmFkZE1lZGl1bVNldmVyaXR5QWxhcm0odGl0bGUsIGFsYXJtKTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gYWxhcm0gc2V2ZXJpdHk6ICR7c2V2ZXJpdHl9YCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -32,6 +32,7 @@ class WebCanary extends constructs_1.Construct {
|
|
|
32
32
|
});
|
|
33
33
|
// alarm if 4 or more pings have failed within a period of 5 minutes (80% failure rate)
|
|
34
34
|
this.alarm = errors.createAlarm(this, 'Errors', {
|
|
35
|
+
alarmName: `${this.node.path}/Errors`,
|
|
35
36
|
alarmDescription: `80% error rate for ${props.url} (${display})`,
|
|
36
37
|
threshold: 4,
|
|
37
38
|
evaluationPeriods: 1,
|
|
@@ -40,4 +41,4 @@ class WebCanary extends constructs_1.Construct {
|
|
|
40
41
|
}
|
|
41
42
|
}
|
|
42
43
|
exports.WebCanary = WebCanary;
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViLWNhbmFyeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb25pdG9yaW5nL3dlYi1jYW5hcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBQXVDO0FBQ3ZDLCtEQUFxRTtBQUNyRSxpREFBaUQ7QUFDakQsMERBQTBEO0FBQzFELDJDQUF1QztBQUN2QywyREFBc0Q7QUFpQnREOztHQUVHO0FBQ0gsTUFBYSxTQUFVLFNBQVEsc0JBQVM7SUFNdEMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFxQjtRQUM3RCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUM7UUFDdEIsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQztRQUVsQyxNQUFNLElBQUksR0FBRyxJQUFJLG1DQUFlLENBQUMsSUFBSSxFQUFFLGlCQUFpQixFQUFFO1lBQ3hELFdBQVcsRUFBRSxZQUFZLEdBQUcsS0FBSyxPQUFPLEVBQUU7WUFDMUMsV0FBVyxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRTtTQUMxQixDQUFDLENBQUM7UUFFSCxvQkFBb0I7UUFDcEIsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUU7WUFDNUIsUUFBUSxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLHNCQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ25ELE9BQU8sRUFBRSxDQUFDLElBQUksT0FBTyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUM1QyxDQUFDLENBQUM7UUFFSCx5Q0FBeUM7UUFDekMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztZQUMvQixNQUFNLEVBQUUsc0JBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQzNCLFNBQVMsRUFBRSxLQUFLO1lBQ2hCLEtBQUssRUFBRSxHQUFHLEdBQUcsU0FBUztTQUN2QixDQUFDLENBQUM7UUFFSCx1RkFBdUY7UUFDdkYsSUFBSSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUU7WUFDOUMsU0FBUyxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLFNBQVM7WUFDckMsZ0JBQWdCLEVBQUUsc0JBQXNCLEtBQUssQ0FBQyxHQUFHLEtBQUssT0FBTyxHQUFHO1lBQ2hFLFNBQVMsRUFBRSxDQUFDO1lBQ1osaUJBQWlCLEVBQUUsQ0FBQztZQUNwQixnQkFBZ0IsRUFBRSxpQ0FBZ0IsQ0FBQyxTQUFTO1NBQzdDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQXZDRCw4QkF1Q0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEdXJhdGlvbiB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IEFsYXJtLCBUcmVhdE1pc3NpbmdEYXRhIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWNsb3Vkd2F0Y2gnO1xuaW1wb3J0ICogYXMgZXZlbnRzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1ldmVudHMnO1xuaW1wb3J0ICogYXMgdGFyZ2V0cyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZXZlbnRzLXRhcmdldHMnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBIdHRwR2V0RnVuY3Rpb24gfSBmcm9tICcuL2h0dHAtZ2V0LWZ1bmN0aW9uJztcblxuLyoqXG4gKiBQcm9wcyBmb3IgYFdlYkNhbmFyeWAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV2ViQ2FuYXJ5UHJvcHMge1xuICAvKipcbiAgICogRGlzcGxheSBuYW1lIGZvciB0aGUgd2ViIGNhbmFyeVxuICAgKi9cbiAgcmVhZG9ubHkgZGlzcGxheU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIFVSTCBvZiB0aGUgd2Vic2l0ZSB0byBwaW5nLlxuICAgKi9cbiAgcmVhZG9ubHkgdXJsOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQSBjYW5hcnkgdGhhdCBwZXJpb2RpY2FsbHkgc2VuZHMgYW4gSFRUUCBHRVQgcmVxdWVzdCB0byBhIHNwZWNpZmljIFVSTC5cbiAqL1xuZXhwb3J0IGNsYXNzIFdlYkNhbmFyeSBleHRlbmRzIENvbnN0cnVjdCB7XG4gIC8qKlxuICAgKiBUaGlzIGFsYXJtIGlzIHJhaXNlZCBpZiB0aGVyZSBhcmUgbW9yZSB0aGFuIDIgZmFpbHVyZXMgd2l0aGluIDUgbWludXRlcy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBhbGFybTogQWxhcm07XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFdlYkNhbmFyeVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IHVybCA9IHByb3BzLnVybDtcbiAgICBjb25zdCBkaXNwbGF5ID0gcHJvcHMuZGlzcGxheU5hbWU7XG5cbiAgICBjb25zdCBwaW5nID0gbmV3IEh0dHBHZXRGdW5jdGlvbih0aGlzLCAnSHR0cEdldEZ1bmN0aW9uJywge1xuICAgICAgZGVzY3JpcHRpb246IGBIVFRQIEdFVCAke3VybH06ICR7ZGlzcGxheX1gLFxuICAgICAgZW52aXJvbm1lbnQ6IHsgVVJMOiB1cmwgfSxcbiAgICB9KTtcblxuICAgIC8vIGludm9rZSBldmVyeSAxbWluXG4gICAgbmV3IGV2ZW50cy5SdWxlKHRoaXMsICdSdWxlJywge1xuICAgICAgc2NoZWR1bGU6IGV2ZW50cy5TY2hlZHVsZS5yYXRlKER1cmF0aW9uLm1pbnV0ZXMoMSkpLFxuICAgICAgdGFyZ2V0czogW25ldyB0YXJnZXRzLkxhbWJkYUZ1bmN0aW9uKHBpbmcpXSxcbiAgICB9KTtcblxuICAgIC8vIHRvdGFsIG51bWJlciBvZiBlcnJvcnMgZXZlcnkgNSBtaW51dGVzXG4gICAgY29uc3QgZXJyb3JzID0gcGluZy5tZXRyaWNFcnJvcnMoe1xuICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDUpLFxuICAgICAgc3RhdGlzdGljOiAnc3VtJyxcbiAgICAgIGxhYmVsOiBgJHt1cmx9IEVycm9yc2AsXG4gICAgfSk7XG5cbiAgICAvLyBhbGFybSBpZiA0IG9yIG1vcmUgcGluZ3MgaGF2ZSBmYWlsZWQgd2l0aGluIGEgcGVyaW9kIG9mIDUgbWludXRlcyAoODAlIGZhaWx1cmUgcmF0ZSlcbiAgICB0aGlzLmFsYXJtID0gZXJyb3JzLmNyZWF0ZUFsYXJtKHRoaXMsICdFcnJvcnMnLCB7XG4gICAgICBhbGFybU5hbWU6IGAke3RoaXMubm9kZS5wYXRofS9FcnJvcnNgLFxuICAgICAgYWxhcm1EZXNjcmlwdGlvbjogYDgwJSBlcnJvciByYXRlIGZvciAke3Byb3BzLnVybH0gKCR7ZGlzcGxheX0pYCxcbiAgICAgIHRocmVzaG9sZDogNCxcbiAgICAgIGV2YWx1YXRpb25QZXJpb2RzOiAxLFxuICAgICAgdHJlYXRNaXNzaW5nRGF0YTogVHJlYXRNaXNzaW5nRGF0YS5CUkVBQ0hJTkcsXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|