speechrecorderng 2.22.5 → 2.23.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.
@@ -111,4 +111,4 @@ export class PromptitemUtil {
111
111
  return description;
112
112
  }
113
113
  }
114
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NyaXB0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3BlZWNocmVjb3JkZXJuZy9zcmMvbGliL3NwZWVjaHJlY29yZGVyL3NjcmlwdC9zY3JpcHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBaUZBLE1BQU0sT0FBTyxhQUFhO0lBRXhCLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxTQUFtQjtRQUMxQyxJQUFJLEVBQUUsR0FBQyxFQUFFLENBQUM7UUFDVixJQUFJLENBQUMsR0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO1FBQ3JCLElBQUcsQ0FBQyxJQUFFLElBQUksRUFBRTtZQUNWLElBQUksSUFBSSxHQUFDLENBQUMsQ0FBQyxNQUFNLENBQUE7WUFDakIsSUFBRyxJQUFJLEVBQUU7Z0JBQ1AsS0FBSSxJQUFJLEdBQUcsR0FBQyxDQUFDLEVBQUMsR0FBRyxHQUFDLElBQUksQ0FBQyxNQUFNLEVBQUMsR0FBRyxFQUFFLEVBQUM7b0JBQ2xDLElBQUksR0FBRyxHQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDbEIsSUFBSSxJQUFJLEdBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQztvQkFDbkIsS0FBSSxJQUFJLEVBQUUsR0FBQyxDQUFDLEVBQUMsRUFBRSxHQUFDLElBQUksQ0FBQyxNQUFNLEVBQUMsRUFBRSxFQUFFLEVBQUM7d0JBQzdCLElBQUksS0FBSyxHQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQzt3QkFDbkIsSUFBSSxHQUFHLEdBQUUsS0FBSyxDQUFDLElBQUksQ0FBQzt3QkFDdEIsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLE1BQU0sRUFBQzs0QkFDeEIsSUFBRyxPQUFPLEdBQUcsS0FBSyxRQUFRLEVBQUM7Z0NBQ3pCLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFTLEdBQUcsQ0FBQyxDQUFDOzZCQUM3QjtpQ0FBSTtnQ0FDSCxJQUFJLFFBQVEsR0FBTyxHQUFHLENB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Q3BCLElBQUksT0FBTyxHQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUMzQyxXQUFXLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztpQkFDM0M7YUFDRjtTQUNGO1FBQ0QsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLGNBQWM7SUFDekIsTUFBTSxDQUFDLGlCQUFpQixDQUFDLFVBQXNCO1FBRTdDLElBQUksR0FBRyxHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUM7UUFDaEMsSUFBSSxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ3JCLElBQUksR0FBRyxFQUFFO1lBRVAsSUFBSSxPQUFPLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQztZQUN6QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsT0FBTyxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUNoQyxJQUFJLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2hCLFdBQVcsR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDaEUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLE9BQU8sRUFBRTtvQkFDbkIsZ0JBQWdCO29CQUNoQixXQUFXLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDeEM7YUFDRjtTQUNGO1FBQ0QsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiXHJcbmV4cG9ydCB0eXBlIE1vZGUgPSBcIk1BTlVBTFwiIHwgXCJBVVRPUFJPR1JFU1NcIiB8IFwiQVVUT1JFQ09SRElOR1wiO1xyXG5leHBvcnQgdHlwZSBQcm9tcHRQaGFzZSA9IFwiSURMRVwiIHwgXCJQUkVSRUNPUkRJTkdcIiB8IFwiUkVDT1JESU5HXCI7XHJcblxyXG5leHBvcnQgdHlwZSBPcmRlciA9ICdTRVFVRU5USUFMJyB8ICdSQU5ET00nIHwgJ1JBTkRPTUlaRUQnO1xyXG5cclxuZXhwb3J0IHR5cGUgRGVjb3JhdGlvbiA9J3VuZGVybGluZSdcclxuZXhwb3J0IHR5cGUgU3R5bGUgPSdpdGFsaWMnIHwgJ25vcm1hbCdcclxuZXhwb3J0IHR5cGUgRm9udFdlaWdodD0nbm9ybWFsJyB8ICdib2xkJ1xyXG5leHBvcnQgdHlwZSBCbG9ja1R5cGU9J3AnO1xyXG5leHBvcnQgdHlwZSBUZXh0VHlwZT0ndGV4dCcgfCAnZm9udCc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFJlY2luc3RydWN0aW9uc3tcclxuICByZWNpbnN0cnVjdGlvbnM6c3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFRleHQge1xyXG4gIHR5cGU6IFRleHRUeXBlLFxyXG4gIGNvbG9yPyA6IHN0cmluZyxcclxuICBkZWNvcmF0aW9uPyA6IERlY29yYXRpb24sXHJcbiAgc2l6ZT86IHN0cmluZyxcclxuICB3ZWlnaHQ/OiBGb250V2VpZ2h0LFxyXG4gIHN0eWxlPzogU3R5bGUsXHJcbiAgdGV4dCA6IHN0cmluZyB8IFRleHQ7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQmxvY2sge1xyXG4gIHR5cGU6IEJsb2NrVHlwZSxcclxuICB0ZXh0czogQXJyYXk8VGV4dD5cclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIEJvZHl7XHJcbiAgYmxvY2tzPzogQXJyYXk8QmxvY2s+LFxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFByb21wdERvY3tcclxuICBib2R5PzogQm9keVxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIE1lZGlhaXRlbSB7XHJcbiAgdGV4dD86IHN0cmluZyxcclxuICBzcmM/OiBzdHJpbmcsXHJcbiAgcHJvbXB0RG9jPzogUHJvbXB0RG9jLFxyXG4gIG1pbWV0eXBlPzpzdHJpbmcsXHJcbiAgZGVmYXVsdFZpcnR1YWxWaWV3Qm94PzpWaXJ0dWFsVmlld0JveCxcclxuICBhbHQ/OnN0cmluZ1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFByb21wdEl0ZW0ge1xyXG4gIHR5cGU/OnN0cmluZztcclxuICBpdGVtY29kZT86IHN0cmluZyxcclxuICBwcmVyZWNvcmRpbmc6IG51bWJlcixcclxuICByZWNkdXJhdGlvbj86IG51bWJlcixcclxuICBwb3N0cmVjb3JkaW5nOiBudW1iZXIsXHJcbiAgcmVjaW5zdHJ1Y3Rpb25zPzogUmVjaW5zdHJ1Y3Rpb25zLFxyXG4gIG1lZGlhaXRlbXM6IEFycmF5PE1lZGlhaXRlbT5cclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBHcm91cCB7XHJcbiAgb3JkZXI/Ok9yZGVyO1xyXG4gIHByb21wdEl0ZW1zOiBBcnJheTxQcm9tcHRJdGVtPjtcclxuICBfc2h1ZmZsZWRQcm9tcHRJdGVtczogQXJyYXk8UHJvbXB0SXRlbT47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU2VjdGlvbiB7XHJcbiAgbW9kZTogTW9kZTtcclxuICBwcm9tcHRwaGFzZTogUHJvbXB0UGhhc2U7XHJcbiAgb3JkZXI/OiBPcmRlcjtcclxuICB0cmFpbmluZzogYm9vbGVhbjtcclxuICBncm91cHM6IEFycmF5PEdyb3VwPjtcclxuICBfc2h1ZmZsZWRHcm91cHM6IEFycmF5PEdyb3VwPjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBWaXJ0dWFsVmlld0JveHtcclxuICBoZWlnaHQ6bnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNjcmlwdCB7XHJcbiAgdmlydHVhbFZpZXdCb3g/OlZpcnR1YWxWaWV3Qm94O1xyXG4gIHNlY3Rpb25zOiBBcnJheTxTZWN0aW9uPjtcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFByb21wdERvY1V0aWx7XHJcblxyXG4gIHN0YXRpYyB0b1BsYWluVGV4dFN0cmluZyhwcm9tcHREb2M6UHJvbXB0RG9jKTpzdHJpbmd7XHJcbiAgICBsZXQgcHQ9XCJcIjtcclxuICAgIGxldCBiPXByb21wdERvYy5ib2R5O1xyXG4gICAgaWYoYiE9bnVsbCkge1xyXG4gICAgICBsZXQgYmxrcz1iLmJsb2Nrc1xyXG4gICAgICBpZihibGtzKSB7XHJcbiAgICAgICAgZm9yKGxldCBibGk9MDtibGk8Ymxrcy5sZW5ndGg7YmxpKyspe1xyXG4gICAgICAgICAgbGV0IGJsaz1ibGtzW2JsaV07XHJcbiAgICAgICAgICBsZXQgdHh0cz1ibGsudGV4dHM7XHJcbiAgICAgICAgICBmb3IobGV0IHRpPTA7dGk8dHh0cy5sZW5ndGg7dGkrKyl7XHJcbiAgICAgICAgICAgICAgbGV0IHR4dEVsPXR4dHNbdGldO1xyXG4gICAgICAgICAgICAgIGxldCB0eHQgPXR4dEVsLnRleHQ7XHJcbiAgICAgICAgICAgIGlmKCB0eHRFbC50eXBlID09PSAnZm9udCcpe1xyXG4gICAgICAgICAgICAgIGlmKHR5cGVvZiB0eHQgPT09ICdzdHJpbmcnKXtcclxuICAgICAgICAgICAgICAgIHB0ID0gcHQuY29uY2F0KDxzdHJpbmc+dHh0KTtcclxuICAgICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgIGxldCBzdWJUeHRFbD08VGV4dD50eHQ7XHJcbiAgICAgICAgICAgICAgICBsZXQgc3ViVHh0PXN1YlR4dEVsLnRleHQ7XHJcbiAgICAgICAgICAgICAgICBpZih0eXBlb2Ygc3ViVHh0ID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgICAgICAgICBwdD1wdC5jb25jYXQoc3ViVHh0KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1lbHNlIGlmKHR5cGVvZiB0eHQgPT09ICdzdHJpbmcnKXtcclxuICAgICAgICAgICAgICBwdCA9IHB0LmNvbmNhdCg8c3RyaW5nPnR4dCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBwdDtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBNZWRpYWl0ZW1VdGlsIHtcclxuICBzdGF0aWMgdG9QbGFpblRleHRTdHJpbmcobWVkaWFpdGVtOiBNZWRpYWl0ZW0pOiBzdHJpbmd8bnVsbCB7XHJcblxyXG4gICAgbGV0IHR4dCA9IG1lZGlhaXRlbS50ZXh0O1xyXG4gICAgbGV0IHBkID0gbWVkaWFpdGVtLnByb21wdERvYztcclxuICAgIGlmICh0eHQgPT0gbnVsbCkge1xyXG4gICAgICBsZXQgcHQgPSBudWxsO1xyXG4gICAgICBpZiAocGQgIT0gbnVsbCkge1xyXG4gICAgICAgIHB0ID0gUHJvbXB0RG9jVXRpbC50b1BsYWluVGV4dFN0cmluZyhwZCk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHB0O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHR4dDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0YXRpYyBkZXNjcmlwdGlvbihtaTogTWVkaWFpdGVtKTogc3RyaW5nIHtcclxuICAgIGxldCBkZXNjcmlwdGlvbiA9IFwiXCI7XHJcblxyXG4gICAgaWYgKG1pLmFsdCAhPSBudWxsKSB7XHJcbiAgICAgIGRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb24uY29uY2F0KG1pLmFsdClcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxldCBzcmMgPSBtaS5zcmM7XHJcbiAgICAgIGxldCBtaW1lVHlwZSA9IG1pLm1pbWV0eXBlO1xyXG4gICAgICBpZiAoIW1pbWVUeXBlKSB7XHJcbiAgICAgICAgbWltZVR5cGUgPSAndGV4dC9wbGFpbic7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKG1pbWVUeXBlLnN0YXJ0c1dpdGgoXCJpbWFnZVwiKSkge1xyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb24uY29uY2F0KFwiSU1BR0U6IFwiKTtcclxuICAgICAgfSBlbHNlIGlmIChtaW1lVHlwZS5zdGFydHNXaXRoKFwiYXVkaW9cIikpIHtcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uLmNvbmNhdChcIkFVRElPOiBcIik7XHJcbiAgICAgIH0gZWxzZSBpZiAobWltZVR5cGUuc3RhcnRzV2l0aChcInZpZGVvXCIpKSB7XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbi5jb25jYXQoXCJWSURFTzogXCIpO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCBwcm9tcHRUZXh0ID0gTWVkaWFpdGVtVXRpbC50b1BsYWluVGV4dFN0cmluZyhtaSk7XHJcbiAgICAgIGlmIChwcm9tcHRUZXh0ICE9IG51bGwpIHtcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uLmNvbmNhdChwcm9tcHRUZXh0KTtcclxuICAgICAgfSBlbHNlIGlmIChzcmMgIT0gbnVsbCkge1xyXG4gICAgICAgIGxldCBzcmNQbjtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgbGV0IHNyY1VybCA9IG5ldyBVUkwoc3JjKTtcclxuICAgICAgICAgIHNyY1BuPXNyY1VybC5wYXRobmFtZTtcclxuICAgICAgICB9Y2F0Y2h7XHJcbiAgICAgICAgICBzcmNQbj1zcmM7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBHZXQgZmlsZW5hbWUgd2l0aG91dCBleHRlbnNpb25cclxuICAgICAgICBsZXQgc3JjRm5NPXNyY1BuLm1hdGNoKC8oW15cXC9dKikkLyk7XHJcbiAgICAgICAgaWYoc3JjRm5NICYmIHNyY0ZuTS5sZW5ndGg9PTIpe1xyXG4gICAgICAgICAgbGV0IHNyY0ZuPXNyY0ZuTVsxXTtcclxuICAgICAgICAgIGxldCBzcmNGbk5tPXNyY0ZuLnJlcGxhY2UoL1tcXC5dW15cXC5dKi8sJycpO1xyXG4gICAgICAgICAgZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbi5jb25jYXQoc3JjRm5ObSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZGVzY3JpcHRpb247XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgUHJvbXB0aXRlbVV0aWwge1xyXG4gIHN0YXRpYyB0b1BsYWluVGV4dFN0cmluZyhwcm9tcHRJdGVtOiBQcm9tcHRJdGVtKTogc3RyaW5nIHtcclxuXHJcbiAgICBsZXQgbWlzID0gcHJvbXB0SXRlbS5tZWRpYWl0ZW1zO1xyXG4gICAgbGV0IGRlc2NyaXB0aW9uID0gXCJcIjtcclxuICAgIGlmIChtaXMpIHtcclxuXHJcbiAgICAgIGxldCBtaXNTaXplID0gbWlzLmxlbmd0aDtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtaXNTaXplOyBpKyspIHtcclxuICAgICAgICBsZXQgbWkgPSBtaXNbaV07XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbi5jb25jYXQoTWVkaWFpdGVtVXRpbC5kZXNjcmlwdGlvbihtaSkpO1xyXG4gICAgICAgIGlmIChpICsgMSA8IG1pc1NpemUpIHtcclxuICAgICAgICAgIC8vIG5vdCBsYXN0IGl0ZW1cclxuICAgICAgICAgIGRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb24uY29uY2F0KFwiLCBcIik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZGVzY3JpcHRpb247XHJcbiAgfVxyXG59XHJcblxyXG5cclxuIl19
114
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NyaXB0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3BlZWNocmVjb3JkZXJuZy9zcmMvbGliL3NwZWVjaHJlY29yZGVyL3NjcmlwdC9zY3JpcHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBaUZBLE1BQU0sT0FBTyxhQUFhO0lBRXhCLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxTQUFtQjtRQUMxQyxJQUFJLEVBQUUsR0FBQyxFQUFFLENBQUM7UUFDVixJQUFJLENBQUMsR0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO1FBQ3JCLElBQUcsQ0FBQyxJQUFFLElBQUksRUFBRTtZQUNWLElBQUksSUFBSSxHQUFDLENBQUMsQ0FBQyxNQUFNLENBQUE7WUFDakIsSUFBRyxJQUFJLEVBQUU7Z0JBQ1AsS0FBSSxJQUFJLEdBQUcsR0FBQyxDQUFDLEVBQUMsR0FBRyxHQUFDLElBQUksQ0FBQyxNQUFNLEVBQUMsR0FBRyxFQUFFLEVBQUM7b0JBQ2xDLElBQUksR0FBRyxHQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDbEIsSUFBSSxJQUFJLEdBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQztvQkFDbkIsS0FBSSxJQUFJLEVBQUUsR0FBQyxDQUFDLEVBQUMsRUFBRSxHQUFDLElBQUksQ0FBQyxNQUFNLEVBQUMsRUFBRSxFQUFFLEVBQUM7d0JBQzdCLElBQUksS0FBSyxHQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQzt3QkFDbkIsSUFBSSxHQUFHLEdBQUUsS0FBSyxDQUFDLElBQUksQ0FBQzt3QkFDdEIsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLE1BQU0sRUFBQzs0QkFDeEIsSUFBRyxPQUFPLEdBQUcsS0FBSyxRQUFRLEVBQUM7Z0NBQ3pCLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFTLEdBQUcsQ0FBQyxDQUFDOzZCQUM3QjtpQ0FBSTtnQ0FDSCxJQUFJLFFBQVEsR0FBTyxHQUFHLENB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Q3BCLElBQUksT0FBTyxHQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUMzQyxXQUFXLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztpQkFDM0M7YUFDRjtTQUNGO1FBQ0QsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLGNBQWM7SUFDekIsTUFBTSxDQUFDLGlCQUFpQixDQUFDLFVBQXNCO1FBRTdDLElBQUksR0FBRyxHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUM7UUFDaEMsSUFBSSxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ3JCLElBQUksR0FBRyxFQUFFO1lBRVAsSUFBSSxPQUFPLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQztZQUN6QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsT0FBTyxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUNoQyxJQUFJLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2hCLFdBQVcsR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDaEUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLE9BQU8sRUFBRTtvQkFDbkIsZ0JBQWdCO29CQUNoQixXQUFXLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDeEM7YUFDRjtTQUNGO1FBQ0QsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiXHJcbmV4cG9ydCB0eXBlIE1vZGUgPSBcIk1BTlVBTFwiIHwgXCJBVVRPUFJPR1JFU1NcIiB8IFwiQVVUT1JFQ09SRElOR1wiO1xyXG5leHBvcnQgdHlwZSBQcm9tcHRQaGFzZSA9IFwiSURMRVwiIHwgXCJQUkVSRUNPUkRJTkdcIiB8IFwiUFJFUkVDT1JESU5HT05MWVwiIHwgXCJSRUNPUkRJTkdcIjtcclxuXHJcbmV4cG9ydCB0eXBlIE9yZGVyID0gJ1NFUVVFTlRJQUwnIHwgJ1JBTkRPTScgfCAnUkFORE9NSVpFRCc7XHJcblxyXG5leHBvcnQgdHlwZSBEZWNvcmF0aW9uID0ndW5kZXJsaW5lJ1xyXG5leHBvcnQgdHlwZSBTdHlsZSA9J2l0YWxpYycgfCAnbm9ybWFsJ1xyXG5leHBvcnQgdHlwZSBGb250V2VpZ2h0PSdub3JtYWwnIHwgJ2JvbGQnXHJcbmV4cG9ydCB0eXBlIEJsb2NrVHlwZT0ncCc7XHJcbmV4cG9ydCB0eXBlIFRleHRUeXBlPSd0ZXh0JyB8ICdmb250JztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUmVjaW5zdHJ1Y3Rpb25ze1xyXG4gIHJlY2luc3RydWN0aW9uczpzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgVGV4dCB7XHJcbiAgdHlwZTogVGV4dFR5cGUsXHJcbiAgY29sb3I/IDogc3RyaW5nLFxyXG4gIGRlY29yYXRpb24/IDogRGVjb3JhdGlvbixcclxuICBzaXplPzogc3RyaW5nLFxyXG4gIHdlaWdodD86IEZvbnRXZWlnaHQsXHJcbiAgc3R5bGU/OiBTdHlsZSxcclxuICB0ZXh0IDogc3RyaW5nIHwgVGV4dDtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBCbG9jayB7XHJcbiAgdHlwZTogQmxvY2tUeXBlLFxyXG4gIHRleHRzOiBBcnJheTxUZXh0PlxyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgQm9keXtcclxuICBibG9ja3M/OiBBcnJheTxCbG9jaz4sXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUHJvbXB0RG9je1xyXG4gIGJvZHk/OiBCb2R5XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTWVkaWFpdGVtIHtcclxuICB0ZXh0Pzogc3RyaW5nLFxyXG4gIHNyYz86IHN0cmluZyxcclxuICBwcm9tcHREb2M/OiBQcm9tcHREb2MsXHJcbiAgbWltZXR5cGU/OnN0cmluZyxcclxuICBkZWZhdWx0VmlydHVhbFZpZXdCb3g/OlZpcnR1YWxWaWV3Qm94LFxyXG4gIGFsdD86c3RyaW5nXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUHJvbXB0SXRlbSB7XHJcbiAgdHlwZT86c3RyaW5nO1xyXG4gIGl0ZW1jb2RlPzogc3RyaW5nLFxyXG4gIHByZXJlY29yZGluZzogbnVtYmVyLFxyXG4gIHJlY2R1cmF0aW9uPzogbnVtYmVyLFxyXG4gIHBvc3RyZWNvcmRpbmc6IG51bWJlcixcclxuICByZWNpbnN0cnVjdGlvbnM/OiBSZWNpbnN0cnVjdGlvbnMsXHJcbiAgbWVkaWFpdGVtczogQXJyYXk8TWVkaWFpdGVtPlxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEdyb3VwIHtcclxuICBvcmRlcj86T3JkZXI7XHJcbiAgcHJvbXB0SXRlbXM6IEFycmF5PFByb21wdEl0ZW0+O1xyXG4gIF9zaHVmZmxlZFByb21wdEl0ZW1zOiBBcnJheTxQcm9tcHRJdGVtPjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTZWN0aW9uIHtcclxuICBtb2RlOiBNb2RlO1xyXG4gIHByb21wdHBoYXNlOiBQcm9tcHRQaGFzZTtcclxuICBvcmRlcj86IE9yZGVyO1xyXG4gIHRyYWluaW5nOiBib29sZWFuO1xyXG4gIGdyb3VwczogQXJyYXk8R3JvdXA+O1xyXG4gIF9zaHVmZmxlZEdyb3VwczogQXJyYXk8R3JvdXA+O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFZpcnR1YWxWaWV3Qm94e1xyXG4gIGhlaWdodDpudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU2NyaXB0IHtcclxuICB2aXJ0dWFsVmlld0JveD86VmlydHVhbFZpZXdCb3g7XHJcbiAgc2VjdGlvbnM6IEFycmF5PFNlY3Rpb24+O1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgUHJvbXB0RG9jVXRpbHtcclxuXHJcbiAgc3RhdGljIHRvUGxhaW5UZXh0U3RyaW5nKHByb21wdERvYzpQcm9tcHREb2MpOnN0cmluZ3tcclxuICAgIGxldCBwdD1cIlwiO1xyXG4gICAgbGV0IGI9cHJvbXB0RG9jLmJvZHk7XHJcbiAgICBpZihiIT1udWxsKSB7XHJcbiAgICAgIGxldCBibGtzPWIuYmxvY2tzXHJcbiAgICAgIGlmKGJsa3MpIHtcclxuICAgICAgICBmb3IobGV0IGJsaT0wO2JsaTxibGtzLmxlbmd0aDtibGkrKyl7XHJcbiAgICAgICAgICBsZXQgYmxrPWJsa3NbYmxpXTtcclxuICAgICAgICAgIGxldCB0eHRzPWJsay50ZXh0cztcclxuICAgICAgICAgIGZvcihsZXQgdGk9MDt0aTx0eHRzLmxlbmd0aDt0aSsrKXtcclxuICAgICAgICAgICAgICBsZXQgdHh0RWw9dHh0c1t0aV07XHJcbiAgICAgICAgICAgICAgbGV0IHR4dCA9dHh0RWwudGV4dDtcclxuICAgICAgICAgICAgaWYoIHR4dEVsLnR5cGUgPT09ICdmb250Jyl7XHJcbiAgICAgICAgICAgICAgaWYodHlwZW9mIHR4dCA9PT0gJ3N0cmluZycpe1xyXG4gICAgICAgICAgICAgICAgcHQgPSBwdC5jb25jYXQoPHN0cmluZz50eHQpO1xyXG4gICAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgbGV0IHN1YlR4dEVsPTxUZXh0PnR4dDtcclxuICAgICAgICAgICAgICAgIGxldCBzdWJUeHQ9c3ViVHh0RWwudGV4dDtcclxuICAgICAgICAgICAgICAgIGlmKHR5cGVvZiBzdWJUeHQgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgICAgICAgIHB0PXB0LmNvbmNhdChzdWJUeHQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfWVsc2UgaWYodHlwZW9mIHR4dCA9PT0gJ3N0cmluZycpe1xyXG4gICAgICAgICAgICAgIHB0ID0gcHQuY29uY2F0KDxzdHJpbmc+dHh0KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHB0O1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIE1lZGlhaXRlbVV0aWwge1xyXG4gIHN0YXRpYyB0b1BsYWluVGV4dFN0cmluZyhtZWRpYWl0ZW06IE1lZGlhaXRlbSk6IHN0cmluZ3xudWxsIHtcclxuXHJcbiAgICBsZXQgdHh0ID0gbWVkaWFpdGVtLnRleHQ7XHJcbiAgICBsZXQgcGQgPSBtZWRpYWl0ZW0ucHJvbXB0RG9jO1xyXG4gICAgaWYgKHR4dCA9PSBudWxsKSB7XHJcbiAgICAgIGxldCBwdCA9IG51bGw7XHJcbiAgICAgIGlmIChwZCAhPSBudWxsKSB7XHJcbiAgICAgICAgcHQgPSBQcm9tcHREb2NVdGlsLnRvUGxhaW5UZXh0U3RyaW5nKHBkKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gcHQ7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdHh0O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIGRlc2NyaXB0aW9uKG1pOiBNZWRpYWl0ZW0pOiBzdHJpbmcge1xyXG4gICAgbGV0IGRlc2NyaXB0aW9uID0gXCJcIjtcclxuXHJcbiAgICBpZiAobWkuYWx0ICE9IG51bGwpIHtcclxuICAgICAgZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbi5jb25jYXQobWkuYWx0KVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbGV0IHNyYyA9IG1pLnNyYztcclxuICAgICAgbGV0IG1pbWVUeXBlID0gbWkubWltZXR5cGU7XHJcbiAgICAgIGlmICghbWltZVR5cGUpIHtcclxuICAgICAgICBtaW1lVHlwZSA9ICd0ZXh0L3BsYWluJztcclxuICAgICAgfVxyXG4gICAgICBpZiAobWltZVR5cGUuc3RhcnRzV2l0aChcImltYWdlXCIpKSB7XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbi5jb25jYXQoXCJJTUFHRTogXCIpO1xyXG4gICAgICB9IGVsc2UgaWYgKG1pbWVUeXBlLnN0YXJ0c1dpdGgoXCJhdWRpb1wiKSkge1xyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb24uY29uY2F0KFwiQVVESU86IFwiKTtcclxuICAgICAgfSBlbHNlIGlmIChtaW1lVHlwZS5zdGFydHNXaXRoKFwidmlkZW9cIikpIHtcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uLmNvbmNhdChcIlZJREVPOiBcIik7XHJcbiAgICAgIH1cclxuICAgICAgbGV0IHByb21wdFRleHQgPSBNZWRpYWl0ZW1VdGlsLnRvUGxhaW5UZXh0U3RyaW5nKG1pKTtcclxuICAgICAgaWYgKHByb21wdFRleHQgIT0gbnVsbCkge1xyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb24uY29uY2F0KHByb21wdFRleHQpO1xyXG4gICAgICB9IGVsc2UgaWYgKHNyYyAhPSBudWxsKSB7XHJcbiAgICAgICAgbGV0IHNyY1BuO1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICBsZXQgc3JjVXJsID0gbmV3IFVSTChzcmMpO1xyXG4gICAgICAgICAgc3JjUG49c3JjVXJsLnBhdGhuYW1lO1xyXG4gICAgICAgIH1jYXRjaHtcclxuICAgICAgICAgIHNyY1BuPXNyYztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIEdldCBmaWxlbmFtZSB3aXRob3V0IGV4dGVuc2lvblxyXG4gICAgICAgIGxldCBzcmNGbk09c3JjUG4ubWF0Y2goLyhbXlxcL10qKSQvKTtcclxuICAgICAgICBpZihzcmNGbk0gJiYgc3JjRm5NLmxlbmd0aD09Mil7XHJcbiAgICAgICAgICBsZXQgc3JjRm49c3JjRm5NWzFdO1xyXG4gICAgICAgICAgbGV0IHNyY0ZuTm09c3JjRm4ucmVwbGFjZSgvW1xcLl1bXlxcLl0qLywnJyk7XHJcbiAgICAgICAgICBkZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uLmNvbmNhdChzcmNGbk5tKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBkZXNjcmlwdGlvbjtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBQcm9tcHRpdGVtVXRpbCB7XHJcbiAgc3RhdGljIHRvUGxhaW5UZXh0U3RyaW5nKHByb21wdEl0ZW06IFByb21wdEl0ZW0pOiBzdHJpbmcge1xyXG5cclxuICAgIGxldCBtaXMgPSBwcm9tcHRJdGVtLm1lZGlhaXRlbXM7XHJcbiAgICBsZXQgZGVzY3JpcHRpb24gPSBcIlwiO1xyXG4gICAgaWYgKG1pcykge1xyXG5cclxuICAgICAgbGV0IG1pc1NpemUgPSBtaXMubGVuZ3RoO1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1pc1NpemU7IGkrKykge1xyXG4gICAgICAgIGxldCBtaSA9IG1pc1tpXTtcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uLmNvbmNhdChNZWRpYWl0ZW1VdGlsLmRlc2NyaXB0aW9uKG1pKSk7XHJcbiAgICAgICAgaWYgKGkgKyAxIDwgbWlzU2l6ZSkge1xyXG4gICAgICAgICAgLy8gbm90IGxhc3QgaXRlbVxyXG4gICAgICAgICAgZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbi5jb25jYXQoXCIsIFwiKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBkZXNjcmlwdGlvbjtcclxuICB9XHJcbn1cclxuXHJcblxyXG4iXX0=
@@ -5,7 +5,6 @@ import { AudioContextProvider } from "../../../audio/context";
5
5
  import { AudioClip } from "../../../audio/persistor";
6
6
  import { Selection } from "../../../audio/persistor";
7
7
  import { Action } from "../../../action/action";
8
- import { SprRecordingFile } from "../../recording";
9
8
  import { RecordingFileUtil } from "./recording-file";
10
9
  import * as i0 from "@angular/core";
11
10
  import * as i1 from "./recordingfile-service";
@@ -114,7 +113,7 @@ export class RecordingFileViewComponent extends AudioDisplayPlayer {
114
113
  let cRfs = this.availRecFiles[this.posInList];
115
114
  let availVersionCnt = cRfs.length;
116
115
  for (let cRf of cRfs) {
117
- if (cRf instanceof SprRecordingFile) {
116
+ if (cRf.version != null) {
118
117
  if (cRf.version === version) {
119
118
  toRfId = cRf.recordingFileId;
120
119
  break;
@@ -141,11 +140,14 @@ export class RecordingFileViewComponent extends AudioDisplayPlayer {
141
140
  positionInList() {
142
141
  if (this.availRecFiles && this.recordingFile) {
143
142
  let cic = this.recordingFile.itemCode;
143
+ if (!cic && this.recordingFile.recording && this.recordingFile.recording.itemcode) {
144
+ cic = this.recordingFile.recording.itemcode;
145
+ }
144
146
  if (cic) {
145
147
  let itemCnt = this.availRecFiles.length;
146
148
  for (let rfdi = 0; rfdi < itemCnt; rfdi++) {
147
149
  let arRf = this.availRecFiles[rfdi][0];
148
- if (arRf instanceof SprRecordingFile) {
150
+ if (arRf.recording) {
149
151
  let ar = arRf.recording;
150
152
  if (cic === ar.itemcode) {
151
153
  return rfdi;
@@ -175,7 +177,7 @@ export class RecordingFileViewComponent extends AudioDisplayPlayer {
175
177
  if (arfs) {
176
178
  this.versions = new Array();
177
179
  for (let arf of arfs) {
178
- if (arf instanceof SprRecordingFile) {
180
+ if (arf.recording?.itemcode) {
179
181
  this.versions.push(arf.version);
180
182
  }
181
183
  }
@@ -183,6 +185,17 @@ export class RecordingFileViewComponent extends AudioDisplayPlayer {
183
185
  }
184
186
  }
185
187
  }
188
+ if (this.recordingFile) {
189
+ if (this.recordingFile.version) {
190
+ this.recordingFileVersion = this.recordingFile.version;
191
+ }
192
+ else {
193
+ this.recordingFileVersion = 0;
194
+ }
195
+ }
196
+ else {
197
+ this.recordingFileVersion = null;
198
+ }
186
199
  this.updateActions();
187
200
  }
188
201
  loadRecFile(rfId) {
@@ -334,6 +347,15 @@ export class RecordingFileViewComponent extends AudioDisplayPlayer {
334
347
  }
335
348
  }
336
349
  });
350
+ for (let avRf of this.availRecFiles) {
351
+ if (avRf[0] && avRf[0].recording) {
352
+ let os = avRf[0].recording.itemcode + ': versions: ';
353
+ for (let avRfV of avRf) {
354
+ os += avRfV.version + '/';
355
+ }
356
+ console.debug(os);
357
+ }
358
+ }
337
359
  this.updatePos();
338
360
  this.naviInfoLoading = false;
339
361
  this.ref.detectChanges();
@@ -412,4 +434,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.1", ngImpor
412
434
  type: ViewChild,
413
435
  args: [AudioDisplayScrollPane]
414
436
  }] } });
415
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb3JkaW5nLWZpbGUtdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zcGVlY2hyZWNvcmRlcm5nL3NyYy9saWIvc3BlZWNocmVjb3JkZXIvc2Vzc2lvbi9yZWNvcmRpbmdmaWxlL3JlY29yZGluZy1maWxlLXZpZXcuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsU0FBUyxHQUdWLE1BQU0sZUFBZSxDQUFBO0FBUXRCLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBRS9ELE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLDZDQUE2QyxDQUFDO0FBQ25GLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQzVELE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUNuRCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFFbkQsT0FBTyxFQUFDLE1BQU0sRUFBYyxNQUFNLHdCQUF3QixDQUFDO0FBRzNELE9BQU8sRUFBZ0IsZ0JBQWdCLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRSxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQzs7Ozs7Ozs7Ozs7QUFHbkQsTUFBTSxPQUFPLGFBQWE7Q0FFekI7QUFpREQsTUFBTSxPQUFPLDBCQUEyQixTQUFRLGtCQUFrQjtJQTJCaEUsWUFBc0Isb0JBQTBDLEVBQVksZ0JBQWtDLEVBQVksY0FBOEIsRUFBWSxNQUFhLEVBQVcsS0FBcUIsRUFBWSxHQUFzQixFQUFZLElBQWdCLEVBQVksTUFBaUI7UUFDMVMsS0FBSyxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUE7UUFESCx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBQVkscUJBQWdC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Q0FBQTtvQkFDaEIsSUFBSSxDQUFDLGVBQWUsR0FBQyxLQUFLLENBQUM7b0JBQzNCLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQzNCLENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7U0FDRjtJQUNMLENBQUM7O3VIQXhWVSwwQkFBMEI7MkdBQTFCLDBCQUEwQixrR0FnQjFCLHNCQUFzQix1RUEzRHZCOzs7Ozs7Ozs7Ozs7Ozs7OztHQWlCVDsyRkEwQlUsMEJBQTBCO2tCQS9DdEMsU0FBUzttQkFBQztvQkFFVCxRQUFRLEVBQUUsd0JBQXdCO29CQUVsQyxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUJUO29CQUNELE1BQU0sRUFBRTt3QkFDTjs7Ozs7Ozs7OztNQVVFLEVBQUM7Ozs7OztLQU1GLEVBQUM7Ozs7O0tBS0Q7cUJBQUM7aUJBRUw7MFNBa0JTLEVBQUU7c0JBRFQsU0FBUzt1QkFBQyxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBWaWV3Q2hpbGQsXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQWZ0ZXJWaWV3SW5pdCwgSW5wdXQsIEVsZW1lbnRSZWYsIE9uSW5pdCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJ1xyXG5cclxuXHJcbmltcG9ydCB7QWN0aXZhdGVkUm91dGUsIFBhcmFtcywgUm91dGUsIFJvdXRlcn0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5cclxuXHJcbmltcG9ydCB7UmVjb3JkaW5nRmlsZVNlcnZpY2V9IGZyb20gXCIuL3JlY29yZGluZ2ZpbGUtc2VydmljZVwiO1xyXG5pbXBvcnQge01hdERpYWxvZ30gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2RpYWxvZ1wiO1xyXG5pbXBvcnQge0F1ZGlvRGlzcGxheVBsYXllcn0gZnJvbSBcIi4uLy4uLy4uL2F1ZGlvL2F1ZGlvX3BsYXllclwiO1xyXG5cclxuaW1wb3J0IHtBdWRpb0Rpc3BsYXlTY3JvbGxQYW5lfSBmcm9tIFwiLi4vLi4vLi4vYXVkaW8vdWkvYXVkaW9fZGlzcGxheV9zY3JvbGxfcGFuZVwiO1xyXG5pbXBvcnQge0F1ZGlvQ29udGV4dFByb3ZpZGVyfSBmcm9tIFwiLi4vLi4vLi4vYXVkaW8vY29udGV4dFwiO1xyXG5pbXBvcnQge0F1ZGlvQ2xpcH0gZnJvbSBcIi4uLy4uLy4uL2F1ZGlvL3BlcnNpc3RvclwiO1xyXG5pbXBvcnQge1NlbGVjdGlvbn0gZnJvbSBcIi4uLy4uLy4uL2F1ZGlvL3BlcnNpc3RvclwiO1xyXG5cclxuaW1wb3J0IHtBY3Rpb24sIEFjdGlvbkV2ZW50fSBmcm9tIFwiLi4vLi4vLi4vYWN0aW9uL2FjdGlvblwiO1xyXG5pbXBvcnQge1Nlc3Npb25TZXJ2aWNlfSBmcm9tIFwiLi4vc2Vzc2lvbi5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7UmVjb3JkaW5nU2VydmljZX0gZnJvbSBcIi4uLy4uL3JlY29yZGluZ3MvcmVjb3JkaW5ncy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7UmVjb3JkaW5nRmlsZSwgU3ByUmVjb3JkaW5nRmlsZX0gZnJvbSBcIi4uLy4uL3JlY29yZGluZ1wiO1xyXG5pbXBvcnQge1JlY29yZGluZ0ZpbGVVdGlsfSBmcm9tIFwiLi9yZWNvcmRpbmctZmlsZVwiO1xyXG5cclxuXHJcbmV4cG9ydCBjbGFzcyBJdGVtY29kZUluZGV4e1xyXG4gIFtpdGVtY29kZTogc3RyaW5nXTogQXJyYXk8U3ByUmVjb3JkaW5nRmlsZT47XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG5cclxuICBzZWxlY3RvcjogJ2FwcC1hdWRpb2Rpc3BsYXlwbGF5ZXInLFxyXG5cclxuICB0ZW1wbGF0ZTogYFxyXG5cclxuICAgIDxhdWRpby1kaXNwbGF5LXNjcm9sbC1wYW5lICNhdWRpb0Rpc3BsYXlTY3JvbGxQYW5lPjwvYXVkaW8tZGlzcGxheS1zY3JvbGwtcGFuZT5cclxuICAgIDxkaXYgY2xhc3M9XCJjdHJsdmlld1wiPlxyXG4gICAgICA8YXBwLXJlY29yZGluZy1maWxlLW1ldGEgW3Nlc3Npb25JZF09XCJzZXNzaW9uSWRcIiBbcmVjb3JkaW5nRmlsZV09XCJyZWNvcmRpbmdGaWxlXCI+PC9hcHAtcmVjb3JkaW5nLWZpbGUtbWV0YT5cclxuXHJcbiAgICA8YXVkaW8tZGlzcGxheS1jb250cm9sIFthdWRpb0NsaXBdPVwiYXVkaW9DbGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxheVN0YXJ0QWN0aW9uXT1cInBsYXlTdGFydEFjdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYXlTZWxlY3Rpb25BY3Rpb25dPVwicGxheVNlbGVjdGlvbkFjdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYXlTdG9wQWN0aW9uXT1cInBsYXlTdG9wQWN0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXV0b1BsYXlPblNlbGVjdFRvZ2dsZUFjdGlvbl09XCJhcD8uYXV0b1BsYXlPblNlbGVjdFRvZ2dsZUFjdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3pvb21JbkFjdGlvbl09XCJ6b29tSW5BY3Rpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt6b29tT3V0QWN0aW9uXT1cInpvb21PdXRBY3Rpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt6b29tU2VsZWN0ZWRBY3Rpb25dPVwiem9vbVNlbGVjdGVkQWN0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW3pvb21GaXRUb1BhbmVsQWN0aW9uXT1cInpvb21GaXRUb1BhbmVsQWN0aW9uXCI+PC9hdWRpby1kaXNwbGF5LWNvbnRyb2w+XHJcbiAgICAgIDxhcHAtcmVjb3JkaW5nLWZpbGUtbmF2aSBbaXRlbXNdPVwiYXZhaWxSZWNGaWxlcz8ubGVuZ3RoXCIgW2l0ZW1Qb3NdPVwicG9zSW5MaXN0XCIgW3ZlcnNpb25dPVwicmVjb3JkaW5nRmlsZVZlcnNpb25cIiBbdmVyc2lvbnNdPVwidmVyc2lvbnNcIiBbZmlyc3RBY3Rpb25dPVwiZmlyc3RBY3Rpb25cIiBbcHJldkFjdGlvbl09XCJwcmV2QWN0aW9uXCIgW25leHRBY3Rpb25dPVwibmV4dEFjdGlvblwiIFtsYXN0QWN0aW9uXT1cImxhc3RBY3Rpb25cIiBbc2VsZWN0VmVyc2lvbl09XCJ0b1ZlcnNpb25BY3Rpb25cIiBbbmF2aUluZm9Mb2FkaW5nXT1cIm5hdmlJbmZvTG9hZGluZ1wiPjwvYXBwLXJlY29yZGluZy1maWxlLW5hdmk+XHJcbiAgICAgIDwvZGl2PlxyXG4gIGAsXHJcbiAgc3R5bGVzOiBbXHJcbiAgICBgOmhvc3Qge1xyXG4gICAgICAgICAgZmxleDogMjtcclxuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgICAgICAgbWluLWhlaWdodDowO1xyXG4gICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgICAgcGFkZGluZzogMjBweDtcclxuICAgICAgei1pbmRleDogNTtcclxuICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XHJcbiAgICB9YCxgXHJcbiAgICAgICAgLmN0cmx2aWV3e1xyXG4gICAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XHJcblxyXG4gICAgICAgIH1cclxuICAgIGAsYFxyXG4gICAgICBhdWRpby1kaXNwbGF5LWNvbnRyb2x7XHJcblxyXG4gICAgICAgIGZsZXg6IDM7XHJcbiAgICAgIH1cclxuICAgIGBdXHJcblxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmVjb3JkaW5nRmlsZVZpZXdDb21wb25lbnQgZXh0ZW5kcyBBdWRpb0Rpc3BsYXlQbGF5ZXIgaW1wbGVtZW50cyBPbkluaXQsQWZ0ZXJWaWV3SW5pdCB7XHJcblxyXG4gIC8vcHJvdGVjdGVkIF9yZWNvcmRpbmdGaWxlSWQ6IHN0cmluZyB8IG51bWJlciA9IG51bGw7XHJcblxyXG4gIHNlc3Npb25JZDogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbD0gbnVsbDtcclxuICBzZXNzaW9uSWRGcm9tUm91dGU6c3RyaW5nfG51bGw9bnVsbDtcclxuXHJcbiAgYXZhaWxSZWNGaWxlcyE6IEFycmF5PEFycmF5PFNwclJlY29yZGluZ0ZpbGU+PjtcclxuICB2ZXJzaW9uczogQXJyYXk8bnVtYmVyPnxudWxsPW51bGw7XHJcblxyXG4gIHJlY29yZGluZ0ZpbGU6IFNwclJlY29yZGluZ0ZpbGV8bnVsbD1udWxsO1xyXG4gIHJlY29yZGluZ0ZpbGVWZXJzaW9uOm51bWJlcnxudWxsPW51bGw7XHJcbiAgcHJpdmF0ZSByb3V0ZWRCeVF1ZXJ5UGFyYW09ZmFsc2U7XHJcbiAgcG9zSW5MaXN0OiBudW1iZXJ8bnVsbD1udWxsO1xyXG5cclxuXHJcbiAgQFZpZXdDaGlsZChBdWRpb0Rpc3BsYXlTY3JvbGxQYW5lKVxyXG4gIHByaXZhdGUgYWMhOiBBdWRpb0Rpc3BsYXlTY3JvbGxQYW5lO1xyXG5cclxuICBmaXJzdEFjdGlvbjogQWN0aW9uPHZvaWQ+O1xyXG4gIHByZXZBY3Rpb246IEFjdGlvbjx2b2lkPjtcclxuICBuZXh0QWN0aW9uOiBBY3Rpb248dm9pZD47XHJcbiAgbGFzdEFjdGlvbjogQWN0aW9uPHZvaWQ+O1xyXG4gIHRvVmVyc2lvbkFjdGlvbjogQWN0aW9uPG51bWJlcj47XHJcblxyXG4gIG5hdmlJbmZvTG9hZGluZz1mYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIHJlY29yZGluZ0ZpbGVTZXJ2aWNlOiBSZWNvcmRpbmdGaWxlU2VydmljZSwgcHJvdGVjdGVkIHJlY29yZGluZ1NlcnZpY2U6IFJlY29yZGluZ1NlcnZpY2UsIHByb3RlY3RlZCBzZXNzaW9uU2VydmljZTogU2Vzc2lvblNlcnZpY2UsIHByb3RlY3RlZCByb3V0ZXI6Um91dGVyLHByb3RlY3RlZCByb3V0ZTogQWN0aXZhdGVkUm91dGUsIHByb3RlY3RlZCByZWY6IENoYW5nZURldGVjdG9yUmVmLCBwcm90ZWN0ZWQgZVJlZjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIGRpYWxvZzogTWF0RGlhbG9nKSB7XHJcbiAgICBzdXBlcihyb3V0ZSwgcmVmLCBlUmVmKVxyXG4gICAgdGhpcy5wYXJlbnRFID0gdGhpcy5lUmVmLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICB0aGlzLmZpcnN0QWN0aW9uID0gbmV3IEFjdGlvbjx2b2lkPignRmlyc3QnKTtcclxuICAgIHRoaXMuZmlyc3RBY3Rpb24ub25BY3Rpb249ICgpPT57XHJcbiAgICAgIHRoaXMucG9zSW5MaXN0PTA7XHJcbiAgICAgIHRoaXMubmF2aWdhdGVUb1JlY29yZGluZ0ZpbGUoKTtcclxuICAgIH1cclxuICAgIHRoaXMucHJldkFjdGlvbiA9IG5ldyBBY3Rpb248dm9pZD4oJ1ByZXZpb3VzJyk7XHJcbiAgICB0aGlzLnByZXZBY3Rpb24ub25BY3Rpb249ICgpPT50aGlzLnByZXZGaWxlKCk7XHJcbiAgICB0aGlzLm5leHRBY3Rpb24gPSBuZXcgQWN0aW9uPHZvaWQ+KCdOZXh0Jyk7XHJcbiAgICB0aGlzLm5leHRBY3Rpb24ub25BY3Rpb249ICgpPT50aGlzLm5leHRGaWxlKCk7XHJcbiAgICB0aGlzLmxhc3RBY3Rpb24gPSBuZXcgQWN0aW9uPHZvaWQ+KCdMYXN0Jyk7XHJcbiAgICB0aGlzLmxhc3RBY3Rpb24ub25BY3Rpb249ICgpPT57XHJcbiAgICAgIGlmKHRoaXMuYXZhaWxSZWNGaWxlcykge1xyXG4gICAgICAgIHRoaXMucG9zSW5MaXN0ID0gdGhpcy5hdmFpbFJlY0ZpbGVzLmxlbmd0aCAtIDE7XHJcbiAgICAgICAgdGhpcy5uYXZpZ2F0ZVRvUmVjb3JkaW5nRmlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy50b1ZlcnNpb25BY3Rpb249bmV3IEFjdGlvbjxudW1iZXI+KCdUbyB2ZXJzaW9uJyk7XHJcbiAgICB0aGlzLnRvVmVyc2lvbkFjdGlvbi5vbkFjdGlvbj0gKGFlKT0+dGhpcy50b1ZlcnNpb24oYWUpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG5cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpXHJcbiAgICB0aGlzLnJvdXRlLnF1ZXJ5UGFyYW1zLnN1YnNjcmliZSgocGFyYW1zOiBQYXJhbXMpID0+IHtcclxuICAgICAgbGV0IHJmSWRQID0gcGFyYW1zWydyZWNvcmRpbmdGaWxlSWQnXTtcclxuICAgICAgbGV0IHNJZFAgPSBwYXJhbXNbJ3Nlc3Npb25JZCddO1xyXG4gICAgICBpZiAoc0lkUCkge1xyXG4gICAgICAgdGhpcy5zZXNzaW9uSWRGcm9tUm91dGU9c0lkUDtcclxuICAgICAgfVxyXG4gICAgICBpZiAocmZJZFApIHtcclxuICAgICAgICB0aGlzLnJvdXRlZEJ5UXVlcnlQYXJhbT10cnVlO1xyXG4gICAgICAgIHRoaXMubG9hZFJlY0ZpbGUocmZJZFApO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMucm91dGUucGFyYW1zLnN1YnNjcmliZSgocGFyYW1zOiBQYXJhbXMpID0+IHtcclxuICAgICAgbGV0IHJmSWRQID0gcGFyYW1zWydyZWNvcmRpbmdGaWxlSWQnXTtcclxuICAgICAgbGV0IHNJZFAgPSBwYXJhbXNbJ3Nlc3Npb25JZCddO1xyXG4gICAgICBpZiAoc0lkUCkge1xyXG4gICAgICAgIHRoaXMuc2Vzc2lvbklkRnJvbVJvdXRlPXNJZFA7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHJmSWRQKSB7XHJcbiAgICAgICAgdGhpcy5yb3V0ZWRCeVF1ZXJ5UGFyYW09ZmFsc2U7XHJcbiAgICAgICAgdGhpcy5sb2FkUmVjRmlsZShyZklkUCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgLy8gaWYodGhpcy5zZXNzaW9uSWQpe1xyXG4gICAgLy8gICAgIHRoaXMubG9hZFNlc3Npb24odGhpcy5zZXNzaW9uSWQpO1xyXG4gICAgLy8gfVxyXG4gIH1cclxuXHJcblxyXG4gIHByaXZhdGUgbmF2aWdhdGVUb0lkKHJmSWQ6bnVtYmVyfCBzdHJpbmcpe1xyXG5cclxuICAgIGlmKHRoaXMucm91dGVkQnlRdWVyeVBhcmFtKXtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW10sIHtyZWxhdGl2ZVRvOiB0aGlzLnJvdXRlLCBxdWVyeVBhcmFtczp7J3JlY29yZGluZ0ZpbGVJZCc6cmZJZH19KVxyXG4gICAgfWVsc2Uge1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy4uLycgKyByZklkXSwge3JlbGF0aXZlVG86IHRoaXMucm91dGV9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgbmF2aWdhdGVUb1JlY29yZGluZ0ZpbGUoKXtcclxuICAgIGlmKHRoaXMucG9zSW5MaXN0IT1udWxsKSB7XHJcbiAgICAgIGxldCBsYXRlc3ROZXh0UmYgPSB0aGlzLmF2YWlsUmVjRmlsZXNbdGhpcy5wb3NJbkxpc3RdWzBdO1xyXG4gICAgICBsZXQgbG5SZklkID0gbGF0ZXN0TmV4dFJmLnJlY29yZGluZ0ZpbGVJZDtcclxuICAgICAgaWYobG5SZklkKSB7XHJcbiAgICAgICAgdGhpcy5uYXZpZ2F0ZVRvSWQobG5SZklkKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdG9WZXJzaW9uKGFlOiBBY3Rpb25FdmVudDxudW1iZXI+KSB7XHJcbiAgICBsZXQgdG9SZklkID0gbnVsbDtcclxuICAgIGxldCB2ZXJzaW9uID0gYWUudmFsdWU7XHJcbiAgICBpZih0aGlzLnBvc0luTGlzdCE9bnVsbCkge1xyXG4gICAgICBsZXQgY1JmcyA9IHRoaXMuYXZhaWxSZWNGaWxlc1t0aGlzLnBvc0luTGlzdF07XHJcbiAgICAgIGxldCBhdmFpbFZlcnNpb25DbnQgPSBjUmZzLmxlbmd0aDtcclxuICAgICAgZm9yIChsZXQgY1JmIG9mIGNSZnMpIHtcclxuICAgICAgICBpZihjUmYgaW5zdGFuY2VvZiBTcHJSZWNvcmRpbmdGaWxlKSB7XHJcbiAgICAgICAgICBpZiAoY1JmLnZlcnNpb24gPT09IHZlcnNpb24pIHtcclxuICAgICAgICAgICAgdG9SZklkID0gY1JmLnJlY29yZGluZ0ZpbGVJZDtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAodG9SZklkICE9IG51bGwpIHtcclxuICAgICAgdGhpcy5uYXZpZ2F0ZVRvSWQodG9SZklkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICBwcmV2RmlsZSgpIHtcclxuICAgIGlmKHRoaXMucG9zSW5MaXN0IT1udWxsKSB7XHJcbiAgICAgIHRoaXMucG9zSW5MaXN0LS07XHJcbiAgICB9XHJcbiAgICB0aGlzLm5hdmlnYXRlVG9SZWNvcmRpbmdGaWxlKClcclxuICB9XHJcbiAgbmV4dEZpbGUoKSB7XHJcbiAgICBpZih0aGlzLnBvc0luTGlzdCE9bnVsbCkge1xyXG4gICAgICB0aGlzLnBvc0luTGlzdCsrO1xyXG4gICAgfVxyXG4gICAgdGhpcy5uYXZpZ2F0ZVRvUmVjb3JkaW5nRmlsZSgpXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHBvc2l0aW9uSW5MaXN0KCk6bnVtYmVyIHwgbnVsbHtcclxuICAgIGlmICh0aGlzLmF2YWlsUmVjRmlsZXMgJiYgdGhpcy5yZWNvcmRpbmdGaWxlKSB7XHJcbiAgICAgIGxldCBjaWM9dGhpcy5yZWNvcmRpbmdGaWxlLml0ZW1Db2RlO1xyXG4gICAgICBpZiAoY2ljKSB7XHJcbiAgICAgICAgbGV0IGl0ZW1DbnQgPSB0aGlzLmF2YWlsUmVjRmlsZXMubGVuZ3RoXHJcbiAgICAgICAgZm9yIChsZXQgcmZkaSA9IDA7IHJmZGkgPCBpdGVtQ250OyByZmRpKyspIHtcclxuICAgICAgICAgIGxldCBhclJmID0gdGhpcy5hdmFpbFJlY0ZpbGVzW3JmZGldWzBdO1xyXG4gICAgICAgICAgaWYgKGFyUmYgaW5zdGFuY2VvZiBTcHJSZWNvcmRpbmdGaWxlKSB7XHJcbiAgICAgICAgICAgIGxldCBhciA9IGFyUmYucmVjb3JkaW5nO1xyXG4gICAgICAgICAgICBpZiAoY2ljID09PSBhci5pdGVtY29kZSkge1xyXG4gICAgICAgICAgICAgIHJldHVybiByZmRpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICBsZXQgaXRlbUNudCA9IHRoaXMuYXZhaWxSZWNGaWxlcy5sZW5ndGhcclxuICAgICAgICBmb3IgKGxldCByZmRpID0gMDsgcmZkaSA8IGl0ZW1DbnQ7IHJmZGkrKykge1xyXG4gICAgICAgICAgbGV0IGFyUmYgPSB0aGlzLmF2YWlsUmVjRmlsZXNbcmZkaV1bMF07XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnJlY29yZGluZ0ZpbGUudXVpZCA9PT0gYXJSZi51dWlkKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHJmZGk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZVBvcygpe1xyXG4gICAgdGhpcy5wb3NJbkxpc3Q9dGhpcy5wb3NpdGlvbkluTGlzdCgpO1xyXG4gICAgdGhpcy50b1ZlcnNpb25BY3Rpb24uZGlzYWJsZWQ9dHJ1ZTtcclxuICAgIGlmKHRoaXMuYXZhaWxSZWNGaWxlcyl7XHJcbiAgICAgIGxldCBhdlJmc0xlbj10aGlzLmF2YWlsUmVjRmlsZXMubGVuZ3RoO1xyXG4gICAgICBpZih0aGlzLnBvc0luTGlzdCAhPW51bGwgJiYgYXZSZnNMZW4+dGhpcy5wb3NJbkxpc3QpIHtcclxuICAgICAgICBsZXQgYXJmcyA9IHRoaXMuYXZhaWxSZWNGaWxlc1t0aGlzLnBvc0luTGlzdF07XHJcbiAgICAgICAgaWYgKGFyZnMpIHtcclxuICAgICAgICAgIHRoaXMudmVyc2lvbnMgPSBuZXcgQXJyYXk8bnVtYmVyPigpO1xyXG4gICAgICAgICAgZm9yIChsZXQgYXJmIG9mIGFyZnMpIHtcclxuICAgICAgICAgICAgaWYoYXJmIGluc3RhbmNlb2YgU3ByUmVjb3JkaW5nRmlsZSkge1xyXG4gICAgICAgICAgICAgIHRoaXMudmVyc2lvbnMucHVzaChhcmYudmVyc2lvbilcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy50b1ZlcnNpb25BY3Rpb24uZGlzYWJsZWQ9KHRoaXMudmVyc2lvbnMubGVuZ3RoPDIpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy51cGRhdGVBY3Rpb25zKClcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBsb2FkUmVjRmlsZShyZklkOm51bWJlciB8IHN0cmluZykge1xyXG4gICAgdGhpcy5hcD8uc3RvcCgpO1xyXG4gICAgdGhpcy5hdWRpb0NsaXAgPW51bGw7XHJcbiAgICB0aGlzLnJlY29yZGluZ0ZpbGU9bnVsbDtcclxuICAgIHRoaXMucG9zSW5MaXN0PW51bGw7XHJcbiAgICB0aGlzLnVwZGF0ZUFjdGlvbnMoKTtcclxuICAgIGxldCBhdWRpb0NvbnRleHQgPSBBdWRpb0NvbnRleHRQcm92aWRlci5hdWRpb0NvbnRleHRJbnN0YW5jZSgpO1xyXG4gICAgaWYoYXVkaW9Db250ZXh0KSB7XHJcbiAgICAgIHRoaXMucmVjb3JkaW5nRmlsZVNlcnZpY2UuZmV0Y2hTcHJSZWNvcmRpbmdGaWxlKGF1ZGlvQ29udGV4dCwgcmZJZCkuc3Vic2NyaWJlKHZhbHVlID0+IHtcclxuICAgICAgICB0aGlzLnN0YXR1cyA9ICdBdWRpbyBmaWxlIGxvYWRlZC4nO1xyXG4gICAgICAgIGxldCBjbGlwID0gbnVsbDtcclxuICAgICAgICB0aGlzLnJlY29yZGluZ0ZpbGUgPSB2YWx1ZTtcclxuICAgICAgICBpZiAodGhpcy5yZWNvcmRpbmdGaWxlKSB7XHJcbiAgICAgICAgICBsZXQgYWIgPSB0aGlzLnJlY29yZGluZ0ZpbGUuYXVkaW9CdWZmZXI7XHJcbiAgICAgICAgICBpZiAoYWIpIHtcclxuICAgICAgICAgICAgY2xpcCA9IG5ldyBBdWRpb0NsaXAoYWIpO1xyXG5cclxuICAgICAgICAgICAgbGV0IGVzZmZzciA9IG51bGw7XHJcbiAgICAgICAgICAgIGxldCBlZWZmc3IgPSBudWxsO1xyXG4gICAgICAgICAgICBsZXQgZXNyID0gbnVsbDtcclxuXHJcbiAgICAgICAgICAgIGlmIChjbGlwLmJ1ZmZlciAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgZXNyID0gYWIuc2FtcGxlUmF0ZTtcclxuICAgICAgICAgICAgICBpZiAoZXNyICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIGVzZmZzciA9IFJlY29yZGluZ0ZpbGVVdGlsLmVkaXRTdGFydEZyYW1lRm9yU2FtcGxlUmF0ZSh0aGlzLnJlY29yZGluZ0ZpbGUsIGVzcik7XHJcbiAgICAgICAgICAgICAgICBlZWZmc3IgPSBSZWNvcmRpbmdGaWxlVXRpbC5lZGl0RW5kRnJhbWVGb3JTYW1wbGVSYXRlKHRoaXMucmVjb3JkaW5nRmlsZSwgZXNyKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgbGV0IHNlbDogU2VsZWN0aW9uIHwgbnVsbCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgaWYgKGVzZmZzciAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZWVmZnNyICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgc2VsID0gbmV3IFNlbGVjdGlvbihhYi5zYW1wbGVSYXRlLCBlc2Zmc3IsIGVlZmZzcik7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICBsZXQgY2gwID0gYWIuZ2V0Q2hhbm5lbERhdGEoMCk7XHJcbiAgICAgICAgICAgICAgICAgIGxldCBmcmFtZUxlbmd0aCA9IGNoMC5sZW5ndGg7XHJcbiAgICAgICAgICAgICAgICAgIHNlbCA9IG5ldyBTZWxlY3Rpb24oZXNyLCBlc2Zmc3IsIGZyYW1lTGVuZ3RoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKGVlZmZzciAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICBzZWwgPSBuZXcgU2VsZWN0aW9uKGVzciwgMCwgZWVmZnNyKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgY2xpcC5zZWxlY3Rpb24gPSBzZWxcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmF1ZGlvQ2xpcCA9IGNsaXBcclxuICAgICAgICB0aGlzLmxvYWRlZFJlY2ZpbGUoKTtcclxuXHJcbiAgICAgIH0sIGVycm9yMSA9PiB7XHJcbiAgICAgICAgdGhpcy5zdGF0dXMgPSAnRXJyb3IgbG9hZGluZyBhdWRpbyBmaWxlISc7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGxvYWRlZFJlY2ZpbGUoKSB7XHJcbiAgICBpZih0aGlzLnJlY29yZGluZ0ZpbGUgJiYgIXRoaXMuc2Vzc2lvbklkKSB7XHJcbiAgICAgIGxldCBzSWQ9dGhpcy5yZWNvcmRpbmdGaWxlLnNlc3Npb25cclxuICAgICAgaWYoIXNJZCl7XHJcbiAgICAgICAgc0lkPXRoaXMuc2Vzc2lvbklkRnJvbVJvdXRlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChzSWQpIHtcclxuICAgICAgICB0aGlzLmxvYWRTZXNzaW9uKHNJZCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnVwZGF0ZVBvcygpO1xyXG4gICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVBY3Rpb25zKCl7XHJcbiAgICBsZXQgaXRlbUNudDpudW1iZXJ8bnVsbD1udWxsO1xyXG4gICAgaWYodGhpcy5hdmFpbFJlY0ZpbGVzKSB7XHJcbiAgICAgIGl0ZW1DbnQgPSB0aGlzLmF2YWlsUmVjRmlsZXMubGVuZ3RoO1xyXG4gICAgfVxyXG4gICAgdGhpcy5maXJzdEFjdGlvbi5kaXNhYmxlZD0odGhpcy5wb3NJbkxpc3Q9PW51bGwgfHwgdGhpcy5wb3NJbkxpc3QgPT0gMCk7XHJcbiAgICB0aGlzLnByZXZBY3Rpb24uZGlzYWJsZWQ9KHRoaXMucG9zSW5MaXN0PT1udWxsIHx8IHRoaXMucG9zSW5MaXN0ID09IDApO1xyXG4gICAgdGhpcy5uZXh0QWN0aW9uLmRpc2FibGVkPSh0aGlzLnBvc0luTGlzdD09bnVsbCB8fCBpdGVtQ250PT1udWxsIHx8IHRoaXMucG9zSW5MaXN0ID49IGl0ZW1DbnQgLSAxKTtcclxuICAgIHRoaXMubGFzdEFjdGlvbi5kaXNhYmxlZD0odGhpcy5wb3NJbkxpc3Q9PW51bGwgfHwgaXRlbUNudD09bnVsbCB8fCB0aGlzLnBvc0luTGlzdCA+PSBpdGVtQ250IC0gMSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGxvYWRTZXNzaW9uKHNlc3Npb25JZDogc3RyaW5nfCBudW1iZXIpIHtcclxuICAgIC8vIGxvYWQgc2Vzc2lvbiBhbmQgcmVjb3JkaW5nIGZpbGUgbWV0YSBkYXRhIG9ubHkgd2hlbiBvbiBpbml0IGFuZCB3aGVuIHNlc3Npb24gY2hhbmdlc1xyXG4gICAgaWYgKDxzdHJpbmc+c2Vzc2lvbklkICE9IDxzdHJpbmc+dGhpcy5zZXNzaW9uSWQpIHtcclxuICAgICAgLy8gdGVsbCBVSSB0aGF0IHdlIGFyZSB3b3JraW5nLi4uXHJcbiAgICAgIHRoaXMubmF2aUluZm9Mb2FkaW5nPXRydWU7XHJcbiAgICAgIHRoaXMuc2Vzc2lvblNlcnZpY2Uuc2Vzc2lvbk9ic2VydmVyKDxzdHJpbmc+c2Vzc2lvbklkKS5zdWJzY3JpYmUoKHMpID0+IHtcclxuICAgICAgICAvLyByZWNlaXZlZCBzZXNzaW9uIGRhdGFcclxuICAgICAgICB0aGlzLnNlc3Npb25JZCA9IHMuc2Vzc2lvbklkO1xyXG4gICAgICAgIC8vIGZldGNoIHJlY29yZGluZyBmaWxlIG1ldGEgZGF0YSBsaXN0XHJcbiAgICAgICAgdGhpcy5yZWNvcmRpbmdTZXJ2aWNlLnNwclJlY29yZGluZ0ZpbGVMaXN0KHMucHJvamVjdCwgcy5zZXNzaW9uSWQpLnN1YnNjcmliZSgocmZkcykgPT4ge1xyXG4gICAgICAgICAgdGhpcy5hdmFpbFJlY0ZpbGVzID0gbmV3IEFycmF5PEFycmF5PFNwclJlY29yZGluZ0ZpbGU+PigpO1xyXG4gICAgICAgICAgLy8gYnVpbGQgc3RydWN0dXJlIGluZGV4ZWQgYnkgaXRlbWNvZGVcclxuICAgICAgICAgIGxldCBpY0lkeCA9IG5ldyBJdGVtY29kZUluZGV4KCk7XHJcbiAgICAgICAgICBmb3IgKGxldCByZmRpID0gMDsgcmZkaSA8IHJmZHMubGVuZ3RoOyByZmRpKyspIHtcclxuICAgICAgICAgICAgbGV0IHJmZCA9IHJmZHNbcmZkaV07XHJcbiAgICAgICAgICAgIGlmIChyZmQuZGF0ZSkge1xyXG4gICAgICAgICAgICAgIC8vIGNvbnZlcnQgZGF0ZSBzdHJpbmcgZm9yIGZhc3RlciBzb3J0aW5nIGxhdGVyXHJcbiAgICAgICAgICAgICAgbGV0IHJmZGQgPSBuZXcgRGF0ZShyZmQuZGF0ZSk7XHJcbiAgICAgICAgICAgICAgcmZkLl9kYXRlQXNEYXRlT2JqID0gcmZkZDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBsZXQgaWMgPSByZmQuaXRlbUNvZGU7XHJcblxyXG4gICAgICAgICAgICBpZiAoIWljKSB7XHJcbiAgICAgICAgICAgICAgbGV0IHIgPSByZmQucmVjb3JkaW5nO1xyXG4gICAgICAgICAgICAgIGlmIChyICYmIHIuaXRlbWNvZGUpIHtcclxuICAgICAgICAgICAgICAgIGljID0gci5pdGVtY29kZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGljKSB7XHJcbiAgICAgICAgICAgICAgbGV0IGV4UmZzRm9ySWMgPSBpY0lkeFtpY107XHJcbiAgICAgICAgICAgICAgaWYgKGV4UmZzRm9ySWMgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgLy8gaXRlbWNvZGUgbm90IHlldCBzdG9yZWRcclxuICAgICAgICAgICAgICAgIGxldCBhcmZkID0gbmV3IEFycmF5PFNwclJlY29yZGluZ0ZpbGU+KCk7XHJcbiAgICAgICAgICAgICAgICBhcmZkLnB1c2gocmZkKTtcclxuICAgICAgICAgICAgICAgIGljSWR4W2ljXSA9IGFyZmQ7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmF2YWlsUmVjRmlsZXMucHVzaChhcmZkKTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy8gcmVjIGZpbGUgd2l0aCBpdGVtY29kZSBhbHJlYWR5IGV4aXN0cywgYWRkIChwdXNoKSB0aGlzIHZlcnNpb24gLi4uXHJcbiAgICAgICAgICAgICAgICBleFJmc0ZvckljLnB1c2gocmZkKTtcclxuICAgICAgICAgICAgICAgIC8vIC4uIGFuZCBzb3J0IGxhdGVzdCB2ZXJzaW9uIChoaWdoZXN0IHZlcnNpb24gbnVtYmVyKSB0byBsb3dlc3QgaW5kZXhcclxuICAgICAgICAgICAgICAgIGV4UmZzRm9ySWMuc29ydCgocmZkMSwgcmZkMikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICByZXR1cm4gcmZkMi52ZXJzaW9uIC0gcmZkMS52ZXJzaW9uO1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGxldCBhcmZkID0gbmV3IEFycmF5PFNwclJlY29yZGluZ0ZpbGU+KCk7XHJcbiAgICAgICAgICAgICAgYXJmZC5wdXNoKHJmZCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5hdmFpbFJlY0ZpbGVzLnB1c2goYXJmZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIC8vIGhhdmUgdW5zb3J0ZWQgaXRlbWNvZGUgaW5kZXhlZCByZWNvcmRpbmcgZmlsZXMgaGVyZVxyXG4gICAgICAgICAgLy8gc29ydCB0aGVtIG9yZGVyZWQgYnkgZGF0ZSBvZiBsYXRlc3QgdmVyc2lvbiBhc2NlbmRpbmdcclxuICAgICAgICAgIHRoaXMuYXZhaWxSZWNGaWxlcy5zb3J0KChyZnMxLCByZnMyKSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBkMSA9IHJmczJbMF0uX2RhdGVBc0RhdGVPYmo7XHJcbiAgICAgICAgICAgIGxldCBkMiA9IHJmczFbMF0uX2RhdGVBc0RhdGVPYmo7XHJcbiAgICAgICAgICAgIGlmIChkMSA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgaWYgKGQyID09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAwO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvLyBTb3J0IGVudHJpZXMgd2hvc2UgZGF0ZXMgYXJlIG5vdCBzZXQgdG8gdGhlIGVuZFxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIC0xO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBpZiAoZDIgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgLy8gU29ydCBlbnRyaWVzIHdob3NlIGRhdGVzIGFyZSBub3Qgc2V0IHRvIHRoZSBlbmRcclxuICAgICAgICAgICAgICAgIHJldHVybiAxO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvLyBDb21wYXJlIGRhdGUgYnkgdGltZSBpbiBtaWxsaXNlY29uZHMgdmFsdWVcclxuICAgICAgICAgICAgICAgIHJldHVybiBkMi5nZXRUaW1lKCkgLSBkMS5nZXRUaW1lKCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMudXBkYXRlUG9zKClcclxuICAgICAgICAgIHRoaXMubmF2aUluZm9Mb2FkaW5nPWZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgICAgfVxyXG4gIH1cclxufVxyXG5cclxuIl19
437
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb3JkaW5nLWZpbGUtdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zcGVlY2hyZWNvcmRlcm5nL3NyYy9saWIvc3BlZWNocmVjb3JkZXIvc2Vzc2lvbi9yZWNvcmRpbmdmaWxlL3JlY29yZGluZy1maWxlLXZpZXcuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsU0FBUyxHQUdWLE1BQU0sZUFBZSxDQUFBO0FBUXRCLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBRS9ELE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLDZDQUE2QyxDQUFDO0FBQ25GLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQzVELE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUNuRCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFFbkQsT0FBTyxFQUFDLE1BQU0sRUFBYyxNQUFNLHdCQUF3QixDQUFDO0FBSTNELE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLGtCQUFrQixDQUFDOzs7Ozs7Ozs7OztBQUduRCxNQUFNLE9BQU8sYUFBYTtDQUV6QjtBQWlERCxNQUFNLE9BQU8sMEJBQTJCLFNBQVEsa0JBQWtCO0lBMkJoRSxZQUFzQixvQkFBMEMsRUFBWSxnQkFBa0MsRUFBWSxjQUE4QixFQUFZLE1BQWEsRUFBVyxLQUFxQixFQUFZLEdBQXNCLEVBQVksSUFBZ0IsRUFBWSxNQUFpQjtRQUMxUyxLQUFLLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQTtRQURILHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7UUFBWSxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQVksbUJBQWMsR0FBZCxjQUFjLENBQWdC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Ozs7Ozs7Ozs7Ozs7OztHQWlCVDsyRkEwQlUsMEJBQTBCO2tCQS9DdEMsU0FBUzttQkFBQztvQkFFVCxRQUFRLEVBQUUsd0JBQXdCO29CQUVsQyxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUJUO29CQUNELE1BQU0sRUFBRTt3QkFDTjs7Ozs7Ozs7OztNQVVFLEVBQUM7Ozs7OztLQU1GLEVBQUM7Ozs7O0tBS0Q7cUJBQUM7aUJBRUw7MFNBa0JTLEVBQUU7c0JBRFQsU0FBUzt1QkFBQyxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBWaWV3Q2hpbGQsXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQWZ0ZXJWaWV3SW5pdCwgSW5wdXQsIEVsZW1lbnRSZWYsIE9uSW5pdCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJ1xyXG5cclxuXHJcbmltcG9ydCB7QWN0aXZhdGVkUm91dGUsIFBhcmFtcywgUm91dGUsIFJvdXRlcn0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5cclxuXHJcbmltcG9ydCB7UmVjb3JkaW5nRmlsZVNlcnZpY2V9IGZyb20gXCIuL3JlY29yZGluZ2ZpbGUtc2VydmljZVwiO1xyXG5pbXBvcnQge01hdERpYWxvZ30gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2RpYWxvZ1wiO1xyXG5pbXBvcnQge0F1ZGlvRGlzcGxheVBsYXllcn0gZnJvbSBcIi4uLy4uLy4uL2F1ZGlvL2F1ZGlvX3BsYXllclwiO1xyXG5cclxuaW1wb3J0IHtBdWRpb0Rpc3BsYXlTY3JvbGxQYW5lfSBmcm9tIFwiLi4vLi4vLi4vYXVkaW8vdWkvYXVkaW9fZGlzcGxheV9zY3JvbGxfcGFuZVwiO1xyXG5pbXBvcnQge0F1ZGlvQ29udGV4dFByb3ZpZGVyfSBmcm9tIFwiLi4vLi4vLi4vYXVkaW8vY29udGV4dFwiO1xyXG5pbXBvcnQge0F1ZGlvQ2xpcH0gZnJvbSBcIi4uLy4uLy4uL2F1ZGlvL3BlcnNpc3RvclwiO1xyXG5pbXBvcnQge1NlbGVjdGlvbn0gZnJvbSBcIi4uLy4uLy4uL2F1ZGlvL3BlcnNpc3RvclwiO1xyXG5cclxuaW1wb3J0IHtBY3Rpb24sIEFjdGlvbkV2ZW50fSBmcm9tIFwiLi4vLi4vLi4vYWN0aW9uL2FjdGlvblwiO1xyXG5pbXBvcnQge1Nlc3Npb25TZXJ2aWNlfSBmcm9tIFwiLi4vc2Vzc2lvbi5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7UmVjb3JkaW5nU2VydmljZX0gZnJvbSBcIi4uLy4uL3JlY29yZGluZ3MvcmVjb3JkaW5ncy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7UmVjb3JkaW5nRmlsZSwgU3ByUmVjb3JkaW5nRmlsZX0gZnJvbSBcIi4uLy4uL3JlY29yZGluZ1wiO1xyXG5pbXBvcnQge1JlY29yZGluZ0ZpbGVVdGlsfSBmcm9tIFwiLi9yZWNvcmRpbmctZmlsZVwiO1xyXG5cclxuXHJcbmV4cG9ydCBjbGFzcyBJdGVtY29kZUluZGV4e1xyXG4gIFtpdGVtY29kZTogc3RyaW5nXTogQXJyYXk8U3ByUmVjb3JkaW5nRmlsZT47XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG5cclxuICBzZWxlY3RvcjogJ2FwcC1hdWRpb2Rpc3BsYXlwbGF5ZXInLFxyXG5cclxuICB0ZW1wbGF0ZTogYFxyXG5cclxuICAgIDxhdWRpby1kaXNwbGF5LXNjcm9sbC1wYW5lICNhdWRpb0Rpc3BsYXlTY3JvbGxQYW5lPjwvYXVkaW8tZGlzcGxheS1zY3JvbGwtcGFuZT5cclxuICAgIDxkaXYgY2xhc3M9XCJjdHJsdmlld1wiPlxyXG4gICAgICA8YXBwLXJlY29yZGluZy1maWxlLW1ldGEgW3Nlc3Npb25JZF09XCJzZXNzaW9uSWRcIiBbcmVjb3JkaW5nRmlsZV09XCJyZWNvcmRpbmdGaWxlXCI+PC9hcHAtcmVjb3JkaW5nLWZpbGUtbWV0YT5cclxuXHJcbiAgICA8YXVkaW8tZGlzcGxheS1jb250cm9sIFthdWRpb0NsaXBdPVwiYXVkaW9DbGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxheVN0YXJ0QWN0aW9uXT1cInBsYXlTdGFydEFjdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYXlTZWxlY3Rpb25BY3Rpb25dPVwicGxheVNlbGVjdGlvbkFjdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYXlTdG9wQWN0aW9uXT1cInBsYXlTdG9wQWN0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXV0b1BsYXlPblNlbGVjdFRvZ2dsZUFjdGlvbl09XCJhcD8uYXV0b1BsYXlPblNlbGVjdFRvZ2dsZUFjdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3pvb21JbkFjdGlvbl09XCJ6b29tSW5BY3Rpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt6b29tT3V0QWN0aW9uXT1cInpvb21PdXRBY3Rpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt6b29tU2VsZWN0ZWRBY3Rpb25dPVwiem9vbVNlbGVjdGVkQWN0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW3pvb21GaXRUb1BhbmVsQWN0aW9uXT1cInpvb21GaXRUb1BhbmVsQWN0aW9uXCI+PC9hdWRpby1kaXNwbGF5LWNvbnRyb2w+XHJcbiAgICAgIDxhcHAtcmVjb3JkaW5nLWZpbGUtbmF2aSBbaXRlbXNdPVwiYXZhaWxSZWNGaWxlcz8ubGVuZ3RoXCIgW2l0ZW1Qb3NdPVwicG9zSW5MaXN0XCIgW3ZlcnNpb25dPVwicmVjb3JkaW5nRmlsZVZlcnNpb25cIiBbdmVyc2lvbnNdPVwidmVyc2lvbnNcIiBbZmlyc3RBY3Rpb25dPVwiZmlyc3RBY3Rpb25cIiBbcHJldkFjdGlvbl09XCJwcmV2QWN0aW9uXCIgW25leHRBY3Rpb25dPVwibmV4dEFjdGlvblwiIFtsYXN0QWN0aW9uXT1cImxhc3RBY3Rpb25cIiBbc2VsZWN0VmVyc2lvbl09XCJ0b1ZlcnNpb25BY3Rpb25cIiBbbmF2aUluZm9Mb2FkaW5nXT1cIm5hdmlJbmZvTG9hZGluZ1wiPjwvYXBwLXJlY29yZGluZy1maWxlLW5hdmk+XHJcbiAgICAgIDwvZGl2PlxyXG4gIGAsXHJcbiAgc3R5bGVzOiBbXHJcbiAgICBgOmhvc3Qge1xyXG4gICAgICAgICAgZmxleDogMjtcclxuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgICAgICAgbWluLWhlaWdodDowO1xyXG4gICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgICAgcGFkZGluZzogMjBweDtcclxuICAgICAgei1pbmRleDogNTtcclxuICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XHJcbiAgICB9YCxgXHJcbiAgICAgICAgLmN0cmx2aWV3e1xyXG4gICAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XHJcblxyXG4gICAgICAgIH1cclxuICAgIGAsYFxyXG4gICAgICBhdWRpby1kaXNwbGF5LWNvbnRyb2x7XHJcblxyXG4gICAgICAgIGZsZXg6IDM7XHJcbiAgICAgIH1cclxuICAgIGBdXHJcblxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmVjb3JkaW5nRmlsZVZpZXdDb21wb25lbnQgZXh0ZW5kcyBBdWRpb0Rpc3BsYXlQbGF5ZXIgaW1wbGVtZW50cyBPbkluaXQsQWZ0ZXJWaWV3SW5pdCB7XHJcblxyXG4gIC8vcHJvdGVjdGVkIF9yZWNvcmRpbmdGaWxlSWQ6IHN0cmluZyB8IG51bWJlciA9IG51bGw7XHJcblxyXG4gIHNlc3Npb25JZDogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbD0gbnVsbDtcclxuICBzZXNzaW9uSWRGcm9tUm91dGU6c3RyaW5nfG51bGw9bnVsbDtcclxuXHJcbiAgYXZhaWxSZWNGaWxlcyE6IEFycmF5PEFycmF5PFNwclJlY29yZGluZ0ZpbGU+PjtcclxuICB2ZXJzaW9uczogQXJyYXk8bnVtYmVyPnxudWxsPW51bGw7XHJcblxyXG4gIHJlY29yZGluZ0ZpbGU6IFNwclJlY29yZGluZ0ZpbGV8bnVsbD1udWxsO1xyXG4gIHJlY29yZGluZ0ZpbGVWZXJzaW9uOm51bWJlcnxudWxsPW51bGw7XHJcbiAgcHJpdmF0ZSByb3V0ZWRCeVF1ZXJ5UGFyYW09ZmFsc2U7XHJcbiAgcG9zSW5MaXN0OiBudW1iZXJ8bnVsbD1udWxsO1xyXG5cclxuXHJcbiAgQFZpZXdDaGlsZChBdWRpb0Rpc3BsYXlTY3JvbGxQYW5lKVxyXG4gIHByaXZhdGUgYWMhOiBBdWRpb0Rpc3BsYXlTY3JvbGxQYW5lO1xyXG5cclxuICBmaXJzdEFjdGlvbjogQWN0aW9uPHZvaWQ+O1xyXG4gIHByZXZBY3Rpb246IEFjdGlvbjx2b2lkPjtcclxuICBuZXh0QWN0aW9uOiBBY3Rpb248dm9pZD47XHJcbiAgbGFzdEFjdGlvbjogQWN0aW9uPHZvaWQ+O1xyXG4gIHRvVmVyc2lvbkFjdGlvbjogQWN0aW9uPG51bWJlcj47XHJcblxyXG4gIG5hdmlJbmZvTG9hZGluZz1mYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIHJlY29yZGluZ0ZpbGVTZXJ2aWNlOiBSZWNvcmRpbmdGaWxlU2VydmljZSwgcHJvdGVjdGVkIHJlY29yZGluZ1NlcnZpY2U6IFJlY29yZGluZ1NlcnZpY2UsIHByb3RlY3RlZCBzZXNzaW9uU2VydmljZTogU2Vzc2lvblNlcnZpY2UsIHByb3RlY3RlZCByb3V0ZXI6Um91dGVyLHByb3RlY3RlZCByb3V0ZTogQWN0aXZhdGVkUm91dGUsIHByb3RlY3RlZCByZWY6IENoYW5nZURldGVjdG9yUmVmLCBwcm90ZWN0ZWQgZVJlZjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIGRpYWxvZzogTWF0RGlhbG9nKSB7XHJcbiAgICBzdXBlcihyb3V0ZSwgcmVmLCBlUmVmKVxyXG4gICAgdGhpcy5wYXJlbnRFID0gdGhpcy5lUmVmLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICB0aGlzLmZpcnN0QWN0aW9uID0gbmV3IEFjdGlvbjx2b2lkPignRmlyc3QnKTtcclxuICAgIHRoaXMuZmlyc3RBY3Rpb24ub25BY3Rpb249ICgpPT57XHJcbiAgICAgIHRoaXMucG9zSW5MaXN0PTA7XHJcbiAgICAgIHRoaXMubmF2aWdhdGVUb1JlY29yZGluZ0ZpbGUoKTtcclxuICAgIH1cclxuICAgIHRoaXMucHJldkFjdGlvbiA9IG5ldyBBY3Rpb248dm9pZD4oJ1ByZXZpb3VzJyk7XHJcbiAgICB0aGlzLnByZXZBY3Rpb24ub25BY3Rpb249ICgpPT50aGlzLnByZXZGaWxlKCk7XHJcbiAgICB0aGlzLm5leHRBY3Rpb24gPSBuZXcgQWN0aW9uPHZvaWQ+KCdOZXh0Jyk7XHJcbiAgICB0aGlzLm5leHRBY3Rpb24ub25BY3Rpb249ICgpPT50aGlzLm5leHRGaWxlKCk7XHJcbiAgICB0aGlzLmxhc3RBY3Rpb24gPSBuZXcgQWN0aW9uPHZvaWQ+KCdMYXN0Jyk7XHJcbiAgICB0aGlzLmxhc3RBY3Rpb24ub25BY3Rpb249ICgpPT57XHJcbiAgICAgIGlmKHRoaXMuYXZhaWxSZWNGaWxlcykge1xyXG4gICAgICAgIHRoaXMucG9zSW5MaXN0ID0gdGhpcy5hdmFpbFJlY0ZpbGVzLmxlbmd0aCAtIDE7XHJcbiAgICAgICAgdGhpcy5uYXZpZ2F0ZVRvUmVjb3JkaW5nRmlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy50b1ZlcnNpb25BY3Rpb249bmV3IEFjdGlvbjxudW1iZXI+KCdUbyB2ZXJzaW9uJyk7XHJcbiAgICB0aGlzLnRvVmVyc2lvbkFjdGlvbi5vbkFjdGlvbj0gKGFlKT0+dGhpcy50b1ZlcnNpb24oYWUpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG5cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpXHJcbiAgICB0aGlzLnJvdXRlLnF1ZXJ5UGFyYW1zLnN1YnNjcmliZSgocGFyYW1zOiBQYXJhbXMpID0+IHtcclxuICAgICAgbGV0IHJmSWRQID0gcGFyYW1zWydyZWNvcmRpbmdGaWxlSWQnXTtcclxuICAgICAgbGV0IHNJZFAgPSBwYXJhbXNbJ3Nlc3Npb25JZCddO1xyXG4gICAgICBpZiAoc0lkUCkge1xyXG4gICAgICAgdGhpcy5zZXNzaW9uSWRGcm9tUm91dGU9c0lkUDtcclxuICAgICAgfVxyXG4gICAgICBpZiAocmZJZFApIHtcclxuICAgICAgICB0aGlzLnJvdXRlZEJ5UXVlcnlQYXJhbT10cnVlO1xyXG4gICAgICAgIHRoaXMubG9hZFJlY0ZpbGUocmZJZFApO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMucm91dGUucGFyYW1zLnN1YnNjcmliZSgocGFyYW1zOiBQYXJhbXMpID0+IHtcclxuICAgICAgbGV0IHJmSWRQID0gcGFyYW1zWydyZWNvcmRpbmdGaWxlSWQnXTtcclxuICAgICAgbGV0IHNJZFAgPSBwYXJhbXNbJ3Nlc3Npb25JZCddO1xyXG4gICAgICBpZiAoc0lkUCkge1xyXG4gICAgICAgIHRoaXMuc2Vzc2lvbklkRnJvbVJvdXRlPXNJZFA7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHJmSWRQKSB7XHJcbiAgICAgICAgdGhpcy5yb3V0ZWRCeVF1ZXJ5UGFyYW09ZmFsc2U7XHJcbiAgICAgICAgdGhpcy5sb2FkUmVjRmlsZShyZklkUCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgLy8gaWYodGhpcy5zZXNzaW9uSWQpe1xyXG4gICAgLy8gICAgIHRoaXMubG9hZFNlc3Npb24odGhpcy5zZXNzaW9uSWQpO1xyXG4gICAgLy8gfVxyXG4gIH1cclxuXHJcblxyXG4gIHByaXZhdGUgbmF2aWdhdGVUb0lkKHJmSWQ6bnVtYmVyfCBzdHJpbmcpe1xyXG5cclxuICAgIGlmKHRoaXMucm91dGVkQnlRdWVyeVBhcmFtKXtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW10sIHtyZWxhdGl2ZVRvOiB0aGlzLnJvdXRlLCBxdWVyeVBhcmFtczp7J3JlY29yZGluZ0ZpbGVJZCc6cmZJZH19KVxyXG4gICAgfWVsc2Uge1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy4uLycgKyByZklkXSwge3JlbGF0aXZlVG86IHRoaXMucm91dGV9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgbmF2aWdhdGVUb1JlY29yZGluZ0ZpbGUoKXtcclxuICAgIGlmKHRoaXMucG9zSW5MaXN0IT1udWxsKSB7XHJcbiAgICAgIGxldCBsYXRlc3ROZXh0UmYgPSB0aGlzLmF2YWlsUmVjRmlsZXNbdGhpcy5wb3NJbkxpc3RdWzBdO1xyXG4gICAgICBsZXQgbG5SZklkID0gbGF0ZXN0TmV4dFJmLnJlY29yZGluZ0ZpbGVJZDtcclxuICAgICAgaWYobG5SZklkKSB7XHJcbiAgICAgICAgdGhpcy5uYXZpZ2F0ZVRvSWQobG5SZklkKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdG9WZXJzaW9uKGFlOiBBY3Rpb25FdmVudDxudW1iZXI+KSB7XHJcbiAgICBsZXQgdG9SZklkID0gbnVsbDtcclxuICAgIGxldCB2ZXJzaW9uID0gYWUudmFsdWU7XHJcbiAgICBpZih0aGlzLnBvc0luTGlzdCE9bnVsbCkge1xyXG4gICAgICBsZXQgY1JmcyA9IHRoaXMuYXZhaWxSZWNGaWxlc1t0aGlzLnBvc0luTGlzdF07XHJcbiAgICAgIGxldCBhdmFpbFZlcnNpb25DbnQgPSBjUmZzLmxlbmd0aDtcclxuICAgICAgZm9yIChsZXQgY1JmIG9mIGNSZnMpIHtcclxuICAgICAgICBpZihjUmYudmVyc2lvbiAhPW51bGwpIHtcclxuICAgICAgICAgIGlmIChjUmYudmVyc2lvbiA9PT0gdmVyc2lvbikge1xyXG4gICAgICAgICAgICB0b1JmSWQgPSBjUmYucmVjb3JkaW5nRmlsZUlkO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICh0b1JmSWQgIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLm5hdmlnYXRlVG9JZCh0b1JmSWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIHByZXZGaWxlKCkge1xyXG4gICAgaWYodGhpcy5wb3NJbkxpc3QhPW51bGwpIHtcclxuICAgICAgdGhpcy5wb3NJbkxpc3QtLTtcclxuICAgIH1cclxuICAgIHRoaXMubmF2aWdhdGVUb1JlY29yZGluZ0ZpbGUoKVxyXG4gIH1cclxuICBuZXh0RmlsZSgpIHtcclxuICAgIGlmKHRoaXMucG9zSW5MaXN0IT1udWxsKSB7XHJcbiAgICAgIHRoaXMucG9zSW5MaXN0Kys7XHJcbiAgICB9XHJcbiAgICB0aGlzLm5hdmlnYXRlVG9SZWNvcmRpbmdGaWxlKClcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcG9zaXRpb25Jbkxpc3QoKTpudW1iZXIgfCBudWxse1xyXG4gICAgaWYgKHRoaXMuYXZhaWxSZWNGaWxlcyAmJiB0aGlzLnJlY29yZGluZ0ZpbGUpIHtcclxuICAgICAgbGV0IGNpYz10aGlzLnJlY29yZGluZ0ZpbGUuaXRlbUNvZGU7XHJcbiAgICAgIGlmKCFjaWMgJiYgdGhpcy5yZWNvcmRpbmdGaWxlLnJlY29yZGluZyAmJiB0aGlzLnJlY29yZGluZ0ZpbGUucmVjb3JkaW5nLml0ZW1jb2RlKXtcclxuICAgICAgICBjaWM9dGhpcy5yZWNvcmRpbmdGaWxlLnJlY29yZGluZy5pdGVtY29kZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoY2ljKSB7XHJcbiAgICAgICAgbGV0IGl0ZW1DbnQgPSB0aGlzLmF2YWlsUmVjRmlsZXMubGVuZ3RoXHJcbiAgICAgICAgZm9yIChsZXQgcmZkaSA9IDA7IHJmZGkgPCBpdGVtQ250OyByZmRpKyspIHtcclxuICAgICAgICAgIGxldCBhclJmID0gdGhpcy5hdmFpbFJlY0ZpbGVzW3JmZGldWzBdO1xyXG4gICAgICAgICAgaWYgKGFyUmYucmVjb3JkaW5nKSB7XHJcbiAgICAgICAgICAgIGxldCBhciA9IGFyUmYucmVjb3JkaW5nO1xyXG4gICAgICAgICAgICBpZiAoY2ljID09PSBhci5pdGVtY29kZSkge1xyXG4gICAgICAgICAgICAgIHJldHVybiByZmRpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICBsZXQgaXRlbUNudCA9IHRoaXMuYXZhaWxSZWNGaWxlcy5sZW5ndGhcclxuICAgICAgICBmb3IgKGxldCByZmRpID0gMDsgcmZkaSA8IGl0ZW1DbnQ7IHJmZGkrKykge1xyXG4gICAgICAgICAgbGV0IGFyUmYgPSB0aGlzLmF2YWlsUmVjRmlsZXNbcmZkaV1bMF07XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnJlY29yZGluZ0ZpbGUudXVpZCA9PT0gYXJSZi51dWlkKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHJmZGk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZVBvcygpe1xyXG4gICAgdGhpcy5wb3NJbkxpc3Q9dGhpcy5wb3NpdGlvbkluTGlzdCgpO1xyXG4gICAgdGhpcy50b1ZlcnNpb25BY3Rpb24uZGlzYWJsZWQ9dHJ1ZTtcclxuICAgIGlmKHRoaXMuYXZhaWxSZWNGaWxlcyl7XHJcbiAgICAgIGxldCBhdlJmc0xlbj10aGlzLmF2YWlsUmVjRmlsZXMubGVuZ3RoO1xyXG4gICAgICBpZih0aGlzLnBvc0luTGlzdCAhPW51bGwgJiYgYXZSZnNMZW4+dGhpcy5wb3NJbkxpc3QpIHtcclxuICAgICAgICBsZXQgYXJmcyA9IHRoaXMuYXZhaWxSZWNGaWxlc1t0aGlzLnBvc0luTGlzdF07XHJcbiAgICAgICAgaWYgKGFyZnMpIHtcclxuICAgICAgICAgIHRoaXMudmVyc2lvbnMgPSBuZXcgQXJyYXk8bnVtYmVyPigpO1xyXG4gICAgICAgICAgZm9yIChsZXQgYXJmIG9mIGFyZnMpIHtcclxuICAgICAgICAgICAgaWYoYXJmLnJlY29yZGluZz8uaXRlbWNvZGUpIHtcclxuICAgICAgICAgICAgICB0aGlzLnZlcnNpb25zLnB1c2goYXJmLnZlcnNpb24pXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICB0aGlzLnRvVmVyc2lvbkFjdGlvbi5kaXNhYmxlZD0odGhpcy52ZXJzaW9ucy5sZW5ndGg8Mik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYodGhpcy5yZWNvcmRpbmdGaWxlKXtcclxuICAgICAgaWYodGhpcy5yZWNvcmRpbmdGaWxlLnZlcnNpb24pe1xyXG4gICAgICAgIHRoaXMucmVjb3JkaW5nRmlsZVZlcnNpb249dGhpcy5yZWNvcmRpbmdGaWxlLnZlcnNpb247XHJcbiAgICAgIH1lbHNle1xyXG4gICAgICAgIHRoaXMucmVjb3JkaW5nRmlsZVZlcnNpb249MDtcclxuICAgICAgfVxyXG4gICAgfWVsc2V7XHJcbiAgICAgIHRoaXMucmVjb3JkaW5nRmlsZVZlcnNpb249bnVsbDtcclxuICAgIH1cclxuICAgIHRoaXMudXBkYXRlQWN0aW9ucygpXHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgbG9hZFJlY0ZpbGUocmZJZDpudW1iZXIgfCBzdHJpbmcpIHtcclxuICAgIHRoaXMuYXA/LnN0b3AoKTtcclxuICAgIHRoaXMuYXVkaW9DbGlwID1udWxsO1xyXG4gICAgdGhpcy5yZWNvcmRpbmdGaWxlPW51bGw7XHJcbiAgICB0aGlzLnBvc0luTGlzdD1udWxsO1xyXG4gICAgdGhpcy51cGRhdGVBY3Rpb25zKCk7XHJcbiAgICBsZXQgYXVkaW9Db250ZXh0ID0gQXVkaW9Db250ZXh0UHJvdmlkZXIuYXVkaW9Db250ZXh0SW5zdGFuY2UoKTtcclxuICAgIGlmKGF1ZGlvQ29udGV4dCkge1xyXG4gICAgICB0aGlzLnJlY29yZGluZ0ZpbGVTZXJ2aWNlLmZldGNoU3ByUmVjb3JkaW5nRmlsZShhdWRpb0NvbnRleHQsIHJmSWQpLnN1YnNjcmliZSh2YWx1ZSA9PiB7XHJcbiAgICAgICAgdGhpcy5zdGF0dXMgPSAnQXVkaW8gZmlsZSBsb2FkZWQuJztcclxuICAgICAgICBsZXQgY2xpcCA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5yZWNvcmRpbmdGaWxlID0gdmFsdWU7XHJcbiAgICAgICAgaWYgKHRoaXMucmVjb3JkaW5nRmlsZSkge1xyXG4gICAgICAgICAgbGV0IGFiID0gdGhpcy5yZWNvcmRpbmdGaWxlLmF1ZGlvQnVmZmVyO1xyXG4gICAgICAgICAgaWYgKGFiKSB7XHJcbiAgICAgICAgICAgIGNsaXAgPSBuZXcgQXVkaW9DbGlwKGFiKTtcclxuXHJcbiAgICAgICAgICAgIGxldCBlc2Zmc3IgPSBudWxsO1xyXG4gICAgICAgICAgICBsZXQgZWVmZnNyID0gbnVsbDtcclxuICAgICAgICAgICAgbGV0IGVzciA9IG51bGw7XHJcblxyXG4gICAgICAgICAgICBpZiAoY2xpcC5idWZmZXIgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgIGVzciA9IGFiLnNhbXBsZVJhdGU7XHJcbiAgICAgICAgICAgICAgaWYgKGVzciAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICBlc2Zmc3IgPSBSZWNvcmRpbmdGaWxlVXRpbC5lZGl0U3RhcnRGcmFtZUZvclNhbXBsZVJhdGUodGhpcy5yZWNvcmRpbmdGaWxlLCBlc3IpO1xyXG4gICAgICAgICAgICAgICAgZWVmZnNyID0gUmVjb3JkaW5nRmlsZVV0aWwuZWRpdEVuZEZyYW1lRm9yU2FtcGxlUmF0ZSh0aGlzLnJlY29yZGluZ0ZpbGUsIGVzcik7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGxldCBzZWw6IFNlbGVjdGlvbiB8IG51bGwgPSBudWxsO1xyXG4gICAgICAgICAgICAgIGlmIChlc2Zmc3IgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGVlZmZzciAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgIHNlbCA9IG5ldyBTZWxlY3Rpb24oYWIuc2FtcGxlUmF0ZSwgZXNmZnNyLCBlZWZmc3IpO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgbGV0IGNoMCA9IGFiLmdldENoYW5uZWxEYXRhKDApO1xyXG4gICAgICAgICAgICAgICAgICBsZXQgZnJhbWVMZW5ndGggPSBjaDAubGVuZ3RoO1xyXG4gICAgICAgICAgICAgICAgICBzZWwgPSBuZXcgU2VsZWN0aW9uKGVzciwgZXNmZnNyLCBmcmFtZUxlbmd0aCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChlZWZmc3IgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgc2VsID0gbmV3IFNlbGVjdGlvbihlc3IsIDAsIGVlZmZzcik7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGNsaXAuc2VsZWN0aW9uID0gc2VsXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5hdWRpb0NsaXAgPSBjbGlwXHJcbiAgICAgICAgdGhpcy5sb2FkZWRSZWNmaWxlKCk7XHJcblxyXG4gICAgICB9LCBlcnJvcjEgPT4ge1xyXG4gICAgICAgIHRoaXMuc3RhdHVzID0gJ0Vycm9yIGxvYWRpbmcgYXVkaW8gZmlsZSEnO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBsb2FkZWRSZWNmaWxlKCkge1xyXG4gICAgaWYodGhpcy5yZWNvcmRpbmdGaWxlICYmICF0aGlzLnNlc3Npb25JZCkge1xyXG4gICAgICBsZXQgc0lkPXRoaXMucmVjb3JkaW5nRmlsZS5zZXNzaW9uXHJcbiAgICAgIGlmKCFzSWQpe1xyXG4gICAgICAgIHNJZD10aGlzLnNlc3Npb25JZEZyb21Sb3V0ZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoc0lkKSB7XHJcbiAgICAgICAgdGhpcy5sb2FkU2Vzc2lvbihzSWQpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy51cGRhdGVQb3MoKTtcclxuICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlQWN0aW9ucygpe1xyXG4gICAgbGV0IGl0ZW1DbnQ6bnVtYmVyfG51bGw9bnVsbDtcclxuICAgIGlmKHRoaXMuYXZhaWxSZWNGaWxlcykge1xyXG4gICAgICBpdGVtQ250ID0gdGhpcy5hdmFpbFJlY0ZpbGVzLmxlbmd0aDtcclxuICAgIH1cclxuICAgIHRoaXMuZmlyc3RBY3Rpb24uZGlzYWJsZWQ9KHRoaXMucG9zSW5MaXN0PT1udWxsIHx8IHRoaXMucG9zSW5MaXN0ID09IDApO1xyXG4gICAgdGhpcy5wcmV2QWN0aW9uLmRpc2FibGVkPSh0aGlzLnBvc0luTGlzdD09bnVsbCB8fCB0aGlzLnBvc0luTGlzdCA9PSAwKTtcclxuICAgIHRoaXMubmV4dEFjdGlvbi5kaXNhYmxlZD0odGhpcy5wb3NJbkxpc3Q9PW51bGwgfHwgaXRlbUNudD09bnVsbCB8fCB0aGlzLnBvc0luTGlzdCA+PSBpdGVtQ250IC0gMSk7XHJcbiAgICB0aGlzLmxhc3RBY3Rpb24uZGlzYWJsZWQ9KHRoaXMucG9zSW5MaXN0PT1udWxsIHx8IGl0ZW1DbnQ9PW51bGwgfHwgdGhpcy5wb3NJbkxpc3QgPj0gaXRlbUNudCAtIDEpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsb2FkU2Vzc2lvbihzZXNzaW9uSWQ6IHN0cmluZ3wgbnVtYmVyKSB7XHJcbiAgICAvLyBsb2FkIHNlc3Npb24gYW5kIHJlY29yZGluZyBmaWxlIG1ldGEgZGF0YSBvbmx5IHdoZW4gb24gaW5pdCBhbmQgd2hlbiBzZXNzaW9uIGNoYW5nZXNcclxuICAgIGlmICg8c3RyaW5nPnNlc3Npb25JZCAhPSA8c3RyaW5nPnRoaXMuc2Vzc2lvbklkKSB7XHJcbiAgICAgIC8vIHRlbGwgVUkgdGhhdCB3ZSBhcmUgd29ya2luZy4uLlxyXG4gICAgICB0aGlzLm5hdmlJbmZvTG9hZGluZz10cnVlO1xyXG4gICAgICB0aGlzLnNlc3Npb25TZXJ2aWNlLnNlc3Npb25PYnNlcnZlcig8c3RyaW5nPnNlc3Npb25JZCkuc3Vic2NyaWJlKChzKSA9PiB7XHJcbiAgICAgICAgLy8gcmVjZWl2ZWQgc2Vzc2lvbiBkYXRhXHJcbiAgICAgICAgdGhpcy5zZXNzaW9uSWQgPSBzLnNlc3Npb25JZDtcclxuICAgICAgICAvLyBmZXRjaCByZWNvcmRpbmcgZmlsZSBtZXRhIGRhdGEgbGlzdFxyXG4gICAgICAgIHRoaXMucmVjb3JkaW5nU2VydmljZS5zcHJSZWNvcmRpbmdGaWxlTGlzdChzLnByb2plY3QsIHMuc2Vzc2lvbklkKS5zdWJzY3JpYmUoKHJmZHMpID0+IHtcclxuICAgICAgICAgIHRoaXMuYXZhaWxSZWNGaWxlcyA9IG5ldyBBcnJheTxBcnJheTxTcHJSZWNvcmRpbmdGaWxlPj4oKTtcclxuICAgICAgICAgIC8vIGJ1aWxkIHN0cnVjdHVyZSBpbmRleGVkIGJ5IGl0ZW1jb2RlXHJcbiAgICAgICAgICBsZXQgaWNJZHggPSBuZXcgSXRlbWNvZGVJbmRleCgpO1xyXG4gICAgICAgICAgZm9yIChsZXQgcmZkaSA9IDA7IHJmZGkgPCByZmRzLmxlbmd0aDsgcmZkaSsrKSB7XHJcbiAgICAgICAgICAgIGxldCByZmQgPSByZmRzW3JmZGldO1xyXG4gICAgICAgICAgICBpZiAocmZkLmRhdGUpIHtcclxuICAgICAgICAgICAgICAvLyBjb252ZXJ0IGRhdGUgc3RyaW5nIGZvciBmYXN0ZXIgc29ydGluZyBsYXRlclxyXG4gICAgICAgICAgICAgIGxldCByZmRkID0gbmV3IERhdGUocmZkLmRhdGUpO1xyXG4gICAgICAgICAgICAgIHJmZC5fZGF0ZUFzRGF0ZU9iaiA9IHJmZGQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbGV0IGljID0gcmZkLml0ZW1Db2RlO1xyXG5cclxuICAgICAgICAgICAgaWYgKCFpYykge1xyXG4gICAgICAgICAgICAgIGxldCByID0gcmZkLnJlY29yZGluZztcclxuICAgICAgICAgICAgICBpZiAociAmJiByLml0ZW1jb2RlKSB7XHJcbiAgICAgICAgICAgICAgICBpYyA9IHIuaXRlbWNvZGU7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChpYykge1xyXG4gICAgICAgICAgICAgIGxldCBleFJmc0ZvckljID0gaWNJZHhbaWNdO1xyXG4gICAgICAgICAgICAgIGlmIChleFJmc0ZvckljID09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIC8vIGl0ZW1jb2RlIG5vdCB5ZXQgc3RvcmVkXHJcbiAgICAgICAgICAgICAgICBsZXQgYXJmZCA9IG5ldyBBcnJheTxTcHJSZWNvcmRpbmdGaWxlPigpO1xyXG4gICAgICAgICAgICAgICAgYXJmZC5wdXNoKHJmZCk7XHJcbiAgICAgICAgICAgICAgICBpY0lkeFtpY10gPSBhcmZkO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hdmFpbFJlY0ZpbGVzLnB1c2goYXJmZCk7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8vIHJlYyBmaWxlIHdpdGggaXRlbWNvZGUgYWxyZWFkeSBleGlzdHMsIGFkZCAocHVzaCkgdGhpcyB2ZXJzaW9uIC4uLlxyXG4gICAgICAgICAgICAgICAgZXhSZnNGb3JJYy5wdXNoKHJmZCk7XHJcbiAgICAgICAgICAgICAgICAvLyAuLiBhbmQgc29ydCBsYXRlc3QgdmVyc2lvbiAoaGlnaGVzdCB2ZXJzaW9uIG51bWJlcikgdG8gbG93ZXN0IGluZGV4XHJcbiAgICAgICAgICAgICAgICBleFJmc0ZvckljLnNvcnQoKHJmZDEsIHJmZDIpID0+IHtcclxuICAgICAgICAgICAgICAgICAgcmV0dXJuIHJmZDIudmVyc2lvbiAtIHJmZDEudmVyc2lvbjtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBsZXQgYXJmZCA9IG5ldyBBcnJheTxTcHJSZWNvcmRpbmdGaWxlPigpO1xyXG4gICAgICAgICAgICAgIGFyZmQucHVzaChyZmQpO1xyXG4gICAgICAgICAgICAgIHRoaXMuYXZhaWxSZWNGaWxlcy5wdXNoKGFyZmQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAvLyBoYXZlIHVuc29ydGVkIGl0ZW1jb2RlIGluZGV4ZWQgcmVjb3JkaW5nIGZpbGVzIGhlcmVcclxuICAgICAgICAgIC8vIHNvcnQgdGhlbSBvcmRlcmVkIGJ5IGRhdGUgb2YgbGF0ZXN0IHZlcnNpb24gYXNjZW5kaW5nXHJcbiAgICAgICAgICB0aGlzLmF2YWlsUmVjRmlsZXMuc29ydCgocmZzMSwgcmZzMikgPT4ge1xyXG4gICAgICAgICAgICBsZXQgZDEgPSByZnMyWzBdLl9kYXRlQXNEYXRlT2JqO1xyXG4gICAgICAgICAgICBsZXQgZDIgPSByZnMxWzBdLl9kYXRlQXNEYXRlT2JqO1xyXG4gICAgICAgICAgICBpZiAoZDEgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgIGlmIChkMiA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gMDtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy8gU29ydCBlbnRyaWVzIHdob3NlIGRhdGVzIGFyZSBub3Qgc2V0IHRvIHRoZSBlbmRcclxuICAgICAgICAgICAgICAgIHJldHVybiAtMTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgaWYgKGQyID09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIC8vIFNvcnQgZW50cmllcyB3aG9zZSBkYXRlcyBhcmUgbm90IHNldCB0byB0aGUgZW5kXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gMTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy8gQ29tcGFyZSBkYXRlIGJ5IHRpbWUgaW4gbWlsbGlzZWNvbmRzIHZhbHVlXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZDIuZ2V0VGltZSgpIC0gZDEuZ2V0VGltZSgpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICBmb3IobGV0IGF2UmYgb2YgdGhpcy5hdmFpbFJlY0ZpbGVzKXtcclxuICAgICAgICAgICAgICBpZihhdlJmWzBdICYmIGF2UmZbMF0ucmVjb3JkaW5nKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgb3MgPSBhdlJmWzBdLnJlY29yZGluZy5pdGVtY29kZSArICc6IHZlcnNpb25zOiAnO1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgYXZSZlYgb2YgYXZSZikge1xyXG4gICAgICAgICAgICAgICAgICBvcyArPSBhdlJmVi52ZXJzaW9uICsgJy8nO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY29uc29sZS5kZWJ1Zyhvcyk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy51cGRhdGVQb3MoKVxyXG4gICAgICAgICAgdGhpcy5uYXZpSW5mb0xvYWRpbmc9ZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4iXX0=