tnx-shared 5.0.53 → 5.0.55
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/bundles/tnx-shared.umd.js +38 -13
- package/bundles/tnx-shared.umd.js.map +1 -1
- package/bundles/tnx-shared.umd.min.js +1 -1
- package/bundles/tnx-shared.umd.min.js.map +1 -1
- package/classes/form-schema.d.ts +1 -0
- package/classes/form-schema.d.ts.map +1 -1
- package/components/crud/crud-form/crud-form.component.d.ts.map +1 -1
- package/esm2015/classes/form-schema.js +2 -1
- package/esm2015/components/crud/crud-form/crud-form.component.js +4 -1
- package/esm2015/components/crud/crud-list/crud-list.component.js +3 -3
- package/esm2015/models/grid-info.js +1 -1
- package/esm2015/services/crud.service.js +22 -4
- package/esm2015/services/notifier.service.js +2 -2
- package/fesm2015/tnx-shared.js +28 -6
- package/fesm2015/tnx-shared.js.map +1 -1
- package/models/grid-info.d.ts +1 -0
- package/models/grid-info.d.ts.map +1 -1
- package/package.json +2 -2
- package/services/crud.service.d.ts.map +1 -1
- package/tnx-shared.metadata.json +1 -1
|
@@ -144,7 +144,7 @@ export class NotifierService {
|
|
|
144
144
|
showWarningByReponse(res) {
|
|
145
145
|
let message = res.message;
|
|
146
146
|
if (!message)
|
|
147
|
-
message =
|
|
147
|
+
message = 'Có lỗi xảy ra, vui lòng liên hệ quản trị viên!';
|
|
148
148
|
this.showWarning(message);
|
|
149
149
|
}
|
|
150
150
|
showBusinessError(message, key = '', header = 'Lỗi', life = this._timeOut) {
|
|
@@ -399,4 +399,4 @@ NotifierService.ctorParameters = () => [
|
|
|
399
399
|
{ type: TranslateService },
|
|
400
400
|
{ type: ModuleConfigService }
|
|
401
401
|
];
|
|
402
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi9wcm9qZWN0cy90bngtc2hhcmVkL3NyYy9saWIvIiwic291cmNlcyI6WyJzZXJ2aWNlcy9ub3RpZmllci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLG1CQUFtQixFQUFXLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBR3JGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7OztBQUs5RCxNQUFNLE9BQU8sZUFBZTtJQUd4QixFQUFFO0lBQ0YsOENBQThDO0lBQzlDLDBDQUEwQztJQUMxQywrQ0FBK0M7SUFFL0MsWUFDWSxlQUErQixFQUMvQixlQUFvQyxFQUNwQyxpQkFBbUMsRUFDbkMsb0JBQXlDO1FBSHpDLG9CQUFlLEdBQWYsZUFBZSxDQUFnQjtRQUMvQixvQkFBZSxHQUFmLGVBQWUsQ0FBcUI7UUFDcEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFrQjtRQUNuQyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXFCO1FBWDdDLGFBQVEsR0FBRyxJQUFJLENBQUM7UUFhcEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsU0FBUyxFQUFFLENBQUMsV0FBVyxDQUFDO0lBQ3pFLENBQUM7SUFFRCxVQUFVLENBQUMsT0FHUCxFQUFFO1FBQ0YsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ1YsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO1NBQy9CO1FBQ0QsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDdkIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztTQUNs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O1lBeGFKLFVBQVUsU0FBQztnQkFDUixVQUFVLEVBQUUsTUFBTTthQUNyQjs7O1lBUHNDLGNBQWM7WUFBNUMsbUJBQW1CO1lBRG5CLGdCQUFnQjtZQUloQixtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgQ29uZmlybWF0aW9uU2VydmljZSwgTWVzc2FnZSwgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICd0bi1jdXN0b20tcHJpbWVuZy9hcGknO1xyXG5pbXBvcnQgeyBNb2R1bGVDb25maWcgfSBmcm9tICcuLi9jb25maWdzL21vZHVsZS1jb25maWcnO1xyXG5pbXBvcnQgeyBSZXNwb25zZVJlc3VsdCB9IGZyb20gJy4uL21vZGVscy9yZXNwb25zZS1yZXN1bHQnO1xyXG5pbXBvcnQgeyBNb2R1bGVDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi9tb2R1bGUtY29uZmlnLnNlcnZpY2UnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOb3RpZmllclNlcnZpY2Uge1xyXG4gICAgcHJpdmF0ZSBfdGltZU91dCA9IDUwMDA7XHJcbiAgICBlbnZpcm9ubWVudDogYW55O1xyXG4gICAgLy9cclxuICAgIC8vIHN0YXRpYyBfdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZTtcclxuICAgIC8vIHN0YXRpYyBfbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlO1xyXG4gICAgLy8gc3RhdGljIF9jb25maXJtU2VydmljZTogQ29uZmlybWF0aW9uU2VydmljZTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIF9tZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBfY29uZmlybVNlcnZpY2U6IENvbmZpcm1hdGlvblNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBfdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIF9tb2R1bGVDb25maWdTZXJ2aWNlOiBNb2R1bGVDb25maWdTZXJ2aWNlXHJcbiAgICApIHtcclxuICAgICAgICB0aGlzLmVudmlyb25tZW50ID0gdGhpcy5fbW9kdWxlQ29uZmlnU2VydmljZS5nZXRDb25maWcoKS5lbnZpcm9ubWVudDtcclxuICAgIH1cclxuXHJcbiAgICBzZXRTZXJ2aWNlKG9wdHM6IHtcclxuICAgICAgICBlbnY/OiBhbnksIHRyYW5zbGF0ZVNlcnZpY2U/OiBUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgICAgIG1lc3NhZ2VTZXJ2aWNlPzogTWVzc2FnZVNlcnZpY2UsIGNvbmZpcm1TZXJ2aWNlPzogQ29uZmlybWF0aW9uU2VydmljZVxyXG4gICAgfSA9IHt9KSB7XHJcbiAgICAgICAgaWYgKG9wdHMuZW52KSB7XHJcbiAgICAgICAgICAgIHRoaXMuZW52aXJvbm1lbnQgPSBvcHRzLmVudjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG9wdHMudHJhbnNsYXRlU2VydmljZSkge1xyXG4gICAgICAgICAgICB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlID0gb3B0cy50cmFuc2xhdGVTZXJ2aWNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKG9wdHMubWVzc2FnZVNlcnZpY2UpIHtcclxuICAgICAgICAgICAgdGhpcy5fbWVzc2FnZVNlcnZpY2UgPSBvcHRzLm1lc3NhZ2VTZXJ2aWNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKG9wdHMuY29uZmlybVNlcnZpY2UpIHtcclxuICAgICAgICAgICAgdGhpcy5fY29uZmlybVNlcnZpY2UgPSBvcHRzLmNvbmZpcm1TZXJ2aWNlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzaG93U3VjY2VzcyhtZXNzYWdlOiBzdHJpbmcsIGhlYWRlcjogc3RyaW5nID0gJ1Row7RuZyBiw6FvJywgbGlmZTogbnVtYmVyID0gdGhpcy5fdGltZU91dCkge1xyXG4gICAgICAgIHRoaXMuX21lc3NhZ2VTZXJ2aWNlLmFkZCh7XHJcbiAgICAgICAgICAgIHNldmVyaXR5OiAnc3VjY2VzcycsXHJcbiAgICAgICAgICAgIHN1bW1hcnk6IGhlYWRlcixcclxuICAgICAgICAgICAgZGV0YWlsOiBtZXNzYWdlLFxyXG4gICAgICAgICAgICBsaWZlXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2hvd0luc2VydERhdGFTdWNjZXNzKGxpZmU6IG51bWJlciA9IHRoaXMuX3RpbWVPdXQpIHtcclxuICAgICAgICB0aGlzLl9tZXNzYWdlU2VydmljZS5hZGQoe1xyXG4gICAgICAgICAgICBzZXZlcml0eTogJ3N1Y2Nlc3MnLFxyXG4gICAgICAgICAgICBzdW1tYXJ5OiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ01FU1NBR0UuQ09NTU9OX1NVQ0NFU1NfSEVBREVSJyksXHJcbiAgICAgICAgICAgIGRldGFpbDogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdNRVNTQUdFLklOU0VSVF9EQVRBX1NVQ0NFU1MnKSxcclxuICAgICAgICAgICAgbGlmZVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHNob3dVcGRhdGVEYXRhU3VjY2VzcyhsaWZlOiBudW1iZXIgPSB0aGlzLl90aW1lT3V0KSB7XHJcbiAgICAgICAgdGhpcy5fbWVzc2FnZVNlcnZpY2UuYWRkKHtcclxuICAgICAgICAgICAgc2V2ZXJpdHk6ICdzdWNjZXNzJyxcclxuICAgICAgICAgICAgc3VtbWFyeTogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdNRVNTQUdFLkNPTU1PTl9TVUNDRVNTX0hFQURFUicpLFxyXG4gICAgICAgICAgICBkZXRhaWw6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnTUVTU0FHRS5VUERBVEVfREFUQV9TVUNDRVNTJyksXHJcbiAgICAgICAgICAgIGxpZmVcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBzaG93RGVsZXRlRGF0YVN1Y2Nlc3MobGlmZTogbnVtYmVyID0gdGhpcy5fdGltZU91dCkge1xyXG4gICAgICAgIHRoaXMuX21lc3NhZ2VTZXJ2aWNlLmFkZCh7XHJcbiAgICAgICAgICAgIHNldmVyaXR5OiAnc3VjY2VzcycsXHJcbiAgICAgICAgICAgIHN1bW1hcnk6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnTUVTU0FHRS5DT01NT05fU1VDQ0VTU19IRUFERVInKSxcclxuICAgICAgICAgICAgZGV0YWlsOiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ01FU1NBR0UuREVMRVRFX0RBVEFfU1VDQ0VTUycpLFxyXG4gICAgICAgICAgICBsaWZlXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2hvd0RlbGV0ZURhdGFFcnJvcihsaWZlOiBudW1iZXIgPSB0aGlzLl90aW1lT3V0KSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZW52aXJvbm1lbnQgJiYgIXRoaXMuZW52aXJvbm1lbnQuc2hvd0Vycm9yTWVzc2FnZUluVG9hc3QpIHtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcignZXJyb3IgbWVzYWdlIGluIHRvYXN0IGhhcyBkaXNhYmxlZCBmcm9tIGVudmlyb25tZW50IHNldHRpbmcsIGRldGFpbCBtZXNzYWdlOiAnLCB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ01FU1NBR0UuREVMRVRFX0RBVEFfRVJST1InKSxcclxuICAgICAgICAgICAgICAgIHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnTUVTU0FHRS5DT01NT05fRVJST1JfSEVBREVSJykpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX21lc3NhZ2VTZXJ2aWNlLmFkZCh7XHJcbiAgICAgICAgICAgIHNldmVyaXR5OiAnZXJyb3InLFxyXG4gICAgICAgICAgICBzdW1tYXJ5OiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ01FU1NBR0UuQ09NTU9OX0VSUk9SX0hFQURFUicpLFxyXG4gICAgICAgICAgICBkZXRhaWw6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnTUVTU0FHRS5ERUxFVEVfREFUQV9FUlJPUicpLFxyXG4gICAgICAgICAgICBsaWZlXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2hvd0RlbGV0ZURhdGFFbXB0eUVycm9yKGxpZmU6IG51bWJlciA9IHRoaXMuX3RpbWVPdXQpIHtcclxuICAgICAgICB0aGlzLl9tZXNzYWdlU2VydmljZS5hZGQoe1xyXG4gICAgICAgICAgICBzZXZlcml0eTogJ2Vycm9yJyxcclxuICAgICAgICAgICAgc3VtbWFyeTogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdNRVNTQUdFLkNPTU1PTl9FUlJPUl9IRUFERVInKSxcclxuICAgICAgICAgICAgZGV0YWlsOiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ0LhuqFuIHBo4bqjaSBjaOG7jW4gw610IG5o4bqldCAxIGLhuqNuIGdoaSDEkeG7gyB4w7NhJyksXHJcbiAgICAgICAgICAgIGxpZmVcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBzaG93RHVwbGljYXRlRGF0YUVycm9yKGxpZmU6IG51bWJlciA9IHRoaXMuX3RpbWVPdXQpIHtcclxuICAgICAgICB0aGlzLl9tZXNzYWdlU2VydmljZS5hZGQoe1xyXG4gICAgICAgICAgICBzZXZlcml0eTogJ2Vycm9yJyxcclxuICAgICAgICAgICAgc3VtbWFyeTogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdNRVNTQUdFLkNPTU1PTl9FUlJPUl9IRUFERVInKSxcclxuICAgICAgICAgICAgZGV0YWlsOiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ03DoyBj4buZdCBraMO0bmcgdGjhu4MgYuG7iyB0csO5bmcgbOG6t3AnKSxcclxuICAgICAgICAgICAgbGlmZVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHNob3dXYXJuaW5nKG1lc3NhZ2U6IHN0cmluZywgaGVhZGVyOiBzdHJpbmcgPSAnVGjDtG5nIGLDoW8nLCBsaWZlOiBudW1iZXIgPSB0aGlzLl90aW1lT3V0KSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZW52aXJvbm1lbnQgJiYgIXRoaXMuZW52aXJvbm1lbnQuc2hvd1dhcm5pbmdNZXNzYWdlSW5Ub2FzdCkge1xyXG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ2Vycm9yIG1lc2FnZSBpbiB0b2FzdCBoYXMgZGlzYWJsZWQgZnJvbSBlbnZpcm9ubWVudCBzZXR0aW5nLCBkZXRhaWwgbWVzc2FnZTogJywgaGVhZGVyLCBtZXNzYWdlKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9tZXNzYWdlU2VydmljZS5hZGQoe1xyXG4gICAgICAgICAgICBzZXZlcml0eTogJ3dhcm4nLFxyXG4gICAgICAgICAgICBzdW1tYXJ5OiBoZWFkZXIsXHJcbiAgICAgICAgICAgIGRldGFpbDogbWVzc2FnZSxcclxuICAgICAgICAgICAgbGlmZVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHNob3dFcnJvcihtZXNzYWdlOiBzdHJpbmcsIGtleTogc3RyaW5nID0gJycsIGhlYWRlcjogc3RyaW5nID0gJ0zhu5dpJywgbGlmZTogbnVtYmVyID0gdGhpcy5fdGltZU91dCkge1xyXG4gICAgICAgIGlmICh0aGlzLmVudmlyb25tZW50ICYmICF0aGlzLmVudmlyb25tZW50LnNob3dFcnJvck1lc3NhZ2VJblRvYXN0KSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ2Vycm9yIG1lc2FnZSBpbiB0b2FzdCBoYXMgZGlzYWJsZWQgZnJvbSBlbnZpcm9ubWVudCBzZXR0aW5nLCBkZXRhaWwgbWVzc2FnZTogJywgbWVzc2FnZSwgaGVhZGVyKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGtleSkge1xyXG4gICAgICAgICAgICB0aGlzLl9tZXNzYWdlU2VydmljZS5hZGQoe1xyXG4gICAgICAgICAgICAgICAga2V5LFxyXG4gICAgICAgICAgICAgICAgc2V2ZXJpdHk6ICdlcnJvcicsXHJcbiAgICAgICAgICAgICAgICBzdW1tYXJ5OiBoZWFkZXIsXHJcbiAgICAgICAgICAgICAgICBkZXRhaWw6IG1lc3NhZ2UsXHJcbiAgICAgICAgICAgICAgICBsaWZlXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuX21lc3NhZ2VTZXJ2aWNlLmFkZCh7XHJcbiAgICAgICAgICAgICAgICBzZXZlcml0eTogJ2Vycm9yJyxcclxuICAgICAgICAgICAgICAgIHN1bW1hcnk6IGhlYWRlcixcclxuICAgICAgICAgICAgICAgIGRldGFpbDogbWVzc2FnZSxcclxuICAgICAgICAgICAgICAgIGxpZmVcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHNob3dFeGNlcHRpb24oZXJyOiBhbnksIGhlYWRlcjogc3RyaW5nID0gJ1Row7RuZyBiw6FvJywgbGlmZTogbnVtYmVyID0gdGhpcy5fdGltZU91dCkge1xyXG4gICAgICAgIGNvbnN0IG1lc3NhZ2UgPSAnQ8OzIGzhu5dpIHjhuqN5IHJhLiBMacOqbiBo4buHIHF14bqjbiB0cuG7iyB2acOqbiDEkeG7gyBiaeG6v3QgdGjDqm0gY2hpIHRp4bq/dCEnO1xyXG4gICAgICAgIGlmICh0aGlzLmVudmlyb25tZW50ICYmICF0aGlzLmVudmlyb25tZW50LnNob3dXYXJuaW5nTWVzc2FnZUluVG9hc3QpIHtcclxuICAgICAgICAgICAgY29uc29sZS53YXJuKCdlcnJvciBtZXNhZ2UgaW4gdG9hc3QgaGFzIGRpc2FibGVkIGZyb20gZW52aXJvbm1lbnQgc2V0dGluZywgZGV0YWlsIG1lc3NhZ2U6ICcsIGhlYWRlciwgbWVzc2FnZSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5fbWVzc2FnZVNlcnZpY2UuYWRkKHtcclxuICAgICAgICAgICAgc2V2ZXJpdHk6ICd3YXJuJyxcclxuICAgICAgICAgICAgc3VtbWFyeTogaGVhZGVyLFxyXG4gICAgICAgICAgICBkZXRhaWw6IG1lc3NhZ2UsXHJcbiAgICAgICAgICAgIGxpZmVcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBzaG93V2FybmluZ0J5UmVwb25zZShyZXM6IFJlc3BvbnNlUmVzdWx0KSB7XHJcbiAgICAgICAgbGV0IG1lc3NhZ2UgPSByZXMubWVzc2FnZTtcclxuICAgICAgICBpZiAoIW1lc3NhZ2UpXHJcbiAgICAgICAgICAgIG1lc3NhZ2UgPSByZXMuZXJyb3I7XHJcbiAgICAgICAgdGhpcy5zaG93V2FybmluZyhtZXNzYWdlKTtcclxuICAgIH1cclxuXHJcbiAgICBzaG93QnVzaW5lc3NFcnJvcihtZXNzYWdlOiBzdHJpbmcsIGtleTogc3RyaW5nID0gJycsIGhlYWRlcjogc3RyaW5nID0gJ0zhu5dpJywgbGlmZTogbnVtYmVyID0gdGhpcy5fdGltZU91dCkge1xyXG4gICAgICAgIGlmIChrZXkpIHtcclxuICAgICAgICAgICAgdGhpcy5fbWVzc2FnZVNlcnZpY2UuYWRkKHtcclxuICAgICAgICAgICAgICAgIGtleSxcclxuICAgICAgICAgICAgICAgIHNldmVyaXR5OiAnZXJyb3InLFxyXG4gICAgICAgICAgICAgICAgc3VtbWFyeTogaGVhZGVyLFxyXG4gICAgICAgICAgICAgICAgZGV0YWlsOiBtZXNzYWdlLFxyXG4gICAgICAgICAgICAgICAgbGlmZVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLl9tZXNzYWdlU2VydmljZS5hZGQoe1xyXG4gICAgICAgICAgICAgICAgc2V2ZXJpdHk6ICdlcnJvcicsXHJcbiAgICAgICAgICAgICAgICBzdW1tYXJ5OiBoZWFkZXIsXHJcbiAgICAgICAgICAgICAgICBkZXRhaWw6IG1lc3NhZ2UsXHJcbiAgICAgICAgICAgICAgICBsaWZlXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzaG93SHR0cFVua25vd0Vycm9yKGxpZmU6IG51bWJlciA9IHRoaXMuX3RpbWVPdXQpIHtcclxuICAgICAgICBpZiAodGhpcy5lbnZpcm9ubWVudCAmJiAhdGhpcy5lbnZpcm9ubWVudC5zaG93RXJyb3JNZXNzYWdlSW5Ub2FzdCkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdlcnJvciBtZXNhZ2UgaW4gdG9hc3QgaGFzIGRpc2FibGVkIGZyb20gZW52aXJvbm1lbnQgc2V0dGluZywgZGV0YWlsIG1lc3NhZ2U6ICcsXHJcbiAgICAgICAgICAgICAgICB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ01FU1NBR0UuSFRUUF9VTktOT1dfRVJST1JfSEVBREVSJyksIHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnTUVTU0FHRS5IVFRQX1VOS05PV19FUlJPUicpKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5fbWVzc2FnZVNlcnZpY2UuYWRkKHtcclxuICAgICAgICAgICAgc2V2ZXJpdHk6ICdlcnJvcicsXHJcbiAgICAgICAgICAgIHN1bW1hcnk6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnTUVTU0FHRS5IVFRQX1VOS05PV19FUlJPUl9IRUFERVInKSxcclxuICAgICAgICAgICAgZGV0YWlsOiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ01FU1NBR0UuSFRUUF9VTktOT1dfRVJST1InKSxcclxuICAgICAgICAgICAgbGlmZVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHNob3dSZXNwb25zZUVycm9yKHN0YXR1czogbnVtYmVyLCBsaWZlOiBudW1iZXIgPSB0aGlzLl90aW1lT3V0LCBzZXJ2aWNlTmFtZTogc3RyaW5nID0gJycpIHtcclxuICAgICAgICBpZiAodGhpcy5lbnZpcm9ubWVudCAmJiAhdGhpcy5lbnZpcm9ubWVudC5zaG93RXJyb3JNZXNzYWdlSW5Ub2FzdCkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdlcnJvciBtZXNhZ2UgaW4gdG9hc3QgaGFzIGRpc2FibGVkIGZyb20gZW52aXJvbm1lbnQgc2V0dGluZywgZGV0YWlsIHN0YXR1cyBjb2RlOiAnLCBzdGF0dXMpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChzdGF0dXMgPT09IDQwNCkge1xyXG4gICAgICAgICAgICB0aGlzLl9tZXNzYWdlU2VydmljZS5hZGQoe1xyXG4gICAgICAgICAgICAgICAgc2V2ZXJpdHk6ICdlcnJvcicsXHJcbiAgICAgICAgICAgICAgICBzdW1tYXJ5OiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ01FU1NBR0UuQ09NTU9OX0VSUk9SX0hFQURFUicpLFxyXG4gICAgICAgICAgICAgICAgZGV0YWlsOiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ01FU1NBR0UuTk9UX0ZPVU5EX0VSUk9SJyksXHJcbiAgICAgICAgICAgICAgICBsaWZlXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoc3RhdHVzID09PSA0MDEpIHtcclxuICAgICAgICAgICAgdGhpcy5fbWVzc2FnZVNlcnZpY2UuYWRkKHtcclxuICAgICAgICAgICAgICAgIHNldmVyaXR5OiAnZXJyb3InLFxyXG4gICAgICAgICAgICAgICAgc3VtbWFyeTogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdNRVNTQUdFLkNPTU1PTl9FUlJPUl9IRUFERVInKSxcclxuICAgICAgICAgICAgICAgIGRldGFpbDogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdNRVNTQUdFLlVOQVVUSE9SSVpFRF9FUlJPUicpLFxyXG4gICAgICAgICAgICAgICAgbGlmZVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2UgaWYgKHN0YXR1cyA9PT0gNDAzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX21lc3NhZ2VTZXJ2aWNlLmFkZCh7XHJcbiAgICAgICAgICAgICAgICBzZXZlcml0eTogJ2Vycm9yJyxcclxuICAgICAgICAgICAgICAgIHN1bW1hcnk6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnTUVTU0FHRS5DT01NT05fRVJST1JfSEVBREVSJyksXHJcbiAgICAgICAgICAgICAgICBkZXRhaWw6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnTUVTU0FHRS5BQ0NFU1NfREVOSU5FRF9FUlJPUicpLFxyXG4gICAgICAgICAgICAgICAgbGlmZVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2UgaWYgKHN0YXR1cyA9PT0gNTAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX21lc3NhZ2VTZXJ2aWNlLmFkZCh7XHJcbiAgICAgICAgICAgICAgICBzZXZlcml0eTogJ2Vycm9yJyxcclxuICAgICAgICAgICAgICAgIHN1bW1hcnk6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnTUVTU0FHRS5DT01NT05fRVJST1JfSEVBREVSJyksXHJcbiAgICAgICAgICAgICAgICBkZXRhaWw6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnTUVTU0FHRS5JTlRFUk5BTF9TRVJWRVJfRVJST1InKSxcclxuICAgICAgICAgICAgICAgIGxpZmVcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChzdGF0dXMgPT09IDQwOSkge1xyXG4gICAgICAgICAgICB0aGlzLl9tZXNzYWdlU2VydmljZS5hZGQoe1xyXG4gICAgICAgICAgICAgICAgc2V2ZXJpdHk6ICdlcnJvcicsXHJcbiAgICAgICAgICAgICAgICBzdW1tYXJ5OiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ01FU1NBR0UuQ09NTU9OX0VSUk9SX0hFQURFUicpLFxyXG4gICAgICAgICAgICAgICAgZGV0YWlsOiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ01FU1NBR0UuQ09ORkxJQ1RfRVJST1InKSxcclxuICAgICAgICAgICAgICAgIGxpZmVcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChzdGF0dXMgPT09IDQwMCkge1xyXG4gICAgICAgICAgICB0aGlzLl9tZXNzYWdlU2VydmljZS5hZGQoe1xyXG4gICAgICAgICAgICAgICAgc2V2ZXJpdHk6ICdlcnJvcicsXHJcbiAgICAgICAgICAgICAgICBzdW1tYXJ5OiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ01FU1NBR0UuQ09NTU9OX0VSUk9SX0hFQURFUicpLFxyXG4gICAgICAgICAgICAgICAgZGV0YWlsOiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ1Z1aSBsw7JuZyBraeG7g20gdHJhIGThu68gbGnhu4d1IMSR4bqndSB2w6BvJyksXHJcbiAgICAgICAgICAgICAgICBsaWZlXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoc3RhdHVzID09PSAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX21lc3NhZ2VTZXJ2aWNlLmFkZCh7XHJcbiAgICAgICAgICAgICAgICBzZXZlcml0eTogJ2Vycm9yJyxcclxuICAgICAgICAgICAgICAgIHN1bW1hcnk6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnTUVTU0FHRS5DT01NT05fRVJST1JfSEVBREVSJyksXHJcbiAgICAgICAgICAgICAgICBkZXRhaWw6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChgVnVpIGzDsm5nIGtp4buDbSB0cmEgbOG6oWkgZOG7i2NoIHbhu6UgJHtzZXJ2aWNlTmFtZX1gKSxcclxuICAgICAgICAgICAgICAgIGxpZmVcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHNob3dJbnNlcnREYXRhRmFpbGVkKGxpZmU6IG51bWJlciA9IHRoaXMuX3RpbWVPdXQpIHtcclxuICAgICAgICBpZiAodGhpcy5lbnZpcm9ubWVudCAmJiAhdGhpcy5lbnZpcm9ubWVudC5zaG93RXJyb3JNZXNzYWdlSW5Ub2FzdCkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdlcnJvciBtZXNhZ2UgaW4gdG9hc3QgaGFzIGRpc2FibGVkIGZyb20gZW52aXJvbm1lbnQgc2V0dGluZywgZGV0YWlsIHN0YXR1cyBjb2RlOiAnLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdNRVNTQUdFLklOU0VSVF9EQVRBX0ZBSUxFRCcpLCB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ01FU1NBR0UuQ09NTU9OX0VSUk9SX0hFQURFUicpKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9tZXNzYWdlU2VydmljZS5hZGQoe1xyXG4gICAgICAgICAgICBzZXZlcml0eTogJ2Vycm9yJyxcclxuICAgICAgICAgICAgc3VtbWFyeTogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdNRVNTQUdFLkNPTU1PTl9FUlJPUl9IRUFERVInKSxcclxuICAgICAgICAgICAgZGV0YWlsOiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ01FU1NBR0UuSU5TRVJUX0RBVEFfRkFJTEVEJyksXHJcbiAgICAgICAgICAgIGxpZmVcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBzaG93VXBkYXRlRGF0YUZhaWxlZChsaWZlOiBudW1iZXIgPSB0aGlzLl90aW1lT3V0KSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZW52aXJvbm1lbnQgJiYgIXRoaXMuZW52aXJvbm1lbnQuc2hvd0Vycm9yTWVzc2FnZUluVG9hc3QpIHtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcignZXJyb3IgbWVzYWdlIGluIHRvYXN0IGhhcyBkaXNhYmxlZCBmcm9tIGVudmlyb25tZW50IHNldHRpbmcsIGRldGFpbCBzdGF0dXMgY29kZTogJyxcclxuICAgICAgICAgICAgICAgIHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnTUVTU0FHRS5VUERBVEVfREFUQV9GQUlMRUQnKSwgdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdNRVNTQUdFLkNPTU1PTl9FUlJPUl9IRUFERVInKSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5fbWVzc2FnZVNlcnZpY2UuYWRkKHtcclxuICAgICAgICAgICAgc2V2ZXJpdHk6ICdlcnJvcicsXHJcbiAgICAgICAgICAgIHN1bW1hcnk6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnTUVTU0FHRS5DT01NT05fRVJST1JfSEVBREVSJyksXHJcbiAgICAgICAgICAgIGRldGFpbDogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdNRVNTQUdFLlVQREFURV9EQVRBX0ZBSUxFRCcpLFxyXG4gICAgICAgICAgICBsaWZlXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2hvd0xvY2tVc2VyRmFpbGVkKGxpZmU6IG51bWJlciA9IHRoaXMuX3RpbWVPdXQpIHtcclxuICAgICAgICBpZiAodGhpcy5lbnZpcm9ubWVudCAmJiAhdGhpcy5lbnZpcm9ubWVudC5zaG93RXJyb3JNZXNzYWdlSW5Ub2FzdCkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdlcnJvciBtZXNhZ2UgaW4gdG9hc3QgaGFzIGRpc2FibGVkIGZyb20gZW52aXJvbm1lbnQgc2V0dGluZywgZGV0YWlsIHN0YXR1cyBjb2RlOiAnLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdLaMOzYSBuZ8aw4budaSBkw7luZyB0aOG6pXQgYuG6oWknKSwgdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdNRVNTQUdFLkNPTU1PTl9FUlJPUl9IRUFERVInKSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5fbWVzc2FnZVNlcnZpY2UuYWRkKHtcclxuICAgICAgICAgICAgc2V2ZXJpdHk6ICdlcnJvcicsXHJcbiAgICAgICAgICAgIHN1bW1hcnk6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnTUVTU0FHRS5DT01NT05fRVJST1JfSEVBREVSJyksXHJcbiAgICAgICAgICAgIGRldGFpbDogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdLaMOzYSBuZ8aw4budaSBkw7luZyB0aOG6pXQgYuG6oWknKSxcclxuICAgICAgICAgICAgbGlmZVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHNob3dVbmxvY2tVc2VyRmFpbGVkKGxpZmU6IG51bWJlciA9IHRoaXMuX3RpbWVPdXQpIHtcclxuICAgICAgICBpZiAodGhpcy5lbnZpcm9ubWVudCAmJiAhdGhpcy5lbnZpcm9ubWVudC5zaG93RXJyb3JNZXNzYWdlSW5Ub2FzdCkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdlcnJvciBtZXNhZ2UgaW4gdG9hc3QgaGFzIGRpc2FibGVkIGZyb20gZW52aXJvbm1lbnQgc2V0dGluZywgZGV0YWlsIHN0YXR1cyBjb2RlOiAnLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdN4bufIGtow7NhIG5nxrDhu51pIGTDuW5nIHRo4bqldCBi4bqhaScpLCB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ01FU1NBR0UuQ09NTU9OX0VSUk9SX0hFQURFUicpKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9tZXNzYWdlU2VydmljZS5hZGQoe1xyXG4gICAgICAgICAgICBzZXZlcml0eTogJ2Vycm9yJyxcclxuICAgICAgICAgICAgc3VtbWFyeTogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdNRVNTQUdFLkNPTU1PTl9FUlJPUl9IRUFERVInKSxcclxuICAgICAgICAgICAgZGV0YWlsOiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ03hu58ga2jDs2EgbmfGsOG7nWkgZMO5bmcgdGjhuqV0IGLhuqFpJyksXHJcbiAgICAgICAgICAgIGxpZmVcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBzaG93VXBkYXRlRGF0YVNpbmdsZUZhaWxlZChsaWZlOiBudW1iZXIgPSB0aGlzLl90aW1lT3V0KSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZW52aXJvbm1lbnQgJiYgIXRoaXMuZW52aXJvbm1lbnQuc2hvd0Vycm9yTWVzc2FnZUluVG9hc3QpIHtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcignZXJyb3IgbWVzYWdlIGluIHRvYXN0IGhhcyBkaXNhYmxlZCBmcm9tIGVudmlyb25tZW50IHNldHRpbmcsIGRldGFpbCBzdGF0dXMgY29kZTogJyxcclxuICAgICAgICAgICAgICAgIHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnTcOjIGhv4bq3YyB0w6puIGRhbmggbeG7pWMgxJHDoyB04buTbiB04bqhaScpLCB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ01FU1NBR0UuQ09NTU9OX0VSUk9SX0hFQURFUicpKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9tZXNzYWdlU2VydmljZS5hZGQoe1xyXG4gICAgICAgICAgICBzZXZlcml0eTogJ2Vycm9yJyxcclxuICAgICAgICAgICAgc3VtbWFyeTogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdNRVNTQUdFLkNPTU1PTl9FUlJPUl9IRUFERVInKSxcclxuICAgICAgICAgICAgZGV0YWlsOiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ03DoyBob+G6t2MgdMOqbiBkYW5oIG3hu6VjIMSRw6MgdOG7k24gdOG6oWknKSxcclxuICAgICAgICAgICAgbGlmZVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgc2hvd1VwZGF0ZURhdGFDb25maWd1cmF0aW9uRmFpbGVkKGxpZmU6IG51bWJlciA9IHRoaXMuX3RpbWVPdXQpIHtcclxuICAgICAgICBpZiAodGhpcy5lbnZpcm9ubWVudCAmJiAhdGhpcy5lbnZpcm9ubWVudC5zaG93RXJyb3JNZXNzYWdlSW5Ub2FzdCkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdlcnJvciBtZXNhZ2UgaW4gdG9hc3QgaGFzIGRpc2FibGVkIGZyb20gZW52aXJvbm1lbnQgc2V0dGluZywgZGV0YWlsIHN0YXR1cyBjb2RlOiAnLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdN4bqtdCBraOG6qXUga2jDtG5nIMSRxrDhu6NjIMSR4buDIHRy4buRbmcnKSwgdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdNRVNTQUdFLkNPTU1PTl9FUlJPUl9IRUFERVInKSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5fbWVzc2FnZVNlcnZpY2UuYWRkKHtcclxuICAgICAgICAgICAgc2V2ZXJpdHk6ICdlcnJvcicsXHJcbiAgICAgICAgICAgIHN1bW1hcnk6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnTUVTU0FHRS5DT01NT05fRVJST1JfSEVBREVSJyksXHJcbiAgICAgICAgICAgIGRldGFpbDogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdN4bqtdCBraOG6qXUga2jDtG5nIMSRxrDhu6NjIMSR4buDIHRy4buRbmcnKSxcclxuICAgICAgICAgICAgbGlmZVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgc2hvd0NvbmZpcm0oXHJcbiAgICAgICAgbWVzc2FnZTogc3RyaW5nLCBoZWFkZXI6IHN0cmluZyA9ICcnLCBpY29uOiBzdHJpbmcgPSAnJyxcclxuICAgICAgICBhY2NlcHRWaXNpYmxlOiBib29sZWFuID0gdHJ1ZSxcclxuICAgICAgICByZWplY3RMYWJlbDogc3RyaW5nID0gdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdDT05GSVJNLlJFSkVDVF9MQUJFTCcpLFxyXG4gICAgICAgIHJlamVjdEljb246IHN0cmluZyA9ICdwaSBwaS10aW1lcydcclxuICAgICk6IFByb21pc2U8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5fY29uZmlybVNlcnZpY2UuY29uZmlybSh7XHJcbiAgICAgICAgICAgICAgICBtZXNzYWdlLFxyXG4gICAgICAgICAgICAgICAgaGVhZGVyOiBoZWFkZXIgPyBoZWFkZXIgOiAnWMOhYyBuaOG6rW4nLFxyXG4gICAgICAgICAgICAgICAgaWNvbjogaWNvbiA/IGljb24gOiAncGkgcGktZXhjbGFtYXRpb24tdHJpYW5nbGUnLFxyXG4gICAgICAgICAgICAgICAgYWNjZXB0VmlzaWJsZSxcclxuICAgICAgICAgICAgICAgIGFjY2VwdExhYmVsOiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ0NPTkZJUk0uQUNDRVBUX0xBQkVMJyksXHJcbiAgICAgICAgICAgICAgICByZWplY3RMYWJlbCxcclxuICAgICAgICAgICAgICAgIHJlamVjdEljb24sXHJcbiAgICAgICAgICAgICAgICBhY2NlcHQ6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHRydWUpO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHJlamVjdDogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChhY2NlcHRWaXNpYmxlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2hvd0NvbmZpcm1NYW55KFxyXG4gICAgICAgIG1lc3NhZ2U6IHN0cmluZyxcclxuICAgICAgICB0aW1lOiBudW1iZXIgPSAyLCBkZWxheTogbnVtYmVyID0gMTAwLFxyXG4gICAgICAgIGhlYWRlcjogc3RyaW5nID0gJycsIGljb246IHN0cmluZyA9ICcnLCBhY2NlcHRWaXNpYmxlOiBib29sZWFuID0gdHJ1ZSwgcmVqZWN0TGFiZWw6IHN0cmluZyA9IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnQ09ORklSTS5SRUpFQ1RfTEFCRUwnKSwgZGVsYXlUaW1lb3V0OiBudW1iZXIgPSAwKTogUHJvbWlzZTxhbnk+IHtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KGYgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fY29uZmlybVNlcnZpY2UuY29uZmlybSh7XHJcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSxcclxuICAgICAgICAgICAgICAgICAgICBoZWFkZXI6IGhlYWRlciA/IGhlYWRlciA6ICdYw6FjIG5o4bqtbicsXHJcbiAgICAgICAgICAgICAgICAgICAgaWNvbjogaWNvbiA/IGljb24gOiAncGkgcGktZXhjbGFtYXRpb24tdHJpYW5nbGUnLFxyXG4gICAgICAgICAgICAgICAgICAgIGFjY2VwdExhYmVsOiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ0NPTkZJUk0uQUNDRVBUX0xBQkVMJyksXHJcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0TGFiZWwsXHJcbiAgICAgICAgICAgICAgICAgICAgYWNjZXB0VmlzaWJsZSxcclxuICAgICAgICAgICAgICAgICAgICBhY2NlcHQ6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRpbWUgPT0gMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd0NvbmZpcm1NYW55KG1lc3NhZ2UsIHRpbWUgLSAxLCBkZWxheSwgaGVhZGVyLCBpY29uLCBhY2NlcHRWaXNpYmxlLCByZWplY3RMYWJlbCwgZGVsYXkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRoZW4ocmVzID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShyZXMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICByZWplY3Q6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFjY2VwdFZpc2libGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0sIGRlbGF5VGltZW91dCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2hvd0RlbGV0ZUNvbmZpcm0obWVzc2FnZTogc3RyaW5nID0gJycsIGljb246IHN0cmluZyA9ICcnKTogUHJvbWlzZTxhbnk+IHtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLl9jb25maXJtU2VydmljZS5jb25maXJtKHtcclxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UgPyBtZXNzYWdlIDogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdDT05GSVJNLkRFRkFVTFRfREVMRVRFX0NPTkZJUk0nKSxcclxuICAgICAgICAgICAgICAgIGhlYWRlcjogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdDT05GSVJNLkRFRkFVTFRfREVMRVRFX0NPTkZJUk1fVElUTEUnKSxcclxuICAgICAgICAgICAgICAgIGljb246IGljb24gPyBpY29uIDogJ3BpIHBpLXRyYXNoJyxcclxuICAgICAgICAgICAgICAgIGFjY2VwdExhYmVsOiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ0NPTkZJUk0uQUNDRVBUX0xBQkVMJyksXHJcbiAgICAgICAgICAgICAgICByZWplY3RMYWJlbDogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdDT05GSVJNLlJFSkVDVF9MQUJFTCcpLFxyXG4gICAgICAgICAgICAgICAgYWNjZXB0OiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICByZWplY3Q6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgYWRkRXJyb3JNZXNzYWdlKG1zZ3M6IE1lc3NhZ2VbXSwgY29udGVudCkge1xyXG4gICAgICAgIG1zZ3MucHVzaCh7IHNldmVyaXR5OiAnZXJyb3InLCBzdW1tYXJ5OiAnRXJyb3IgTWVzc2FnZScsIGRldGFpbDogJ1ZhbGlkYXRpb24gZmFpbGVkJyB9KTtcclxuICAgIH1cclxuXHJcbiAgICBjbGVhckVycm9yTWVzc2FnZShtc2dzOiBNZXNzYWdlW10pIHtcclxuICAgICAgICBtc2dzLmxlbmd0aCA9IDA7XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
402
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi9wcm9qZWN0cy90bngtc2hhcmVkL3NyYy9saWIvIiwic291cmNlcyI6WyJzZXJ2aWNlcy9ub3RpZmllci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLG1CQUFtQixFQUFXLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBR3JGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7OztBQUs5RCxNQUFNLE9BQU8sZUFBZTtJQUd4QixFQUFFO0lBQ0YsOENBQThDO0lBQzlDLDBDQUEwQztJQUMxQywrQ0FBK0M7SUFFL0MsWUFDWSxlQUErQixFQUMvQixlQUFvQyxFQUNwQyxpQkFBbUMsRUFDbkMsb0JBQXlDO1FBSHpDLG9CQUFlLEdBQWYsZUFBZSxDQUFnQjtRQUMvQixvQkFBZSxHQUFmLGVBQWUsQ0FBcUI7UUFDcEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFrQjtRQUNuQyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXFCO1FBWDdDLGFBQVEsR0FBRyxJQUFJLENBQUM7UUFhcEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsU0FBUyxFQUFFLENBQUMsV0FBVyxDQUFDO0lBQ3pFLENBQUM7SUFFRCxVQUFVLENBQUMsT0FHUCxFQUFFO1FBQ0YsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ1YsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO1NBQy9CO1FBQ0QsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDdkIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztTQUNs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QUFVLFNBQUM7Z0JBQ1IsVUFBVSxFQUFFLE1BQU07YUFDckI7OztZQVBzQyxjQUFjO1lBQTVDLG1CQUFtQjtZQURuQixnQkFBZ0I7WUFJaEIsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IENvbmZpcm1hdGlvblNlcnZpY2UsIE1lc3NhZ2UsIE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAndG4tY3VzdG9tLXByaW1lbmcvYXBpJztcclxuaW1wb3J0IHsgTW9kdWxlQ29uZmlnIH0gZnJvbSAnLi4vY29uZmlncy9tb2R1bGUtY29uZmlnJztcclxuaW1wb3J0IHsgUmVzcG9uc2VSZXN1bHQgfSBmcm9tICcuLi9tb2RlbHMvcmVzcG9uc2UtcmVzdWx0JztcclxuaW1wb3J0IHsgTW9kdWxlQ29uZmlnU2VydmljZSB9IGZyb20gJy4vbW9kdWxlLWNvbmZpZy5zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgTm90aWZpZXJTZXJ2aWNlIHtcclxuICAgIHByaXZhdGUgX3RpbWVPdXQgPSA1MDAwO1xyXG4gICAgZW52aXJvbm1lbnQ6IGFueTtcclxuICAgIC8vXHJcbiAgICAvLyBzdGF0aWMgX3RyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2U7XHJcbiAgICAvLyBzdGF0aWMgX21lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZTtcclxuICAgIC8vIHN0YXRpYyBfY29uZmlybVNlcnZpY2U6IENvbmZpcm1hdGlvblNlcnZpY2U7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSBfbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgX2NvbmZpcm1TZXJ2aWNlOiBDb25maXJtYXRpb25TZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgX3RyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBfbW9kdWxlQ29uZmlnU2VydmljZTogTW9kdWxlQ29uZmlnU2VydmljZVxyXG4gICAgKSB7XHJcbiAgICAgICAgdGhpcy5lbnZpcm9ubWVudCA9IHRoaXMuX21vZHVsZUNvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnKCkuZW52aXJvbm1lbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0U2VydmljZShvcHRzOiB7XHJcbiAgICAgICAgZW52PzogYW55LCB0cmFuc2xhdGVTZXJ2aWNlPzogVHJhbnNsYXRlU2VydmljZSxcclxuICAgICAgICBtZXNzYWdlU2VydmljZT86IE1lc3NhZ2VTZXJ2aWNlLCBjb25maXJtU2VydmljZT86IENvbmZpcm1hdGlvblNlcnZpY2VcclxuICAgIH0gPSB7fSkge1xyXG4gICAgICAgIGlmIChvcHRzLmVudikge1xyXG4gICAgICAgICAgICB0aGlzLmVudmlyb25tZW50ID0gb3B0cy5lbnY7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChvcHRzLnRyYW5zbGF0ZVNlcnZpY2UpIHtcclxuICAgICAgICAgICAgdGhpcy5fdHJhbnNsYXRlU2VydmljZSA9IG9wdHMudHJhbnNsYXRlU2VydmljZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChvcHRzLm1lc3NhZ2VTZXJ2aWNlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX21lc3NhZ2VTZXJ2aWNlID0gb3B0cy5tZXNzYWdlU2VydmljZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChvcHRzLmNvbmZpcm1TZXJ2aWNlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2NvbmZpcm1TZXJ2aWNlID0gb3B0cy5jb25maXJtU2VydmljZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc2hvd1N1Y2Nlc3MobWVzc2FnZTogc3RyaW5nLCBoZWFkZXI6IHN0cmluZyA9ICdUaMO0bmcgYsOhbycsIGxpZmU6IG51bWJlciA9IHRoaXMuX3RpbWVPdXQpIHtcclxuICAgICAgICB0aGlzLl9tZXNzYWdlU2VydmljZS5hZGQoe1xyXG4gICAgICAgICAgICBzZXZlcml0eTogJ3N1Y2Nlc3MnLFxyXG4gICAgICAgICAgICBzdW1tYXJ5OiBoZWFkZXIsXHJcbiAgICAgICAgICAgIGRldGFpbDogbWVzc2FnZSxcclxuICAgICAgICAgICAgbGlmZVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHNob3dJbnNlcnREYXRhU3VjY2VzcyhsaWZlOiBudW1iZXIgPSB0aGlzLl90aW1lT3V0KSB7XHJcbiAgICAgICAgdGhpcy5fbWVzc2FnZVNlcnZpY2UuYWRkKHtcclxuICAgICAgICAgICAgc2V2ZXJpdHk6ICdzdWNjZXNzJyxcclxuICAgICAgICAgICAgc3VtbWFyeTogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdNRVNTQUdFLkNPTU1PTl9TVUNDRVNTX0hFQURFUicpLFxyXG4gICAgICAgICAgICBkZXRhaWw6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnTUVTU0FHRS5JTlNFUlRfREFUQV9TVUNDRVNTJyksXHJcbiAgICAgICAgICAgIGxpZmVcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBzaG93VXBkYXRlRGF0YVN1Y2Nlc3MobGlmZTogbnVtYmVyID0gdGhpcy5fdGltZU91dCkge1xyXG4gICAgICAgIHRoaXMuX21lc3NhZ2VTZXJ2aWNlLmFkZCh7XHJcbiAgICAgICAgICAgIHNldmVyaXR5OiAnc3VjY2VzcycsXHJcbiAgICAgICAgICAgIHN1bW1hcnk6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnTUVTU0FHRS5DT01NT05fU1VDQ0VTU19IRUFERVInKSxcclxuICAgICAgICAgICAgZGV0YWlsOiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ01FU1NBR0UuVVBEQVRFX0RBVEFfU1VDQ0VTUycpLFxyXG4gICAgICAgICAgICBsaWZlXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2hvd0RlbGV0ZURhdGFTdWNjZXNzKGxpZmU6IG51bWJlciA9IHRoaXMuX3RpbWVPdXQpIHtcclxuICAgICAgICB0aGlzLl9tZXNzYWdlU2VydmljZS5hZGQoe1xyXG4gICAgICAgICAgICBzZXZlcml0eTogJ3N1Y2Nlc3MnLFxyXG4gICAgICAgICAgICBzdW1tYXJ5OiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ01FU1NBR0UuQ09NTU9OX1NVQ0NFU1NfSEVBREVSJyksXHJcbiAgICAgICAgICAgIGRldGFpbDogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdNRVNTQUdFLkRFTEVURV9EQVRBX1NVQ0NFU1MnKSxcclxuICAgICAgICAgICAgbGlmZVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHNob3dEZWxldGVEYXRhRXJyb3IobGlmZTogbnVtYmVyID0gdGhpcy5fdGltZU91dCkge1xyXG4gICAgICAgIGlmICh0aGlzLmVudmlyb25tZW50ICYmICF0aGlzLmVudmlyb25tZW50LnNob3dFcnJvck1lc3NhZ2VJblRvYXN0KSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ2Vycm9yIG1lc2FnZSBpbiB0b2FzdCBoYXMgZGlzYWJsZWQgZnJvbSBlbnZpcm9ubWVudCBzZXR0aW5nLCBkZXRhaWwgbWVzc2FnZTogJywgdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdNRVNTQUdFLkRFTEVURV9EQVRBX0VSUk9SJyksXHJcbiAgICAgICAgICAgICAgICB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ01FU1NBR0UuQ09NTU9OX0VSUk9SX0hFQURFUicpKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9tZXNzYWdlU2VydmljZS5hZGQoe1xyXG4gICAgICAgICAgICBzZXZlcml0eTogJ2Vycm9yJyxcclxuICAgICAgICAgICAgc3VtbWFyeTogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdNRVNTQUdFLkNPTU1PTl9FUlJPUl9IRUFERVInKSxcclxuICAgICAgICAgICAgZGV0YWlsOiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ01FU1NBR0UuREVMRVRFX0RBVEFfRVJST1InKSxcclxuICAgICAgICAgICAgbGlmZVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHNob3dEZWxldGVEYXRhRW1wdHlFcnJvcihsaWZlOiBudW1iZXIgPSB0aGlzLl90aW1lT3V0KSB7XHJcbiAgICAgICAgdGhpcy5fbWVzc2FnZVNlcnZpY2UuYWRkKHtcclxuICAgICAgICAgICAgc2V2ZXJpdHk6ICdlcnJvcicsXHJcbiAgICAgICAgICAgIHN1bW1hcnk6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnTUVTU0FHRS5DT01NT05fRVJST1JfSEVBREVSJyksXHJcbiAgICAgICAgICAgIGRldGFpbDogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdC4bqhbiBwaOG6o2kgY2jhu41uIMOtdCBuaOG6pXQgMSBi4bqjbiBnaGkgxJHhu4MgeMOzYScpLFxyXG4gICAgICAgICAgICBsaWZlXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2hvd0R1cGxpY2F0ZURhdGFFcnJvcihsaWZlOiBudW1iZXIgPSB0aGlzLl90aW1lT3V0KSB7XHJcbiAgICAgICAgdGhpcy5fbWVzc2FnZVNlcnZpY2UuYWRkKHtcclxuICAgICAgICAgICAgc2V2ZXJpdHk6ICdlcnJvcicsXHJcbiAgICAgICAgICAgIHN1bW1hcnk6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnTUVTU0FHRS5DT01NT05fRVJST1JfSEVBREVSJyksXHJcbiAgICAgICAgICAgIGRldGFpbDogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdNw6MgY+G7mXQga2jDtG5nIHRo4buDIGLhu4sgdHLDuW5nIGzhurdwJyksXHJcbiAgICAgICAgICAgIGxpZmVcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBzaG93V2FybmluZyhtZXNzYWdlOiBzdHJpbmcsIGhlYWRlcjogc3RyaW5nID0gJ1Row7RuZyBiw6FvJywgbGlmZTogbnVtYmVyID0gdGhpcy5fdGltZU91dCkge1xyXG4gICAgICAgIGlmICh0aGlzLmVudmlyb25tZW50ICYmICF0aGlzLmVudmlyb25tZW50LnNob3dXYXJuaW5nTWVzc2FnZUluVG9hc3QpIHtcclxuICAgICAgICAgICAgY29uc29sZS53YXJuKCdlcnJvciBtZXNhZ2UgaW4gdG9hc3QgaGFzIGRpc2FibGVkIGZyb20gZW52aXJvbm1lbnQgc2V0dGluZywgZGV0YWlsIG1lc3NhZ2U6ICcsIGhlYWRlciwgbWVzc2FnZSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5fbWVzc2FnZVNlcnZpY2UuYWRkKHtcclxuICAgICAgICAgICAgc2V2ZXJpdHk6ICd3YXJuJyxcclxuICAgICAgICAgICAgc3VtbWFyeTogaGVhZGVyLFxyXG4gICAgICAgICAgICBkZXRhaWw6IG1lc3NhZ2UsXHJcbiAgICAgICAgICAgIGxpZmVcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBzaG93RXJyb3IobWVzc2FnZTogc3RyaW5nLCBrZXk6IHN0cmluZyA9ICcnLCBoZWFkZXI6IHN0cmluZyA9ICdM4buXaScsIGxpZmU6IG51bWJlciA9IHRoaXMuX3RpbWVPdXQpIHtcclxuICAgICAgICBpZiAodGhpcy5lbnZpcm9ubWVudCAmJiAhdGhpcy5lbnZpcm9ubWVudC5zaG93RXJyb3JNZXNzYWdlSW5Ub2FzdCkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdlcnJvciBtZXNhZ2UgaW4gdG9hc3QgaGFzIGRpc2FibGVkIGZyb20gZW52aXJvbm1lbnQgc2V0dGluZywgZGV0YWlsIG1lc3NhZ2U6ICcsIG1lc3NhZ2UsIGhlYWRlcik7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChrZXkpIHtcclxuICAgICAgICAgICAgdGhpcy5fbWVzc2FnZVNlcnZpY2UuYWRkKHtcclxuICAgICAgICAgICAgICAgIGtleSxcclxuICAgICAgICAgICAgICAgIHNldmVyaXR5OiAnZXJyb3InLFxyXG4gICAgICAgICAgICAgICAgc3VtbWFyeTogaGVhZGVyLFxyXG4gICAgICAgICAgICAgICAgZGV0YWlsOiBtZXNzYWdlLFxyXG4gICAgICAgICAgICAgICAgbGlmZVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLl9tZXNzYWdlU2VydmljZS5hZGQoe1xyXG4gICAgICAgICAgICAgICAgc2V2ZXJpdHk6ICdlcnJvcicsXHJcbiAgICAgICAgICAgICAgICBzdW1tYXJ5OiBoZWFkZXIsXHJcbiAgICAgICAgICAgICAgICBkZXRhaWw6IG1lc3NhZ2UsXHJcbiAgICAgICAgICAgICAgICBsaWZlXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzaG93RXhjZXB0aW9uKGVycjogYW55LCBoZWFkZXI6IHN0cmluZyA9ICdUaMO0bmcgYsOhbycsIGxpZmU6IG51bWJlciA9IHRoaXMuX3RpbWVPdXQpIHtcclxuICAgICAgICBjb25zdCBtZXNzYWdlID0gJ0PDsyBs4buXaSB44bqjeSByYS4gTGnDqm4gaOG7hyBxdeG6o24gdHLhu4sgdmnDqm4gxJHhu4MgYmnhur90IHRow6ptIGNoaSB0aeG6v3QhJztcclxuICAgICAgICBpZiAodGhpcy5lbnZpcm9ubWVudCAmJiAhdGhpcy5lbnZpcm9ubWVudC5zaG93V2FybmluZ01lc3NhZ2VJblRvYXN0KSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignZXJyb3IgbWVzYWdlIGluIHRvYXN0IGhhcyBkaXNhYmxlZCBmcm9tIGVudmlyb25tZW50IHNldHRpbmcsIGRldGFpbCBtZXNzYWdlOiAnLCBoZWFkZXIsIG1lc3NhZ2UpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX21lc3NhZ2VTZXJ2aWNlLmFkZCh7XHJcbiAgICAgICAgICAgIHNldmVyaXR5OiAnd2FybicsXHJcbiAgICAgICAgICAgIHN1bW1hcnk6IGhlYWRlcixcclxuICAgICAgICAgICAgZGV0YWlsOiBtZXNzYWdlLFxyXG4gICAgICAgICAgICBsaWZlXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2hvd1dhcm5pbmdCeVJlcG9uc2UocmVzOiBSZXNwb25zZVJlc3VsdCkge1xyXG4gICAgICAgIGxldCBtZXNzYWdlID0gcmVzLm1lc3NhZ2U7XHJcbiAgICAgICAgaWYgKCFtZXNzYWdlKVxyXG4gICAgICAgICAgICBtZXNzYWdlID0gJ0PDsyBs4buXaSB44bqjeSByYSwgdnVpIGzDsm5nIGxpw6puIGjhu4cgcXXhuqNuIHRy4buLIHZpw6puISc7XHJcbiAgICAgICAgdGhpcy5zaG93V2FybmluZyhtZXNzYWdlKTtcclxuICAgIH1cclxuXHJcbiAgICBzaG93QnVzaW5lc3NFcnJvcihtZXNzYWdlOiBzdHJpbmcsIGtleTogc3RyaW5nID0gJycsIGhlYWRlcjogc3RyaW5nID0gJ0zhu5dpJywgbGlmZTogbnVtYmVyID0gdGhpcy5fdGltZU91dCkge1xyXG4gICAgICAgIGlmIChrZXkpIHtcclxuICAgICAgICAgICAgdGhpcy5fbWVzc2FnZVNlcnZpY2UuYWRkKHtcclxuICAgICAgICAgICAgICAgIGtleSxcclxuICAgICAgICAgICAgICAgIHNldmVyaXR5OiAnZXJyb3InLFxyXG4gICAgICAgICAgICAgICAgc3VtbWFyeTogaGVhZGVyLFxyXG4gICAgICAgICAgICAgICAgZGV0YWlsOiBtZXNzYWdlLFxyXG4gICAgICAgICAgICAgICAgbGlmZVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLl9tZXNzYWdlU2VydmljZS5hZGQoe1xyXG4gICAgICAgICAgICAgICAgc2V2ZXJpdHk6ICdlcnJvcicsXHJcbiAgICAgICAgICAgICAgICBzdW1tYXJ5OiBoZWFkZXIsXHJcbiAgICAgICAgICAgICAgICBkZXRhaWw6IG1lc3NhZ2UsXHJcbiAgICAgICAgICAgICAgICBsaWZlXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzaG93SHR0cFVua25vd0Vycm9yKGxpZmU6IG51bWJlciA9IHRoaXMuX3RpbWVPdXQpIHtcclxuICAgICAgICBpZiAodGhpcy5lbnZpcm9ubWVudCAmJiAhdGhpcy5lbnZpcm9ubWVudC5zaG93RXJyb3JNZXNzYWdlSW5Ub2FzdCkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdlcnJvciBtZXNhZ2UgaW4gdG9hc3QgaGFzIGRpc2FibGVkIGZyb20gZW52aXJvbm1lbnQgc2V0dGluZywgZGV0YWlsIG1lc3NhZ2U6ICcsXHJcbiAgICAgICAgICAgICAgICB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ01FU1NBR0UuSFRUUF9VTktOT1dfRVJST1JfSEVBREVSJyksIHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnTUVTU0FHRS5IVFRQX1VOS05PV19FUlJPUicpKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5fbWVzc2FnZVNlcnZpY2UuYWRkKHtcclxuICAgICAgICAgICAgc2V2ZXJpdHk6ICdlcnJvcicsXHJcbiAgICAgICAgICAgIHN1bW1hcnk6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnTUVTU0FHRS5IVFRQX1VOS05PV19FUlJPUl9IRUFERVInKSxcclxuICAgICAgICAgICAgZGV0YWlsOiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ01FU1NBR0UuSFRUUF9VTktOT1dfRVJST1InKSxcclxuICAgICAgICAgICAgbGlmZVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHNob3dSZXNwb25zZUVycm9yKHN0YXR1czogbnVtYmVyLCBsaWZlOiBudW1iZXIgPSB0aGlzLl90aW1lT3V0LCBzZXJ2aWNlTmFtZTogc3RyaW5nID0gJycpIHtcclxuICAgICAgICBpZiAodGhpcy5lbnZpcm9ubWVudCAmJiAhdGhpcy5lbnZpcm9ubWVudC5zaG93RXJyb3JNZXNzYWdlSW5Ub2FzdCkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdlcnJvciBtZXNhZ2UgaW4gdG9hc3QgaGFzIGRpc2FibGVkIGZyb20gZW52aXJvbm1lbnQgc2V0dGluZywgZGV0YWlsIHN0YXR1cyBjb2RlOiAnLCBzdGF0dXMpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChzdGF0dXMgPT09IDQwNCkge1xyXG4gICAgICAgICAgICB0aGlzLl9tZXNzYWdlU2VydmljZS5hZGQoe1xyXG4gICAgICAgICAgICAgICAgc2V2ZXJpdHk6ICdlcnJvcicsXHJcbiAgICAgICAgICAgICAgICBzdW1tYXJ5OiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ01FU1NBR0UuQ09NTU9OX0VSUk9SX0hFQURFUicpLFxyXG4gICAgICAgICAgICAgICAgZGV0YWlsOiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ01FU1NBR0UuTk9UX0ZPVU5EX0VSUk9SJyksXHJcbiAgICAgICAgICAgICAgICBsaWZlXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoc3RhdHVzID09PSA0MDEpIHtcclxuICAgICAgICAgICAgdGhpcy5fbWVzc2FnZVNlcnZpY2UuYWRkKHtcclxuICAgICAgICAgICAgICAgIHNldmVyaXR5OiAnZXJyb3InLFxyXG4gICAgICAgICAgICAgICAgc3VtbWFyeTogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdNRVNTQUdFLkNPTU1PTl9FUlJPUl9IRUFERVInKSxcclxuICAgICAgICAgICAgICAgIGRldGFpbDogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdNRVNTQUdFLlVOQVVUSE9SSVpFRF9FUlJPUicpLFxyXG4gICAgICAgICAgICAgICAgbGlmZVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2UgaWYgKHN0YXR1cyA9PT0gNDAzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX21lc3NhZ2VTZXJ2aWNlLmFkZCh7XHJcbiAgICAgICAgICAgICAgICBzZXZlcml0eTogJ2Vycm9yJyxcclxuICAgICAgICAgICAgICAgIHN1bW1hcnk6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnTUVTU0FHRS5DT01NT05fRVJST1JfSEVBREVSJyksXHJcbiAgICAgICAgICAgICAgICBkZXRhaWw6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnTUVTU0FHRS5BQ0NFU1NfREVOSU5FRF9FUlJPUicpLFxyXG4gICAgICAgICAgICAgICAgbGlmZVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2UgaWYgKHN0YXR1cyA9PT0gNTAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX21lc3NhZ2VTZXJ2aWNlLmFkZCh7XHJcbiAgICAgICAgICAgICAgICBzZXZlcml0eTogJ2Vycm9yJyxcclxuICAgICAgICAgICAgICAgIHN1bW1hcnk6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnTUVTU0FHRS5DT01NT05fRVJST1JfSEVBREVSJyksXHJcbiAgICAgICAgICAgICAgICBkZXRhaWw6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnTUVTU0FHRS5JTlRFUk5BTF9TRVJWRVJfRVJST1InKSxcclxuICAgICAgICAgICAgICAgIGxpZmVcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChzdGF0dXMgPT09IDQwOSkge1xyXG4gICAgICAgICAgICB0aGlzLl9tZXNzYWdlU2VydmljZS5hZGQoe1xyXG4gICAgICAgICAgICAgICAgc2V2ZXJpdHk6ICdlcnJvcicsXHJcbiAgICAgICAgICAgICAgICBzdW1tYXJ5OiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ01FU1NBR0UuQ09NTU9OX0VSUk9SX0hFQURFUicpLFxyXG4gICAgICAgICAgICAgICAgZGV0YWlsOiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ01FU1NBR0UuQ09ORkxJQ1RfRVJST1InKSxcclxuICAgICAgICAgICAgICAgIGxpZmVcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChzdGF0dXMgPT09IDQwMCkge1xyXG4gICAgICAgICAgICB0aGlzLl9tZXNzYWdlU2VydmljZS5hZGQoe1xyXG4gICAgICAgICAgICAgICAgc2V2ZXJpdHk6ICdlcnJvcicsXHJcbiAgICAgICAgICAgICAgICBzdW1tYXJ5OiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ01FU1NBR0UuQ09NTU9OX0VSUk9SX0hFQURFUicpLFxyXG4gICAgICAgICAgICAgICAgZGV0YWlsOiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ1Z1aSBsw7JuZyBraeG7g20gdHJhIGThu68gbGnhu4d1IMSR4bqndSB2w6BvJyksXHJcbiAgICAgICAgICAgICAgICBsaWZlXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoc3RhdHVzID09PSAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX21lc3NhZ2VTZXJ2aWNlLmFkZCh7XHJcbiAgICAgICAgICAgICAgICBzZXZlcml0eTogJ2Vycm9yJyxcclxuICAgICAgICAgICAgICAgIHN1bW1hcnk6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnTUVTU0FHRS5DT01NT05fRVJST1JfSEVBREVSJyksXHJcbiAgICAgICAgICAgICAgICBkZXRhaWw6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChgVnVpIGzDsm5nIGtp4buDbSB0cmEgbOG6oWkgZOG7i2NoIHbhu6UgJHtzZXJ2aWNlTmFtZX1gKSxcclxuICAgICAgICAgICAgICAgIGxpZmVcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHNob3dJbnNlcnREYXRhRmFpbGVkKGxpZmU6IG51bWJlciA9IHRoaXMuX3RpbWVPdXQpIHtcclxuICAgICAgICBpZiAodGhpcy5lbnZpcm9ubWVudCAmJiAhdGhpcy5lbnZpcm9ubWVudC5zaG93RXJyb3JNZXNzYWdlSW5Ub2FzdCkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdlcnJvciBtZXNhZ2UgaW4gdG9hc3QgaGFzIGRpc2FibGVkIGZyb20gZW52aXJvbm1lbnQgc2V0dGluZywgZGV0YWlsIHN0YXR1cyBjb2RlOiAnLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdNRVNTQUdFLklOU0VSVF9EQVRBX0ZBSUxFRCcpLCB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ01FU1NBR0UuQ09NTU9OX0VSUk9SX0hFQURFUicpKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9tZXNzYWdlU2VydmljZS5hZGQoe1xyXG4gICAgICAgICAgICBzZXZlcml0eTogJ2Vycm9yJyxcclxuICAgICAgICAgICAgc3VtbWFyeTogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdNRVNTQUdFLkNPTU1PTl9FUlJPUl9IRUFERVInKSxcclxuICAgICAgICAgICAgZGV0YWlsOiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ01FU1NBR0UuSU5TRVJUX0RBVEFfRkFJTEVEJyksXHJcbiAgICAgICAgICAgIGxpZmVcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBzaG93VXBkYXRlRGF0YUZhaWxlZChsaWZlOiBudW1iZXIgPSB0aGlzLl90aW1lT3V0KSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZW52aXJvbm1lbnQgJiYgIXRoaXMuZW52aXJvbm1lbnQuc2hvd0Vycm9yTWVzc2FnZUluVG9hc3QpIHtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcignZXJyb3IgbWVzYWdlIGluIHRvYXN0IGhhcyBkaXNhYmxlZCBmcm9tIGVudmlyb25tZW50IHNldHRpbmcsIGRldGFpbCBzdGF0dXMgY29kZTogJyxcclxuICAgICAgICAgICAgICAgIHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnTUVTU0FHRS5VUERBVEVfREFUQV9GQUlMRUQnKSwgdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdNRVNTQUdFLkNPTU1PTl9FUlJPUl9IRUFERVInKSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5fbWVzc2FnZVNlcnZpY2UuYWRkKHtcclxuICAgICAgICAgICAgc2V2ZXJpdHk6ICdlcnJvcicsXHJcbiAgICAgICAgICAgIHN1bW1hcnk6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnTUVTU0FHRS5DT01NT05fRVJST1JfSEVBREVSJyksXHJcbiAgICAgICAgICAgIGRldGFpbDogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdNRVNTQUdFLlVQREFURV9EQVRBX0ZBSUxFRCcpLFxyXG4gICAgICAgICAgICBsaWZlXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2hvd0xvY2tVc2VyRmFpbGVkKGxpZmU6IG51bWJlciA9IHRoaXMuX3RpbWVPdXQpIHtcclxuICAgICAgICBpZiAodGhpcy5lbnZpcm9ubWVudCAmJiAhdGhpcy5lbnZpcm9ubWVudC5zaG93RXJyb3JNZXNzYWdlSW5Ub2FzdCkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdlcnJvciBtZXNhZ2UgaW4gdG9hc3QgaGFzIGRpc2FibGVkIGZyb20gZW52aXJvbm1lbnQgc2V0dGluZywgZGV0YWlsIHN0YXR1cyBjb2RlOiAnLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdLaMOzYSBuZ8aw4budaSBkw7luZyB0aOG6pXQgYuG6oWknKSwgdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdNRVNTQUdFLkNPTU1PTl9FUlJPUl9IRUFERVInKSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5fbWVzc2FnZVNlcnZpY2UuYWRkKHtcclxuICAgICAgICAgICAgc2V2ZXJpdHk6ICdlcnJvcicsXHJcbiAgICAgICAgICAgIHN1bW1hcnk6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnTUVTU0FHRS5DT01NT05fRVJST1JfSEVBREVSJyksXHJcbiAgICAgICAgICAgIGRldGFpbDogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdLaMOzYSBuZ8aw4budaSBkw7luZyB0aOG6pXQgYuG6oWknKSxcclxuICAgICAgICAgICAgbGlmZVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHNob3dVbmxvY2tVc2VyRmFpbGVkKGxpZmU6IG51bWJlciA9IHRoaXMuX3RpbWVPdXQpIHtcclxuICAgICAgICBpZiAodGhpcy5lbnZpcm9ubWVudCAmJiAhdGhpcy5lbnZpcm9ubWVudC5zaG93RXJyb3JNZXNzYWdlSW5Ub2FzdCkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdlcnJvciBtZXNhZ2UgaW4gdG9hc3QgaGFzIGRpc2FibGVkIGZyb20gZW52aXJvbm1lbnQgc2V0dGluZywgZGV0YWlsIHN0YXR1cyBjb2RlOiAnLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdN4bufIGtow7NhIG5nxrDhu51pIGTDuW5nIHRo4bqldCBi4bqhaScpLCB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ01FU1NBR0UuQ09NTU9OX0VSUk9SX0hFQURFUicpKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9tZXNzYWdlU2VydmljZS5hZGQoe1xyXG4gICAgICAgICAgICBzZXZlcml0eTogJ2Vycm9yJyxcclxuICAgICAgICAgICAgc3VtbWFyeTogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdNRVNTQUdFLkNPTU1PTl9FUlJPUl9IRUFERVInKSxcclxuICAgICAgICAgICAgZGV0YWlsOiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ03hu58ga2jDs2EgbmfGsOG7nWkgZMO5bmcgdGjhuqV0IGLhuqFpJyksXHJcbiAgICAgICAgICAgIGxpZmVcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBzaG93VXBkYXRlRGF0YVNpbmdsZUZhaWxlZChsaWZlOiBudW1iZXIgPSB0aGlzLl90aW1lT3V0KSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZW52aXJvbm1lbnQgJiYgIXRoaXMuZW52aXJvbm1lbnQuc2hvd0Vycm9yTWVzc2FnZUluVG9hc3QpIHtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcignZXJyb3IgbWVzYWdlIGluIHRvYXN0IGhhcyBkaXNhYmxlZCBmcm9tIGVudmlyb25tZW50IHNldHRpbmcsIGRldGFpbCBzdGF0dXMgY29kZTogJyxcclxuICAgICAgICAgICAgICAgIHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnTcOjIGhv4bq3YyB0w6puIGRhbmggbeG7pWMgxJHDoyB04buTbiB04bqhaScpLCB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ01FU1NBR0UuQ09NTU9OX0VSUk9SX0hFQURFUicpKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9tZXNzYWdlU2VydmljZS5hZGQoe1xyXG4gICAgICAgICAgICBzZXZlcml0eTogJ2Vycm9yJyxcclxuICAgICAgICAgICAgc3VtbWFyeTogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdNRVNTQUdFLkNPTU1PTl9FUlJPUl9IRUFERVInKSxcclxuICAgICAgICAgICAgZGV0YWlsOiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ03DoyBob+G6t2MgdMOqbiBkYW5oIG3hu6VjIMSRw6MgdOG7k24gdOG6oWknKSxcclxuICAgICAgICAgICAgbGlmZVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgc2hvd1VwZGF0ZURhdGFDb25maWd1cmF0aW9uRmFpbGVkKGxpZmU6IG51bWJlciA9IHRoaXMuX3RpbWVPdXQpIHtcclxuICAgICAgICBpZiAodGhpcy5lbnZpcm9ubWVudCAmJiAhdGhpcy5lbnZpcm9ubWVudC5zaG93RXJyb3JNZXNzYWdlSW5Ub2FzdCkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdlcnJvciBtZXNhZ2UgaW4gdG9hc3QgaGFzIGRpc2FibGVkIGZyb20gZW52aXJvbm1lbnQgc2V0dGluZywgZGV0YWlsIHN0YXR1cyBjb2RlOiAnLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdN4bqtdCBraOG6qXUga2jDtG5nIMSRxrDhu6NjIMSR4buDIHRy4buRbmcnKSwgdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdNRVNTQUdFLkNPTU1PTl9FUlJPUl9IRUFERVInKSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5fbWVzc2FnZVNlcnZpY2UuYWRkKHtcclxuICAgICAgICAgICAgc2V2ZXJpdHk6ICdlcnJvcicsXHJcbiAgICAgICAgICAgIHN1bW1hcnk6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnTUVTU0FHRS5DT01NT05fRVJST1JfSEVBREVSJyksXHJcbiAgICAgICAgICAgIGRldGFpbDogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdN4bqtdCBraOG6qXUga2jDtG5nIMSRxrDhu6NjIMSR4buDIHRy4buRbmcnKSxcclxuICAgICAgICAgICAgbGlmZVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgc2hvd0NvbmZpcm0oXHJcbiAgICAgICAgbWVzc2FnZTogc3RyaW5nLCBoZWFkZXI6IHN0cmluZyA9ICcnLCBpY29uOiBzdHJpbmcgPSAnJyxcclxuICAgICAgICBhY2NlcHRWaXNpYmxlOiBib29sZWFuID0gdHJ1ZSxcclxuICAgICAgICByZWplY3RMYWJlbDogc3RyaW5nID0gdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdDT05GSVJNLlJFSkVDVF9MQUJFTCcpLFxyXG4gICAgICAgIHJlamVjdEljb246IHN0cmluZyA9ICdwaSBwaS10aW1lcydcclxuICAgICk6IFByb21pc2U8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5fY29uZmlybVNlcnZpY2UuY29uZmlybSh7XHJcbiAgICAgICAgICAgICAgICBtZXNzYWdlLFxyXG4gICAgICAgICAgICAgICAgaGVhZGVyOiBoZWFkZXIgPyBoZWFkZXIgOiAnWMOhYyBuaOG6rW4nLFxyXG4gICAgICAgICAgICAgICAgaWNvbjogaWNvbiA/IGljb24gOiAncGkgcGktZXhjbGFtYXRpb24tdHJpYW5nbGUnLFxyXG4gICAgICAgICAgICAgICAgYWNjZXB0VmlzaWJsZSxcclxuICAgICAgICAgICAgICAgIGFjY2VwdExhYmVsOiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ0NPTkZJUk0uQUNDRVBUX0xBQkVMJyksXHJcbiAgICAgICAgICAgICAgICByZWplY3RMYWJlbCxcclxuICAgICAgICAgICAgICAgIHJlamVjdEljb24sXHJcbiAgICAgICAgICAgICAgICBhY2NlcHQ6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHRydWUpO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHJlamVjdDogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChhY2NlcHRWaXNpYmxlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2hvd0NvbmZpcm1NYW55KFxyXG4gICAgICAgIG1lc3NhZ2U6IHN0cmluZyxcclxuICAgICAgICB0aW1lOiBudW1iZXIgPSAyLCBkZWxheTogbnVtYmVyID0gMTAwLFxyXG4gICAgICAgIGhlYWRlcjogc3RyaW5nID0gJycsIGljb246IHN0cmluZyA9ICcnLCBhY2NlcHRWaXNpYmxlOiBib29sZWFuID0gdHJ1ZSwgcmVqZWN0TGFiZWw6IHN0cmluZyA9IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnQ09ORklSTS5SRUpFQ1RfTEFCRUwnKSwgZGVsYXlUaW1lb3V0OiBudW1iZXIgPSAwKTogUHJvbWlzZTxhbnk+IHtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KGYgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fY29uZmlybVNlcnZpY2UuY29uZmlybSh7XHJcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSxcclxuICAgICAgICAgICAgICAgICAgICBoZWFkZXI6IGhlYWRlciA/IGhlYWRlciA6ICdYw6FjIG5o4bqtbicsXHJcbiAgICAgICAgICAgICAgICAgICAgaWNvbjogaWNvbiA/IGljb24gOiAncGkgcGktZXhjbGFtYXRpb24tdHJpYW5nbGUnLFxyXG4gICAgICAgICAgICAgICAgICAgIGFjY2VwdExhYmVsOiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ0NPTkZJUk0uQUNDRVBUX0xBQkVMJyksXHJcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0TGFiZWwsXHJcbiAgICAgICAgICAgICAgICAgICAgYWNjZXB0VmlzaWJsZSxcclxuICAgICAgICAgICAgICAgICAgICBhY2NlcHQ6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRpbWUgPT0gMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd0NvbmZpcm1NYW55KG1lc3NhZ2UsIHRpbWUgLSAxLCBkZWxheSwgaGVhZGVyLCBpY29uLCBhY2NlcHRWaXNpYmxlLCByZWplY3RMYWJlbCwgZGVsYXkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRoZW4ocmVzID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShyZXMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICByZWplY3Q6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFjY2VwdFZpc2libGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0sIGRlbGF5VGltZW91dCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2hvd0RlbGV0ZUNvbmZpcm0obWVzc2FnZTogc3RyaW5nID0gJycsIGljb246IHN0cmluZyA9ICcnKTogUHJvbWlzZTxhbnk+IHtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLl9jb25maXJtU2VydmljZS5jb25maXJtKHtcclxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UgPyBtZXNzYWdlIDogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdDT05GSVJNLkRFRkFVTFRfREVMRVRFX0NPTkZJUk0nKSxcclxuICAgICAgICAgICAgICAgIGhlYWRlcjogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdDT05GSVJNLkRFRkFVTFRfREVMRVRFX0NPTkZJUk1fVElUTEUnKSxcclxuICAgICAgICAgICAgICAgIGljb246IGljb24gPyBpY29uIDogJ3BpIHBpLXRyYXNoJyxcclxuICAgICAgICAgICAgICAgIGFjY2VwdExhYmVsOiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ0NPTkZJUk0uQUNDRVBUX0xBQkVMJyksXHJcbiAgICAgICAgICAgICAgICByZWplY3RMYWJlbDogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdDT05GSVJNLlJFSkVDVF9MQUJFTCcpLFxyXG4gICAgICAgICAgICAgICAgYWNjZXB0OiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICByZWplY3Q6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgYWRkRXJyb3JNZXNzYWdlKG1zZ3M6IE1lc3NhZ2VbXSwgY29udGVudCkge1xyXG4gICAgICAgIG1zZ3MucHVzaCh7IHNldmVyaXR5OiAnZXJyb3InLCBzdW1tYXJ5OiAnRXJyb3IgTWVzc2FnZScsIGRldGFpbDogJ1ZhbGlkYXRpb24gZmFpbGVkJyB9KTtcclxuICAgIH1cclxuXHJcbiAgICBjbGVhckVycm9yTWVzc2FnZShtc2dzOiBNZXNzYWdlW10pIHtcclxuICAgICAgICBtc2dzLmxlbmd0aCA9IDA7XHJcbiAgICB9XHJcbn1cclxuIl19
|