@sinequa/assistant 3.5.1 → 3.5.2
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/esm2020/chat/chat-message/chat-message.component.mjs +7 -5
- package/fesm2015/sinequa-assistant-chat.mjs +7 -5
- package/fesm2015/sinequa-assistant-chat.mjs.map +1 -1
- package/fesm2020/sinequa-assistant-chat.mjs +6 -4
- package/fesm2020/sinequa-assistant-chat.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -115,10 +115,12 @@ export class ChatMessageComponent {
|
|
|
115
115
|
for (let m of this.conversation) {
|
|
116
116
|
if (m.additionalProperties.$attachment) {
|
|
117
117
|
for (const attachment of m.additionalProperties.$attachment) {
|
|
118
|
-
this.referenceMap.set('' + attachment.contextId, { ...attachment, $partId: attachment.parts?.[0]
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
118
|
+
this.referenceMap.set('' + attachment.contextId, { ...attachment, $partId: attachment.parts?.[0]?.partId });
|
|
119
|
+
if (!!attachment.parts && attachment.parts.length > 0) {
|
|
120
|
+
for (let i = 0; i < attachment.parts.length; i++) {
|
|
121
|
+
const refId = `${attachment.contextId}.${attachment.parts[i].partId}`;
|
|
122
|
+
this.referenceMap.set(refId, { ...attachment, $partId: attachment.parts?.[i]?.partId });
|
|
123
|
+
}
|
|
122
124
|
}
|
|
123
125
|
}
|
|
124
126
|
}
|
|
@@ -246,4 +248,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
|
|
|
246
248
|
}], debug: [{
|
|
247
249
|
type: Output
|
|
248
250
|
}] } });
|
|
249
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1tZXNzYWdlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fzc2lzdGFudC9jaGF0L2NoYXQtbWVzc2FnZS9jaGF0LW1lc3NhZ2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXNzaXN0YW50L2NoYXQvY2hhdC1tZXNzYWdlL2NoYXQtbWVzc2FnZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUErRCxNQUFNLGVBQWUsQ0FBQztBQUt4SyxPQUFPLEVBQUUsT0FBTyxFQUFhLE1BQU0sU0FBUyxDQUFDO0FBQzdDLE9BQU8sV0FBVyxNQUFNLGNBQWMsQ0FBQztBQUN2QyxPQUFPLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUd6RCxPQUFPLEVBQWEsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbkUsT0FBTyxTQUFTLE1BQU0sWUFBWSxDQUFDO0FBQ25DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFlBQVksQ0FBQztBQUMxQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUN2RixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUVwRixPQUFPLGlDQUFpQyxDQUFDO0FBQ3pDLE9BQU8sNkNBQTZDLENBQUM7QUFDckQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7Ozs7OztBQWVqRSxNQUFNLE9BQU8sb0JBQW9CO0lBa0MvQixZQUNT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S0FBSztzQkFBZCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMsIENoYW5nZURldGVjdG9yUmVmLCBBZnRlclZpZXdJbml0LCBFbGVtZW50UmVmIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IFByaW5jaXBhbFdlYlNlcnZpY2UgfSBmcm9tIFwiQHNpbmVxdWEvY29yZS93ZWItc2VydmljZXNcIjtcbmltcG9ydCB7IFNlYXJjaFNlcnZpY2UgfSBmcm9tIFwiQHNpbmVxdWEvY29tcG9uZW50cy9zZWFyY2hcIjtcbmltcG9ydCB7IENoYXRDb250ZXh0QXR0YWNobWVudCwgQ2hhdE1lc3NhZ2UsIFN1Z2dlc3RlZEFjdGlvbiB9IGZyb20gXCIuLi90eXBlc1wiO1xuXG5pbXBvcnQgeyB1bmlmaWVkLCBQcm9jZXNzb3IgfSBmcm9tIFwidW5pZmllZFwiO1xuaW1wb3J0IHJlbWFya1BhcnNlIGZyb20gXCJyZW1hcmstcGFyc2VcIjtcbmltcG9ydCB7IHZpc2l0LCBDT05USU5VRSwgRVhJVCB9IGZyb20gXCJ1bmlzdC11dGlsLXZpc2l0XCI7XG5pbXBvcnQgeyBUZXh0LCBQYXJlbnQsIENvbnRlbnQgfSBmcm9tIFwibWRhc3RcIjtcbmltcG9ydCB7IE5vZGUgfSBmcm9tIFwidW5pc3RcIjtcbmltcG9ydCB7IFVJU2VydmljZSwgVXRpbHNNb2R1bGUgfSBmcm9tIFwiQHNpbmVxdWEvY29tcG9uZW50cy91dGlsc1wiO1xuaW1wb3J0IHJlbWFya0dmbSBmcm9tIFwicmVtYXJrLWdmbVwiO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHsgQ29sbGFwc2VNb2R1bGUgfSBmcm9tIFwiQHNpbmVxdWEvY29tcG9uZW50cy9jb2xsYXBzZVwiO1xuaW1wb3J0IHsgUmVtYXJrTW9kdWxlIH0gZnJvbSBcIm5neC1yZW1hcmtcIjtcbmltcG9ydCB7IEluaXRpYWxzQXZhdGFyQ29tcG9uZW50IH0gZnJvbSBcIi4uL2luaXRpYWxzLWF2YXRhci9pbml0aWFscy1hdmF0YXIuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBDaGF0UmVmZXJlbmNlQ29tcG9uZW50IH0gZnJvbSBcIi4uL2NoYXQtcmVmZXJlbmNlL2NoYXQtcmVmZXJlbmNlLmNvbXBvbmVudFwiO1xuXG5pbXBvcnQgXCJwcmlzbWpzLWNvbXBvbmVudHMtaW1wb3J0ZXIvZXNtXCI7XG5pbXBvcnQgJ3ByaXNtanMvcGx1Z2lucy9hdXRvbG9hZGVyL3ByaXNtLWF1dG9sb2FkZXInO1xuaW1wb3J0IHsgQ2hhcnRDb21wb25lbnQgfSBmcm9tIFwiLi4vY2hhcnRzL2NoYXJ0L2NoYXJ0LmNvbXBvbmVudFwiO1xuXG5kZWNsYXJlIG1vZHVsZSBQcmlzbSB7XG4gIGZ1bmN0aW9uIGhpZ2hsaWdodEFsbFVuZGVyKGVsOiBIVE1MRWxlbWVudCk6IHZvaWQ7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJzcS1jaGF0LW1lc3NhZ2VcIixcbiAgdGVtcGxhdGVVcmw6IFwiLi9jaGF0LW1lc3NhZ2UuY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVVcmxzOiBbXCIuL2NoYXQtbWVzc2FnZS5jb21wb25lbnQuc2Nzc1wiXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFV0aWxzTW9kdWxlLCBDb2xsYXBzZU1vZHVsZSwgUmVtYXJrTW9kdWxlLFxuICAgIEluaXRpYWxzQXZhdGFyQ29tcG9uZW50LCBDaGF0UmVmZXJlbmNlQ29tcG9uZW50LCBDaGFydENvbXBvbmVudF1cbn0pXG5leHBvcnQgY2xhc3MgQ2hhdE1lc3NhZ2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQge1xuICBASW5wdXQoKSBtZXNzYWdlOiBDaGF0TWVzc2FnZTtcbiAgQElucHV0KCkgY29udmVyc2F0aW9uOiBDaGF0TWVzc2FnZVtdO1xuICBASW5wdXQoKSBzdWdnZXN0ZWRBY3Rpb25zOiBTdWdnZXN0ZWRBY3Rpb25bXSB8IHVuZGVmaW5lZDtcbiAgQElucHV0KCkgYXNzaXN0YW50TWVzc2FnZUljb246IHN0cmluZztcbiAgQElucHV0KCkgdXNlck1lc3NhZ2VJY29uOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHN0cmVhbWluZzogYm9vbGVhbjtcbiAgQElucHV0KCkgY2FuRWRpdDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBjYW5SZWdlbmVyYXRlOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGNhbkNvcHk6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgY2FuRGVidWc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgY2FuTGlrZTogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBjYW5EaXNsaWtlOiBib29sZWFuID0gZmFsc2U7XG4gIEBPdXRwdXQoKSBvcGVuRG9jdW1lbnQgPSBuZXcgRXZlbnRFbWl0dGVyPHtyZWZlcmVuY2U6IENoYXRDb250ZXh0QXR0YWNobWVudCwgcGFydElkPzogbnVtYmVyfT4oKTtcbiAgQE91dHB1dCgpIG9wZW5QcmV2aWV3ID0gbmV3IEV2ZW50RW1pdHRlcjx7cmVmZXJlbmNlOiBDaGF0Q29udGV4dEF0dGFjaG1lbnQsIHBhcnRJZD86IG51bWJlcn0+KCk7XG4gIEBPdXRwdXQoKSBzdWdnZXN0QWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjxTdWdnZXN0ZWRBY3Rpb24+KCk7XG4gIEBPdXRwdXQoKSBlZGl0ID0gbmV3IEV2ZW50RW1pdHRlcjxDaGF0TWVzc2FnZT4oKTtcbiAgQE91dHB1dCgpIGNvcHkgPSBuZXcgRXZlbnRFbWl0dGVyPENoYXRNZXNzYWdlPigpO1xuICBAT3V0cHV0KCkgcmVnZW5lcmF0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8Q2hhdE1lc3NhZ2U+KCk7XG4gIEBPdXRwdXQoKSBsaWtlID0gbmV3IEV2ZW50RW1pdHRlcjxDaGF0TWVzc2FnZT4oKTtcbiAgQE91dHB1dCgpIGRpc2xpa2UgPSBuZXcgRXZlbnRFbWl0dGVyPENoYXRNZXNzYWdlPigpO1xuICBAT3V0cHV0KCkgZGVidWcgPSBuZXcgRXZlbnRFbWl0dGVyPENoYXRNZXNzYWdlPigpO1xuXG4gIHByb2Nlc3NvcjogUHJvY2Vzc29yO1xuXG4gIHJlZmVyZW5jZXM6IHN0cmluZ1tdID0gW107XG4gIHJlZmVyZW5jZU1hcCA9IG5ldyBNYXA8c3RyaW5nLCBDaGF0Q29udGV4dEF0dGFjaG1lbnQ+KCk7XG4gIHNob3dSZWZlcmVuY2VzOiBib29sZWFuID0gdHJ1ZTtcbiAgY29sbGFwc2VQcm9ncmVzczogYm9vbGVhbjtcbiAgaWNvblNpemUgPSAyNDtcblxuICBsaWtlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBkaXNsaWtlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBzZWFyY2hTZXJ2aWNlOiBTZWFyY2hTZXJ2aWNlLFxuICAgIHB1YmxpYyB1aTogVUlTZXJ2aWNlLFxuICAgIHB1YmxpYyBwcmluY2lwYWxTZXJ2aWNlOiBQcmluY2lwYWxXZWJTZXJ2aWNlLFxuICAgIHB1YmxpYyBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHB1YmxpYyBlbDogRWxlbWVudFJlZlxuICApIHsgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5zdHJlYW1pbmcpIHtcbiAgICAgIHRoaXMuY29sbGFwc2VQcm9ncmVzcyA9ICF0aGlzLnN0cmVhbWluZztcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlcy5tZXNzYWdlICYmIHRoaXMubWVzc2FnZT8ucm9sZSA9PT0gXCJhc3Npc3RhbnRcIikge1xuICAgICAgdGhpcy5yZWZlcmVuY2VzID0gW107XG4gICAgICB0aGlzLnJlZmVyZW5jZU1hcC5jbGVhcigpO1xuICAgICAgZm9yIChsZXQgbSBvZiB0aGlzLmNvbnZlcnNhdGlvbikge1xuICAgICAgICBpZiAobS5hZGRpdGlvbmFsUHJvcGVydGllcy4kYXR0YWNobWVudCkge1xuICAgICAgICAgIGZvciAoY29uc3QgYXR0YWNobWVudCBvZiBtLmFkZGl0aW9uYWxQcm9wZXJ0aWVzLiRhdHRhY2htZW50KSB7XG4gICAgICAgICAgICB0aGlzLnJlZmVyZW5jZU1hcC5zZXQoJycgKyBhdHRhY2htZW50LmNvbnRleHRJZCwgeyAuLi5hdHRhY2htZW50LCAkcGFydElkOiBhdHRhY2htZW50LnBhcnRzPy5bMF0ucGFydElkIH0pO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhdHRhY2htZW50LnBhcnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHJlZklkID0gYCR7YXR0YWNobWVudC5jb250ZXh0SWR9LiR7YXR0YWNobWVudC5wYXJ0c1tpXS5wYXJ0SWR9YDtcbiAgICAgICAgICAgICAgdGhpcy5yZWZlcmVuY2VNYXAuc2V0KHJlZklkLCB7IC4uLmF0dGFjaG1lbnQsICRwYXJ0SWQ6IGF0dGFjaG1lbnQucGFydHNbaV0ucGFydElkIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmKG0uY29udGVudC5zdGFydHNXaXRoKFwiPGNoYXJ0anM+XCIpKXtcbiAgICAgICAgICBtLm1lc3NhZ2VUeXBlID0gXCJDSEFSVFwiO1xuICAgICAgICB9XG4gICAgICAgIGVsc2V7XG4gICAgICAgICAgbS5tZXNzYWdlVHlwZSA9IFwiTUFSS0RPV05cIjtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0aGlzLnByb2Nlc3NvciA9IHVuaWZpZWQoKVxuICAgICAgICAudXNlKHJlbWFya1BhcnNlKVxuICAgICAgICAudXNlKHJlbWFya0dmbSlcbiAgICAgICAgLnVzZSgoKSA9PiB0aGlzLnJlZmVyZW5jZVBsdWdpbik7XG5cbiAgICAgIGlmICh0aGlzLnN0cmVhbWluZykge1xuICAgICAgICB0aGlzLnByb2Nlc3NvciA9IHRoaXMucHJvY2Vzc29yLnVzZSgoKSA9PiB0aGlzLnBsYWNlaG9sZGVyUGx1Z2luKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgUHJpc20/LmhpZ2hsaWdodEFsbFVuZGVyPy4odGhpcy5lbC5uYXRpdmVFbGVtZW50KTtcbiAgfVxuXG4gIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICF0aGlzLnByaW5jaXBhbFNlcnZpY2UucHJpbmNpcGFsID8gJydcbiAgICAgIDogdGhpcy5wcmluY2lwYWxTZXJ2aWNlLnByaW5jaXBhbFsnZnVsbE5hbWUnXSBhcyBzdHJpbmcgfHwgdGhpcy5wcmluY2lwYWxTZXJ2aWNlLnByaW5jaXBhbC5uYW1lO1xuICB9XG5cbiAgZ2V0IGlzQWRtaW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucHJpbmNpcGFsU2VydmljZS5wcmluY2lwYWw/LmlzQWRtaW5pc3RyYXRvciB8fCBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIFVuaWZpZWQgcGx1Z2luIGxvb2tzIGEgdGV4dCBub2RlcyBhbmQgcmVwbGFjZXMgYW55IHJlZmVyZW5jZSBpbiB0aGVcbiAgICogZm9ybSBbMV0sIFsyLjNdLCBldGMuIHdpdGggY3VzdG9tIG5vZGVzIG9mIHR5cGUgXCJjaGF0LXJlZmVyZW5jZVwiLlxuICAgKi9cbiAgcmVmZXJlbmNlUGx1Z2luID0gKHRyZWU6IE5vZGUpID0+IHtcblxuICAgIGNvbnN0IHJlZmVyZW5jZXMgPSBuZXcgU2V0PG51bWJlcj4oKTtcblxuICAgIC8vIFZpc2l0IGFsbCB0ZXh0IG5vZGVzXG4gICAgdmlzaXQodHJlZSwgXCJ0ZXh0XCIsIChub2RlOiBUZXh0LCBpbmRleDogbnVtYmVyLCBwYXJlbnQ6IFBhcmVudCkgPT4ge1xuICAgICAgbGV0IHRleHQgPSBub2RlLnZhbHVlO1xuXG4gICAgICB0ZXh0ID0gdGhpcy5yZWZvcm1hdFJlZmVyZW5jZXModGV4dCk7XG4gICAgICBjb25zdCBtYXRjaGVzID0gdGhpcy5nZXRSZWZlcmVuY2VNYXRjaGVzKHRleHQpO1xuXG4gICAgICAvLyBRdWl0IGlmIG5vIHJlZmVyZW5jZXMgd2VyZSBmb3VuZFxuICAgICAgaWYgKG1hdGNoZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBDT05USU5VRTtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgbm9kZXM6IChDb250ZW50ICYgeyBlbmQ6IG51bWJlciB9KVtdID0gW107XG5cbiAgICAgIGZvciAobGV0IG1hdGNoIG9mIG1hdGNoZXMpIHtcbiAgICAgICAgY29uc3QgcmVmSWQgPSBtYXRjaFsxXS50cmltKCk7XG4gICAgICAgIGNvbnN0IFtyZWZdID0gcmVmSWQuc3BsaXQoXCIuXCIpO1xuICAgICAgICAvLyBXZSBmaW5kIGEgdmFsaWQgcmVmZXJlbmNlIGluIHRoZSB0ZXh0XG4gICAgICAgIGlmICghaXNOYU4oK3JlZikpIHtcbiAgICAgICAgICByZWZlcmVuY2VzLmFkZCgrcmVmKTsgLy8gQWRkIGl0IHRvIHRoZSBzZXQgb2YgdXNlZCByZWZlcmVuY2VzXG5cbiAgICAgICAgICAvLyBJZiBuZWVkZWQsIGluc2VydCBhIHRleHQgbm9kZSBiZWZvcmUgdGhlIHJlZmVyZW5jZVxuICAgICAgICAgIGNvbnN0IGN1cnJlbnQgPSBub2Rlcy5hdCgtMSkgPz8geyBlbmQ6IDAgfTtcbiAgICAgICAgICBpZiAobWF0Y2guaW5kZXghID4gY3VycmVudC5lbmQpIHtcbiAgICAgICAgICAgIG5vZGVzLnB1c2goeyB0eXBlOiBcInRleHRcIiwgdmFsdWU6IHRleHQuc3Vic3RyaW5nKGN1cnJlbnQuZW5kLCBtYXRjaC5pbmRleCEpLCBlbmQ6IG1hdGNoLmluZGV4ISB9KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBBZGQgYSBjdXN0b20gcmVmZXJlbmNlIG5vZGVcbiAgICAgICAgICBub2Rlcy5wdXNoKHsgdHlwZTogXCJjaGF0LXJlZmVyZW5jZVwiLCByZWZJZCwgZW5kOiBtYXRjaC5pbmRleCEgKyBtYXRjaFswXS5sZW5ndGggfSBhcyBhbnkpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIFF1aXQgaWYgbm8gcmVmZXJlbmNlcyB3ZXJlIGZvdW5kXG4gICAgICBpZiAobm9kZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBDT05USU5VRTtcbiAgICAgIH1cblxuICAgICAgaWYgKG5vZGVzLmF0KC0xKSEuZW5kIDwgdGV4dC5sZW5ndGgpIHtcbiAgICAgICAgbm9kZXMucHVzaCh7IHR5cGU6IFwidGV4dFwiLCB2YWx1ZTogdGV4dC5zdWJzdHJpbmcobm9kZXMuYXQoLTEpIS5lbmQsIHRleHQubGVuZ3RoKSwgZW5kOiB0ZXh0Lmxlbmd0aCB9KTtcbiAgICAgIH1cblxuICAgICAgLy8gRGVsZXRlIHRoZSBjdXJyZW50IHRleHQgbm9kZSBmcm9tIHRoZSBwYXJlbnQgYW5kIHJlcGxhY2UgaXQgd2l0aCB0aGUgbmV3IG5vZGVzXG4gICAgICBwYXJlbnQuY2hpbGRyZW4uc3BsaWNlKGluZGV4LCAxLCAuLi5ub2Rlcyk7XG5cbiAgICAgIHJldHVybiBpbmRleCArIG5vZGVzLmxlbmd0aDsgLy8gVmlzaXQgdGhlIG5leHQgbm9kZSBhZnRlciB0aGUgaW5zZXJ0ZWQgb25lc1xuICAgIH0pO1xuXG4gICAgaWYgKHJlZmVyZW5jZXMuc2l6ZSA+IDApIHtcbiAgICAgIHRoaXMucmVmZXJlbmNlcyA9IEFycmF5LmZyb20ocmVmZXJlbmNlcy52YWx1ZXMoKSlcbiAgICAgICAgLnNvcnQoKGEsIGIpID0+IGEgLSBiKVxuICAgICAgICAubWFwKHIgPT4gJycgKyByKTtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJlZTtcbiAgfVxuXG4gIHBsYWNlaG9sZGVyUGx1Z2luID0gKHRyZWU6IE5vZGUpID0+IHtcblxuICAgIHZpc2l0KHRyZWUsIFwidGV4dFwiLCAobm9kZTogVGV4dCwgaW5kZXg6IG51bWJlciwgcGFyZW50OiBQYXJlbnQpID0+IHtcbiAgICAgIHBhcmVudC5jaGlsZHJlbi5wdXNoKHsgdHlwZTogXCJzdHJlYW1pbmctcGxhY2Vob2xkZXJcIiB9IGFzIGFueSk7XG4gICAgICByZXR1cm4gRVhJVDtcbiAgICB9LCB0cnVlKTtcblxuICAgIHJldHVybiB0cmVlO1xuICB9XG5cbiAgZ2V0TGlua1RleHQobm9kZTogYW55KTogc3RyaW5nIHtcbiAgICBpZiAobm9kZS50ZXh0KSB7XG4gICAgICByZXR1cm4gbm9kZS50ZXh0OyAvLyBSZXR1cm4gZGlyZWN0bHkgaWYgdGV4dCBpcyBwcm92aWRlZCBpbiBub2RlLnRleHQgKFtFeGFtcGxlIGxpbmtdKGh0dHBzOi8vZXhhbXBsZS5jb20pKVxuICAgIH0gZWxzZSBpZiAobm9kZS5jaGlsZHJlbiAmJiBub2RlLmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgIC8vIFJlY3Vyc2l2ZWx5IHNlYXJjaCBmb3IgdGV4dCBjb250ZW50IGluIGNoaWxkIG5vZGVzXG4gICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIG5vZGUuY2hpbGRyZW4pIHtcbiAgICAgICAgaWYgKGNoaWxkLnR5cGUgPT09ICd0ZXh0JyAmJiBjaGlsZC52YWx1ZSkge1xuICAgICAgICAgIHJldHVybiBjaGlsZC52YWx1ZTsgLy8gUmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgZmlyc3QgdGV4dCBub2RlIGZvdW5kIChbKipFbXBoYXNpemVkIExpbmsgVGV4dCoqXShodHRwczovL2V4YW1wbGUuY29tKSlcbiAgICAgICAgfSBlbHNlIGlmIChjaGlsZC5jaGlsZHJlbiAmJiBjaGlsZC5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgY29uc3QgdGV4dENvbnRlbnQgPSB0aGlzLmdldExpbmtUZXh0KGNoaWxkKTsgLy8gUmVjdXJzaXZlbHkgc2VhcmNoIGNoaWxkIG5vZGVzIChbIVtFeGFtcGxlIGltYWdlXShodHRwczovL2V4YW1wbGUuY29tL2ltYWdlLnBuZyldKGh0dHBzOi8vZXhhbXBsZS5jb20pKVxuICAgICAgICAgIGlmICh0ZXh0Q29udGVudCkge1xuICAgICAgICAgICAgcmV0dXJuIHRleHRDb250ZW50OyAvLyBSZXR1cm4gdGV4dCBjb250ZW50IGlmIGZvdW5kXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAnbGluayc7IC8vIFJldHVybiBlbXB0eSBzdHJpbmcgaWYgbm8gdGV4dCBjb250ZW50IGlzIGZvdW5kXG4gIH1cblxuICAvKipcbiAgICogUmVmb3JtYXQgW2lkczogMTIuMiwgNDIuNV0gdG8gWzEyLjJdWzQyLjVdXG4gICAqL1xuICByZWZvcm1hdFJlZmVyZW5jZXMoY29udGVudDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGNvbnRlbnQucmVwbGFjZSgvXFxbKD86aWRzPzo/XFxzKik/KD86ZG9jdW1lbnRzPzo/XFxzKik/KFxccyooPzosP1xccypcXGQrKD86XFwuXFxkKyk/KD86XFwucGFydCk/XFxzKikrKVxcXS9nLFxuICAgICAgKHN0ciwgbWF0Y2g6IHN0cmluZykgPT4gYFske21hdGNoLnJlcGxhY2UoL1xcLnBhcnQvZywgXCJcIikuc3BsaXQoJywnKS5qb2luKFwiXSBbXCIpfV1gXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYXRjaCBhbGwgcmVmZXJlbmNlcyBpbiBhIGdpdmVuIG1lc3NhZ2VcbiAgICovXG4gIGdldFJlZmVyZW5jZU1hdGNoZXMoY29udGVudDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20oY29udGVudC5tYXRjaEFsbCgvXFxbKFxccypcXGQrKD86XFwuXFxkKyk/XFxzKilcXF0vZykpO1xuICB9XG5cbiAgcHJpdmF0ZSBfY29weVRvQ2xpcGJvYXJkKGNvbnRlbnQ6IHN0cmluZykge1xuICAgIHRoaXMudWkuY29weVRvQ2xpcGJvYXJkKGNvbnRlbnQpO1xuXG4gIH1cblxuICBjb3B5TWVzc2FnZShtZXNzYWdlOiBDaGF0TWVzc2FnZSkge1xuICAgIHRoaXMuX2NvcHlUb0NsaXBib2FyZChtZXNzYWdlLmNvbnRlbnQpO1xuICAgIHRoaXMuY29weS5lbWl0KG1lc3NhZ2UpO1xuICB9XG5cbiAgY29weUNvZGUoY29kZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fY29weVRvQ2xpcGJvYXJkKGNvZGUpO1xuICB9XG5cbiAgb3BlbkF0dGFjaG1lbnRQcmV2aWV3KGF0dGFjaG1lbnQ6IENoYXRDb250ZXh0QXR0YWNobWVudCwgcGFydElkPzogbnVtYmVyKSB7XG4gICAgdGhpcy5vcGVuUHJldmlldy5lbWl0KHtyZWZlcmVuY2U6IGF0dGFjaG1lbnQsIHBhcnRJZH0pO1xuICB9XG5cbiAgb3Blbk9yaWdpbmFsQXR0YWNobWVudChhdHRhY2htZW50OiBDaGF0Q29udGV4dEF0dGFjaG1lbnQsIHBhcnRJZD86IG51bWJlcikge1xuICAgIHRoaXMub3BlbkRvY3VtZW50LmVtaXQoe3JlZmVyZW5jZTogYXR0YWNobWVudCwgcGFydElkfSk7XG4gIH1cbn1cbiIsIjwhLS0gTWVzc2FnZSBpY29uIC0tPlxuPHNwYW4gY2xhc3M9XCJtZXNzYWdlLWljb25cIiBbdGl0bGVdPVwibWVzc2FnZT8ucm9sZVwiPlxuICA8aSBjbGFzcz1cImQtYmxvY2tcIiBbc3R5bGUud2lkdGgucHhdPVwiaWNvblNpemVcIiAqbmdJZj1cIiFtZXNzYWdlXCI+PC9pPlxuICA8aSBbbmdDbGFzc109XCJhc3Npc3RhbnRNZXNzYWdlSWNvblwiIFtzdHlsZS4tLXNxLXNpemUucHhdPVwiaWNvblNpemVcIiAqbmdJZj1cIm1lc3NhZ2Uucm9sZSA9PT0gJ2Fzc2lzdGFudCdcIj48L2k+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJtZXNzYWdlPy5yb2xlID09PSAndXNlcidcIj5cbiAgICA8aSBbbmdDbGFzc109XCJ1c2VyTWVzc2FnZUljb25cIiBbc3R5bGUuLS1zcS1zaXplLnB4XT1cImljb25TaXplXCIgKm5nSWY9XCIhIXVzZXJNZXNzYWdlSWNvbjsgZWxzZSBpbml0aWFsc0F2YXRhclwiPjwvaT5cbiAgICA8bmctdGVtcGxhdGUgI2luaXRpYWxzQXZhdGFyPlxuICAgICAgPHNxLWluaXRpYWxzLWF2YXRhciBbZnVsbE5hbWVdPVwibmFtZVwiPjwvc3EtaW5pdGlhbHMtYXZhdGFyPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvbmctY29udGFpbmVyPlxuPC9zcGFuPlxuXG48IS0tIE1lc3NhZ2UgYm9keSAtLT5cbjxkaXYgY2xhc3M9XCJmbGV4LWdyb3ctMVwiIHN0eWxlPVwibWluLXdpZHRoOiAwO1wiIFtuZ0NsYXNzXT1cIidtZXNzYWdlLScrbWVzc2FnZS5yb2xlXCI+XG5cbiAgPGRpdiAqbmdJZj1cIm1lc3NhZ2UuYWRkaXRpb25hbFByb3BlcnRpZXMuJHByb2dyZXNzIGFzIHByb2dyZXNzXCIgY2xhc3M9XCJzbWFsbCBtcy0zIG1iLTJcIj5cbiAgICA8YSBocmVmPVwiI1wiIChjbGljayk9XCJjb2xsYXBzZVByb2dyZXNzID0gIWNvbGxhcHNlUHJvZ3Jlc3M7IGZhbHNlXCIgY2xhc3M9XCJ0ZXh0LW11dGVkXCI+XG4gICAgICBWaWV3IHByb2dyZXNzXG4gICAgICA8aSBjbGFzcz1cImZhcyBmYS1jaGV2cm9uLXt7Y29sbGFwc2VQcm9ncmVzcz8gJ3JpZ2h0JyA6ICdkb3duJ319XCI+PC9pPlxuICAgIDwvYT5cbiAgICA8c3EtY29sbGFwc2UgW2NvbGxhcHNlZF09XCJjb2xsYXBzZVByb2dyZXNzXCI+XG4gICAgICA8bmctdGVtcGxhdGU+XG4gICAgICAgIDx1bCBjbGFzcz1cImxpc3QtdW5zdHlsZWRcIj5cbiAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IHN0ZXAgb2YgcHJvZ3Jlc3NcIj5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWZ3IGZhLWNoZWNrIHRleHQtc3VjY2Vzc1wiICpuZ0lmPVwic3RlcC5kb25lXCI+PC9pPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtZncgZmEtc3BpbiBmYS1jaXJjbGUtbm90Y2hcIiAqbmdJZj1cIiFzdGVwLmRvbmVcIj48L2k+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTIgZnctYm9sZFwiPnt7c3RlcC50aXRsZX19PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzdGVwLmNvbnRlbnRcIj46IHt7c3RlcC5jb250ZW50fX08L3NwYW4+XG4gICAgICAgICAgPC9saT5cbiAgICAgICAgPC91bD5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9zcS1jb2xsYXBzZT5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cIm1lc3NhZ2UtY29udGVudFwiICpuZ0lmPVwibWVzc2FnZS5jb250ZW50XCI+XG5cbiAgICA8ZGl2ICpuZ0lmPVwibWVzc2FnZT8ucm9sZSA9PT0gJ2Fzc2lzdGFudCcgJiYgbWVzc2FnZS5tZXNzYWdlVHlwZSA9PT0gJ0NIQVJUJ1wiPlxuICAgICAgPHNxLWFzc2lzdGFudC1jaGFydCBbcmF3Q2hhcnREYXRhXT1cIm1lc3NhZ2UuY29udGVudFwiPjwvc3EtYXNzaXN0YW50LWNoYXJ0PlxuICAgIDwvZGl2PlxuXG4gICAgPHJlbWFyayAqbmdJZj1cIm1lc3NhZ2U/LnJvbGUgPT09ICdhc3Npc3RhbnQnICYmIG1lc3NhZ2UubWVzc2FnZVR5cGUgPT09ICdNQVJLRE9XTidcIiBbbWFya2Rvd25dPVwibWVzc2FnZS5jb250ZW50XCIgW3Byb2Nlc3Nvcl09XCJwcm9jZXNzb3JcIj5cblxuICAgICAgPG5nLXRlbXBsYXRlIHJlbWFya1RlbXBsYXRlPVwiY2hhdC1yZWZlcmVuY2VcIiBsZXQtcmVmPlxuXG4gICAgICAgIDxhICpuZ0lmPVwicmVmZXJlbmNlTWFwLmdldChyZWYucmVmSWQpIGFzIGF0dGFjaG1lbnQ7IGVsc2Ugc3RhdGljUmVmVHBsXCJcbiAgICAgICAgICBjbGFzcz1cInJlZmVyZW5jZVwiXG4gICAgICAgICAgW3NxVG9vbHRpcF09XCJhdHRhY2htZW50XCJcbiAgICAgICAgICBbc3FUb29sdGlwVGVtcGxhdGVdPVwidG9vbHRpcFRwbFwiXG4gICAgICAgICAgW2hvdmVyYWJsZVRvb2x0aXBdPVwidHJ1ZVwiXG4gICAgICAgICAgPnt7cmVmLnJlZklkfX1cbiAgICAgICAgPC9hPlxuXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjc3RhdGljUmVmVHBsPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwicmVmZXJlbmNlXCI+e3tyZWYucmVmSWR9fTwvc3Bhbj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgPG5nLXRlbXBsYXRlIHJlbWFya1RlbXBsYXRlPVwic3RyZWFtaW5nLXBsYWNlaG9sZGVyXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwicGxhY2Vob2xkZXItZ2xvd1wiICpuZ0lmPVwic3RyZWFtaW5nXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJwbGFjZWhvbGRlciBtcy0xXCI+PC9zcGFuPlxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICA8bmctdGVtcGxhdGUgcmVtYXJrVGVtcGxhdGU9XCJjb2RlXCIgbGV0LW5vZGU+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIG1iLTJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgPHNwYW4+e3tub2RlLmxhbmd9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLWxpZ2h0IGJ0bi1zbVwiIChjbGljayk9XCJjb3B5Q29kZShub2RlLnZhbHVlKVwiPjxpIGNsYXNzPVwiZmFyIGZhLWZ3IGZhLWNsaXBib2FyZFwiPjwvaT4gQ29weSBjb2RlPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPHByZSBjbGFzcz1cImxhbmd1YWdlLXt7bm9kZS5sYW5nfX0gbXktMCByb3VuZGVkLTAgcm91bmRlZC1ib3R0b21cIj48Y29kZSBjbGFzcz1cImxhbmd1YWdlLXt7bm9kZS5sYW5nfX1cIj57e25vZGUudmFsdWV9fTwvY29kZT48L3ByZT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICA8bmctdGVtcGxhdGUgcmVtYXJrVGVtcGxhdGU9XCJsaW5rXCIgbGV0LW5vZGU+XG4gICAgICAgIDxhIFtocmVmXT1cIm5vZGUudXJsXCIgdGFyZ2V0PVwiX2JsYW5rXCIgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiPnt7Z2V0TGlua1RleHQobm9kZSl9fTwvYT5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8L3JlbWFyaz5cblxuICAgIDxwICpuZ0lmPVwibWVzc2FnZT8ucm9sZSA9PT0gJ3VzZXInXCI+e3ttZXNzYWdlLmNvbnRlbnR9fTwvcD5cblxuICAgIDwhLS0gTGlzdCBvZiByZWZlcmVuY2UsIGlmIGFueSAtLT5cbiAgICA8ZGl2ICpuZ0lmPVwicmVmZXJlbmNlcz8ubGVuZ3RoXCIgY2xhc3M9XCJyZWZlcmVuY2VzXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cInJlZmVyZW5jZXMtdGl0bGVcIj5SZWZlcmVuY2VzPC9zcGFuPiA8aSBjbGFzcz1cImZhcyByZWZlcmVuY2VzLWNvbGxhcHNlXCIgW2NsYXNzLmZhLWNoZXZyb24tZG93bl09XCJzaG93UmVmZXJlbmNlc1wiIFtjbGFzcy5mYS1jaGV2cm9uLXJpZ2h0XT1cIiFzaG93UmVmZXJlbmNlc1wiIChjbGljayk9XCJzaG93UmVmZXJlbmNlcz0hc2hvd1JlZmVyZW5jZXNcIj48L2k+XG4gICAgICA8c3EtY29sbGFwc2UgW2NvbGxhcHNlZF09XCIhc2hvd1JlZmVyZW5jZXNcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlPlxuICAgICAgICAgIDx1bD5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHJlZmVyZW5jZSBvZiByZWZlcmVuY2VzXCI+XG4gICAgICAgICAgICAgIDxsaSAqbmdJZj1cInJlZmVyZW5jZU1hcC5nZXQocmVmZXJlbmNlKSBhcyBhdHRhY2htZW50XCIgIGNsYXNzPVwidGV4dC10cnVuY2F0ZVwiPlxuICAgICAgICAgICAgICAgIDxzcS1jaGF0LXJlZmVyZW5jZVxuICAgICAgICAgICAgICAgICAgW2NsYXNzLmV4cGFuZGVkXT1cImF0dGFjaG1lbnQuJGV4cGFuZGVkXCJcbiAgICAgICAgICAgICAgICAgIFthdHRhY2htZW50XT1cImF0dGFjaG1lbnRcIlxuICAgICAgICAgICAgICAgICAgW3JlZmVyZW5jZV09XCJyZWZlcmVuY2VcIlxuICAgICAgICAgICAgICAgICAgKG9wZW5QcmV2aWV3KT1cIm9wZW5BdHRhY2htZW50UHJldmlldygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgIChvcGVuRG9jdW1lbnQpPVwib3Blbk9yaWdpbmFsQXR0YWNobWVudCgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgPC9zcS1jaGF0LXJlZmVyZW5jZT5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvdWw+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L3NxLWNvbGxhcHNlPlxuICAgIDwvZGl2PlxuXG4gIDwvZGl2PlxuXG4gICAgPCEtLSBFZGl0IC8gUmVnZW5lcmF0ZSBmbG9hdGluZyBhY3Rpb25zIC0tPlxuICA8ZGl2IGNsYXNzPVwic3EtY2hhdC1tZXNzYWdlLWFjdGlvbnNcIiAqbmdJZj1cIm1lc3NhZ2VcIj5cbiAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zbVwiICpuZ0lmPVwiY2FuRWRpdFwiIHNxVG9vbHRpcD1cIkVkaXQgbWVzc2FnZVwiIChjbGljayk9XCJlZGl0LmVtaXQobWVzc2FnZSlcIj5cbiAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWVkaXRcIj48L2k+XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc21cIiAqbmdJZj1cImNhbkNvcHlcIiBzcVRvb2x0aXA9XCJDb3B5IHRvIGNsaXBib2FyZFwiIChjbGljayk9XCJjb3B5TWVzc2FnZShtZXNzYWdlKVwiPlxuICAgICAgPGkgY2xhc3M9XCJmYXIgZmEtY2xpcGJvYXJkXCI+PC9pPlxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXNtXCIgKm5nSWY9XCJjYW5SZWdlbmVyYXRlXCIgc3FUb29sdGlwPVwiUmVnZW5lcmF0ZSBtZXNzYWdlXCIgKGNsaWNrKT1cInJlZ2VuZXJhdGUuZW1pdChtZXNzYWdlKVwiPlxuICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtc3luYy1hbHRcIj48L2k+XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc21cIiBbY2xhc3MuYm91bmNlXT1cImxpa2VkXCIgKm5nSWY9XCJjYW5MaWtlXCIgc3FUb29sdGlwPVwiTGlrZSB0aGUgYW5zd2VyXCIgKGNsaWNrKT1cImxpa2UuZW1pdChtZXNzYWdlKTsgbGlrZWQgPSB0cnVlO1wiPlxuICAgICAgPGkgY2xhc3M9XCJmYXIgZmEtdGh1bWJzLXVwXCI+PC9pPlxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXNtIGJvdW5jZVwiICBbY2xhc3MuYm91bmNlXT1cImRpc2xpa2VkXCIgKm5nSWY9XCJjYW5EaXNsaWtlXCIgc3FUb29sdGlwPVwiUmVwb3J0IGFuIGlzc3VlXCIgKGNsaWNrKT1cImRpc2xpa2UuZW1pdChtZXNzYWdlKTsgZGlzbGlrZWQgPSB0cnVlO1wiPlxuICAgICAgPGkgY2xhc3M9XCJmYXIgZmEtdGh1bWJzLWRvd25cIj48L2k+XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc21cIiAqbmdJZj1cImNhbkRlYnVnXCIgc3FUb29sdGlwPVwiU2hvdyBMb2cgSW5mb3JtYXRpb25cIiAoY2xpY2spPVwiZGVidWcuZW1pdChtZXNzYWdlKTtcIj5cbiAgICAgIDxpIGNsYXNzPVwiZmFyIGZhLWxpc3QtYWx0XCI+PC9pPlxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cblxuICA8IS0tIExpc3Qgb2Ygc3VnZ2VzdGVkIGFjdGlvbnMsIGlmIGFueSAtLT5cbiAgPGRpdiAqbmdJZj1cInN1Z2dlc3RlZEFjdGlvbnNcIiBjbGFzcz1cIm10LTIgbWVzc2FnZS1zdWdnZXN0aW9uXCI+XG4gICAgPGRpdiBjbGFzcz1cInN1Z2dlc3RlZC1hY3Rpb25cIiAqbmdGb3I9XCJsZXQgc3VnZ2VzdGVkQWN0aW9uIG9mIHN1Z2dlc3RlZEFjdGlvbnNcIiAoY2xpY2spPVwic3VnZ2VzdEFjdGlvbi5lbWl0KHN1Z2dlc3RlZEFjdGlvbilcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtZXNzYWdlLWNvbnRlbnRcIj5cbiAgICAgICAgPHA+PGkgY2xhc3M9XCJmYXMgZmEtY2xpcGJvYXJkLXF1ZXN0aW9uXCI+PC9pPiB7e3N1Z2dlc3RlZEFjdGlvbi5jb250ZW50fX08L3A+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPG5nLXRlbXBsYXRlICN0b29sdGlwVHBsIGxldC1yZWY+XG4gICAgPHNxLWNoYXQtcmVmZXJlbmNlXG4gICAgICBjbGFzcz1cImV4cGFuZGVkXCJcbiAgICAgIFthdHRhY2htZW50XT1cInJlZlwiXG4gICAgICBbcmVmZXJlbmNlXT1cInJlZi5jb250ZXh0SWRcIlxuICAgICAgW3BhcnRJZF09XCJyZWYuJHBhcnRJZFwiXG4gICAgICAob3BlblByZXZpZXcpPVwib3BlbkF0dGFjaG1lbnRQcmV2aWV3KCRldmVudCwgcmVmLiRwYXJ0SWQpXCJcbiAgICAgIChvcGVuRG9jdW1lbnQpPVwib3Blbk9yaWdpbmFsQXR0YWNobWVudCgkZXZlbnQsIHJlZi4kcGFydElkKVwiPlxuICAgIDwvc3EtY2hhdC1yZWZlcmVuY2U+XG4gIDwvbmctdGVtcGxhdGU+XG5cbjwvZGl2PlxuIl19
|
|
251
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1tZXNzYWdlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fzc2lzdGFudC9jaGF0L2NoYXQtbWVzc2FnZS9jaGF0LW1lc3NhZ2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXNzaXN0YW50L2NoYXQvY2hhdC1tZXNzYWdlL2NoYXQtbWVzc2FnZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUErRCxNQUFNLGVBQWUsQ0FBQztBQUt4SyxPQUFPLEVBQUUsT0FBTyxFQUFhLE1BQU0sU0FBUyxDQUFDO0FBQzdDLE9BQU8sV0FBVyxNQUFNLGNBQWMsQ0FBQztBQUN2QyxPQUFPLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUd6RCxPQUFPLEVBQWEsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbkUsT0FBTyxTQUFTLE1BQU0sWUFBWSxDQUFDO0FBQ25DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFlBQVksQ0FBQztBQUMxQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUN2RixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUVwRixPQUFPLGlDQUFpQyxDQUFDO0FBQ3pDLE9BQU8sNkNBQTZDLENBQUM7QUFDckQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7Ozs7OztBQWVqRSxNQUFNLE9BQU8sb0JBQW9CO0lBa0MvQixZQUNT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Q0csSUFBSTtzQkFBYixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csSUFBSTtzQkFBYixNQUFNO2dCQUNHLE9BQU87c0JBQWhCLE1BQU07Z0JBQ0csS0FBSztzQkFBZCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMsIENoYW5nZURldGVjdG9yUmVmLCBBZnRlclZpZXdJbml0LCBFbGVtZW50UmVmIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IFByaW5jaXBhbFdlYlNlcnZpY2UgfSBmcm9tIFwiQHNpbmVxdWEvY29yZS93ZWItc2VydmljZXNcIjtcbmltcG9ydCB7IFNlYXJjaFNlcnZpY2UgfSBmcm9tIFwiQHNpbmVxdWEvY29tcG9uZW50cy9zZWFyY2hcIjtcbmltcG9ydCB7IENoYXRDb250ZXh0QXR0YWNobWVudCwgQ2hhdE1lc3NhZ2UsIFN1Z2dlc3RlZEFjdGlvbiB9IGZyb20gXCIuLi90eXBlc1wiO1xuXG5pbXBvcnQgeyB1bmlmaWVkLCBQcm9jZXNzb3IgfSBmcm9tIFwidW5pZmllZFwiO1xuaW1wb3J0IHJlbWFya1BhcnNlIGZyb20gXCJyZW1hcmstcGFyc2VcIjtcbmltcG9ydCB7IHZpc2l0LCBDT05USU5VRSwgRVhJVCB9IGZyb20gXCJ1bmlzdC11dGlsLXZpc2l0XCI7XG5pbXBvcnQgeyBUZXh0LCBQYXJlbnQsIENvbnRlbnQgfSBmcm9tIFwibWRhc3RcIjtcbmltcG9ydCB7IE5vZGUgfSBmcm9tIFwidW5pc3RcIjtcbmltcG9ydCB7IFVJU2VydmljZSwgVXRpbHNNb2R1bGUgfSBmcm9tIFwiQHNpbmVxdWEvY29tcG9uZW50cy91dGlsc1wiO1xuaW1wb3J0IHJlbWFya0dmbSBmcm9tIFwicmVtYXJrLWdmbVwiO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHsgQ29sbGFwc2VNb2R1bGUgfSBmcm9tIFwiQHNpbmVxdWEvY29tcG9uZW50cy9jb2xsYXBzZVwiO1xuaW1wb3J0IHsgUmVtYXJrTW9kdWxlIH0gZnJvbSBcIm5neC1yZW1hcmtcIjtcbmltcG9ydCB7IEluaXRpYWxzQXZhdGFyQ29tcG9uZW50IH0gZnJvbSBcIi4uL2luaXRpYWxzLWF2YXRhci9pbml0aWFscy1hdmF0YXIuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBDaGF0UmVmZXJlbmNlQ29tcG9uZW50IH0gZnJvbSBcIi4uL2NoYXQtcmVmZXJlbmNlL2NoYXQtcmVmZXJlbmNlLmNvbXBvbmVudFwiO1xuXG5pbXBvcnQgXCJwcmlzbWpzLWNvbXBvbmVudHMtaW1wb3J0ZXIvZXNtXCI7XG5pbXBvcnQgJ3ByaXNtanMvcGx1Z2lucy9hdXRvbG9hZGVyL3ByaXNtLWF1dG9sb2FkZXInO1xuaW1wb3J0IHsgQ2hhcnRDb21wb25lbnQgfSBmcm9tIFwiLi4vY2hhcnRzL2NoYXJ0L2NoYXJ0LmNvbXBvbmVudFwiO1xuXG5kZWNsYXJlIG1vZHVsZSBQcmlzbSB7XG4gIGZ1bmN0aW9uIGhpZ2hsaWdodEFsbFVuZGVyKGVsOiBIVE1MRWxlbWVudCk6IHZvaWQ7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJzcS1jaGF0LW1lc3NhZ2VcIixcbiAgdGVtcGxhdGVVcmw6IFwiLi9jaGF0LW1lc3NhZ2UuY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVVcmxzOiBbXCIuL2NoYXQtbWVzc2FnZS5jb21wb25lbnQuc2Nzc1wiXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFV0aWxzTW9kdWxlLCBDb2xsYXBzZU1vZHVsZSwgUmVtYXJrTW9kdWxlLFxuICAgIEluaXRpYWxzQXZhdGFyQ29tcG9uZW50LCBDaGF0UmVmZXJlbmNlQ29tcG9uZW50LCBDaGFydENvbXBvbmVudF1cbn0pXG5leHBvcnQgY2xhc3MgQ2hhdE1lc3NhZ2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQge1xuICBASW5wdXQoKSBtZXNzYWdlOiBDaGF0TWVzc2FnZTtcbiAgQElucHV0KCkgY29udmVyc2F0aW9uOiBDaGF0TWVzc2FnZVtdO1xuICBASW5wdXQoKSBzdWdnZXN0ZWRBY3Rpb25zOiBTdWdnZXN0ZWRBY3Rpb25bXSB8IHVuZGVmaW5lZDtcbiAgQElucHV0KCkgYXNzaXN0YW50TWVzc2FnZUljb246IHN0cmluZztcbiAgQElucHV0KCkgdXNlck1lc3NhZ2VJY29uOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHN0cmVhbWluZzogYm9vbGVhbjtcbiAgQElucHV0KCkgY2FuRWRpdDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBjYW5SZWdlbmVyYXRlOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGNhbkNvcHk6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgY2FuRGVidWc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgY2FuTGlrZTogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBjYW5EaXNsaWtlOiBib29sZWFuID0gZmFsc2U7XG4gIEBPdXRwdXQoKSBvcGVuRG9jdW1lbnQgPSBuZXcgRXZlbnRFbWl0dGVyPHtyZWZlcmVuY2U6IENoYXRDb250ZXh0QXR0YWNobWVudCwgcGFydElkPzogbnVtYmVyfT4oKTtcbiAgQE91dHB1dCgpIG9wZW5QcmV2aWV3ID0gbmV3IEV2ZW50RW1pdHRlcjx7cmVmZXJlbmNlOiBDaGF0Q29udGV4dEF0dGFjaG1lbnQsIHBhcnRJZD86IG51bWJlcn0+KCk7XG4gIEBPdXRwdXQoKSBzdWdnZXN0QWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjxTdWdnZXN0ZWRBY3Rpb24+KCk7XG4gIEBPdXRwdXQoKSBlZGl0ID0gbmV3IEV2ZW50RW1pdHRlcjxDaGF0TWVzc2FnZT4oKTtcbiAgQE91dHB1dCgpIGNvcHkgPSBuZXcgRXZlbnRFbWl0dGVyPENoYXRNZXNzYWdlPigpO1xuICBAT3V0cHV0KCkgcmVnZW5lcmF0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8Q2hhdE1lc3NhZ2U+KCk7XG4gIEBPdXRwdXQoKSBsaWtlID0gbmV3IEV2ZW50RW1pdHRlcjxDaGF0TWVzc2FnZT4oKTtcbiAgQE91dHB1dCgpIGRpc2xpa2UgPSBuZXcgRXZlbnRFbWl0dGVyPENoYXRNZXNzYWdlPigpO1xuICBAT3V0cHV0KCkgZGVidWcgPSBuZXcgRXZlbnRFbWl0dGVyPENoYXRNZXNzYWdlPigpO1xuXG4gIHByb2Nlc3NvcjogUHJvY2Vzc29yO1xuXG4gIHJlZmVyZW5jZXM6IHN0cmluZ1tdID0gW107XG4gIHJlZmVyZW5jZU1hcCA9IG5ldyBNYXA8c3RyaW5nLCBDaGF0Q29udGV4dEF0dGFjaG1lbnQ+KCk7XG4gIHNob3dSZWZlcmVuY2VzOiBib29sZWFuID0gdHJ1ZTtcbiAgY29sbGFwc2VQcm9ncmVzczogYm9vbGVhbjtcbiAgaWNvblNpemUgPSAyNDtcblxuICBsaWtlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBkaXNsaWtlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBzZWFyY2hTZXJ2aWNlOiBTZWFyY2hTZXJ2aWNlLFxuICAgIHB1YmxpYyB1aTogVUlTZXJ2aWNlLFxuICAgIHB1YmxpYyBwcmluY2lwYWxTZXJ2aWNlOiBQcmluY2lwYWxXZWJTZXJ2aWNlLFxuICAgIHB1YmxpYyBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHB1YmxpYyBlbDogRWxlbWVudFJlZlxuICApIHsgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5zdHJlYW1pbmcpIHtcbiAgICAgIHRoaXMuY29sbGFwc2VQcm9ncmVzcyA9ICF0aGlzLnN0cmVhbWluZztcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlcy5tZXNzYWdlICYmIHRoaXMubWVzc2FnZT8ucm9sZSA9PT0gXCJhc3Npc3RhbnRcIikge1xuICAgICAgdGhpcy5yZWZlcmVuY2VzID0gW107XG4gICAgICB0aGlzLnJlZmVyZW5jZU1hcC5jbGVhcigpO1xuICAgICAgZm9yIChsZXQgbSBvZiB0aGlzLmNvbnZlcnNhdGlvbikge1xuICAgICAgICBpZiAobS5hZGRpdGlvbmFsUHJvcGVydGllcy4kYXR0YWNobWVudCkge1xuICAgICAgICAgIGZvciAoY29uc3QgYXR0YWNobWVudCBvZiBtLmFkZGl0aW9uYWxQcm9wZXJ0aWVzLiRhdHRhY2htZW50KSB7XG4gICAgICAgICAgICB0aGlzLnJlZmVyZW5jZU1hcC5zZXQoJycgKyBhdHRhY2htZW50LmNvbnRleHRJZCwgeyAuLi5hdHRhY2htZW50LCAkcGFydElkOiBhdHRhY2htZW50LnBhcnRzPy5bMF0/LnBhcnRJZCB9KTtcbiAgICAgICAgICAgIGlmICghIWF0dGFjaG1lbnQucGFydHMgJiYgYXR0YWNobWVudC5wYXJ0cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXR0YWNobWVudC5wYXJ0cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlZklkID0gYCR7YXR0YWNobWVudC5jb250ZXh0SWR9LiR7YXR0YWNobWVudC5wYXJ0c1tpXS5wYXJ0SWR9YDtcbiAgICAgICAgICAgICAgICB0aGlzLnJlZmVyZW5jZU1hcC5zZXQocmVmSWQsIHsgLi4uYXR0YWNobWVudCwgJHBhcnRJZDogYXR0YWNobWVudC5wYXJ0cz8uW2ldPy5wYXJ0SWQgfSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZihtLmNvbnRlbnQuc3RhcnRzV2l0aChcIjxjaGFydGpzPlwiKSl7XG4gICAgICAgICAgbS5tZXNzYWdlVHlwZSA9IFwiQ0hBUlRcIjtcbiAgICAgICAgfVxuICAgICAgICBlbHNle1xuICAgICAgICAgIG0ubWVzc2FnZVR5cGUgPSBcIk1BUktET1dOXCI7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhpcy5wcm9jZXNzb3IgPSB1bmlmaWVkKClcbiAgICAgICAgLnVzZShyZW1hcmtQYXJzZSlcbiAgICAgICAgLnVzZShyZW1hcmtHZm0pXG4gICAgICAgIC51c2UoKCkgPT4gdGhpcy5yZWZlcmVuY2VQbHVnaW4pO1xuXG4gICAgICBpZiAodGhpcy5zdHJlYW1pbmcpIHtcbiAgICAgICAgdGhpcy5wcm9jZXNzb3IgPSB0aGlzLnByb2Nlc3Nvci51c2UoKCkgPT4gdGhpcy5wbGFjZWhvbGRlclBsdWdpbik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIFByaXNtPy5oaWdobGlnaHRBbGxVbmRlcj8uKHRoaXMuZWwubmF0aXZlRWxlbWVudCk7XG4gIH1cblxuICBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiAhdGhpcy5wcmluY2lwYWxTZXJ2aWNlLnByaW5jaXBhbCA/ICcnXG4gICAgICA6IHRoaXMucHJpbmNpcGFsU2VydmljZS5wcmluY2lwYWxbJ2Z1bGxOYW1lJ10gYXMgc3RyaW5nIHx8IHRoaXMucHJpbmNpcGFsU2VydmljZS5wcmluY2lwYWwubmFtZTtcbiAgfVxuXG4gIGdldCBpc0FkbWluKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnByaW5jaXBhbFNlcnZpY2UucHJpbmNpcGFsPy5pc0FkbWluaXN0cmF0b3IgfHwgZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBVbmlmaWVkIHBsdWdpbiBsb29rcyBhIHRleHQgbm9kZXMgYW5kIHJlcGxhY2VzIGFueSByZWZlcmVuY2UgaW4gdGhlXG4gICAqIGZvcm0gWzFdLCBbMi4zXSwgZXRjLiB3aXRoIGN1c3RvbSBub2RlcyBvZiB0eXBlIFwiY2hhdC1yZWZlcmVuY2VcIi5cbiAgICovXG4gIHJlZmVyZW5jZVBsdWdpbiA9ICh0cmVlOiBOb2RlKSA9PiB7XG5cbiAgICBjb25zdCByZWZlcmVuY2VzID0gbmV3IFNldDxudW1iZXI+KCk7XG5cbiAgICAvLyBWaXNpdCBhbGwgdGV4dCBub2Rlc1xuICAgIHZpc2l0KHRyZWUsIFwidGV4dFwiLCAobm9kZTogVGV4dCwgaW5kZXg6IG51bWJlciwgcGFyZW50OiBQYXJlbnQpID0+IHtcbiAgICAgIGxldCB0ZXh0ID0gbm9kZS52YWx1ZTtcblxuICAgICAgdGV4dCA9IHRoaXMucmVmb3JtYXRSZWZlcmVuY2VzKHRleHQpO1xuICAgICAgY29uc3QgbWF0Y2hlcyA9IHRoaXMuZ2V0UmVmZXJlbmNlTWF0Y2hlcyh0ZXh0KTtcblxuICAgICAgLy8gUXVpdCBpZiBubyByZWZlcmVuY2VzIHdlcmUgZm91bmRcbiAgICAgIGlmIChtYXRjaGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gQ09OVElOVUU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG5vZGVzOiAoQ29udGVudCAmIHsgZW5kOiBudW1iZXIgfSlbXSA9IFtdO1xuXG4gICAgICBmb3IgKGxldCBtYXRjaCBvZiBtYXRjaGVzKSB7XG4gICAgICAgIGNvbnN0IHJlZklkID0gbWF0Y2hbMV0udHJpbSgpO1xuICAgICAgICBjb25zdCBbcmVmXSA9IHJlZklkLnNwbGl0KFwiLlwiKTtcbiAgICAgICAgLy8gV2UgZmluZCBhIHZhbGlkIHJlZmVyZW5jZSBpbiB0aGUgdGV4dFxuICAgICAgICBpZiAoIWlzTmFOKCtyZWYpKSB7XG4gICAgICAgICAgcmVmZXJlbmNlcy5hZGQoK3JlZik7IC8vIEFkZCBpdCB0byB0aGUgc2V0IG9mIHVzZWQgcmVmZXJlbmNlc1xuXG4gICAgICAgICAgLy8gSWYgbmVlZGVkLCBpbnNlcnQgYSB0ZXh0IG5vZGUgYmVmb3JlIHRoZSByZWZlcmVuY2VcbiAgICAgICAgICBjb25zdCBjdXJyZW50ID0gbm9kZXMuYXQoLTEpID8/IHsgZW5kOiAwIH07XG4gICAgICAgICAgaWYgKG1hdGNoLmluZGV4ISA+IGN1cnJlbnQuZW5kKSB7XG4gICAgICAgICAgICBub2Rlcy5wdXNoKHsgdHlwZTogXCJ0ZXh0XCIsIHZhbHVlOiB0ZXh0LnN1YnN0cmluZyhjdXJyZW50LmVuZCwgbWF0Y2guaW5kZXghKSwgZW5kOiBtYXRjaC5pbmRleCEgfSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gQWRkIGEgY3VzdG9tIHJlZmVyZW5jZSBub2RlXG4gICAgICAgICAgbm9kZXMucHVzaCh7IHR5cGU6IFwiY2hhdC1yZWZlcmVuY2VcIiwgcmVmSWQsIGVuZDogbWF0Y2guaW5kZXghICsgbWF0Y2hbMF0ubGVuZ3RoIH0gYXMgYW55KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBRdWl0IGlmIG5vIHJlZmVyZW5jZXMgd2VyZSBmb3VuZFxuICAgICAgaWYgKG5vZGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gQ09OVElOVUU7XG4gICAgICB9XG5cbiAgICAgIGlmIChub2Rlcy5hdCgtMSkhLmVuZCA8IHRleHQubGVuZ3RoKSB7XG4gICAgICAgIG5vZGVzLnB1c2goeyB0eXBlOiBcInRleHRcIiwgdmFsdWU6IHRleHQuc3Vic3RyaW5nKG5vZGVzLmF0KC0xKSEuZW5kLCB0ZXh0Lmxlbmd0aCksIGVuZDogdGV4dC5sZW5ndGggfSk7XG4gICAgICB9XG5cbiAgICAgIC8vIERlbGV0ZSB0aGUgY3VycmVudCB0ZXh0IG5vZGUgZnJvbSB0aGUgcGFyZW50IGFuZCByZXBsYWNlIGl0IHdpdGggdGhlIG5ldyBub2Rlc1xuICAgICAgcGFyZW50LmNoaWxkcmVuLnNwbGljZShpbmRleCwgMSwgLi4ubm9kZXMpO1xuXG4gICAgICByZXR1cm4gaW5kZXggKyBub2Rlcy5sZW5ndGg7IC8vIFZpc2l0IHRoZSBuZXh0IG5vZGUgYWZ0ZXIgdGhlIGluc2VydGVkIG9uZXNcbiAgICB9KTtcblxuICAgIGlmIChyZWZlcmVuY2VzLnNpemUgPiAwKSB7XG4gICAgICB0aGlzLnJlZmVyZW5jZXMgPSBBcnJheS5mcm9tKHJlZmVyZW5jZXMudmFsdWVzKCkpXG4gICAgICAgIC5zb3J0KChhLCBiKSA9PiBhIC0gYilcbiAgICAgICAgLm1hcChyID0+ICcnICsgcik7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRyZWU7XG4gIH1cblxuICBwbGFjZWhvbGRlclBsdWdpbiA9ICh0cmVlOiBOb2RlKSA9PiB7XG5cbiAgICB2aXNpdCh0cmVlLCBcInRleHRcIiwgKG5vZGU6IFRleHQsIGluZGV4OiBudW1iZXIsIHBhcmVudDogUGFyZW50KSA9PiB7XG4gICAgICBwYXJlbnQuY2hpbGRyZW4ucHVzaCh7IHR5cGU6IFwic3RyZWFtaW5nLXBsYWNlaG9sZGVyXCIgfSBhcyBhbnkpO1xuICAgICAgcmV0dXJuIEVYSVQ7XG4gICAgfSwgdHJ1ZSk7XG5cbiAgICByZXR1cm4gdHJlZTtcbiAgfVxuXG4gIGdldExpbmtUZXh0KG5vZGU6IGFueSk6IHN0cmluZyB7XG4gICAgaWYgKG5vZGUudGV4dCkge1xuICAgICAgcmV0dXJuIG5vZGUudGV4dDsgLy8gUmV0dXJuIGRpcmVjdGx5IGlmIHRleHQgaXMgcHJvdmlkZWQgaW4gbm9kZS50ZXh0IChbRXhhbXBsZSBsaW5rXShodHRwczovL2V4YW1wbGUuY29tKSlcbiAgICB9IGVsc2UgaWYgKG5vZGUuY2hpbGRyZW4gJiYgbm9kZS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICAvLyBSZWN1cnNpdmVseSBzZWFyY2ggZm9yIHRleHQgY29udGVudCBpbiBjaGlsZCBub2Rlc1xuICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiBub2RlLmNoaWxkcmVuKSB7XG4gICAgICAgIGlmIChjaGlsZC50eXBlID09PSAndGV4dCcgJiYgY2hpbGQudmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gY2hpbGQudmFsdWU7IC8vIFJldHVybiB0aGUgdmFsdWUgb2YgdGhlIGZpcnN0IHRleHQgbm9kZSBmb3VuZCAoWyoqRW1waGFzaXplZCBMaW5rIFRleHQqKl0oaHR0cHM6Ly9leGFtcGxlLmNvbSkpXG4gICAgICAgIH0gZWxzZSBpZiAoY2hpbGQuY2hpbGRyZW4gJiYgY2hpbGQuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGNvbnN0IHRleHRDb250ZW50ID0gdGhpcy5nZXRMaW5rVGV4dChjaGlsZCk7IC8vIFJlY3Vyc2l2ZWx5IHNlYXJjaCBjaGlsZCBub2RlcyAoWyFbRXhhbXBsZSBpbWFnZV0oaHR0cHM6Ly9leGFtcGxlLmNvbS9pbWFnZS5wbmcpXShodHRwczovL2V4YW1wbGUuY29tKSlcbiAgICAgICAgICBpZiAodGV4dENvbnRlbnQpIHtcbiAgICAgICAgICAgIHJldHVybiB0ZXh0Q29udGVudDsgLy8gUmV0dXJuIHRleHQgY29udGVudCBpZiBmb3VuZFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gJ2xpbmsnOyAvLyBSZXR1cm4gZW1wdHkgc3RyaW5nIGlmIG5vIHRleHQgY29udGVudCBpcyBmb3VuZFxuICB9XG5cbiAgLyoqXG4gICAqIFJlZm9ybWF0IFtpZHM6IDEyLjIsIDQyLjVdIHRvIFsxMi4yXVs0Mi41XVxuICAgKi9cbiAgcmVmb3JtYXRSZWZlcmVuY2VzKGNvbnRlbnQ6IHN0cmluZykge1xuICAgIHJldHVybiBjb250ZW50LnJlcGxhY2UoL1xcWyg/Omlkcz86P1xccyopPyg/OmRvY3VtZW50cz86P1xccyopPyhcXHMqKD86LD9cXHMqXFxkKyg/OlxcLlxcZCspPyg/OlxcLnBhcnQpP1xccyopKylcXF0vZyxcbiAgICAgIChzdHIsIG1hdGNoOiBzdHJpbmcpID0+IGBbJHttYXRjaC5yZXBsYWNlKC9cXC5wYXJ0L2csIFwiXCIpLnNwbGl0KCcsJykuam9pbihcIl0gW1wiKX1dYFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogTWF0Y2ggYWxsIHJlZmVyZW5jZXMgaW4gYSBnaXZlbiBtZXNzYWdlXG4gICAqL1xuICBnZXRSZWZlcmVuY2VNYXRjaGVzKGNvbnRlbnQ6IHN0cmluZykge1xuICAgIHJldHVybiBBcnJheS5mcm9tKGNvbnRlbnQubWF0Y2hBbGwoL1xcWyhcXHMqXFxkKyg/OlxcLlxcZCspP1xccyopXFxdL2cpKTtcbiAgfVxuXG4gIHByaXZhdGUgX2NvcHlUb0NsaXBib2FyZChjb250ZW50OiBzdHJpbmcpIHtcbiAgICB0aGlzLnVpLmNvcHlUb0NsaXBib2FyZChjb250ZW50KTtcblxuICB9XG5cbiAgY29weU1lc3NhZ2UobWVzc2FnZTogQ2hhdE1lc3NhZ2UpIHtcbiAgICB0aGlzLl9jb3B5VG9DbGlwYm9hcmQobWVzc2FnZS5jb250ZW50KTtcbiAgICB0aGlzLmNvcHkuZW1pdChtZXNzYWdlKTtcbiAgfVxuXG4gIGNvcHlDb2RlKGNvZGU6IHN0cmluZykge1xuICAgIHRoaXMuX2NvcHlUb0NsaXBib2FyZChjb2RlKTtcbiAgfVxuXG4gIG9wZW5BdHRhY2htZW50UHJldmlldyhhdHRhY2htZW50OiBDaGF0Q29udGV4dEF0dGFjaG1lbnQsIHBhcnRJZD86IG51bWJlcikge1xuICAgIHRoaXMub3BlblByZXZpZXcuZW1pdCh7cmVmZXJlbmNlOiBhdHRhY2htZW50LCBwYXJ0SWR9KTtcbiAgfVxuXG4gIG9wZW5PcmlnaW5hbEF0dGFjaG1lbnQoYXR0YWNobWVudDogQ2hhdENvbnRleHRBdHRhY2htZW50LCBwYXJ0SWQ/OiBudW1iZXIpIHtcbiAgICB0aGlzLm9wZW5Eb2N1bWVudC5lbWl0KHtyZWZlcmVuY2U6IGF0dGFjaG1lbnQsIHBhcnRJZH0pO1xuICB9XG59XG4iLCI8IS0tIE1lc3NhZ2UgaWNvbiAtLT5cbjxzcGFuIGNsYXNzPVwibWVzc2FnZS1pY29uXCIgW3RpdGxlXT1cIm1lc3NhZ2U/LnJvbGVcIj5cbiAgPGkgY2xhc3M9XCJkLWJsb2NrXCIgW3N0eWxlLndpZHRoLnB4XT1cImljb25TaXplXCIgKm5nSWY9XCIhbWVzc2FnZVwiPjwvaT5cbiAgPGkgW25nQ2xhc3NdPVwiYXNzaXN0YW50TWVzc2FnZUljb25cIiBbc3R5bGUuLS1zcS1zaXplLnB4XT1cImljb25TaXplXCIgKm5nSWY9XCJtZXNzYWdlLnJvbGUgPT09ICdhc3Npc3RhbnQnXCI+PC9pPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwibWVzc2FnZT8ucm9sZSA9PT0gJ3VzZXInXCI+XG4gICAgPGkgW25nQ2xhc3NdPVwidXNlck1lc3NhZ2VJY29uXCIgW3N0eWxlLi0tc3Etc2l6ZS5weF09XCJpY29uU2l6ZVwiICpuZ0lmPVwiISF1c2VyTWVzc2FnZUljb247IGVsc2UgaW5pdGlhbHNBdmF0YXJcIj48L2k+XG4gICAgPG5nLXRlbXBsYXRlICNpbml0aWFsc0F2YXRhcj5cbiAgICAgIDxzcS1pbml0aWFscy1hdmF0YXIgW2Z1bGxOYW1lXT1cIm5hbWVcIj48L3NxLWluaXRpYWxzLWF2YXRhcj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvc3Bhbj5cblxuPCEtLSBNZXNzYWdlIGJvZHkgLS0+XG48ZGl2IGNsYXNzPVwiZmxleC1ncm93LTFcIiBzdHlsZT1cIm1pbi13aWR0aDogMDtcIiBbbmdDbGFzc109XCInbWVzc2FnZS0nK21lc3NhZ2Uucm9sZVwiPlxuXG4gIDxkaXYgKm5nSWY9XCJtZXNzYWdlLmFkZGl0aW9uYWxQcm9wZXJ0aWVzLiRwcm9ncmVzcyBhcyBwcm9ncmVzc1wiIGNsYXNzPVwic21hbGwgbXMtMyBtYi0yXCI+XG4gICAgPGEgaHJlZj1cIiNcIiAoY2xpY2spPVwiY29sbGFwc2VQcm9ncmVzcyA9ICFjb2xsYXBzZVByb2dyZXNzOyBmYWxzZVwiIGNsYXNzPVwidGV4dC1tdXRlZFwiPlxuICAgICAgVmlldyBwcm9ncmVzc1xuICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtY2hldnJvbi17e2NvbGxhcHNlUHJvZ3Jlc3M/ICdyaWdodCcgOiAnZG93bid9fVwiPjwvaT5cbiAgICA8L2E+XG4gICAgPHNxLWNvbGxhcHNlIFtjb2xsYXBzZWRdPVwiY29sbGFwc2VQcm9ncmVzc1wiPlxuICAgICAgPG5nLXRlbXBsYXRlPlxuICAgICAgICA8dWwgY2xhc3M9XCJsaXN0LXVuc3R5bGVkXCI+XG4gICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBzdGVwIG9mIHByb2dyZXNzXCI+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1mdyBmYS1jaGVjayB0ZXh0LXN1Y2Nlc3NcIiAqbmdJZj1cInN0ZXAuZG9uZVwiPjwvaT5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWZ3IGZhLXNwaW4gZmEtY2lyY2xlLW5vdGNoXCIgKm5nSWY9XCIhc3RlcC5kb25lXCI+PC9pPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yIGZ3LWJvbGRcIj57e3N0ZXAudGl0bGV9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic3RlcC5jb250ZW50XCI+OiB7e3N0ZXAuY29udGVudH19PC9zcGFuPlxuICAgICAgICAgIDwvbGk+XG4gICAgICAgIDwvdWw+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvc3EtY29sbGFwc2U+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJtZXNzYWdlLWNvbnRlbnRcIiAqbmdJZj1cIm1lc3NhZ2UuY29udGVudFwiPlxuXG4gICAgPGRpdiAqbmdJZj1cIm1lc3NhZ2U/LnJvbGUgPT09ICdhc3Npc3RhbnQnICYmIG1lc3NhZ2UubWVzc2FnZVR5cGUgPT09ICdDSEFSVCdcIj5cbiAgICAgIDxzcS1hc3Npc3RhbnQtY2hhcnQgW3Jhd0NoYXJ0RGF0YV09XCJtZXNzYWdlLmNvbnRlbnRcIj48L3NxLWFzc2lzdGFudC1jaGFydD5cbiAgICA8L2Rpdj5cblxuICAgIDxyZW1hcmsgKm5nSWY9XCJtZXNzYWdlPy5yb2xlID09PSAnYXNzaXN0YW50JyAmJiBtZXNzYWdlLm1lc3NhZ2VUeXBlID09PSAnTUFSS0RPV04nXCIgW21hcmtkb3duXT1cIm1lc3NhZ2UuY29udGVudFwiIFtwcm9jZXNzb3JdPVwicHJvY2Vzc29yXCI+XG5cbiAgICAgIDxuZy10ZW1wbGF0ZSByZW1hcmtUZW1wbGF0ZT1cImNoYXQtcmVmZXJlbmNlXCIgbGV0LXJlZj5cblxuICAgICAgICA8YSAqbmdJZj1cInJlZmVyZW5jZU1hcC5nZXQocmVmLnJlZklkKSBhcyBhdHRhY2htZW50OyBlbHNlIHN0YXRpY1JlZlRwbFwiXG4gICAgICAgICAgY2xhc3M9XCJyZWZlcmVuY2VcIlxuICAgICAgICAgIFtzcVRvb2x0aXBdPVwiYXR0YWNobWVudFwiXG4gICAgICAgICAgW3NxVG9vbHRpcFRlbXBsYXRlXT1cInRvb2x0aXBUcGxcIlxuICAgICAgICAgIFtob3ZlcmFibGVUb29sdGlwXT1cInRydWVcIlxuICAgICAgICAgID57e3JlZi5yZWZJZH19XG4gICAgICAgIDwvYT5cblxuICAgICAgICA8bmctdGVtcGxhdGUgI3N0YXRpY1JlZlRwbD5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInJlZmVyZW5jZVwiPnt7cmVmLnJlZklkfX08L3NwYW4+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgIDxuZy10ZW1wbGF0ZSByZW1hcmtUZW1wbGF0ZT1cInN0cmVhbWluZy1wbGFjZWhvbGRlclwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInBsYWNlaG9sZGVyLWdsb3dcIiAqbmdJZj1cInN0cmVhbWluZ1wiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGxhY2Vob2xkZXIgbXMtMVwiPjwvc3Bhbj5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgPG5nLXRlbXBsYXRlIHJlbWFya1RlbXBsYXRlPVwiY29kZVwiIGxldC1ub2RlPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZCBtYi0yXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxzcGFuPnt7bm9kZS5sYW5nfX08L3NwYW4+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBidG4tc21cIiAoY2xpY2spPVwiY29weUNvZGUobm9kZS52YWx1ZSlcIj48aSBjbGFzcz1cImZhciBmYS1mdyBmYS1jbGlwYm9hcmRcIj48L2k+IENvcHkgY29kZTwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxwcmUgY2xhc3M9XCJsYW5ndWFnZS17e25vZGUubGFuZ319IG15LTAgcm91bmRlZC0wIHJvdW5kZWQtYm90dG9tXCI+PGNvZGUgY2xhc3M9XCJsYW5ndWFnZS17e25vZGUubGFuZ319XCI+e3tub2RlLnZhbHVlfX08L2NvZGU+PC9wcmU+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgPG5nLXRlbXBsYXRlIHJlbWFya1RlbXBsYXRlPVwibGlua1wiIGxldC1ub2RlPlxuICAgICAgICA8YSBbaHJlZl09XCJub2RlLnVybFwiIHRhcmdldD1cIl9ibGFua1wiIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIj57e2dldExpbmtUZXh0KG5vZGUpfX08L2E+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPC9yZW1hcms+XG5cbiAgICA8cCAqbmdJZj1cIm1lc3NhZ2U/LnJvbGUgPT09ICd1c2VyJ1wiPnt7bWVzc2FnZS5jb250ZW50fX08L3A+XG5cbiAgICA8IS0tIExpc3Qgb2YgcmVmZXJlbmNlLCBpZiBhbnkgLS0+XG4gICAgPGRpdiAqbmdJZj1cInJlZmVyZW5jZXM/Lmxlbmd0aFwiIGNsYXNzPVwicmVmZXJlbmNlc1wiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJyZWZlcmVuY2VzLXRpdGxlXCI+UmVmZXJlbmNlczwvc3Bhbj4gPGkgY2xhc3M9XCJmYXMgcmVmZXJlbmNlcy1jb2xsYXBzZVwiIFtjbGFzcy5mYS1jaGV2cm9uLWRvd25dPVwic2hvd1JlZmVyZW5jZXNcIiBbY2xhc3MuZmEtY2hldnJvbi1yaWdodF09XCIhc2hvd1JlZmVyZW5jZXNcIiAoY2xpY2spPVwic2hvd1JlZmVyZW5jZXM9IXNob3dSZWZlcmVuY2VzXCI+PC9pPlxuICAgICAgPHNxLWNvbGxhcHNlIFtjb2xsYXBzZWRdPVwiIXNob3dSZWZlcmVuY2VzXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8dWw+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCByZWZlcmVuY2Ugb2YgcmVmZXJlbmNlc1wiPlxuICAgICAgICAgICAgICA8bGkgKm5nSWY9XCJyZWZlcmVuY2VNYXAuZ2V0KHJlZmVyZW5jZSkgYXMgYXR0YWNobWVudFwiICBjbGFzcz1cInRleHQtdHJ1bmNhdGVcIj5cbiAgICAgICAgICAgICAgICA8c3EtY2hhdC1yZWZlcmVuY2VcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5leHBhbmRlZF09XCJhdHRhY2htZW50LiRleHBhbmRlZFwiXG4gICAgICAgICAgICAgICAgICBbYXR0YWNobWVudF09XCJhdHRhY2htZW50XCJcbiAgICAgICAgICAgICAgICAgIFtyZWZlcmVuY2VdPVwicmVmZXJlbmNlXCJcbiAgICAgICAgICAgICAgICAgIChvcGVuUHJldmlldyk9XCJvcGVuQXR0YWNobWVudFByZXZpZXcoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAob3BlbkRvY3VtZW50KT1cIm9wZW5PcmlnaW5hbEF0dGFjaG1lbnQoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgIDwvc3EtY2hhdC1yZWZlcmVuY2U+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L3VsPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9zcS1jb2xsYXBzZT5cbiAgICA8L2Rpdj5cblxuICA8L2Rpdj5cblxuICAgIDwhLS0gRWRpdCAvIFJlZ2VuZXJhdGUgZmxvYXRpbmcgYWN0aW9ucyAtLT5cbiAgPGRpdiBjbGFzcz1cInNxLWNoYXQtbWVzc2FnZS1hY3Rpb25zXCIgKm5nSWY9XCJtZXNzYWdlXCI+XG4gICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc21cIiAqbmdJZj1cImNhbkVkaXRcIiBzcVRvb2x0aXA9XCJFZGl0IG1lc3NhZ2VcIiAoY2xpY2spPVwiZWRpdC5lbWl0KG1lc3NhZ2UpXCI+XG4gICAgICA8aSBjbGFzcz1cImZhcyBmYS1lZGl0XCI+PC9pPlxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXNtXCIgKm5nSWY9XCJjYW5Db3B5XCIgc3FUb29sdGlwPVwiQ29weSB0byBjbGlwYm9hcmRcIiAoY2xpY2spPVwiY29weU1lc3NhZ2UobWVzc2FnZSlcIj5cbiAgICAgIDxpIGNsYXNzPVwiZmFyIGZhLWNsaXBib2FyZFwiPjwvaT5cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zbVwiICpuZ0lmPVwiY2FuUmVnZW5lcmF0ZVwiIHNxVG9vbHRpcD1cIlJlZ2VuZXJhdGUgbWVzc2FnZVwiIChjbGljayk9XCJyZWdlbmVyYXRlLmVtaXQobWVzc2FnZSlcIj5cbiAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXN5bmMtYWx0XCI+PC9pPlxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXNtXCIgW2NsYXNzLmJvdW5jZV09XCJsaWtlZFwiICpuZ0lmPVwiY2FuTGlrZVwiIHNxVG9vbHRpcD1cIkxpa2UgdGhlIGFuc3dlclwiIChjbGljayk9XCJsaWtlLmVtaXQobWVzc2FnZSk7IGxpa2VkID0gdHJ1ZTtcIj5cbiAgICAgIDxpIGNsYXNzPVwiZmFyIGZhLXRodW1icy11cFwiPjwvaT5cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zbSBib3VuY2VcIiAgW2NsYXNzLmJvdW5jZV09XCJkaXNsaWtlZFwiICpuZ0lmPVwiY2FuRGlzbGlrZVwiIHNxVG9vbHRpcD1cIlJlcG9ydCBhbiBpc3N1ZVwiIChjbGljayk9XCJkaXNsaWtlLmVtaXQobWVzc2FnZSk7IGRpc2xpa2VkID0gdHJ1ZTtcIj5cbiAgICAgIDxpIGNsYXNzPVwiZmFyIGZhLXRodW1icy1kb3duXCI+PC9pPlxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXNtXCIgKm5nSWY9XCJjYW5EZWJ1Z1wiIHNxVG9vbHRpcD1cIlNob3cgTG9nIEluZm9ybWF0aW9uXCIgKGNsaWNrKT1cImRlYnVnLmVtaXQobWVzc2FnZSk7XCI+XG4gICAgICA8aSBjbGFzcz1cImZhciBmYS1saXN0LWFsdFwiPjwvaT5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBMaXN0IG9mIHN1Z2dlc3RlZCBhY3Rpb25zLCBpZiBhbnkgLS0+XG4gIDxkaXYgKm5nSWY9XCJzdWdnZXN0ZWRBY3Rpb25zXCIgY2xhc3M9XCJtdC0yIG1lc3NhZ2Utc3VnZ2VzdGlvblwiPlxuICAgIDxkaXYgY2xhc3M9XCJzdWdnZXN0ZWQtYWN0aW9uXCIgKm5nRm9yPVwibGV0IHN1Z2dlc3RlZEFjdGlvbiBvZiBzdWdnZXN0ZWRBY3Rpb25zXCIgKGNsaWNrKT1cInN1Z2dlc3RBY3Rpb24uZW1pdChzdWdnZXN0ZWRBY3Rpb24pXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibWVzc2FnZS1jb250ZW50XCI+XG4gICAgICAgIDxwPjxpIGNsYXNzPVwiZmFzIGZhLWNsaXBib2FyZC1xdWVzdGlvblwiPjwvaT4ge3tzdWdnZXN0ZWRBY3Rpb24uY29udGVudH19PC9wPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxuZy10ZW1wbGF0ZSAjdG9vbHRpcFRwbCBsZXQtcmVmPlxuICAgIDxzcS1jaGF0LXJlZmVyZW5jZVxuICAgICAgY2xhc3M9XCJleHBhbmRlZFwiXG4gICAgICBbYXR0YWNobWVudF09XCJyZWZcIlxuICAgICAgW3JlZmVyZW5jZV09XCJyZWYuY29udGV4dElkXCJcbiAgICAgIFtwYXJ0SWRdPVwicmVmLiRwYXJ0SWRcIlxuICAgICAgKG9wZW5QcmV2aWV3KT1cIm9wZW5BdHRhY2htZW50UHJldmlldygkZXZlbnQsIHJlZi4kcGFydElkKVwiXG4gICAgICAob3BlbkRvY3VtZW50KT1cIm9wZW5PcmlnaW5hbEF0dGFjaG1lbnQoJGV2ZW50LCByZWYuJHBhcnRJZClcIj5cbiAgICA8L3NxLWNoYXQtcmVmZXJlbmNlPlxuICA8L25nLXRlbXBsYXRlPlxuXG48L2Rpdj5cbiJdfQ==
|
|
@@ -1434,7 +1434,7 @@ class ChatMessageComponent {
|
|
|
1434
1434
|
};
|
|
1435
1435
|
}
|
|
1436
1436
|
ngOnChanges(changes) {
|
|
1437
|
-
var _a, _b;
|
|
1437
|
+
var _a, _b, _c, _d, _e;
|
|
1438
1438
|
if (changes.streaming) {
|
|
1439
1439
|
this.collapseProgress = !this.streaming;
|
|
1440
1440
|
}
|
|
@@ -1444,10 +1444,12 @@ class ChatMessageComponent {
|
|
|
1444
1444
|
for (let m of this.conversation) {
|
|
1445
1445
|
if (m.additionalProperties.$attachment) {
|
|
1446
1446
|
for (const attachment of m.additionalProperties.$attachment) {
|
|
1447
|
-
this.referenceMap.set('' + attachment.contextId, Object.assign(Object.assign({}, attachment), { $partId: (_b = attachment.parts) === null || _b === void 0 ? void 0 : _b[0].partId }));
|
|
1448
|
-
|
|
1449
|
-
|
|
1450
|
-
|
|
1447
|
+
this.referenceMap.set('' + attachment.contextId, Object.assign(Object.assign({}, attachment), { $partId: (_c = (_b = attachment.parts) === null || _b === void 0 ? void 0 : _b[0]) === null || _c === void 0 ? void 0 : _c.partId }));
|
|
1448
|
+
if (!!attachment.parts && attachment.parts.length > 0) {
|
|
1449
|
+
for (let i = 0; i < attachment.parts.length; i++) {
|
|
1450
|
+
const refId = `${attachment.contextId}.${attachment.parts[i].partId}`;
|
|
1451
|
+
this.referenceMap.set(refId, Object.assign(Object.assign({}, attachment), { $partId: (_e = (_d = attachment.parts) === null || _d === void 0 ? void 0 : _d[i]) === null || _e === void 0 ? void 0 : _e.partId }));
|
|
1452
|
+
}
|
|
1451
1453
|
}
|
|
1452
1454
|
}
|
|
1453
1455
|
}
|