@sinequa/assistant 3.4.3 → 3.5.0
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/chat/charts/chart/chart.component.d.ts +13 -0
- package/chat/chat-message/chat-message.component.d.ts +10 -3
- package/chat/chat.component.d.ts +27 -6
- package/chat/debug-message/debug-message.component.d.ts +17 -0
- package/chat/types.d.ts +29 -3
- package/chat/websocket-chat.service.d.ts +1 -0
- package/esm2020/chat/charts/chart/chart.component.mjs +40 -0
- package/esm2020/chat/chat-message/chat-message.component.mjs +37 -9
- package/esm2020/chat/chat-settings-v3/chat-settings-v3.component.mjs +2 -1
- package/esm2020/chat/chat.component.mjs +49 -12
- package/esm2020/chat/chat.service.mjs +2 -1
- package/esm2020/chat/debug-message/debug-message.component.mjs +43 -0
- package/esm2020/chat/rest-chat.service.mjs +4 -2
- package/esm2020/chat/types.mjs +6 -3
- package/esm2020/chat/websocket-chat.service.mjs +15 -6
- package/fesm2015/sinequa-assistant-chat.mjs +184 -27
- package/fesm2015/sinequa-assistant-chat.mjs.map +1 -1
- package/fesm2020/sinequa-assistant-chat.mjs +180 -27
- package/fesm2020/sinequa-assistant-chat.mjs.map +1 -1
- package/package.json +2 -1
|
@@ -138,6 +138,7 @@ export class ChatService {
|
|
|
138
138
|
// Update the chat config and store its defaultValues in the user preferences
|
|
139
139
|
this.updateChatConfig({ ...standardChatConfig }, hashes, true);
|
|
140
140
|
this.initConfig$.next(true);
|
|
141
|
+
this.generateAuditEvent("configuration.edit", { 'configuration': JSON.stringify({ ...standardChatConfig }) });
|
|
141
142
|
}
|
|
142
143
|
else if (res === -4 /* ModalResult.No */) {
|
|
143
144
|
// Do not notify the user about changes while this skipped version is not updated
|
|
@@ -281,4 +282,4 @@ ChatService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version:
|
|
|
281
282
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ChatService, decorators: [{
|
|
282
283
|
type: Injectable
|
|
283
284
|
}] });
|
|
284
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYXNzaXN0YW50L2NoYXQvY2hhdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbkQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxzQkFBc0IsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFHLE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDbkQsT0FBTyxFQUEySyxnQkFBZ0IsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNwTixPQUFPLEVBQUUsVUFBVSxFQUFTLE1BQU0seUJBQXlCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2pELE9BQU8sR0FBRyxNQUFNLFlBQVksQ0FBQztBQUM3QixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDM0MsT0FBTyxFQUFlLFdBQVcsRUFBZSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMxRixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLFVBQVUsQ0FBQzs7QUFHNUMsTUFBTSxPQUFnQixXQUFXO0lBRGpDO1FBSUUscUVBQXFFO1FBQ3JFLGlCQUFZLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDbkQsb0VBQW9FO1FBQ3BFLGdCQUFXLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDbEQsd0NBQXdD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QyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQzFDLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBQyxHQUFHLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFDLENBQUMsQ0FBQztJQUM3SCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBYyxFQUFFLE9BQVk7UUFDOUMsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUNuQixZQUFZLEVBQ1osQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FDN0MsQ0FBQztJQUNKLENBQUM7O3dHQWpXbUIsV0FBVzs0R0FBWCxXQUFXOzJGQUFYLFdBQVc7a0JBRGhDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgVXNlclByZWZlcmVuY2VzIH0gZnJvbSBcIkBzaW5lcXVhL2NvbXBvbmVudHMvdXNlci1zZXR0aW5nc1wiO1xuaW1wb3J0IHsgTG9naW5TZXJ2aWNlIH0gZnJvbSBcIkBzaW5lcXVhL2NvcmUvbG9naW5cIjtcbmltcG9ydCB7IE5vdGlmaWNhdGlvbnNTZXJ2aWNlIH0gZnJvbSBcIkBzaW5lcXVhL2NvcmUvbm90aWZpY2F0aW9uXCI7XG5pbXBvcnQgeyBBdWRpdFdlYlNlcnZpY2UsIFVzZXJTZXR0aW5nc1dlYlNlcnZpY2UsIFByaW5jaXBhbFdlYlNlcnZpY2UgfSBmcm9tIFwiQHNpbmVxdWEvY29yZS93ZWItc2VydmljZXNcIjtcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBDaGF0Q29uZmlnLCBDaGF0TWVzc2FnZSwgQ2hhdFJlc3BvbnNlLCBDaGF0VXNhZ2VNZXRyaWNzLCBHbGxtRnVuY3Rpb24sIEdsbG1Nb2RlbERlc2NyaXB0aW9uLCBRdW90YSwgU2F2ZWRDaGF0LCBTYXZlZENoYXRIaXN0b3J5LCBUb2tlbkNvbnN1bXB0aW9uLCBVc2VyVG9rZW5Db25zdW1wdGlvbiwgY2hhdENvbmZpZ1NjaGVtYSB9IGZyb20gXCIuL3R5cGVzXCI7XG5pbXBvcnQgeyBBcHBTZXJ2aWNlLCBRdWVyeSB9IGZyb20gXCJAc2luZXF1YS9jb3JlL2FwcC11dGlsc1wiO1xuaW1wb3J0IHsgSW50bFNlcnZpY2UgfSBmcm9tIFwiQHNpbmVxdWEvY29yZS9pbnRsXCI7XG5pbXBvcnQgZ2V0IGZyb20gXCJsb2Rhc2gvZ2V0XCI7XG5pbXBvcnQgeyBVdGlscyB9IGZyb20gXCJAc2luZXF1YS9jb3JlL2Jhc2VcIjtcbmltcG9ydCB7IENvbmZpcm1UeXBlLCBNb2RhbEJ1dHRvbiwgTW9kYWxSZXN1bHQsIE1vZGFsU2VydmljZSB9IGZyb20gXCJAc2luZXF1YS9jb3JlL21vZGFsXCI7XG5pbXBvcnQgeyBwYXJzZUlTTywgdG9EYXRlIH0gZnJvbSBcImRhdGUtZm5zXCI7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBDaGF0U2VydmljZSB7XG4gIC8qKiBOYW1lIG9mIHRoZSBhc3Npc3RhbnQgcGx1Z2luIE9SIHdlYnNvY2tldCBlbmRwb2ludC4gKi9cbiAgUkVRVUVTVF9VUkw6IHN0cmluZztcbiAgLyoqIEVtaXQgdHJ1ZSBvbmNlIHRoZSBpbml0aWFsaXphdGlvbiBvZiB0aGUgY2hhdCBwcm9jZXNzIGlzIGRvbmUuICovXG4gIGluaXRQcm9jZXNzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAvKiogRW1pdCB0cnVlIG9uY2UgdGhlIGluaXRpYWxpemF0aW9uIG9mIHRoZSBjaGF0IGNvbmZpZyBpcyBkb25lLiAqL1xuICBpbml0Q29uZmlnJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAvKiogR2xvYmFsIGNvbmZpZ3VyYXRpb24gb2YgdGhlIGNoYXQuICovXG4gIGNoYXRDb25maWckID0gbmV3IEJlaGF2aW9yU3ViamVjdDxDaGF0Q29uZmlnIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICAvKiogU3RyZWFtaW5nIHN0YXR1cyBvZiB0aGUgY2hhdCBlbmRwb2ludC4gKi9cbiAgc3RyZWFtaW5nJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAvKiogU3RvcmUgdGhlIG1lc3NhZ2VzIGhpc3Rvcnkgb2YgdGhlIGN1cnJlbnQgY2hhdC4gKi9cbiAgY2hhdEhpc3Rvcnk6IENoYXRNZXNzYWdlW10gfCB1bmRlZmluZWQ7XG4gIC8qKiBMaXN0IG9mIG1vZGVscyBhdmFpbGFibGUgb24gdGhlIHNlcnZlci4gKi9cbiAgbW9kZWxzOiBHbGxtTW9kZWxEZXNjcmlwdGlvbltdIHwgdW5kZWZpbmVkO1xuICAvKiogTGlzdCBvZiBmdW5jdGlvbnMgYXZhaWxhYmxlIG9uIHRoZSBzZXJ2ZXIuICovXG4gIGZ1bmN0aW9uczogR2xsbUZ1bmN0aW9uW10gfCB1bmRlZmluZWQ7XG4gIC8qKiBMaXN0IG9mIHNhdmVkIGNoYXRzLiAqL1xuICBzYXZlZENoYXRzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U2F2ZWRDaGF0W10+KFtdKTtcbiAgLyoqIEVtaXQgdGhlIHNhdmVkIGNoYXQgdG8gbG9hZC4gKi9cbiAgbG9hZFNhdmVkQ2hhdCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFNhdmVkQ2hhdCB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgLyoqIEVtaXQgdGhlIHF1b3RhIGVhY2ggdGltZSB0aGUgY2hhdCBpcyBpbnZva2VkLiAqL1xuICBxdW90YSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFF1b3RhIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICAvKiogRW1pdCB0aGUgY2FsY3VsYXRlZCB1c2VyJ3MgdG9rZW4gY29uc3VtcHRpb24gYmFzZWQgb24gdGhlIHF1b3RhLiAqL1xuICB1c2VyVG9rZW5Db25zdW1wdGlvbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFVzZXJUb2tlbkNvbnN1bXB0aW9uIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICAvKiogRW1pdCB0aGUgY2hhdCB1c2FnZSBtZXRyaWNzIGVhY2ggdGltZSB0aGUgZ2VuZXJhdGlvbiBvZiB0aGUgYXNzaXN0YW50IHJlc3BvbnNlIGlzIGNvbXBsZXRlZC4gKi9cbiAgY2hhdFVzYWdlTWV0cmljcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PENoYXRVc2FnZU1ldHJpY3MgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIC8qKiBFbWl0IHRoZSBjYWxjdWxhdGVkIGNoYXQncyB0b2tlbiBjb25zdW1wdGlvbiBiYXNlZCBvbiB0aGUgY2hhdCB1c2FnZSBtZXRyaWNzLiAqL1xuICBjaGF0VG9rZW5Db25zdW1wdGlvbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRva2VuQ29uc3VtcHRpb24gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIC8qKiBJbnN0YW5jZSBJRCBvZiB0aGUgY2hhdCBzZXJ2aWNlIGRlZmluaW5nIHRoZSBhc3Npc3RhbnQgaW5zdGFuY2UuICovXG4gIHByaXZhdGUgX2NoYXRJbnN0YW5jZUlkOiBzdHJpbmc7XG4gIC8qKiBJRCBvZiB0aGUgY3VycmVudCAqKnNhdmVkIGNoYXQqKiBkaXNjdXNzaW9uIHdoaWNoIGlzIHVzZWQgdG8gdXBkYXRlL2dldC9kZWxldGUgaXQuICovXG4gIHByaXZhdGUgX3NhdmVkQ2hhdElkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIC8qKiBHZW5lcmF0ZWQgR1VJRCBmb3IgdGhlIGN1cnJlbnQgbm9uLXNhdmVkIGNoYXQgZGlzY3Vzc2lvbiB1c2VkIHRvIGlkZW50aWZ5IGF1ZGl0IGV2ZW50cy5cbiAgICogSWYgdGhlIGNoYXQgaXMgc2F2ZWQsIHRoZSBzYXZlZENoYXRJZCBpcyBpbml0aWFsaXplZCB3aXRoIHRoZSB2YWx1ZSBvZiB0aGlzIGNoYXRJZC5cbiAgICovXG4gIHByaXZhdGUgX2NoYXRJZDogc3RyaW5nO1xuXG4gIHB1YmxpYyB1c2VyU2V0dGluZ3NTZXJ2aWNlID0gaW5qZWN0KFVzZXJTZXR0aW5nc1dlYlNlcnZpY2UpO1xuICBwdWJsaWMgbm90aWZpY2F0aW9uc1NlcnZpY2UgPSBpbmplY3QoTm90aWZpY2F0aW9uc1NlcnZpY2UpO1xuICBwdWJsaWMgYXVkaXRTZXJ2aWNlID0gaW5qZWN0KEF1ZGl0V2ViU2VydmljZSk7XG4gIHB1YmxpYyBwcmVmcyA9IGluamVjdChVc2VyUHJlZmVyZW5jZXMpO1xuICBwdWJsaWMgbG9naW5TZXJ2aWNlID0gaW5qZWN0KExvZ2luU2VydmljZSk7XG4gIHB1YmxpYyBhcHBTZXJ2aWNlID0gaW5qZWN0KEFwcFNlcnZpY2UpO1xuICBwdWJsaWMgaW50bFNlcnZpY2UgPSBpbmplY3QoSW50bFNlcnZpY2UpO1xuICBwdWJsaWMgbW9kYWxTZXJ2aWNlID0gaW5qZWN0KE1vZGFsU2VydmljZSk7XG4gIHB1YmxpYyBwcmluY2lwYWxTZXJ2aWNlID0gaW5qZWN0KFByaW5jaXBhbFdlYlNlcnZpY2UpO1xuICAvKipcbiAgICogSW5pdGlhbGl6ZSB0aGUgY2hhdCBwcm9jZXNzXG4gICAqL1xuICBhYnN0cmFjdCBpbml0KCk6IE9ic2VydmFibGU8Ym9vbGVhbj47XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemUgdGhlIFJFUVVFU1RfVVJMXG4gICAqL1xuICBhYnN0cmFjdCBnZXRSZXF1ZXN0c1VybCgpOiB2b2lkO1xuXG4gIGdldCBhc3Npc3RhbnRzKCk6IGFueSB7XG4gICAgaWYgKCF0aGlzLnVzZXJTZXR0aW5nc1NlcnZpY2UudXNlclNldHRpbmdzKVxuICAgICAgdGhpcy51c2VyU2V0dGluZ3NTZXJ2aWNlLnVzZXJTZXR0aW5ncyA9IHt9O1xuICAgIGlmICghdGhpcy51c2VyU2V0dGluZ3NTZXJ2aWNlLnVzZXJTZXR0aW5nc1tcImFzc2lzdGFudHNcIl0pXG4gICAgICB0aGlzLnVzZXJTZXR0aW5nc1NlcnZpY2UudXNlclNldHRpbmdzW1wiYXNzaXN0YW50c1wiXSA9IHt9O1xuICAgIHJldHVybiAgdGhpcy51c2VyU2V0dGluZ3NTZXJ2aWNlLnVzZXJTZXR0aW5nc1tcImFzc2lzdGFudHNcIl07XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBpbnN0YW5jZSBJRCBvZiB0aGUgY2hhdCBzZXJ2aWNlXG4gICAqIEByZXR1cm5zIFRoZSBpbnN0YW5jZSBJRCBvZiB0aGUgY2hhdCBzZXJ2aWNlXG4gICAqL1xuICBnZXQgY2hhdEluc3RhbmNlSWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fY2hhdEluc3RhbmNlSWQ7XG4gIH1cblxuICAvKipcbiAgICogUGVyc2lzdCB0aGUgaW5zdGFuY2UgSUQgb2YgdGhlIGNoYXQgc2VydmljZVxuICAgKiBAcGFyYW0gaW5zdGFuY2VJZCBUaGUgaW5zdGFuY2UgSUQgb2YgdGhlIGNoYXQgc2VydmljZVxuICAgKi9cbiAgc2V0Q2hhdEluc3RhbmNlSWQoaW5zdGFuY2VJZDogc3RyaW5nKSB7XG4gICAgdGhpcy5fY2hhdEluc3RhbmNlSWQgPSBpbnN0YW5jZUlkO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgSUQgb2YgdGhlIGN1cnJlbnQgY2hhdCBkaXNjdXNzaW9uIHdoaWNoIGlzIHVzZWQgdG8gc2F2ZS9nZXQvZGVsZXRlIGl0XG4gICAqIEByZXR1cm5zIFRoZSBJRCBvZiB0aGUgY3VycmVudCBjaGF0IGRpc2N1c3Npb25cbiAgICovXG4gIGdldCBzYXZlZENoYXRJZCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9zYXZlZENoYXRJZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBQZXJzaXN0IHRoZSBJRCBvZiB0aGUgY3VycmVudCBjaGF0IGRpc2N1c3Npb24gd2hpY2ggaXMgdXNlZCB0byBzYXZlL2dldC9kZWxldGUgaXRcbiAgICogQHBhcmFtIHNhdmVkQ2hhdElkIFRoZSBJRCBvZiB0aGUgY3VycmVudCBjaGF0IGRpc2N1c3Npb24gd2hpY2ggaXMgdXNlZCB0byBzYXZlL2dldC9kZWxldGUgaXRcbiAgICovXG4gIHNldFNhdmVkQ2hhdElkKHNhdmVkQ2hhdElkOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9zYXZlZENoYXRJZCA9IHNhdmVkQ2hhdElkO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgSUQgb2YgdGhlIGN1cnJlbnQgY2hhdCBkaXNjdXNzaW9uIHdoaWNoIGlzIHVzZWQgdG8gaWRlbnRpZnkgYXVkaXQgZXZlbnRzXG4gICAqIEByZXR1cm5zIFRoZSBJRCBvZiB0aGUgY3VycmVudCBjaGF0IGRpc2N1c3Npb25cbiAgICovXG4gIGdldCBjaGF0SWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fY2hhdElkO1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlIGFuIEdVSUQgZm9yIHRoZSBjdXJyZW50IGNoYXQgZGlzY3Vzc2lvbiB3aGljaCBpcyB1c2VkIHRvIGlkZW50aWZ5IGF1ZGl0IGV2ZW50c1xuICAgKiBJZiB0aGUgZGlzY3Vzc2lvbiBpcyBzYXZlZCwgdGhlIHNhdmVkQ2hhdElkIGlzIGluaXRpYWxpemVkIHdpdGggdGhlIHZhbHVlIG9mIHRoaXMgY2hhdElkXG4gICAqIEBwYXJhbSBjaGF0SWQgaWYgcHJvdmlkZWQsIGl0IHdpbGwgYmUgY29uc2lkZXJlZCBhcyB0aGUgSUQgb2YgdGhlIGN1cnJlbnQgY2hhdCBkaXNjdXNzaW9uIHdoaWNoIGlzIHVzZWQgdG8gaWRlbnRpZnkgYXVkaXQgZXZlbnRzXG4gICAqL1xuICBnZW5lcmF0ZUNoYXRJZChjaGF0SWQ/OiBzdHJpbmcpIHtcbiAgICB0aGlzLl9jaGF0SWQgPSBjaGF0SWQgfHwgVXRpbHMuZ3VpZCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemUgdGhlIGNoYXQgY29uZmlnIGJ5IG1hbmFnaW5nIE9OTFkgc3ViLW9iamVjdCAqKmRlZmF1bHRWYWx1ZXMqKiBjb25maWdzIG9mIHRoZSBzdGFuZGFyZCBhcHAgY29uZmlnIChkZWZpbmVkIGluIHRoZSBjdXN0b21pemF0aW9uIGpzb24gdGFiICkgYW5kIHRoZSB1c2VyIHByZWZlcmVuY2VzLlxuICAgKiBUbyBkbyBzbywgYSB0cmFja2luZyBtZWNoYW5pc20gaXMgaW1wbGVtZW50ZWQgdG8gbm90aWZ5IHRoZSB1c2VyIGFib3V0IHRoZSBhdmFpbGFibGUgdXBkYXRlcyBpbiB0aGUgZGVmYXVsdFZhbHVlcyBvYmplY3Qgb2YgdGhlIHN0YW5kYXJkIGFwcCBjb25maWcuXG4gICAqIFRoZSByZXN0IG9mIHRoZSBjb25maWcgb2JqZWN0IGNvbWluZyBmcm9tIFwic3RhbmRhcmQgYXBwIGNvbmZpZ1wiIGlzIHVzZWQgYXMgaXQgaXMgd2l0aG91dCBhbnkgb3ZlcnJpZGUuXG4gICAqIFRodXMsIHRoZSB1c2VyIHByZWZlcmVuY2VzIGFyZSB1c2VkIG9ubHkgZm9yIHRoZSBkZWZhdWx0VmFsdWVzIG9iamVjdC5cbiAgICogVGhpcyBwcm92aWRlIGEgY2VudHJhbGl6ZWQgd2F5IHRvIG1hbmFnZSB0aGUgcmVzdCBvZiB0aGUgY29uZmlnIG9iamVjdCBieSBhZG1pbnMgYW5kIGVuc3VyZSBhIHVuaXF1ZSBjb21tb24gYmVoYXZpb3IgZm9yIGFsbCB1c2Vycy5cbiAgICovXG4gIGluaXRDaGF0Q29uZmlnKCkge1xuICAgIGNvbnN0IGtleSA9IHRoaXMuY2hhdEluc3RhbmNlSWQ7XG4gICAgY29uc3QgdXNlclNldHRpbmdzQ29uZmlnID0gdGhpcy5hc3Npc3RhbnRzW2tleV0gfHwge307XG4gICAgY29uc3Qgc3RhbmRhcmRDaGF0Q29uZmlnID0gdGhpcy5hcHBTZXJ2aWNlLmFwcD8uZGF0YT8uYXNzaXN0YW50cz8uW2tleV07XG5cbiAgICB0cnkge1xuICAgICAgLy8gVmFsaWRhdGUgdGhlIHdob2xlIGNvbmZpZyBvYmplY3QgYWdhaW5zdCB0aGUgc2NoZW1hXG4gICAgICBjaGF0Q29uZmlnU2NoZW1hLnBhcnNlKHN0YW5kYXJkQ2hhdENvbmZpZyk7XG4gICAgICAvLyBJZiB0aGUgdXNlciBwcmVmZXJlbmNlcyBkbyBub3QgY29udGFpbiBhIGNvbmZpZydzIGRlZmF1bHRWYWx1ZXMgb2JqZWN0LCBrZWVwIHVzaW5nIHRoZSBzdGFuZGFyZCBhcHAgY29uZmlnIGFuZCBub3RoaW5nIHRvIHN0b3JlIGluIHRoZSB1c2VyIHByZWZlcmVuY2VzXG4gICAgICBpZiAoIXVzZXJTZXR0aW5nc0NvbmZpZy5kZWZhdWx0VmFsdWVzKSB7XG4gICAgICAgIHRoaXMuY2hhdENvbmZpZyQubmV4dCh7Li4uc3RhbmRhcmRDaGF0Q29uZmlnfSk7XG4gICAgICAgIHRoaXMuaW5pdENvbmZpZyQubmV4dCh0cnVlKTtcbiAgICAgIH0gZWxzZSB7IC8vIElmIHRoZSB1c2VyIGhhcyBpdHMgb3duIGRlZmF1bHRWYWx1ZXMgaW4gaXRzIHVzZXJTZXR0aW5ncywgdGhlbiB3ZSBuZWVkIHRvIGNoZWNrIGZvciBwb3RlbnRpYWwgdXBkYXRlcyBtYWRlIGJ5IGFkbWlucyBpbiB0aGUgbWVhbnRpbWUgYW5kIGhvdyBoZSB3YW50cyB0byBtYW5hZ2UgdGhlbVxuXG4gICAgICAgIC8vIFJldHJpZXZlIGFscmVhZHkgc3RvcmVkIGhhc2hlcyBpbiB0aGUgdXNlciBzZXR0aW5ncyBpZiBleGlzdHNcbiAgICAgICAgY29uc3QgYXBwbGllZERlZmF1bHRWYWx1ZXNIYXNoID0gdXNlclNldHRpbmdzQ29uZmlnLmhhc2hlcz8uW1wiYXBwbGllZC1kZWZhdWx0VmFsdWVzLWhhc2hcIl07XG4gICAgICAgIGNvbnN0IHNraXBwZWREZWZhdWx0VmFsdWVzSGFzaCA9IHVzZXJTZXR0aW5nc0NvbmZpZy5oYXNoZXM/LltcInNraXBwZWQtZGVmYXVsdFZhbHVlcy1oYXNoXCJdO1xuICAgICAgICAvLyBDcmVhdGUgYSBoYXNoIG9mIHRoZSBjdXJyZW50IGRlZmF1bHRWYWx1ZXMgb2YgdGhlIHN0YW5kYXJkQ2hhdENvbmZpZ1xuICAgICAgICBjb25zdCBjdXJyZW50RGVmYXVsdFZhbHVlc0hhc2ggPSBVdGlscy5zaGE1MTIoSlNPTi5zdHJpbmdpZnkoc3RhbmRhcmRDaGF0Q29uZmlnLmRlZmF1bHRWYWx1ZXMpKTtcblxuICAgICAgICAvLyBJbXBsZW1lbnQgdGhlIHRyYWNraW5nIG1lY2hhbmlzbSB0byBub3RpZnkgdGhlIHVzZXIgYWJvdXQgdGhlIGF2YWlsYWJsZSB1cGRhdGVzIGluIHRoZSBkZWZhdWx0VmFsdWVzIG9iamVjdCBvZiB0aGUgc3RhbmRhcmQgYXBwIGNvbmZpZ1xuICAgICAgICBjb25zdCBjb25kaXRpb24gPSAoY3VycmVudERlZmF1bHRWYWx1ZXNIYXNoICE9PSBhcHBsaWVkRGVmYXVsdFZhbHVlc0hhc2gpICYmIChjdXJyZW50RGVmYXVsdFZhbHVlc0hhc2ggIT09IHNraXBwZWREZWZhdWx0VmFsdWVzSGFzaCk7XG4gICAgICAgIGlmIChjb25kaXRpb24pIHtcbiAgICAgICAgICB0aGlzLm1vZGFsU2VydmljZVxuICAgICAgICAgICAgLmNvbmZpcm0oe1xuICAgICAgICAgICAgICB0aXRsZTogXCJBdmFpbGFibGUgdXBkYXRlcyAhXCIsXG4gICAgICAgICAgICAgIG1lc3NhZ2U6IFwiQ2hhbmdlcyBoYXZlIGJlZW4gbWFkZSB0byB0aGUgZGVmYXVsdCBjb25maWd1cmF0aW9uLiBEbyB5b3Ugd2FudCB0byB1cGRhdGUgeW91ciBvd24gdmVyc2lvbiA/XCIsXG4gICAgICAgICAgICAgIGJ1dHRvbnM6IFtcbiAgICAgICAgICAgICAgICAgIG5ldyBNb2RhbEJ1dHRvbih7cmVzdWx0OiBNb2RhbFJlc3VsdC5ObywgdGV4dDogXCJTZWUgbm8gbW9yZVwifSksXG4gICAgICAgICAgICAgICAgICBuZXcgTW9kYWxCdXR0b24oe3Jlc3VsdDogTW9kYWxSZXN1bHQuSWdub3JlLCB0ZXh0OiBcIlJlbWluZCBtZSBsYXRlclwifSksXG4gICAgICAgICAgICAgICAgICBuZXcgTW9kYWxCdXR0b24oe3Jlc3VsdDogTW9kYWxSZXN1bHQuT0ssIHRleHQ6IFwiVXBkYXRlXCIsIHByaW1hcnk6IHRydWV9KVxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICBjb25maXJtVHlwZTogQ29uZmlybVR5cGUuV2FybmluZ1xuICAgICAgICAgICAgfSkudGhlbihyZXMgPT4ge1xuICAgICAgICAgICAgICAgIGlmKHJlcyA9PT0gTW9kYWxSZXN1bHQuT0spIHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGhhc2hlcyA9IHsgLi4udXNlclNldHRpbmdzQ29uZmlnLmhhc2hlcywgXCJhcHBsaWVkLWRlZmF1bHRWYWx1ZXMtaGFzaFwiOiBjdXJyZW50RGVmYXVsdFZhbHVlc0hhc2gsIFwic2tpcHBlZC1kZWZhdWx0VmFsdWVzLWhhc2hcIjogdW5kZWZpbmVkIH07XG4gICAgICAgICAgICAgICAgICAvLyBVcGRhdGUgdGhlIGNoYXQgY29uZmlnIGFuZCBzdG9yZSBpdHMgZGVmYXVsdFZhbHVlcyBpbiB0aGUgdXNlciBwcmVmZXJlbmNlc1xuICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVDaGF0Q29uZmlnKHsuLi5zdGFuZGFyZENoYXRDb25maWd9LCBoYXNoZXMsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgdGhpcy5pbml0Q29uZmlnJC5uZXh0KHRydWUpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZihyZXMgPT09IE1vZGFsUmVzdWx0Lk5vKSB7XG4gICAgICAgICAgICAgICAgICAvLyBEbyBub3Qgbm90aWZ5IHRoZSB1c2VyIGFib3V0IGNoYW5nZXMgd2hpbGUgdGhpcyBza2lwcGVkIHZlcnNpb24gaXMgbm90IHVwZGF0ZWRcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGhhc2hlcyA9IHsgLi4udXNlclNldHRpbmdzQ29uZmlnLmhhc2hlcywgXCJza2lwcGVkLWRlZmF1bHRWYWx1ZXMtaGFzaFwiOiBjdXJyZW50RGVmYXVsdFZhbHVlc0hhc2ggfTtcbiAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlQ2hhdENvbmZpZyh7Li4uc3RhbmRhcmRDaGF0Q29uZmlnLCBkZWZhdWx0VmFsdWVzOiB1c2VyU2V0dGluZ3NDb25maWcuZGVmYXVsdFZhbHVlc30sIGhhc2hlcywgZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgdGhpcy5pbml0Q29uZmlnJC5uZXh0KHRydWUpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAvLyBKdXN0IHBpY2sgdGhlIHZlcnNpb24gaW4gdGhlIHVzZXIgc2V0dGluZ3MsIG5vdGhpbmcgdG8gYmUgdXBkYXRlZFxuICAgICAgICAgICAgICAgICAgdGhpcy5jaGF0Q29uZmlnJC5uZXh0KHsuLi5zdGFuZGFyZENoYXRDb25maWcsIGRlZmF1bHRWYWx1ZXM6IHVzZXJTZXR0aW5nc0NvbmZpZy5kZWZhdWx0VmFsdWVzfSk7XG4gICAgICAgICAgICAgICAgICB0aGlzLmluaXRDb25maWckLm5leHQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7IC8vIE5vIGF2YWlsYWJsZSB1cGRhdGVzIE9yIHVwZGF0ZXMgaGFzIGJlZW4gYWxyZWFkeSBza2lwcGVkLCB0aGVuIGp1c3QgcGljayB0aGUgdmVyc2lvbiBpbiB0aGUgdXNlciBzZXR0aW5nc1xuICAgICAgICAgIHRoaXMuY2hhdENvbmZpZyQubmV4dCh7Li4uc3RhbmRhcmRDaGF0Q29uZmlnLCBkZWZhdWx0VmFsdWVzOiB1c2VyU2V0dGluZ3NDb25maWcuZGVmYXVsdFZhbHVlc30pO1xuICAgICAgICAgIHRoaXMuaW5pdENvbmZpZyQubmV4dCh0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aGlzLm5vdGlmaWNhdGlvbnNTZXJ2aWNlLmVycm9yKGBNaXNzaW5nIHZhbGlkIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBhc3Npc3RhbnQgaW5zdGFuY2UgJyR7a2V5fSdgKTtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgTWlzc2luZyB2YWxpZCBjb25maWd1cmF0aW9uIGZvciB0aGUgYXNzaXN0YW50IGluc3RhbmNlICcke2tleX0nIC4gXFxuICR7SlNPTi5zdHJpbmdpZnkoZXJyb3IuaXNzdWVzLCBudWxsLCAyKX1gKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIHRoZSBjaGF0IGNvbmZpZyBhbmQgc3RvcmUgaXRzIGRlZmF1bHRWYWx1ZXMgaW4gdGhlIHVzZXIgcHJlZmVyZW5jZXNcbiAgICogQHBhcmFtIGNvbmZpZyAgVGhlIHVwZGF0ZWQgY2hhdCBjb25maWdcbiAgICogQHBhcmFtIGhhc2hlcyAgVGhlIHVwZGF0ZWQgaGFzaGVzIHRvIHN0b3JlIGluIHRoZSB1c2VyIHByZWZlcmVuY2VzXG4gICAqIEBwYXJhbSBub3RpZnkgIFdoZXRoZXIgdG8gbm90aWZ5IHRoZSB1c2VyIGFib3V0IHRoZSB1cGRhdGVcbiAgICogQHBhcmFtIHN1Y2Nlc3NDYWxsYmFjayAgVGhlIGNhbGxiYWNrIHRvIGV4ZWN1dGUgaWYgdGhlIHVwZGF0ZSBpcyBzdWNjZXNzZnVsXG4gICAqIEBwYXJhbSBlcnJvckNhbGxiYWNrICBUaGUgY2FsbGJhY2sgdG8gZXhlY3V0ZSBpZiB0aGUgdXBkYXRlIGZhaWxzXG4gICAqL1xuICB1cGRhdGVDaGF0Q29uZmlnKGNvbmZpZzogQ2hhdENvbmZpZywgaGFzaGVzPzoge1wiYXBwbGllZC1kZWZhdWx0VmFsdWVzLWhhc2hcIj86IHN0cmluZywgXCJza2lwcGVkLWRlZmF1bHRWYWx1ZXMtaGFzaFwiPzogc3RyaW5nfSwgIG5vdGlmeSA9IHRydWUsIHN1Y2Nlc3NDYWxsYmFjaz86ICgpID0+IGFueSwgZXJyb3JDYWxsYmFjaz86ICgpID0+IGFueSkge1xuICAgIHRoaXMuY2hhdENvbmZpZyQubmV4dChjb25maWcpO1xuICAgIGNvbnN0IGFzc2lzdGFudHMgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLmFzc2lzdGFudHMpO1xuICAgIGFzc2lzdGFudHNbdGhpcy5jaGF0SW5zdGFuY2VJZF0gPSB7IC4uLmFzc2lzdGFudHNbdGhpcy5jaGF0SW5zdGFuY2VJZF0sIGRlZmF1bHRWYWx1ZXM6IGNvbmZpZy5kZWZhdWx0VmFsdWVzIH07XG4gICAgaWYoaGFzaGVzKSBhc3Npc3RhbnRzW3RoaXMuY2hhdEluc3RhbmNlSWRdLmhhc2hlcyA9IGhhc2hlcztcbiAgICB0aGlzLnVzZXJTZXR0aW5nc1NlcnZpY2UucGF0Y2goeyBhc3Npc3RhbnRzIH0pLnN1YnNjcmliZShcbiAgICAgIG5leHQgPT4ge30sXG4gICAgICBlcnJvciA9PiB7XG4gICAgICAgIGlmKG5vdGlmeSkge1xuICAgICAgICAgIGVycm9yQ2FsbGJhY2sgPyBlcnJvckNhbGxiYWNrKCkgOiB0aGlzLm5vdGlmaWNhdGlvbnNTZXJ2aWNlLmVycm9yKGBUaGUgdXBkYXRlIG9mIHRoZSBhc3Npc3RhbnQgaW5zdGFuY2UgJyR7dGhpcy5jaGF0SW5zdGFuY2VJZH0nIGNvbmZpZ3VyYXRpb24gZmFpbGVkYCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc29sZS5lcnJvcihcIkNvdWxkIG5vdCBwYXRjaCBhc3Npc3RhbnRzIVwiLCBlcnJvcik7XG4gICAgICB9LFxuICAgICAgKCkgPT4ge1xuICAgICAgICBpZihub3RpZnkpIHtcbiAgICAgICAgICBzdWNjZXNzQ2FsbGJhY2sgPyBzdWNjZXNzQ2FsbGJhY2soKSA6IHRoaXMubm90aWZpY2F0aW9uc1NlcnZpY2Uuc3VjY2VzcyhgVGhlIGFzc2lzdGFudCBpbnN0YW5jZSAnJHt0aGlzLmNoYXRJbnN0YW5jZUlkfScgY29uZmlndXJhdGlvbiBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgdXBkYXRlZGApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxscyB0aGUgRmV0Y2ggQVBJIHRvIHJldHJpZXZlIGEgbmV3IG1lc3NhZ2UgZ2l2ZW4gYWxsIHByZXZpb3VzIG1lc3NhZ2VzXG4gICAqL1xuICBhYnN0cmFjdCBmZXRjaChtZXNzYWdlczogQ2hhdE1lc3NhZ2VbXSwgcXVlcnk6IFF1ZXJ5KTogT2JzZXJ2YWJsZTxDaGF0UmVzcG9uc2U+XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgbGlzdCBvZiBtb2RlbHMgYXZhaWxhYmxlIG9uIHRoZSBzZXJ2ZXJcbiAgICovXG4gIGFic3RyYWN0IGxpc3RNb2RlbHMoKTogT2JzZXJ2YWJsZTxHbGxtTW9kZWxEZXNjcmlwdGlvbltdIHwgdW5kZWZpbmVkPjtcblxuICAvKipcbiAgICogUmV0dXJuIHRoZSBsaXN0IG9mIGZ1bmN0aW9ucyBhdmFpbGFibGUgb24gdGhlIHNlcnZlciBBTkQgbWF0Y2hpbmcgZW5hYmxlZCBmdW5jdGlvbnMgaW4gdGhlIGNoYXQgY29uZmlnXG4gICAqL1xuICBhYnN0cmFjdCBsaXN0RnVuY3Rpb25zKCk6IE9ic2VydmFibGU8R2xsbUZ1bmN0aW9uW10gfCB1bmRlZmluZWQ+O1xuXG4gIC8qKlxuICAgKiBBIGhhbmRsZXIgZm9yIHF1b3RhIHVwZGF0ZXMgZWFjaCB0aW1lIHRoZSBjaGF0IGlzIGludm9rZWQuXG4gICAqIEl0IGVtaXRzIHRoZSB1cGRhdGVkIHF1b3RhIHRvIHRoZSBxdW90YSQgc3ViamVjdCwgZW1pdHMgYWNjb3JkaW5nbHkgdGhlIHVwZGF0ZWQgdXNlcidzIHRva2VucyBjb25zdW1wdGlvbiBhbmQgbm90aWZpZXMgdGhlIHVzZXIgaWYgdGhlIG1heCBxdW90YSBpcyByZWFjaGVkLlxuICAgKiBAcGFyYW0gcXVvdGEgVGhlIHVwZGF0ZWQgcXVvdGFcbiAgICogQHBhcmFtIHByb3BhZ2F0ZUVycm9yIFdoZXRoZXIgdG8gcHJvcGFnYXRlIHRoZSBlcnJvciB0byB0aGUgY2FsbGVyXG4gICAqL1xuICB1cGRhdGVRdW90YShxdW90YTogUXVvdGEsIHByb3BhZ2F0ZUVycm9yID0gZmFsc2UpIHtcbiAgICB0aGlzLnF1b3RhJC5uZXh0KHF1b3RhKTtcbiAgICBjb25zdCBuZXh0UmVzZXREYXRlID0gdGhpcy5mb3JtYXREYXRlVGltZShxdW90YS5uZXh0UmVzZXRVVEMrXCIrMDA6MDBcIik7IC8vIFRoaXMgKzAwOjAwIGlzIHRvIGVuc3VyZSBkYXRlcyB3aWxsIGJlIHByb3Blcmx5IGNvbnZlcnRlZCB0byBsb2NhbCB0aW1lXG4gICAgY29uc3QgY29uc3VtcHRpb25QZXJjZW50YWdlID0gTWF0aC5yb3VuZCgocXVvdGEudG9rZW5Db3VudCAqIDEwMCAvIHF1b3RhLnBlcmlvZFRva2VucykgKiAxMDApIC8gMTAwO1xuICAgIHRoaXMudXNlclRva2VuQ29uc3VtcHRpb24kLm5leHQoe3BlcmNlbnRhZ2U6IGNvbnN1bXB0aW9uUGVyY2VudGFnZSwgbmV4dFJlc2V0RGF0ZX0pO1xuICAgIGlmKHF1b3RhLm1heFF1b3RhUmVhY2hlZCkge1xuICAgICAgY29uc3QgbXNnID0gYFNvcnJ5LCB5b3UgaGF2ZSBleGNlZWRlZCB0aGUgYWxsb3dlZCBxdW90YS4gUGxlYXNlIHJldHJ5IHN0YXJ0aW5nIGZyb20gJHtuZXh0UmVzZXREYXRlfS5gO1xuICAgICAgdGhpcy5ub3RpZmljYXRpb25zU2VydmljZS5lcnJvcihtc2cpO1xuICAgICAgaWYocHJvcGFnYXRlRXJyb3IpIHRocm93IG5ldyBFcnJvcihtc2cpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBIGhhbmRsZXIgZm9yIGNoYXQgdXNhZ2UgbWV0cmljcyBlYWNoIHRpbWUgdGhlIGdlbmVyYXRpb24gb2YgdGhlIGFzc2lzdGFudCByZXNwb25zZSBpcyBjb21wbGV0ZWQuXG4gICAqIEl0IGVtaXRzIHRoZSBjaGF0IHVzYWdlIG1ldHJpY3MgdG8gdGhlIGNoYXRVc2FnZU1ldHJpY3MkIHN1YmplY3QsIGVtaXRzIGFjY29yZGluZ2x5IHRoZSB1cGRhdGVkIGNoYXQncyB0b2tlbnMgY29uc3VtcHRpb25cbiAgICogQHBhcmFtIGNoYXRVc2FnZU1ldHJpY3MgVGhlIGNoYXQgdXNhZ2UgbWV0cmljc1xuICAgKi9cbiAgdXBkYXRlQ2hhdFVzYWdlTWV0cmljcyhjaGF0VXNhZ2VNZXRyaWNzOiBDaGF0VXNhZ2VNZXRyaWNzKSB7XG4gICAgdGhpcy5jaGF0VXNhZ2VNZXRyaWNzJC5uZXh0KGNoYXRVc2FnZU1ldHJpY3MpO1xuICAgIGNvbnN0IGN1cnJlbnRNb2RlbCA9IHRoaXMuZ2V0TW9kZWwodGhpcy5jaGF0Q29uZmlnJC52YWx1ZSEuZGVmYXVsdFZhbHVlcy5zZXJ2aWNlX2lkLCB0aGlzLmNoYXRDb25maWckLnZhbHVlIS5kZWZhdWx0VmFsdWVzLm1vZGVsX2lkKTtcbiAgICBjb25zdCBjb25zdW1wdGlvblBlcmNlbnRhZ2UgPSBNYXRoLnJvdW5kKChjaGF0VXNhZ2VNZXRyaWNzLnRvdGFsVG9rZW5Db3VudCAqIDEwMCAvIChjdXJyZW50TW9kZWwhLmNvbnRleHRXaW5kb3dTaXplIC0gY3VycmVudE1vZGVsIS5tYXhHZW5lcmF0aW9uU2l6ZSkpICogMTAwKSAvIDEwMDtcbiAgICB0aGlzLmNoYXRUb2tlbkNvbnN1bXB0aW9uJC5uZXh0KHtwZXJjZW50YWdlOiBjb25zdW1wdGlvblBlcmNlbnRhZ2V9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIG1vZGVsIGRlc2NyaXB0aW9uIGZvciB0aGUgZ2l2ZW4gKHNlcnZpY2VJZCArIG1vZGVsSWQpXG4gICAqIElmIGEgbW9kZWwgaXMgbm90IGZvdW5kLCBhbiBlcnJvciBtZXNzYWdlIGlzIHJldHVybmVkXG4gICAqIEBwYXJhbSBzZXJ2aWNlSWQgVGhlIHNlcnZpY2VJZCBvZiB0aGUgbW9kZWxcbiAgICogQHBhcmFtIG1vZGVsSWQgVGhlIG1vZGVsSWQgb2YgdGhlIG1vZGVsXG4gICAqIEByZXR1cm5zIFRoZSBtb2RlbCBkZXNjcmlwdGlvblxuICAgKi9cbiAgZ2V0TW9kZWwoc2VydmljZUlkOiBzdHJpbmcsIG1vZGVsSWQ6IHN0cmluZyk6IEdsbG1Nb2RlbERlc2NyaXB0aW9uIHwgdW5kZWZpbmVke1xuICAgIGxldCBtb2RlbCA9IHRoaXMubW9kZWxzPy5maW5kKG0gPT4gbS5zZXJ2aWNlSWQgPT09IHNlcnZpY2VJZCAmJiBtLm1vZGVsSWQgPT09IG1vZGVsSWQpO1xuICAgIC8vIEhhbmRsZSBvYnNvbGV0ZSBjb25maWdcbiAgICBpZighbW9kZWwpIHtcbiAgICAgIHRoaXMubm90aWZpY2F0aW9uc1NlcnZpY2UuZXJyb3IoYEZBVEFMIEVSUk9SIDogVGhlIG1vZGVsIChzZXJ2aWNlSWQgPSAnJHtzZXJ2aWNlSWR9JywgbW9kZWxJZCA9ICcke21vZGVsSWR9JykgaXMgbm8gbG9uZ2VyIGF2YWlsYWJsZS4gUGxlYXNlIGNvbnRhY3QgYW4gYWRtaW4gZm9yIGZ1cnRoZXIgaW5mb3JtYXRpb24uYCk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEZBVEFMIEVSUk9SIDogVGhlIG1vZGVsIChzZXJ2aWNlSWQgPSAnJHtzZXJ2aWNlSWR9JywgbW9kZWxJZCA9ICcke21vZGVsSWR9JykgaXMgbm8gbG9uZ2VyIGF2YWlsYWJsZWApO1xuICAgIH1cbiAgICByZXR1cm4gbW9kZWw7XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2ggdGhlIGxpc3Qgc2F2ZWQgY2hhdHMgYmVsb25naW5nIHRvIGEgc3BlY2lmaWMgaW5zdGFuY2Ugb2YgdGhlIGFzc2lzdGFudFxuICAgKi9cbiAgYWJzdHJhY3QgbGlzdFNhdmVkQ2hhdCgpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIHNhdmVkIGNoYXQgd2l0aCB0aGUgZ2l2ZW4gaWQsIGlmIGV4aXN0cy4gT3RoZXJ3aXNlLCByZXR1cm4gdW5kZWZpbmVkXG4gICAqIEBwYXJhbSBpZCBUaGUgaWQgb2YgdGhlIHNhdmVkIGNoYXRcbiAgICovXG4gIGFic3RyYWN0IGdldFNhdmVkQ2hhdChpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxTYXZlZENoYXRIaXN0b3J5IHwgdW5kZWZpbmVkPjtcblxuICAvKipcbiAgICogU2F2ZSBhIGNoYXQgd2l0aCB0aGUgZ2l2ZW4gbWVzc2FnZXNcbiAgICogQHBhcmFtIG1lc3NhZ2VzIFRoZSBtZXNzYWdlcyB0byBhZGQgdG8gdGhlIHNhdmVkIGNoYXQgaW5kZXhcbiAgICogQHJldHVybnMgVGhlIHNhdmVkIGNoYXRcbiAgICovXG4gIGFic3RyYWN0IGFkZFNhdmVkQ2hhdChtZXNzYWdlczogQ2hhdE1lc3NhZ2VbXSk6IE9ic2VydmFibGU8U2F2ZWRDaGF0PjtcblxuICAvKipcbiAgICogVXBkYXRlIGEgc2F2ZWQgY2hhdCB3aXRoIHRoZSBnaXZlbiBpZC5cbiAgICogQHBhcmFtIGlkIFRoZSBpZCBvZiB0aGUgc2F2ZWQgY2hhdFxuICAgKiBAcGFyYW0gbmFtZSBUaGUgbmV3IG5hbWUgb2YgdGhlIHNhdmVkIGNoYXQsIGlmIHByb3ZpZGVkXG4gICAqIEBwYXJhbSBtZXNzYWdlcyBUaGUgbWVzc2FnZXMgdG8gdXBkYXRlIHRoZSBzYXZlZCBjaGF0IGhpc3RvcnksIGlmIHByb3ZpZGVkXG4gICAqIEByZXR1cm5zIFRydWUgaWYgdGhlIHNhdmVkIGNoYXQgaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5IHVwZGF0ZWRcbiAgICovXG4gIGFic3RyYWN0IHVwZGF0ZVNhdmVkQ2hhdChpZDogc3RyaW5nLCBuYW1lPzogc3RyaW5nLCBtZXNzYWdlcz86IENoYXRNZXNzYWdlW10pOiBPYnNlcnZhYmxlPFNhdmVkQ2hhdD47XG5cbiAgLyoqXG4gICAqIEJ1bGsgZGVsZXRlIG9mIHNhdmVkIGNoYXRzIG1hdGNoaW5nIHRoZSBnaXZlbiBpZHNcbiAgICogQHBhcmFtIGlkcyBMaXN0IG9mIGlkcyBvZiB0aGUgc2F2ZWQgY2hhdHMgdG8gZGVsZXRlXG4gICAqIEByZXR1cm5zIFRoZSBudW1iZXIgb2YgZGVsZXRlZCBjaGF0c1xuICAgKi9cbiAgYWJzdHJhY3QgZGVsZXRlU2F2ZWRDaGF0KGlkczogc3RyaW5nW10pOiBPYnNlcnZhYmxlPG51bWJlcj47XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlIGFuIGF1ZGl0IGV2ZW50IHdpdGggdGhlIGdpdmVuIHR5cGUgYW5kIGRldGFpbHMuIFRoZSBnZW5lcmF0ZWQgYXVkaXQgZXZlbnQgaXMgc2VudCBhZnRlcndhcmRzIHZpYSB0aGUgQXVkaXRXZWJTZXJ2aWNlXG4gICAqIEBwYXJhbSB0eXBlIEF1ZGl0IGV2ZW50IHR5cGVcbiAgICogQHBhcmFtIGRldGFpbHMgQXVkaXQgZXZlbnQgZGV0YWlsc1xuICAgKiBAcGFyYW0gaWQgQWN0aW9ucyAoc2F2ZWRDaGF0IGRlbGV0ZS9yZW5hbWUvLi4uKSBtYXkgb2NjdXIgb24gYSBzcGVjaWZpYyBjaGF0IGRpZmZlcmVudCB0aGFuIHRoZSBjdXJyZW50IG9uZSBzdG9yZWQgaW4gdGhpcyBzZXJ2aWNlLCBzbyB0aGUgY2hhdCBpZCBjYW4gYmUgcHJvdmlkZWRcbiAgICovXG4gIGdlbmVyYXRlQXVkaXRFdmVudCh0eXBlOiBzdHJpbmcsIGRldGFpbHM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGlkPzogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgYmFzZURldGFpbHMgPSB7XG4gICAgICBcInVybFwiOiBkZWNvZGVVUklDb21wb25lbnQod2luZG93LmxvY2F0aW9uLmhyZWYpLFxuICAgICAgXCJhcHBcIjogdGhpcy5hcHBTZXJ2aWNlLmFwcE5hbWUsXG4gICAgICBcInVzZXItaWRcIjogdGhpcy5wcmluY2lwYWxTZXJ2aWNlLnByaW5jaXBhbD8udXNlcklkLFxuICAgICAgXCJpbnN0YW5jZS1pZFwiOiB0aGlzLmNoYXRJbnN0YW5jZUlkLFxuICAgICAgXCJjaGF0LWlkXCI6IGlkIHx8IHRoaXMuY2hhdElkLFxuICAgICAgXCJzZXJ2aWNlLWlkXCI6IHRoaXMuY2hhdENvbmZpZyQudmFsdWUhLmRlZmF1bHRWYWx1ZXMuc2VydmljZV9pZCxcbiAgICAgIFwibW9kZWwtaWRcIjogdGhpcy5jaGF0Q29uZmlnJC52YWx1ZSEuZGVmYXVsdFZhbHVlcy5tb2RlbF9pZCxcbiAgICB9O1xuICAgIGNvbnN0IGF1ZGl0ID0ge1xuICAgICAgdHlwZSxcbiAgICAgIGRldGFpbDoge1xuICAgICAgICAuLi5iYXNlRGV0YWlscyxcbiAgICAgICAgLi4uZGV0YWlsc1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmF1ZGl0U2VydmljZS5ub3RpZnkoYXVkaXQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvcm1hdCBhIGRhdGUgc3RyaW5nIGluIFVUQyB0byBhIGxvY2FsIGRhdGUgc3RyaW5nXG4gICAqIEBwYXJhbSB2YWx1ZSBEYXRlIHN0cmluZyBpbiBVVEMgdG8gZm9ybWF0XG4gICAqIEByZXR1cm5zIEEgZm9ybWF0dGVkIGxvY2FsIGRhdGUgc3RyaW5nXG4gICAqL1xuICBwcm90ZWN0ZWQgZm9ybWF0RGF0ZVRpbWUodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgbG9jYWxEYXRlID0gdG9EYXRlKHBhcnNlSVNPKHZhbHVlKSk7XG4gICAgcmV0dXJuIHRoaXMuaW50bFNlcnZpY2VbXCJmb3JtYXRUaW1lXCJdKGxvY2FsRGF0ZSwge2RheTogXCJudW1lcmljXCIsIG1vbnRoOiBcInNob3J0XCIsIHllYXI6IFwibnVtZXJpY1wiLCB0aW1lWm9uZU5hbWU6ICdzaG9ydCd9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUYWtlcyBhIHRleHQgcHJvbXB0IHRoYXQgbWF5IGNvbnRhaW4gcGxhY2Vob2xkZXJzIGZvciB2YXJpYWJsZXNcbiAgICogYW5kIHJlcGxhY2VzIHRoZXNlIHBsYWNlaG9sZGVycyBpZiBpdCBmaW5kcyBhIG1hdGNoIGluIHRoZSBnaXZlblxuICAgKiBjb250ZXh0IG9iamVjdC5cbiAgICovXG4gIHN0YXRpYyBmb3JtYXRQcm9tcHQocHJvbXB0OiBzdHJpbmcsIGNvbnRleHQ6IGFueSkge1xuICAgIHJldHVybiBwcm9tcHQucmVwbGFjZShcbiAgICAgIC97eyguKj8pfX0vZyxcbiAgICAgIChtYXRjaCwgZXhwcikgPT4gZ2V0KGNvbnRleHQsIGV4cHIpID8/IG1hdGNoXG4gICAgKTtcbiAgfVxuXG59XG4iXX0=
|
|
285
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYXNzaXN0YW50L2NoYXQvY2hhdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbkQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxzQkFBc0IsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFHLE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDbkQsT0FBTyxFQUEySyxnQkFBZ0IsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNwTixPQUFPLEVBQUUsVUFBVSxFQUFTLE1BQU0seUJBQXlCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2pELE9BQU8sR0FBRyxNQUFNLFlBQVksQ0FBQztBQUM3QixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDM0MsT0FBTyxFQUFlLFdBQVcsRUFBZSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMxRixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLFVBQVUsQ0FBQzs7QUFHNUMsTUFBTSxPQUFnQixXQUFXO0lBRGpDO1FBSUUscUVBQXFFO1FBQ3JFLGlCQUFZLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDbkQsb0VBQW9FO1FBQ3BFLGdCQUFXLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDbEQsd0NBQXdD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WUFBWSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNPLGNBQWMsQ0FBQyxLQUFhO1FBQ3BDLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUMxQyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBQyxDQUFDLENBQUM7SUFDN0gsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQWMsRUFBRSxPQUFZO1FBQzlDLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FDbkIsWUFBWSxFQUNaLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsSUFBSSxLQUFLLENBQzdDLENBQUM7SUFDSixDQUFDOzt3R0FsV21CLFdBQVc7NEdBQVgsV0FBVzsyRkFBWCxXQUFXO2tCQURoQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IFVzZXJQcmVmZXJlbmNlcyB9IGZyb20gXCJAc2luZXF1YS9jb21wb25lbnRzL3VzZXItc2V0dGluZ3NcIjtcbmltcG9ydCB7IExvZ2luU2VydmljZSB9IGZyb20gXCJAc2luZXF1YS9jb3JlL2xvZ2luXCI7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25zU2VydmljZSB9IGZyb20gXCJAc2luZXF1YS9jb3JlL25vdGlmaWNhdGlvblwiO1xuaW1wb3J0IHsgQXVkaXRXZWJTZXJ2aWNlLCBVc2VyU2V0dGluZ3NXZWJTZXJ2aWNlLCBQcmluY2lwYWxXZWJTZXJ2aWNlIH0gZnJvbSBcIkBzaW5lcXVhL2NvcmUvd2ViLXNlcnZpY2VzXCI7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgQ2hhdENvbmZpZywgQ2hhdE1lc3NhZ2UsIENoYXRSZXNwb25zZSwgQ2hhdFVzYWdlTWV0cmljcywgR2xsbUZ1bmN0aW9uLCBHbGxtTW9kZWxEZXNjcmlwdGlvbiwgUXVvdGEsIFNhdmVkQ2hhdCwgU2F2ZWRDaGF0SGlzdG9yeSwgVG9rZW5Db25zdW1wdGlvbiwgVXNlclRva2VuQ29uc3VtcHRpb24sIGNoYXRDb25maWdTY2hlbWEgfSBmcm9tIFwiLi90eXBlc1wiO1xuaW1wb3J0IHsgQXBwU2VydmljZSwgUXVlcnkgfSBmcm9tIFwiQHNpbmVxdWEvY29yZS9hcHAtdXRpbHNcIjtcbmltcG9ydCB7IEludGxTZXJ2aWNlIH0gZnJvbSBcIkBzaW5lcXVhL2NvcmUvaW50bFwiO1xuaW1wb3J0IGdldCBmcm9tIFwibG9kYXNoL2dldFwiO1xuaW1wb3J0IHsgVXRpbHMgfSBmcm9tIFwiQHNpbmVxdWEvY29yZS9iYXNlXCI7XG5pbXBvcnQgeyBDb25maXJtVHlwZSwgTW9kYWxCdXR0b24sIE1vZGFsUmVzdWx0LCBNb2RhbFNlcnZpY2UgfSBmcm9tIFwiQHNpbmVxdWEvY29yZS9tb2RhbFwiO1xuaW1wb3J0IHsgcGFyc2VJU08sIHRvRGF0ZSB9IGZyb20gXCJkYXRlLWZuc1wiO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQ2hhdFNlcnZpY2Uge1xuICAvKiogTmFtZSBvZiB0aGUgYXNzaXN0YW50IHBsdWdpbiBPUiB3ZWJzb2NrZXQgZW5kcG9pbnQuICovXG4gIFJFUVVFU1RfVVJMOiBzdHJpbmc7XG4gIC8qKiBFbWl0IHRydWUgb25jZSB0aGUgaW5pdGlhbGl6YXRpb24gb2YgdGhlIGNoYXQgcHJvY2VzcyBpcyBkb25lLiAqL1xuICBpbml0UHJvY2VzcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgLyoqIEVtaXQgdHJ1ZSBvbmNlIHRoZSBpbml0aWFsaXphdGlvbiBvZiB0aGUgY2hhdCBjb25maWcgaXMgZG9uZS4gKi9cbiAgaW5pdENvbmZpZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgLyoqIEdsb2JhbCBjb25maWd1cmF0aW9uIG9mIHRoZSBjaGF0LiAqL1xuICBjaGF0Q29uZmlnJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Q2hhdENvbmZpZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgLyoqIFN0cmVhbWluZyBzdGF0dXMgb2YgdGhlIGNoYXQgZW5kcG9pbnQuICovXG4gIHN0cmVhbWluZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgLyoqIFN0b3JlIHRoZSBtZXNzYWdlcyBoaXN0b3J5IG9mIHRoZSBjdXJyZW50IGNoYXQuICovXG4gIGNoYXRIaXN0b3J5OiBDaGF0TWVzc2FnZVtdIHwgdW5kZWZpbmVkO1xuICAvKiogTGlzdCBvZiBtb2RlbHMgYXZhaWxhYmxlIG9uIHRoZSBzZXJ2ZXIuICovXG4gIG1vZGVsczogR2xsbU1vZGVsRGVzY3JpcHRpb25bXSB8IHVuZGVmaW5lZDtcbiAgLyoqIExpc3Qgb2YgZnVuY3Rpb25zIGF2YWlsYWJsZSBvbiB0aGUgc2VydmVyLiAqL1xuICBmdW5jdGlvbnM6IEdsbG1GdW5jdGlvbltdIHwgdW5kZWZpbmVkO1xuICAvKiogTGlzdCBvZiBzYXZlZCBjaGF0cy4gKi9cbiAgc2F2ZWRDaGF0cyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFNhdmVkQ2hhdFtdPihbXSk7XG4gIC8qKiBFbWl0IHRoZSBzYXZlZCBjaGF0IHRvIGxvYWQuICovXG4gIGxvYWRTYXZlZENoYXQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxTYXZlZENoYXQgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIC8qKiBFbWl0IHRoZSBxdW90YSBlYWNoIHRpbWUgdGhlIGNoYXQgaXMgaW52b2tlZC4gKi9cbiAgcXVvdGEkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxRdW90YSB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgLyoqIEVtaXQgdGhlIGNhbGN1bGF0ZWQgdXNlcidzIHRva2VuIGNvbnN1bXB0aW9uIGJhc2VkIG9uIHRoZSBxdW90YS4gKi9cbiAgdXNlclRva2VuQ29uc3VtcHRpb24kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxVc2VyVG9rZW5Db25zdW1wdGlvbiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgLyoqIEVtaXQgdGhlIGNoYXQgdXNhZ2UgbWV0cmljcyBlYWNoIHRpbWUgdGhlIGdlbmVyYXRpb24gb2YgdGhlIGFzc2lzdGFudCByZXNwb25zZSBpcyBjb21wbGV0ZWQuICovXG4gIGNoYXRVc2FnZU1ldHJpY3MkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxDaGF0VXNhZ2VNZXRyaWNzIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICAvKiogRW1pdCB0aGUgY2FsY3VsYXRlZCBjaGF0J3MgdG9rZW4gY29uc3VtcHRpb24gYmFzZWQgb24gdGhlIGNoYXQgdXNhZ2UgbWV0cmljcy4gKi9cbiAgY2hhdFRva2VuQ29uc3VtcHRpb24kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUb2tlbkNvbnN1bXB0aW9uIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICAvKiogSW5zdGFuY2UgSUQgb2YgdGhlIGNoYXQgc2VydmljZSBkZWZpbmluZyB0aGUgYXNzaXN0YW50IGluc3RhbmNlLiAqL1xuICBwcml2YXRlIF9jaGF0SW5zdGFuY2VJZDogc3RyaW5nO1xuICAvKiogSUQgb2YgdGhlIGN1cnJlbnQgKipzYXZlZCBjaGF0KiogZGlzY3Vzc2lvbiB3aGljaCBpcyB1c2VkIHRvIHVwZGF0ZS9nZXQvZGVsZXRlIGl0LiAqL1xuICBwcml2YXRlIF9zYXZlZENoYXRJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAvKiogR2VuZXJhdGVkIEdVSUQgZm9yIHRoZSBjdXJyZW50IG5vbi1zYXZlZCBjaGF0IGRpc2N1c3Npb24gdXNlZCB0byBpZGVudGlmeSBhdWRpdCBldmVudHMuXG4gICAqIElmIHRoZSBjaGF0IGlzIHNhdmVkLCB0aGUgc2F2ZWRDaGF0SWQgaXMgaW5pdGlhbGl6ZWQgd2l0aCB0aGUgdmFsdWUgb2YgdGhpcyBjaGF0SWQuXG4gICAqL1xuICBwcml2YXRlIF9jaGF0SWQ6IHN0cmluZztcblxuICBwdWJsaWMgdXNlclNldHRpbmdzU2VydmljZSA9IGluamVjdChVc2VyU2V0dGluZ3NXZWJTZXJ2aWNlKTtcbiAgcHVibGljIG5vdGlmaWNhdGlvbnNTZXJ2aWNlID0gaW5qZWN0KE5vdGlmaWNhdGlvbnNTZXJ2aWNlKTtcbiAgcHVibGljIGF1ZGl0U2VydmljZSA9IGluamVjdChBdWRpdFdlYlNlcnZpY2UpO1xuICBwdWJsaWMgcHJlZnMgPSBpbmplY3QoVXNlclByZWZlcmVuY2VzKTtcbiAgcHVibGljIGxvZ2luU2VydmljZSA9IGluamVjdChMb2dpblNlcnZpY2UpO1xuICBwdWJsaWMgYXBwU2VydmljZSA9IGluamVjdChBcHBTZXJ2aWNlKTtcbiAgcHVibGljIGludGxTZXJ2aWNlID0gaW5qZWN0KEludGxTZXJ2aWNlKTtcbiAgcHVibGljIG1vZGFsU2VydmljZSA9IGluamVjdChNb2RhbFNlcnZpY2UpO1xuICBwdWJsaWMgcHJpbmNpcGFsU2VydmljZSA9IGluamVjdChQcmluY2lwYWxXZWJTZXJ2aWNlKTtcbiAgLyoqXG4gICAqIEluaXRpYWxpemUgdGhlIGNoYXQgcHJvY2Vzc1xuICAgKi9cbiAgYWJzdHJhY3QgaW5pdCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplIHRoZSBSRVFVRVNUX1VSTFxuICAgKi9cbiAgYWJzdHJhY3QgZ2V0UmVxdWVzdHNVcmwoKTogdm9pZDtcblxuICBnZXQgYXNzaXN0YW50cygpOiBhbnkge1xuICAgIGlmICghdGhpcy51c2VyU2V0dGluZ3NTZXJ2aWNlLnVzZXJTZXR0aW5ncylcbiAgICAgIHRoaXMudXNlclNldHRpbmdzU2VydmljZS51c2VyU2V0dGluZ3MgPSB7fTtcbiAgICBpZiAoIXRoaXMudXNlclNldHRpbmdzU2VydmljZS51c2VyU2V0dGluZ3NbXCJhc3Npc3RhbnRzXCJdKVxuICAgICAgdGhpcy51c2VyU2V0dGluZ3NTZXJ2aWNlLnVzZXJTZXR0aW5nc1tcImFzc2lzdGFudHNcIl0gPSB7fTtcbiAgICByZXR1cm4gIHRoaXMudXNlclNldHRpbmdzU2VydmljZS51c2VyU2V0dGluZ3NbXCJhc3Npc3RhbnRzXCJdO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgaW5zdGFuY2UgSUQgb2YgdGhlIGNoYXQgc2VydmljZVxuICAgKiBAcmV0dXJucyBUaGUgaW5zdGFuY2UgSUQgb2YgdGhlIGNoYXQgc2VydmljZVxuICAgKi9cbiAgZ2V0IGNoYXRJbnN0YW5jZUlkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2NoYXRJbnN0YW5jZUlkO1xuICB9XG5cbiAgLyoqXG4gICAqIFBlcnNpc3QgdGhlIGluc3RhbmNlIElEIG9mIHRoZSBjaGF0IHNlcnZpY2VcbiAgICogQHBhcmFtIGluc3RhbmNlSWQgVGhlIGluc3RhbmNlIElEIG9mIHRoZSBjaGF0IHNlcnZpY2VcbiAgICovXG4gIHNldENoYXRJbnN0YW5jZUlkKGluc3RhbmNlSWQ6IHN0cmluZykge1xuICAgIHRoaXMuX2NoYXRJbnN0YW5jZUlkID0gaW5zdGFuY2VJZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIElEIG9mIHRoZSBjdXJyZW50IGNoYXQgZGlzY3Vzc2lvbiB3aGljaCBpcyB1c2VkIHRvIHNhdmUvZ2V0L2RlbGV0ZSBpdFxuICAgKiBAcmV0dXJucyBUaGUgSUQgb2YgdGhlIGN1cnJlbnQgY2hhdCBkaXNjdXNzaW9uXG4gICAqL1xuICBnZXQgc2F2ZWRDaGF0SWQoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fc2F2ZWRDaGF0SWQ7XG4gIH1cblxuICAvKipcbiAgICogUGVyc2lzdCB0aGUgSUQgb2YgdGhlIGN1cnJlbnQgY2hhdCBkaXNjdXNzaW9uIHdoaWNoIGlzIHVzZWQgdG8gc2F2ZS9nZXQvZGVsZXRlIGl0XG4gICAqIEBwYXJhbSBzYXZlZENoYXRJZCBUaGUgSUQgb2YgdGhlIGN1cnJlbnQgY2hhdCBkaXNjdXNzaW9uIHdoaWNoIGlzIHVzZWQgdG8gc2F2ZS9nZXQvZGVsZXRlIGl0XG4gICAqL1xuICBzZXRTYXZlZENoYXRJZChzYXZlZENoYXRJZDogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5fc2F2ZWRDaGF0SWQgPSBzYXZlZENoYXRJZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIElEIG9mIHRoZSBjdXJyZW50IGNoYXQgZGlzY3Vzc2lvbiB3aGljaCBpcyB1c2VkIHRvIGlkZW50aWZ5IGF1ZGl0IGV2ZW50c1xuICAgKiBAcmV0dXJucyBUaGUgSUQgb2YgdGhlIGN1cnJlbnQgY2hhdCBkaXNjdXNzaW9uXG4gICAqL1xuICBnZXQgY2hhdElkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2NoYXRJZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZSBhbiBHVUlEIGZvciB0aGUgY3VycmVudCBjaGF0IGRpc2N1c3Npb24gd2hpY2ggaXMgdXNlZCB0byBpZGVudGlmeSBhdWRpdCBldmVudHNcbiAgICogSWYgdGhlIGRpc2N1c3Npb24gaXMgc2F2ZWQsIHRoZSBzYXZlZENoYXRJZCBpcyBpbml0aWFsaXplZCB3aXRoIHRoZSB2YWx1ZSBvZiB0aGlzIGNoYXRJZFxuICAgKiBAcGFyYW0gY2hhdElkIGlmIHByb3ZpZGVkLCBpdCB3aWxsIGJlIGNvbnNpZGVyZWQgYXMgdGhlIElEIG9mIHRoZSBjdXJyZW50IGNoYXQgZGlzY3Vzc2lvbiB3aGljaCBpcyB1c2VkIHRvIGlkZW50aWZ5IGF1ZGl0IGV2ZW50c1xuICAgKi9cbiAgZ2VuZXJhdGVDaGF0SWQoY2hhdElkPzogc3RyaW5nKSB7XG4gICAgdGhpcy5fY2hhdElkID0gY2hhdElkIHx8IFV0aWxzLmd1aWQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplIHRoZSBjaGF0IGNvbmZpZyBieSBtYW5hZ2luZyBPTkxZIHN1Yi1vYmplY3QgKipkZWZhdWx0VmFsdWVzKiogY29uZmlncyBvZiB0aGUgc3RhbmRhcmQgYXBwIGNvbmZpZyAoZGVmaW5lZCBpbiB0aGUgY3VzdG9taXphdGlvbiBqc29uIHRhYiApIGFuZCB0aGUgdXNlciBwcmVmZXJlbmNlcy5cbiAgICogVG8gZG8gc28sIGEgdHJhY2tpbmcgbWVjaGFuaXNtIGlzIGltcGxlbWVudGVkIHRvIG5vdGlmeSB0aGUgdXNlciBhYm91dCB0aGUgYXZhaWxhYmxlIHVwZGF0ZXMgaW4gdGhlIGRlZmF1bHRWYWx1ZXMgb2JqZWN0IG9mIHRoZSBzdGFuZGFyZCBhcHAgY29uZmlnLlxuICAgKiBUaGUgcmVzdCBvZiB0aGUgY29uZmlnIG9iamVjdCBjb21pbmcgZnJvbSBcInN0YW5kYXJkIGFwcCBjb25maWdcIiBpcyB1c2VkIGFzIGl0IGlzIHdpdGhvdXQgYW55IG92ZXJyaWRlLlxuICAgKiBUaHVzLCB0aGUgdXNlciBwcmVmZXJlbmNlcyBhcmUgdXNlZCBvbmx5IGZvciB0aGUgZGVmYXVsdFZhbHVlcyBvYmplY3QuXG4gICAqIFRoaXMgcHJvdmlkZSBhIGNlbnRyYWxpemVkIHdheSB0byBtYW5hZ2UgdGhlIHJlc3Qgb2YgdGhlIGNvbmZpZyBvYmplY3QgYnkgYWRtaW5zIGFuZCBlbnN1cmUgYSB1bmlxdWUgY29tbW9uIGJlaGF2aW9yIGZvciBhbGwgdXNlcnMuXG4gICAqL1xuICBpbml0Q2hhdENvbmZpZygpIHtcbiAgICBjb25zdCBrZXkgPSB0aGlzLmNoYXRJbnN0YW5jZUlkO1xuICAgIGNvbnN0IHVzZXJTZXR0aW5nc0NvbmZpZyA9IHRoaXMuYXNzaXN0YW50c1trZXldIHx8IHt9O1xuICAgIGNvbnN0IHN0YW5kYXJkQ2hhdENvbmZpZyA9IHRoaXMuYXBwU2VydmljZS5hcHA/LmRhdGE/LmFzc2lzdGFudHM/LltrZXldO1xuXG4gICAgdHJ5IHtcbiAgICAgIC8vIFZhbGlkYXRlIHRoZSB3aG9sZSBjb25maWcgb2JqZWN0IGFnYWluc3QgdGhlIHNjaGVtYVxuICAgICAgY2hhdENvbmZpZ1NjaGVtYS5wYXJzZShzdGFuZGFyZENoYXRDb25maWcpO1xuICAgICAgLy8gSWYgdGhlIHVzZXIgcHJlZmVyZW5jZXMgZG8gbm90IGNvbnRhaW4gYSBjb25maWcncyBkZWZhdWx0VmFsdWVzIG9iamVjdCwga2VlcCB1c2luZyB0aGUgc3RhbmRhcmQgYXBwIGNvbmZpZyBhbmQgbm90aGluZyB0byBzdG9yZSBpbiB0aGUgdXNlciBwcmVmZXJlbmNlc1xuICAgICAgaWYgKCF1c2VyU2V0dGluZ3NDb25maWcuZGVmYXVsdFZhbHVlcykge1xuICAgICAgICB0aGlzLmNoYXRDb25maWckLm5leHQoey4uLnN0YW5kYXJkQ2hhdENvbmZpZ30pO1xuICAgICAgICB0aGlzLmluaXRDb25maWckLm5leHQodHJ1ZSk7XG4gICAgICB9IGVsc2UgeyAvLyBJZiB0aGUgdXNlciBoYXMgaXRzIG93biBkZWZhdWx0VmFsdWVzIGluIGl0cyB1c2VyU2V0dGluZ3MsIHRoZW4gd2UgbmVlZCB0byBjaGVjayBmb3IgcG90ZW50aWFsIHVwZGF0ZXMgbWFkZSBieSBhZG1pbnMgaW4gdGhlIG1lYW50aW1lIGFuZCBob3cgaGUgd2FudHMgdG8gbWFuYWdlIHRoZW1cblxuICAgICAgICAvLyBSZXRyaWV2ZSBhbHJlYWR5IHN0b3JlZCBoYXNoZXMgaW4gdGhlIHVzZXIgc2V0dGluZ3MgaWYgZXhpc3RzXG4gICAgICAgIGNvbnN0IGFwcGxpZWREZWZhdWx0VmFsdWVzSGFzaCA9IHVzZXJTZXR0aW5nc0NvbmZpZy5oYXNoZXM/LltcImFwcGxpZWQtZGVmYXVsdFZhbHVlcy1oYXNoXCJdO1xuICAgICAgICBjb25zdCBza2lwcGVkRGVmYXVsdFZhbHVlc0hhc2ggPSB1c2VyU2V0dGluZ3NDb25maWcuaGFzaGVzPy5bXCJza2lwcGVkLWRlZmF1bHRWYWx1ZXMtaGFzaFwiXTtcbiAgICAgICAgLy8gQ3JlYXRlIGEgaGFzaCBvZiB0aGUgY3VycmVudCBkZWZhdWx0VmFsdWVzIG9mIHRoZSBzdGFuZGFyZENoYXRDb25maWdcbiAgICAgICAgY29uc3QgY3VycmVudERlZmF1bHRWYWx1ZXNIYXNoID0gVXRpbHMuc2hhNTEyKEpTT04uc3RyaW5naWZ5KHN0YW5kYXJkQ2hhdENvbmZpZy5kZWZhdWx0VmFsdWVzKSk7XG5cbiAgICAgICAgLy8gSW1wbGVtZW50IHRoZSB0cmFja2luZyBtZWNoYW5pc20gdG8gbm90aWZ5IHRoZSB1c2VyIGFib3V0IHRoZSBhdmFpbGFibGUgdXBkYXRlcyBpbiB0aGUgZGVmYXVsdFZhbHVlcyBvYmplY3Qgb2YgdGhlIHN0YW5kYXJkIGFwcCBjb25maWdcbiAgICAgICAgY29uc3QgY29uZGl0aW9uID0gKGN1cnJlbnREZWZhdWx0VmFsdWVzSGFzaCAhPT0gYXBwbGllZERlZmF1bHRWYWx1ZXNIYXNoKSAmJiAoY3VycmVudERlZmF1bHRWYWx1ZXNIYXNoICE9PSBza2lwcGVkRGVmYXVsdFZhbHVlc0hhc2gpO1xuICAgICAgICBpZiAoY29uZGl0aW9uKSB7XG4gICAgICAgICAgdGhpcy5tb2RhbFNlcnZpY2VcbiAgICAgICAgICAgIC5jb25maXJtKHtcbiAgICAgICAgICAgICAgdGl0bGU6IFwiQXZhaWxhYmxlIHVwZGF0ZXMgIVwiLFxuICAgICAgICAgICAgICBtZXNzYWdlOiBcIkNoYW5nZXMgaGF2ZSBiZWVuIG1hZGUgdG8gdGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbi4gRG8geW91IHdhbnQgdG8gdXBkYXRlIHlvdXIgb3duIHZlcnNpb24gP1wiLFxuICAgICAgICAgICAgICBidXR0b25zOiBbXG4gICAgICAgICAgICAgICAgICBuZXcgTW9kYWxCdXR0b24oe3Jlc3VsdDogTW9kYWxSZXN1bHQuTm8sIHRleHQ6IFwiU2VlIG5vIG1vcmVcIn0pLFxuICAgICAgICAgICAgICAgICAgbmV3IE1vZGFsQnV0dG9uKHtyZXN1bHQ6IE1vZGFsUmVzdWx0Lklnbm9yZSwgdGV4dDogXCJSZW1pbmQgbWUgbGF0ZXJcIn0pLFxuICAgICAgICAgICAgICAgICAgbmV3IE1vZGFsQnV0dG9uKHtyZXN1bHQ6IE1vZGFsUmVzdWx0Lk9LLCB0ZXh0OiBcIlVwZGF0ZVwiLCBwcmltYXJ5OiB0cnVlfSlcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgY29uZmlybVR5cGU6IENvbmZpcm1UeXBlLldhcm5pbmdcbiAgICAgICAgICAgIH0pLnRoZW4ocmVzID0+IHtcbiAgICAgICAgICAgICAgICBpZihyZXMgPT09IE1vZGFsUmVzdWx0Lk9LKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBoYXNoZXMgPSB7IC4uLnVzZXJTZXR0aW5nc0NvbmZpZy5oYXNoZXMsIFwiYXBwbGllZC1kZWZhdWx0VmFsdWVzLWhhc2hcIjogY3VycmVudERlZmF1bHRWYWx1ZXNIYXNoLCBcInNraXBwZWQtZGVmYXVsdFZhbHVlcy1oYXNoXCI6IHVuZGVmaW5lZCB9O1xuICAgICAgICAgICAgICAgICAgLy8gVXBkYXRlIHRoZSBjaGF0IGNvbmZpZyBhbmQgc3RvcmUgaXRzIGRlZmF1bHRWYWx1ZXMgaW4gdGhlIHVzZXIgcHJlZmVyZW5jZXNcbiAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlQ2hhdENvbmZpZyh7Li4uc3RhbmRhcmRDaGF0Q29uZmlnfSwgaGFzaGVzLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgIHRoaXMuaW5pdENvbmZpZyQubmV4dCh0cnVlKTtcbiAgICAgICAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVBdWRpdEV2ZW50KFwiY29uZmlndXJhdGlvbi5lZGl0XCIsIHsgJ2NvbmZpZ3VyYXRpb24nOiBKU09OLnN0cmluZ2lmeSh7Li4uc3RhbmRhcmRDaGF0Q29uZmlnfSkgfSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmKHJlcyA9PT0gTW9kYWxSZXN1bHQuTm8pIHtcbiAgICAgICAgICAgICAgICAgIC8vIERvIG5vdCBub3RpZnkgdGhlIHVzZXIgYWJvdXQgY2hhbmdlcyB3aGlsZSB0aGlzIHNraXBwZWQgdmVyc2lvbiBpcyBub3QgdXBkYXRlZFxuICAgICAgICAgICAgICAgICAgY29uc3QgaGFzaGVzID0geyAuLi51c2VyU2V0dGluZ3NDb25maWcuaGFzaGVzLCBcInNraXBwZWQtZGVmYXVsdFZhbHVlcy1oYXNoXCI6IGN1cnJlbnREZWZhdWx0VmFsdWVzSGFzaCB9O1xuICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVDaGF0Q29uZmlnKHsuLi5zdGFuZGFyZENoYXRDb25maWcsIGRlZmF1bHRWYWx1ZXM6IHVzZXJTZXR0aW5nc0NvbmZpZy5kZWZhdWx0VmFsdWVzfSwgaGFzaGVzLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgICB0aGlzLmluaXRDb25maWckLm5leHQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIC8vIEp1c3QgcGljayB0aGUgdmVyc2lvbiBpbiB0aGUgdXNlciBzZXR0aW5ncywgbm90aGluZyB0byBiZSB1cGRhdGVkXG4gICAgICAgICAgICAgICAgICB0aGlzLmNoYXRDb25maWckLm5leHQoey4uLnN0YW5kYXJkQ2hhdENvbmZpZywgZGVmYXVsdFZhbHVlczogdXNlclNldHRpbmdzQ29uZmlnLmRlZmF1bHRWYWx1ZXN9KTtcbiAgICAgICAgICAgICAgICAgIHRoaXMuaW5pdENvbmZpZyQubmV4dCh0cnVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHsgLy8gTm8gYXZhaWxhYmxlIHVwZGF0ZXMgT3IgdXBkYXRlcyBoYXMgYmVlbiBhbHJlYWR5IHNraXBwZWQsIHRoZW4ganVzdCBwaWNrIHRoZSB2ZXJzaW9uIGluIHRoZSB1c2VyIHNldHRpbmdzXG4gICAgICAgICAgdGhpcy5jaGF0Q29uZmlnJC5uZXh0KHsuLi5zdGFuZGFyZENoYXRDb25maWcsIGRlZmF1bHRWYWx1ZXM6IHVzZXJTZXR0aW5nc0NvbmZpZy5kZWZhdWx0VmFsdWVzfSk7XG4gICAgICAgICAgdGhpcy5pbml0Q29uZmlnJC5uZXh0KHRydWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRoaXMubm90aWZpY2F0aW9uc1NlcnZpY2UuZXJyb3IoYE1pc3NpbmcgdmFsaWQgY29uZmlndXJhdGlvbiBmb3IgdGhlIGFzc2lzdGFudCBpbnN0YW5jZSAnJHtrZXl9J2ApO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBNaXNzaW5nIHZhbGlkIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBhc3Npc3RhbnQgaW5zdGFuY2UgJyR7a2V5fScgLiBcXG4gJHtKU09OLnN0cmluZ2lmeShlcnJvci5pc3N1ZXMsIG51bGwsIDIpfWApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgdGhlIGNoYXQgY29uZmlnIGFuZCBzdG9yZSBpdHMgZGVmYXVsdFZhbHVlcyBpbiB0aGUgdXNlciBwcmVmZXJlbmNlc1xuICAgKiBAcGFyYW0gY29uZmlnICBUaGUgdXBkYXRlZCBjaGF0IGNvbmZpZ1xuICAgKiBAcGFyYW0gaGFzaGVzICBUaGUgdXBkYXRlZCBoYXNoZXMgdG8gc3RvcmUgaW4gdGhlIHVzZXIgcHJlZmVyZW5jZXNcbiAgICogQHBhcmFtIG5vdGlmeSAgV2hldGhlciB0byBub3RpZnkgdGhlIHVzZXIgYWJvdXQgdGhlIHVwZGF0ZVxuICAgKiBAcGFyYW0gc3VjY2Vzc0NhbGxiYWNrICBUaGUgY2FsbGJhY2sgdG8gZXhlY3V0ZSBpZiB0aGUgdXBkYXRlIGlzIHN1Y2Nlc3NmdWxcbiAgICogQHBhcmFtIGVycm9yQ2FsbGJhY2sgIFRoZSBjYWxsYmFjayB0byBleGVjdXRlIGlmIHRoZSB1cGRhdGUgZmFpbHNcbiAgICovXG4gIHVwZGF0ZUNoYXRDb25maWcoY29uZmlnOiBDaGF0Q29uZmlnLCBoYXNoZXM/OiB7XCJhcHBsaWVkLWRlZmF1bHRWYWx1ZXMtaGFzaFwiPzogc3RyaW5nLCBcInNraXBwZWQtZGVmYXVsdFZhbHVlcy1oYXNoXCI/OiBzdHJpbmd9LCAgbm90aWZ5ID0gdHJ1ZSwgc3VjY2Vzc0NhbGxiYWNrPzogKCkgPT4gYW55LCBlcnJvckNhbGxiYWNrPzogKCkgPT4gYW55KSB7XG4gICAgdGhpcy5jaGF0Q29uZmlnJC5uZXh0KGNvbmZpZyk7XG4gICAgY29uc3QgYXNzaXN0YW50cyA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuYXNzaXN0YW50cyk7XG4gICAgYXNzaXN0YW50c1t0aGlzLmNoYXRJbnN0YW5jZUlkXSA9IHsgLi4uYXNzaXN0YW50c1t0aGlzLmNoYXRJbnN0YW5jZUlkXSwgZGVmYXVsdFZhbHVlczogY29uZmlnLmRlZmF1bHRWYWx1ZXMgfTtcbiAgICBpZihoYXNoZXMpIGFzc2lzdGFudHNbdGhpcy5jaGF0SW5zdGFuY2VJZF0uaGFzaGVzID0gaGFzaGVzO1xuICAgIHRoaXMudXNlclNldHRpbmdzU2VydmljZS5wYXRjaCh7IGFzc2lzdGFudHMgfSkuc3Vic2NyaWJlKFxuICAgICAgbmV4dCA9PiB7fSxcbiAgICAgIGVycm9yID0+IHtcbiAgICAgICAgaWYobm90aWZ5KSB7XG4gICAgICAgICAgZXJyb3JDYWxsYmFjayA/IGVycm9yQ2FsbGJhY2soKSA6IHRoaXMubm90aWZpY2F0aW9uc1NlcnZpY2UuZXJyb3IoYFRoZSB1cGRhdGUgb2YgdGhlIGFzc2lzdGFudCBpbnN0YW5jZSAnJHt0aGlzLmNoYXRJbnN0YW5jZUlkfScgY29uZmlndXJhdGlvbiBmYWlsZWRgKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zb2xlLmVycm9yKFwiQ291bGQgbm90IHBhdGNoIGFzc2lzdGFudHMhXCIsIGVycm9yKTtcbiAgICAgIH0sXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGlmKG5vdGlmeSkge1xuICAgICAgICAgIHN1Y2Nlc3NDYWxsYmFjayA/IHN1Y2Nlc3NDYWxsYmFjaygpIDogdGhpcy5ub3RpZmljYXRpb25zU2VydmljZS5zdWNjZXNzKGBUaGUgYXNzaXN0YW50IGluc3RhbmNlICcke3RoaXMuY2hhdEluc3RhbmNlSWR9JyBjb25maWd1cmF0aW9uIGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSB1cGRhdGVkYCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxzIHRoZSBGZXRjaCBBUEkgdG8gcmV0cmlldmUgYSBuZXcgbWVzc2FnZSBnaXZlbiBhbGwgcHJldmlvdXMgbWVzc2FnZXNcbiAgICovXG4gIGFic3RyYWN0IGZldGNoKG1lc3NhZ2VzOiBDaGF0TWVzc2FnZVtdLCBxdWVyeTogUXVlcnkpOiBPYnNlcnZhYmxlPENoYXRSZXNwb25zZT5cblxuICAvKipcbiAgICogUmV0dXJuIHRoZSBsaXN0IG9mIG1vZGVscyBhdmFpbGFibGUgb24gdGhlIHNlcnZlclxuICAgKi9cbiAgYWJzdHJhY3QgbGlzdE1vZGVscygpOiBPYnNlcnZhYmxlPEdsbG1Nb2RlbERlc2NyaXB0aW9uW10gfCB1bmRlZmluZWQ+O1xuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIGxpc3Qgb2YgZnVuY3Rpb25zIGF2YWlsYWJsZSBvbiB0aGUgc2VydmVyIEFORCBtYXRjaGluZyBlbmFibGVkIGZ1bmN0aW9ucyBpbiB0aGUgY2hhdCBjb25maWdcbiAgICovXG4gIGFic3RyYWN0IGxpc3RGdW5jdGlvbnMoKTogT2JzZXJ2YWJsZTxHbGxtRnVuY3Rpb25bXSB8IHVuZGVmaW5lZD47XG5cbiAgLyoqXG4gICAqIEEgaGFuZGxlciBmb3IgcXVvdGEgdXBkYXRlcyBlYWNoIHRpbWUgdGhlIGNoYXQgaXMgaW52b2tlZC5cbiAgICogSXQgZW1pdHMgdGhlIHVwZGF0ZWQgcXVvdGEgdG8gdGhlIHF1b3RhJCBzdWJqZWN0LCBlbWl0cyBhY2NvcmRpbmdseSB0aGUgdXBkYXRlZCB1c2VyJ3MgdG9rZW5zIGNvbnN1bXB0aW9uIGFuZCBub3RpZmllcyB0aGUgdXNlciBpZiB0aGUgbWF4IHF1b3RhIGlzIHJlYWNoZWQuXG4gICAqIEBwYXJhbSBxdW90YSBUaGUgdXBkYXRlZCBxdW90YVxuICAgKiBAcGFyYW0gcHJvcGFnYXRlRXJyb3IgV2hldGhlciB0byBwcm9wYWdhdGUgdGhlIGVycm9yIHRvIHRoZSBjYWxsZXJcbiAgICovXG4gIHVwZGF0ZVF1b3RhKHF1b3RhOiBRdW90YSwgcHJvcGFnYXRlRXJyb3IgPSBmYWxzZSkge1xuICAgIHRoaXMucXVvdGEkLm5leHQocXVvdGEpO1xuICAgIGNvbnN0IG5leHRSZXNldERhdGUgPSB0aGlzLmZvcm1hdERhdGVUaW1lKHF1b3RhLm5leHRSZXNldFVUQytcIiswMDowMFwiKTsgLy8gVGhpcyArMDA6MDAgaXMgdG8gZW5zdXJlIGRhdGVzIHdpbGwgYmUgcHJvcGVybHkgY29udmVydGVkIHRvIGxvY2FsIHRpbWVcbiAgICBjb25zdCBjb25zdW1wdGlvblBlcmNlbnRhZ2UgPSBNYXRoLnJvdW5kKChxdW90YS50b2tlbkNvdW50ICogMTAwIC8gcXVvdGEucGVyaW9kVG9rZW5zKSAqIDEwMCkgLyAxMDA7XG4gICAgdGhpcy51c2VyVG9rZW5Db25zdW1wdGlvbiQubmV4dCh7cGVyY2VudGFnZTogY29uc3VtcHRpb25QZXJjZW50YWdlLCBuZXh0UmVzZXREYXRlfSk7XG4gICAgaWYocXVvdGEubWF4UXVvdGFSZWFjaGVkKSB7XG4gICAgICBjb25zdCBtc2cgPSBgU29ycnksIHlvdSBoYXZlIGV4Y2VlZGVkIHRoZSBhbGxvd2VkIHF1b3RhLiBQbGVhc2UgcmV0cnkgc3RhcnRpbmcgZnJvbSAke25leHRSZXNldERhdGV9LmA7XG4gICAgICB0aGlzLm5vdGlmaWNhdGlvbnNTZXJ2aWNlLmVycm9yKG1zZyk7XG4gICAgICBpZihwcm9wYWdhdGVFcnJvcikgdGhyb3cgbmV3IEVycm9yKG1zZyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEEgaGFuZGxlciBmb3IgY2hhdCB1c2FnZSBtZXRyaWNzIGVhY2ggdGltZSB0aGUgZ2VuZXJhdGlvbiBvZiB0aGUgYXNzaXN0YW50IHJlc3BvbnNlIGlzIGNvbXBsZXRlZC5cbiAgICogSXQgZW1pdHMgdGhlIGNoYXQgdXNhZ2UgbWV0cmljcyB0byB0aGUgY2hhdFVzYWdlTWV0cmljcyQgc3ViamVjdCwgZW1pdHMgYWNjb3JkaW5nbHkgdGhlIHVwZGF0ZWQgY2hhdCdzIHRva2VucyBjb25zdW1wdGlvblxuICAgKiBAcGFyYW0gY2hhdFVzYWdlTWV0cmljcyBUaGUgY2hhdCB1c2FnZSBtZXRyaWNzXG4gICAqL1xuICB1cGRhdGVDaGF0VXNhZ2VNZXRyaWNzKGNoYXRVc2FnZU1ldHJpY3M6IENoYXRVc2FnZU1ldHJpY3MpIHtcbiAgICB0aGlzLmNoYXRVc2FnZU1ldHJpY3MkLm5leHQoY2hhdFVzYWdlTWV0cmljcyk7XG4gICAgY29uc3QgY3VycmVudE1vZGVsID0gdGhpcy5nZXRNb2RlbCh0aGlzLmNoYXRDb25maWckLnZhbHVlIS5kZWZhdWx0VmFsdWVzLnNlcnZpY2VfaWQsIHRoaXMuY2hhdENvbmZpZyQudmFsdWUhLmRlZmF1bHRWYWx1ZXMubW9kZWxfaWQpO1xuICAgIGNvbnN0IGNvbnN1bXB0aW9uUGVyY2VudGFnZSA9IE1hdGgucm91bmQoKGNoYXRVc2FnZU1ldHJpY3MudG90YWxUb2tlbkNvdW50ICogMTAwIC8gKGN1cnJlbnRNb2RlbCEuY29udGV4dFdpbmRvd1NpemUgLSBjdXJyZW50TW9kZWwhLm1heEdlbmVyYXRpb25TaXplKSkgKiAxMDApIC8gMTAwO1xuICAgIHRoaXMuY2hhdFRva2VuQ29uc3VtcHRpb24kLm5leHQoe3BlcmNlbnRhZ2U6IGNvbnN1bXB0aW9uUGVyY2VudGFnZX0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgbW9kZWwgZGVzY3JpcHRpb24gZm9yIHRoZSBnaXZlbiAoc2VydmljZUlkICsgbW9kZWxJZClcbiAgICogSWYgYSBtb2RlbCBpcyBub3QgZm91bmQsIGFuIGVycm9yIG1lc3NhZ2UgaXMgcmV0dXJuZWRcbiAgICogQHBhcmFtIHNlcnZpY2VJZCBUaGUgc2VydmljZUlkIG9mIHRoZSBtb2RlbFxuICAgKiBAcGFyYW0gbW9kZWxJZCBUaGUgbW9kZWxJZCBvZiB0aGUgbW9kZWxcbiAgICogQHJldHVybnMgVGhlIG1vZGVsIGRlc2NyaXB0aW9uXG4gICAqL1xuICBnZXRNb2RlbChzZXJ2aWNlSWQ6IHN0cmluZywgbW9kZWxJZDogc3RyaW5nKTogR2xsbU1vZGVsRGVzY3JpcHRpb24gfCB1bmRlZmluZWR7XG4gICAgbGV0IG1vZGVsID0gdGhpcy5tb2RlbHM/LmZpbmQobSA9PiBtLnNlcnZpY2VJZCA9PT0gc2VydmljZUlkICYmIG0ubW9kZWxJZCA9PT0gbW9kZWxJZCk7XG4gICAgLy8gSGFuZGxlIG9ic29sZXRlIGNvbmZpZ1xuICAgIGlmKCFtb2RlbCkge1xuICAgICAgdGhpcy5ub3RpZmljYXRpb25zU2VydmljZS5lcnJvcihgRkFUQUwgRVJST1IgOiBUaGUgbW9kZWwgKHNlcnZpY2VJZCA9ICcke3NlcnZpY2VJZH0nLCBtb2RlbElkID0gJyR7bW9kZWxJZH0nKSBpcyBubyBsb25nZXIgYXZhaWxhYmxlLiBQbGVhc2UgY29udGFjdCBhbiBhZG1pbiBmb3IgZnVydGhlciBpbmZvcm1hdGlvbi5gKTtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRkFUQUwgRVJST1IgOiBUaGUgbW9kZWwgKHNlcnZpY2VJZCA9ICcke3NlcnZpY2VJZH0nLCBtb2RlbElkID0gJyR7bW9kZWxJZH0nKSBpcyBubyBsb25nZXIgYXZhaWxhYmxlYCk7XG4gICAgfVxuICAgIHJldHVybiBtb2RlbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaCB0aGUgbGlzdCBzYXZlZCBjaGF0cyBiZWxvbmdpbmcgdG8gYSBzcGVjaWZpYyBpbnN0YW5jZSBvZiB0aGUgYXNzaXN0YW50XG4gICAqL1xuICBhYnN0cmFjdCBsaXN0U2F2ZWRDaGF0KCk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgc2F2ZWQgY2hhdCB3aXRoIHRoZSBnaXZlbiBpZCwgaWYgZXhpc3RzLiBPdGhlcndpc2UsIHJldHVybiB1bmRlZmluZWRcbiAgICogQHBhcmFtIGlkIFRoZSBpZCBvZiB0aGUgc2F2ZWQgY2hhdFxuICAgKi9cbiAgYWJzdHJhY3QgZ2V0U2F2ZWRDaGF0KGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFNhdmVkQ2hhdEhpc3RvcnkgfCB1bmRlZmluZWQ+O1xuXG4gIC8qKlxuICAgKiBTYXZlIGEgY2hhdCB3aXRoIHRoZSBnaXZlbiBtZXNzYWdlc1xuICAgKiBAcGFyYW0gbWVzc2FnZXMgVGhlIG1lc3NhZ2VzIHRvIGFkZCB0byB0aGUgc2F2ZWQgY2hhdCBpbmRleFxuICAgKiBAcmV0dXJucyBUaGUgc2F2ZWQgY2hhdFxuICAgKi9cbiAgYWJzdHJhY3QgYWRkU2F2ZWRDaGF0KG1lc3NhZ2VzOiBDaGF0TWVzc2FnZVtdKTogT2JzZXJ2YWJsZTxTYXZlZENoYXQ+O1xuXG4gIC8qKlxuICAgKiBVcGRhdGUgYSBzYXZlZCBjaGF0IHdpdGggdGhlIGdpdmVuIGlkLlxuICAgKiBAcGFyYW0gaWQgVGhlIGlkIG9mIHRoZSBzYXZlZCBjaGF0XG4gICAqIEBwYXJhbSBuYW1lIFRoZSBuZXcgbmFtZSBvZiB0aGUgc2F2ZWQgY2hhdCwgaWYgcHJvdmlkZWRcbiAgICogQHBhcmFtIG1lc3NhZ2VzIFRoZSBtZXNzYWdlcyB0byB1cGRhdGUgdGhlIHNhdmVkIGNoYXQgaGlzdG9yeSwgaWYgcHJvdmlkZWRcbiAgICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgc2F2ZWQgY2hhdCBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgdXBkYXRlZFxuICAgKi9cbiAgYWJzdHJhY3QgdXBkYXRlU2F2ZWRDaGF0KGlkOiBzdHJpbmcsIG5hbWU/OiBzdHJpbmcsIG1lc3NhZ2VzPzogQ2hhdE1lc3NhZ2VbXSk6IE9ic2VydmFibGU8U2F2ZWRDaGF0PjtcblxuICAvKipcbiAgICogQnVsayBkZWxldGUgb2Ygc2F2ZWQgY2hhdHMgbWF0Y2hpbmcgdGhlIGdpdmVuIGlkc1xuICAgKiBAcGFyYW0gaWRzIExpc3Qgb2YgaWRzIG9mIHRoZSBzYXZlZCBjaGF0cyB0byBkZWxldGVcbiAgICogQHJldHVybnMgVGhlIG51bWJlciBvZiBkZWxldGVkIGNoYXRzXG4gICAqL1xuICBhYnN0cmFjdCBkZWxldGVTYXZlZENoYXQoaWRzOiBzdHJpbmdbXSk6IE9ic2VydmFibGU8bnVtYmVyPjtcblxuICAvKipcbiAgICogR2VuZXJhdGUgYW4gYXVkaXQgZXZlbnQgd2l0aCB0aGUgZ2l2ZW4gdHlwZSBhbmQgZGV0YWlscy4gVGhlIGdlbmVyYXRlZCBhdWRpdCBldmVudCBpcyBzZW50IGFmdGVyd2FyZHMgdmlhIHRoZSBBdWRpdFdlYlNlcnZpY2VcbiAgICogQHBhcmFtIHR5cGUgQXVkaXQgZXZlbnQgdHlwZVxuICAgKiBAcGFyYW0gZGV0YWlscyBBdWRpdCBldmVudCBkZXRhaWxzXG4gICAqIEBwYXJhbSBpZCBBY3Rpb25zIChzYXZlZENoYXQgZGVsZXRlL3JlbmFtZS8uLi4pIG1heSBvY2N1ciBvbiBhIHNwZWNpZmljIGNoYXQgZGlmZmVyZW50IHRoYW4gdGhlIGN1cnJlbnQgb25lIHN0b3JlZCBpbiB0aGlzIHNlcnZpY2UsIHNvIHRoZSBjaGF0IGlkIGNhbiBiZSBwcm92aWRlZFxuICAgKi9cbiAgZ2VuZXJhdGVBdWRpdEV2ZW50KHR5cGU6IHN0cmluZywgZGV0YWlsczogUmVjb3JkPHN0cmluZywgYW55PiwgaWQ/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBiYXNlRGV0YWlscyA9IHtcbiAgICAgIFwidXJsXCI6IGRlY29kZVVSSUNvbXBvbmVudCh3aW5kb3cubG9jYXRpb24uaHJlZiksXG4gICAgICBcImFwcFwiOiB0aGlzLmFwcFNlcnZpY2UuYXBwTmFtZSxcbiAgICAgIFwidXNlci1pZFwiOiB0aGlzLnByaW5jaXBhbFNlcnZpY2UucHJpbmNpcGFsPy51c2VySWQsXG4gICAgICBcImluc3RhbmNlLWlkXCI6IHRoaXMuY2hhdEluc3RhbmNlSWQsXG4gICAgICBcImNoYXQtaWRcIjogaWQgfHwgdGhpcy5jaGF0SWQsXG4gICAgICBcInNlcnZpY2UtaWRcIjogdGhpcy5jaGF0Q29uZmlnJC52YWx1ZSEuZGVmYXVsdFZhbHVlcy5zZXJ2aWNlX2lkLFxuICAgICAgXCJtb2RlbC1pZFwiOiB0aGlzLmNoYXRDb25maWckLnZhbHVlIS5kZWZhdWx0VmFsdWVzLm1vZGVsX2lkLFxuICAgIH07XG4gICAgY29uc3QgYXVkaXQgPSB7XG4gICAgICB0eXBlLFxuICAgICAgZGV0YWlsOiB7XG4gICAgICAgIC4uLmJhc2VEZXRhaWxzLFxuICAgICAgICAuLi5kZXRhaWxzXG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuYXVkaXRTZXJ2aWNlLm5vdGlmeShhdWRpdCk7XG4gIH1cblxuICAvKipcbiAgICogRm9ybWF0IGEgZGF0ZSBzdHJpbmcgaW4gVVRDIHRvIGEgbG9jYWwgZGF0ZSBzdHJpbmdcbiAgICogQHBhcmFtIHZhbHVlIERhdGUgc3RyaW5nIGluIFVUQyB0byBmb3JtYXRcbiAgICogQHJldHVybnMgQSBmb3JtYXR0ZWQgbG9jYWwgZGF0ZSBzdHJpbmdcbiAgICovXG4gIHByb3RlY3RlZCBmb3JtYXREYXRlVGltZSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBsb2NhbERhdGUgPSB0b0RhdGUocGFyc2VJU08odmFsdWUpKTtcbiAgICByZXR1cm4gdGhpcy5pbnRsU2VydmljZVtcImZvcm1hdFRpbWVcIl0obG9jYWxEYXRlLCB7ZGF5OiBcIm51bWVyaWNcIiwgbW9udGg6IFwic2hvcnRcIiwgeWVhcjogXCJudW1lcmljXCIsIHRpbWVab25lTmFtZTogJ3Nob3J0J30pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRha2VzIGEgdGV4dCBwcm9tcHQgdGhhdCBtYXkgY29udGFpbiBwbGFjZWhvbGRlcnMgZm9yIHZhcmlhYmxlc1xuICAgKiBhbmQgcmVwbGFjZXMgdGhlc2UgcGxhY2Vob2xkZXJzIGlmIGl0IGZpbmRzIGEgbWF0Y2ggaW4gdGhlIGdpdmVuXG4gICAqIGNvbnRleHQgb2JqZWN0LlxuICAgKi9cbiAgc3RhdGljIGZvcm1hdFByb21wdChwcm9tcHQ6IHN0cmluZywgY29udGV4dDogYW55KSB7XG4gICAgcmV0dXJuIHByb21wdC5yZXBsYWNlKFxuICAgICAgL3t7KC4qPyl9fS9nLFxuICAgICAgKG1hdGNoLCBleHByKSA9PiBnZXQoY29udGV4dCwgZXhwcikgPz8gbWF0Y2hcbiAgICApO1xuICB9XG5cbn1cbiJdfQ==
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { CommonModule } from "@angular/common";
|
|
2
|
+
import { Component, Input } from "@angular/core";
|
|
3
|
+
import { Utils } from "@sinequa/core/base";
|
|
4
|
+
import * as Prism from 'prismjs';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@sinequa/components/utils";
|
|
7
|
+
import * as i2 from "@angular/common";
|
|
8
|
+
export class DebugMessageComponent {
|
|
9
|
+
constructor(ui) {
|
|
10
|
+
this.ui = ui;
|
|
11
|
+
this.level = 0; // Track the nesting level
|
|
12
|
+
this.parentColor = ''; // Track the parent row color
|
|
13
|
+
}
|
|
14
|
+
ngAfterViewInit() {
|
|
15
|
+
Prism.highlightAll();
|
|
16
|
+
}
|
|
17
|
+
isObject(value) {
|
|
18
|
+
return Utils.isObject(value);
|
|
19
|
+
}
|
|
20
|
+
getRowClass(item, index) {
|
|
21
|
+
if (item.isError)
|
|
22
|
+
return 'row-error';
|
|
23
|
+
if (this.level === 0)
|
|
24
|
+
return index % 2 === 0 ? 'row-even' : 'row-odd';
|
|
25
|
+
return this.parentColor;
|
|
26
|
+
}
|
|
27
|
+
copyToClipboard(code) {
|
|
28
|
+
this.ui.copyToClipboard(JSON.stringify(code, null, 2));
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
DebugMessageComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: DebugMessageComponent, deps: [{ token: i1.UIService }], target: i0.ɵɵFactoryTarget.Component });
|
|
32
|
+
DebugMessageComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: DebugMessageComponent, isStandalone: true, selector: "sq-debug-message", inputs: { data: "data", level: "level", parentColor: "parentColor" }, ngImport: i0, template: "<div *ngIf=\"data\" class=\"table-root\">\n <ng-container *ngFor=\"let item of data; let i = index\">\n <div *ngIf=\"item.type === 'KV'\" [ngClass]=\"getRowClass(item, i)\" class=\"table-row kv-object\">\n <div class=\"kv-key\">{{ item.data.key }}</div>\n <div class=\"kv-value\">\n <ng-container *ngIf=\"isObject(item.data.value); else normalValue\">\n <div class=\"card mb-2\">\n <div class=\"card-header\">\n <button class=\"btn btn-light btn-sm\" (click)=\"copyToClipboard(item.data.value)\"><i class=\"far fa-fw fa-clipboard\"></i> Copy code</button>\n </div>\n <pre class=\"language-json my-0 rounded-0 rounded-bottom\"><code class=\"language-json\">{{ item.data.value | json }}</code></pre>\n </div>\n </ng-container>\n <ng-template #normalValue>{{ item.data.value }}</ng-template>\n </div>\n </div>\n <div *ngIf=\"item.type === 'LIST'\" [ngClass]=\"getRowClass(item, i)\" class=\"table-row list-object\">\n <div class=\"list-name\" [class.w-100]=\"!item.expanded\" (click)=\"item.expanded=!item.expanded\">\n <i class=\"fas\" [class.fa-chevron-up]=\"item.expanded\" [class.fa-chevron-down]=\"!item.expanded\"></i>\n {{ item.name }}\n </div>\n <div class=\"list-items\" *ngIf=\"item.expanded\">\n <sq-debug-message [data]=\"item.items\" [level]=\"level + 1\" [parentColor]=\"getRowClass(item, i)\"></sq-debug-message>\n </div>\n </div>\n </ng-container>\n</div>\n", styles: [".table-root{display:flex;flex-direction:column;border:1px solid #ccc;width:100%;border-spacing:0}.table-row{display:flex;width:100%}.list-name{width:15%;cursor:pointer}.list-items{width:85%}.kv-key,.kv-value,.list-name{padding:8px;border:1px solid #ccc;box-sizing:border-box;word-wrap:break-word}.kv-key{width:20%}.kv-value{width:80%}.kv-object,.list-object{display:flex;flex:1}.row-even{background-color:#fff}.row-odd{background-color:#f2f8fe}.row-error{background-color:#f08080}.table-row:not(:last-child){border-bottom:1px solid #ccc}.kv-key:last-child,.kv-value:last-child,.list-name:last-child{border-right:none}\n"], dependencies: [{ kind: "component", type: DebugMessageComponent, selector: "sq-debug-message", inputs: ["data", "level", "parentColor"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.JsonPipe, name: "json" }] });
|
|
33
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: DebugMessageComponent, decorators: [{
|
|
34
|
+
type: Component,
|
|
35
|
+
args: [{ selector: "sq-debug-message", standalone: true, imports: [CommonModule], template: "<div *ngIf=\"data\" class=\"table-root\">\n <ng-container *ngFor=\"let item of data; let i = index\">\n <div *ngIf=\"item.type === 'KV'\" [ngClass]=\"getRowClass(item, i)\" class=\"table-row kv-object\">\n <div class=\"kv-key\">{{ item.data.key }}</div>\n <div class=\"kv-value\">\n <ng-container *ngIf=\"isObject(item.data.value); else normalValue\">\n <div class=\"card mb-2\">\n <div class=\"card-header\">\n <button class=\"btn btn-light btn-sm\" (click)=\"copyToClipboard(item.data.value)\"><i class=\"far fa-fw fa-clipboard\"></i> Copy code</button>\n </div>\n <pre class=\"language-json my-0 rounded-0 rounded-bottom\"><code class=\"language-json\">{{ item.data.value | json }}</code></pre>\n </div>\n </ng-container>\n <ng-template #normalValue>{{ item.data.value }}</ng-template>\n </div>\n </div>\n <div *ngIf=\"item.type === 'LIST'\" [ngClass]=\"getRowClass(item, i)\" class=\"table-row list-object\">\n <div class=\"list-name\" [class.w-100]=\"!item.expanded\" (click)=\"item.expanded=!item.expanded\">\n <i class=\"fas\" [class.fa-chevron-up]=\"item.expanded\" [class.fa-chevron-down]=\"!item.expanded\"></i>\n {{ item.name }}\n </div>\n <div class=\"list-items\" *ngIf=\"item.expanded\">\n <sq-debug-message [data]=\"item.items\" [level]=\"level + 1\" [parentColor]=\"getRowClass(item, i)\"></sq-debug-message>\n </div>\n </div>\n </ng-container>\n</div>\n", styles: [".table-root{display:flex;flex-direction:column;border:1px solid #ccc;width:100%;border-spacing:0}.table-row{display:flex;width:100%}.list-name{width:15%;cursor:pointer}.list-items{width:85%}.kv-key,.kv-value,.list-name{padding:8px;border:1px solid #ccc;box-sizing:border-box;word-wrap:break-word}.kv-key{width:20%}.kv-value{width:80%}.kv-object,.list-object{display:flex;flex:1}.row-even{background-color:#fff}.row-odd{background-color:#f2f8fe}.row-error{background-color:#f08080}.table-row:not(:last-child){border-bottom:1px solid #ccc}.kv-key:last-child,.kv-value:last-child,.list-name:last-child{border-right:none}\n"] }]
|
|
36
|
+
}], ctorParameters: function () { return [{ type: i1.UIService }]; }, propDecorators: { data: [{
|
|
37
|
+
type: Input
|
|
38
|
+
}], level: [{
|
|
39
|
+
type: Input
|
|
40
|
+
}], parentColor: [{
|
|
41
|
+
type: Input
|
|
42
|
+
}] } });
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVidWctbWVzc2FnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hc3Npc3RhbnQvY2hhdC9kZWJ1Zy1tZXNzYWdlL2RlYnVnLW1lc3NhZ2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXNzaXN0YW50L2NoYXQvZGVidWctbWVzc2FnZS9kZWJ1Zy1tZXNzYWdlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQWtCLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFakUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzNDLE9BQU8sS0FBSyxLQUFLLE1BQU0sU0FBUyxDQUFDOzs7O0FBVWpDLE1BQU0sT0FBTyxxQkFBcUI7SUFLaEMsWUFBbUIsRUFBYTtRQUFiLE9BQUUsR0FBRixFQUFFLENBQVc7UUFIdkIsVUFBSyxHQUFXLENBQUMsQ0FBQyxDQUFFLDBCQUEwQjtRQUM5QyxnQkFBVyxHQUFXLEVBQUUsQ0FBQyxDQUFFLDZCQUE2QjtJQUU3QixDQUFDO0lBRXJDLGVBQWU7UUFDYixLQUFLLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFVO1FBQ2pCLE9BQU8sS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQsV0FBVyxDQUFDLElBQWtCLEVBQUUsS0FBYTtRQUMzQyxJQUFJLElBQUksQ0FBQyxPQUFPO1lBQUUsT0FBTyxXQUFXLENBQUM7UUFDckMsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLENBQUM7WUFBRSxPQUFPLEtBQUssR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUN0RSxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDMUIsQ0FBQztJQUVELGVBQWUsQ0FBQyxJQUFTO1FBQ3ZCLElBQUksQ0FBQyxFQUFFLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pELENBQUM7O2tIQXZCVSxxQkFBcUI7c0dBQXJCLHFCQUFxQixrSkNkbEMsdS9DQTJCQSxxcUJEYmEscUJBQXFCLHNHQUZ0QixZQUFZOzJGQUVYLHFCQUFxQjtrQkFQakMsU0FBUzsrQkFDRSxrQkFBa0IsY0FHaEIsSUFBSSxXQUNQLENBQUMsWUFBWSxDQUFDO2dHQUdkLElBQUk7c0JBQVosS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7ICBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIElucHV0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IERlYnVnTWVzc2FnZSB9IGZyb20gXCIuLi90eXBlc1wiO1xuaW1wb3J0IHsgVXRpbHMgfSBmcm9tIFwiQHNpbmVxdWEvY29yZS9iYXNlXCI7XG5pbXBvcnQgKiBhcyBQcmlzbSBmcm9tICdwcmlzbWpzJztcbmltcG9ydCB7IFVJU2VydmljZSB9IGZyb20gXCJAc2luZXF1YS9jb21wb25lbnRzL3V0aWxzXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJzcS1kZWJ1Zy1tZXNzYWdlXCIsXG4gIHRlbXBsYXRlVXJsOiBcIi4vZGVidWctbWVzc2FnZS5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybHM6IFtcIi4vZGVidWctbWVzc2FnZS5jb21wb25lbnQuc2Nzc1wiXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV1cbn0pXG5leHBvcnQgY2xhc3MgRGVidWdNZXNzYWdlQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBJbnB1dCgpIGRhdGE6IERlYnVnTWVzc2FnZVtdIHwgdW5kZWZpbmVkO1xuICBASW5wdXQoKSBsZXZlbDogbnVtYmVyID0gMDsgIC8vIFRyYWNrIHRoZSBuZXN0aW5nIGxldmVsXG4gIEBJbnB1dCgpIHBhcmVudENvbG9yOiBzdHJpbmcgPSAnJzsgIC8vIFRyYWNrIHRoZSBwYXJlbnQgcm93IGNvbG9yXG5cbiAgY29uc3RydWN0b3IocHVibGljIHVpOiBVSVNlcnZpY2UpIHsgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBQcmlzbS5oaWdobGlnaHRBbGwoKTtcbiAgfVxuXG4gIGlzT2JqZWN0KHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gVXRpbHMuaXNPYmplY3QodmFsdWUpO1xuICB9XG5cbiAgZ2V0Um93Q2xhc3MoaXRlbTogRGVidWdNZXNzYWdlLCBpbmRleDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBpZiAoaXRlbS5pc0Vycm9yKSByZXR1cm4gJ3Jvdy1lcnJvcic7XG4gICAgaWYgKHRoaXMubGV2ZWwgPT09IDApIHJldHVybiBpbmRleCAlIDIgPT09IDAgPyAncm93LWV2ZW4nIDogJ3Jvdy1vZGQnO1xuICAgIHJldHVybiB0aGlzLnBhcmVudENvbG9yO1xuICB9XG5cbiAgY29weVRvQ2xpcGJvYXJkKGNvZGU6IGFueSkge1xuICAgIHRoaXMudWkuY29weVRvQ2xpcGJvYXJkKEpTT04uc3RyaW5naWZ5KGNvZGUsIG51bGwsIDIpKTtcbiAgfVxufVxuIiwiPGRpdiAqbmdJZj1cImRhdGFcIiBjbGFzcz1cInRhYmxlLXJvb3RcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBkYXRhOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgPGRpdiAqbmdJZj1cIml0ZW0udHlwZSA9PT0gJ0tWJ1wiIFtuZ0NsYXNzXT1cImdldFJvd0NsYXNzKGl0ZW0sIGkpXCIgY2xhc3M9XCJ0YWJsZS1yb3cga3Ytb2JqZWN0XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwia3Yta2V5XCI+e3sgaXRlbS5kYXRhLmtleSB9fTwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImt2LXZhbHVlXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc09iamVjdChpdGVtLmRhdGEudmFsdWUpOyBlbHNlIG5vcm1hbFZhbHVlXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgbWItMlwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyXCI+XG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLWxpZ2h0IGJ0bi1zbVwiIChjbGljayk9XCJjb3B5VG9DbGlwYm9hcmQoaXRlbS5kYXRhLnZhbHVlKVwiPjxpIGNsYXNzPVwiZmFyIGZhLWZ3IGZhLWNsaXBib2FyZFwiPjwvaT4gQ29weSBjb2RlPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxwcmUgY2xhc3M9XCJsYW5ndWFnZS1qc29uIG15LTAgcm91bmRlZC0wIHJvdW5kZWQtYm90dG9tXCI+PGNvZGUgY2xhc3M9XCJsYW5ndWFnZS1qc29uXCI+e3sgaXRlbS5kYXRhLnZhbHVlIHwganNvbiB9fTwvY29kZT48L3ByZT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9ybWFsVmFsdWU+e3sgaXRlbS5kYXRhLnZhbHVlIH19PC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCJpdGVtLnR5cGUgPT09ICdMSVNUJ1wiIFtuZ0NsYXNzXT1cImdldFJvd0NsYXNzKGl0ZW0sIGkpXCIgY2xhc3M9XCJ0YWJsZS1yb3cgbGlzdC1vYmplY3RcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJsaXN0LW5hbWVcIiBbY2xhc3Mudy0xMDBdPVwiIWl0ZW0uZXhwYW5kZWRcIiAoY2xpY2spPVwiaXRlbS5leHBhbmRlZD0haXRlbS5leHBhbmRlZFwiPlxuICAgICAgICA8aSBjbGFzcz1cImZhc1wiIFtjbGFzcy5mYS1jaGV2cm9uLXVwXT1cIml0ZW0uZXhwYW5kZWRcIiBbY2xhc3MuZmEtY2hldnJvbi1kb3duXT1cIiFpdGVtLmV4cGFuZGVkXCI+PC9pPlxuICAgICAgICB7eyBpdGVtLm5hbWUgfX1cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImxpc3QtaXRlbXNcIiAqbmdJZj1cIml0ZW0uZXhwYW5kZWRcIj5cbiAgICAgICAgPHNxLWRlYnVnLW1lc3NhZ2UgW2RhdGFdPVwiaXRlbS5pdGVtc1wiIFtsZXZlbF09XCJsZXZlbCArIDFcIiBbcGFyZW50Q29sb3JdPVwiZ2V0Um93Q2xhc3MoaXRlbSwgaSlcIj48L3NxLWRlYnVnLW1lc3NhZ2U+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -116,7 +116,9 @@ export class RestChatService extends ChatService {
|
|
|
116
116
|
if (res.suggestedActions)
|
|
117
117
|
response.additionalProperties.$suggestedAction = res.suggestedActions;
|
|
118
118
|
// Emit the updated chat usage metrics once the generation of the assistant response is completed
|
|
119
|
-
|
|
119
|
+
if (!!response.additionalProperties.usageMetrics) {
|
|
120
|
+
this.updateChatUsageMetrics(response.additionalProperties.usageMetrics);
|
|
121
|
+
}
|
|
120
122
|
// Update the chat history with the incoming history property of the res AND the processed response message
|
|
121
123
|
this.chatHistory = res.history;
|
|
122
124
|
this.chatHistory[this.chatHistory.length - 1] = response;
|
|
@@ -222,4 +224,4 @@ RestChatService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", vers
|
|
|
222
224
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: RestChatService, decorators: [{
|
|
223
225
|
type: Injectable
|
|
224
226
|
}], ctorParameters: function () { return []; } });
|
|
225
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdC1jaGF0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hc3Npc3RhbnQvY2hhdC9yZXN0LWNoYXQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFjLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUU5SCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFJckUsTUFBTSxPQUFPLGVBQWdCLFNBQVEsV0FBVztJQUk5QztRQUNFLEtBQUssRUFBRSxDQUFDO1FBSEgseUJBQW9CLEdBQUcsTUFBTSxDQUFDLHVCQUF1QixDQUFDLENBQUM7SUFJOUQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxJQUFJO1FBQ0YsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ2xDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxnQkFBZ0IsQ0FBQyxFQUMxQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ2hDLHFEQUFxRDtRQUNyRCxTQUFTLENBQUMsR0FBRyxFQUFFLENBQ2IsUUFBUSxDQUFDO1lBQ1AsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNqQixJQUFJLENBQUMsYUFBYSxFQUFFO1NBQ3JCLENBQUMsQ0FDSDtRQUNELHVFQUF1RTtRQUN2RSxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFB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QWYsZUFBZTsyRkFBZixlQUFlO2tCQUQzQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDaGF0U2VydmljZSB9IGZyb20gJy4vY2hhdC5zZXJ2aWNlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIGNhdGNoRXJyb3IsIGZpbHRlciwgZmluYWxpemUsIGZvcmtKb2luLCBtYXAsIHNoYXJlUmVwbGF5LCBzd2l0Y2hNYXAsIHRha2UsIHRhcCwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQWN0aW9uTWVzc2FnZSwgQ2hhdE1lc3NhZ2UsIENoYXRQYXlsb2FkLCBDaGF0UHJvZ3Jlc3MsIENoYXRSZXNwb25zZSwgR2xsbUZ1bmN0aW9uLCBHbGxtTW9kZWxEZXNjcmlwdGlvbiwgSHR0cENoYXRSZXNwb25zZSwgU2F2ZWRDaGF0LCBTYXZlZENoYXRIaXN0b3J5IH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBKc29uTWV0aG9kUGx1Z2luU2VydmljZSB9IGZyb20gJ0BzaW5lcXVhL2NvcmUvd2ViLXNlcnZpY2VzJztcbmltcG9ydCB7IFF1ZXJ5IH0gZnJvbSBcIkBzaW5lcXVhL2NvcmUvYXBwLXV0aWxzXCI7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBSZXN0Q2hhdFNlcnZpY2UgZXh0ZW5kcyBDaGF0U2VydmljZSB7XG5cbiAgcHVibGljIGpzb25NZXRob2RXZWJTZXJ2aWNlID0gaW5qZWN0KEpzb25NZXRob2RQbHVnaW5TZXJ2aWNlKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemUgdGhlIGNoYXQgcHJvY2VzcyBhZnRlciB0aGUgbG9naW4gaXMgY29tcGxldGUuXG4gICAqIEl0IGxpc3RlbnMgZm9yIHRoZSAnbG9naW4tY29tcGxldGUnIGV2ZW50LCBpbml0aWFsaXplcyBuZWNlc3NhcnkgVVJMLCBhbmQgcGVyZm9ybXMgcGFyYWxsZWwgcmVxdWVzdHMgZm9yIG1vZGVscywgZnVuY3Rpb25zIGFuZCBxdW90YSBkYXRhLlxuICAgKiBAcmV0dXJucyBBbiBPYnNlcnZhYmxlPGJvb2xlYW4+IGluZGljYXRpbmcgdGhlIHN1Y2Nlc3Mgb2YgdGhlIGluaXRpYWxpemF0aW9uIHByb2Nlc3MuXG4gICAqL1xuICBpbml0KCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmxvZ2luU2VydmljZS5ldmVudHMucGlwZShcbiAgICAgIGZpbHRlcigoZSkgPT4gZS50eXBlID09PSAnbG9naW4tY29tcGxldGUnKSxcbiAgICAgIHRhcCgoKSA9PiB0aGlzLmdldFJlcXVlc3RzVXJsKCkpLFxuICAgICAgLy8gRXhlY3V0ZSBwYXJhbGxlbCByZXF1ZXN0cyBmb3IgbW9kZWxzIGFuZCBmdW5jdGlvbnNcbiAgICAgIHN3aXRjaE1hcCgoKSA9PlxuICAgICAgICBmb3JrSm9pbihbXG4gICAgICAgICAgdGhpcy5saXN0TW9kZWxzKCksXG4gICAgICAgICAgdGhpcy5saXN0RnVuY3Rpb25zKClcbiAgICAgICAgXSlcbiAgICAgICksXG4gICAgICAvLyBNYXAgdGhlIHJlc3VsdHMgb2YgcGFyYWxsZWwgcmVxdWVzdHMgdG8gYSBib29sZWFuIGluZGljYXRpbmcgc3VjY2Vzc1xuICAgICAgbWFwKChbbW9kZWxzLCBmdW5jdGlvbnNdKSA9PiB7XG4gICAgICAgIHRoaXMuaW5pdFByb2Nlc3MkLm5leHQodHJ1ZSk7XG4gICAgICAgIHJldHVybiAhIW1vZGVscyAmJiAhIWZ1bmN0aW9uc1xuICAgICAgfSksXG4gICAgICAvLyBBbnkgZXJyb3JzIGR1cmluZyB0aGUgcHJvY2VzcyBhcmUgY2F1Z2h0LCBsb2dnZWQsIGFuZCByZS10aHJvd24gdG8gcHJvcGFnYXRlIHRoZSBlcnJvciBmdXJ0aGVyXG4gICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBvY2N1cnJlZDonLCBlcnJvcik7XG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGVycm9yKTtcbiAgICAgIH0pLFxuICAgICAgLy8gY2FjaGUgYW5kIHJlcGxheSB0aGUgZW1pdHRlZCB2YWx1ZSBmb3Igc3Vic2VxdWVudCBzdWJzY3JpYmVycywgZW5zdXJpbmcgdGhlIGluaXRpYWxpemF0aW9uIGxvZ2ljIGlzIG9ubHkgZXhlY3V0ZWQgb25jZSBldmVuIGlmIHRoZXJlIGFyZSBtdWx0aXBsZSBzdWJzY3JpYmVyc1xuICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIERlZmluZSB0aGUgR0xMTSBwbHVnaW4gdG8gdXNlIGZvciB0aGUgaHR0cCByZXF1ZXN0c1xuICAgKiBJdCBjYW4gYmUgb3ZlcnJpZGRlbiBieSB0aGUgYXBwIGNvbmZpZ1xuICAgKi9cbiAgZ2V0UmVxdWVzdHNVcmwoKSB7XG4gICAgaWYgKHRoaXMuY2hhdENvbmZpZyQudmFsdWUhLmNvbm5lY3Rpb25TZXR0aW5ncy5yZXN0RW5kcG9pbnQpIHtcbiAgICAgIHRoaXMuUkVRVUVTVF9VUkwgPSB0aGlzLmNoYXRDb25maWckLnZhbHVlIS5jb25uZWN0aW9uU2V0dGluZ3MucmVzdEVuZHBvaW50O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBwcm9wZXJ0eSAncmVzdEVuZHBvaW50JyBtdXN0IGJlIHByb3ZpZGVkIHdoZW4gYXR0ZW1wdGluZyB0byB1c2UgJ1JFU1QnIGluIGFzc2lzdGFudCBpbnN0YW5jZWApO1xuICAgIH1cbiAgfVxuXG4gIGxpc3RNb2RlbHMoKTogT2JzZXJ2YWJsZTxHbGxtTW9kZWxEZXNjcmlwdGlvbltdIHwgdW5kZWZpbmVkPiB7XG4gICAgY29uc3QgZGF0YSA9IHtcbiAgICAgIGFjdGlvbjogXCJsaXN0bW9kZWxzXCIsXG4gICAgICBkZWJ1ZzogdGhpcy5jaGF0Q29uZmlnJC52YWx1ZSEuZGVmYXVsdFZhbHVlcy5kZWJ1Z1xuICAgIH07XG4gICAgcmV0dXJuIHRoaXMuanNvbk1ldGhvZFdlYlNlcnZpY2UuZ2V0KHRoaXMuUkVRVUVTVF9VUkwsIGRhdGEpLnBpcGUoXG4gICAgICBtYXAocmVzID0+IHJlcy5tb2RlbHMpLFxuICAgICAgdGFwKG1vZGVscyA9PiB0aGlzLm1vZGVscyA9IG1vZGVscz8uZmlsdGVyKG1vZGVsID0+ICEhbW9kZWwuZW5hYmxlKSksXG4gICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBpbnZva2luZyBsaXN0bW9kZWxzOicsIGVycm9yKTtcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyb3IpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgbGlzdEZ1bmN0aW9ucygpOiBPYnNlcnZhYmxlPEdsbG1GdW5jdGlvbltdIHwgdW5kZWZpbmVkPiB7XG4gICAgY29uc3QgZGF0YSA9IHtcbiAgICAgIGFjdGlvbjogXCJsaXN0ZnVuY3Rpb25zXCIsXG4gICAgICBkZWJ1ZzogdGhpcy5jaGF0Q29uZmlnJC52YWx1ZSEuZGVmYXVsdFZhbHVlcy5kZWJ1Z1xuICAgIH07XG4gICAgcmV0dXJuIHRoaXMuanNvbk1ldGhvZFdlYlNlcnZpY2UuZ2V0KHRoaXMuUkVRVUVTVF9VUkwsIGRhdGEpLnBpcGUoXG4gICAgICBtYXAocmVzID0+IHJlcy5mdW5jdGlvbnMpLFxuICAgICAgdGFwKChmdW5jdGlvbnM6IEdsbG1GdW5jdGlvbltdIHwgdW5kZWZpbmVkKSA9PiB0aGlzLmZ1bmN0aW9ucyA9IGZ1bmN0aW9ucz8uZmlsdGVyKGZ1bmMgPT4gZnVuYy5lbmFibGVkICYmICAhIXRoaXMuY2hhdENvbmZpZyQudmFsdWUhLmRlZmF1bHRWYWx1ZXMuZnVuY3Rpb25zLmZpbmQoZm4gPT4gZm4ubmFtZSA9PT0gZnVuYy5mdW5jdGlvbk5hbWUpKSksXG4gICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBpbnZva2luZyBsaXN0ZnVuY3Rpb25zOicsIGVycm9yKTtcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyb3IpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgZmV0Y2gobWVzc2FnZXM6IENoYXRNZXNzYWdlW10sIHF1ZXJ5OiBRdWVyeSk6IE9ic2VydmFibGU8Q2hhdFJlc3BvbnNlPiB7XG4gICAgLy8gU3RhcnQgc3RyZWFtaW5nIGJ5IGludm9raW5nIHRoZSBDaGF0IG1ldGhvZFxuICAgIHRoaXMuc3RyZWFtaW5nJC5uZXh0KHRydWUpO1xuXG4gICAgLy8gUHJlcGFyZSB0aGUgcGF5bG9hZCB0byBzZW5kIHRvIHRoZSBDaGF0IG1ldGhvZFxuICAgIGNvbnN0IGRhdGE6IENoYXRQYXlsb2FkICYge2FjdGlvbjogXCJjaGF0XCJ9ID0ge1xuICAgICAgYWN0aW9uOiBcImNoYXRcIixcbiAgICAgIGhpc3Rvcnk6IG1lc3NhZ2VzLFxuICAgICAgZnVuY3Rpb25zOiB0aGlzLmNoYXRDb25maWckLnZhbHVlIS5kZWZhdWx0VmFsdWVzLmZ1bmN0aW9ucz8uZmlsdGVyKGZ1bmMgPT4gZnVuYy5lbmFibGVkKS5tYXAoZnVuYyA9PiBmdW5jLm5hbWUpLFxuICAgICAgZGVidWc6IHRoaXMuY2hhdENvbmZpZyQudmFsdWUhLmRlZmF1bHRWYWx1ZXMuZGVidWcsXG4gICAgICBzZXJ2aWNlU2V0dGluZ3M6IHtcbiAgICAgICAgc2VydmljZV9pZDogdGhpcy5jaGF0Q29uZmlnJC52YWx1ZSEuZGVmYXVsdFZhbHVlcy5zZXJ2aWNlX2lkLFxuICAgICAgICBtb2RlbF9pZDogdGhpcy5jaGF0Q29uZmlnJC52YWx1ZSEuZGVmYXVsdFZhbHVlcy5tb2RlbF9pZCxcbiAgICAgICAgdG9wX3A6IHRoaXMuY2hhdENvbmZpZyQudmFsdWUhLmRlZmF1bHRWYWx1ZXMudG9wX3AsXG4gICAgICAgIHRlbXBlcmF0dXJlOiB0aGlzLmNoYXRDb25maWckLnZhbHVlIS5kZWZhdWx0VmFsdWVzLnRlbXBlcmF0dXJlLFxuICAgICAgICBtYXhfdG9rZW5zOiB0aGlzLmNoYXRDb25maWckLnZhbHVlIS5kZWZhdWx0VmFsdWVzLm1heF90b2tlbnMsXG4gICAgICAgIC4uLnRoaXMuY2hhdENvbmZpZyQudmFsdWUhLmFkZGl0aW9uYWxTZXJ2aWNlU2V0dGluZ3NcbiAgICAgIH0sXG4gICAgICBhcHBRdWVyeToge1xuICAgICAgICBhcHA6IHRoaXMuYXBwU2VydmljZS5hcHBOYW1lLFxuICAgICAgICBxdWVyeVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAodGhpcy5jaGF0Q29uZmlnJC52YWx1ZSEuc2F2ZWRDaGF0U2V0dGluZ3MuZW5hYmxlZCkge1xuICAgICAgZGF0YS5pbnN0YW5jZUlkID0gdGhpcy5jaGF0SW5zdGFuY2VJZDtcbiAgICAgIGRhdGEuc2F2ZWRDaGF0SWQgPSB0aGlzLnNhdmVkQ2hhdElkO1xuICAgIH1cblxuICAgIC8vIFJlcXVlc3QgdGhlIENoYXQgZW5kcG9pbnRcbiAgICByZXR1cm4gdGhpcy5qc29uTWV0aG9kV2ViU2VydmljZS5wb3N0KHRoaXMuUkVRVUVTVF9VUkwsIGRhdGEpLnBpcGUoXG4gICAgICB0YXAoKHJlczogSHR0cENoYXRSZXNwb25zZSkgPT4gdGhpcy51cGRhdGVRdW90YShyZXMucXVvdGEsIHRydWUpKSxcbiAgICAgIG1hcCgocmVzOiBIdHRwQ2hhdFJlc3BvbnNlKSA9PiB7XG4gICAgICAgIC8vIERlZmluZSAkcHJvZ3Jlc3MgZnJvbSB0aGUgYWN0aW9ucyBwcm9wZXJ0eSBvZiB0aGUgcmVzcG9uc2VcbiAgICAgICAgbGV0ICRwcm9ncmVzczogQ2hhdFByb2dyZXNzW10gfCB1bmRlZmluZWQ7XG4gICAgICAgIGlmKCByZXMuYWN0aW9ucz8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGNvbnN0IGFjdGlvbnM6IEFjdGlvbk1lc3NhZ2VbXSA9IE9iamVjdC52YWx1ZXMocmVzLmFjdGlvbnMucmVkdWNlKChhY2MsIGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGFjY1tpdGVtLmd1aWRdID0geyAuLi4oYWNjW2l0ZW0uZ3VpZF0gfHwge30pLCAuLi5pdGVtIH07XG4gICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICAgIH0sIHt9KSk7XG4gICAgICAgICAgJHByb2dyZXNzID0gYWN0aW9ucy5tYXAoKGEpID0+ICh7XG4gICAgICAgICAgICB0aXRsZTogYS5kaXNwbGF5TmFtZSA/PyBcIlwiLFxuICAgICAgICAgICAgY29udGVudDogYS5kaXNwbGF5VmFsdWUgPz8gXCJcIixcbiAgICAgICAgICAgIGRvbmU6IGEuZXhlY3V0aW9uVGltZSAhPT0gdW5kZWZpbmVkLFxuICAgICAgICAgICAgdGltZTogYS5leGVjdXRpb25UaW1lLFxuICAgICAgICAgIH0pKVxuICAgICAgICB9XG4gICAgICAgIC8vIFJlLWF0dGFjaCB0aGUgJHByb2dyZXNzIGFuZCAkYXR0YWNobWVudCBvZiB0aGUgbGFzdCByZXNwb25zZSB0byB0aGUgbGFzdCBhc3Npc3RhbnQncyByZXNwb25zZSBpbiB0aGUgY2hhdCBoaXN0b3J5XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gey4uLihyZXMuaGlzdG9yeSBhcyBBcnJheTxDaGF0TWVzc2FnZT4pLmF0KC0xKX0gYXMgQ2hhdE1lc3NhZ2U7XG4gICAgICAgIGlmKCRwcm9ncmVzcykgcmVzcG9uc2UuYWRkaXRpb25hbFByb3BlcnRpZXMuJHByb2dyZXNzID0gJHByb2dyZXNzO1xuICAgICAgICBpZihyZXMuY29udGV4dCkgcmVzcG9uc2UuYWRkaXRpb25hbFByb3BlcnRpZXMuJGF0dGFjaG1lbnQgPSByZXMuY29udGV4dC5tYXAoKGN0eCkgPT4gY3R4LmFkZGl0aW9uYWxQcm9wZXJ0aWVzKTtcbiAgICAgICAgaWYocmVzLnN1Z2dlc3RlZEFjdGlvbnMpIHJlc3BvbnNlLmFkZGl0aW9uYWxQcm9wZXJ0aWVzLiRzdWdnZXN0ZWRBY3Rpb24gPSByZXMuc3VnZ2VzdGVkQWN0aW9ucztcbiAgICAgICAgLy8gRW1pdCB0aGUgdXBkYXRlZCBjaGF0IHVzYWdlIG1ldHJpY3Mgb25jZSB0aGUgZ2VuZXJhdGlvbiBvZiB0aGUgYXNzaXN0YW50IHJlc3BvbnNlIGlzIGNvbXBsZXRlZFxuICAgICAgICB0aGlzLnVwZGF0ZUNoYXRVc2FnZU1ldHJpY3MocmVzcG9uc2UuYWRkaXRpb25hbFByb3BlcnRpZXMudXNhZ2VNZXRyaWNzISk7XG4gICAgICAgIC8vIFVwZGF0ZSB0aGUgY2hhdCBoaXN0b3J5IHdpdGggdGhlIGluY29taW5nIGhpc3RvcnkgcHJvcGVydHkgb2YgdGhlIHJlcyBBTkQgdGhlIHByb2Nlc3NlZCByZXNwb25zZSBtZXNzYWdlXG4gICAgICAgIHRoaXMuY2hhdEhpc3RvcnkgPSByZXMuaGlzdG9yeTtcbiAgICAgICAgdGhpcy5jaGF0SGlzdG9yeVt0aGlzLmNoYXRIaXN0b3J5Lmxlbmd0aCAtIDFdID0gcmVzcG9uc2U7XG4gICAgICAgIC8vIFNhdmUvdXBkYXRlIHRoZSBjaGF0IGlmIHNhdmVkQ2hhdCBlbmFibGVkXG4gICAgICAgIGlmICh0aGlzLmNoYXRDb25maWckLnZhbHVlIS5zYXZlZENoYXRTZXR0aW5ncy5lbmFibGVkICYmIHRoaXMuY2hhdEhpc3Rvcnkuc29tZSgobXNnKSA9PiBtc2cuYWRkaXRpb25hbFByb3BlcnRpZXM/LmlzVXNlcklucHV0ID09PSB0cnVlKSkge1xuICAgICAgICAgIGNvbnN0IGFjdGlvbiA9ICF0aGlzLnNhdmVkQ2hhdElkID8gdGhpcy5hZGRTYXZlZENoYXQodGhpcy5jaGF0SGlzdG9yeSkgOiB0aGlzLnVwZGF0ZVNhdmVkQ2hhdCh0aGlzLnNhdmVkQ2hhdElkLCB1bmRlZmluZWQsIHRoaXMuY2hhdEhpc3RvcnkpO1xuICAgICAgICAgIGFjdGlvbi5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgICAgIC8vIEdlbmVyYXRlIGF1ZGl0IGV2ZW50XG4gICAgICAgIGNvbnN0IGRldGFpbHMgPSB7XG4gICAgICAgICAgJ2R1cmF0aW9uJzogcmVzLmV4ZWN1dGlvblRpbWUsXG4gICAgICAgICAgJ3RleHQnOiByZXNwb25zZS5jb250ZW50LFxuICAgICAgICAgICdyb2xlJzogcmVzcG9uc2Uucm9sZSwgLy8gJ2Fzc2lzdGFudCdcbiAgICAgICAgICAncmFuayc6IHRoaXMuY2hhdEhpc3RvcnkubGVuZ3RoIC0gMSxcbiAgICAgICAgICAnZ2VuZXJhdGlvbi10b2tlbmNvdW50JzogcmVzcG9uc2UuYWRkaXRpb25hbFByb3BlcnRpZXMudXNhZ2VNZXRyaWNzIS5jb21wbGV0aW9uVG9rZW5Db3VudCxcbiAgICAgICAgICAncHJvbXB0LXRva2VuY291bnQnOiByZXNwb25zZS5hZGRpdGlvbmFsUHJvcGVydGllcy51c2FnZU1ldHJpY3MhLnByb21wdFRva2VuQ291bnQsXG4gICAgICAgICAgJ2F0dGFjaG1lbnRzJzogcmVzcG9uc2UuYWRkaXRpb25hbFByb3BlcnRpZXMuJGF0dGFjaG1lbnQ/Lm1hcCgoeyByZWNvcmRJZCwgY29udGV4dElkLCBwYXJ0cywgdHlwZSB9KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvcmRJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dElkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0czogcGFydHMubWFwKCh7IHBhcnRJZCwgdGV4dCB9KSA9PiAoeyBwYXJ0SWQsIHRleHQgfSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5nZW5lcmF0ZUF1ZGl0RXZlbnQoJ21lc3NhZ2UnLCBkZXRhaWxzKTtcbiAgICAgICAgLy8gUmV0dXJuIHRoZSByZXN1bHRcbiAgICAgICAgcmV0dXJuIHsgaGlzdG9yeTogWy4uLm1lc3NhZ2VzLCByZXNwb25zZV0sIGV4ZWN1dGlvblRpbWU6IHJlcy5leGVjdXRpb25UaW1lIH07XG4gICAgICB9KSxcbiAgICAgIGZpbmFsaXplKCgpID0+IHRoaXMuc3RyZWFtaW5nJC5uZXh0KGZhbHNlKSlcbiAgICApO1xuICB9XG5cbiAgbGlzdFNhdmVkQ2hhdCgpOiB2b2lkIHtcbiAgICBjb25zdCBkYXRhID0ge1xuICAgICAgYWN0aW9uOiBcIlNhdmVkQ2hhdExpc3RcIixcbiAgICAgIGluc3RhbmNlSWQ6IHRoaXMuY2hhdEluc3RhbmNlSWQsXG4gICAgICBkZWJ1ZzogdGhpcy5jaGF0Q29uZmlnJC52YWx1ZSEuZGVmYXVsdFZhbHVlcy5kZWJ1Z1xuICAgIH07XG4gICAgdGhpcy5qc29uTWV0aG9kV2ViU2VydmljZS5nZXQodGhpcy5SRVFVRVNUX1VSTCwgZGF0YSkuc3Vic2NyaWJlKFxuICAgICAgcmVzID0+IHRoaXMuc2F2ZWRDaGF0cyQubmV4dChyZXMuc2F2ZWRDaGF0cyksXG4gICAgICBlcnJvciA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIG9jY3VycmVkIHdoaWxlIGNhbGxpbmcgdGhlIFNhdmVkQ2hhdExpc3QgQVBJOicsIGVycm9yLmVycm9yLmVycm9yTWVzc2FnZSk7XG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9uc1NlcnZpY2UuZXJyb3IoJ0Vycm9yIG9jY3VycmVkIHdoaWxlIGNhbGxpbmcgdGhlIFNhdmVkQ2hhdExpc3QgQVBJOicsIGVycm9yLmVycm9yLmVycm9yTWVzc2FnZSk7XG4gICAgICB9XG4gICAgICApO1xuICB9XG5cbiAgYWRkU2F2ZWRDaGF0KG1lc3NhZ2VzOiBDaGF0TWVzc2FnZVtdKTogT2JzZXJ2YWJsZTxTYXZlZENoYXQ+IHtcbiAgICBjb25zdCBkYXRhID0ge1xuICAgICAgYWN0aW9uOiBcIlNhdmVkQ2hhdEFkZFwiLFxuICAgICAgaW5zdGFuY2VJZDogdGhpcy5jaGF0SW5zdGFuY2VJZCxcbiAgICAgIHNhdmVkQ2hhdElkOiB0aGlzLmNoYXRJZCxcbiAgICAgIGhpc3Rvcnk6IG1lc3NhZ2VzLFxuICAgICAgZGVidWc6IHRoaXMuY2hhdENvbmZpZyQudmFsdWUhLmRlZmF1bHRWYWx1ZXMuZGVidWdcbiAgICB9O1xuXG4gICAgcmV0dXJuIHRoaXMuanNvbk1ldGhvZFdlYlNlcnZpY2UucG9zdCh0aGlzLlJFUVVFU1RfVVJMLCBkYXRhKS5waXBlKFxuICAgICAgbWFwKHJlcyA9PiByZXMuc2F2ZWRDaGF0KSxcbiAgICAgIHRhcCgoc2F2ZWRDaGF0OiBTYXZlZENoYXQpID0+IHtcbiAgICAgICAgdGhpcy5zZXRTYXZlZENoYXRJZChzYXZlZENoYXQuaWQpOyAvLyBQZXJzaXN0IHRoZSBzYXZlZENoYXRJZFxuICAgICAgICB0aGlzLmdlbmVyYXRlQXVkaXRFdmVudCgnc2F2ZWQtY2hhdC5hZGQnLCB7fSwgc2F2ZWRDaGF0LmlkKTsgLy8gR2VuZXJhdGUgYXVkaXQgZXZlbnRcbiAgICAgIH0pLFxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3Igb2NjdXJyZWQgd2hpbGUgY2FsbGluZyB0aGUgU2F2ZWRDaGF0QWRkIEFQSTonLCBlcnJvci5lcnJvci5lcnJvck1lc3NhZ2UpO1xuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbnNTZXJ2aWNlLmVycm9yKCdFcnJvciBvY2N1cnJlZCB3aGlsZSBjYWxsaW5nIHRoZSBTYXZlZENoYXRBZGQgQVBJOicsIGVycm9yLmVycm9yLmVycm9yTWVzc2FnZSk7XG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGVycm9yKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIGdldFNhdmVkQ2hhdChpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxTYXZlZENoYXRIaXN0b3J5IHwgdW5kZWZpbmVkPiB7XG4gICAgY29uc3QgZGF0YSA9IHtcbiAgICAgIGFjdGlvbjogXCJTYXZlZENoYXRHZXRcIixcbiAgICAgIGluc3RhbmNlSWQ6IHRoaXMuY2hhdEluc3RhbmNlSWQsXG4gICAgICBzYXZlZENoYXRJZDogaWQsXG4gICAgICBkZWJ1ZzogdGhpcy5jaGF0Q29uZmlnJC52YWx1ZSEuZGVmYXVsdFZhbHVlcy5kZWJ1Z1xuICAgIH07XG4gICAgcmV0dXJuIHRoaXMuanNvbk1ldGhvZFdlYlNlcnZpY2UuZ2V0KHRoaXMuUkVRVUVTVF9VUkwsIGRhdGEpLnBpcGUoXG4gICAgICBtYXAocmVzID0+IHJlcy5zYXZlZENoYXQpLFxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3Igb2NjdXJyZWQgd2hpbGUgY2FsbGluZyB0aGUgU2F2ZWRDaGF0R2V0IEFQSTonLCBlcnJvci5lcnJvci5lcnJvck1lc3NhZ2UpO1xuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbnNTZXJ2aWNlLmVycm9yKCdFcnJvciBvY2N1cnJlZCB3aGlsZSBjYWxsaW5nIHRoZSBTYXZlZENoYXRHZXQgQVBJOicsIGVycm9yLmVycm9yLmVycm9yTWVzc2FnZSk7XG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGVycm9yKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHVwZGF0ZVNhdmVkQ2hhdChpZDogc3RyaW5nLCBuYW1lPzogc3RyaW5nLCBtZXNzYWdlcz86IENoYXRNZXNzYWdlW10pOiBPYnNlcnZhYmxlPFNhdmVkQ2hhdD4ge1xuICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICBhY3Rpb246IFwiU2F2ZWRDaGF0VXBkYXRlXCIsXG4gICAgICBpbnN0YW5jZUlkOiB0aGlzLmNoYXRJbnN0YW5jZUlkLFxuICAgICAgc2F2ZWRDaGF0SWQ6IGlkLFxuICAgICAgZGVidWc6IHRoaXMuY2hhdENvbmZpZyQudmFsdWUhLmRlZmF1bHRWYWx1ZXMuZGVidWdcbiAgICB9O1xuXG4gICAgaWYobmFtZSkgZGF0YVtcInRpdGxlXCJdID0gbmFtZTtcbiAgICBpZihtZXNzYWdlcykgZGF0YVtcImhpc3RvcnlcIl0gPSBtZXNzYWdlcztcblxuICAgIHJldHVybiB0aGlzLmpzb25NZXRob2RXZWJTZXJ2aWNlLnBvc3QodGhpcy5SRVFVRVNUX1VSTCwgZGF0YSkucGlwZShcbiAgICAgIG1hcChyZXMgPT4gcmVzLnNhdmVkQ2hhdCksXG4gICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBvY2N1cnJlZCB3aGlsZSBjYWxsaW5nIHRoZSBTYXZlZENoYXRVcGRhdGUgQVBJOicsIGVycm9yLmVycm9yLmVycm9yTWVzc2FnZSk7XG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9uc1NlcnZpY2UuZXJyb3IoJ0Vycm9yIG9jY3VycmVkIHdoaWxlIGNhbGxpbmcgdGhlIFNhdmVkQ2hhdFVwZGF0ZSBBUEk6JywgZXJyb3IuZXJyb3IuZXJyb3JNZXNzYWdlKTtcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyb3IpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgZGVsZXRlU2F2ZWRDaGF0KGlkczogc3RyaW5nW10pOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xuICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICBhY3Rpb246IFwiU2F2ZWRDaGF0RGVsZXRlXCIsXG4gICAgICBpbnN0YW5jZUlkOiB0aGlzLmNoYXRJbnN0YW5jZUlkLFxuICAgICAgc2F2ZWRDaGF0SWRzOiBpZHMsXG4gICAgICBkZWJ1ZzogdGhpcy5jaGF0Q29uZmlnJC52YWx1ZSEuZGVmYXVsdFZhbHVlcy5kZWJ1Z1xuICAgIH07XG4gICAgcmV0dXJuIHRoaXMuanNvbk1ldGhvZFdlYlNlcnZpY2UucG9zdCh0aGlzLlJFUVVFU1RfVVJMLCBkYXRhKS5waXBlKFxuICAgICAgbWFwKHJlcyA9PiByZXMuZGVsZXRlZENvdW50KSxcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIG9jY3VycmVkIHdoaWxlIGNhbGxpbmcgdGhlIFNhdmVkQ2hhdERlbGV0ZSBBUEk6JywgZXJyb3IuZXJyb3IuZXJyb3JNZXNzYWdlKTtcbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25zU2VydmljZS5lcnJvcignRXJyb3Igb2NjdXJyZWQgd2hpbGUgY2FsbGluZyB0aGUgU2F2ZWRDaGF0RGVsZXRlIEFQSTonLCBlcnJvci5lcnJvci5lcnJvck1lc3NhZ2UpO1xuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnJvcik7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxufVxuIl19
|
|
227
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdC1jaGF0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hc3Npc3RhbnQvY2hhdC9yZXN0LWNoYXQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFjLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUU5SCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFJckUsTUFBTSxPQUFPLGVBQWdCLFNBQVEsV0FBVztJQUk5QztRQUNFLEtBQUssRUFBRSxDQUFDO1FBSEgseUJBQW9CLEdBQUcsTUFBTSxDQUFDLHVCQUF1QixDQUFDLENBQUM7SUFJOUQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxJQUFJO1FBQ0YsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ2xDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxnQkFBZ0IsQ0FBQyxFQUMxQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ2hDLHFEQUFxRDtRQUNyRCxTQUFTLENBQUMsR0FBRyxFQUFFLENBQ2IsUUFBUSxDQUFDO1lBQ1AsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNqQixJQUFJLENBQUMsYUFBYSxFQUFFO1NBQ3JCLENBQUMsQ0FDSDtRQUNELHVFQUF1RTtRQUN2RSxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFB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QyxDQUFDO1FBQ2pDLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDOzs0R0FsUVUsZUFBZTtnSEFBZixlQUFlOzJGQUFmLGVBQWU7a0JBRDNCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENoYXRTZXJ2aWNlIH0gZnJvbSAnLi9jaGF0LnNlcnZpY2UnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgY2F0Y2hFcnJvciwgZmlsdGVyLCBmaW5hbGl6ZSwgZm9ya0pvaW4sIG1hcCwgc2hhcmVSZXBsYXksIHN3aXRjaE1hcCwgdGFrZSwgdGFwLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBY3Rpb25NZXNzYWdlLCBDaGF0TWVzc2FnZSwgQ2hhdFBheWxvYWQsIENoYXRQcm9ncmVzcywgQ2hhdFJlc3BvbnNlLCBHbGxtRnVuY3Rpb24sIEdsbG1Nb2RlbERlc2NyaXB0aW9uLCBIdHRwQ2hhdFJlc3BvbnNlLCBTYXZlZENoYXQsIFNhdmVkQ2hhdEhpc3RvcnkgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IEpzb25NZXRob2RQbHVnaW5TZXJ2aWNlIH0gZnJvbSAnQHNpbmVxdWEvY29yZS93ZWItc2VydmljZXMnO1xuaW1wb3J0IHsgUXVlcnkgfSBmcm9tIFwiQHNpbmVxdWEvY29yZS9hcHAtdXRpbHNcIjtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFJlc3RDaGF0U2VydmljZSBleHRlbmRzIENoYXRTZXJ2aWNlIHtcblxuICBwdWJsaWMganNvbk1ldGhvZFdlYlNlcnZpY2UgPSBpbmplY3QoSnNvbk1ldGhvZFBsdWdpblNlcnZpY2UpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZSB0aGUgY2hhdCBwcm9jZXNzIGFmdGVyIHRoZSBsb2dpbiBpcyBjb21wbGV0ZS5cbiAgICogSXQgbGlzdGVucyBmb3IgdGhlICdsb2dpbi1jb21wbGV0ZScgZXZlbnQsIGluaXRpYWxpemVzIG5lY2Vzc2FyeSBVUkwsIGFuZCBwZXJmb3JtcyBwYXJhbGxlbCByZXF1ZXN0cyBmb3IgbW9kZWxzLCBmdW5jdGlvbnMgYW5kIHF1b3RhIGRhdGEuXG4gICAqIEByZXR1cm5zIEFuIE9ic2VydmFibGU8Ym9vbGVhbj4gaW5kaWNhdGluZyB0aGUgc3VjY2VzcyBvZiB0aGUgaW5pdGlhbGl6YXRpb24gcHJvY2Vzcy5cbiAgICovXG4gIGluaXQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMubG9naW5TZXJ2aWNlLmV2ZW50cy5waXBlKFxuICAgICAgZmlsdGVyKChlKSA9PiBlLnR5cGUgPT09ICdsb2dpbi1jb21wbGV0ZScpLFxuICAgICAgdGFwKCgpID0+IHRoaXMuZ2V0UmVxdWVzdHNVcmwoKSksXG4gICAgICAvLyBFeGVjdXRlIHBhcmFsbGVsIHJlcXVlc3RzIGZvciBtb2RlbHMgYW5kIGZ1bmN0aW9uc1xuICAgICAgc3dpdGNoTWFwKCgpID0+XG4gICAgICAgIGZvcmtKb2luKFtcbiAgICAgICAgICB0aGlzLmxpc3RNb2RlbHMoKSxcbiAgICAgICAgICB0aGlzLmxpc3RGdW5jdGlvbnMoKVxuICAgICAgICBdKVxuICAgICAgKSxcbiAgICAgIC8vIE1hcCB0aGUgcmVzdWx0cyBvZiBwYXJhbGxlbCByZXF1ZXN0cyB0byBhIGJvb2xlYW4gaW5kaWNhdGluZyBzdWNjZXNzXG4gICAgICBtYXAoKFttb2RlbHMsIGZ1bmN0aW9uc10pID0+IHtcbiAgICAgICAgdGhpcy5pbml0UHJvY2VzcyQubmV4dCh0cnVlKTtcbiAgICAgICAgcmV0dXJuICEhbW9kZWxzICYmICEhZnVuY3Rpb25zXG4gICAgICB9KSxcbiAgICAgIC8vIEFueSBlcnJvcnMgZHVyaW5nIHRoZSBwcm9jZXNzIGFyZSBjYXVnaHQsIGxvZ2dlZCwgYW5kIHJlLXRocm93biB0byBwcm9wYWdhdGUgdGhlIGVycm9yIGZ1cnRoZXJcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIG9jY3VycmVkOicsIGVycm9yKTtcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyb3IpO1xuICAgICAgfSksXG4gICAgICAvLyBjYWNoZSBhbmQgcmVwbGF5IHRoZSBlbWl0dGVkIHZhbHVlIGZvciBzdWJzZXF1ZW50IHN1YnNjcmliZXJzLCBlbnN1cmluZyB0aGUgaW5pdGlhbGl6YXRpb24gbG9naWMgaXMgb25seSBleGVjdXRlZCBvbmNlIGV2ZW4gaWYgdGhlcmUgYXJlIG11bHRpcGxlIHN1YnNjcmliZXJzXG4gICAgICBzaGFyZVJlcGxheSgxKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogRGVmaW5lIHRoZSBHTExNIHBsdWdpbiB0byB1c2UgZm9yIHRoZSBodHRwIHJlcXVlc3RzXG4gICAqIEl0IGNhbiBiZSBvdmVycmlkZGVuIGJ5IHRoZSBhcHAgY29uZmlnXG4gICAqL1xuICBnZXRSZXF1ZXN0c1VybCgpIHtcbiAgICBpZiAodGhpcy5jaGF0Q29uZmlnJC52YWx1ZSEuY29ubmVjdGlvblNldHRpbmdzLnJlc3RFbmRwb2ludCkge1xuICAgICAgdGhpcy5SRVFVRVNUX1VSTCA9IHRoaXMuY2hhdENvbmZpZyQudmFsdWUhLmNvbm5lY3Rpb25TZXR0aW5ncy5yZXN0RW5kcG9pbnQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVGhlIHByb3BlcnR5ICdyZXN0RW5kcG9pbnQnIG11c3QgYmUgcHJvdmlkZWQgd2hlbiBhdHRlbXB0aW5nIHRvIHVzZSAnUkVTVCcgaW4gYXNzaXN0YW50IGluc3RhbmNlYCk7XG4gICAgfVxuICB9XG5cbiAgbGlzdE1vZGVscygpOiBPYnNlcnZhYmxlPEdsbG1Nb2RlbERlc2NyaXB0aW9uW10gfCB1bmRlZmluZWQ+IHtcbiAgICBjb25zdCBkYXRhID0ge1xuICAgICAgYWN0aW9uOiBcImxpc3Rtb2RlbHNcIixcbiAgICAgIGRlYnVnOiB0aGlzLmNoYXRDb25maWckLnZhbHVlIS5kZWZhdWx0VmFsdWVzLmRlYnVnXG4gICAgfTtcbiAgICByZXR1cm4gdGhpcy5qc29uTWV0aG9kV2ViU2VydmljZS5nZXQodGhpcy5SRVFVRVNUX1VSTCwgZGF0YSkucGlwZShcbiAgICAgIG1hcChyZXMgPT4gcmVzLm1vZGVscyksXG4gICAgICB0YXAobW9kZWxzID0+IHRoaXMubW9kZWxzID0gbW9kZWxzPy5maWx0ZXIobW9kZWwgPT4gISFtb2RlbC5lbmFibGUpKSxcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGludm9raW5nIGxpc3Rtb2RlbHM6JywgZXJyb3IpO1xuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnJvcik7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBsaXN0RnVuY3Rpb25zKCk6IE9ic2VydmFibGU8R2xsbUZ1bmN0aW9uW10gfCB1bmRlZmluZWQ+IHtcbiAgICBjb25zdCBkYXRhID0ge1xuICAgICAgYWN0aW9uOiBcImxpc3RmdW5jdGlvbnNcIixcbiAgICAgIGRlYnVnOiB0aGlzLmNoYXRDb25maWckLnZhbHVlIS5kZWZhdWx0VmFsdWVzLmRlYnVnXG4gICAgfTtcbiAgICByZXR1cm4gdGhpcy5qc29uTWV0aG9kV2ViU2VydmljZS5nZXQodGhpcy5SRVFVRVNUX1VSTCwgZGF0YSkucGlwZShcbiAgICAgIG1hcChyZXMgPT4gcmVzLmZ1bmN0aW9ucyksXG4gICAgICB0YXAoKGZ1bmN0aW9uczogR2xsbUZ1bmN0aW9uW10gfCB1bmRlZmluZWQpID0+IHRoaXMuZnVuY3Rpb25zID0gZnVuY3Rpb25zPy5maWx0ZXIoZnVuYyA9PiBmdW5jLmVuYWJsZWQgJiYgICEhdGhpcy5jaGF0Q29uZmlnJC52YWx1ZSEuZGVmYXVsdFZhbHVlcy5mdW5jdGlvbnMuZmluZChmbiA9PiBmbi5uYW1lID09PSBmdW5jLmZ1bmN0aW9uTmFtZSkpKSxcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGludm9raW5nIGxpc3RmdW5jdGlvbnM6JywgZXJyb3IpO1xuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnJvcik7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBmZXRjaChtZXNzYWdlczogQ2hhdE1lc3NhZ2VbXSwgcXVlcnk6IFF1ZXJ5KTogT2JzZXJ2YWJsZTxDaGF0UmVzcG9uc2U+IHtcbiAgICAvLyBTdGFydCBzdHJlYW1pbmcgYnkgaW52b2tpbmcgdGhlIENoYXQgbWV0aG9kXG4gICAgdGhpcy5zdHJlYW1pbmckLm5leHQodHJ1ZSk7XG5cbiAgICAvLyBQcmVwYXJlIHRoZSBwYXlsb2FkIHRvIHNlbmQgdG8gdGhlIENoYXQgbWV0aG9kXG4gICAgY29uc3QgZGF0YTogQ2hhdFBheWxvYWQgJiB7YWN0aW9uOiBcImNoYXRcIn0gPSB7XG4gICAgICBhY3Rpb246IFwiY2hhdFwiLFxuICAgICAgaGlzdG9yeTogbWVzc2FnZXMsXG4gICAgICBmdW5jdGlvbnM6IHRoaXMuY2hhdENvbmZpZyQudmFsdWUhLmRlZmF1bHRWYWx1ZXMuZnVuY3Rpb25zPy5maWx0ZXIoZnVuYyA9PiBmdW5jLmVuYWJsZWQpLm1hcChmdW5jID0+IGZ1bmMubmFtZSksXG4gICAgICBkZWJ1ZzogdGhpcy5jaGF0Q29uZmlnJC52YWx1ZSEuZGVmYXVsdFZhbHVlcy5kZWJ1ZyxcbiAgICAgIHNlcnZpY2VTZXR0aW5nczoge1xuICAgICAgICBzZXJ2aWNlX2lkOiB0aGlzLmNoYXRDb25maWckLnZhbHVlIS5kZWZhdWx0VmFsdWVzLnNlcnZpY2VfaWQsXG4gICAgICAgIG1vZGVsX2lkOiB0aGlzLmNoYXRDb25maWckLnZhbHVlIS5kZWZhdWx0VmFsdWVzLm1vZGVsX2lkLFxuICAgICAgICB0b3BfcDogdGhpcy5jaGF0Q29uZmlnJC52YWx1ZSEuZGVmYXVsdFZhbHVlcy50b3BfcCxcbiAgICAgICAgdGVtcGVyYXR1cmU6IHRoaXMuY2hhdENvbmZpZyQudmFsdWUhLmRlZmF1bHRWYWx1ZXMudGVtcGVyYXR1cmUsXG4gICAgICAgIG1heF90b2tlbnM6IHRoaXMuY2hhdENvbmZpZyQudmFsdWUhLmRlZmF1bHRWYWx1ZXMubWF4X3Rva2VucyxcbiAgICAgICAgLi4udGhpcy5jaGF0Q29uZmlnJC52YWx1ZSEuYWRkaXRpb25hbFNlcnZpY2VTZXR0aW5nc1xuICAgICAgfSxcbiAgICAgIGFwcFF1ZXJ5OiB7XG4gICAgICAgIGFwcDogdGhpcy5hcHBTZXJ2aWNlLmFwcE5hbWUsXG4gICAgICAgIHF1ZXJ5XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0aGlzLmNoYXRDb25maWckLnZhbHVlIS5zYXZlZENoYXRTZXR0aW5ncy5lbmFibGVkKSB7XG4gICAgICBkYXRhLmluc3RhbmNlSWQgPSB0aGlzLmNoYXRJbnN0YW5jZUlkO1xuICAgICAgZGF0YS5zYXZlZENoYXRJZCA9IHRoaXMuc2F2ZWRDaGF0SWQ7XG4gICAgfVxuXG4gICAgLy8gUmVxdWVzdCB0aGUgQ2hhdCBlbmRwb2ludFxuICAgIHJldHVybiB0aGlzLmpzb25NZXRob2RXZWJTZXJ2aWNlLnBvc3QodGhpcy5SRVFVRVNUX1VSTCwgZGF0YSkucGlwZShcbiAgICAgIHRhcCgocmVzOiBIdHRwQ2hhdFJlc3BvbnNlKSA9PiB0aGlzLnVwZGF0ZVF1b3RhKHJlcy5xdW90YSwgdHJ1ZSkpLFxuICAgICAgbWFwKChyZXM6IEh0dHBDaGF0UmVzcG9uc2UpID0+IHtcbiAgICAgICAgLy8gRGVmaW5lICRwcm9ncmVzcyBmcm9tIHRoZSBhY3Rpb25zIHByb3BlcnR5IG9mIHRoZSByZXNwb25zZVxuICAgICAgICBsZXQgJHByb2dyZXNzOiBDaGF0UHJvZ3Jlc3NbXSB8IHVuZGVmaW5lZDtcbiAgICAgICAgaWYoIHJlcy5hY3Rpb25zPy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgY29uc3QgYWN0aW9uczogQWN0aW9uTWVzc2FnZVtdID0gT2JqZWN0LnZhbHVlcyhyZXMuYWN0aW9ucy5yZWR1Y2UoKGFjYywgaXRlbSkgPT4ge1xuICAgICAgICAgICAgYWNjW2l0ZW0uZ3VpZF0gPSB7IC4uLihhY2NbaXRlbS5ndWlkXSB8fCB7fSksIC4uLml0ZW0gfTtcbiAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgfSwge30pKTtcbiAgICAgICAgICAkcHJvZ3Jlc3MgPSBhY3Rpb25zLm1hcCgoYSkgPT4gKHtcbiAgICAgICAgICAgIHRpdGxlOiBhLmRpc3BsYXlOYW1lID8/IFwiXCIsXG4gICAgICAgICAgICBjb250ZW50OiBhLmRpc3BsYXlWYWx1ZSA/PyBcIlwiLFxuICAgICAgICAgICAgZG9uZTogYS5leGVjdXRpb25UaW1lICE9PSB1bmRlZmluZWQsXG4gICAgICAgICAgICB0aW1lOiBhLmV4ZWN1dGlvblRpbWUsXG4gICAgICAgICAgfSkpXG4gICAgICAgIH1cbiAgICAgICAgLy8gUmUtYXR0YWNoIHRoZSAkcHJvZ3Jlc3MgYW5kICRhdHRhY2htZW50IG9mIHRoZSBsYXN0IHJlc3BvbnNlIHRvIHRoZSBsYXN0IGFzc2lzdGFudCdzIHJlc3BvbnNlIGluIHRoZSBjaGF0IGhpc3RvcnlcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSB7Li4uKHJlcy5oaXN0b3J5IGFzIEFycmF5PENoYXRNZXNzYWdlPikuYXQoLTEpfSBhcyBDaGF0TWVzc2FnZTtcbiAgICAgICAgaWYoJHByb2dyZXNzKSByZXNwb25zZS5hZGRpdGlvbmFsUHJvcGVydGllcy4kcHJvZ3Jlc3MgPSAkcHJvZ3Jlc3M7XG4gICAgICAgIGlmKHJlcy5jb250ZXh0KSByZXNwb25zZS5hZGRpdGlvbmFsUHJvcGVydGllcy4kYXR0YWNobWVudCA9IHJlcy5jb250ZXh0Lm1hcCgoY3R4KSA9PiBjdHguYWRkaXRpb25hbFByb3BlcnRpZXMpO1xuICAgICAgICBpZihyZXMuc3VnZ2VzdGVkQWN0aW9ucykgcmVzcG9uc2UuYWRkaXRpb25hbFByb3BlcnRpZXMuJHN1Z2dlc3RlZEFjdGlvbiA9IHJlcy5zdWdnZXN0ZWRBY3Rpb25zO1xuICAgICAgICAvLyBFbWl0IHRoZSB1cGRhdGVkIGNoYXQgdXNhZ2UgbWV0cmljcyBvbmNlIHRoZSBnZW5lcmF0aW9uIG9mIHRoZSBhc3Npc3RhbnQgcmVzcG9uc2UgaXMgY29tcGxldGVkXG4gICAgICAgIGlmICghIXJlc3BvbnNlLmFkZGl0aW9uYWxQcm9wZXJ0aWVzLnVzYWdlTWV0cmljcykge1xuICAgICAgICAgIHRoaXMudXBkYXRlQ2hhdFVzYWdlTWV0cmljcyhyZXNwb25zZS5hZGRpdGlvbmFsUHJvcGVydGllcy51c2FnZU1ldHJpY3MhKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBVcGRhdGUgdGhlIGNoYXQgaGlzdG9yeSB3aXRoIHRoZSBpbmNvbWluZyBoaXN0b3J5IHByb3BlcnR5IG9mIHRoZSByZXMgQU5EIHRoZSBwcm9jZXNzZWQgcmVzcG9uc2UgbWVzc2FnZVxuICAgICAgICB0aGlzLmNoYXRIaXN0b3J5ID0gcmVzLmhpc3Rvcnk7XG4gICAgICAgIHRoaXMuY2hhdEhpc3RvcnlbdGhpcy5jaGF0SGlzdG9yeS5sZW5ndGggLSAxXSA9IHJlc3BvbnNlO1xuICAgICAgICAvLyBTYXZlL3VwZGF0ZSB0aGUgY2hhdCBpZiBzYXZlZENoYXQgZW5hYmxlZFxuICAgICAgICBpZiAodGhpcy5jaGF0Q29uZmlnJC52YWx1ZSEuc2F2ZWRDaGF0U2V0dGluZ3MuZW5hYmxlZCAmJiB0aGlzLmNoYXRIaXN0b3J5LnNvbWUoKG1zZykgPT4gbXNnLmFkZGl0aW9uYWxQcm9wZXJ0aWVzPy5pc1VzZXJJbnB1dCA9PT0gdHJ1ZSkpIHtcbiAgICAgICAgICBjb25zdCBhY3Rpb24gPSAhdGhpcy5zYXZlZENoYXRJZCA/IHRoaXMuYWRkU2F2ZWRDaGF0KHRoaXMuY2hhdEhpc3RvcnkpIDogdGhpcy51cGRhdGVTYXZlZENoYXQodGhpcy5zYXZlZENoYXRJZCwgdW5kZWZpbmVkLCB0aGlzLmNoYXRIaXN0b3J5KTtcbiAgICAgICAgICBhY3Rpb24ucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBHZW5lcmF0ZSBhdWRpdCBldmVudFxuICAgICAgICBjb25zdCBkZXRhaWxzID0ge1xuICAgICAgICAgICdkdXJhdGlvbic6IHJlcy5leGVjdXRpb25UaW1lLFxuICAgICAgICAgICd0ZXh0JzogcmVzcG9uc2UuY29udGVudCxcbiAgICAgICAgICAncm9sZSc6IHJlc3BvbnNlLnJvbGUsIC8vICdhc3Npc3RhbnQnXG4gICAgICAgICAgJ3JhbmsnOiB0aGlzLmNoYXRIaXN0b3J5Lmxlbmd0aCAtIDEsXG4gICAgICAgICAgJ2dlbmVyYXRpb24tdG9rZW5jb3VudCc6IHJlc3BvbnNlLmFkZGl0aW9uYWxQcm9wZXJ0aWVzLnVzYWdlTWV0cmljcyEuY29tcGxldGlvblRva2VuQ291bnQsXG4gICAgICAgICAgJ3Byb21wdC10b2tlbmNvdW50JzogcmVzcG9uc2UuYWRkaXRpb25hbFByb3BlcnRpZXMudXNhZ2VNZXRyaWNzIS5wcm9tcHRUb2tlbkNvdW50LFxuICAgICAgICAgICdhdHRhY2htZW50cyc6IHJlc3BvbnNlLmFkZGl0aW9uYWxQcm9wZXJ0aWVzLiRhdHRhY2htZW50Py5tYXAoKHsgcmVjb3JkSWQsIGNvbnRleHRJZCwgcGFydHMsIHR5cGUgfSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHRJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGFydHM6IHBhcnRzLm1hcCgoeyBwYXJ0SWQsIHRleHQgfSkgPT4gKHsgcGFydElkLCB0ZXh0IH0pKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSkpXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuZ2VuZXJhdGVBdWRpdEV2ZW50KCdtZXNzYWdlJywgZGV0YWlscyk7XG4gICAgICAgIC8vIFJldHVybiB0aGUgcmVzdWx0XG4gICAgICAgIHJldHVybiB7IGhpc3Rvcnk6IFsuLi5tZXNzYWdlcywgcmVzcG9uc2VdLCBleGVjdXRpb25UaW1lOiByZXMuZXhlY3V0aW9uVGltZSB9O1xuICAgICAgfSksXG4gICAgICBmaW5hbGl6ZSgoKSA9PiB0aGlzLnN0cmVhbWluZyQubmV4dChmYWxzZSkpXG4gICAgKTtcbiAgfVxuXG4gIGxpc3RTYXZlZENoYXQoKTogdm9pZCB7XG4gICAgY29uc3QgZGF0YSA9IHtcbiAgICAgIGFjdGlvbjogXCJTYXZlZENoYXRMaXN0XCIsXG4gICAgICBpbnN0YW5jZUlkOiB0aGlzLmNoYXRJbnN0YW5jZUlkLFxuICAgICAgZGVidWc6IHRoaXMuY2hhdENvbmZpZyQudmFsdWUhLmRlZmF1bHRWYWx1ZXMuZGVidWdcbiAgICB9O1xuICAgIHRoaXMuanNvbk1ldGhvZFdlYlNlcnZpY2UuZ2V0KHRoaXMuUkVRVUVTVF9VUkwsIGRhdGEpLnN1YnNjcmliZShcbiAgICAgIHJlcyA9PiB0aGlzLnNhdmVkQ2hhdHMkLm5leHQocmVzLnNhdmVkQ2hhdHMpLFxuICAgICAgZXJyb3IgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBvY2N1cnJlZCB3aGlsZSBjYWxsaW5nIHRoZSBTYXZlZENoYXRMaXN0IEFQSTonLCBlcnJvci5lcnJvci5lcnJvck1lc3NhZ2UpO1xuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbnNTZXJ2aWNlLmVycm9yKCdFcnJvciBvY2N1cnJlZCB3aGlsZSBjYWxsaW5nIHRoZSBTYXZlZENoYXRMaXN0IEFQSTonLCBlcnJvci5lcnJvci5lcnJvck1lc3NhZ2UpO1xuICAgICAgfVxuICAgICAgKTtcbiAgfVxuXG4gIGFkZFNhdmVkQ2hhdChtZXNzYWdlczogQ2hhdE1lc3NhZ2VbXSk6IE9ic2VydmFibGU8U2F2ZWRDaGF0PiB7XG4gICAgY29uc3QgZGF0YSA9IHtcbiAgICAgIGFjdGlvbjogXCJTYXZlZENoYXRBZGRcIixcbiAgICAgIGluc3RhbmNlSWQ6IHRoaXMuY2hhdEluc3RhbmNlSWQsXG4gICAgICBzYXZlZENoYXRJZDogdGhpcy5jaGF0SWQsXG4gICAgICBoaXN0b3J5OiBtZXNzYWdlcyxcbiAgICAgIGRlYnVnOiB0aGlzLmNoYXRDb25maWckLnZhbHVlIS5kZWZhdWx0VmFsdWVzLmRlYnVnXG4gICAgfTtcblxuICAgIHJldHVybiB0aGlzLmpzb25NZXRob2RXZWJTZXJ2aWNlLnBvc3QodGhpcy5SRVFVRVNUX1VSTCwgZGF0YSkucGlwZShcbiAgICAgIG1hcChyZXMgPT4gcmVzLnNhdmVkQ2hhdCksXG4gICAgICB0YXAoKHNhdmVkQ2hhdDogU2F2ZWRDaGF0KSA9PiB7XG4gICAgICAgIHRoaXMuc2V0U2F2ZWRDaGF0SWQoc2F2ZWRDaGF0LmlkKTsgLy8gUGVyc2lzdCB0aGUgc2F2ZWRDaGF0SWRcbiAgICAgICAgdGhpcy5nZW5lcmF0ZUF1ZGl0RXZlbnQoJ3NhdmVkLWNoYXQuYWRkJywge30sIHNhdmVkQ2hhdC5pZCk7IC8vIEdlbmVyYXRlIGF1ZGl0IGV2ZW50XG4gICAgICB9KSxcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIG9jY3VycmVkIHdoaWxlIGNhbGxpbmcgdGhlIFNhdmVkQ2hhdEFkZCBBUEk6JywgZXJyb3IuZXJyb3IuZXJyb3JNZXNzYWdlKTtcbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25zU2VydmljZS5lcnJvcignRXJyb3Igb2NjdXJyZWQgd2hpbGUgY2FsbGluZyB0aGUgU2F2ZWRDaGF0QWRkIEFQSTonLCBlcnJvci5lcnJvci5lcnJvck1lc3NhZ2UpO1xuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnJvcik7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBnZXRTYXZlZENoYXQoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8U2F2ZWRDaGF0SGlzdG9yeSB8IHVuZGVmaW5lZD4ge1xuICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICBhY3Rpb246IFwiU2F2ZWRDaGF0R2V0XCIsXG4gICAgICBpbnN0YW5jZUlkOiB0aGlzLmNoYXRJbnN0YW5jZUlkLFxuICAgICAgc2F2ZWRDaGF0SWQ6IGlkLFxuICAgICAgZGVidWc6IHRoaXMuY2hhdENvbmZpZyQudmFsdWUhLmRlZmF1bHRWYWx1ZXMuZGVidWdcbiAgICB9O1xuICAgIHJldHVybiB0aGlzLmpzb25NZXRob2RXZWJTZXJ2aWNlLmdldCh0aGlzLlJFUVVFU1RfVVJMLCBkYXRhKS5waXBlKFxuICAgICAgbWFwKHJlcyA9PiByZXMuc2F2ZWRDaGF0KSxcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIG9jY3VycmVkIHdoaWxlIGNhbGxpbmcgdGhlIFNhdmVkQ2hhdEdldCBBUEk6JywgZXJyb3IuZXJyb3IuZXJyb3JNZXNzYWdlKTtcbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25zU2VydmljZS5lcnJvcignRXJyb3Igb2NjdXJyZWQgd2hpbGUgY2FsbGluZyB0aGUgU2F2ZWRDaGF0R2V0IEFQSTonLCBlcnJvci5lcnJvci5lcnJvck1lc3NhZ2UpO1xuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnJvcik7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICB1cGRhdGVTYXZlZENoYXQoaWQ6IHN0cmluZywgbmFtZT86IHN0cmluZywgbWVzc2FnZXM/OiBDaGF0TWVzc2FnZVtdKTogT2JzZXJ2YWJsZTxTYXZlZENoYXQ+IHtcbiAgICBjb25zdCBkYXRhID0ge1xuICAgICAgYWN0aW9uOiBcIlNhdmVkQ2hhdFVwZGF0ZVwiLFxuICAgICAgaW5zdGFuY2VJZDogdGhpcy5jaGF0SW5zdGFuY2VJZCxcbiAgICAgIHNhdmVkQ2hhdElkOiBpZCxcbiAgICAgIGRlYnVnOiB0aGlzLmNoYXRDb25maWckLnZhbHVlIS5kZWZhdWx0VmFsdWVzLmRlYnVnXG4gICAgfTtcblxuICAgIGlmKG5hbWUpIGRhdGFbXCJ0aXRsZVwiXSA9IG5hbWU7XG4gICAgaWYobWVzc2FnZXMpIGRhdGFbXCJoaXN0b3J5XCJdID0gbWVzc2FnZXM7XG5cbiAgICByZXR1cm4gdGhpcy5qc29uTWV0aG9kV2ViU2VydmljZS5wb3N0KHRoaXMuUkVRVUVTVF9VUkwsIGRhdGEpLnBpcGUoXG4gICAgICBtYXAocmVzID0+IHJlcy5zYXZlZENoYXQpLFxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3Igb2NjdXJyZWQgd2hpbGUgY2FsbGluZyB0aGUgU2F2ZWRDaGF0VXBkYXRlIEFQSTonLCBlcnJvci5lcnJvci5lcnJvck1lc3NhZ2UpO1xuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbnNTZXJ2aWNlLmVycm9yKCdFcnJvciBvY2N1cnJlZCB3aGlsZSBjYWxsaW5nIHRoZSBTYXZlZENoYXRVcGRhdGUgQVBJOicsIGVycm9yLmVycm9yLmVycm9yTWVzc2FnZSk7XG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGVycm9yKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIGRlbGV0ZVNhdmVkQ2hhdChpZHM6IHN0cmluZ1tdKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcbiAgICBjb25zdCBkYXRhID0ge1xuICAgICAgYWN0aW9uOiBcIlNhdmVkQ2hhdERlbGV0ZVwiLFxuICAgICAgaW5zdGFuY2VJZDogdGhpcy5jaGF0SW5zdGFuY2VJZCxcbiAgICAgIHNhdmVkQ2hhdElkczogaWRzLFxuICAgICAgZGVidWc6IHRoaXMuY2hhdENvbmZpZyQudmFsdWUhLmRlZmF1bHRWYWx1ZXMuZGVidWdcbiAgICB9O1xuICAgIHJldHVybiB0aGlzLmpzb25NZXRob2RXZWJTZXJ2aWNlLnBvc3QodGhpcy5SRVFVRVNUX1VSTCwgZGF0YSkucGlwZShcbiAgICAgIG1hcChyZXMgPT4gcmVzLmRlbGV0ZWRDb3VudCksXG4gICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBvY2N1cnJlZCB3aGlsZSBjYWxsaW5nIHRoZSBTYXZlZENoYXREZWxldGUgQVBJOicsIGVycm9yLmVycm9yLmVycm9yTWVzc2FnZSk7XG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9uc1NlcnZpY2UuZXJyb3IoJ0Vycm9yIG9jY3VycmVkIHdoaWxlIGNhbGxpbmcgdGhlIFNhdmVkQ2hhdERlbGV0ZSBBUEk6JywgZXJyb3IuZXJyb3IuZXJyb3JNZXNzYWdlKTtcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyb3IpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbn1cbiJdfQ==
|
package/esm2020/chat/types.mjs
CHANGED
|
@@ -18,6 +18,8 @@ const serviceSettingsSchema = z.object({
|
|
|
18
18
|
});
|
|
19
19
|
// Define the Zod representation for the additionalServiceSettings object
|
|
20
20
|
const additionalServiceSettingsSchema = z.object({});
|
|
21
|
+
// Define the Zod representation for the additionalWorkflowProperties object
|
|
22
|
+
const additionalWorkflowPropertiesSchema = z.object({});
|
|
21
23
|
// Define the Zod representation for the uiSettings object
|
|
22
24
|
const uiSettingsSchema = z.object({
|
|
23
25
|
display: z.boolean(),
|
|
@@ -76,8 +78,9 @@ export const chatConfigSchema = z.object({
|
|
|
76
78
|
defaultValues: defaultValuesSchema,
|
|
77
79
|
modeSettings: modeSettingsSchema,
|
|
78
80
|
uiSettings: uiSettingsSchema,
|
|
79
|
-
additionalServiceSettings: additionalServiceSettingsSchema,
|
|
80
81
|
savedChatSettings: savedChatSettingsSchema,
|
|
81
|
-
globalSettings: globalSettingsSchema
|
|
82
|
+
globalSettings: globalSettingsSchema,
|
|
83
|
+
additionalServiceSettings: additionalServiceSettingsSchema,
|
|
84
|
+
additionalWorkflowProperties: additionalWorkflowPropertiesSchema
|
|
82
85
|
});
|
|
83
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hc3Npc3RhbnQvY2hhdC90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBcUl4QixrRUFBa0U7QUFDbEUsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUMvQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUNuQyxpQkFBaUIsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ3hDLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxZQUFZLEVBQUUsa0JBQWtCLEVBQUUsYUFBYSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ25GLGVBQWUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUM7Q0FDbkcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFO0lBQ25FLE9BQU8sRUFBRSxtTkFBbU47Q0FDN04sQ0FBQyxDQUFDO0FBSUgsK0RBQStEO0FBQy9ELE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUNyQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRTtJQUN0QixRQUFRLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRTtJQUNwQixXQUFXLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRTtJQUN2QixLQUFLLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRTtJQUNqQixVQUFVLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRTtDQUN2QixDQUFDLENBQUM7QUFJSCx5RUFBeUU7QUFDekUsTUFBTSwrQkFBK0IsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBSXJELDBEQUEwRDtBQUMxRCxNQUFNLGdCQUFnQixHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDaEMsT0FBTyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDcEIsY0FBYyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDM0IsU0FBUyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDdEIsV0FBVyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDeEIsS0FBSyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDbEIsVUFBVSxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDdkIsS0FBSyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDbEIsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRTtJQUNoQyxpQkFBaUIsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFO0NBQy9CLENBQUMsQ0FBQztBQUlILDZEQUE2RDtBQUM3RCxNQUFNLG1CQUFtQixHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDbkMsVUFBVSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUU7SUFDdEIsUUFBUSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUU7SUFDcEIsU0FBUyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQ2hCLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDUCxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRTtRQUNoQixPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRTtLQUNyQixDQUFDLENBQ0g7SUFDRCxXQUFXLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRTtJQUN2QixLQUFLLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRTtJQUNqQixVQUFVLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRTtJQUN0QixLQUFLLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRTtJQUNsQixZQUFZLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRTtJQUN4QixVQUFVLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRTtDQUN2QixDQUFDLENBQUM7QUFJSCw0REFBNEQ7QUFDNUQsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQ3BDLEtBQUssRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ2xDLGNBQWMsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ3JDLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUUsRUFBRSw4QkFBOEI7Q0FDekUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxLQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLGdCQUFnQixLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRTtJQUN0SixPQUFPLEVBQUUscUhBQXFIO0NBQy9ILENBQUMsQ0FBQztBQUNILE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUNsQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFO0lBQzdCLGlCQUFpQixFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDOUIsY0FBYyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDM0IsY0FBYyxFQUFFLG9CQUFvQjtDQUNyQyxDQUFDLENBQUM7QUFJSCxpRUFBaUU7QUFDakUsTUFBTSx1QkFBdUIsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQ3ZDLE9BQU8sRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFO0lBQ3BCLE9BQU8sRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFO0NBQ3JCLENBQUMsQ0FBQTtBQUlGLDhEQUE4RDtBQUM5RCxNQUFNLG9CQUFvQixHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDcEMsVUFBVSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDakMsMkJBQTJCLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUNuRCw0QkFBNEIsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxFQUFFO0NBQ3JELENBQUMsQ0FBQTtBQUlGLGlFQUFpRTtBQUNqRSxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQ3ZDLGtCQUFrQixFQUFFLHdCQUF3QjtJQUM1QyxhQUFhLEVBQUUsbUJBQW1CO0lBQ2xDLFlBQVksRUFBRSxrQkFBa0I7SUFDaEMsVUFBVSxFQUFFLGdCQUFnQjtJQUM1Qix5QkFBeUIsRUFBRSwrQkFBK0I7SUFDMUQsaUJBQWlCLEVBQUUsdUJBQXVCO0lBQzFDLGNBQWMsRUFBRSxvQkFBb0I7Q0FDckMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgeiB9IGZyb20gJ3pvZCc7XG5pbXBvcnQgeyBSZWNvcmQgfSBmcm9tIFwiQHNpbmVxdWEvY29yZS93ZWItc2VydmljZXNcIjtcbmltcG9ydCB7IFF1ZXJ5IH0gZnJvbSAnQHNpbmVxdWEvY29yZS9hcHAtdXRpbHMnO1xuXG4vKipcbiAqIEluZGl2aWR1YWwgbWVzc2FnZSBzZW50ICYgcmV0dXJuZWQgYnkgdGhlIENoYXRHUFQgQVBJLlxuICogSWYgdGhpcyBtZXNzYWdlIGlzIGFuIGF0dGFjaG1lbnQsIHdlIGF0dGFjaCB0aGUgbWluaW1hbFxuICogaW5mb3JtYXRpb24gbmVlZGVkIHRvIHJlY29uc3RydWN0IHRoaXMgYXR0YWNobWVudCAoUmF3QXR0YWNobWVudClcbiAqIGFzIHdlbGwgYXMgdGhlIHJlZmVyZW5jZSBpZCBjb21wdXRlZCBhdCB0aGUgbW9tZW50IG9mIHNlbmRpbmdcbiAqIHRoZSBhdHRhY2htZW50IHRvIHRoZSBBUEkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmF3TWVzc2FnZSB7XG4gIHJvbGU6IHN0cmluZztcbiAgY29udGVudDogc3RyaW5nO1xuICBhZGRpdGlvbmFsUHJvcGVydGllczoge1xuICAgIFtrZXk6IHN0cmluZ106IGFueVxuICB9O1xufVxuXG4vKipcbiAqIEEgY2hhdCBtZXNzYWdlIHRoYXQgaGFzIGJlZW4gcHJvY2Vzc2VkIHRvIGluY2x1ZGUgdGhlIG1hcmtkb3duLWZvcm1hdHRlZFxuICogY29udGVudCBmb3IgZGlzcGxheSwgYXMgd2VsbCBhcyBkZXRhaWxlZCBhdHRhY2htZW50IGRhdGEsIGFuZCBvcHRpb25hbGx5XG4gKiBhIGxpc3Qgb2YgdGhlIHJlZmVyZW5jZXMgZXh0cmFjdGVkIGZyb20gdGhhdCBtZXNzYWdlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2hhdE1lc3NhZ2UgZXh0ZW5kcyBSYXdNZXNzYWdlIHtcbiAgYWRkaXRpb25hbFByb3BlcnRpZXM6IHtcbiAgICBkaXNwbGF5PzogYm9vbGVhbjtcbiAgICAkcHJvZ3Jlc3M/OiBDaGF0UHJvZ3Jlc3NbXTtcbiAgICAkYXR0YWNobWVudD86IENoYXRDb250ZXh0QXR0YWNobWVudFtdO1xuICAgICRzdWdnZXN0ZWRBY3Rpb24/OiBTdWdnZXN0ZWRBY3Rpb25bXTtcbiAgICBmb3JjZWRXb3JrZmxvdz86IHN0cmluZztcbiAgICBxdWVyeT86IFF1ZXJ5O1xuICAgIGlzVXNlcklucHV0PzogYm9vbGVhbjtcbiAgICB1c2FnZU1ldHJpY3M/OiBDaGF0VXNhZ2VNZXRyaWNzO1xuICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDaGF0UHJvZ3Jlc3Mge1xuICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgY29udGVudD86IHN0cmluZztcbiAgICBkb25lPzogYm9vbGVhbjtcbiAgICB0aW1lPzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJhd0F0dGFjaG1lbnQge1xuICAvKiogVHlwZSBvZiB0aGUgYXR0YWNobWVudCAqL1xuICB0eXBlOiBzdHJpbmc7XG4gIC8qKiBSZWNvcmQgaWQgZnJvbSB3aGljaCB0aGlzIGF0dGFjaG1lbnQgaXMgdGFrZW4gKi9cbiAgcmVjb3JkSWQ6IHN0cmluZztcbiAgLyoqIFJlY29yZCBmcm9tIHdoaWNoIHRoaXMgdGhpcyBhdHRhY2htZW50IGlzIHRha2VuICovXG4gIHJlY29yZDogUmVjb3JkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERvY3VtZW50UGFydCB7XG4gIHBhcnRJZDogbnVtYmVyO1xuICBvZmZzZXQ6IG51bWJlcjtcbiAgbGVuZ3RoOiBudW1iZXI7XG4gIHRleHQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDaGF0Q29udGV4dEF0dGFjaG1lbnQgZXh0ZW5kcyBSYXdBdHRhY2htZW50IHtcbiAgLyoqIFR5cGUgb2YgdGhlIGF0dGFjaG1lbnQgKi9cbiAgdHlwZTogXCJDb250ZXh0XCI7XG4gIC8qKiBSYW5rIG9mIHRoZSBhdHRhY2htZW50IGluIHRoZSBjb250ZXh0IG1lc3NhZ2UgKi9cbiAgY29udGV4dElkOiBudW1iZXI7XG4gIC8qKiBQYXJ0cyBvZiB0aGUgcmVjb3JkIHRoYXQgdGhlIGFzc2lzdGFudCB1c2VzIHRvIGFuc3dlciAqL1xuICBwYXJ0czogRG9jdW1lbnRQYXJ0W107XG4gIC8qKiBUaGUgc3BlY2lmaWMgaWQgdXNlZCBvZiB0aGUgcmVmZXJlbmNlZCBwYXJ0ICovXG4gICRwYXJ0SWQ/OiBudW1iZXI7XG59XG5cbi8qKlxuICogUmF3IHJlc3BvbnNlIG9mIHRoZSBjaGF0IEFQSVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJhd1Jlc3BvbnNlIHtcbiAgaGlzdG9yeTogUmF3TWVzc2FnZVtdO1xuICBleGVjdXRpb25UaW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogRW5yaWNoZWQgcmVzcG9uc2Ugb2YgdGhlIGNoYXQgQVBJXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2hhdFJlc3BvbnNlIGV4dGVuZHMgUmF3UmVzcG9uc2V7XG4gIGhpc3Rvcnk6IENoYXRNZXNzYWdlW107XG59XG5cbi8qKlxuICogUmVzcG9uc2Ugb2YgdGhlIExpc3RNb2RlbHMgQVBJXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2xsbU1vZGVsRGVzY3JpcHRpb24ge1xuICBwcm92aWRlcjogc3RyaW5nO1xuICBkaXNwbGF5TmFtZTogc3RyaW5nO1xuICBzZXJ2aWNlSWQ6IHN0cmluZztcbiAgbW9kZWxJZDogc3RyaW5nO1xuICBlbmFibGU6IGJvb2xlYW47XG4gIG1heEdlbmVyYXRpb25TaXplOiBudW1iZXI7XG4gIGNvbnRleHRXaW5kb3dTaXplOiBudW1iZXI7XG59XG5cbi8qKlxuICogUmVzcG9uc2Ugb2YgdGhlIExpc3RGdW5jdGlvbnMgQVBJXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2xsbUZ1bmN0aW9uIHtcbiAgZnVuY3Rpb25OYW1lOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIGVuYWJsZWQ6IGJvb2xlYW47XG4gIHBhcmFtZXRlcnM6IEdsbG1GdW5jdGlvblBhcmFtZXRlcltdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdsbG1GdW5jdGlvblBhcmFtZXRlciB7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIGlzUmVxdWlyZWQ6IGJvb2xlYW47XG4gIG5hbWU6IHN0cmluZztcbiAgdHlwZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIE1pbmltYWwgcmVwcmVzZW50YXRpb24gb2YgYSBzYXZlZCBjaGF0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2F2ZWRDaGF0IHtcbiAgaWQ6IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbiAgbW9kaWZpZWRVVEM6IHN0cmluZztcbn1cblxuLyoqXG4gKiBEYXRhIHN0cnVjdHVyZSBzYXZlZCB0byByZWNvbnN0cnVjdCBhIHNhdmVkIGNoYXQgY29udmVyc2F0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2F2ZWRDaGF0SGlzdG9yeSBleHRlbmRzIFNhdmVkQ2hhdHtcbiAgaGlzdG9yeTogQ2hhdE1lc3NhZ2VbXTtcbn1cblxuLy8gRGVmaW5lIHRoZSBab2QgcmVwcmVzZW50YXRpb24gZm9yIHRoZSBjb25uZWN0aW9uU2V0dGluZ3Mgb2JqZWN0XG5leHBvcnQgY29uc3QgY29ubmVjdGlvblNldHRpbmdzU2NoZW1hID0gei5vYmplY3Qoe1xuICByZXN0RW5kcG9pbnQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgd2Vic29ja2V0RW5kcG9pbnQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgc2lnbmFsUlRyYW5zcG9ydDogei5lbnVtKFtcIldlYlNvY2tldHNcIiwgXCJTZXJ2ZXJTZW50RXZlbnRzXCIsIFwiTG9uZ1BvbGxpbmdcIiwgXCJOb25lXCJdKSxcbiAgc2lnbmFsUkxvZ0xldmVsOiB6LmVudW0oW1wiQ3JpdGljYWxcIiwgXCJEZWJ1Z1wiLCBcIkVycm9yXCIsIFwiSW5mb3JtYXRpb25cIiwgXCJOb25lXCIsIFwiVHJhY2VcIiwgXCJXYXJuaW5nXCJdKVxufSkucmVmaW5lKGRhdGEgPT4gKCEhZGF0YS5yZXN0RW5kcG9pbnQgfHwgISFkYXRhLndlYnNvY2tldEVuZHBvaW50KSwge1xuICBtZXNzYWdlOiBcIkJhc2VkIG9uIHRoZSBwcm92aWRlZCBpbnB1dCgpIHByb3RvY29sICgnUkVTVCcgb3IgJ1dFQlNPQ0tFVCcpIHRvIHRoZSBDaGF0IENvbXBvbmVudCwgZWl0aGVyICdyZXN0RW5kcG9pbnQnIG9yICd3ZWJzb2NrZXRFbmRwb2ludCcgcHJvcGVydHkgc2hvdWxkIGJlIHByb3ZpZGVkIGluIHRoZSAnZ2xvYmFsU2V0dGluZ3MnIG9mIHRoZSBhc3Npc3RhbnQgaW5zdGFuY2UuXCIsXG59KTtcbi8vIERlZmluZSB0aGUgQ29ubmVjdGlvblNldHRpbmdzIGludGVyZmFjZVxuZXhwb3J0IHR5cGUgQ29ubmVjdGlvblNldHRpbmdzID0gei5pbmZlcjx0eXBlb2YgY29ubmVjdGlvblNldHRpbmdzU2NoZW1hPjtcblxuLy8gRGVmaW5lIHRoZSBab2QgcmVwcmVzZW50YXRpb24gZm9yIHRoZSBzZXJ2aWNlU2V0dGluZ3Mgb2JqZWN0XG5jb25zdCBzZXJ2aWNlU2V0dGluZ3NTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIHNlcnZpY2VfaWQ6IHouc3RyaW5nKCksXG4gIG1vZGVsX2lkOiB6LnN0cmluZygpLFxuICB0ZW1wZXJhdHVyZTogei5udW1iZXIoKSxcbiAgdG9wX3A6IHoubnVtYmVyKCksXG4gIG1heF90b2tlbnM6IHoubnVtYmVyKClcbn0pO1xuLy8gRGVmaW5lIHRoZSBTZXJ2aWNlU2V0dGluZ3MgaW50ZXJmYWNlXG5leHBvcnQgaW50ZXJmYWNlIFNlcnZpY2VTZXR0aW5ncyBleHRlbmRzIHouaW5mZXI8dHlwZW9mIHNlcnZpY2VTZXR0aW5nc1NjaGVtYT4ge31cblxuLy8gRGVmaW5lIHRoZSBab2QgcmVwcmVzZW50YXRpb24gZm9yIHRoZSBhZGRpdGlvbmFsU2VydmljZVNldHRpbmdzIG9iamVjdFxuY29uc3QgYWRkaXRpb25hbFNlcnZpY2VTZXR0aW5nc1NjaGVtYSA9IHoub2JqZWN0KHt9KTtcbi8vIERlZmluZSB0aGUgQWRkaXRpb25hbFNlcnZpY2VTZXR0aW5ncyBpbnRlcmZhY2VcbmV4cG9ydCBpbnRlcmZhY2UgQWRkaXRpb25hbFNlcnZpY2VTZXR0aW5ncyBleHRlbmRzIHouaW5mZXI8dHlwZW9mIGFkZGl0aW9uYWxTZXJ2aWNlU2V0dGluZ3NTY2hlbWE+IHt9XG5cbi8vIERlZmluZSB0aGUgWm9kIHJlcHJlc2VudGF0aW9uIGZvciB0aGUgdWlTZXR0aW5ncyBvYmplY3RcbmNvbnN0IHVpU2V0dGluZ3NTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIGRpc3BsYXk6IHouYm9vbGVhbigpLFxuICBzZXJ2aWNlc01vZGVsczogei5ib29sZWFuKCksXG4gIGZ1bmN0aW9uczogei5ib29sZWFuKCksXG4gIHRlbXBlcmF0dXJlOiB6LmJvb2xlYW4oKSxcbiAgdG9wX3A6IHouYm9vbGVhbigpLFxuICBtYXhfdG9rZW5zOiB6LmJvb2xlYW4oKSxcbiAgZGVidWc6IHouYm9vbGVhbigpLFxuICBkaXNwbGF5U3lzdGVtUHJvbXB0OiB6LmJvb2xlYW4oKSxcbiAgZGlzcGxheVVzZXJQcm9tcHQ6IHouYm9vbGVhbigpXG59KTtcbi8vIERlZmluZSB0aGUgVWlTZXR0aW5ncyBpbnRlcmZhY2VcbmV4cG9ydCBpbnRlcmZhY2UgVWlTZXR0aW5ncyBleHRlbmRzIHouaW5mZXI8dHlwZW9mIHVpU2V0dGluZ3NTY2hlbWE+IHt9XG5cbi8vIERlZmluZSB0aGUgWm9kIHJlcHJlc2VudGF0aW9uIGZvciB0aGUgZGVmYXVsdFZhbHVlcyBvYmplY3RcbmNvbnN0IGRlZmF1bHRWYWx1ZXNTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIHNlcnZpY2VfaWQ6IHouc3RyaW5nKCksXG4gIG1vZGVsX2lkOiB6LnN0cmluZygpLFxuICBmdW5jdGlvbnM6IHouYXJyYXkoXG4gICAgei5vYmplY3Qoe1xuICAgICAgbmFtZTogei5zdHJpbmcoKSxcbiAgICAgIGVuYWJsZWQ6IHouYm9vbGVhbigpXG4gICAgfSlcbiAgKSxcbiAgdGVtcGVyYXR1cmU6IHoubnVtYmVyKCksXG4gIHRvcF9wOiB6Lm51bWJlcigpLFxuICBtYXhfdG9rZW5zOiB6Lm51bWJlcigpLFxuICBkZWJ1Zzogei5ib29sZWFuKCksXG4gIHN5c3RlbVByb21wdDogei5zdHJpbmcoKSxcbiAgdXNlclByb21wdDogei5zdHJpbmcoKVxufSk7XG4vLyBEZWZpbmUgdGhlIERlZmF1bHRWYWx1ZXMgaW50ZXJmYWNlXG5leHBvcnQgaW50ZXJmYWNlIERlZmF1bHRWYWx1ZXMgZXh0ZW5kcyB6LmluZmVyPHR5cGVvZiBkZWZhdWx0VmFsdWVzU2NoZW1hPiB7fVxuXG4vLyBEZWZpbmUgdGhlIFpvZCByZXByZXNlbnRhdGlvbiBmb3IgdGhlIG1vZGVTZXR0aW5ncyBvYmplY3RcbmNvbnN0IGluaXRpYWxpemF0aW9uU2NoZW1hID0gei5vYmplY3Qoe1xuICBldmVudDogei5lbnVtKFsnUXVlcnknLCAnUHJvbXB0J10pLFxuICBmb3JjZWRXb3JrZmxvdzogei5zdHJpbmcoKS5vcHRpb25hbCgpLCAvLyBPcHRpb25hbCBmb3IgZXZlbnQgJ1Byb21wdCdcbiAgZGlzcGxheVVzZXJRdWVyeTogei5ib29sZWFuKCkub3B0aW9uYWwoKSwgLy8gT3B0aW9uYWwgZm9yIGV2ZW50ICdQcm9tcHQnXG59KS5yZWZpbmUoZGF0YSA9PiAoKGRhdGEuZXZlbnQgPT09IFwiUXVlcnlcIikgPyAoISFkYXRhLmZvcmNlZFdvcmtmbG93ICYmIGRhdGEuZGlzcGxheVVzZXJRdWVyeSAhPT0gdW5kZWZpbmVkICYmIGRhdGEuZGlzcGxheVVzZXJRdWVyeSAhPT0gbnVsbCkgOiB0cnVlKSwge1xuICBtZXNzYWdlOiBcIlRoZSAnZm9yY2VkV29ya2Zsb3cnIGFuZCAnZGlzcGxheVVzZXJRdWVyeScgcHJvcGVydGllcyBtdXN0IGJlIHByb3ZpZGVkIHdoZW4gdGhlIGluaXRpYWxpemF0aW9uJ3MgZXZlbnQgaXMgJ1F1ZXJ5Jy5cIixcbn0pO1xuY29uc3QgbW9kZVNldHRpbmdzU2NoZW1hID0gei5vYmplY3Qoe1xuICBlbmFibGVkVXNlcklucHV0OiB6LmJvb2xlYW4oKSxcbiAgZGlzcGxheVVzZXJQcm9tcHQ6IHouYm9vbGVhbigpLFxuICBzZW5kVXNlclByb21wdDogei5ib29sZWFuKCksXG4gIGluaXRpYWxpemF0aW9uOiBpbml0aWFsaXphdGlvblNjaGVtYVxufSk7XG4vLyBEZWZpbmUgdGhlIE1vZGVTZXR0aW5ncyBpbnRlcmZhY2VcbmV4cG9ydCBpbnRlcmZhY2UgTW9kZVNldHRpbmdzIGV4dGVuZHMgei5pbmZlcjx0eXBlb2YgbW9kZVNldHRpbmdzU2NoZW1hPiB7fVxuXG4vLyBEZWZpbmUgdGhlIFpvZCByZXByZXNlbnRhdGlvbiBmb3IgdGhlIHNhdmVkQ2hhdFNldHRpbmdzIG9iamVjdFxuY29uc3Qgc2F2ZWRDaGF0U2V0dGluZ3NTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIGVuYWJsZWQ6IHouYm9vbGVhbigpLFxuICBkaXNwbGF5OiB6LmJvb2xlYW4oKVxufSlcbi8vIERlZmluZSB0aGUgU2F2ZWRDaGF0U2V0dGluZ3MgaW50ZXJmYWNlXG5leHBvcnQgaW50ZXJmYWNlIFNhdmVkQ2hhdFNldHRpbmdzIGV4dGVuZHMgei5pbmZlcjx0eXBlb2Ygc2F2ZWRDaGF0U2V0dGluZ3NTY2hlbWE+IHt9XG5cbi8vIERlZmluZSB0aGUgWm9kIHJlcHJlc2VudGF0aW9uIGZvciB0aGUgZ2xvYmFsU2V0dGluZ3Mgb2JqZWN0XG5jb25zdCBnbG9iYWxTZXR0aW5nc1NjaGVtYSA9IHoub2JqZWN0KHtcbiAgZGlzY2xhaW1lcjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBkaXNwbGF5VXNlclF1b3RhQ29uc3VtcHRpb246IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gIGRpc3BsYXlDaGF0VG9rZW5zQ29uc3VtcHRpb246IHouYm9vbGVhbigpLm9wdGlvbmFsKClcbn0pXG4vLyBEZWZpbmUgdGhlIFNhdmVkQ2hhdFNldHRpbmdzIGludGVyZmFjZVxuZXhwb3J0IGludGVyZmFjZSBTYXZlZENoYXRTZXR0aW5ncyBleHRlbmRzIHouaW5mZXI8dHlwZW9mIHNhdmVkQ2hhdFNldHRpbmdzU2NoZW1hPiB7fVxuXG4vLyBEZWZpbmUgdGhlIFpvZCByZXByZXNlbnRhdGlvbiBmb3IgdGhlIGVudGlyZSBDaGF0Q29uZmlnIG9iamVjdFxuZXhwb3J0IGNvbnN0IGNoYXRDb25maWdTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIGNvbm5lY3Rpb25TZXR0aW5nczogY29ubmVjdGlvblNldHRpbmdzU2NoZW1hLFxuICBkZWZhdWx0VmFsdWVzOiBkZWZhdWx0VmFsdWVzU2NoZW1hLFxuICBtb2RlU2V0dGluZ3M6IG1vZGVTZXR0aW5nc1NjaGVtYSxcbiAgdWlTZXR0aW5nczogdWlTZXR0aW5nc1NjaGVtYSxcbiAgYWRkaXRpb25hbFNlcnZpY2VTZXR0aW5nczogYWRkaXRpb25hbFNlcnZpY2VTZXR0aW5nc1NjaGVtYSxcbiAgc2F2ZWRDaGF0U2V0dGluZ3M6IHNhdmVkQ2hhdFNldHRpbmdzU2NoZW1hLFxuICBnbG9iYWxTZXR0aW5nczogZ2xvYmFsU2V0dGluZ3NTY2hlbWFcbn0pO1xuLy8gRGVmaW5lIHRoZSBDaGF0Q29uZmlnIGludGVyZmFjZVxuZXhwb3J0IGludGVyZmFjZSBDaGF0Q29uZmlnIGV4dGVuZHMgei5pbmZlcjx0eXBlb2YgY2hhdENvbmZpZ1NjaGVtYT4ge31cblxuZXhwb3J0IGludGVyZmFjZSBDaGF0UGF5bG9hZCB7XG4gIGRlYnVnOiBib29sZWFuO1xuICBmdW5jdGlvbnM6IHN0cmluZ1tdO1xuICBoaXN0b3J5OiBDaGF0TWVzc2FnZVtdO1xuICBzZXJ2aWNlU2V0dGluZ3M6IFNlcnZpY2VTZXR0aW5ncztcbiAgYXBwUXVlcnk6IHtcbiAgICBhcHA6IHN0cmluZztcbiAgICBxdWVyeTogUXVlcnkgfCB1bmRlZmluZWQ7XG4gICAgdGFyZ2V0VXJsPzogc3RyaW5nO1xuICAgIGFjY2Vzc1Rva2VuPzogc3RyaW5nO1xuICB9O1xuICBpbnN0YW5jZUlkPzogc3RyaW5nO1xuICBzYXZlZENoYXRJZD86IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgQWN0aW9uTWVzc2FnZSA9IHtcbiAgZ3VpZDogc3RyaW5nO1xuICBkaXNwbGF5TmFtZT86IHN0cmluZ1xuICBkaXNwbGF5VmFsdWU/OiBzdHJpbmc7XG4gIGV4ZWN1dGlvblRpbWU/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGV4dENodW5rc09wdGlvbnMge1xuICBleHRlbmRNb2RlPzogJ05vbmUnIHwgJ1NlbnRlbmNlJyB8ICdDaGFycyc7XG4gIGV4dGVuZFNjb3BlPzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFF1b3RhIHtcbiAgbGFzdFJlcXVlc3Q6IHN0cmluZztcbiAgcHJvbXB0VG9rZW5Db3VudDogbnVtYmVyO1xuICBjb21wbGV0aW9uVG9rZW5Db3VudDogbnVtYmVyO1xuICBwZXJpb2RUb2tlbnM6IG51bWJlcjtcbiAgcmVzZXRIb3VyczogbnVtYmVyO1xuICB0b2tlbkNvdW50OiBudW1iZXI7XG4gIG5leHRSZXNldDogc3RyaW5nO1xuICBsYXN0UmVzZXRVVEM6IHN0cmluZztcbiAgbmV4dFJlc2V0VVRDOiBzdHJpbmc7XG4gIG1heFF1b3RhUmVhY2hlZDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdWdnZXN0ZWRBY3Rpb24ge1xuICBjb250ZW50OiBzdHJpbmc7XG4gIHR5cGU6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbml0Q2hhdCB7XG4gIG1lc3NhZ2VzOiBSYXdNZXNzYWdlW107XG59XG5cbi8qKlxuICogTGlzdCBvZiBldmVudHMgZGF0YSB0aGF0IGNhbiBiZSBlbWl0dGVkIGJ5IHRoZSB3ZWJzb2NrZXQgY2hhdCBlbmRwb2ludFxuICovXG5leHBvcnQgdHlwZSBTdWdnZXN0ZWRBY3Rpb25zRXZlbnQgPSB7IHN1Z2dlc3RlZEFjdGlvbnM6IFN1Z2dlc3RlZEFjdGlvbltdIH07XG5leHBvcnQgdHlwZSBRdW90YUV2ZW50ID0geyBxdW90YTogUXVvdGEgfTtcbmV4cG9ydCB0eXBlIE1lc3NhZ2VFdmVudCA9IHN0cmluZztcbmV4cG9ydCB0eXBlIENvbnRleHRNZXNzYWdlRXZlbnQgPSB7IGNvbnRlbnQ6IHN0cmluZzsgbWV0YWRhdGE6IENoYXRDb250ZXh0QXR0YWNobWVudCB9O1xuZXhwb3J0IHR5cGUgRXJyb3JFdmVudCA9IHN0cmluZztcbmV4cG9ydCB0eXBlIEFjdGlvblN0YXJ0RXZlbnQgPSB7IGd1aWQ6IHN0cmluZzsgZGlzcGxheU5hbWU6IHN0cmluZyB9O1xuZXhwb3J0IHR5cGUgQWN0aW9uUmVzdWx0RXZlbnQgPSB7IGd1aWQ6IHN0cmluZzsgZGlzcGxheVZhbHVlOiBzdHJpbmcgfTtcbmV4cG9ydCB0eXBlIEFjdGlvblN0b3BFdmVudCA9IHsgZ3VpZDogc3RyaW5nOyBleGVjdXRpb25UaW1lOiBudW1iZXIgfTtcbmV4cG9ydCB0eXBlIEhpc3RvcnlFdmVudCA9IHsgaGlzdG9yeTogUmF3TWVzc2FnZVtdOyBleGVjdXRpb25UaW1lOiBzdHJpbmcgfTtcblxuLyoqXG4gKiBEYXRhIGVtaXR0ZWQgYnkgdGhlIGh0dHAgY2hhdCBlbmRwb2ludFxuICovXG5leHBvcnQgdHlwZSBIdHRwQ2hhdFJlc3BvbnNlID0ge1xuICBxdW90YTogUXVvdGE7XG4gIHN1Z2dlc3RlZEFjdGlvbnM6IFN1Z2dlc3RlZEFjdGlvbltdO1xuICBkZWJ1ZzogYW55O1xuICBjb250ZXh0OiB7IGNvbnRlbnQ6IHN0cmluZzsgYWRkaXRpb25hbFByb3BlcnRpZXM6IENoYXRDb250ZXh0QXR0YWNobWVudCB9W107XG4gIGFjdGlvbnM6IEFjdGlvbk1lc3NhZ2VbXTtcbiAgaGlzdG9yeTogUmF3TWVzc2FnZVtdO1xuICBleGVjdXRpb25UaW1lOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVG9rZW5Db25zdW1wdGlvbiB7XG4gIHBlcmNlbnRhZ2U6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVc2VyVG9rZW5Db25zdW1wdGlvbiBleHRlbmRzIFRva2VuQ29uc3VtcHRpb24ge1xuICBuZXh0UmVzZXREYXRlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2hhdFVzYWdlTWV0cmljcyB7XG4gIHRvdGFsVG9rZW5Db3VudDogbnVtYmVyO1xuICBwcm9tcHRUb2tlbkNvdW50OiBudW1iZXI7XG4gIGNvbXBsZXRpb25Ub2tlbkNvdW50OiBudW1iZXI7XG4gIHRva2VuaXplclR5cGU6IHN0cmluZ1xufVxuXG5leHBvcnQgdHlwZSBNZXNzYWdlSGFuZGxlcjxUPiA9IHtcbiAgaGFuZGxlcjogKGRhdGE6IFQpID0+IHZvaWQ7XG4gIGlzR2xvYmFsSGFuZGxlcjogYm9vbGVhbjtcbn07XG4iXX0=
|
|
86
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hc3Npc3RhbnQvY2hhdC90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBd0l4QixrRUFBa0U7QUFDbEUsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUMvQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUNuQyxpQkFBaUIsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ3hDLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxZQUFZLEVBQUUsa0JBQWtCLEVBQUUsYUFBYSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ25GLGVBQWUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUM7Q0FDbkcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFO0lBQ25FLE9BQU8sRUFBRSxtTkFBbU47Q0FDN04sQ0FBQyxDQUFDO0FBSUgsK0RBQStEO0FBQy9ELE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUNyQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRTtJQUN0QixRQUFRLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRTtJQUNwQixXQUFXLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRTtJQUN2QixLQUFLLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFB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LGlFQUFpRTtBQUNqRSxNQUFNLHVCQUF1QixHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDdkMsT0FBTyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDcEIsT0FBTyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUU7Q0FDckIsQ0FBQyxDQUFBO0FBSUYsOERBQThEO0FBQzlELE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUNwQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUNqQywyQkFBMkIsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ25ELDRCQUE0QixFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUU7Q0FDckQsQ0FBQyxDQUFBO0FBSUYsaUVBQWlFO0FBQ2pFLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDdkMsa0JBQWtCLEVBQUUsd0JBQXdCO0lBQzVDLGFBQWEsRUFBRSxtQkFBbUI7SUFDbEMsWUFBWSxFQUFFLGtCQUFrQjtJQUNoQyxVQUFVLEVBQUUsZ0JBQWdCO0lBQzVCLGlCQUFpQixFQUFFLHVCQUF1QjtJQUMxQyxjQUFjLEVBQUUsb0JBQW9CO0lBQ3BDLHlCQUF5QixFQUFFLCtCQUErQjtJQUMxRCw0QkFBNEIsRUFBRSxrQ0FBa0M7Q0FDakUsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgeiB9IGZyb20gJ3pvZCc7XG5pbXBvcnQgeyBSZWNvcmQgfSBmcm9tIFwiQHNpbmVxdWEvY29yZS93ZWItc2VydmljZXNcIjtcbmltcG9ydCB7IFF1ZXJ5IH0gZnJvbSAnQHNpbmVxdWEvY29yZS9hcHAtdXRpbHMnO1xuXG4vKipcbiAqIEluZGl2aWR1YWwgbWVzc2FnZSBzZW50ICYgcmV0dXJuZWQgYnkgdGhlIENoYXRHUFQgQVBJLlxuICogSWYgdGhpcyBtZXNzYWdlIGlzIGFuIGF0dGFjaG1lbnQsIHdlIGF0dGFjaCB0aGUgbWluaW1hbFxuICogaW5mb3JtYXRpb24gbmVlZGVkIHRvIHJlY29uc3RydWN0IHRoaXMgYXR0YWNobWVudCAoUmF3QXR0YWNobWVudClcbiAqIGFzIHdlbGwgYXMgdGhlIHJlZmVyZW5jZSBpZCBjb21wdXRlZCBhdCB0aGUgbW9tZW50IG9mIHNlbmRpbmdcbiAqIHRoZSBhdHRhY2htZW50IHRvIHRoZSBBUEkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmF3TWVzc2FnZSB7XG4gIHJvbGU6IHN0cmluZztcbiAgY29udGVudDogc3RyaW5nO1xuICBtZXNzYWdlVHlwZT86ICdDSEFSVCcgfCAnTUFSS0RPV04nXG4gIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiB7XG4gICAgW2tleTogc3RyaW5nXTogYW55XG4gIH07XG59XG5cbi8qKlxuICogQSBjaGF0IG1lc3NhZ2UgdGhhdCBoYXMgYmVlbiBwcm9jZXNzZWQgdG8gaW5jbHVkZSB0aGUgbWFya2Rvd24tZm9ybWF0dGVkXG4gKiBjb250ZW50IGZvciBkaXNwbGF5LCBhcyB3ZWxsIGFzIGRldGFpbGVkIGF0dGFjaG1lbnQgZGF0YSwgYW5kIG9wdGlvbmFsbHlcbiAqIGEgbGlzdCBvZiB0aGUgcmVmZXJlbmNlcyBleHRyYWN0ZWQgZnJvbSB0aGF0IG1lc3NhZ2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDaGF0TWVzc2FnZSBleHRlbmRzIFJhd01lc3NhZ2Uge1xuICBhZGRpdGlvbmFsUHJvcGVydGllczoge1xuICAgIGRpc3BsYXk/OiBib29sZWFuO1xuICAgICRwcm9ncmVzcz86IENoYXRQcm9ncmVzc1tdO1xuICAgICRhdHRhY2htZW50PzogQ2hhdENvbnRleHRBdHRhY2htZW50W107XG4gICAgJHN1Z2dlc3RlZEFjdGlvbj86IFN1Z2dlc3RlZEFjdGlvbltdO1xuICAgICRkZWJ1Zz86IERlYnVnTWVzc2FnZVtdO1xuICAgIGZvcmNlZFdvcmtmbG93Pzogc3RyaW5nO1xuICAgIHF1ZXJ5PzogUXVlcnk7XG4gICAgaXNVc2VySW5wdXQ/OiBib29sZWFuO1xuICAgIHVzYWdlTWV0cmljcz86IENoYXRVc2FnZU1ldHJpY3M7XG4gICAgYWRkaXRpb25hbFdvcmtmbG93UHJvcGVydGllcz86IGFueTtcbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2hhdFByb2dyZXNzIHtcbiAgICB0aXRsZTogc3RyaW5nO1xuICAgIGNvbnRlbnQ/OiBzdHJpbmc7XG4gICAgZG9uZT86IGJvb2xlYW47XG4gICAgdGltZT86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSYXdBdHRhY2htZW50IHtcbiAgLyoqIFR5cGUgb2YgdGhlIGF0dGFjaG1lbnQgKi9cbiAgdHlwZTogc3RyaW5nO1xuICAvKiogUmVjb3JkIGlkIGZyb20gd2hpY2ggdGhpcyBhdHRhY2htZW50IGlzIHRha2VuICovXG4gIHJlY29yZElkOiBzdHJpbmc7XG4gIC8qKiBSZWNvcmQgZnJvbSB3aGljaCB0aGlzIHRoaXMgYXR0YWNobWVudCBpcyB0YWtlbiAqL1xuICByZWNvcmQ6IFJlY29yZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEb2N1bWVudFBhcnQge1xuICBwYXJ0SWQ6IG51bWJlcjtcbiAgb2Zmc2V0OiBudW1iZXI7XG4gIGxlbmd0aDogbnVtYmVyO1xuICB0ZXh0OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2hhdENvbnRleHRBdHRhY2htZW50IGV4dGVuZHMgUmF3QXR0YWNobWVudCB7XG4gIC8qKiBUeXBlIG9mIHRoZSBhdHRhY2htZW50ICovXG4gIHR5cGU6IFwiQ29udGV4dFwiO1xuICAvKiogUmFuayBvZiB0aGUgYXR0YWNobWVudCBpbiB0aGUgY29udGV4dCBtZXNzYWdlICovXG4gIGNvbnRleHRJZDogbnVtYmVyO1xuICAvKiogUGFydHMgb2YgdGhlIHJlY29yZCB0aGF0IHRoZSBhc3Npc3RhbnQgdXNlcyB0byBhbnN3ZXIgKi9cbiAgcGFydHM6IERvY3VtZW50UGFydFtdO1xuICAvKiogVGhlIHNwZWNpZmljIGlkIHVzZWQgb2YgdGhlIHJlZmVyZW5jZWQgcGFydCAqL1xuICAkcGFydElkPzogbnVtYmVyO1xufVxuXG4vKipcbiAqIFJhdyByZXNwb25zZSBvZiB0aGUgY2hhdCBBUElcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSYXdSZXNwb25zZSB7XG4gIGhpc3Rvcnk6IFJhd01lc3NhZ2VbXTtcbiAgZXhlY3V0aW9uVGltZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIEVucmljaGVkIHJlc3BvbnNlIG9mIHRoZSBjaGF0IEFQSVxuICovXG5leHBvcnQgaW50ZXJmYWNlIENoYXRSZXNwb25zZSBleHRlbmRzIFJhd1Jlc3BvbnNle1xuICBoaXN0b3J5OiBDaGF0TWVzc2FnZVtdO1xufVxuXG4vKipcbiAqIFJlc3BvbnNlIG9mIHRoZSBMaXN0TW9kZWxzIEFQSVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdsbG1Nb2RlbERlc2NyaXB0aW9uIHtcbiAgcHJvdmlkZXI6IHN0cmluZztcbiAgZGlzcGxheU5hbWU6IHN0cmluZztcbiAgc2VydmljZUlkOiBzdHJpbmc7XG4gIG1vZGVsSWQ6IHN0cmluZztcbiAgZW5hYmxlOiBib29sZWFuO1xuICBtYXhHZW5lcmF0aW9uU2l6ZTogbnVtYmVyO1xuICBjb250ZXh0V2luZG93U2l6ZTogbnVtYmVyO1xufVxuXG4vKipcbiAqIFJlc3BvbnNlIG9mIHRoZSBMaXN0RnVuY3Rpb25zIEFQSVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdsbG1GdW5jdGlvbiB7XG4gIGZ1bmN0aW9uTmFtZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBlbmFibGVkOiBib29sZWFuO1xuICBwYXJhbWV0ZXJzOiBHbGxtRnVuY3Rpb25QYXJhbWV0ZXJbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHbGxtRnVuY3Rpb25QYXJhbWV0ZXIge1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBpc1JlcXVpcmVkOiBib29sZWFuO1xuICBuYW1lOiBzdHJpbmc7XG4gIHR5cGU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBNaW5pbWFsIHJlcHJlc2VudGF0aW9uIG9mIGEgc2F2ZWQgY2hhdFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNhdmVkQ2hhdCB7XG4gIGlkOiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIG1vZGlmaWVkVVRDOiBzdHJpbmc7XG59XG5cbi8qKlxuICogRGF0YSBzdHJ1Y3R1cmUgc2F2ZWQgdG8gcmVjb25zdHJ1Y3QgYSBzYXZlZCBjaGF0IGNvbnZlcnNhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNhdmVkQ2hhdEhpc3RvcnkgZXh0ZW5kcyBTYXZlZENoYXR7XG4gIGhpc3Rvcnk6IENoYXRNZXNzYWdlW107XG59XG5cbi8vIERlZmluZSB0aGUgWm9kIHJlcHJlc2VudGF0aW9uIGZvciB0aGUgY29ubmVjdGlvblNldHRpbmdzIG9iamVjdFxuZXhwb3J0IGNvbnN0IGNvbm5lY3Rpb25TZXR0aW5nc1NjaGVtYSA9IHoub2JqZWN0KHtcbiAgcmVzdEVuZHBvaW50OiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHdlYnNvY2tldEVuZHBvaW50OiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHNpZ25hbFJUcmFuc3BvcnQ6IHouZW51bShbXCJXZWJTb2NrZXRzXCIsIFwiU2VydmVyU2VudEV2ZW50c1wiLCBcIkxvbmdQb2xsaW5nXCIsIFwiTm9uZVwiXSksXG4gIHNpZ25hbFJMb2dMZXZlbDogei5lbnVtKFtcIkNyaXRpY2FsXCIsIFwiRGVidWdcIiwgXCJFcnJvclwiLCBcIkluZm9ybWF0aW9uXCIsIFwiTm9uZVwiLCBcIlRyYWNlXCIsIFwiV2FybmluZ1wiXSlcbn0pLnJlZmluZShkYXRhID0+ICghIWRhdGEucmVzdEVuZHBvaW50IHx8ICEhZGF0YS53ZWJzb2NrZXRFbmRwb2ludCksIHtcbiAgbWVzc2FnZTogXCJCYXNlZCBvbiB0aGUgcHJvdmlkZWQgaW5wdXQoKSBwcm90b2NvbCAoJ1JFU1QnIG9yICdXRUJTT0NLRVQnKSB0byB0aGUgQ2hhdCBDb21wb25lbnQsIGVpdGhlciAncmVzdEVuZHBvaW50JyBvciAnd2Vic29ja2V0RW5kcG9pbnQnIHByb3BlcnR5IHNob3VsZCBiZSBwcm92aWRlZCBpbiB0aGUgJ2dsb2JhbFNldHRpbmdzJyBvZiB0aGUgYXNzaXN0YW50IGluc3RhbmNlLlwiLFxufSk7XG4vLyBEZWZpbmUgdGhlIENvbm5lY3Rpb25TZXR0aW5ncyBpbnRlcmZhY2VcbmV4cG9ydCB0eXBlIENvbm5lY3Rpb25TZXR0aW5ncyA9IHouaW5mZXI8dHlwZW9mIGNvbm5lY3Rpb25TZXR0aW5nc1NjaGVtYT47XG5cbi8vIERlZmluZSB0aGUgWm9kIHJlcHJlc2VudGF0aW9uIGZvciB0aGUgc2VydmljZVNldHRpbmdzIG9iamVjdFxuY29uc3Qgc2VydmljZVNldHRpbmdzU2NoZW1hID0gei5vYmplY3Qoe1xuICBzZXJ2aWNlX2lkOiB6LnN0cmluZygpLFxuICBtb2RlbF9pZDogei5zdHJpbmcoKSxcbiAgdGVtcGVyYXR1cmU6IHoubnVtYmVyKCksXG4gIHRvcF9wOiB6Lm51bWJlcigpLFxuICBtYXhfdG9rZW5zOiB6Lm51bWJlcigpXG59KTtcbi8vIERlZmluZSB0aGUgU2VydmljZVNldHRpbmdzIGludGVyZmFjZVxuZXhwb3J0IGludGVyZmFjZSBTZXJ2aWNlU2V0dGluZ3MgZXh0ZW5kcyB6LmluZmVyPHR5cGVvZiBzZXJ2aWNlU2V0dGluZ3NTY2hlbWE+IHt9XG5cbi8vIERlZmluZSB0aGUgWm9kIHJlcHJlc2VudGF0aW9uIGZvciB0aGUgYWRkaXRpb25hbFNlcnZpY2VTZXR0aW5ncyBvYmplY3RcbmNvbnN0IGFkZGl0aW9uYWxTZXJ2aWNlU2V0dGluZ3NTY2hlbWEgPSB6Lm9iamVjdCh7fSk7XG4vLyBEZWZpbmUgdGhlIEFkZGl0aW9uYWxTZXJ2aWNlU2V0dGluZ3MgaW50ZXJmYWNlXG5leHBvcnQgaW50ZXJmYWNlIEFkZGl0aW9uYWxTZXJ2aWNlU2V0dGluZ3MgZXh0ZW5kcyB6LmluZmVyPHR5cGVvZiBhZGRpdGlvbmFsU2VydmljZVNldHRpbmdzU2NoZW1hPiB7fVxuXG4vLyBEZWZpbmUgdGhlIFpvZCByZXByZXNlbnRhdGlvbiBmb3IgdGhlIGFkZGl0aW9uYWxXb3JrZmxvd1Byb3BlcnRpZXMgb2JqZWN0XG5jb25zdCBhZGRpdGlvbmFsV29ya2Zsb3dQcm9wZXJ0aWVzU2NoZW1hID0gei5vYmplY3Qoe30pO1xuLy8gRGVmaW5lIHRoZSBhZGRpdGlvbmFsV29ya2Zsb3dQcm9wZXJ0aWVzIGludGVyZmFjZVxuZXhwb3J0IGludGVyZmFjZSBhZGRpdGlvbmFsV29ya2Zsb3dQcm9wZXJ0aWVzIGV4dGVuZHMgei5pbmZlcjx0eXBlb2YgYWRkaXRpb25hbFdvcmtmbG93UHJvcGVydGllc1NjaGVtYT4ge31cblxuLy8gRGVmaW5lIHRoZSBab2QgcmVwcmVzZW50YXRpb24gZm9yIHRoZSB1aVNldHRpbmdzIG9iamVjdFxuY29uc3QgdWlTZXR0aW5nc1NjaGVtYSA9IHoub2JqZWN0KHtcbiAgZGlzcGxheTogei5ib29sZWFuKCksXG4gIHNlcnZpY2VzTW9kZWxzOiB6LmJvb2xlYW4oKSxcbiAgZnVuY3Rpb25zOiB6LmJvb2xlYW4oKSxcbiAgdGVtcGVyYXR1cmU6IHouYm9vbGVhbigpLFxuICB0b3BfcDogei5ib29sZWFuKCksXG4gIG1heF90b2tlbnM6IHouYm9vbGVhbigpLFxuICBkZWJ1Zzogei5ib29sZWFuKCksXG4gIGRpc3BsYXlTeXN0ZW1Qcm9tcHQ6IHouYm9vbGVhbigpLFxuICBkaXNwbGF5VXNlclByb21wdDogei5ib29sZWFuKClcbn0pO1xuLy8gRGVmaW5lIHRoZSBVaVNldHRpbmdzIGludGVyZmFjZVxuZXhwb3J0IGludGVyZmFjZSBVaVNldHRpbmdzIGV4dGVuZHMgei5pbmZlcjx0eXBlb2YgdWlTZXR0aW5nc1NjaGVtYT4ge31cblxuLy8gRGVmaW5lIHRoZSBab2QgcmVwcmVzZW50YXRpb24gZm9yIHRoZSBkZWZhdWx0VmFsdWVzIG9iamVjdFxuY29uc3QgZGVmYXVsdFZhbHVlc1NjaGVtYSA9IHoub2JqZWN0KHtcbiAgc2VydmljZV9pZDogei5zdHJpbmcoKSxcbiAgbW9kZWxfaWQ6IHouc3RyaW5nKCksXG4gIGZ1bmN0aW9uczogei5hcnJheShcbiAgICB6Lm9iamVjdCh7XG4gICAgICBuYW1lOiB6LnN0cmluZygpLFxuICAgICAgZW5hYmxlZDogei5ib29sZWFuKClcbiAgICB9KVxuICApLFxuICB0ZW1wZXJhdHVyZTogei5udW1iZXIoKSxcbiAgdG9wX3A6IHoubnVtYmVyKCksXG4gIG1heF90b2tlbnM6IHoubnVtYmVyKCksXG4gIGRlYnVnOiB6LmJvb2xlYW4oKSxcbiAgc3lzdGVtUHJvbXB0OiB6LnN0cmluZygpLFxuICB1c2VyUHJvbXB0OiB6LnN0cmluZygpXG59KTtcbi8vIERlZmluZSB0aGUgRGVmYXVsdFZhbHVlcyBpbnRlcmZhY2VcbmV4cG9ydCBpbnRlcmZhY2UgRGVmYXVsdFZhbHVlcyBleHRlbmRzIHouaW5mZXI8dHlwZW9mIGRlZmF1bHRWYWx1ZXNTY2hlbWE+IHt9XG5cbi8vIERlZmluZSB0aGUgWm9kIHJlcHJlc2VudGF0aW9uIGZvciB0aGUgbW9kZVNldHRpbmdzIG9iamVjdFxuY29uc3QgaW5pdGlhbGl6YXRpb25TY2hlbWEgPSB6Lm9iamVjdCh7XG4gIGV2ZW50OiB6LmVudW0oWydRdWVyeScsICdQcm9tcHQnXSksXG4gIGZvcmNlZFdvcmtmbG93OiB6LnN0cmluZygpLm9wdGlvbmFsKCksIC8vIE9wdGlvbmFsIGZvciBldmVudCAnUHJvbXB0J1xuICBkaXNwbGF5VXNlclF1ZXJ5OiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLCAvLyBPcHRpb25hbCBmb3IgZXZlbnQgJ1Byb21wdCdcbn0pLnJlZmluZShkYXRhID0+ICgoZGF0YS5ldmVudCA9PT0gXCJRdWVyeVwiKSA/ICghIWRhdGEuZm9yY2VkV29ya2Zsb3cgJiYgZGF0YS5kaXNwbGF5VXNlclF1ZXJ5ICE9PSB1bmRlZmluZWQgJiYgZGF0YS5kaXNwbGF5VXNlclF1ZXJ5ICE9PSBudWxsKSA6IHRydWUpLCB7XG4gIG1lc3NhZ2U6IFwiVGhlICdmb3JjZWRXb3JrZmxvdycgYW5kICdkaXNwbGF5VXNlclF1ZXJ5JyBwcm9wZXJ0aWVzIG11c3QgYmUgcHJvdmlkZWQgd2hlbiB0aGUgaW5pdGlhbGl6YXRpb24ncyBldmVudCBpcyAnUXVlcnknLlwiLFxufSk7XG5jb25zdCBtb2RlU2V0dGluZ3NTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIGVuYWJsZWRVc2VySW5wdXQ6IHouYm9vbGVhbigpLFxuICBkaXNwbGF5VXNlclByb21wdDogei5ib29sZWFuKCksXG4gIHNlbmRVc2VyUHJvbXB0OiB6LmJvb2xlYW4oKSxcbiAgaW5pdGlhbGl6YXRpb246IGluaXRpYWxpemF0aW9uU2NoZW1hXG59KTtcbi8vIERlZmluZSB0aGUgTW9kZVNldHRpbmdzIGludGVyZmFjZVxuZXhwb3J0IGludGVyZmFjZSBNb2RlU2V0dGluZ3MgZXh0ZW5kcyB6LmluZmVyPHR5cGVvZiBtb2RlU2V0dGluZ3NTY2hlbWE+IHt9XG5cbi8vIERlZmluZSB0aGUgWm9kIHJlcHJlc2VudGF0aW9uIGZvciB0aGUgc2F2ZWRDaGF0U2V0dGluZ3Mgb2JqZWN0XG5jb25zdCBzYXZlZENoYXRTZXR0aW5nc1NjaGVtYSA9IHoub2JqZWN0KHtcbiAgZW5hYmxlZDogei5ib29sZWFuKCksXG4gIGRpc3BsYXk6IHouYm9vbGVhbigpXG59KVxuLy8gRGVmaW5lIHRoZSBTYXZlZENoYXRTZXR0aW5ncyBpbnRlcmZhY2VcbmV4cG9ydCBpbnRlcmZhY2UgU2F2ZWRDaGF0U2V0dGluZ3MgZXh0ZW5kcyB6LmluZmVyPHR5cGVvZiBzYXZlZENoYXRTZXR0aW5nc1NjaGVtYT4ge31cblxuLy8gRGVmaW5lIHRoZSBab2QgcmVwcmVzZW50YXRpb24gZm9yIHRoZSBnbG9iYWxTZXR0aW5ncyBvYmplY3RcbmNvbnN0IGdsb2JhbFNldHRpbmdzU2NoZW1hID0gei5vYmplY3Qoe1xuICBkaXNjbGFpbWVyOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGRpc3BsYXlVc2VyUXVvdGFDb25zdW1wdGlvbjogei5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgZGlzcGxheUNoYXRUb2tlbnNDb25zdW1wdGlvbjogei5ib29sZWFuKCkub3B0aW9uYWwoKVxufSlcbi8vIERlZmluZSB0aGUgU2F2ZWRDaGF0U2V0dGluZ3MgaW50ZXJmYWNlXG5leHBvcnQgaW50ZXJmYWNlIFNhdmVkQ2hhdFNldHRpbmdzIGV4dGVuZHMgei5pbmZlcjx0eXBlb2Ygc2F2ZWRDaGF0U2V0dGluZ3NTY2hlbWE+IHt9XG5cbi8vIERlZmluZSB0aGUgWm9kIHJlcHJlc2VudGF0aW9uIGZvciB0aGUgZW50aXJlIENoYXRDb25maWcgb2JqZWN0XG5leHBvcnQgY29uc3QgY2hhdENvbmZpZ1NjaGVtYSA9IHoub2JqZWN0KHtcbiAgY29ubmVjdGlvblNldHRpbmdzOiBjb25uZWN0aW9uU2V0dGluZ3NTY2hlbWEsXG4gIGRlZmF1bHRWYWx1ZXM6IGRlZmF1bHRWYWx1ZXNTY2hlbWEsXG4gIG1vZGVTZXR0aW5nczogbW9kZVNldHRpbmdzU2NoZW1hLFxuICB1aVNldHRpbmdzOiB1aVNldHRpbmdzU2NoZW1hLFxuICBzYXZlZENoYXRTZXR0aW5nczogc2F2ZWRDaGF0U2V0dGluZ3NTY2hlbWEsXG4gIGdsb2JhbFNldHRpbmdzOiBnbG9iYWxTZXR0aW5nc1NjaGVtYSxcbiAgYWRkaXRpb25hbFNlcnZpY2VTZXR0aW5nczogYWRkaXRpb25hbFNlcnZpY2VTZXR0aW5nc1NjaGVtYSxcbiAgYWRkaXRpb25hbFdvcmtmbG93UHJvcGVydGllczogYWRkaXRpb25hbFdvcmtmbG93UHJvcGVydGllc1NjaGVtYVxufSk7XG4vLyBEZWZpbmUgdGhlIENoYXRDb25maWcgaW50ZXJmYWNlXG5leHBvcnQgaW50ZXJmYWNlIENoYXRDb25maWcgZXh0ZW5kcyB6LmluZmVyPHR5cGVvZiBjaGF0Q29uZmlnU2NoZW1hPiB7fVxuXG5leHBvcnQgaW50ZXJmYWNlIENoYXRQYXlsb2FkIHtcbiAgZGVidWc6IGJvb2xlYW47XG4gIGZ1bmN0aW9uczogc3RyaW5nW107XG4gIGhpc3Rvcnk6IENoYXRNZXNzYWdlW107XG4gIHNlcnZpY2VTZXR0aW5nczogU2VydmljZVNldHRpbmdzO1xuICBhcHBRdWVyeToge1xuICAgIGFwcDogc3RyaW5nO1xuICAgIHF1ZXJ5OiBRdWVyeSB8IHVuZGVmaW5lZDtcbiAgICB0YXJnZXRVcmw/OiBzdHJpbmc7XG4gICAgYWNjZXNzVG9rZW4/OiBzdHJpbmc7XG4gIH07XG4gIGluc3RhbmNlSWQ/OiBzdHJpbmc7XG4gIHNhdmVkQ2hhdElkPzogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBBY3Rpb25NZXNzYWdlID0ge1xuICBndWlkOiBzdHJpbmc7XG4gIGRpc3BsYXlOYW1lPzogc3RyaW5nXG4gIGRpc3BsYXlWYWx1ZT86IHN0cmluZztcbiAgZXhlY3V0aW9uVGltZT86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUZXh0Q2h1bmtzT3B0aW9ucyB7XG4gIGV4dGVuZE1vZGU/OiAnTm9uZScgfCAnU2VudGVuY2UnIHwgJ0NoYXJzJztcbiAgZXh0ZW5kU2NvcGU/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUXVvdGEge1xuICBsYXN0UmVxdWVzdDogc3RyaW5nO1xuICBwcm9tcHRUb2tlbkNvdW50OiBudW1iZXI7XG4gIGNvbXBsZXRpb25Ub2tlbkNvdW50OiBudW1iZXI7XG4gIHBlcmlvZFRva2VuczogbnVtYmVyO1xuICByZXNldEhvdXJzOiBudW1iZXI7XG4gIHRva2VuQ291bnQ6IG51bWJlcjtcbiAgbmV4dFJlc2V0OiBzdHJpbmc7XG4gIGxhc3RSZXNldFVUQzogc3RyaW5nO1xuICBuZXh0UmVzZXRVVEM6IHN0cmluZztcbiAgbWF4UXVvdGFSZWFjaGVkOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN1Z2dlc3RlZEFjdGlvbiB7XG4gIGNvbnRlbnQ6IHN0cmluZztcbiAgdHlwZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEluaXRDaGF0IHtcbiAgbWVzc2FnZXM6IFJhd01lc3NhZ2VbXTtcbn1cblxuLyoqXG4gKiBMaXN0IG9mIGV2ZW50cyBkYXRhIHRoYXQgY2FuIGJlIGVtaXR0ZWQgYnkgdGhlIHdlYnNvY2tldCBjaGF0IGVuZHBvaW50XG4gKi9cbmV4cG9ydCB0eXBlIFN1Z2dlc3RlZEFjdGlvbnNFdmVudCA9IHsgc3VnZ2VzdGVkQWN0aW9uczogU3VnZ2VzdGVkQWN0aW9uW10gfTtcbmV4cG9ydCB0eXBlIFF1b3RhRXZlbnQgPSB7IHF1b3RhOiBRdW90YSB9O1xuZXhwb3J0IHR5cGUgTWVzc2FnZUV2ZW50ID0gc3RyaW5nO1xuZXhwb3J0IHR5cGUgQ29udGV4dE1lc3NhZ2VFdmVudCA9IHsgY29udGVudDogc3RyaW5nOyBtZXRhZGF0YTogQ2hhdENvbnRleHRBdHRhY2htZW50IH07XG5leHBvcnQgdHlwZSBFcnJvckV2ZW50ID0gc3RyaW5nO1xuZXhwb3J0IHR5cGUgQWN0aW9uU3RhcnRFdmVudCA9IHsgZ3VpZDogc3RyaW5nOyBkaXNwbGF5TmFtZTogc3RyaW5nIH07XG5leHBvcnQgdHlwZSBBY3Rpb25SZXN1bHRFdmVudCA9IHsgZ3VpZDogc3RyaW5nOyBkaXNwbGF5VmFsdWU6IHN0cmluZyB9O1xuZXhwb3J0IHR5cGUgQWN0aW9uU3RvcEV2ZW50ID0geyBndWlkOiBzdHJpbmc7IGV4ZWN1dGlvblRpbWU6IG51bWJlciB9O1xuZXhwb3J0IHR5cGUgSGlzdG9yeUV2ZW50ID0geyBoaXN0b3J5OiBSYXdNZXNzYWdlW107IGV4ZWN1dGlvblRpbWU6IHN0cmluZyB9O1xuZXhwb3J0IHR5cGUgRGVidWdNZXNzYWdlRXZlbnQgPSBEZWJ1Z01lc3NhZ2U7XG5cbi8qKlxuICogRGF0YSBlbWl0dGVkIGJ5IHRoZSBodHRwIGNoYXQgZW5kcG9pbnRcbiAqL1xuZXhwb3J0IHR5cGUgSHR0cENoYXRSZXNwb25zZSA9IHtcbiAgcXVvdGE6IFF1b3RhO1xuICBzdWdnZXN0ZWRBY3Rpb25zOiBTdWdnZXN0ZWRBY3Rpb25bXTtcbiAgZGVidWc6IGFueTtcbiAgY29udGV4dDogeyBjb250ZW50OiBzdHJpbmc7IGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiBDaGF0Q29udGV4dEF0dGFjaG1lbnQgfVtdO1xuICBhY3Rpb25zOiBBY3Rpb25NZXNzYWdlW107XG4gIGhpc3Rvcnk6IFJhd01lc3NhZ2VbXTtcbiAgZXhlY3V0aW9uVGltZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRva2VuQ29uc3VtcHRpb24ge1xuICBwZXJjZW50YWdlOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXNlclRva2VuQ29uc3VtcHRpb24gZXh0ZW5kcyBUb2tlbkNvbnN1bXB0aW9uIHtcbiAgbmV4dFJlc2V0RGF0ZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENoYXRVc2FnZU1ldHJpY3Mge1xuICB0b3RhbFRva2VuQ291bnQ6IG51bWJlcjtcbiAgcHJvbXB0VG9rZW5Db3VudDogbnVtYmVyO1xuICBjb21wbGV0aW9uVG9rZW5Db3VudDogbnVtYmVyO1xuICB0b2tlbml6ZXJUeXBlOiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBLdk9iamVjdCB7XG4gIGRhdGE6IHtcbiAgICBrZXk6IHN0cmluZztcbiAgICB2YWx1ZTogYW55OyAvLyBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZCB8IHsgW2tleTogc3RyaW5nXTogYW55IH07XG4gIH07XG4gIHR5cGU6ICdLVic7XG4gIGlzRXJyb3I6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGlzdE9iamVjdCB7XG4gIG5hbWU6IHN0cmluZztcbiAgdHlwZTogJ0xJU1QnO1xuICBpc0Vycm9yOiBib29sZWFuO1xuICBpdGVtczogKEt2T2JqZWN0IHwgTGlzdE9iamVjdClbXTtcbiAgZXhwYW5kZWQ6IGJvb2xlYW47XG59XG5cbmV4cG9ydCB0eXBlIERlYnVnTWVzc2FnZSA9IEt2T2JqZWN0IHwgTGlzdE9iamVjdDtcblxuXG5leHBvcnQgdHlwZSBNZXNzYWdlSGFuZGxlcjxUPiA9IHtcbiAgaGFuZGxlcjogKGRhdGE6IFQpID0+IHZvaWQ7XG4gIGlzR2xvYmFsSGFuZGxlcjogYm9vbGVhbjtcbn07XG4iXX0=
|