@churchillliving/se-ui-toolkit 6.53.948 → 6.53.949

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.
@@ -18,6 +18,7 @@ export var EValidator;
18
18
  EValidator["DECIMAL"] = "decimal";
19
19
  EValidator["EMAIL"] = "email";
20
20
  EValidator["PHONE"] = "phone";
21
+ EValidator["MAXOPTIONS"] = "maxOptions";
21
22
  })(EValidator || (EValidator = {}));
22
23
  export var EFormControl;
23
24
  (function (EFormControl) {
@@ -102,4 +103,4 @@ export var IReportType;
102
103
  IReportType["TEXT"] = "txt";
103
104
  IReportType["CSV"] = "csv";
104
105
  })(IReportType || (IReportType = {}));
105
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NlLXVpLXRvb2xraXQvc3JjL2xpYi9tb2RlbHMvZm9ybS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUEwTUEsTUFBTSxDQUFOLElBQVksZUFNWDtBQU5ELFdBQVksZUFBZTtJQUN6QixtQ0FBZ0IsQ0FBQTtJQUNoQiw0REFBeUMsQ0FBQTtJQUN6Qyx5Q0FBc0IsQ0FBQTtJQUN0QiwrQkFBWSxDQUFBO0lBQ1osK0JBQVksQ0FBQTtBQUNkLENBQUMsRUFOVyxlQUFlLEtBQWYsZUFBZSxRQU0xQjtBQUVELE1BQU0sQ0FBTixJQUFZLFVBV1g7QUFYRCxXQUFZLFVBQVU7SUFDcEIsbUNBQXFCLENBQUE7SUFDckIscUNBQXVCLENBQUE7SUFDdkIscUNBQXVCLENBQUE7SUFDdkIsaUNBQW1CLENBQUE7SUFDbkIsaUNBQW1CLENBQUE7SUFDbkIsaUNBQW1CLENBQUE7SUFDbkIsaUNBQW1CLENBQUE7SUFDbkIsaUNBQW1CLENBQUE7SUFDbkIsNkJBQWUsQ0FBQTtJQUNmLDZCQUFlLENBQUE7QUFDakIsQ0FBQyxFQVhXLFVBQVUsS0FBVixVQUFVLFFBV3JCO0FBRUQsTUFBTSxDQUFOLElBQVksWUEwQlg7QUExQkQsV0FBWSxZQUFZO0lBQ3RCLGlDQUFpQixDQUFBO0lBQ2pCLCtCQUFlLENBQUE7SUFDZiwrQkFBZSxDQUFBO0lBQ2YscUNBQXFCLENBQUE7SUFDckIscUNBQXFCLENBQUE7SUFDckIscUNBQXFCLENBQUE7SUFDckIsa0NBQWtCLENBQUE7SUFDbEIsNENBQTRCLENBQUE7SUFDNUIsc0NBQXNCLENBQUE7SUFDdEIsdUNBQXVCLENBQUE7SUFDdkIsNkNBQTZCLENBQUE7SUFDN0IseUNBQXlCLENBQUE7SUFDekIsdUNBQXVCLENBQUE7SUFDdkIscUNBQXFCLENBQUE7SUFDckIsNkNBQTZCLENBQUE7SUFDN0IsaUNBQWlCLENBQUE7SUFDakIsaURBQWlDLENBQUE7SUFDakMsMkNBQTJCLENBQUE7SUFDM0IsNkJBQWEsQ0FBQTtJQUNiLDZDQUE2QixDQUFBO0lBQzdCLHlDQUF5QixDQUFBO0lBQ3pCLHlDQUF5QixDQUFBO0lBQ3pCLGlDQUFpQixDQUFBO0lBQ2pCLGlDQUFpQixDQUFBO0lBQ2pCLDhDQUE0QixDQUFBO0FBQzlCLENBQUMsRUExQlcsWUFBWSxLQUFaLFlBQVksUUEwQnZCO0FBRUQsTUFBTSxDQUFOLElBQVksU0FHWDtBQUhELFdBQVksU0FBUztJQUNuQix3QkFBVyxDQUFBO0lBQ1gsc0JBQVMsQ0FBQTtBQUNYLENBQUMsRUFIVyxTQUFTLEtBQVQsU0FBUyxRQUdwQjtBQUVELE1BQU0sQ0FBTixJQUFZLFVBa0JYO0FBbEJELFdBQVksVUFBVTtJQUNwQiwrQkFBaUIsQ0FBQTtJQUNqQix1Q0FBeUIsQ0FBQTtJQUN6QixtQ0FBb0IsQ0FBQTtJQUNwQix1QkFBUyxDQUFBO0lBQ1QsbUNBQXFCLENBQUE7SUFDckIscUNBQXVCLENBQUE7SUFDdkIsNkJBQWUsQ0FBQTtJQUNmLHFDQUF1QixDQUFBO0lBQ3ZCLHlDQUEwQixDQUFBO0lBQzFCLHVCQUFTLENBQUE7SUFDVCwrQkFBaUIsQ0FBQTtJQUNqQix1Q0FBeUIsQ0FBQTtJQUN6Qix5QkFBVyxDQUFBO0lBQ1gsdUJBQVMsQ0FBQTtJQUNULDZCQUFlLENBQUE7SUFDZixxQ0FBdUIsQ0FBQTtJQUN2Qix5QkFBVyxDQUFBO0FBQ2IsQ0FBQyxFQWxCVyxVQUFVLEtBQVYsVUFBVSxRQWtCckI7QUFpQ0QsTUFBTSxDQUFOLElBQVksV0FZWDtBQVpELFdBQVksV0FBVztJQUNyQixtQ0FBb0IsQ0FBQTtJQUNwQixxQ0FBc0IsQ0FBQTtJQUN0QixxQ0FBc0IsQ0FBQTtJQUN0QixvQ0FBcUIsQ0FBQTtJQUNyQixrQ0FBbUIsQ0FBQTtJQUNuQiw4QkFBZSxDQUFBO0lBQ2Ysd0NBQXlCLENBQUE7SUFDekIsZ0NBQWlCLENBQUE7SUFDakIsb0NBQXFCLENBQUE7SUFDckIsa0NBQW1CLENBQUE7SUFDbkIsa0NBQW1CLENBQUE7QUFDckIsQ0FBQyxFQVpXLFdBQVcsS0FBWCxXQUFXLFFBWXRCO0FBYUQsTUFBTSxDQUFOLElBQVksVUFPWDtBQVBELFdBQVksVUFBVTtJQUNwQiw4QkFBZ0IsQ0FBQTtJQUNoQiw0QkFBYyxDQUFBO0lBQ2QsZ0NBQWtCLENBQUE7SUFDbEIsMEJBQVksQ0FBQTtJQUNaLGdDQUFrQixDQUFBO0lBQ2xCLGdDQUFrQixDQUFBO0FBQ3BCLENBQUMsRUFQVyxVQUFVLEtBQVYsVUFBVSxRQU9yQjtBQUVELE1BQU0sQ0FBTixJQUFZLFdBS1g7QUFMRCxXQUFZLFdBQVc7SUFDckIsMEJBQVcsQ0FBQTtJQUNYLDhCQUFlLENBQUE7SUFDZiwyQkFBWSxDQUFBO0lBQ1osMEJBQVcsQ0FBQTtBQUNiLENBQUMsRUFMVyxXQUFXLEtBQVgsV0FBVyxRQUt0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElHcmlkU29ydCwgSVNlbGVjdEl0ZW0gfSBmcm9tICcuL2dyaWQubW9kZWwnO1xuaW1wb3J0IHsgSVBlcm1pc3Npb24gfSBmcm9tICcuL3VzZXItaW5mby5tb2RlbCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUR5bmFtaWNGb3JtIHtcbiAgZm9ybVNlY3Rpb25zPzogSUZvcm1TZWN0aW9uW107XG4gIGNvbHVtbj86IG51bWJlcjtcbiAgcGVybWlzc2lvbnM/OiBJUGVybWlzc2lvbltdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElMYWJlbCB7XG4gIG5hbWU6IHN0cmluZztcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICBsYWJlbENvbnRyb2w/OiBJRm9ybUZpZWxkO1xuICBvblJldHVybj86ICh2YWx1ZTogYW55KSA9PiB2b2lkO1xuICBvbkNsaWNrPzogKCkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJRHJvcERvd25SZXF1ZXN0IHtcbiAgdW5pcXVlS2V5OiBzdHJpbmcsXG4gIHZhbHVlUHJvcDogc3RyaW5nLFxuICBsYWJlbFByb3A6IHN0cmluZyxcbiAgZmlsdGVycz86IElTZXRGaWx0ZXJbXVxuICBzb3J0cz86SUdyaWRTb3J0W10gXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUF1dG9Db21wbGV0ZVNhdmUge1xuICBuYW1lOnN0cmluZyxcbiAgdmFsdWVzOklBdXRvQ29tcGxldGVWYWx1ZVNhdmVbXSxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJQXV0b0NvbXBsZXRlVmFsdWVTYXZle1xuICBuYW1lOnN0cmluZyxcbiAgdmFsdWU/OmFueVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTZXRGaWx0ZXIge1xuICBmaWVsZD86IHN0cmluZyxcbiAgdmFsdWU/OiBhbnksXG4gIG1hdGNoTW9kZT86IHN0cmluZyxcbiAgb3BlcmF0b3I/OiBzdHJpbmcsXG4gIHZhbHVlRmllbGQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUZvcm1TZWN0aW9uIHtcbiAgbmFtZT86IHN0cmluZztcbiAgZmllbGRzOiBJRm9ybUZpZWxkW107XG4gIGljb24/OiBzdHJpbmc7XG4gIGNsYXNzPzogc3RyaW5nO1xuICBsaW5rcz86IElMYWJlbFtdO1xuICBwZXJtaXNzaW9ucz86IElQZXJtaXNzaW9uW107XG4gIGhpZGRlbj86IGJvb2xlYW47XG4gIGFjY29yZGlvbkRpc2FibGVkPzogYm9vbGVhbjtcbiAgc2hvd0FjY29yZGlvbj86IGJvb2xlYW47XG4gIGV4cGFuZGVkPzogYm9vbGVhbjtcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICBkaXNhYmxlZFRleHQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElGb3JtRmllbGQge1xuICBsYWJlbD86IHN0cmluZyB8IElMYWJlbDtcbiAgY2xhc3M/OiBzdHJpbmc7XG4gIGNhcmQ/OiBJRHluYW1pY0NhcmQ7XG4gIGNvbnRyb2w/OiBFRm9ybUNvbnRyb2w7XG4gIGZpZWxkPzogc3RyaW5nO1xuICBkaXNwbGF5RmllbGQ/OiBzdHJpbmc7XG4gIHNob3dPcHRpb24/OiBib29sZWFuO1xuICB2YWx1ZT86IGFueSB8IElMb29rdXBJbnB1dFZhbHVlO1xuICBkYXRhPzogYW55W107XG4gIHZhbGlkYXRpb25zPzogSVZhbGlkYXRpb25bXTtcbiAgZXJyb3JNZXNzYWdlPzogc3RyaW5nO1xuICBtaW51dGVzSW50ZXJ2YWw/OiBudW1iZXI7XG4gIGlkPzogc3RyaW5nO1xuICByZXF1aXJlZD86IGJvb2xlYW47XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgZGlzYWJsZWRUZXh0PzogYm9vbGVhbjtcbiAgbG9va3VwQ29udHJvbD86IElMb29rdXBDb250cm9sRmllbGQ7XG4gIHRhYmxlcz86IHN0cmluZ1tdO1xuICBjb21wb25lbnRDb250cm9sPzogSUZvcm1Db21wb25lbnRGaWVsZDtcbiAgY29sdW1uPzogbnVtYmVyO1xuICByb3c/OiBudW1iZXI7XG4gIGh5cGVybGluaz86IElIeXBlcmxpbms7XG4gIGZvcm1hdD86IElGb3JtYXQ7XG4gIHBlcm1pc3Npb25zPzogSVBlcm1pc3Npb25bXTtcbiAgaGlkZGVuPzogYm9vbGVhbjtcbiAgb3B0aW9uTGFiZWw/OiBzdHJpbmc7XG4gIG9wdGlvblZhbHVlPzogc3RyaW5nO1xuICBzYXZlQXNTdHJpbmc/OiBib29sZWFuO1xuICBzaG93QWxsVmFsdWU/OiBib29sZWFuO1xuICBvbkNsaWNrPzogKHZhbHVlPzogYW55KSA9PiBhbnk7XG4gIG9uUmV0dXJuPzogKHZhbHVlPzogYW55LCBzZWxlY3RlZFJvdz86IGFueSkgPT4gdm9pZDtcbiAgb25Gb2N1c091dD86ICh2YWx1ZTogYW55KSA9PiB2b2lkO1xuICBvbkNoYW5nZT86ICh2YWx1ZTogYW55KSA9PiBhbnk7XG4gIGlzdmFsaWQ/OiBib29sZWFuO1xuICB0aW1lT25seT86IGJvb2xlYW5cbiAgbW9udGhPbmx5PzogYm9vbGVhbjtcbiAgc2hvd1RpbWU/OiBib29sZWFuOyAvLyB0byBzaG93IHRpbWUgYXMgd2VsbCBpbiBjYWxlbmRhciBmb3JtIGZpZWxkXG4gIHJlcXVpcmVkRmllbGQ/OiBib29sZWFuO1xuICBoZWlnaHQ/OiBzdHJpbmc7XG4gIHNob3dCb3R0b21Cb3JkZXI/OiBib29sZWFuO1xuICBhbGxvd1NlYXJjaD86IGJvb2xlYW47XG4gIGlzUGFzc3dvcmQ/OmJvb2xlYW5cbiAgdGV4dFR5cGU/OnN0cmluZztcbiAgc2VsZWN0TXVsdGlwbGVGaWxlcz86IGJvb2xlYW47XG4gIFNldGZpbGVUeXBlcz86IEVTZWxlY3RGaWxlVHlwZTtcbiAgaWNvbj86IHN0cmluZztcbiAgY29sb3I/OiBzdHJpbmc7XG4gIHVuaXF1ZUtleT86IHN0cmluZztcbiAgYXp1cmVDb250YWluZXI/OiBzdHJpbmc7XG4gIHBhdGhTeXN0ZW1Db25maWc/OiBzdHJpbmc7XG4gIGRpc3BsYXlTdHlsZT86Ym9vbGVhbjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgSUZvcm1CdXR0b257XG4gIGljb24/OnN0cmluZztcbiAgbGFiZWw6c3RyaW5nO1xuICBoaWRkZW4/OmJvb2xlYW47XG4gIGZ1bmM6RnVuY3Rpb247XG4gIGRpc2FibGVkPzpib29sZWFuO1xufVxuZXhwb3J0IGludGVyZmFjZSBJRHluYW1pY0NhcmQge1xuICBpZD86IG51bWJlcjtcbiAgbmFtZT86IHN0cmluZztcbiAgZGF0YT86IGFueVtdO1xuICBvcmRlckJ5RmllbGQ/OiBzdHJpbmc7XG4gIGZvcm1TZWN0aW9ucz86IElGb3JtU2VjdGlvbltdO1xuICBvblNvcnQ/OiAodmFsdWU6IGFueSkgPT4gYW55O1xuICBjb250YWluZXJOYW1lPzogc3RyaW5nO1xuICBhbGxvd0RlbGV0ZT86IGJvb2xlYW47XG4gIGFsbG93RG93bmxvYWQ/OiBib29sZWFuO1xuICB1cmw/OiBzdHJpbmc7XG4gIGNhcHRpb24/OiBzdHJpbmc7XG4gIHdpZHRoPzogc3RyaW5nO1xuICBoZWlnaHQ/OiBzdHJpbmc7XG4gIGFsbG93RWRpdGFibGVDYXB0aW9uPzogYm9vbGVhbjtcbiAgb25DYXB0aW9uU2F2ZT86ICh2YWx1ZTogYW55KSA9PiBhbnk7XG4gIG9uRGVsZXRlPzogKHZhbHVlOiBhbnkpID0+IGFueTtcbiAgY2xhc3M/OiBzdHJpbmc7XG4gIGNhcmRJbmZvPzogSVZpZXdDYXJkUHJvcDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJVmlld0NhcmRQcm9wIHtcbiAgdXJsPzogc3RyaW5nO1xuICBjYXB0aW9uPzogc3RyaW5nO1xuICBleHRlbnNpb24/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVJlcG9ydEJ0bntcbiAgcmVwb3J0SWQ/OiBudW1iZXI7XG4gIHJlcG9ydE5hbWU/OiBzdHJpbmc7XG4gIGxhYmVsPzogc3RyaW5nO1xuICBjb250cm9sPzogRUZvcm1Db250cm9sLlJFUE9SVDtcbiAgcGFyYW1zPzogYW55W107XG4gIHNob3dEaWFsb2c/OiBib29sZWFuO1xuICByZXBvcnRIZWFkZXI/OiBzdHJpbmc7XG4gIHJlcG9ydEZvb3Rlcj86IHN0cmluZztcbiAgcmVwb3J0VHlwZT86IElSZXBvcnRUeXBlO1xuICBpY29uPzogc3RyaW5nO1xuICBjbGFzcz86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJTGlzdEZpbHRlciB7XG4gIHVuaXF1ZUtleTogc3RyaW5nO1xuICBmaWx0ZXJzPzogSVNldEZpbHRlcltdO1xuICBzb3J0cz86IElHcmlkU29ydFtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElGb3JtQ29tcG9uZW50RmllbGQge1xuICBjb21wb25lbnQ6IFR5cGU8YW55PjtcbiAgaWQ/OnN0cmluZztcbiAgZGF0YT86IHtcbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gIH07XG4gIGhhbmRsZXJzPzoge1xuICAgIFtrZXk6IHN0cmluZ106IEZ1bmN0aW9uO1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElMb29rdXBJbnB1dFZhbHVlIHtcbiAgdGV4dDogYW55O1xuICB2YWx1ZTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElMb29rdXBDb250cm9sRmllbGQge1xuICBjb21wb25lbnQ6IGFueTtcbiAgZGF0YTogSUxvb2t1cEZpZWxkRGF0YTtcbiAgaWQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBkZWNsYXJlIHR5cGUgSUxvb2t1cEZpZWxkRGF0YSA9IHtcbiAgaGVhZGVyPzogc3RyaW5nO1xuICBoZWlnaHQ/OiBzdHJpbmc7XG4gIHdpZHRoPzogc3RyaW5nO1xuICBkYXRhPzoge1trZXk6IHN0cmluZ106IGFueX07XG4gIGxhYmVsUHJvcD86IHN0cmluZztcbiAgdmFsdWVQcm9wPzogc3RyaW5nO1xufSBcblxuZXhwb3J0IGludGVyZmFjZSBJVmFsaWRhdGlvbiB7XG4gIHR5cGU6IEVWYWxpZGF0b3I7XG4gIGV4cHJlc3Npb24/OiBhbnk7XG59XG5cbmV4cG9ydCBlbnVtIEVTZWxlY3RGaWxlVHlwZSB7XG4gIEVYQ0VMID0gJy5leGNlbCcsXG4gIElNQUdFID0gJy5pbWFnZSwgLmpwZywgLnBuZywgLmpwZWcsIC5naWYnLFxuICBET0NVTUVOVCA9ICcuZG9jdW1lbnQnLFxuICBQREYgPSAnLnBkZicsXG4gIE1SVCA9ICcubXJ0Jyxcbn1cblxuZXhwb3J0IGVudW0gRVZhbGlkYXRvciB7XG4gIFJFUVVJUkVEID0gJ3JlcXVpcmVkJyxcbiAgTUlOTEVOR1RIID0gJ21pbmxlbmd0aCcsXG4gIE1BWExFTkdUSCA9ICdtYXhsZW5ndGgnLFxuICBQQVRURVJOID0gJ3BhdHRlcm4nLFxuICBNSU5JTVVNID0gJ21pbmltdW0nLFxuICBNQVhJTVVNID0gJ21heGltdW0nLFxuICBOVU1FUklDID0gJ251bWVyaWMnLFxuICBERUNJTUFMID0gJ2RlY2ltYWwnLFxuICBFTUFJTCA9ICdlbWFpbCcsXG4gIFBIT05FID0gJ3Bob25lJyxcbn1cblxuZXhwb3J0IGVudW0gRUZvcm1Db250cm9sIHtcbiAgQlVUVE9OID0gJ2J1dHRvbicsXG4gIExBQkVMID0gJ2xhYmVsJyxcbiAgSU5QVVQgPSAnaW5wdXQnLFxuICBDSEVDS0JPWCA9ICdjaGVja2JveCcsXG4gIERST1BET1dOID0gJ2Ryb3Bkb3duJyxcbiAgQ0FMRU5EQVIgPSAnY2FsZW5kYXInLFxuICBOVU1FUklDID0gJ251bWJlcicsXG4gIE1VTFRJU0VMRUNUID0gJ211bHRpLXNlbGVjdCcsXG4gIFRFWFRBUkVBID0gJ3RleHQtYXJlYScsXG4gIEhZUEVSTElOSyA9ICdoeXBlcmxpbmsnLFxuICBMT09LVVBfSU5QVVQgPSAnbG9va3VwX2lucHV0JyxcbiAgTk9URV9GSUVMRCA9ICdub3RlX2ZpZWxkJyxcbiAgQ09NUE9ORU5UID0gJ2NvbXBvbmVudCcsXG4gIFBBU1NXT1JEID0gJ3Bhc3N3b3JkJyxcbiAgQVVUT0NPTVBMRVRFID0gJ0F1dG9Db21wbGV0ZScsXG4gIFNQQUNFUiA9ICdzcGFjZXInLFxuICBTRUNUSU9OX0hFQURFUiA9ICdzZWN0aW9uX2hlYWRlcicsXG4gIEZJTEVfVVBMT0FEID0gJ2ZpbGVfdXBsb2FkJyxcbiAgQ0FSRCA9ICdjYXJkJyxcbiAgRElTUExBWV9GSUxFID0gJ2Rpc3BsYXlfZmlsZScsXG4gIEFERF9CVVRUT04gPSAnYWRkX2J1dHRvbicsXG4gIEJSRUFLX0xJTkUgPSAnYnJlYWtfbGluZScsXG4gIFNXSVRDSCA9ICdzd2l0Y2gnLFxuICBSRVBPUlQgPSAncmVwb3J0JyxcbiAgU0VMRUNUQlVUVE9OPSdzZWxlY3RfYnV0dG9uJ1xufVxuXG5leHBvcnQgZW51bSBFT3BlcmF0b3Ige1xuICBBTkQgPSAnYW5kJyxcbiAgT1IgPSAnb3InLFxufVxuXG5leHBvcnQgZW51bSBFTWF0Y2hNb2RlIHtcbiAgRVFVQUxTID0gJ2VxdWFscycsXG4gIFNUQVJUU1dJVEggPSAnc3RhcnRzV2l0aCcsXG4gIENPTlRBSU5TID0nY29udGFpbnMnLFxuICBJTiA9ICdpbicsXG4gIEVORFNXSVRIID0gJ2VuZHNXaXRoJyxcbiAgTk9URVFVQUxTID0gJ25vdEVxdWFscycsXG4gIElTTk9UID0gJ2lzTm90JyxcbiAgREFURUlTTk9UID0gJ2RhdGVJc05vdCcsXG4gIE5PVENPTlRBSU5TID0nbm90Q29udGFpbnMnLFxuICBMVCA9ICdsdCcsXG4gIEJFRk9SRSA9ICdiZWZvcmUnLFxuICBEQVRFQkVGT1JFID0gJ2RhdGVCZWZvcmUnLFxuICBMVEUgPSAnbHRlJyxcbiAgR1QgPSAnZ3QnLFxuICBBRlRFUiA9ICdhZnRlcicsXG4gIERBVEVBRlRFUiA9ICdkYXRlQWZ0ZXInLFxuICBHVEUgPSAnZ3RlJyxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJRm9ybWF0IHtcbiAgdHlwZTogRUZvcm1hdFR5cGU7XG4gIGZvcm1hdFBhcmFtcz86XG4gICAgfCBJRm9ybWF0UGFyYW1cbiAgICB8IElEYXRlRm9ybWF0UGFyYW1cbiAgICB8IElOdW1iZXJGb3JtYXRQYXJhbVxuICAgIHwgSWFsbG93Q2FsY3VsYXRlRm9ybWF0UGFyYW1cbiAgICB8IElDdXJyZW5jeUZvcm1hdFBhcmFtO1xuICBmb3JtYXR0ZXI/OiAodmFsdWU6IGFueSkgPT4gYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElGb3JtYXRQYXJhbSB7XG4gIGxvY2FsZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJRGF0ZUZvcm1hdFBhcmFtIGV4dGVuZHMgSUZvcm1hdFBhcmFtIHtcbiAgZm9ybWF0Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElhbGxvd0NhbGN1bGF0ZUZvcm1hdFBhcmFtIGV4dGVuZHMgSUZvcm1hdFBhcmFtIHtcbiAgYWxsb3dDYWxjdWxhdGU/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElOdW1iZXJGb3JtYXRQYXJhbSBleHRlbmRzIElGb3JtYXRQYXJhbSB7XG4gIGRpZ2l0c0luZm8/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUN1cnJlbmN5Rm9ybWF0UGFyYW0gZXh0ZW5kcyBJTnVtYmVyRm9ybWF0UGFyYW0ge1xuICBjdXJyZW5jeTogc3RyaW5nO1xufVxuXG5leHBvcnQgZW51bSBFRm9ybWF0VHlwZSB7XG4gIFNNQUxMREFURSA9ICdtbS9kL3knLFxuICBTSE9SVERBVEUgPSAnbW0vZGQveXknLFxuICBNRURJVU1EQVRFID0gJ00gZCwgeXknLFxuICBMT05HREFURSA9ICdNTSBkLCB5eScsXG4gIE1PTlRIT05MWSA9ICdtbS95eScsXG4gIFBFUklPRCA9ICdtbS95JyxcbiAgQk9PTEVBTl9ZTiA9ICdCT09MRUFOX1lOJyxcbiAgQ1VTVE9NID0gJ2N1c3RvbScsXG4gIENVUlJFTkNZID0gJ2N1cnJlbmN5JyxcbiAgUEVSQ0VOVCA9ICdwZXJjZW50JyxcbiAgREVDSU1BTCA9ICdkZWNpbWFsJyxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJSHlwZXJsaW5rIHtcbiAgdGFyZ2V0PzogRUh5cGVybGluaztcbiAgbGluaz86IHN0cmluZztcbiAgbGlua0lkPzogc3RyaW5nO1xuICBwYXJhbXM/OiBhbnk7XG4gIHdpZHRoPzpzdHJpbmc7XG4gIGhlaWdodD86c3RyaW5nO1xuICBjb21wb25lbnQ/OiBhbnk7XG4gIGRhdGE/OiBJTG9va3VwRmllbGREYXRhO1xufVxuXG5leHBvcnQgZW51bSBFSHlwZXJsaW5rIHtcbiAgQkxBTksgPSAnX2JsYW5rJyxcbiAgU0VMRiA9ICdfc2VsZicsXG4gIFBBUkVOVCA9ICdfcGFyZW50JyxcbiAgVE9QID0gJ190b3AnLFxuICBJRlJBTUUgPSAnX2lmcmFtZScsXG4gIERJQUxPRyA9ICdfZGlhbG9nJ1xufVxuXG5leHBvcnQgZW51bSBJUmVwb3J0VHlwZSB7XG4gIFBERiA9ICdwZGYnLFxuICBFWENFTCA9ICdleGNlbCcsXG4gIFRFWFQgPSAndHh0JyxcbiAgQ1NWID0gJ2Nzdidcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBZGRGb3JtRmllbGQge1xuICBjb250cm9sPzogRUZvcm1Db250cm9sO1xuICBmaWVsZD86IHN0cmluZztcbiAgY2xhc3M/OiBzdHJpbmc7XG4gIGRpc3BsYXlGaWVsZD86IHN0cmluZztcbiAgc2hvd09wdGlvbj86IGJvb2xlYW47XG4gIGxhYmVsPzogc3RyaW5nIHwgSUxhYmVsO1xuICB2YWx1ZT86IHN0cmluZyB8IGFueTtcbiAgZm9ybWF0PzogSUZvcm1hdDtcbiAgcGVybWlzc2lvbnM/OiBJUGVybWlzc2lvbltdO1xuICBpZD86IHN0cmluZztcbiAgaGlkZGVuPzogYm9vbGVhbjtcbiAgdmFsaWRhdGlvbnM/OiBJVmFsaWRhdGlvbltdIHwgYW55O1xuICBoeXBlcmxpbms/OiBJSHlwZXJsaW5rO1xuICBsb29rdXBDb250cm9sPzogSUxvb2t1cENvbnRyb2xGaWVsZDtcbiAgdGFibGVzPzogc3RyaW5nW107XG4gIG1pbnV0ZXNJbnRlcnZhbD86IG51bWJlcjtcbiAgZGlzYWJsZWQ/OiBib29sZWFuIHwgYW55O1xuICBkaXNhYmxlZFRleHQ/OiBib29sZWFuO1xuICBjb2x1bW4/OiBudW1iZXI7XG4gIHJvdz86IG51bWJlcjtcbiAgY29tcG9uZW50Q29udHJvbD86IElGb3JtQ29tcG9uZW50RmllbGQ7XG4gIGRhdGE/OiBJU2VsZWN0SXRlbVtdO1xuICBvcHRpb25MYWJlbD86IHN0cmluZztcbiAgb3B0aW9uVmFsdWU/OiBzdHJpbmc7XG4gIHRpbWVPbmx5PzogYm9vbGVhbjtcbiAgbW9udGhPbmx5PzogYm9vbGVhbjtcbiAgc2hvd1RpbWU/OiBib29sZWFuOyAvLyB0byBzaG93IHRpbWUgYXMgd2VsbCBpbiBjYWxlbmRhciBmb3JtIGZpZWxkXG4gIHNhdmVBc1N0cmluZz86IGJvb2xlYW47XG4gIHNob3dBbGxWYWx1ZT86IGJvb2xlYW47XG4gIG9uQ2xpY2s/OiAodmFsdWU/OiBhbnkpID0+IGFueTtcbiAgb25SZXR1cm4/OiAodmFsdWU/OiBhbnksIHNlbGVjdGVkUm93PzphbnkpID0+IHZvaWQ7XG4gIG9uRm9jdXNPdXQ/OiAodmFsdWU6IGFueSkgPT4gdm9pZDtcbiAgb25DaGFuZ2U/OiAodmFsdWU6IGFueSkgPT4gYW55O1xuICBoZWlnaHQ/OiBzdHJpbmc7XG4gIHNob3dCb3R0b21Cb3JkZXI/OiBib29sZWFuO1xuICBhbGxvd1NlYXJjaD86IGJvb2xlYW47XG4gIGlzUGFzc3dvcmQ/OmJvb2xlYW5cbiAgdGV4dFR5cGU/OnN0cmluZztcbiAgc2VsZWN0TXVsdGlwbGVGaWxlcz86IGJvb2xlYW47XG4gIFNldGZpbGVUeXBlcz86IEVTZWxlY3RGaWxlVHlwZTtcbiAgaWNvbj86IHN0cmluZztcbiAgY29sb3I/OiBzdHJpbmc7XG4gIGNhcmQ/OiBJRHluYW1pY0NhcmQ7XG4gIGRpc3BsYXlTdHlsZT86Ym9vbGVhbjtcbn1cbiJdfQ==
106
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NlLXVpLXRvb2xraXQvc3JjL2xpYi9tb2RlbHMvZm9ybS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUEwTUEsTUFBTSxDQUFOLElBQVksZUFNWDtBQU5ELFdBQVksZUFBZTtJQUN6QixtQ0FBZ0IsQ0FBQTtJQUNoQiw0REFBeUMsQ0FBQTtJQUN6Qyx5Q0FBc0IsQ0FBQTtJQUN0QiwrQkFBWSxDQUFBO0lBQ1osK0JBQVksQ0FBQTtBQUNkLENBQUMsRUFOVyxlQUFlLEtBQWYsZUFBZSxRQU0xQjtBQUVELE1BQU0sQ0FBTixJQUFZLFVBWVg7QUFaRCxXQUFZLFVBQVU7SUFDcEIsbUNBQXFCLENBQUE7SUFDckIscUNBQXVCLENBQUE7SUFDdkIscUNBQXVCLENBQUE7SUFDdkIsaUNBQW1CLENBQUE7SUFDbkIsaUNBQW1CLENBQUE7SUFDbkIsaUNBQW1CLENBQUE7SUFDbkIsaUNBQW1CLENBQUE7SUFDbkIsaUNBQW1CLENBQUE7SUFDbkIsNkJBQWUsQ0FBQTtJQUNmLDZCQUFlLENBQUE7SUFDZix1Q0FBdUIsQ0FBQTtBQUN6QixDQUFDLEVBWlcsVUFBVSxLQUFWLFVBQVUsUUFZckI7QUFFRCxNQUFNLENBQU4sSUFBWSxZQTBCWDtBQTFCRCxXQUFZLFlBQVk7SUFDdEIsaUNBQWlCLENBQUE7SUFDakIsK0JBQWUsQ0FBQTtJQUNmLCtCQUFlLENBQUE7SUFDZixxQ0FBcUIsQ0FBQTtJQUNyQixxQ0FBcUIsQ0FBQTtJQUNyQixxQ0FBcUIsQ0FBQTtJQUNyQixrQ0FBa0IsQ0FBQTtJQUNsQiw0Q0FBNEIsQ0FBQTtJQUM1QixzQ0FBc0IsQ0FBQTtJQUN0Qix1Q0FBdUIsQ0FBQTtJQUN2Qiw2Q0FBNkIsQ0FBQTtJQUM3Qix5Q0FBeUIsQ0FBQTtJQUN6Qix1Q0FBdUIsQ0FBQTtJQUN2QixxQ0FBcUIsQ0FBQTtJQUNyQiw2Q0FBNkIsQ0FBQTtJQUM3QixpQ0FBaUIsQ0FBQTtJQUNqQixpREFBaUMsQ0FBQTtJQUNqQywyQ0FBMkIsQ0FBQTtJQUMzQiw2QkFBYSxDQUFBO0lBQ2IsNkNBQTZCLENBQUE7SUFDN0IseUNBQXlCLENBQUE7SUFDekIseUNBQXlCLENBQUE7SUFDekIsaUNBQWlCLENBQUE7SUFDakIsaUNBQWlCLENBQUE7SUFDakIsOENBQTRCLENBQUE7QUFDOUIsQ0FBQyxFQTFCVyxZQUFZLEtBQVosWUFBWSxRQTBCdkI7QUFFRCxNQUFNLENBQU4sSUFBWSxTQUdYO0FBSEQsV0FBWSxTQUFTO0lBQ25CLHdCQUFXLENBQUE7SUFDWCxzQkFBUyxDQUFBO0FBQ1gsQ0FBQyxFQUhXLFNBQVMsS0FBVCxTQUFTLFFBR3BCO0FBRUQsTUFBTSxDQUFOLElBQVksVUFrQlg7QUFsQkQsV0FBWSxVQUFVO0lBQ3BCLCtCQUFpQixDQUFBO0lBQ2pCLHVDQUF5QixDQUFBO0lBQ3pCLG1DQUFvQixDQUFBO0lBQ3BCLHVCQUFTLENBQUE7SUFDVCxtQ0FBcUIsQ0FBQTtJQUNyQixxQ0FBdUIsQ0FBQTtJQUN2Qiw2QkFBZSxDQUFBO0lBQ2YscUNBQXVCLENBQUE7SUFDdkIseUNBQTBCLENBQUE7SUFDMUIsdUJBQVMsQ0FBQTtJQUNULCtCQUFpQixDQUFBO0lBQ2pCLHVDQUF5QixDQUFBO0lBQ3pCLHlCQUFXLENBQUE7SUFDWCx1QkFBUyxDQUFBO0lBQ1QsNkJBQWUsQ0FBQTtJQUNmLHFDQUF1QixDQUFBO0lBQ3ZCLHlCQUFXLENBQUE7QUFDYixDQUFDLEVBbEJXLFVBQVUsS0FBVixVQUFVLFFBa0JyQjtBQWlDRCxNQUFNLENBQU4sSUFBWSxXQVlYO0FBWkQsV0FBWSxXQUFXO0lBQ3JCLG1DQUFvQixDQUFBO0lBQ3BCLHFDQUFzQixDQUFBO0lBQ3RCLHFDQUFzQixDQUFBO0lBQ3RCLG9DQUFxQixDQUFBO0lBQ3JCLGtDQUFtQixDQUFBO0lBQ25CLDhCQUFlLENBQUE7SUFDZix3Q0FBeUIsQ0FBQTtJQUN6QixnQ0FBaUIsQ0FBQTtJQUNqQixvQ0FBcUIsQ0FBQTtJQUNyQixrQ0FBbUIsQ0FBQTtJQUNuQixrQ0FBbUIsQ0FBQTtBQUNyQixDQUFDLEVBWlcsV0FBVyxLQUFYLFdBQVcsUUFZdEI7QUFhRCxNQUFNLENBQU4sSUFBWSxVQU9YO0FBUEQsV0FBWSxVQUFVO0lBQ3BCLDhCQUFnQixDQUFBO0lBQ2hCLDRCQUFjLENBQUE7SUFDZCxnQ0FBa0IsQ0FBQTtJQUNsQiwwQkFBWSxDQUFBO0lBQ1osZ0NBQWtCLENBQUE7SUFDbEIsZ0NBQWtCLENBQUE7QUFDcEIsQ0FBQyxFQVBXLFVBQVUsS0FBVixVQUFVLFFBT3JCO0FBRUQsTUFBTSxDQUFOLElBQVksV0FLWDtBQUxELFdBQVksV0FBVztJQUNyQiwwQkFBVyxDQUFBO0lBQ1gsOEJBQWUsQ0FBQTtJQUNmLDJCQUFZLENBQUE7SUFDWiwwQkFBVyxDQUFBO0FBQ2IsQ0FBQyxFQUxXLFdBQVcsS0FBWCxXQUFXLFFBS3RCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSUdyaWRTb3J0LCBJU2VsZWN0SXRlbSB9IGZyb20gJy4vZ3JpZC5tb2RlbCc7XG5pbXBvcnQgeyBJUGVybWlzc2lvbiB9IGZyb20gJy4vdXNlci1pbmZvLm1vZGVsJztcblxuZXhwb3J0IGludGVyZmFjZSBJRHluYW1pY0Zvcm0ge1xuICBmb3JtU2VjdGlvbnM/OiBJRm9ybVNlY3Rpb25bXTtcbiAgY29sdW1uPzogbnVtYmVyO1xuICBwZXJtaXNzaW9ucz86IElQZXJtaXNzaW9uW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUxhYmVsIHtcbiAgbmFtZTogc3RyaW5nO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIGxhYmVsQ29udHJvbD86IElGb3JtRmllbGQ7XG4gIG9uUmV0dXJuPzogKHZhbHVlOiBhbnkpID0+IHZvaWQ7XG4gIG9uQ2xpY2s/OiAoKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElEcm9wRG93blJlcXVlc3Qge1xuICB1bmlxdWVLZXk6IHN0cmluZyxcbiAgdmFsdWVQcm9wOiBzdHJpbmcsXG4gIGxhYmVsUHJvcDogc3RyaW5nLFxuICBmaWx0ZXJzPzogSVNldEZpbHRlcltdXG4gIHNvcnRzPzpJR3JpZFNvcnRbXSBcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJQXV0b0NvbXBsZXRlU2F2ZSB7XG4gIG5hbWU6c3RyaW5nLFxuICB2YWx1ZXM6SUF1dG9Db21wbGV0ZVZhbHVlU2F2ZVtdLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElBdXRvQ29tcGxldGVWYWx1ZVNhdmV7XG4gIG5hbWU6c3RyaW5nLFxuICB2YWx1ZT86YW55XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVNldEZpbHRlciB7XG4gIGZpZWxkPzogc3RyaW5nLFxuICB2YWx1ZT86IGFueSxcbiAgbWF0Y2hNb2RlPzogc3RyaW5nLFxuICBvcGVyYXRvcj86IHN0cmluZyxcbiAgdmFsdWVGaWVsZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJRm9ybVNlY3Rpb24ge1xuICBuYW1lPzogc3RyaW5nO1xuICBmaWVsZHM6IElGb3JtRmllbGRbXTtcbiAgaWNvbj86IHN0cmluZztcbiAgY2xhc3M/OiBzdHJpbmc7XG4gIGxpbmtzPzogSUxhYmVsW107XG4gIHBlcm1pc3Npb25zPzogSVBlcm1pc3Npb25bXTtcbiAgaGlkZGVuPzogYm9vbGVhbjtcbiAgYWNjb3JkaW9uRGlzYWJsZWQ/OiBib29sZWFuO1xuICBzaG93QWNjb3JkaW9uPzogYm9vbGVhbjtcbiAgZXhwYW5kZWQ/OiBib29sZWFuO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIGRpc2FibGVkVGV4dD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUZvcm1GaWVsZCB7XG4gIGxhYmVsPzogc3RyaW5nIHwgSUxhYmVsO1xuICBjbGFzcz86IHN0cmluZztcbiAgY2FyZD86IElEeW5hbWljQ2FyZDtcbiAgY29udHJvbD86IEVGb3JtQ29udHJvbDtcbiAgZmllbGQ/OiBzdHJpbmc7XG4gIGRpc3BsYXlGaWVsZD86IHN0cmluZztcbiAgc2hvd09wdGlvbj86IGJvb2xlYW47XG4gIHZhbHVlPzogYW55IHwgSUxvb2t1cElucHV0VmFsdWU7XG4gIGRhdGE/OiBhbnlbXTtcbiAgdmFsaWRhdGlvbnM/OiBJVmFsaWRhdGlvbltdO1xuICBlcnJvck1lc3NhZ2U/OiBzdHJpbmc7XG4gIG1pbnV0ZXNJbnRlcnZhbD86IG51bWJlcjtcbiAgaWQ/OiBzdHJpbmc7XG4gIHJlcXVpcmVkPzogYm9vbGVhbjtcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICBkaXNhYmxlZFRleHQ/OiBib29sZWFuO1xuICBsb29rdXBDb250cm9sPzogSUxvb2t1cENvbnRyb2xGaWVsZDtcbiAgdGFibGVzPzogc3RyaW5nW107XG4gIGNvbXBvbmVudENvbnRyb2w/OiBJRm9ybUNvbXBvbmVudEZpZWxkO1xuICBjb2x1bW4/OiBudW1iZXI7XG4gIHJvdz86IG51bWJlcjtcbiAgaHlwZXJsaW5rPzogSUh5cGVybGluaztcbiAgZm9ybWF0PzogSUZvcm1hdDtcbiAgcGVybWlzc2lvbnM/OiBJUGVybWlzc2lvbltdO1xuICBoaWRkZW4/OiBib29sZWFuO1xuICBvcHRpb25MYWJlbD86IHN0cmluZztcbiAgb3B0aW9uVmFsdWU/OiBzdHJpbmc7XG4gIHNhdmVBc1N0cmluZz86IGJvb2xlYW47XG4gIHNob3dBbGxWYWx1ZT86IGJvb2xlYW47XG4gIG9uQ2xpY2s/OiAodmFsdWU/OiBhbnkpID0+IGFueTtcbiAgb25SZXR1cm4/OiAodmFsdWU/OiBhbnksIHNlbGVjdGVkUm93PzogYW55KSA9PiB2b2lkO1xuICBvbkZvY3VzT3V0PzogKHZhbHVlOiBhbnkpID0+IHZvaWQ7XG4gIG9uQ2hhbmdlPzogKHZhbHVlOiBhbnkpID0+IGFueTtcbiAgaXN2YWxpZD86IGJvb2xlYW47XG4gIHRpbWVPbmx5PzogYm9vbGVhblxuICBtb250aE9ubHk/OiBib29sZWFuO1xuICBzaG93VGltZT86IGJvb2xlYW47IC8vIHRvIHNob3cgdGltZSBhcyB3ZWxsIGluIGNhbGVuZGFyIGZvcm0gZmllbGRcbiAgcmVxdWlyZWRGaWVsZD86IGJvb2xlYW47XG4gIGhlaWdodD86IHN0cmluZztcbiAgc2hvd0JvdHRvbUJvcmRlcj86IGJvb2xlYW47XG4gIGFsbG93U2VhcmNoPzogYm9vbGVhbjtcbiAgaXNQYXNzd29yZD86Ym9vbGVhblxuICB0ZXh0VHlwZT86c3RyaW5nO1xuICBzZWxlY3RNdWx0aXBsZUZpbGVzPzogYm9vbGVhbjtcbiAgU2V0ZmlsZVR5cGVzPzogRVNlbGVjdEZpbGVUeXBlO1xuICBpY29uPzogc3RyaW5nO1xuICBjb2xvcj86IHN0cmluZztcbiAgdW5pcXVlS2V5Pzogc3RyaW5nO1xuICBhenVyZUNvbnRhaW5lcj86IHN0cmluZztcbiAgcGF0aFN5c3RlbUNvbmZpZz86IHN0cmluZztcbiAgZGlzcGxheVN0eWxlPzpib29sZWFuO1xufVxuZXhwb3J0IGludGVyZmFjZSBJRm9ybUJ1dHRvbntcbiAgaWNvbj86c3RyaW5nO1xuICBsYWJlbDpzdHJpbmc7XG4gIGhpZGRlbj86Ym9vbGVhbjtcbiAgZnVuYzpGdW5jdGlvbjtcbiAgZGlzYWJsZWQ/OmJvb2xlYW47XG59XG5leHBvcnQgaW50ZXJmYWNlIElEeW5hbWljQ2FyZCB7XG4gIGlkPzogbnVtYmVyO1xuICBuYW1lPzogc3RyaW5nO1xuICBkYXRhPzogYW55W107XG4gIG9yZGVyQnlGaWVsZD86IHN0cmluZztcbiAgZm9ybVNlY3Rpb25zPzogSUZvcm1TZWN0aW9uW107XG4gIG9uU29ydD86ICh2YWx1ZTogYW55KSA9PiBhbnk7XG4gIGNvbnRhaW5lck5hbWU/OiBzdHJpbmc7XG4gIGFsbG93RGVsZXRlPzogYm9vbGVhbjtcbiAgYWxsb3dEb3dubG9hZD86IGJvb2xlYW47XG4gIHVybD86IHN0cmluZztcbiAgY2FwdGlvbj86IHN0cmluZztcbiAgd2lkdGg/OiBzdHJpbmc7XG4gIGhlaWdodD86IHN0cmluZztcbiAgYWxsb3dFZGl0YWJsZUNhcHRpb24/OiBib29sZWFuO1xuICBvbkNhcHRpb25TYXZlPzogKHZhbHVlOiBhbnkpID0+IGFueTtcbiAgb25EZWxldGU/OiAodmFsdWU6IGFueSkgPT4gYW55O1xuICBjbGFzcz86IHN0cmluZztcbiAgY2FyZEluZm8/OiBJVmlld0NhcmRQcm9wO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElWaWV3Q2FyZFByb3Age1xuICB1cmw/OiBzdHJpbmc7XG4gIGNhcHRpb24/OiBzdHJpbmc7XG4gIGV4dGVuc2lvbj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJUmVwb3J0QnRue1xuICByZXBvcnRJZD86IG51bWJlcjtcbiAgcmVwb3J0TmFtZT86IHN0cmluZztcbiAgbGFiZWw/OiBzdHJpbmc7XG4gIGNvbnRyb2w/OiBFRm9ybUNvbnRyb2wuUkVQT1JUO1xuICBwYXJhbXM/OiBhbnlbXTtcbiAgc2hvd0RpYWxvZz86IGJvb2xlYW47XG4gIHJlcG9ydEhlYWRlcj86IHN0cmluZztcbiAgcmVwb3J0Rm9vdGVyPzogc3RyaW5nO1xuICByZXBvcnRUeXBlPzogSVJlcG9ydFR5cGU7XG4gIGljb24/OiBzdHJpbmc7XG4gIGNsYXNzPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElMaXN0RmlsdGVyIHtcbiAgdW5pcXVlS2V5OiBzdHJpbmc7XG4gIGZpbHRlcnM/OiBJU2V0RmlsdGVyW107XG4gIHNvcnRzPzogSUdyaWRTb3J0W107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUZvcm1Db21wb25lbnRGaWVsZCB7XG4gIGNvbXBvbmVudDogVHlwZTxhbnk+O1xuICBpZD86c3RyaW5nO1xuICBkYXRhPzoge1xuICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgfTtcbiAgaGFuZGxlcnM/OiB7XG4gICAgW2tleTogc3RyaW5nXTogRnVuY3Rpb247XG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUxvb2t1cElucHV0VmFsdWUge1xuICB0ZXh0OiBhbnk7XG4gIHZhbHVlOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUxvb2t1cENvbnRyb2xGaWVsZCB7XG4gIGNvbXBvbmVudDogYW55O1xuICBkYXRhOiBJTG9va3VwRmllbGREYXRhO1xuICBpZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGRlY2xhcmUgdHlwZSBJTG9va3VwRmllbGREYXRhID0ge1xuICBoZWFkZXI/OiBzdHJpbmc7XG4gIGhlaWdodD86IHN0cmluZztcbiAgd2lkdGg/OiBzdHJpbmc7XG4gIGRhdGE/OiB7W2tleTogc3RyaW5nXTogYW55fTtcbiAgbGFiZWxQcm9wPzogc3RyaW5nO1xuICB2YWx1ZVByb3A/OiBzdHJpbmc7XG59IFxuXG5leHBvcnQgaW50ZXJmYWNlIElWYWxpZGF0aW9uIHtcbiAgdHlwZTogRVZhbGlkYXRvcjtcbiAgZXhwcmVzc2lvbj86IGFueTtcbn1cblxuZXhwb3J0IGVudW0gRVNlbGVjdEZpbGVUeXBlIHtcbiAgRVhDRUwgPSAnLmV4Y2VsJyxcbiAgSU1BR0UgPSAnLmltYWdlLCAuanBnLCAucG5nLCAuanBlZywgLmdpZicsXG4gIERPQ1VNRU5UID0gJy5kb2N1bWVudCcsXG4gIFBERiA9ICcucGRmJyxcbiAgTVJUID0gJy5tcnQnLFxufVxuXG5leHBvcnQgZW51bSBFVmFsaWRhdG9yIHtcbiAgUkVRVUlSRUQgPSAncmVxdWlyZWQnLFxuICBNSU5MRU5HVEggPSAnbWlubGVuZ3RoJyxcbiAgTUFYTEVOR1RIID0gJ21heGxlbmd0aCcsXG4gIFBBVFRFUk4gPSAncGF0dGVybicsXG4gIE1JTklNVU0gPSAnbWluaW11bScsXG4gIE1BWElNVU0gPSAnbWF4aW11bScsXG4gIE5VTUVSSUMgPSAnbnVtZXJpYycsXG4gIERFQ0lNQUwgPSAnZGVjaW1hbCcsXG4gIEVNQUlMID0gJ2VtYWlsJyxcbiAgUEhPTkUgPSAncGhvbmUnLFxuICBNQVhPUFRJT05TPSdtYXhPcHRpb25zJ1xufVxuXG5leHBvcnQgZW51bSBFRm9ybUNvbnRyb2wge1xuICBCVVRUT04gPSAnYnV0dG9uJyxcbiAgTEFCRUwgPSAnbGFiZWwnLFxuICBJTlBVVCA9ICdpbnB1dCcsXG4gIENIRUNLQk9YID0gJ2NoZWNrYm94JyxcbiAgRFJPUERPV04gPSAnZHJvcGRvd24nLFxuICBDQUxFTkRBUiA9ICdjYWxlbmRhcicsXG4gIE5VTUVSSUMgPSAnbnVtYmVyJyxcbiAgTVVMVElTRUxFQ1QgPSAnbXVsdGktc2VsZWN0JyxcbiAgVEVYVEFSRUEgPSAndGV4dC1hcmVhJyxcbiAgSFlQRVJMSU5LID0gJ2h5cGVybGluaycsXG4gIExPT0tVUF9JTlBVVCA9ICdsb29rdXBfaW5wdXQnLFxuICBOT1RFX0ZJRUxEID0gJ25vdGVfZmllbGQnLFxuICBDT01QT05FTlQgPSAnY29tcG9uZW50JyxcbiAgUEFTU1dPUkQgPSAncGFzc3dvcmQnLFxuICBBVVRPQ09NUExFVEUgPSAnQXV0b0NvbXBsZXRlJyxcbiAgU1BBQ0VSID0gJ3NwYWNlcicsXG4gIFNFQ1RJT05fSEVBREVSID0gJ3NlY3Rpb25faGVhZGVyJyxcbiAgRklMRV9VUExPQUQgPSAnZmlsZV91cGxvYWQnLFxuICBDQVJEID0gJ2NhcmQnLFxuICBESVNQTEFZX0ZJTEUgPSAnZGlzcGxheV9maWxlJyxcbiAgQUREX0JVVFRPTiA9ICdhZGRfYnV0dG9uJyxcbiAgQlJFQUtfTElORSA9ICdicmVha19saW5lJyxcbiAgU1dJVENIID0gJ3N3aXRjaCcsXG4gIFJFUE9SVCA9ICdyZXBvcnQnLFxuICBTRUxFQ1RCVVRUT049J3NlbGVjdF9idXR0b24nXG59XG5cbmV4cG9ydCBlbnVtIEVPcGVyYXRvciB7XG4gIEFORCA9ICdhbmQnLFxuICBPUiA9ICdvcicsXG59XG5cbmV4cG9ydCBlbnVtIEVNYXRjaE1vZGUge1xuICBFUVVBTFMgPSAnZXF1YWxzJyxcbiAgU1RBUlRTV0lUSCA9ICdzdGFydHNXaXRoJyxcbiAgQ09OVEFJTlMgPSdjb250YWlucycsXG4gIElOID0gJ2luJyxcbiAgRU5EU1dJVEggPSAnZW5kc1dpdGgnLFxuICBOT1RFUVVBTFMgPSAnbm90RXF1YWxzJyxcbiAgSVNOT1QgPSAnaXNOb3QnLFxuICBEQVRFSVNOT1QgPSAnZGF0ZUlzTm90JyxcbiAgTk9UQ09OVEFJTlMgPSdub3RDb250YWlucycsXG4gIExUID0gJ2x0JyxcbiAgQkVGT1JFID0gJ2JlZm9yZScsXG4gIERBVEVCRUZPUkUgPSAnZGF0ZUJlZm9yZScsXG4gIExURSA9ICdsdGUnLFxuICBHVCA9ICdndCcsXG4gIEFGVEVSID0gJ2FmdGVyJyxcbiAgREFURUFGVEVSID0gJ2RhdGVBZnRlcicsXG4gIEdURSA9ICdndGUnLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElGb3JtYXQge1xuICB0eXBlOiBFRm9ybWF0VHlwZTtcbiAgZm9ybWF0UGFyYW1zPzpcbiAgICB8IElGb3JtYXRQYXJhbVxuICAgIHwgSURhdGVGb3JtYXRQYXJhbVxuICAgIHwgSU51bWJlckZvcm1hdFBhcmFtXG4gICAgfCBJYWxsb3dDYWxjdWxhdGVGb3JtYXRQYXJhbVxuICAgIHwgSUN1cnJlbmN5Rm9ybWF0UGFyYW07XG4gIGZvcm1hdHRlcj86ICh2YWx1ZTogYW55KSA9PiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUZvcm1hdFBhcmFtIHtcbiAgbG9jYWxlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElEYXRlRm9ybWF0UGFyYW0gZXh0ZW5kcyBJRm9ybWF0UGFyYW0ge1xuICBmb3JtYXQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSWFsbG93Q2FsY3VsYXRlRm9ybWF0UGFyYW0gZXh0ZW5kcyBJRm9ybWF0UGFyYW0ge1xuICBhbGxvd0NhbGN1bGF0ZT86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSU51bWJlckZvcm1hdFBhcmFtIGV4dGVuZHMgSUZvcm1hdFBhcmFtIHtcbiAgZGlnaXRzSW5mbz86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJQ3VycmVuY3lGb3JtYXRQYXJhbSBleHRlbmRzIElOdW1iZXJGb3JtYXRQYXJhbSB7XG4gIGN1cnJlbmN5OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBlbnVtIEVGb3JtYXRUeXBlIHtcbiAgU01BTExEQVRFID0gJ21tL2QveScsXG4gIFNIT1JUREFURSA9ICdtbS9kZC95eScsXG4gIE1FRElVTURBVEUgPSAnTSBkLCB5eScsXG4gIExPTkdEQVRFID0gJ01NIGQsIHl5JyxcbiAgTU9OVEhPTkxZID0gJ21tL3l5JyxcbiAgUEVSSU9EID0gJ21tL3knLFxuICBCT09MRUFOX1lOID0gJ0JPT0xFQU5fWU4nLFxuICBDVVNUT00gPSAnY3VzdG9tJyxcbiAgQ1VSUkVOQ1kgPSAnY3VycmVuY3knLFxuICBQRVJDRU5UID0gJ3BlcmNlbnQnLFxuICBERUNJTUFMID0gJ2RlY2ltYWwnLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElIeXBlcmxpbmsge1xuICB0YXJnZXQ/OiBFSHlwZXJsaW5rO1xuICBsaW5rPzogc3RyaW5nO1xuICBsaW5rSWQ/OiBzdHJpbmc7XG4gIHBhcmFtcz86IGFueTtcbiAgd2lkdGg/OnN0cmluZztcbiAgaGVpZ2h0PzpzdHJpbmc7XG4gIGNvbXBvbmVudD86IGFueTtcbiAgZGF0YT86IElMb29rdXBGaWVsZERhdGE7XG59XG5cbmV4cG9ydCBlbnVtIEVIeXBlcmxpbmsge1xuICBCTEFOSyA9ICdfYmxhbmsnLFxuICBTRUxGID0gJ19zZWxmJyxcbiAgUEFSRU5UID0gJ19wYXJlbnQnLFxuICBUT1AgPSAnX3RvcCcsXG4gIElGUkFNRSA9ICdfaWZyYW1lJyxcbiAgRElBTE9HID0gJ19kaWFsb2cnXG59XG5cbmV4cG9ydCBlbnVtIElSZXBvcnRUeXBlIHtcbiAgUERGID0gJ3BkZicsXG4gIEVYQ0VMID0gJ2V4Y2VsJyxcbiAgVEVYVCA9ICd0eHQnLFxuICBDU1YgPSAnY3N2J1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFkZEZvcm1GaWVsZCB7XG4gIGNvbnRyb2w/OiBFRm9ybUNvbnRyb2w7XG4gIGZpZWxkPzogc3RyaW5nO1xuICBjbGFzcz86IHN0cmluZztcbiAgZGlzcGxheUZpZWxkPzogc3RyaW5nO1xuICBzaG93T3B0aW9uPzogYm9vbGVhbjtcbiAgbGFiZWw/OiBzdHJpbmcgfCBJTGFiZWw7XG4gIHZhbHVlPzogc3RyaW5nIHwgYW55O1xuICBmb3JtYXQ/OiBJRm9ybWF0O1xuICBwZXJtaXNzaW9ucz86IElQZXJtaXNzaW9uW107XG4gIGlkPzogc3RyaW5nO1xuICBoaWRkZW4/OiBib29sZWFuO1xuICB2YWxpZGF0aW9ucz86IElWYWxpZGF0aW9uW10gfCBhbnk7XG4gIGh5cGVybGluaz86IElIeXBlcmxpbms7XG4gIGxvb2t1cENvbnRyb2w/OiBJTG9va3VwQ29udHJvbEZpZWxkO1xuICB0YWJsZXM/OiBzdHJpbmdbXTtcbiAgbWludXRlc0ludGVydmFsPzogbnVtYmVyO1xuICBkaXNhYmxlZD86IGJvb2xlYW4gfCBhbnk7XG4gIGRpc2FibGVkVGV4dD86IGJvb2xlYW47XG4gIGNvbHVtbj86IG51bWJlcjtcbiAgcm93PzogbnVtYmVyO1xuICBjb21wb25lbnRDb250cm9sPzogSUZvcm1Db21wb25lbnRGaWVsZDtcbiAgZGF0YT86IElTZWxlY3RJdGVtW107XG4gIG9wdGlvbkxhYmVsPzogc3RyaW5nO1xuICBvcHRpb25WYWx1ZT86IHN0cmluZztcbiAgdGltZU9ubHk/OiBib29sZWFuO1xuICBtb250aE9ubHk/OiBib29sZWFuO1xuICBzaG93VGltZT86IGJvb2xlYW47IC8vIHRvIHNob3cgdGltZSBhcyB3ZWxsIGluIGNhbGVuZGFyIGZvcm0gZmllbGRcbiAgc2F2ZUFzU3RyaW5nPzogYm9vbGVhbjtcbiAgc2hvd0FsbFZhbHVlPzogYm9vbGVhbjtcbiAgb25DbGljaz86ICh2YWx1ZT86IGFueSkgPT4gYW55O1xuICBvblJldHVybj86ICh2YWx1ZT86IGFueSwgc2VsZWN0ZWRSb3c/OmFueSkgPT4gdm9pZDtcbiAgb25Gb2N1c091dD86ICh2YWx1ZTogYW55KSA9PiB2b2lkO1xuICBvbkNoYW5nZT86ICh2YWx1ZTogYW55KSA9PiBhbnk7XG4gIGhlaWdodD86IHN0cmluZztcbiAgc2hvd0JvdHRvbUJvcmRlcj86IGJvb2xlYW47XG4gIGFsbG93U2VhcmNoPzogYm9vbGVhbjtcbiAgaXNQYXNzd29yZD86Ym9vbGVhblxuICB0ZXh0VHlwZT86c3RyaW5nO1xuICBzZWxlY3RNdWx0aXBsZUZpbGVzPzogYm9vbGVhbjtcbiAgU2V0ZmlsZVR5cGVzPzogRVNlbGVjdEZpbGVUeXBlO1xuICBpY29uPzogc3RyaW5nO1xuICBjb2xvcj86IHN0cmluZztcbiAgY2FyZD86IElEeW5hbWljQ2FyZDtcbiAgZGlzcGxheVN0eWxlPzpib29sZWFuO1xufVxuIl19
@@ -71,7 +71,11 @@ export class FormService {
71
71
  let isValid = true;
72
72
  formFields.map((item) => {
73
73
  if (item.validations && !item.disabled) {
74
- let itemValue = item.control === EFormControl.LOOKUP_INPUT && item.value && typeof (item.value) === 'object' ? item.value.value : item.value;
74
+ let itemValue = item.control === EFormControl.LOOKUP_INPUT &&
75
+ item.value &&
76
+ typeof item.value === 'object'
77
+ ? item.value.value
78
+ : item.value;
75
79
  // if(item.control === EFormControl.LOOKUP_INPUT && item.value && typeof(item.value) === 'object'){
76
80
  // item.value = item.value.value;
77
81
  // }
@@ -181,6 +185,11 @@ export class FormService {
181
185
  : this.setErrorMessage(item, `Enter valid ${valid}`);
182
186
  break;
183
187
  }
188
+ else if (itemValue && item.validations[i].type == EValidator.MAXOPTIONS && item.validations[i].expression) {
189
+ var maxOptions = item.validations[i].expression;
190
+ isValid = itemValue.length > maxOptions ? this.setErrorMessage(item, `Maximum values for ${valid} is ${maxOptions}`) : true;
191
+ break;
192
+ }
184
193
  }
185
194
  }
186
195
  });
@@ -518,4 +527,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImpor
518
527
  providedIn: 'root',
519
528
  }]
520
529
  }], ctorParameters: function () { return [{ type: i1.HyperlinkService }, { type: i2.DropdownService }, { type: i3.AlertService }, { type: i4.RequestService }]; } });
521
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2UtdWktdG9vbGtpdC9zcmMvbGliL3NlcnZpY2VzL2Zvcm0uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFDTCxVQUFVLEVBRVYsWUFBWSxHQU9iLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFFLGtCQUFrQixFQUFhLE1BQU0sc0JBQXNCLENBQUM7QUFLckUsT0FBTyxLQUFLLFNBQVMsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7O0FBTWpELE1BQU0sT0FBTyxXQUFXO0lBRXRCLFlBQ1UsZ0JBQWtDLEVBQ2xDLGVBQWdDLEVBQ2hDLFlBQTBCLEVBQzFCLGNBQThCO1FBSDlCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUxqQyxvQkFBZSxHQUFXLEtBQUssQ0FBQztJQU1uQyxDQUFDO0lBQ0wsVUFBVTtRQUNSLElBQUksdUJBQXVCLEdBQUcsQ0FBQyxDQUFDO1FBQ2hDLE1BQU0sU0FBUyxHQUFHLFdBQVcsQ0FBQyxTQUFTLHdCQUF3QjtZQUMzRCxJQUFJLFFBQVEsR0FBRyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsd0NBQXdDLENBQUMsQ0FBQztZQUNuRixLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtnQkFDbkMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLFdBQVcsRUFBRSx3QkFBd0IsQ0FBQyxDQUFBO1lBQ25FLENBQUMsQ0FBQyxDQUFDO1lBQ0gsdUJBQXVCLEVBQUUsQ0FBQztZQUMxQixJQUFJLHVCQUF1QixJ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QUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEVWYWxpZGF0b3IsXG4gIElGb3JtRmllbGQsXG4gIEVGb3JtQ29udHJvbCxcbiAgQWRkRm9ybUZpZWxkLFxuICBJU2V0RmlsdGVyLFxuICBJRHJvcERvd25SZXF1ZXN0LFxuICBJTGlzdEZpbHRlcixcbiAgSVJlcG9ydEJ0bixcbiAgSUR5bmFtaWNGb3JtLFxufSBmcm9tICcuLi9tb2RlbHMvZm9ybS5tb2RlbCc7XG5pbXBvcnQgeyBFR3JpZFNvcnREaXJlY3Rpb24sIElHcmlkU29ydCB9IGZyb20gJy4uL21vZGVscy9ncmlkLm1vZGVsJztcbmltcG9ydCB7IEh5cGVybGlua1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9oeXBlcmxpbmsuc2VydmljZSc7XG5pbXBvcnQgeyBBbGVydFNlcnZpY2UgfSBmcm9tICcuL2FsZXJ0LnNlcnZpY2UnO1xuaW1wb3J0IHsgRHJvcGRvd25TZXJ2aWNlIH0gZnJvbSAnLi9kcm9wZG93bi5zZXJ2aWNlJztcbmltcG9ydCB7IFJlcXVlc3RTZXJ2aWNlIH0gZnJvbSAnLi9yZXF1ZXN0LnNlcnZpY2UnO1xuaW1wb3J0ICogYXMgdXRpbGl0aWVzIGZyb20gJy4vdXRpbGl0aWVzLnNlcnZpY2UnO1xuaW1wb3J0IHsgSURpY3Rpb25hcnkgfSBmcm9tICcuLi9tb2RlbHMvY29tbW9uLm1vZGVsJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1TZXJ2aWNlIHtcbiAgcHVibGljIGZpZWxkRm9jdXNlZE91dDpib29sZWFuID0gZmFsc2U7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaHlwZXJsaW5rU2VydmljZTogSHlwZXJsaW5rU2VydmljZSxcbiAgICBwcml2YXRlIGRyb3Bkb3duU2VydmljZTogRHJvcGRvd25TZXJ2aWNlLFxuICAgIHByaXZhdGUgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZXF1ZXN0U2VydmljZTogUmVxdWVzdFNlcnZpY2VcbiAgKSB7IH1cbiAgc2V0VG9vbHRpcCgpe1xuICAgIGxldCB0aW1lc1RvUnVuUGVyTWV0aG9kQ2FsbCA9IDM7XG4gICAgY29uc3QgcmVmcmVzaElkID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24gc2V0VG9vbHRpcEV2ZW50TGlzdGVuZXJzKCkge1xuICAgICAgICBsZXQgZWxlbWVudHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiW2RhdGEtdGl0bGUtZWxlbWVudF06bm90KFtkYXRhLXRpdGxlXSlcIik7XG4gICAgICAgIEFycmF5LmZyb20oZWxlbWVudHMpLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlb3ZlcicsIHNob3dUb29sdGlwQ29uZGl0aW9uYWxseSlcbiAgICAgICAgfSk7XG4gICAgICAgIHRpbWVzVG9SdW5QZXJNZXRob2RDYWxsLS07XG4gICAgICAgIGlmICh0aW1lc1RvUnVuUGVyTWV0aG9kQ2FsbCA9PSAwKSB7XG4gICAgICAgICAgICBjbGVhckludGVydmFsKHJlZnJlc2hJZCk7XG4gICAgICAgIH1cbiAgICB9LCA1MDAwKVxuICAgIHRpbWVzVG9SdW5QZXJNZXRob2RDYWxsID0gMztcblxuICAgIGNvbnN0IHNob3dUb29sdGlwQ29uZGl0aW9uYWxseSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgZWxlbWVudFNlbGVjdG9yID0gdGhpcy5nZXRBdHRyaWJ1dGUoXCJkYXRhLXRpdGxlLWVsZW1lbnRcIik7XG4gICAgICAgIGxldCB0b29sdGlwRWxlbWVudHMgPSBbXVxuICAgICAgICBpZiAoZWxlbWVudFNlbGVjdG9yID09ICdzZWxmJykge1xuICAgICAgICAgICAgdG9vbHRpcEVsZW1lbnRzLnB1c2godGhpcylcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRvb2x0aXBFbGVtZW50cyA9IHRoaXMucXVlcnlTZWxlY3RvckFsbChlbGVtZW50U2VsZWN0b3IpO1xuICAgICAgICB9XG4gICAgICAgIHRvb2x0aXBFbGVtZW50cy5mb3JFYWNoKHRvb2x0aXBFbGVtZW50ID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsRGlzcGxheSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRvb2x0aXBFbGVtZW50LCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKFwiZGlzcGxheVwiKTtcbiAgICAgICAgICAgIGlmIChvcmlnaW5hbERpc3BsYXkuaW5jbHVkZXMoJ2lubGluZScpKSB7XG4gICAgICAgICAgICAgICAgdG9vbHRpcEVsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7XG4gICAgICAgICAgICAgICAgdG9vbHRpcEVsZW1lbnQub25tb3VzZWxlYXZlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICB0b29sdGlwRWxlbWVudC5zdHlsZS5wb3NpdGlvbiA9IG9yaWdpbmFsRGlzcGxheTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCB0aXRsZUVsZW1lbnQgPSB0b29sdGlwRWxlbWVudC5ub2RlTmFtZSA9PSBcIklOUFVUXCIgfHwgdG9vbHRpcEVsZW1lbnQubm9kZU5hbWUgPT0gXCJURVhULUFSRUFcIiA/IHRvb2x0aXBFbGVtZW50LnBhcmVudEVsZW1lbnQgOiB0b29sdGlwRWxlbWVudDtcbiAgICAgICAgICAgIGlmICh0b29sdGlwRWxlbWVudC5zY3JvbGxXaWR0aCA+IHRvb2x0aXBFbGVtZW50LmNsaWVudFdpZHRoICYmIHRvb2x0aXBFbGVtZW50LnNjcm9sbFdpZHRoICE9PSB0b29sdGlwRWxlbWVudC5jbGllbnRXaWR0aCArIDEpIHtcbiAgICAgICAgICAgICAgICBsZXQgdGl0bGUgPSAnJ1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlID0gdG9vbHRpcEVsZW1lbnQuaW5uZXJUZXh0O1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggeyB9XG4gICAgICAgICAgICAgICAgaWYgKHRpdGxlID09IFwiXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlID0gdG9vbHRpcEVsZW1lbnQudmFsdWU7ICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggeyB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB0aXRsZUVsZW1lbnQuc2V0QXR0cmlidXRlKCdkYXRhLXRpdGxlJywgdGl0bGUpO1xuICAgICAgICAgICAgICB0b29sdGlwRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXl1cCcsIGZ1bmN0aW9uKCkgeyB0aXRsZUVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdkYXRhLXRpdGxlJykgfSwge29uY2UgOiB0cnVlfSk7XG5cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGl0bGVFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgnZGF0YS10aXRsZScpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG59XG4gIGNoZWNrVmFsaWRpdHkoZm9ybUZpZWxkczogSUZvcm1GaWVsZFtdKTogYm9vbGVhbiB7XG4gICAgbGV0IGlzVmFsaWQ6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgZm9ybUZpZWxkcy5tYXAoKGl0ZW06IElGb3JtRmllbGQpID0+IHtcbiAgICAgIGlmIChpdGVtLnZhbGlkYXRpb25zICYmICFpdGVtLmRpc2FibGVkKSB7XG4gICAgICAgIGxldCBpdGVtVmFsdWUgPSBpdGVtLmNvbnRyb2wgPT09IEVGb3JtQ29udHJvbC5MT09LVVBfSU5QVVQgJiYgaXRlbS52YWx1ZSAgJiYgdHlwZW9mKGl0ZW0udmFsdWUpID09PSAnb2JqZWN0JyA/IGl0ZW0udmFsdWUudmFsdWUgOiBpdGVtLnZhbHVlXG4gICAgICAgIC8vIGlmKGl0ZW0uY29udHJvbCA9PT0gRUZvcm1Db250cm9sLkxPT0tVUF9JTlBVVCAmJiBpdGVtLnZhbHVlICAmJiB0eXBlb2YoaXRlbS52YWx1ZSkgPT09ICdvYmplY3QnKXtcbiAgICAgICAgLy8gICBpdGVtLnZhbHVlID0gaXRlbS52YWx1ZS52YWx1ZTtcbiAgICAgICAgLy8gIH1cbiAgICAgICAgaXRlbS5lcnJvck1lc3NhZ2UgPSAnJztcbiAgICAgICAgaXRlbS5pc3ZhbGlkID0gdHJ1ZTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVtLnZhbGlkYXRpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgY29uc3QgbWluTWF4VmFsaWREYXRlID0gdXRpbGl0aWVzLmNhbGVuZGFyTWluTWF4VmFsdWUoaXRlbSwgaXRlbVZhbHVlLCBpKTtcbiAgICAgICAgICBjb25zdCB2YWxpZCA9XG4gICAgICAgICAgICBpdGVtLnZhbGlkYXRpb25zICYmIHR5cGVvZiBpdGVtLmxhYmVsID09PSAnb2JqZWN0J1xuICAgICAgICAgICAgICA/IGl0ZW0ubGFiZWwubmFtZVxuICAgICAgICAgICAgICA6IGl0ZW0ubGFiZWw7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgaXRlbS52YWxpZGF0aW9uc1tpXS50eXBlID09IEVWYWxpZGF0b3IuUkVRVUlSRUQgJiZcbiAgICAgICAgICAgICFpdGVtVmFsdWUgJiZcbiAgICAgICAgICAgICFpdGVtLmhpZGRlbiAmJlxuICAgICAgICAgICAgdmFsaWRcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGlzVmFsaWQgPSBpdGVtVmFsdWVcbiAgICAgICAgICAgICAgPyB0cnVlXG4gICAgICAgICAgICAgIDogdGhpcy5zZXRFcnJvck1lc3NhZ2UoaXRlbSwgYCR7dmFsaWR9IGlzIHJlcXVpcmVkYCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgaXRlbVZhbHVlICYmXG4gICAgICAgICAgICBpdGVtLnZhbGlkYXRpb25zW2ldLnR5cGUgPT0gRVZhbGlkYXRvci5NSU5MRU5HVEggJiZcbiAgICAgICAgICAgIGl0ZW1WYWx1ZS5sZW5ndGggPCBpdGVtLnZhbGlkYXRpb25zW2ldLmV4cHJlc3Npb25cbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGlzVmFsaWQgPVxuICAgICAgICAgICAgaXRlbVZhbHVlICYmIGl0ZW1WYWx1ZS5sZW5ndGggPiBpdGVtLnZhbGlkYXRpb25zW2ldLmV4cHJlc3Npb25cbiAgICAgICAgICAgICAgICA/IHRydWVcbiAgICAgICAgICAgICAgICA6IHRoaXMuc2V0RXJyb3JNZXNzYWdlKFxuICAgICAgICAgICAgICAgICAgICBpdGVtLFxuICAgICAgICAgICAgICAgICAgICBgJHtpdGVtLmxhYmVsfSBNaW5pbXVtICR7aXRlbS52YWxpZGF0aW9uc1tpXS5leHByZXNzaW9ufSBjaGFyYWN0ZXJzYFxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICBpdGVtVmFsdWUgJiZcbiAgICAgICAgICAgIGl0ZW0udmFsaWRhdGlvbnNbaV0udHlwZSA9PSBFVmFsaWRhdG9yLk1BWExFTkdUSCAmJlxuICAgICAgICAgICAgaXRlbVZhbHVlLmxlbmd0aCA+IGl0ZW0udmFsaWRhdGlvbnNbaV0uZXhwcmVzc2lvblxuICAgICAgICAgICkge1xuICAgICAgICAgICAgaXNWYWxpZCA9XG4gICAgICAgICAgICBpdGVtVmFsdWUgJiYgaXRlbVZhbHVlLmxlbmd0aCA8IGl0ZW0udmFsaWRhdGlvbnNbaV0uZXhwcmVzc2lvblxuICAgICAgICAgICAgICAgID8gdHJ1ZVxuICAgICAgICAgICAgICAgIDogdGhpcy5zZXRFcnJvck1lc3NhZ2UoXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0sXG4gICAgICAgICAgICAgICAgICAgIGAke2l0ZW0ubGFiZWx9IE1heGltdW0gJHtpdGVtLnZhbGlkYXRpb25zW2ldLmV4cHJlc3Npb259IGNoYXJhY3RlcnNgXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgIGl0ZW1WYWx1ZSAmJlxuICAgICAgICAgICAgaXRlbS52YWxpZGF0aW9uc1tpXS50eXBlID09IEVWYWxpZGF0b3IuTUlOSU1VTSAmJlxuICAgICAgICAgICAgaXNWYWxpZFxuICAgICAgICAgICkge1xuICAgICAgICAgICAgaWYoaXRlbS5jb250cm9sID09PSBFRm9ybUNvbnRyb2wuQ0FMRU5EQVIpe1xuICAgICAgICAgICAgICBpc1ZhbGlkID0gbWluTWF4VmFsaWREYXRlID09PSAnbWluaW11bScgPyB0aGlzLnNldEVycm9yTWVzc2FnZShpdGVtLCBgTWluaW11bSAke3ZhbGlkfSAke2l0ZW0udmFsaWRhdGlvbnNbaV0uZXhwcmVzc2lvbn1gKSA6IHRydWU7XG4gICAgICAgICAgICB9ZWxzZSBpZihpdGVtVmFsdWUgPCBpdGVtLnZhbGlkYXRpb25zW2ldLmV4cHJlc3Npb24pe1xuICAgICAgICAgICAgaXNWYWxpZCA9XG4gICAgICAgICAgICBpdGVtVmFsdWUgJiYgaXRlbVZhbHVlLmxlbmd0aCA+IGl0ZW0udmFsaWRhdGlvbnNbaV0uZXhwcmVzc2lvblxuICAgICAgICAgICAgICAgID8gdHJ1ZVxuICAgICAgICAgICAgICAgIDogdGhpcy5zZXRFcnJvck1lc3NhZ2UoXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0sXG4gICAgICAgICAgICAgICAgICAgIGAke2l0ZW0ubGFiZWx9IE1pbmltdW0gJHt2YWxpZH0gJHtpdGVtLnZhbGlkYXRpb25zW2ldLmV4cHJlc3Npb259YFxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgaXRlbVZhbHVlICYmXG4gICAgICAgICAgICBpdGVtLnZhbGlkYXRpb25zW2ldLnR5cGUgPT0gRVZhbGlkYXRvci5NQVhJTVVNICYmXG4gICAgICAgICAgICBpc1ZhbGlkXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBpZihpdGVtLmNvbnRyb2wgPT09IEVGb3JtQ29udHJvbC5DQUxFTkRBUil7XG4gICAgICAgICAgICAgIGlzVmFsaWQgPSBtaW5NYXhWYWxpZERhdGUgPT09ICdncmVhdGVyJyA/IHRoaXMuc2V0RXJyb3JNZXNzYWdlKGl0ZW0sIGBNYXhpbXVtICR7dmFsaWR9ICR7aXRlbS52YWxpZGF0aW9uc1tpXS5leHByZXNzaW9ufWApIDogdHJ1ZTtcbiAgICAgICAgICAgIH1lbHNlIGlmKGl0ZW1WYWx1ZSA+IGl0ZW0udmFsaWRhdGlvbnNbaV0uZXhwcmVzc2lvbil7XG4gICAgICAgICAgICBpc1ZhbGlkID1cbiAgICAgICAgICAgIGl0ZW1WYWx1ZSAmJiBpdGVtVmFsdWUubGVuZ3RoIDwgaXRlbS52YWxpZGF0aW9uc1tpXS5leHByZXNzaW9uXG4gICAgICAgICAgICAgICAgPyB0cnVlXG4gICAgICAgICAgICAgICAgOiB0aGlzLnNldEVycm9yTWVzc2FnZShcbiAgICAgICAgICAgICAgICAgICAgaXRlbSxcbiAgICAgICAgICAgICAgICAgICAgYCR7aXRlbS5sYWJlbH0gTWF4aW11bSAke3ZhbGlkfSAke2l0ZW0udmFsaWRhdGlvbnNbaV0uZXhwcmVzc2lvbn1gXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICBpdGVtVmFsdWUgJiZcbiAgICAgICAgICAgIGl0ZW0udmFsaWRhdGlvbnNbaV0udHlwZSA9PSBFVmFsaWRhdG9yLlBBVFRFUk4gJiZcbiAgICAgICAgICAgICFpdGVtVmFsdWUubWF0Y2goaXRlbS52YWxpZGF0aW9uc1tpXS5leHByZXNzaW9uKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgaXNWYWxpZCA9XG4gICAgICAgICAgICBpdGVtVmFsdWUgJiYgaXRlbVZhbHVlLm1hdGNoKGl0ZW0udmFsaWRhdGlvbnNbaV0uZXhwcmVzc2lvbilcbiAgICAgICAgICAgICAgICA/IHRydWVcbiAgICAgICAgICAgICAgICA6IHRoaXMuc2V0RXJyb3JNZXNzYWdlKGl0ZW0sIGBFbnRlciB2YWxpZCAke3ZhbGlkfWApO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgIGl0ZW1WYWx1ZSAmJlxuICAgICAgICAgICAgaXRlbS52YWxpZGF0aW9uc1tpXS50eXBlID09IEVWYWxpZGF0b3IuTlVNRVJJQyAmJlxuICAgICAgICAgICAgIWl0ZW1WYWx1ZS50b1N0cmluZygpLm1hdGNoKC9eKDB8Wy0oKTEtOV1cXGQqKSQvKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgaXNWYWxpZCA9XG4gICAgICAgICAgICBpdGVtVmFsdWUgJiYgaXRlbVZhbHVlPy50b1N0cmluZygpPy5tYXRjaCgvXigwfFsxLTldXFxkKikkLylcbiAgICAgICAgICAgICAgICA/IHRydWVcbiAgICAgICAgICAgICAgICA6IHRoaXMuc2V0RXJyb3JNZXNzYWdlKGl0ZW0sIGBFbnRlciAke2l0ZW0udmFsaWRhdGlvbnNbaV0udHlwZX0gZm9yICR7dmFsaWR9YCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgaXRlbVZhbHVlICYmXG4gICAgICAgICAgICBpdGVtLnZhbGlkYXRpb25zW2ldLnR5cGUgPT0gRVZhbGlkYXRvci5QSE9ORSAmJlxuICAgICAgICAgICAgIWl0ZW1WYWx1ZS50b1N0cmluZygpLm1hdGNoKC9eKD89LipbMC05XSlbLSgpMC05XFxzK3hdKyQvKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgaXNWYWxpZCA9XG4gICAgICAgICAgICBpdGVtVmFsdWUgJiYgaXRlbVZhbHVlLnRvU3RyaW5nKCkubWF0Y2goL14oPz0uKlswLTldKVstKCkwLTlcXHMreF0rJC8pXG4gICAgICAgICAgICAgICAgPyB0cnVlXG4gICAgICAgICAgICAgICAgOiB0aGlzLnNldEVycm9yTWVzc2FnZShpdGVtLCBgRW50ZXIgdmFsaWQgJHt2YWxpZH1gKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICBpdGVtVmFsdWUgJiZcbiAgICAgICAgICAgIGl0ZW0udmFsaWRhdGlvbnNbaV0udHlwZSA9PSBFVmFsaWRhdG9yLkRFQ0lNQUwgJiZcbiAgICAgICAgICAgICFpdGVtVmFsdWU/LnRvU3RyaW5nKCk/Lm1hdGNoKC9eKDB8Wy0oKTEtOV1cXGQqKShcXC5cXGQrKT8kLylcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGlzVmFsaWQgPVxuICAgICAgICAgICAgaXRlbVZhbHVlICYmIGl0ZW1WYWx1ZS5tYXRjaCgvXigwfFsxLTldXFxkKikoXFwuXFxkKyk/JC8pXG4gICAgICAgICAgICAgICAgPyB0cnVlXG4gICAgICAgICAgICAgICAgOiB0aGlzLnNldEVycm9yTWVzc2FnZShpdGVtLCBgRW50ZXIgJHtpdGVtLnZhbGlkYXRpb25zW2ldLnR5cGV9IGZvciAke3ZhbGlkfWApO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgIGl0ZW1WYWx1ZSAmJlxuICAgICAgICAgICAgaXRlbS52YWxpZGF0aW9uc1tpXS50eXBlID09IEVWYWxpZGF0b3IuRU1BSUwgJiZcbiAgICAgICAgICAgICFpdGVtVmFsdWUubWF0Y2goL15bYS16QS1aMC05Ll8tXStAW2EtekEtWjAtOS4tXStcXC5bYS16QS1aXXsyLDZ9JC8pXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBpc1ZhbGlkID1cbiAgICAgICAgICAgIGl0ZW1WYWx1ZSAmJlxuICAgICAgICAgICAgaXRlbVZhbHVlLm1hdGNoKFxuICAgICAgICAgICAgICAgIC9eW2EtekEtWjAtOS5fLV0rQFthLXpBLVowLTkuLV0rXFwuW2EtekEtWl17Miw2fSQvXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICA/IHRydWVcbiAgICAgICAgICAgICAgICA6IHRoaXMuc2V0RXJyb3JNZXNzYWdlKGl0ZW0sIGBFbnRlciB2YWxpZCAke3ZhbGlkfWApO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGlzVmFsaWQ7XG4gIH1cblxuICBzZXRFcnJvck1lc3NhZ2UoaXRlbTogSUZvcm1GaWVsZCwgZXJyb3JNZXNzYWdlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpdGVtLmVycm9yTWVzc2FnZSA9IGVycm9yTWVzc2FnZTtcbiAgICBpdGVtLmlzdmFsaWQgPSBmYWxzZTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBhZGRGb3JtRmllbGQoZmllbGRJbmZvOiBJRm9ybUZpZWxkKTogSUZvcm1GaWVsZCB7XG4gICAgaWYgKCFmaWVsZEluZm8ubGFiZWwpIHtcbiAgICAgIGZpZWxkSW5mby5sYWJlbCA9IGZpZWxkSW5mby5maWVsZDtcbiAgICB9XG4gICAgY29uc3QgZm9ybUZpZWxkOiBhbnkgPSB7XG4gICAgICBsYWJlbDogZmllbGRJbmZvLmxhYmVsLFxuICAgICAgZmllbGQ6IGZpZWxkSW5mby5maWVsZCxcbiAgICAgIGRpc3BsYXlGaWVsZDogZmllbGRJbmZvLmRpc3BsYXlGaWVsZCxcbiAgICAgIGNvbnRyb2w6IGZpZWxkSW5mby5jb250cm9sLFxuICAgICAgc2hvd09wdGlvbjogZmllbGRJbmZvLnNob3dPcHRpb24sXG4gICAgICBjb2x1bW46IGZpZWxkSW5mby5jb2x1bW4sXG4gICAgICByb3c6IGZpZWxkSW5mby5yb3csXG4gICAgICBtaW51dGVzSW50ZXJ2YWw6IGZpZWxkSW5mby5taW51dGVzSW50ZXJ2YWwsXG4gICAgICB2YWx1ZTogZmllbGRJbmZvLnZhbHVlLFxuICAgICAgZm9ybWF0OiBmaWVsZEluZm8uZm9ybWF0LFxuICAgICAgaGlkZGVuOiBmaWVsZEluZm8uaGlkZGVuLFxuICAgICAgcGVybWlzc2lvbnM6IGZpZWxkSW5mby5wZXJtaXNzaW9ucyxcbiAgICAgIHZhbGlkYXRpb25zOiBmaWVsZEluZm8udmFsaWRhdGlvbnMsXG4gICAgICBpZDogZmllbGRJbmZvLmlkLFxuICAgICAgaHlwZXJsaW5rOiBmaWVsZEluZm8uaHlwZXJsaW5rLFxuICAgICAgZGF0YTogZmllbGRJbmZvLmRhdGEsXG4gICAgICBsb29rdXBDb250cm9sOiBmaWVsZEluZm8ubG9va3VwQ29udHJvbCxcbiAgICAgIGNvbXBvbmVudENvbnRyb2w6IGZpZWxkSW5mby5jb21wb25lbnRDb250cm9sLFxuICAgICAgb3B0aW9uTGFiZWw6IGZpZWxkSW5mby5vcHRpb25MYWJlbCxcbiAgICAgIG9wdGlvblZhbHVlOiBmaWVsZEluZm8ub3B0aW9uVmFsdWUsXG4gICAgICBzYXZlQXNTdHJpbmc6IGZpZWxkSW5mby5zYXZlQXNTdHJpbmcsXG4gICAgICBzaG93QWxsVmFsdWU6IGZpZWxkSW5mby5zaG93QWxsVmFsdWUsXG4gICAgICBvbkNsaWNrOiBmaWVsZEluZm8ub25DbGljayxcbiAgICAgIG9uUmV0dXJuOiBmaWVsZEluZm8ub25SZXR1cm4sXG4gICAgICBvbkZvY3VzT3V0OiBmaWVsZEluZm8ub25Gb2N1c091dCxcbiAgICAgIG9uQ2hhbmdlOiBmaWVsZEluZm8ub25DaGFuZ2UsXG4gICAgICB0YWJsZXM6IGZpZWxkSW5mby50YWJsZXMsXG4gICAgICBkaXNhYmxlZDogZmllbGRJbmZvLmRpc2FibGVkLFxuICAgICAgZGlzYWJsZWRUZXh0OiBmaWVsZEluZm8uZGlzYWJsZWRUZXh0LFxuICAgICAgdGltZU9ubHk6IGZpZWxkSW5mby50aW1lT25seSxcbiAgICAgIGlzUGFzc3dvcmQ6IGZpZWxkSW5mby5pc1Bhc3N3b3JkLFxuICAgICAgdGV4dFR5cGU6IGZpZWxkSW5mby50ZXh0VHlwZSxcbiAgICAgIG1vbnRoT25seTogZmllbGRJbmZvLm1vbnRoT25seSxcbiAgICAgIHNob3dUaW1lOiBmaWVsZEluZm8uc2hvd1RpbWUsIC8vIHRvIHNob3cgdGltZSBhcyB3ZWxsIGluIGNhbGVuZGFyIGZvcm0gZmllbGRcbiAgICAgIGhlaWdodDogZmllbGRJbmZvLmhlaWdodCxcbiAgICAgIHNob3dCb3R0b21Cb3JkZXI6IGZpZWxkSW5mby5zaG93Qm90dG9tQm9yZGVyLFxuICAgICAgYWxsb3dTZWFyY2g6IGZpZWxkSW5mby5hbGxvd1NlYXJjaCxcbiAgICAgIHNlbGVjdE11bHRpcGxlRmlsZXM6IGZpZWxkSW5mby5zZWxlY3RNdWx0aXBsZUZpbGVzLFxuICAgICAgU2V0ZmlsZVR5cGVzOiBmaWVsZEluZm8uU2V0ZmlsZVR5cGVzLFxuICAgICAgaWNvbjogZmllbGRJbmZvLmljb24sXG4gICAgICBjb2xvcjogZmllbGRJbmZvLmNvbG9yLFxuICAgICAgY2FyZDogZmllbGRJbmZvLmNhcmQsXG4gICAgICB1bmlxdWVLZXk6IGZpZWxkSW5mby51bmlxdWVLZXksXG4gICAgICBwYXRoU3lzdGVtQ29uZmlnOiBmaWVsZEluZm8ucGF0aFN5c3RlbUNvbmZpZyxcbiAgICAgIGF6dXJlQ29udGFpbmVyOiBmaWVsZEluZm8uYXp1cmVDb250YWluZXIsXG4gICAgICBjbGFzczogZmllbGRJbmZvLmNsYXNzXG4gICAgfTtcblxuICAgIHJldHVybiBmb3JtRmllbGQ7XG4gIH1cblxuICBhZGRDaGVja2JveChmaWVsZEluZm86IEFkZEZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLkNIRUNLQk9YO1xuICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICB9XG5cbiAgYWRkVGV4dGJveChmaWVsZEluZm86IEFkZEZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLklOUFVUO1xuICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICB9XG5cbiAgYWRkRGlzcGxheUZpZWxkKGZpZWxkSW5mbzogQWRkRm9ybUZpZWxkKTogSUZvcm1GaWVsZCB7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuSU5QVVQ7XG4gICAgZmllbGRJbmZvLmRpc2FibGVkID0gdHJ1ZTtcbiAgICBmaWVsZEluZm8uc2hvd0JvdHRvbUJvcmRlciA9IHRydWU7XG4gICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gIH1cblxuICBhZGROdW1lcmljVGV4dGJveChmaWVsZEluZm86IEFkZEZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLk5VTUVSSUM7XG4gICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gIH1cblxuICBhZGRTcGFjZUZpZWxkKGZpZWxkSW5mbzogQWRkRm9ybUZpZWxkKTogSUZvcm1GaWVsZHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5TUEFDRVI7XG4gICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gIH1cblxuICBhZGROZXdMaW5lKGZpZWxkSW5mbzogQWRkRm9ybUZpZWxkKTogSUZvcm1GaWVsZHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5CUkVBS19MSU5FO1xuICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICB9XG5cbiAgYWRkVGV4dEFyZWEoZmllbGRJbmZvOiBBZGRGb3JtRmllbGQpOiBJRm9ybUZpZWxkIHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5URVhUQVJFQTtcbiAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgfVxuICBcbiAgIC8vIEFkZGluZyBSZXBvcnQgYnV0dG9uIGZvciBEeW5hbWljRm9ybVxuICAgYWRkUmVwb3J0QnRuKGZpZWxkSW5mbzogSVJlcG9ydEJ0bikge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLlJFUE9SVDtcbiAgICByZXR1cm4gZmllbGRJbmZvO1xuICB9XG5cbiAgYWRkTm90ZUZpZWxkKGZpZWxkSW5mbzogQWRkRm9ybUZpZWxkKTogSUZvcm1GaWVsZCB7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuTk9URV9GSUVMRDtcbiAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgfVxuICBhZGRTZWxlY3RCdXR0b25zKGZpZWxkSW5mbzogQWRkRm9ybUZpZWxkKTogSUZvcm1GaWVsZCB7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuU0VMRUNUQlVUVE9OO1xuICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICB9XG4gIGFkZEh5cGVybGluayhmaWVsZEluZm86IEFkZEZvcm1GaWVsZCkge1xuICAgIGlmIChmaWVsZEluZm8uaHlwZXJsaW5rICYmIGZpZWxkSW5mby5oeXBlcmxpbmsuY29tcG9uZW50KSB7XG4gICAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5IWVBFUkxJTks7XG4gICAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuaHlwZXJsaW5rU2VydmljZS5idWlsZFVybChcbiAgICAgICAgZmllbGRJbmZvPy5oeXBlcmxpbms/LmxpbmtJZFxuICAgICAgKS50aGVuKChyZXM6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCBwYXJhbXMgPSBmaWVsZEluZm8/Lmh5cGVybGluaz8ucGFyYW1zO1xuICAgICAgICBsZXQgb3JpZ2luYWxVcmwgPSB0aGlzLmh5cGVybGlua1NlcnZpY2Uuc2V0VXJsKHBhcmFtcywgcmVzWzBdKTtcbiAgICAgICAgY29uc3QgbGluayA9IG9yaWdpbmFsVXJsO1xuICAgICAgICBpZiAob3JpZ2luYWxVcmwgJiYgcGFyYW1zKSB7XG4gICAgICAgICAgT2JqZWN0LmtleXMocGFyYW1zKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgICAgIGlmIChvcmlnaW5hbFVybC5pbmNsdWRlcygne3snICsga2V5ICsgJ319JykgJiYgcGFyYW1zW2tleV0gJiYgIXBhcmFtc1trZXldLnRvU3RyaW5nKCk/LmluY2x1ZGVzKCd7JykpIHtcbiAgICAgICAgICAgICAgb3JpZ2luYWxVcmwgPSBvcmlnaW5hbFVybC5yZXBsYWNlKCd7eycgKyBrZXkgKyAnfX0nLCBwYXJhbXNba2V5XSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICAgIGlmIChmaWVsZEluZm8uaHlwZXJsaW5rPy5saW5rSWQgJiYgZmllbGRJbmZvLmh5cGVybGluay5saW5rSWQubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGZpZWxkSW5mby5oeXBlcmxpbmsubGluayA9IG9yaWdpbmFsVXJsO1xuICAgICAgICB9XG4gICAgICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLkhZUEVSTElOSztcbiAgICAgICAgbGV0IG9iajogYW55ID0gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgICAgICAgb2JqWydvcmlnbmFsTGluayddID0gbGluaztcbiAgICAgICAgcmV0dXJuIG9iajtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGFkZENhbGVuZGFyKGZpZWxkSW5mbzogQWRkRm9ybUZpZWxkKTogSUZvcm1GaWVsZCB7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuQ0FMRU5EQVI7XG4gICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gIH1cblxuICAvLyBhZGQgQXV0b0NvbXBsZXRlIGZvciBGb3JtXG4gIGFkZEF1dG9Db21wbGV0ZShmaWVsZEluZm86IEFkZEZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLkFVVE9DT01QTEVURTtcbiAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgfVxuXG4gIC8vIFNlYXJjaCBBdXRvQ29tcGxldGUgRGF0YSBmb3IgZm9ybVxuICBnZXRBdXRvQ29tcGxldGVEYXRhKGZvcm1GaWVsZD86IGFueSwgdW5pcXVlS2V5Pzogc3RyaW5nLCBmaWx0ZXJzPzogYW55W10sIHNlYXJjaDogc3RyaW5nID0gJycpOiBhbnkge1xuICAgIHRoaXMucmVxdWVzdFNlcnZpY2UuZ2V0PGFueVtdLCBhbnk+KCcvRGF0YS9GZXRjaCcsIHsgdW5pcXVlS2V5OiB1bmlxdWVLZXksIGZpbHRlcnN9KS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpPT57XG4gICAgICBpZihzZWFyY2gpe1xuICAgICAgIGxldCBleGlzdEluUmVjb3JkOiBib29sZWFuID0gcmVzcG9uc2UucmVjb3Jkcy5zb21lKChyZWNvcmQ6IGFueSk9PiByZWNvcmRbZm9ybUZpZWxkLmRpc3BsYXlGaWVsZF0gJiYgcmVjb3JkW2Zvcm1GaWVsZC5kaXNwbGF5RmllbGRdPy50b1N0cmluZygpPy50b0xvd2VyQ2FzZSgpID09PSBzZWFyY2g/LnRvTG93ZXJDYXNlKCkpO1xuICAgICAgICBpZighZXhpc3RJblJlY29yZCl7XG4gICAgICAgICAgcmVzcG9uc2UucmVjb3Jkcy51bnNoaWZ0ICh7W2Zvcm1GaWVsZC5kaXNwbGF5RmllbGRdOiBzZWFyY2h9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZm9ybUZpZWxkLmRhdGEgPSBbLi4ucmVzcG9uc2UucmVjb3Jkc107XG4gICAgfSk7XG4gIH1cblxuICBhZGREcm9wZG93bihmaWVsZEluZm86IEFkZEZvcm1GaWVsZCwgZHJvcERvd25Qcm9wPzogSURyb3BEb3duUmVxdWVzdCk6IGFueSB7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuRFJPUERPV047XG4gICAgaWYgKGRyb3BEb3duUHJvcCkge1xuICAgICAgbGV0IHVuaXF1ZUtleSA9IGRyb3BEb3duUHJvcC51bmlxdWVLZXk7XG4gICAgICBsZXQgdmFsdWVQcm9wID0gZHJvcERvd25Qcm9wLnZhbHVlUHJvcDtcbiAgICAgIGxldCBsYWJlbFByb3AgPSBkcm9wRG93blByb3AubGFiZWxQcm9wO1xuICAgICAgbGV0IGZpbHRlcnM6IElTZXRGaWx0ZXJbXSA9IGRyb3BEb3duUHJvcC5maWx0ZXJzICYmIGRyb3BEb3duUHJvcC5maWx0ZXJzLmxlbmd0aCA+IDAgPyBkcm9wRG93blByb3AuZmlsdGVycyA6IFtdO1xuICAgICAgaWYgKHVuaXF1ZUtleSAmJiB2YWx1ZVByb3AgJiYgbGFiZWxQcm9wKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldERyb3Bkb3duRGF0YShmaWVsZEluZm8sIHVuaXF1ZUtleSwgdmFsdWVQcm9wLCBsYWJlbFByb3AsIGZpbHRlcnMpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgICB9XG4gIH1cblxuICBnZXREcm9wZG93bkRhdGEoZmllbGRJbmZvOiBBZGRGb3JtRmllbGQsIHVuaXF1ZUtleTogc3RyaW5nLCB2YWx1ZVByb3A6IHN0cmluZywgbGFiZWxQcm9wOiBzdHJpbmcsIGZpbHRlcnM6IGFueVtdKSB7XG4gICAgcmV0dXJuIHRoaXMuZHJvcGRvd25TZXJ2aWNlXG4gICAgICAuc2V0RHJvcERvd25MaXN0KFxuICAgICAgICB1bmlxdWVLZXksXG4gICAgICAgIHZhbHVlUHJvcCxcbiAgICAgICAgbGFiZWxQcm9wLFxuICAgICAgICBmaWx0ZXJzXG4gICAgICApXG4gICAgICAudGhlbigocmVzOiBhbnkpID0+IHtcbiAgICAgICAgZmllbGRJbmZvLmRhdGEgPSByZXM7XG4gICAgICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZXJyb3I6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5hcGlFcnJvcihlcnJvcik7XG4gICAgICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICAgICAgfSk7XG4gIH1cblxuICBhZGRMb29rVXAoZmllbGRJbmZvOiBBZGRGb3JtRmllbGQpOiBJRm9ybUZpZWxkIHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5MT09LVVBfSU5QVVQ7XG4gICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gIH1cblxuICBhZGREaWFsb2coZmllbGRJbmZvOiBBZGRGb3JtRmllbGQpOiBJRm9ybUZpZWxkIHtcbiAgICByZXR1cm4gdGhpcy5hZGRMb29rVXAoZmllbGRJbmZvKTtcbiAgfVxuXG4gIGFkZENvbXBvbmVudChmaWVsZEluZm86IEFkZEZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLkNPTVBPTkVOVDtcbiAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgfVxuXG4gIGFkZEhlYWRlcihmaWVsZEluZm86IElGb3JtRmllbGQpOiBJRm9ybUZpZWxkIHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5TRUNUSU9OX0hFQURFUjtcbiAgICBmaWVsZEluZm8uY2xhc3MgPSAnZm9ybS1oZWFkZXInO1xuICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICB9XG5cbiAgYWRkTXVsdGlTZWxlY3QoZmllbGRJbmZvOiBJRm9ybUZpZWxkLCBkcm9wRG93blByb3A/OiBJRHJvcERvd25SZXF1ZXN0KTogYW55IHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5NVUxUSVNFTEVDVDtcbiAgICBpZiAoZHJvcERvd25Qcm9wKSB7XG4gICAgICBsZXQgdW5pcXVlS2V5ID0gZHJvcERvd25Qcm9wLnVuaXF1ZUtleTtcbiAgICAgIGxldCB2YWx1ZVByb3AgPSBkcm9wRG93blByb3AudmFsdWVQcm9wO1xuICAgICAgbGV0IGxhYmVsUHJvcCA9IGRyb3BEb3duUHJvcC5sYWJlbFByb3A7XG4gICAgICBsZXQgZmlsdGVyczogSVNldEZpbHRlcltdID0gZHJvcERvd25Qcm9wLmZpbHRlcnMgJiYgZHJvcERvd25Qcm9wLmZpbHRlcnMubGVuZ3RoID4gMCA/IGRyb3BEb3duUHJvcC5maWx0ZXJzIDogW107XG4gICAgICBpZiAodW5pcXVlS2V5ICYmIHZhbHVlUHJvcCAmJiBsYWJlbFByb3ApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RHJvcGRvd25EYXRhKGZpZWxkSW5mbywgdW5pcXVlS2V5LCB2YWx1ZVByb3AsIGxhYmVsUHJvcCwgZmlsdGVycyk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGZpZWxkSW5mby5vcHRpb25MYWJlbCA9IGZpZWxkSW5mby5vcHRpb25MYWJlbCA/IGZpZWxkSW5mby5vcHRpb25MYWJlbCA6ICdsYWJlbCc7XG4gICAgICBmaWVsZEluZm8ub3B0aW9uVmFsdWUgPSBmaWVsZEluZm8ub3B0aW9uVmFsdWUgPyBmaWVsZEluZm8ub3B0aW9uVmFsdWUgOiAndmFsdWUnO1xuICAgICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gICAgfVxuICB9XG5cbiAgYWRkRmlsZVVwbG9hZChmaWVsZEluZm86IElGb3JtRmllbGQpOiBJRm9ybUZpZWxkIHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5GSUxFX1VQTE9BRDtcbiAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgfVxuXG4gIGFkZERpc3BsYXlGaWxlKGZpZWxkSW5mbzogSUZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLkRJU1BMQVlfRklMRTtcbiAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgfVxuXG4gIC8vIEFkZGluZyBPbkNsaWNrIEJ1dHRvbiBGdW5jdGlvbiBmb3IgRHluYW1pY0Zvcm1cbiAgYWRkQnV0dG9uKGZpZWxkSW5mbzogSUZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLkFERF9CVVRUT047XG4gICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gIH1cblxuICAvLyBBZGRpbmcgU3dpdGNoIEZ1bmN0aW9uIGZvciBEeW5hbWljRm9ybVxuICBhZGRTd2l0Y2goZmllbGRJbmZvOiBJRm9ybUZpZWxkKTogSUZvcm1GaWVsZCB7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuU1dJVENIO1xuICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICB9XG5cbiAgLy8gc3RhcnQgYWRkIG5ldyBjYXJkIGZ1bmN0aW9uYWxpdHlcbiAgYWRkQ2FyZChmaWVsZEluZm86IElGb3JtRmllbGQsIGNhcmREYXRhPzogSUxpc3RGaWx0ZXIpOiBJRm9ybUZpZWxkIHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5DQVJEO1xuICAgIGlmIChjYXJkRGF0YSAmJiBjYXJkRGF0YS51bmlxdWVLZXkpIHtcbiAgICAgIGlmKGNhcmREYXRhLnNvcnRzPy5sZW5ndGggPiAwKXtcbiAgICAgICAgY2FyZERhdGEuc29ydHMuZm9yRWFjaCgocmVzKSA9PntcbiAgICAgICAgcmVzLmRpcmVjdGlvbiA9IHJlcy5kaXJlY3Rpb24gPyByZXMuZGlyZWN0aW9uIDogRUdyaWRTb3J0RGlyZWN0aW9uLkFTQztcbiAgICAgICAgfSk7XG4gICAgICB9ICAgXG4gICAgICByZXR1cm4gdGhpcy5nZXRDYXJkRGF0YShmaWVsZEluZm8sIGNhcmREYXRhLnVuaXF1ZUtleSwgY2FyZERhdGEuZmlsdGVycywgY2FyZERhdGEuc29ydHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgICB9XG4gIH1cblxuICBnZXRDYXJkRGF0YShmaWVsZEluZm86IGFueSwgdW5pcXVlS2V5OiBzdHJpbmcsIGZpbHRlcnM6IGFueVtdID0gW10sIHNvcnRzOiBhbnlbXSA9IFtdKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5nZXRDYXJkTGlzdCh1bmlxdWVLZXksIGZpbHRlcnMsIHNvcnRzKVxuICAgICAgLnRoZW4oKHJlczogYW55KSA9PiB7XG4gICAgICAgIGZpZWxkSW5mby5jYXJkLmRhdGEgPSByZXMucmVjb3JkcztcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5hcGlFcnJvcihlcnJvcik7XG4gICAgICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICAgICAgfSk7XG4gIH1cblxuICAvLyBsb2FkIGNvbXBvbmVudCBvbiBmb3JtXG4gIHNldEFkZENvbXBvbmVudERhdGEoeyBmb3JtU2VjdGlvbnMgfTogSUR5bmFtaWNGb3JtLCBpZDogc3RyaW5nLCB2YWx1ZTogYW55LCBsb2FkQ29tcG9uZW50OiBib29sZWFuID0gdHJ1ZSkge1xuICAgIGZvcm1TZWN0aW9ucz8uZm9yRWFjaCgoc2VjdGlvbikgPT4ge1xuICAgICAgc2VjdGlvbi5maWVsZHMuZm9yRWFjaCgoZmllbGQ6IGFueSkgPT4ge1xuICAgICAgICBpZiAoZmllbGQuY29udHJvbCA9PT0gRUZvcm1Db250cm9sLkNPTVBPTkVOVCAmJiBmaWVsZC5jb21wb25lbnRDb250cm9sICYmIGZpZWxkLmNvbXBvbmVudENvbnRyb2w/LmlkID09PSBpZCkge1xuICAgICAgICAgIGxldCBrZXlzID0gT2JqZWN0LmtleXModmFsdWUpO1xuICAgICAgICAgIGtleXMuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgICAgICBmaWVsZC5jb21wb25lbnRDb250cm9sLmRhdGEgPSB7IC4uLmZpZWxkLmNvbXBvbmVudENvbnRyb2w/LmRhdGEsIFtrZXldOiB2YWx1ZVtrZXldIH07XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdXRpbGl0aWVzLmNoYW5nZUR5bmFtaWNGb3JtU3RhdGUoaWQsIGZpZWxkLmNvbXBvbmVudENvbnRyb2wuZGF0YSwgbG9hZENvbXBvbmVudCk7XG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIHNldCBmb3JtZmllbGQgdmFsdWVcbiAgc2V0Rm9ybUZpZWxkVmFsdWUoXG4gICAgeyBmb3JtU2VjdGlvbnMgfTogSUR5bmFtaWNGb3JtLFxuICAgIGZpZWxkOiBzdHJpbmcsXG4gICAgdmFsdWU6IGFueSxcbiAgICBkaXNwbGF5VGV4dDogc3RyaW5nID0gJydcbiAgKSB7XG4gICAgZm9ybVNlY3Rpb25zPy5mb3JFYWNoKChzZWN0aW9uKSA9PiB7XG4gICAgICBzZWN0aW9uLmZpZWxkcy5mb3JFYWNoKChmb3JtRmllbGQpID0+IHtcbiAgICAgICAgaWYgKGZvcm1GaWVsZC5maWVsZD8udG9Mb3dlckNhc2UoKSA9PT0gZmllbGQ/LnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgICAgICBpZiAoZGlzcGxheVRleHQgJiYgZGlzcGxheVRleHQubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgZm9ybUZpZWxkLnZhbHVlID0geyB0ZXh0OiBkaXNwbGF5VGV4dCwgdmFsdWU6IHZhbHVlIH07XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZvcm1GaWVsZC52YWx1ZSA9IHZhbHVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvLyBzZXQgZm9ybWZpZWxkIHByb3BlcnR5XG4gIHNldEZvcm1GaWVsZFByb3AoXG4gICAgeyBmb3JtU2VjdGlvbnMgfTogSUR5bmFtaWNGb3JtLFxuICAgIGZpZWxkOiBzdHJpbmcsXG4gICAgcHJvcHM6IElEaWN0aW9uYXJ5W11cbiAgKSB7XG4gICAgcmV0dXJuIGZvcm1TZWN0aW9ucz8ubWFwKChzZWN0aW9uOiBhbnkpID0+IHtcbiAgICAgIHJldHVybiBzZWN0aW9uLmZpZWxkcy5tYXAoKGZvcm1GaWVsZDogYW55KTogYW55ID0+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIChmb3JtRmllbGQuZmllbGQ/LnRvTG93ZXJDYXNlKCkgPT09IGZpZWxkPy50b0xvd2VyQ2FzZSgpKSB8fFxuICAgICAgICAgIChmb3JtRmllbGQubGFiZWwgJiYgZm9ybUZpZWxkLmxhYmVsLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PT0gZmllbGQ/LnRvTG93ZXJDYXNlKCkpXG4gICAgICAgICkge1xuICAgICAgICAgIHJldHVybiBwcm9wcy5tYXAoKHByb3A6IGFueSkgPT4ge1xuICAgICAgICAgICAgaWYgKGZvcm1GaWVsZC5oYXNPd25Qcm9wZXJ0eShwcm9wLm5hbWUpKSB7XG4gICAgICAgICAgICAgIGlmKHByb3AubmFtZSA9PT0gJ2xhYmVsJyAmJiB0eXBlb2YgZm9ybUZpZWxkLmxhYmVsID09PSAnb2JqZWN0JyAmJiAhcHJvcC5vdmVycmlkZSl7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChmb3JtRmllbGRbcHJvcC5uYW1lXS5uYW1lID0gcHJvcC52YWx1ZSk7XG4gICAgICAgICAgICAgIH1lbHNle1xuICAgICAgICAgICAgICAgIHJldHVybiAoZm9ybUZpZWxkW3Byb3AubmFtZV0gPSBwcm9wLnZhbHVlKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZXtcbiAgICAgICAgICAgICAgcmV0dXJuIChmb3JtRmllbGRbcHJvcC5uYW1lXSA9IHByb3AudmFsdWUpO1xuICAgICAgICAgICAgICBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBnZXRDYXJkTGlzdCh1bmlxdWVLZXk6IHN0cmluZywgZmlsdGVyczogYW55W10gPSBbXSwgc29ydHM6IGFueVtdID0gW10pIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdGhpcy5yZXF1ZXN0U2VydmljZVxuICAgICAgICAuZ2V0PGFueVtdLCBhbnk+KCcvRGF0YS9GZXRjaCcsIHsgdW5pcXVlS2V5OiB1bmlxdWVLZXksIGZpbHRlcnMsIHNvcnRzIH0pXG4gICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGlmIChyZXNwb25zZSkge1xuICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZShyZXNwb25zZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZShbXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICAoeyBlcnJvciB9OiBhbnkpID0+IHtcbiAgICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH0pO1xuICB9XG4gIC8vIEVuZCBhZGQgbmV3IGNhcmQgZnVuY3Rpb25hbGl0eVxuXG59XG4iXX0=
530
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2UtdWktdG9vbGtpdC9zcmMvbGliL3NlcnZpY2VzL2Zvcm0uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFDTCxVQUFVLEVBRVYsWUFBWSxHQU9iLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFFLGtCQUFrQixFQUFhLE1BQU0sc0JBQXNCLENBQUM7QUFLckUsT0FBTyxLQUFLLFNBQVMsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7O0FBTWpELE1BQU0sT0FBTyxXQUFXO0lBRXRCLFlBQ1UsZ0JBQWtDLEVBQ2xDLGVBQWdDLEVBQ2hDLFlBQTBCLEVBQzFCLGNBQThCO1FBSDlCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUxqQyxvQkFBZSxHQUFXLEtBQUssQ0FBQztJQU1uQyxDQUFDO0lBQ0wsVUFBVTtRQUNSLElBQUksdUJBQXVCLEdBQUcsQ0FBQyxDQUFDO1FBQ2hDLE1BQU0sU0FBUyxHQUFHLFdBQVcsQ0FBQyxTQUFTLHdCQUF3QjtZQUMzRCxJQUFJLFFBQVEsR0FBRyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsd0NBQXdDLENBQUMsQ0FBQztZQUNuRixLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtnQkFDbkMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLFdBQVcsRUFBRSx3QkFBd0IsQ0FBQyxDQUFBO1lBQ25FLENBQUMsQ0FBQyxDQUFDO1lBQ0gsdUJBQXVCLEVBQUUsQ0FBQztZQUMxQixJQUFJLHVCQUF1QixJ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QUFPLEVBQUUsS0FBSyxFQUFFLENBQUM7aUJBQ3hFLFNBQVMsQ0FDUixDQUFDLFFBQWEsRUFBRSxFQUFFO2dCQUNoQixJQUFJLFFBQVEsRUFBRTtvQkFDWixPQUFPLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztpQkFDMUI7cUJBQU07b0JBQ0wsT0FBTyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7aUJBQ3BCO1lBQ0gsQ0FBQyxFQUNELENBQUMsRUFBRSxLQUFLLEVBQU8sRUFBRSxFQUFFO2dCQUNqQixNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDaEIsQ0FBQyxDQUNGLENBQUM7UUFDTixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7aUlBbGtCVSxXQUFXO3FJQUFYLFdBQVcsY0FGVixNQUFNOzsyRkFFUCxXQUFXO2tCQUh2QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEVWYWxpZGF0b3IsXG4gIElGb3JtRmllbGQsXG4gIEVGb3JtQ29udHJvbCxcbiAgQWRkRm9ybUZpZWxkLFxuICBJU2V0RmlsdGVyLFxuICBJRHJvcERvd25SZXF1ZXN0LFxuICBJTGlzdEZpbHRlcixcbiAgSVJlcG9ydEJ0bixcbiAgSUR5bmFtaWNGb3JtLFxufSBmcm9tICcuLi9tb2RlbHMvZm9ybS5tb2RlbCc7XG5pbXBvcnQgeyBFR3JpZFNvcnREaXJlY3Rpb24sIElHcmlkU29ydCB9IGZyb20gJy4uL21vZGVscy9ncmlkLm1vZGVsJztcbmltcG9ydCB7IEh5cGVybGlua1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9oeXBlcmxpbmsuc2VydmljZSc7XG5pbXBvcnQgeyBBbGVydFNlcnZpY2UgfSBmcm9tICcuL2FsZXJ0LnNlcnZpY2UnO1xuaW1wb3J0IHsgRHJvcGRvd25TZXJ2aWNlIH0gZnJvbSAnLi9kcm9wZG93bi5zZXJ2aWNlJztcbmltcG9ydCB7IFJlcXVlc3RTZXJ2aWNlIH0gZnJvbSAnLi9yZXF1ZXN0LnNlcnZpY2UnO1xuaW1wb3J0ICogYXMgdXRpbGl0aWVzIGZyb20gJy4vdXRpbGl0aWVzLnNlcnZpY2UnO1xuaW1wb3J0IHsgSURpY3Rpb25hcnkgfSBmcm9tICcuLi9tb2RlbHMvY29tbW9uLm1vZGVsJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1TZXJ2aWNlIHtcbiAgcHVibGljIGZpZWxkRm9jdXNlZE91dDpib29sZWFuID0gZmFsc2U7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaHlwZXJsaW5rU2VydmljZTogSHlwZXJsaW5rU2VydmljZSxcbiAgICBwcml2YXRlIGRyb3Bkb3duU2VydmljZTogRHJvcGRvd25TZXJ2aWNlLFxuICAgIHByaXZhdGUgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZXF1ZXN0U2VydmljZTogUmVxdWVzdFNlcnZpY2VcbiAgKSB7IH1cbiAgc2V0VG9vbHRpcCgpe1xuICAgIGxldCB0aW1lc1RvUnVuUGVyTWV0aG9kQ2FsbCA9IDM7XG4gICAgY29uc3QgcmVmcmVzaElkID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24gc2V0VG9vbHRpcEV2ZW50TGlzdGVuZXJzKCkge1xuICAgICAgICBsZXQgZWxlbWVudHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiW2RhdGEtdGl0bGUtZWxlbWVudF06bm90KFtkYXRhLXRpdGxlXSlcIik7XG4gICAgICAgIEFycmF5LmZyb20oZWxlbWVudHMpLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlb3ZlcicsIHNob3dUb29sdGlwQ29uZGl0aW9uYWxseSlcbiAgICAgICAgfSk7XG4gICAgICAgIHRpbWVzVG9SdW5QZXJNZXRob2RDYWxsLS07XG4gICAgICAgIGlmICh0aW1lc1RvUnVuUGVyTWV0aG9kQ2FsbCA9PSAwKSB7XG4gICAgICAgICAgICBjbGVhckludGVydmFsKHJlZnJlc2hJZCk7XG4gICAgICAgIH1cbiAgICB9LCA1MDAwKVxuICAgIHRpbWVzVG9SdW5QZXJNZXRob2RDYWxsID0gMztcblxuICAgIGNvbnN0IHNob3dUb29sdGlwQ29uZGl0aW9uYWxseSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgZWxlbWVudFNlbGVjdG9yID0gdGhpcy5nZXRBdHRyaWJ1dGUoXCJkYXRhLXRpdGxlLWVsZW1lbnRcIik7XG4gICAgICAgIGxldCB0b29sdGlwRWxlbWVudHMgPSBbXVxuICAgICAgICBpZiAoZWxlbWVudFNlbGVjdG9yID09ICdzZWxmJykge1xuICAgICAgICAgICAgdG9vbHRpcEVsZW1lbnRzLnB1c2godGhpcylcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRvb2x0aXBFbGVtZW50cyA9IHRoaXMucXVlcnlTZWxlY3RvckFsbChlbGVtZW50U2VsZWN0b3IpO1xuICAgICAgICB9XG4gICAgICAgIHRvb2x0aXBFbGVtZW50cy5mb3JFYWNoKHRvb2x0aXBFbGVtZW50ID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsRGlzcGxheSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRvb2x0aXBFbGVtZW50LCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKFwiZGlzcGxheVwiKTtcbiAgICAgICAgICAgIGlmIChvcmlnaW5hbERpc3BsYXkuaW5jbHVkZXMoJ2lubGluZScpKSB7XG4gICAgICAgICAgICAgICAgdG9vbHRpcEVsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7XG4gICAgICAgICAgICAgICAgdG9vbHRpcEVsZW1lbnQub25tb3VzZWxlYXZlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICB0b29sdGlwRWxlbWVudC5zdHlsZS5wb3NpdGlvbiA9IG9yaWdpbmFsRGlzcGxheTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCB0aXRsZUVsZW1lbnQgPSB0b29sdGlwRWxlbWVudC5ub2RlTmFtZSA9PSBcIklOUFVUXCIgfHwgdG9vbHRpcEVsZW1lbnQubm9kZU5hbWUgPT0gXCJURVhULUFSRUFcIiA/IHRvb2x0aXBFbGVtZW50LnBhcmVudEVsZW1lbnQgOiB0b29sdGlwRWxlbWVudDtcbiAgICAgICAgICAgIGlmICh0b29sdGlwRWxlbWVudC5zY3JvbGxXaWR0aCA+IHRvb2x0aXBFbGVtZW50LmNsaWVudFdpZHRoICYmIHRvb2x0aXBFbGVtZW50LnNjcm9sbFdpZHRoICE9PSB0b29sdGlwRWxlbWVudC5jbGllbnRXaWR0aCArIDEpIHtcbiAgICAgICAgICAgICAgICBsZXQgdGl0bGUgPSAnJ1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlID0gdG9vbHRpcEVsZW1lbnQuaW5uZXJUZXh0O1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggeyB9XG4gICAgICAgICAgICAgICAgaWYgKHRpdGxlID09IFwiXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlID0gdG9vbHRpcEVsZW1lbnQudmFsdWU7ICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggeyB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB0aXRsZUVsZW1lbnQuc2V0QXR0cmlidXRlKCdkYXRhLXRpdGxlJywgdGl0bGUpO1xuICAgICAgICAgICAgICB0b29sdGlwRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXl1cCcsIGZ1bmN0aW9uKCkgeyB0aXRsZUVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdkYXRhLXRpdGxlJykgfSwge29uY2UgOiB0cnVlfSk7XG5cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGl0bGVFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgnZGF0YS10aXRsZScpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG59XG4gIGNoZWNrVmFsaWRpdHkoZm9ybUZpZWxkczogSUZvcm1GaWVsZFtdKTogYm9vbGVhbiB7XG4gICAgbGV0IGlzVmFsaWQ6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgZm9ybUZpZWxkcy5tYXAoKGl0ZW06IElGb3JtRmllbGQpID0+IHtcbiAgICAgIGlmIChpdGVtLnZhbGlkYXRpb25zICYmICFpdGVtLmRpc2FibGVkKSB7XG4gICAgICAgIGxldCBpdGVtVmFsdWUgPVxuICAgICAgICAgIGl0ZW0uY29udHJvbCA9PT0gRUZvcm1Db250cm9sLkxPT0tVUF9JTlBVVCAmJlxuICAgICAgICAgIGl0ZW0udmFsdWUgJiZcbiAgICAgICAgICB0eXBlb2YgaXRlbS52YWx1ZSA9PT0gJ29iamVjdCdcbiAgICAgICAgICAgID8gaXRlbS52YWx1ZS52YWx1ZVxuICAgICAgICAgICAgOiBpdGVtLnZhbHVlO1xuICAgICAgICAvLyBpZihpdGVtLmNvbnRyb2wgPT09IEVGb3JtQ29udHJvbC5MT09LVVBfSU5QVVQgJiYgaXRlbS52YWx1ZSAgJiYgdHlwZW9mKGl0ZW0udmFsdWUpID09PSAnb2JqZWN0Jyl7XG4gICAgICAgIC8vICAgaXRlbS52YWx1ZSA9IGl0ZW0udmFsdWUudmFsdWU7XG4gICAgICAgIC8vICB9XG4gICAgICAgIGl0ZW0uZXJyb3JNZXNzYWdlID0gJyc7XG4gICAgICAgIGl0ZW0uaXN2YWxpZCA9IHRydWU7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlbS52YWxpZGF0aW9ucy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGNvbnN0IG1pbk1heFZhbGlkRGF0ZSA9IHV0aWxpdGllcy5jYWxlbmRhck1pbk1heFZhbHVlKGl0ZW0sIGl0ZW1WYWx1ZSwgaSk7XG4gICAgICAgICAgY29uc3QgdmFsaWQgPVxuICAgICAgICAgICAgaXRlbS52YWxpZGF0aW9ucyAmJiB0eXBlb2YgaXRlbS5sYWJlbCA9PT0gJ29iamVjdCdcbiAgICAgICAgICAgICAgPyBpdGVtLmxhYmVsLm5hbWVcbiAgICAgICAgICAgICAgOiBpdGVtLmxhYmVsO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGl0ZW0udmFsaWRhdGlvbnNbaV0udHlwZSA9PSBFVmFsaWRhdG9yLlJFUVVJUkVEICYmXG4gICAgICAgICAgICAhaXRlbVZhbHVlICYmXG4gICAgICAgICAgICAhaXRlbS5oaWRkZW4gJiZcbiAgICAgICAgICAgIHZhbGlkXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBpc1ZhbGlkID0gaXRlbVZhbHVlXG4gICAgICAgICAgICAgID8gdHJ1ZVxuICAgICAgICAgICAgICA6IHRoaXMuc2V0RXJyb3JNZXNzYWdlKGl0ZW0sIGAke3ZhbGlkfSBpcyByZXF1aXJlZGApO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgIGl0ZW1WYWx1ZSAmJlxuICAgICAgICAgICAgaXRlbS52YWxpZGF0aW9uc1tpXS50eXBlID09IEVWYWxpZGF0b3IuTUlOTEVOR1RIICYmXG4gICAgICAgICAgICBpdGVtVmFsdWUubGVuZ3RoIDwgaXRlbS52YWxpZGF0aW9uc1tpXS5leHByZXNzaW9uXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBpc1ZhbGlkID1cbiAgICAgICAgICAgIGl0ZW1WYWx1ZSAmJiBpdGVtVmFsdWUubGVuZ3RoID4gaXRlbS52YWxpZGF0aW9uc1tpXS5leHByZXNzaW9uXG4gICAgICAgICAgICAgICAgPyB0cnVlXG4gICAgICAgICAgICAgICAgOiB0aGlzLnNldEVycm9yTWVzc2FnZShcbiAgICAgICAgICAgICAgICAgICAgaXRlbSxcbiAgICAgICAgICAgICAgICAgICAgYCR7aXRlbS5sYWJlbH0gTWluaW11bSAke2l0ZW0udmFsaWRhdGlvbnNbaV0uZXhwcmVzc2lvbn0gY2hhcmFjdGVyc2BcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgaXRlbVZhbHVlICYmXG4gICAgICAgICAgICBpdGVtLnZhbGlkYXRpb25zW2ldLnR5cGUgPT0gRVZhbGlkYXRvci5NQVhMRU5HVEggJiZcbiAgICAgICAgICAgIGl0ZW1WYWx1ZS5sZW5ndGggPiBpdGVtLnZhbGlkYXRpb25zW2ldLmV4cHJlc3Npb25cbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGlzVmFsaWQgPVxuICAgICAgICAgICAgaXRlbVZhbHVlICYmIGl0ZW1WYWx1ZS5sZW5ndGggPCBpdGVtLnZhbGlkYXRpb25zW2ldLmV4cHJlc3Npb25cbiAgICAgICAgICAgICAgICA/IHRydWVcbiAgICAgICAgICAgICAgICA6IHRoaXMuc2V0RXJyb3JNZXNzYWdlKFxuICAgICAgICAgICAgICAgICAgICBpdGVtLFxuICAgICAgICAgICAgICAgICAgICBgJHtpdGVtLmxhYmVsfSBNYXhpbXVtICR7aXRlbS52YWxpZGF0aW9uc1tpXS5leHByZXNzaW9ufSBjaGFyYWN0ZXJzYFxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICBpdGVtVmFsdWUgJiZcbiAgICAgICAgICAgIGl0ZW0udmFsaWRhdGlvbnNbaV0udHlwZSA9PSBFVmFsaWRhdG9yLk1JTklNVU0gJiZcbiAgICAgICAgICAgIGlzVmFsaWRcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGlmKGl0ZW0uY29udHJvbCA9PT0gRUZvcm1Db250cm9sLkNBTEVOREFSKXtcbiAgICAgICAgICAgICAgaXNWYWxpZCA9IG1pbk1heFZhbGlkRGF0ZSA9PT0gJ21pbmltdW0nID8gdGhpcy5zZXRFcnJvck1lc3NhZ2UoaXRlbSwgYE1pbmltdW0gJHt2YWxpZH0gJHtpdGVtLnZhbGlkYXRpb25zW2ldLmV4cHJlc3Npb259YCkgOiB0cnVlO1xuICAgICAgICAgICAgfWVsc2UgaWYoaXRlbVZhbHVlIDwgaXRlbS52YWxpZGF0aW9uc1tpXS5leHByZXNzaW9uKXtcbiAgICAgICAgICAgIGlzVmFsaWQgPVxuICAgICAgICAgICAgaXRlbVZhbHVlICYmIGl0ZW1WYWx1ZS5sZW5ndGggPiBpdGVtLnZhbGlkYXRpb25zW2ldLmV4cHJlc3Npb25cbiAgICAgICAgICAgICAgICA/IHRydWVcbiAgICAgICAgICAgICAgICA6IHRoaXMuc2V0RXJyb3JNZXNzYWdlKFxuICAgICAgICAgICAgICAgICAgICBpdGVtLFxuICAgICAgICAgICAgICAgICAgICBgJHtpdGVtLmxhYmVsfSBNaW5pbXVtICR7dmFsaWR9ICR7aXRlbS52YWxpZGF0aW9uc1tpXS5leHByZXNzaW9ufWBcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgIGl0ZW1WYWx1ZSAmJlxuICAgICAgICAgICAgaXRlbS52YWxpZGF0aW9uc1tpXS50eXBlID09IEVWYWxpZGF0b3IuTUFYSU1VTSAmJlxuICAgICAgICAgICAgaXNWYWxpZFxuICAgICAgICAgICkge1xuICAgICAgICAgICAgaWYoaXRlbS5jb250cm9sID09PSBFRm9ybUNvbnRyb2wuQ0FMRU5EQVIpe1xuICAgICAgICAgICAgICBpc1ZhbGlkID0gbWluTWF4VmFsaWREYXRlID09PSAnZ3JlYXRlcicgPyB0aGlzLnNldEVycm9yTWVzc2FnZShpdGVtLCBgTWF4aW11bSAke3ZhbGlkfSAke2l0ZW0udmFsaWRhdGlvbnNbaV0uZXhwcmVzc2lvbn1gKSA6IHRydWU7XG4gICAgICAgICAgICB9ZWxzZSBpZihpdGVtVmFsdWUgPiBpdGVtLnZhbGlkYXRpb25zW2ldLmV4cHJlc3Npb24pe1xuICAgICAgICAgICAgaXNWYWxpZCA9XG4gICAgICAgICAgICBpdGVtVmFsdWUgJiYgaXRlbVZhbHVlLmxlbmd0aCA8IGl0ZW0udmFsaWRhdGlvbnNbaV0uZXhwcmVzc2lvblxuICAgICAgICAgICAgICAgID8gdHJ1ZVxuICAgICAgICAgICAgICAgIDogdGhpcy5zZXRFcnJvck1lc3NhZ2UoXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0sXG4gICAgICAgICAgICAgICAgICAgIGAke2l0ZW0ubGFiZWx9IE1heGltdW0gJHt2YWxpZH0gJHtpdGVtLnZhbGlkYXRpb25zW2ldLmV4cHJlc3Npb259YFxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgaXRlbVZhbHVlICYmXG4gICAgICAgICAgICBpdGVtLnZhbGlkYXRpb25zW2ldLnR5cGUgPT0gRVZhbGlkYXRvci5QQVRURVJOICYmXG4gICAgICAgICAgICAhaXRlbVZhbHVlLm1hdGNoKGl0ZW0udmFsaWRhdGlvbnNbaV0uZXhwcmVzc2lvbilcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGlzVmFsaWQgPVxuICAgICAgICAgICAgaXRlbVZhbHVlICYmIGl0ZW1WYWx1ZS5tYXRjaChpdGVtLnZhbGlkYXRpb25zW2ldLmV4cHJlc3Npb24pXG4gICAgICAgICAgICAgICAgPyB0cnVlXG4gICAgICAgICAgICAgICAgOiB0aGlzLnNldEVycm9yTWVzc2FnZShpdGVtLCBgRW50ZXIgdmFsaWQgJHt2YWxpZH1gKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICBpdGVtVmFsdWUgJiZcbiAgICAgICAgICAgIGl0ZW0udmFsaWRhdGlvbnNbaV0udHlwZSA9PSBFVmFsaWRhdG9yLk5VTUVSSUMgJiZcbiAgICAgICAgICAgICFpdGVtVmFsdWUudG9TdHJpbmcoKS5tYXRjaCgvXigwfFstKCkxLTldXFxkKikkLylcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGlzVmFsaWQgPVxuICAgICAgICAgICAgaXRlbVZhbHVlICYmIGl0ZW1WYWx1ZT8udG9TdHJpbmcoKT8ubWF0Y2goL14oMHxbMS05XVxcZCopJC8pXG4gICAgICAgICAgICAgICAgPyB0cnVlXG4gICAgICAgICAgICAgICAgOiB0aGlzLnNldEVycm9yTWVzc2FnZShpdGVtLCBgRW50ZXIgJHtpdGVtLnZhbGlkYXRpb25zW2ldLnR5cGV9IGZvciAke3ZhbGlkfWApO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgIGl0ZW1WYWx1ZSAmJlxuICAgICAgICAgICAgaXRlbS52YWxpZGF0aW9uc1tpXS50eXBlID09IEVWYWxpZGF0b3IuUEhPTkUgJiZcbiAgICAgICAgICAgICFpdGVtVmFsdWUudG9TdHJpbmcoKS5tYXRjaCgvXig/PS4qWzAtOV0pWy0oKTAtOVxccyt4XSskLylcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGlzVmFsaWQgPVxuICAgICAgICAgICAgaXRlbVZhbHVlICYmIGl0ZW1WYWx1ZS50b1N0cmluZygpLm1hdGNoKC9eKD89LipbMC05XSlbLSgpMC05XFxzK3hdKyQvKVxuICAgICAgICAgICAgICAgID8gdHJ1ZVxuICAgICAgICAgICAgICAgIDogdGhpcy5zZXRFcnJvck1lc3NhZ2UoaXRlbSwgYEVudGVyIHZhbGlkICR7dmFsaWR9YCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgaXRlbVZhbHVlICYmXG4gICAgICAgICAgICBpdGVtLnZhbGlkYXRpb25zW2ldLnR5cGUgPT0gRVZhbGlkYXRvci5ERUNJTUFMICYmXG4gICAgICAgICAgICAhaXRlbVZhbHVlPy50b1N0cmluZygpPy5tYXRjaCgvXigwfFstKCkxLTldXFxkKikoXFwuXFxkKyk/JC8pXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBpc1ZhbGlkID1cbiAgICAgICAgICAgIGl0ZW1WYWx1ZSAmJiBpdGVtVmFsdWUubWF0Y2goL14oMHxbMS05XVxcZCopKFxcLlxcZCspPyQvKVxuICAgICAgICAgICAgICAgID8gdHJ1ZVxuICAgICAgICAgICAgICAgIDogdGhpcy5zZXRFcnJvck1lc3NhZ2UoaXRlbSwgYEVudGVyICR7aXRlbS52YWxpZGF0aW9uc1tpXS50eXBlfSBmb3IgJHt2YWxpZH1gKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICBpdGVtVmFsdWUgJiZcbiAgICAgICAgICAgIGl0ZW0udmFsaWRhdGlvbnNbaV0udHlwZSA9PSBFVmFsaWRhdG9yLkVNQUlMICYmXG4gICAgICAgICAgICAhaXRlbVZhbHVlLm1hdGNoKC9eW2EtekEtWjAtOS5fLV0rQFthLXpBLVowLTkuLV0rXFwuW2EtekEtWl17Miw2fSQvKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgaXNWYWxpZCA9XG4gICAgICAgICAgICBpdGVtVmFsdWUgJiZcbiAgICAgICAgICAgIGl0ZW1WYWx1ZS5tYXRjaCgvXlthLXpBLVowLTkuXy1dK0BbYS16QS1aMC05Li1dK1xcLlthLXpBLVpdezIsNn0kLylcbiAgICAgICAgICAgICAgICA/IHRydWVcbiAgICAgICAgICAgICAgICA6IHRoaXMuc2V0RXJyb3JNZXNzYWdlKGl0ZW0sIGBFbnRlciB2YWxpZCAke3ZhbGlkfWApO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfWVsc2UgaWYoaXRlbVZhbHVlICYmIGl0ZW0udmFsaWRhdGlvbnNbaV0udHlwZT09RVZhbGlkYXRvci5NQVhPUFRJT05TICYmIGl0ZW0udmFsaWRhdGlvbnNbaV0uZXhwcmVzc2lvbil7XG4gICAgICAgICAgICB2YXIgbWF4T3B0aW9ucz1pdGVtLnZhbGlkYXRpb25zW2ldLmV4cHJlc3Npb247XG4gICAgICAgICAgICBpc1ZhbGlkPWl0ZW1WYWx1ZS5sZW5ndGg+bWF4T3B0aW9ucz90aGlzLnNldEVycm9yTWVzc2FnZShpdGVtLCBgTWF4aW11bSB2YWx1ZXMgZm9yICR7dmFsaWR9IGlzICR7bWF4T3B0aW9uc31gKTp0cnVlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGlzVmFsaWQ7XG4gIH1cblxuICBzZXRFcnJvck1lc3NhZ2UoaXRlbTogSUZvcm1GaWVsZCwgZXJyb3JNZXNzYWdlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpdGVtLmVycm9yTWVzc2FnZSA9IGVycm9yTWVzc2FnZTtcbiAgICBpdGVtLmlzdmFsaWQgPSBmYWxzZTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBhZGRGb3JtRmllbGQoZmllbGRJbmZvOiBJRm9ybUZpZWxkKTogSUZvcm1GaWVsZCB7XG4gICAgaWYgKCFmaWVsZEluZm8ubGFiZWwpIHtcbiAgICAgIGZpZWxkSW5mby5sYWJlbCA9IGZpZWxkSW5mby5maWVsZDtcbiAgICB9XG4gICAgY29uc3QgZm9ybUZpZWxkOiBhbnkgPSB7XG4gICAgICBsYWJlbDogZmllbGRJbmZvLmxhYmVsLFxuICAgICAgZmllbGQ6IGZpZWxkSW5mby5maWVsZCxcbiAgICAgIGRpc3BsYXlGaWVsZDogZmllbGRJbmZvLmRpc3BsYXlGaWVsZCxcbiAgICAgIGNvbnRyb2w6IGZpZWxkSW5mby5jb250cm9sLFxuICAgICAgc2hvd09wdGlvbjogZmllbGRJbmZvLnNob3dPcHRpb24sXG4gICAgICBjb2x1bW46IGZpZWxkSW5mby5jb2x1bW4sXG4gICAgICByb3c6IGZpZWxkSW5mby5yb3csXG4gICAgICBtaW51dGVzSW50ZXJ2YWw6IGZpZWxkSW5mby5taW51dGVzSW50ZXJ2YWwsXG4gICAgICB2YWx1ZTogZmllbGRJbmZvLnZhbHVlLFxuICAgICAgZm9ybWF0OiBmaWVsZEluZm8uZm9ybWF0LFxuICAgICAgaGlkZGVuOiBmaWVsZEluZm8uaGlkZGVuLFxuICAgICAgcGVybWlzc2lvbnM6IGZpZWxkSW5mby5wZXJtaXNzaW9ucyxcbiAgICAgIHZhbGlkYXRpb25zOiBmaWVsZEluZm8udmFsaWRhdGlvbnMsXG4gICAgICBpZDogZmllbGRJbmZvLmlkLFxuICAgICAgaHlwZXJsaW5rOiBmaWVsZEluZm8uaHlwZXJsaW5rLFxuICAgICAgZGF0YTogZmllbGRJbmZvLmRhdGEsXG4gICAgICBsb29rdXBDb250cm9sOiBmaWVsZEluZm8ubG9va3VwQ29udHJvbCxcbiAgICAgIGNvbXBvbmVudENvbnRyb2w6IGZpZWxkSW5mby5jb21wb25lbnRDb250cm9sLFxuICAgICAgb3B0aW9uTGFiZWw6IGZpZWxkSW5mby5vcHRpb25MYWJlbCxcbiAgICAgIG9wdGlvblZhbHVlOiBmaWVsZEluZm8ub3B0aW9uVmFsdWUsXG4gICAgICBzYXZlQXNTdHJpbmc6IGZpZWxkSW5mby5zYXZlQXNTdHJpbmcsXG4gICAgICBzaG93QWxsVmFsdWU6IGZpZWxkSW5mby5zaG93QWxsVmFsdWUsXG4gICAgICBvbkNsaWNrOiBmaWVsZEluZm8ub25DbGljayxcbiAgICAgIG9uUmV0dXJuOiBmaWVsZEluZm8ub25SZXR1cm4sXG4gICAgICBvbkZvY3VzT3V0OiBmaWVsZEluZm8ub25Gb2N1c091dCxcbiAgICAgIG9uQ2hhbmdlOiBmaWVsZEluZm8ub25DaGFuZ2UsXG4gICAgICB0YWJsZXM6IGZpZWxkSW5mby50YWJsZXMsXG4gICAgICBkaXNhYmxlZDogZmllbGRJbmZvLmRpc2FibGVkLFxuICAgICAgZGlzYWJsZWRUZXh0OiBmaWVsZEluZm8uZGlzYWJsZWRUZXh0LFxuICAgICAgdGltZU9ubHk6IGZpZWxkSW5mby50aW1lT25seSxcbiAgICAgIGlzUGFzc3dvcmQ6IGZpZWxkSW5mby5pc1Bhc3N3b3JkLFxuICAgICAgdGV4dFR5cGU6IGZpZWxkSW5mby50ZXh0VHlwZSxcbiAgICAgIG1vbnRoT25seTogZmllbGRJbmZvLm1vbnRoT25seSxcbiAgICAgIHNob3dUaW1lOiBmaWVsZEluZm8uc2hvd1RpbWUsIC8vIHRvIHNob3cgdGltZSBhcyB3ZWxsIGluIGNhbGVuZGFyIGZvcm0gZmllbGRcbiAgICAgIGhlaWdodDogZmllbGRJbmZvLmhlaWdodCxcbiAgICAgIHNob3dCb3R0b21Cb3JkZXI6IGZpZWxkSW5mby5zaG93Qm90dG9tQm9yZGVyLFxuICAgICAgYWxsb3dTZWFyY2g6IGZpZWxkSW5mby5hbGxvd1NlYXJjaCxcbiAgICAgIHNlbGVjdE11bHRpcGxlRmlsZXM6IGZpZWxkSW5mby5zZWxlY3RNdWx0aXBsZUZpbGVzLFxuICAgICAgU2V0ZmlsZVR5cGVzOiBmaWVsZEluZm8uU2V0ZmlsZVR5cGVzLFxuICAgICAgaWNvbjogZmllbGRJbmZvLmljb24sXG4gICAgICBjb2xvcjogZmllbGRJbmZvLmNvbG9yLFxuICAgICAgY2FyZDogZmllbGRJbmZvLmNhcmQsXG4gICAgICB1bmlxdWVLZXk6IGZpZWxkSW5mby51bmlxdWVLZXksXG4gICAgICBwYXRoU3lzdGVtQ29uZmlnOiBmaWVsZEluZm8ucGF0aFN5c3RlbUNvbmZpZyxcbiAgICAgIGF6dXJlQ29udGFpbmVyOiBmaWVsZEluZm8uYXp1cmVDb250YWluZXIsXG4gICAgICBjbGFzczogZmllbGRJbmZvLmNsYXNzXG4gICAgfTtcblxuICAgIHJldHVybiBmb3JtRmllbGQ7XG4gIH1cblxuICBhZGRDaGVja2JveChmaWVsZEluZm86IEFkZEZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLkNIRUNLQk9YO1xuICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICB9XG5cbiAgYWRkVGV4dGJveChmaWVsZEluZm86IEFkZEZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLklOUFVUO1xuICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICB9XG5cbiAgYWRkRGlzcGxheUZpZWxkKGZpZWxkSW5mbzogQWRkRm9ybUZpZWxkKTogSUZvcm1GaWVsZCB7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuSU5QVVQ7XG4gICAgZmllbGRJbmZvLmRpc2FibGVkID0gdHJ1ZTtcbiAgICBmaWVsZEluZm8uc2hvd0JvdHRvbUJvcmRlciA9IHRydWU7XG4gICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gIH1cblxuICBhZGROdW1lcmljVGV4dGJveChmaWVsZEluZm86IEFkZEZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLk5VTUVSSUM7XG4gICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gIH1cblxuICBhZGRTcGFjZUZpZWxkKGZpZWxkSW5mbzogQWRkRm9ybUZpZWxkKTogSUZvcm1GaWVsZHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5TUEFDRVI7XG4gICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gIH1cblxuICBhZGROZXdMaW5lKGZpZWxkSW5mbzogQWRkRm9ybUZpZWxkKTogSUZvcm1GaWVsZHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5CUkVBS19MSU5FO1xuICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICB9XG5cbiAgYWRkVGV4dEFyZWEoZmllbGRJbmZvOiBBZGRGb3JtRmllbGQpOiBJRm9ybUZpZWxkIHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5URVhUQVJFQTtcbiAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgfVxuICBcbiAgIC8vIEFkZGluZyBSZXBvcnQgYnV0dG9uIGZvciBEeW5hbWljRm9ybVxuICAgYWRkUmVwb3J0QnRuKGZpZWxkSW5mbzogSVJlcG9ydEJ0bikge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLlJFUE9SVDtcbiAgICByZXR1cm4gZmllbGRJbmZvO1xuICB9XG5cbiAgYWRkTm90ZUZpZWxkKGZpZWxkSW5mbzogQWRkRm9ybUZpZWxkKTogSUZvcm1GaWVsZCB7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuTk9URV9GSUVMRDtcbiAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgfVxuICBhZGRTZWxlY3RCdXR0b25zKGZpZWxkSW5mbzogQWRkRm9ybUZpZWxkKTogSUZvcm1GaWVsZCB7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuU0VMRUNUQlVUVE9OO1xuICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICB9XG4gIGFkZEh5cGVybGluayhmaWVsZEluZm86IEFkZEZvcm1GaWVsZCkge1xuICAgIGlmIChmaWVsZEluZm8uaHlwZXJsaW5rICYmIGZpZWxkSW5mby5oeXBlcmxpbmsuY29tcG9uZW50KSB7XG4gICAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5IWVBFUkxJTks7XG4gICAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuaHlwZXJsaW5rU2VydmljZS5idWlsZFVybChcbiAgICAgICAgZmllbGRJbmZvPy5oeXBlcmxpbms/LmxpbmtJZFxuICAgICAgKS50aGVuKChyZXM6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCBwYXJhbXMgPSBmaWVsZEluZm8/Lmh5cGVybGluaz8ucGFyYW1zO1xuICAgICAgICBsZXQgb3JpZ2luYWxVcmwgPSB0aGlzLmh5cGVybGlua1NlcnZpY2Uuc2V0VXJsKHBhcmFtcywgcmVzWzBdKTtcbiAgICAgICAgY29uc3QgbGluayA9IG9yaWdpbmFsVXJsO1xuICAgICAgICBpZiAob3JpZ2luYWxVcmwgJiYgcGFyYW1zKSB7XG4gICAgICAgICAgT2JqZWN0LmtleXMocGFyYW1zKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgICAgIGlmIChvcmlnaW5hbFVybC5pbmNsdWRlcygne3snICsga2V5ICsgJ319JykgJiYgcGFyYW1zW2tleV0gJiYgIXBhcmFtc1trZXldLnRvU3RyaW5nKCk/LmluY2x1ZGVzKCd7JykpIHtcbiAgICAgICAgICAgICAgb3JpZ2luYWxVcmwgPSBvcmlnaW5hbFVybC5yZXBsYWNlKCd7eycgKyBrZXkgKyAnfX0nLCBwYXJhbXNba2V5XSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICAgIGlmIChmaWVsZEluZm8uaHlwZXJsaW5rPy5saW5rSWQgJiYgZmllbGRJbmZvLmh5cGVybGluay5saW5rSWQubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGZpZWxkSW5mby5oeXBlcmxpbmsubGluayA9IG9yaWdpbmFsVXJsO1xuICAgICAgICB9XG4gICAgICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLkhZUEVSTElOSztcbiAgICAgICAgbGV0IG9iajogYW55ID0gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgICAgICAgb2JqWydvcmlnbmFsTGluayddID0gbGluaztcbiAgICAgICAgcmV0dXJuIG9iajtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGFkZENhbGVuZGFyKGZpZWxkSW5mbzogQWRkRm9ybUZpZWxkKTogSUZvcm1GaWVsZCB7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuQ0FMRU5EQVI7XG4gICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gIH1cblxuICAvLyBhZGQgQXV0b0NvbXBsZXRlIGZvciBGb3JtXG4gIGFkZEF1dG9Db21wbGV0ZShmaWVsZEluZm86IEFkZEZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLkFVVE9DT01QTEVURTtcbiAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgfVxuXG4gIC8vIFNlYXJjaCBBdXRvQ29tcGxldGUgRGF0YSBmb3IgZm9ybVxuICBnZXRBdXRvQ29tcGxldGVEYXRhKGZvcm1GaWVsZD86IGFueSwgdW5pcXVlS2V5Pzogc3RyaW5nLCBmaWx0ZXJzPzogYW55W10sIHNlYXJjaDogc3RyaW5nID0gJycpOiBhbnkge1xuICAgIHRoaXMucmVxdWVzdFNlcnZpY2UuZ2V0PGFueVtdLCBhbnk+KCcvRGF0YS9GZXRjaCcsIHsgdW5pcXVlS2V5OiB1bmlxdWVLZXksIGZpbHRlcnN9KS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpPT57XG4gICAgICBpZihzZWFyY2gpe1xuICAgICAgIGxldCBleGlzdEluUmVjb3JkOiBib29sZWFuID0gcmVzcG9uc2UucmVjb3Jkcy5zb21lKChyZWNvcmQ6IGFueSk9PiByZWNvcmRbZm9ybUZpZWxkLmRpc3BsYXlGaWVsZF0gJiYgcmVjb3JkW2Zvcm1GaWVsZC5kaXNwbGF5RmllbGRdPy50b1N0cmluZygpPy50b0xvd2VyQ2FzZSgpID09PSBzZWFyY2g/LnRvTG93ZXJDYXNlKCkpO1xuICAgICAgICBpZighZXhpc3RJblJlY29yZCl7XG4gICAgICAgICAgcmVzcG9uc2UucmVjb3Jkcy51bnNoaWZ0ICh7W2Zvcm1GaWVsZC5kaXNwbGF5RmllbGRdOiBzZWFyY2h9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZm9ybUZpZWxkLmRhdGEgPSBbLi4ucmVzcG9uc2UucmVjb3Jkc107XG4gICAgfSk7XG4gIH1cblxuICBhZGREcm9wZG93bihmaWVsZEluZm86IEFkZEZvcm1GaWVsZCwgZHJvcERvd25Qcm9wPzogSURyb3BEb3duUmVxdWVzdCk6IGFueSB7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuRFJPUERPV047XG4gICAgaWYgKGRyb3BEb3duUHJvcCkge1xuICAgICAgbGV0IHVuaXF1ZUtleSA9IGRyb3BEb3duUHJvcC51bmlxdWVLZXk7XG4gICAgICBsZXQgdmFsdWVQcm9wID0gZHJvcERvd25Qcm9wLnZhbHVlUHJvcDtcbiAgICAgIGxldCBsYWJlbFByb3AgPSBkcm9wRG93blByb3AubGFiZWxQcm9wO1xuICAgICAgbGV0IGZpbHRlcnM6IElTZXRGaWx0ZXJbXSA9IGRyb3BEb3duUHJvcC5maWx0ZXJzICYmIGRyb3BEb3duUHJvcC5maWx0ZXJzLmxlbmd0aCA+IDAgPyBkcm9wRG93blByb3AuZmlsdGVycyA6IFtdO1xuICAgICAgaWYgKHVuaXF1ZUtleSAmJiB2YWx1ZVByb3AgJiYgbGFiZWxQcm9wKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldERyb3Bkb3duRGF0YShmaWVsZEluZm8sIHVuaXF1ZUtleSwgdmFsdWVQcm9wLCBsYWJlbFByb3AsIGZpbHRlcnMpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgICB9XG4gIH1cblxuICBnZXREcm9wZG93bkRhdGEoZmllbGRJbmZvOiBBZGRGb3JtRmllbGQsIHVuaXF1ZUtleTogc3RyaW5nLCB2YWx1ZVByb3A6IHN0cmluZywgbGFiZWxQcm9wOiBzdHJpbmcsIGZpbHRlcnM6IGFueVtdKSB7XG4gICAgcmV0dXJuIHRoaXMuZHJvcGRvd25TZXJ2aWNlXG4gICAgICAuc2V0RHJvcERvd25MaXN0KFxuICAgICAgICB1bmlxdWVLZXksXG4gICAgICAgIHZhbHVlUHJvcCxcbiAgICAgICAgbGFiZWxQcm9wLFxuICAgICAgICBmaWx0ZXJzXG4gICAgICApXG4gICAgICAudGhlbigocmVzOiBhbnkpID0+IHtcbiAgICAgICAgZmllbGRJbmZvLmRhdGEgPSByZXM7XG4gICAgICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZXJyb3I6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5hcGlFcnJvcihlcnJvcik7XG4gICAgICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICAgICAgfSk7XG4gIH1cblxuICBhZGRMb29rVXAoZmllbGRJbmZvOiBBZGRGb3JtRmllbGQpOiBJRm9ybUZpZWxkIHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5MT09LVVBfSU5QVVQ7XG4gICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gIH1cblxuICBhZGREaWFsb2coZmllbGRJbmZvOiBBZGRGb3JtRmllbGQpOiBJRm9ybUZpZWxkIHtcbiAgICByZXR1cm4gdGhpcy5hZGRMb29rVXAoZmllbGRJbmZvKTtcbiAgfVxuXG4gIGFkZENvbXBvbmVudChmaWVsZEluZm86IEFkZEZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLkNPTVBPTkVOVDtcbiAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgfVxuXG4gIGFkZEhlYWRlcihmaWVsZEluZm86IElGb3JtRmllbGQpOiBJRm9ybUZpZWxkIHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5TRUNUSU9OX0hFQURFUjtcbiAgICBmaWVsZEluZm8uY2xhc3MgPSAnZm9ybS1oZWFkZXInO1xuICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICB9XG5cbiAgYWRkTXVsdGlTZWxlY3QoZmllbGRJbmZvOiBJRm9ybUZpZWxkLCBkcm9wRG93blByb3A/OiBJRHJvcERvd25SZXF1ZXN0KTogYW55IHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5NVUxUSVNFTEVDVDtcbiAgICBpZiAoZHJvcERvd25Qcm9wKSB7XG4gICAgICBsZXQgdW5pcXVlS2V5ID0gZHJvcERvd25Qcm9wLnVuaXF1ZUtleTtcbiAgICAgIGxldCB2YWx1ZVByb3AgPSBkcm9wRG93blByb3AudmFsdWVQcm9wO1xuICAgICAgbGV0IGxhYmVsUHJvcCA9IGRyb3BEb3duUHJvcC5sYWJlbFByb3A7XG4gICAgICBsZXQgZmlsdGVyczogSVNldEZpbHRlcltdID0gZHJvcERvd25Qcm9wLmZpbHRlcnMgJiYgZHJvcERvd25Qcm9wLmZpbHRlcnMubGVuZ3RoID4gMCA/IGRyb3BEb3duUHJvcC5maWx0ZXJzIDogW107XG4gICAgICBpZiAodW5pcXVlS2V5ICYmIHZhbHVlUHJvcCAmJiBsYWJlbFByb3ApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RHJvcGRvd25EYXRhKGZpZWxkSW5mbywgdW5pcXVlS2V5LCB2YWx1ZVByb3AsIGxhYmVsUHJvcCwgZmlsdGVycyk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGZpZWxkSW5mby5vcHRpb25MYWJlbCA9IGZpZWxkSW5mby5vcHRpb25MYWJlbCA/IGZpZWxkSW5mby5vcHRpb25MYWJlbCA6ICdsYWJlbCc7XG4gICAgICBmaWVsZEluZm8ub3B0aW9uVmFsdWUgPSBmaWVsZEluZm8ub3B0aW9uVmFsdWUgPyBmaWVsZEluZm8ub3B0aW9uVmFsdWUgOiAndmFsdWUnO1xuICAgICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gICAgfVxuICB9XG5cbiAgYWRkRmlsZVVwbG9hZChmaWVsZEluZm86IElGb3JtRmllbGQpOiBJRm9ybUZpZWxkIHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5GSUxFX1VQTE9BRDtcbiAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgfVxuXG4gIGFkZERpc3BsYXlGaWxlKGZpZWxkSW5mbzogSUZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLkRJU1BMQVlfRklMRTtcbiAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgfVxuXG4gIC8vIEFkZGluZyBPbkNsaWNrIEJ1dHRvbiBGdW5jdGlvbiBmb3IgRHluYW1pY0Zvcm1cbiAgYWRkQnV0dG9uKGZpZWxkSW5mbzogSUZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLkFERF9CVVRUT047XG4gICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gIH1cblxuICAvLyBBZGRpbmcgU3dpdGNoIEZ1bmN0aW9uIGZvciBEeW5hbWljRm9ybVxuICBhZGRTd2l0Y2goZmllbGRJbmZvOiBJRm9ybUZpZWxkKTogSUZvcm1GaWVsZCB7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuU1dJVENIO1xuICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICB9XG5cbiAgLy8gc3RhcnQgYWRkIG5ldyBjYXJkIGZ1bmN0aW9uYWxpdHlcbiAgYWRkQ2FyZChmaWVsZEluZm86IElGb3JtRmllbGQsIGNhcmREYXRhPzogSUxpc3RGaWx0ZXIpOiBJRm9ybUZpZWxkIHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5DQVJEO1xuICAgIGlmIChjYXJkRGF0YSAmJiBjYXJkRGF0YS51bmlxdWVLZXkpIHtcbiAgICAgIGlmKGNhcmREYXRhLnNvcnRzPy5sZW5ndGggPiAwKXtcbiAgICAgICAgY2FyZERhdGEuc29ydHMuZm9yRWFjaCgocmVzKSA9PntcbiAgICAgICAgcmVzLmRpcmVjdGlvbiA9IHJlcy5kaXJlY3Rpb24gPyByZXMuZGlyZWN0aW9uIDogRUdyaWRTb3J0RGlyZWN0aW9uLkFTQztcbiAgICAgICAgfSk7XG4gICAgICB9ICAgXG4gICAgICByZXR1cm4gdGhpcy5nZXRDYXJkRGF0YShmaWVsZEluZm8sIGNhcmREYXRhLnVuaXF1ZUtleSwgY2FyZERhdGEuZmlsdGVycywgY2FyZERhdGEuc29ydHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgICB9XG4gIH1cblxuICBnZXRDYXJkRGF0YShmaWVsZEluZm86IGFueSwgdW5pcXVlS2V5OiBzdHJpbmcsIGZpbHRlcnM6IGFueVtdID0gW10sIHNvcnRzOiBhbnlbXSA9IFtdKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5nZXRDYXJkTGlzdCh1bmlxdWVLZXksIGZpbHRlcnMsIHNvcnRzKVxuICAgICAgLnRoZW4oKHJlczogYW55KSA9PiB7XG4gICAgICAgIGZpZWxkSW5mby5jYXJkLmRhdGEgPSByZXMucmVjb3JkcztcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5hcGlFcnJvcihlcnJvcik7XG4gICAgICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICAgICAgfSk7XG4gIH1cblxuICAvLyBsb2FkIGNvbXBvbmVudCBvbiBmb3JtXG4gIHNldEFkZENvbXBvbmVudERhdGEoeyBmb3JtU2VjdGlvbnMgfTogSUR5bmFtaWNGb3JtLCBpZDogc3RyaW5nLCB2YWx1ZTogYW55LCBsb2FkQ29tcG9uZW50OiBib29sZWFuID0gdHJ1ZSkge1xuICAgIGZvcm1TZWN0aW9ucz8uZm9yRWFjaCgoc2VjdGlvbikgPT4ge1xuICAgICAgc2VjdGlvbi5maWVsZHMuZm9yRWFjaCgoZmllbGQ6IGFueSkgPT4ge1xuICAgICAgICBpZiAoZmllbGQuY29udHJvbCA9PT0gRUZvcm1Db250cm9sLkNPTVBPTkVOVCAmJiBmaWVsZC5jb21wb25lbnRDb250cm9sICYmIGZpZWxkLmNvbXBvbmVudENvbnRyb2w/LmlkID09PSBpZCkge1xuICAgICAgICAgIGxldCBrZXlzID0gT2JqZWN0LmtleXModmFsdWUpO1xuICAgICAgICAgIGtleXMuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgICAgICBmaWVsZC5jb21wb25lbnRDb250cm9sLmRhdGEgPSB7IC4uLmZpZWxkLmNvbXBvbmVudENvbnRyb2w/LmRhdGEsIFtrZXldOiB2YWx1ZVtrZXldIH07XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdXRpbGl0aWVzLmNoYW5nZUR5bmFtaWNGb3JtU3RhdGUoaWQsIGZpZWxkLmNvbXBvbmVudENvbnRyb2wuZGF0YSwgbG9hZENvbXBvbmVudCk7XG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIHNldCBmb3JtZmllbGQgdmFsdWVcbiAgc2V0Rm9ybUZpZWxkVmFsdWUoXG4gICAgeyBmb3JtU2VjdGlvbnMgfTogSUR5bmFtaWNGb3JtLFxuICAgIGZpZWxkOiBzdHJpbmcsXG4gICAgdmFsdWU6IGFueSxcbiAgICBkaXNwbGF5VGV4dDogc3RyaW5nID0gJydcbiAgKSB7XG4gICAgZm9ybVNlY3Rpb25zPy5mb3JFYWNoKChzZWN0aW9uKSA9PiB7XG4gICAgICBzZWN0aW9uLmZpZWxkcy5mb3JFYWNoKChmb3JtRmllbGQpID0+IHtcbiAgICAgICAgaWYgKGZvcm1GaWVsZC5maWVsZD8udG9Mb3dlckNhc2UoKSA9PT0gZmllbGQ/LnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgICAgICBpZiAoZGlzcGxheVRleHQgJiYgZGlzcGxheVRleHQubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgZm9ybUZpZWxkLnZhbHVlID0geyB0ZXh0OiBkaXNwbGF5VGV4dCwgdmFsdWU6IHZhbHVlIH07XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZvcm1GaWVsZC52YWx1ZSA9IHZhbHVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvLyBzZXQgZm9ybWZpZWxkIHByb3BlcnR5XG4gIHNldEZvcm1GaWVsZFByb3AoXG4gICAgeyBmb3JtU2VjdGlvbnMgfTogSUR5bmFtaWNGb3JtLFxuICAgIGZpZWxkOiBzdHJpbmcsXG4gICAgcHJvcHM6IElEaWN0aW9uYXJ5W11cbiAgKSB7XG4gICAgcmV0dXJuIGZvcm1TZWN0aW9ucz8ubWFwKChzZWN0aW9uOiBhbnkpID0+IHtcbiAgICAgIHJldHVybiBzZWN0aW9uLmZpZWxkcy5tYXAoKGZvcm1GaWVsZDogYW55KTogYW55ID0+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIChmb3JtRmllbGQuZmllbGQ/LnRvTG93ZXJDYXNlKCkgPT09IGZpZWxkPy50b0xvd2VyQ2FzZSgpKSB8fFxuICAgICAgICAgIChmb3JtRmllbGQubGFiZWwgJiYgZm9ybUZpZWxkLmxhYmVsLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PT0gZmllbGQ/LnRvTG93ZXJDYXNlKCkpXG4gICAgICAgICkge1xuICAgICAgICAgIHJldHVybiBwcm9wcy5tYXAoKHByb3A6IGFueSkgPT4ge1xuICAgICAgICAgICAgaWYgKGZvcm1GaWVsZC5oYXNPd25Qcm9wZXJ0eShwcm9wLm5hbWUpKSB7XG4gICAgICAgICAgICAgIGlmKHByb3AubmFtZSA9PT0gJ2xhYmVsJyAmJiB0eXBlb2YgZm9ybUZpZWxkLmxhYmVsID09PSAnb2JqZWN0JyAmJiAhcHJvcC5vdmVycmlkZSl7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChmb3JtRmllbGRbcHJvcC5uYW1lXS5uYW1lID0gcHJvcC52YWx1ZSk7XG4gICAgICAgICAgICAgIH1lbHNle1xuICAgICAgICAgICAgICAgIHJldHVybiAoZm9ybUZpZWxkW3Byb3AubmFtZV0gPSBwcm9wLnZhbHVlKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZXtcbiAgICAgICAgICAgICAgcmV0dXJuIChmb3JtRmllbGRbcHJvcC5uYW1lXSA9IHByb3AudmFsdWUpO1xuICAgICAgICAgICAgICBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBnZXRDYXJkTGlzdCh1bmlxdWVLZXk6IHN0cmluZywgZmlsdGVyczogYW55W10gPSBbXSwgc29ydHM6IGFueVtdID0gW10pIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdGhpcy5yZXF1ZXN0U2VydmljZVxuICAgICAgICAuZ2V0PGFueVtdLCBhbnk+KCcvRGF0YS9GZXRjaCcsIHsgdW5pcXVlS2V5OiB1bmlxdWVLZXksIGZpbHRlcnMsIHNvcnRzIH0pXG4gICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGlmIChyZXNwb25zZSkge1xuICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZShyZXNwb25zZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZShbXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICAoeyBlcnJvciB9OiBhbnkpID0+IHtcbiAgICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH0pO1xuICB9XG4gIC8vIEVuZCBhZGQgbmV3IGNhcmQgZnVuY3Rpb25hbGl0eVxuXG59XG4iXX0=
@@ -276,6 +276,7 @@ var EValidator;
276
276
  EValidator["DECIMAL"] = "decimal";
277
277
  EValidator["EMAIL"] = "email";
278
278
  EValidator["PHONE"] = "phone";
279
+ EValidator["MAXOPTIONS"] = "maxOptions";
279
280
  })(EValidator || (EValidator = {}));
280
281
  var EFormControl;
281
282
  (function (EFormControl) {
@@ -1945,7 +1946,11 @@ class FormService {
1945
1946
  let isValid = true;
1946
1947
  formFields.map((item) => {
1947
1948
  if (item.validations && !item.disabled) {
1948
- let itemValue = item.control === EFormControl.LOOKUP_INPUT && item.value && typeof (item.value) === 'object' ? item.value.value : item.value;
1949
+ let itemValue = item.control === EFormControl.LOOKUP_INPUT &&
1950
+ item.value &&
1951
+ typeof item.value === 'object'
1952
+ ? item.value.value
1953
+ : item.value;
1949
1954
  // if(item.control === EFormControl.LOOKUP_INPUT && item.value && typeof(item.value) === 'object'){
1950
1955
  // item.value = item.value.value;
1951
1956
  // }
@@ -2055,6 +2060,11 @@ class FormService {
2055
2060
  : this.setErrorMessage(item, `Enter valid ${valid}`);
2056
2061
  break;
2057
2062
  }
2063
+ else if (itemValue && item.validations[i].type == EValidator.MAXOPTIONS && item.validations[i].expression) {
2064
+ var maxOptions = item.validations[i].expression;
2065
+ isValid = itemValue.length > maxOptions ? this.setErrorMessage(item, `Maximum values for ${valid} is ${maxOptions}`) : true;
2066
+ break;
2067
+ }
2058
2068
  }
2059
2069
  }
2060
2070
  });