@churchillliving/se-ui-toolkit 6.53.597 → 6.53.598

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.
@@ -322,11 +322,22 @@ export class FormService {
322
322
  fieldInfo.class = 'form-header';
323
323
  return this.addFormField(fieldInfo);
324
324
  }
325
- addMultiSelect(fieldInfo) {
325
+ addMultiSelect(fieldInfo, dropDownProp) {
326
326
  fieldInfo.control = EFormControl.MULTISELECT;
327
- fieldInfo.optionLabel = fieldInfo.optionLabel ? fieldInfo.optionLabel : 'label';
328
- fieldInfo.optionValue = fieldInfo.optionValue ? fieldInfo.optionValue : 'value';
329
- return this.addFormField(fieldInfo);
327
+ if (dropDownProp) {
328
+ let uniqueKey = dropDownProp.uniqueKey;
329
+ let valueProp = dropDownProp.valueProp;
330
+ let labelProp = dropDownProp.labelProp;
331
+ let filters = dropDownProp.filters && dropDownProp.filters.length > 0 ? dropDownProp.filters : [];
332
+ if (uniqueKey && valueProp && labelProp) {
333
+ return this.getDropdownData(fieldInfo, uniqueKey, valueProp, labelProp, filters);
334
+ }
335
+ }
336
+ else {
337
+ fieldInfo.optionLabel = fieldInfo.optionLabel ? fieldInfo.optionLabel : 'label';
338
+ fieldInfo.optionValue = fieldInfo.optionValue ? fieldInfo.optionValue : 'value';
339
+ return this.addFormField(fieldInfo);
340
+ }
330
341
  }
331
342
  addFileUpload(fieldInfo) {
332
343
  fieldInfo.control = EFormControl.FILE_UPLOAD;
@@ -450,4 +461,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImpor
450
461
  providedIn: 'root',
451
462
  }]
452
463
  }], ctorParameters: function () { return [{ type: i1.HyperlinkService }, { type: i2.DropdownService }, { type: i3.AlertService }, { type: i4.RequestService }]; } });
453
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2UtdWktdG9vbGtpdC9zcmMvbGliL3NlcnZpY2VzL2Zvcm0uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFDTCxVQUFVLEVBRVYsWUFBWSxHQU9iLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFFLGtCQUFrQixFQUFhLE1BQU0sc0JBQXNCLENBQUM7QUFLckUsT0FBTyxLQUFLLFNBQVMsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7O0FBTWpELE1BQU0sT0FBTyxXQUFXO0lBRXRCLFlBQ1UsZ0JBQWtDLEVBQ2xDLGVBQWdDLEVBQ2hDLFlBQTBCLEVBQzFCLGNBQThCO1FBSDlCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUxqQyxvQkFBZSxHQUFXLEtBQUssQ0FBQztJQU1uQyxDQUFDO0lBRUwsYUFBYSxDQUFDLFVBQXdCO1FBQ3BDLElBQUksT0FBTyxHQUFZLElBQUksQ0FBQztRQUU1QixVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBZ0IsRUFBRSxFQUFFO1lBQ2xDLElBQUksSUFBSSxDQUFDLFdBQVcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7Z0JBQ3RDLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLEtBQUssWUFBWSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFLLE9BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENB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RTtnQkFDaEIsSUFBSSxRQUFRLEVBQUU7b0JBQ1osT0FBTyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7aUJBQzFCO3FCQUFNO29CQUNMLE9BQU8sT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2lCQUNwQjtZQUNILENBQUMsRUFDRCxDQUFDLEVBQUUsS0FBSyxFQUFPLEVBQUUsRUFBRTtnQkFDakIsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2hCLENBQUMsQ0FDRixDQUFDO1FBQ04sQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO2lJQTNmVSxXQUFXO3FJQUFYLFdBQVcsY0FGVixNQUFNOzsyRkFFUCxXQUFXO2tCQUh2QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEVWYWxpZGF0b3IsXG4gIElGb3JtRmllbGQsXG4gIEVGb3JtQ29udHJvbCxcbiAgQWRkRm9ybUZpZWxkLFxuICBJU2V0RmlsdGVyLFxuICBJRHJvcERvd25SZXF1ZXN0LFxuICBJTGlzdEZpbHRlcixcbiAgSVJlcG9ydEJ0bixcbiAgSUR5bmFtaWNGb3JtLFxufSBmcm9tICcuLi9tb2RlbHMvZm9ybS5tb2RlbCc7XG5pbXBvcnQgeyBFR3JpZFNvcnREaXJlY3Rpb24sIElHcmlkU29ydCB9IGZyb20gJy4uL21vZGVscy9ncmlkLm1vZGVsJztcbmltcG9ydCB7IEh5cGVybGlua1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9oeXBlcmxpbmsuc2VydmljZSc7XG5pbXBvcnQgeyBBbGVydFNlcnZpY2UgfSBmcm9tICcuL2FsZXJ0LnNlcnZpY2UnO1xuaW1wb3J0IHsgRHJvcGRvd25TZXJ2aWNlIH0gZnJvbSAnLi9kcm9wZG93bi5zZXJ2aWNlJztcbmltcG9ydCB7IFJlcXVlc3RTZXJ2aWNlIH0gZnJvbSAnLi9yZXF1ZXN0LnNlcnZpY2UnO1xuaW1wb3J0ICogYXMgdXRpbGl0aWVzIGZyb20gJy4vdXRpbGl0aWVzLnNlcnZpY2UnO1xuaW1wb3J0IHsgSURpY3Rpb25hcnkgfSBmcm9tICcuLi9tb2RlbHMvY29tbW9uLm1vZGVsJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1TZXJ2aWNlIHtcbiAgcHVibGljIGZpZWxkRm9jdXNlZE91dDpib29sZWFuID0gZmFsc2U7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaHlwZXJsaW5rU2VydmljZTogSHlwZXJsaW5rU2VydmljZSxcbiAgICBwcml2YXRlIGRyb3Bkb3duU2VydmljZTogRHJvcGRvd25TZXJ2aWNlLFxuICAgIHByaXZhdGUgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZXF1ZXN0U2VydmljZTogUmVxdWVzdFNlcnZpY2VcbiAgKSB7IH1cblxuICBjaGVja1ZhbGlkaXR5KGZvcm1GaWVsZHM6IElGb3JtRmllbGRbXSk6IGJvb2xlYW4ge1xuICAgIGxldCBpc1ZhbGlkOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIGZvcm1GaWVsZHMubWFwKChpdGVtOiBJRm9ybUZpZWxkKSA9PiB7XG4gICAgICBpZiAoaXRlbS52YWxpZGF0aW9ucyAmJiAhaXRlbS5kaXNhYmxlZCkge1xuICAgICAgICBsZXQgaXRlbVZhbHVlID0gaXRlbS5jb250cm9sID09PSBFRm9ybUNvbnRyb2wuTE9PS1VQX0lOUFVUICYmIGl0ZW0udmFsdWUgICYmIHR5cGVvZihpdGVtLnZhbHVlKSA9PT0gJ29iamVjdCcgPyBpdGVtLnZhbHVlLnZhbHVlIDogaXRlbS52YWx1ZVxuICAgICAgICAvLyBpZihpdGVtLmNvbnRyb2wgPT09IEVGb3JtQ29udHJvbC5MT09LVVBfSU5QVVQgJiYgaXRlbS52YWx1ZSAgJiYgdHlwZW9mKGl0ZW0udmFsdWUpID09PSAnb2JqZWN0Jyl7XG4gICAgICAgIC8vICAgaXRlbS52YWx1ZSA9IGl0ZW0udmFsdWUudmFsdWU7XG4gICAgICAgIC8vICB9XG4gICAgICAgIGl0ZW0uZXJyb3JNZXNzYWdlID0gJyc7XG4gICAgICAgIGl0ZW0uaXN2YWxpZCA9IHRydWU7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlbS52YWxpZGF0aW9ucy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGNvbnN0IG1pbk1heFZhbGlkRGF0ZSA9IHV0aWxpdGllcy5jYWxlbmRlck1pbk1heFZhbHVlKGl0ZW0sIGl0ZW1WYWx1ZSwgaSk7XG4gICAgICAgICAgY29uc3QgdmFsaWQgPVxuICAgICAgICAgICAgaXRlbS52YWxpZGF0aW9ucyAmJiB0eXBlb2YgaXRlbS5sYWJlbCA9PT0gJ29iamVjdCdcbiAgICAgICAgICAgICAgPyBpdGVtLmxhYmVsLm5hbWVcbiAgICAgICAgICAgICAgOiBpdGVtLmxhYmVsO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGl0ZW0udmFsaWRhdGlvbnNbaV0udHlwZSA9PSBFVmFsaWRhdG9yLlJFUVVJUkVEICYmXG4gICAgICAgICAgICAhaXRlbVZhbHVlICYmXG4gICAgICAgICAgICAhaXRlbS5oaWRkZW4gJiZcbiAgICAgICAgICAgIHZhbGlkXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBpc1ZhbGlkID0gaXRlbVZhbHVlXG4gICAgICAgICAgICAgID8gdHJ1ZVxuICAgICAgICAgICAgICA6IHRoaXMuc2V0RXJyb3JNZXNzYWdlKGl0ZW0sIGAke3ZhbGlkfSBpcyByZXF1aXJlZGApO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgIGl0ZW1WYWx1ZSAmJlxuICAgICAgICAgICAgaXRlbS52YWxpZGF0aW9uc1tpXS50eXBlID09IEVWYWxpZGF0b3IuTUlOTEVOR1RIICYmXG4gICAgICAgICAgICBpdGVtVmFsdWUubGVuZ3RoIDwgaXRlbS52YWxpZGF0aW9uc1tpXS5leHByZXNzaW9uXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBpc1ZhbGlkID1cbiAgICAgICAgICAgIGl0ZW1WYWx1ZSAmJiBpdGVtVmFsdWUubGVuZ3RoID4gaXRlbS52YWxpZGF0aW9uc1tpXS5leHByZXNzaW9uXG4gICAgICAgICAgICAgICAgPyB0cnVlXG4gICAgICAgICAgICAgICAgOiB0aGlzLnNldEVycm9yTWVzc2FnZShcbiAgICAgICAgICAgICAgICAgICAgaXRlbSxcbiAgICAgICAgICAgICAgICAgICAgYCR7aXRlbS5sYWJlbH0gTWluaW11bSAke2l0ZW0udmFsaWRhdGlvbnNbaV0uZXhwcmVzc2lvbn0gY2hhcmFjdGVyc2BcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgaXRlbVZhbHVlICYmXG4gICAgICAgICAgICBpdGVtLnZhbGlkYXRpb25zW2ldLnR5cGUgPT0gRVZhbGlkYXRvci5NQVhMRU5HVEggJiZcbiAgICAgICAgICAgIGl0ZW1WYWx1ZS5sZW5ndGggPiBpdGVtLnZhbGlkYXRpb25zW2ldLmV4cHJlc3Npb25cbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGlzVmFsaWQgPVxuICAgICAgICAgICAgaXRlbVZhbHVlICYmIGl0ZW1WYWx1ZS5sZW5ndGggPCBpdGVtLnZhbGlkYXRpb25zW2ldLmV4cHJlc3Npb25cbiAgICAgICAgICAgICAgICA/IHRydWVcbiAgICAgICAgICAgICAgICA6IHRoaXMuc2V0RXJyb3JNZXNzYWdlKFxuICAgICAgICAgICAgICAgICAgICBpdGVtLFxuICAgICAgICAgICAgICAgICAgICBgJHtpdGVtLmxhYmVsfSBNYXhpbXVtICR7aXRlbS52YWxpZGF0aW9uc1tpXS5leHByZXNzaW9ufSBjaGFyYWN0ZXJzYFxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICBpdGVtVmFsdWUgJiZcbiAgICAgICAgICAgIGl0ZW0udmFsaWRhdGlvbnNbaV0udHlwZSA9PSBFVmFsaWRhdG9yLk1JTklNVU0gJiZcbiAgICAgICAgICAgIGlzVmFsaWRcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGlmKGl0ZW0uY29udHJvbCA9PT0gRUZvcm1Db250cm9sLkNBTEVOREFSKXtcbiAgICAgICAgICAgICAgaXNWYWxpZCA9IG1pbk1heFZhbGlkRGF0ZSA9PT0gJ21pbmltdW0nID8gdGhpcy5zZXRFcnJvck1lc3NhZ2UoaXRlbSwgYE1pbmltdW0gJHt2YWxpZH0gJHtpdGVtLnZhbGlkYXRpb25zW2ldLmV4cHJlc3Npb259YCkgOiB0cnVlO1xuICAgICAgICAgICAgfWVsc2UgaWYoaXRlbVZhbHVlIDwgaXRlbS52YWxpZGF0aW9uc1tpXS5leHByZXNzaW9uKXtcbiAgICAgICAgICAgIGlzVmFsaWQgPVxuICAgICAgICAgICAgaXRlbVZhbHVlICYmIGl0ZW1WYWx1ZS5sZW5ndGggPiBpdGVtLnZhbGlkYXRpb25zW2ldLmV4cHJlc3Npb25cbiAgICAgICAgICAgICAgICA/IHRydWVcbiAgICAgICAgICAgICAgICA6IHRoaXMuc2V0RXJyb3JNZXNzYWdlKFxuICAgICAgICAgICAgICAgICAgICBpdGVtLFxuICAgICAgICAgICAgICAgICAgICBgJHtpdGVtLmxhYmVsfSBNaW5pbXVtICR7dmFsaWR9ICR7aXRlbS52YWxpZGF0aW9uc1tpXS5leHByZXNzaW9ufWBcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgIGl0ZW1WYWx1ZSAmJlxuICAgICAgICAgICAgaXRlbS52YWxpZGF0aW9uc1tpXS50eXBlID09IEVWYWxpZGF0b3IuTUFYSU1VTSAmJlxuICAgICAgICAgICAgaXNWYWxpZFxuICAgICAgICAgICkge1xuICAgICAgICAgICAgaWYoaXRlbS5jb250cm9sID09PSBFRm9ybUNvbnRyb2wuQ0FMRU5EQVIpe1xuICAgICAgICAgICAgICBpc1ZhbGlkID0gbWluTWF4VmFsaWREYXRlID09PSAnZ3JlYXRlcicgPyB0aGlzLnNldEVycm9yTWVzc2FnZShpdGVtLCBgTWF4aW11bSAke3ZhbGlkfSAke2l0ZW0udmFsaWRhdGlvbnNbaV0uZXhwcmVzc2lvbn1gKSA6IHRydWU7XG4gICAgICAgICAgICB9ZWxzZSBpZihpdGVtVmFsdWUgPiBpdGVtLnZhbGlkYXRpb25zW2ldLmV4cHJlc3Npb24pe1xuICAgICAgICAgICAgaXNWYWxpZCA9XG4gICAgICAgICAgICBpdGVtVmFsdWUgJiYgaXRlbVZhbHVlLmxlbmd0aCA8IGl0ZW0udmFsaWRhdGlvbnNbaV0uZXhwcmVzc2lvblxuICAgICAgICAgICAgICAgID8gdHJ1ZVxuICAgICAgICAgICAgICAgIDogdGhpcy5zZXRFcnJvck1lc3NhZ2UoXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0sXG4gICAgICAgICAgICAgICAgICAgIGAke2l0ZW0ubGFiZWx9IE1heGltdW0gJHt2YWxpZH0gJHtpdGVtLnZhbGlkYXRpb25zW2ldLmV4cHJlc3Npb259YFxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgaXRlbVZhbHVlICYmXG4gICAgICAgICAgICBpdGVtLnZhbGlkYXRpb25zW2ldLnR5cGUgPT0gRVZhbGlkYXRvci5QQVRURVJOICYmXG4gICAgICAgICAgICAhaXRlbVZhbHVlLm1hdGNoKGl0ZW0udmFsaWRhdGlvbnNbaV0uZXhwcmVzc2lvbilcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGlzVmFsaWQgPVxuICAgICAgICAgICAgaXRlbVZhbHVlICYmIGl0ZW1WYWx1ZS5tYXRjaChpdGVtLnZhbGlkYXRpb25zW2ldLmV4cHJlc3Npb24pXG4gICAgICAgICAgICAgICAgPyB0cnVlXG4gICAgICAgICAgICAgICAgOiB0aGlzLnNldEVycm9yTWVzc2FnZShpdGVtLCBgRW50ZXIgdmFsaWQgJHt2YWxpZH1gKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICBpdGVtVmFsdWUgJiZcbiAgICAgICAgICAgIGl0ZW0udmFsaWRhdGlvbnNbaV0udHlwZSA9PSBFVmFsaWRhdG9yLk5VTUVSSUMgJiZcbiAgICAgICAgICAgICFpdGVtVmFsdWUudG9TdHJpbmcoKS5tYXRjaCgvXigwfFstKCkxLTldXFxkKikkLylcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGlzVmFsaWQgPVxuICAgICAgICAgICAgaXRlbVZhbHVlICYmIGl0ZW1WYWx1ZT8udG9TdHJpbmcoKT8ubWF0Y2goL14oMHxbMS05XVxcZCopJC8pXG4gICAgICAgICAgICAgICAgPyB0cnVlXG4gICAgICAgICAgICAgICAgOiB0aGlzLnNldEVycm9yTWVzc2FnZShpdGVtLCBgRW50ZXIgJHtpdGVtLnZhbGlkYXRpb25zW2ldLnR5cGV9IGZvciAke3ZhbGlkfWApO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgIGl0ZW1WYWx1ZSAmJlxuICAgICAgICAgICAgaXRlbS52YWxpZGF0aW9uc1tpXS50eXBlID09IEVWYWxpZGF0b3IuUEhPTkUgJiZcbiAgICAgICAgICAgICFpdGVtVmFsdWUudG9TdHJpbmcoKS5tYXRjaCgvXig/PS4qWzAtOV0pWy0oKTAtOVxcc10rJC8pXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBpc1ZhbGlkID1cbiAgICAgICAgICAgIGl0ZW1WYWx1ZSAmJiBpdGVtVmFsdWUudG9TdHJpbmcoKS5tYXRjaCgvXig/PS4qWzAtOV0pWy0oKTAtOVxcc10rJC8pXG4gICAgICAgICAgICAgICAgPyB0cnVlXG4gICAgICAgICAgICAgICAgOiB0aGlzLnNldEVycm9yTWVzc2FnZShpdGVtLCBgRW50ZXIgdmFsaWQgJHt2YWxpZH1gKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICBpdGVtVmFsdWUgJiZcbiAgICAgICAgICAgIGl0ZW0udmFsaWRhdGlvbnNbaV0udHlwZSA9PSBFVmFsaWRhdG9yLkRFQ0lNQUwgJiZcbiAgICAgICAgICAgICFpdGVtVmFsdWU/LnRvU3RyaW5nKCk/Lm1hdGNoKC9eKDB8Wy0oKTEtOV1cXGQqKShcXC5cXGQrKT8kLylcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGlzVmFsaWQgPVxuICAgICAgICAgICAgaXRlbVZhbHVlICYmIGl0ZW1WYWx1ZS5tYXRjaCgvXigwfFsxLTldXFxkKikoXFwuXFxkKyk/JC8pXG4gICAgICAgICAgICAgICAgPyB0cnVlXG4gICAgICAgICAgICAgICAgOiB0aGlzLnNldEVycm9yTWVzc2FnZShpdGVtLCBgRW50ZXIgJHtpdGVtLnZhbGlkYXRpb25zW2ldLnR5cGV9IGZvciAke3ZhbGlkfWApO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgIGl0ZW1WYWx1ZSAmJlxuICAgICAgICAgICAgaXRlbS52YWxpZGF0aW9uc1tpXS50eXBlID09IEVWYWxpZGF0b3IuRU1BSUwgJiZcbiAgICAgICAgICAgICFpdGVtVmFsdWUubWF0Y2goL15bYS16QS1aMC05Ll8tXStAW2EtekEtWjAtOS4tXStcXC5bYS16QS1aXXsyLDZ9JC8pXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBpc1ZhbGlkID1cbiAgICAgICAgICAgIGl0ZW1WYWx1ZSAmJlxuICAgICAgICAgICAgaXRlbVZhbHVlLm1hdGNoKFxuICAgICAgICAgICAgICAgIC9eW2EtekEtWjAtOS5fLV0rQFthLXpBLVowLTkuLV0rXFwuW2EtekEtWl17Miw2fSQvXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICA/IHRydWVcbiAgICAgICAgICAgICAgICA6IHRoaXMuc2V0RXJyb3JNZXNzYWdlKGl0ZW0sIGBFbnRlciB2YWxpZCAke3ZhbGlkfWApO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGlzVmFsaWQ7XG4gIH1cblxuICBzZXRFcnJvck1lc3NhZ2UoaXRlbTogSUZvcm1GaWVsZCwgZXJyb3JNZXNzYWdlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpdGVtLmVycm9yTWVzc2FnZSA9IGVycm9yTWVzc2FnZTtcbiAgICBpdGVtLmlzdmFsaWQgPSBmYWxzZTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBhZGRGb3JtRmllbGQoZmllbGRJbmZvOiBJRm9ybUZpZWxkKTogSUZvcm1GaWVsZCB7XG4gICAgaWYgKCFmaWVsZEluZm8ubGFiZWwpIHtcbiAgICAgIGZpZWxkSW5mby5sYWJlbCA9IGZpZWxkSW5mby5maWVsZDtcbiAgICB9XG4gICAgY29uc3QgZm9ybUZpZWxkOiBhbnkgPSB7XG4gICAgICBsYWJlbDogZmllbGRJbmZvLmxhYmVsLFxuICAgICAgZmllbGQ6IGZpZWxkSW5mby5maWVsZCxcbiAgICAgIGRpc3BsYXlGaWVsZDogZmllbGRJbmZvLmRpc3BsYXlGaWVsZCxcbiAgICAgIGNvbnRyb2w6IGZpZWxkSW5mby5jb250cm9sLFxuICAgICAgc2hvd09wdGlvbjogZmllbGRJbmZvLnNob3dPcHRpb24sXG4gICAgICBjb2x1bW46IGZpZWxkSW5mby5jb2x1bW4sXG4gICAgICByb3c6IGZpZWxkSW5mby5yb3csXG4gICAgICBtaW51dGVzSW50ZXJ2YWw6IGZpZWxkSW5mby5taW51dGVzSW50ZXJ2YWwsXG4gICAgICB2YWx1ZTogZmllbGRJbmZvLnZhbHVlLFxuICAgICAgZm9ybWF0OiBmaWVsZEluZm8uZm9ybWF0LFxuICAgICAgaGlkZGVuOiBmaWVsZEluZm8uaGlkZGVuLFxuICAgICAgcGVybWlzc2lvbnM6IGZpZWxkSW5mby5wZXJtaXNzaW9ucyxcbiAgICAgIHZhbGlkYXRpb25zOiBmaWVsZEluZm8udmFsaWRhdGlvbnMsXG4gICAgICBpZDogZmllbGRJbmZvLmlkLFxuICAgICAgaHlwZXJsaW5rOiBmaWVsZEluZm8uaHlwZXJsaW5rLFxuICAgICAgZGF0YTogZmllbGRJbmZvLmRhdGEsXG4gICAgICBsb29rdXBDb250cm9sOiBmaWVsZEluZm8ubG9va3VwQ29udHJvbCxcbiAgICAgIGNvbXBvbmVudENvbnRyb2w6IGZpZWxkSW5mby5jb21wb25lbnRDb250cm9sLFxuICAgICAgb3B0aW9uTGFiZWw6IGZpZWxkSW5mby5vcHRpb25MYWJlbCxcbiAgICAgIG9wdGlvblZhbHVlOiBmaWVsZEluZm8ub3B0aW9uVmFsdWUsXG4gICAgICBzYXZlQXNTdHJpbmc6IGZpZWxkSW5mby5zYXZlQXNTdHJpbmcsXG4gICAgICBzaG93QWxsVmFsdWU6IGZpZWxkSW5mby5zaG93QWxsVmFsdWUsXG4gICAgICBvbkNsaWNrOiBmaWVsZEluZm8ub25DbGljayxcbiAgICAgIG9uUmV0dXJuOiBmaWVsZEluZm8ub25SZXR1cm4sXG4gICAgICBvbkZvY3VzT3V0OiBmaWVsZEluZm8ub25Gb2N1c091dCxcbiAgICAgIG9uQ2hhbmdlOiBmaWVsZEluZm8ub25DaGFuZ2UsXG4gICAgICB0YWJsZXM6IGZpZWxkSW5mby50YWJsZXMsXG4gICAgICBkaXNhYmxlZDogZmllbGRJbmZvLmRpc2FibGVkLFxuICAgICAgZGlzYWJsZWRUZXh0OiBmaWVsZEluZm8uZGlzYWJsZWRUZXh0LFxuICAgICAgdGltZU9ubHk6IGZpZWxkSW5mby50aW1lT25seSxcbiAgICAgIGlzUGFzc3dvcmQ6IGZpZWxkSW5mby5pc1Bhc3N3b3JkLFxuICAgICAgdGV4dFR5cGU6IGZpZWxkSW5mby50ZXh0VHlwZSxcbiAgICAgIG1vbnRoT25seTogZmllbGRJbmZvLm1vbnRoT25seSxcbiAgICAgIHNob3dUaW1lOiBmaWVsZEluZm8uc2hvd1RpbWUsIC8vIHRvIHNob3cgdGltZSBhcyB3ZWxsIGluIGNhbGVuZGFyIGZvcm0gZmllbGRcbiAgICAgIGhlaWdodDogZmllbGRJbmZvLmhlaWdodCxcbiAgICAgIHNob3dCb3R0b21Cb3JkZXI6IGZpZWxkSW5mby5zaG93Qm90dG9tQm9yZGVyLFxuICAgICAgYWxsb3dTZWFyY2g6IGZpZWxkSW5mby5hbGxvd1NlYXJjaCxcbiAgICAgIHNlbGVjdE11bHRpcGxlRmlsZXM6IGZpZWxkSW5mby5zZWxlY3RNdWx0aXBsZUZpbGVzLFxuICAgICAgU2V0ZmlsZVR5cGVzOiBmaWVsZEluZm8uU2V0ZmlsZVR5cGVzLFxuICAgICAgaWNvbjogZmllbGRJbmZvLmljb24sXG4gICAgICBjb2xvcjogZmllbGRJbmZvLmNvbG9yLFxuICAgICAgY2FyZDogZmllbGRJbmZvLmNhcmQsXG4gICAgICB1bmlxdWVLZXk6IGZpZWxkSW5mby51bmlxdWVLZXksXG4gICAgICBwYXRoU3lzdGVtQ29uZmlnOiBmaWVsZEluZm8ucGF0aFN5c3RlbUNvbmZpZyxcbiAgICAgIGF6dXJlQ29udGFpbmVyOiBmaWVsZEluZm8uYXp1cmVDb250YWluZXIsXG4gICAgICBjbGFzczogZmllbGRJbmZvLmNsYXNzXG4gICAgfTtcblxuICAgIHJldHVybiBmb3JtRmllbGQ7XG4gIH1cblxuICBhZGRDaGVja2JveChmaWVsZEluZm86IEFkZEZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLkNIRUNLQk9YO1xuICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICB9XG5cbiAgYWRkVGV4dGJveChmaWVsZEluZm86IEFkZEZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLklOUFVUO1xuICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICB9XG5cbiAgYWRkRGlzcGxheUZpZWxkKGZpZWxkSW5mbzogQWRkRm9ybUZpZWxkKTogSUZvcm1GaWVsZCB7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuSU5QVVQ7XG4gICAgZmllbGRJbmZvLmRpc2FibGVkID0gdHJ1ZTtcbiAgICBmaWVsZEluZm8uc2hvd0JvdHRvbUJvcmRlciA9IHRydWU7XG4gICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gIH1cblxuICBhZGROdW1lcmljVGV4dGJveChmaWVsZEluZm86IEFkZEZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLk5VTUVSSUM7XG4gICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gIH1cblxuICBhZGRTcGFjZUZpZWxkKGZpZWxkSW5mbzogQWRkRm9ybUZpZWxkKTogSUZvcm1GaWVsZHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5TUEFDRVI7XG4gICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gIH1cblxuICBhZGROZXdMaW5lKGZpZWxkSW5mbzogQWRkRm9ybUZpZWxkKTogSUZvcm1GaWVsZHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5CUkVBS19MSU5FO1xuICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICB9XG5cbiAgYWRkVGV4dEFyZWEoZmllbGRJbmZvOiBBZGRGb3JtRmllbGQpOiBJRm9ybUZpZWxkIHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5URVhUQVJFQTtcbiAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgfVxuICBcbiAgIC8vIEFkZGluZyBSZXBvcnQgYnV0dG9uIGZvciBEeW5hbWljRm9ybVxuICAgYWRkUmVwb3J0QnRuKGZpZWxkSW5mbzogSVJlcG9ydEJ0bikge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLlJFUE9SVDtcbiAgICByZXR1cm4gZmllbGRJbmZvO1xuICB9XG5cbiAgYWRkTm90ZUZpZWxkKGZpZWxkSW5mbzogQWRkRm9ybUZpZWxkKTogSUZvcm1GaWVsZCB7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuTk9URV9GSUVMRDtcbiAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgfVxuXG4gIGFkZEh5cGVybGluayhmaWVsZEluZm86IEFkZEZvcm1GaWVsZCkge1xuICAgIGlmKGZpZWxkSW5mby5oeXBlcmxpbmsgJiYgZmllbGRJbmZvLmh5cGVybGluay5jb21wb25lbnQpe1xuICAgICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuSFlQRVJMSU5LO1xuICAgICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICAgfWVsc2V7cmV0dXJuIHRoaXMuaHlwZXJsaW5rU2VydmljZS5idWlsZFVybChcbiAgICAgIGZpZWxkSW5mbz8uaHlwZXJsaW5rPy5saW5rSWQsXG4gICAgICBmaWVsZEluZm8uaHlwZXJsaW5rPy5wYXJhbXNcbiAgICApLnRoZW4oKHJlczogYW55KSA9PiB7XG4gICAgICBjb25zdCBwYXJhbXMgPSBmaWVsZEluZm8/Lmh5cGVybGluaz8ucGFyYW1zO1xuICAgICAgICAgIGNvbnN0IGxpbmsgPSByZXM7XG4gICAgICAgICAgaWYocmVzICYmIHBhcmFtcyl7XG4gICAgICAgICAgICBPYmplY3Qua2V5cyhwYXJhbXMpLmZvckVhY2goKGtleSk9PntcbiAgICAgICAgICAgICAgaWYocmVzLmluY2x1ZGVzKCd7eycra2V5Kyd9fScpICYmIHBhcmFtc1trZXldICYmICFwYXJhbXNba2V5XS50b1N0cmluZygpPy5pbmNsdWRlcygneycpKXtcbiAgICAgICAgICAgICAgICByZXMgPSByZXMucmVwbGFjZSgne3snK2tleSsnfX0nLCBwYXJhbXNba2V5XSlcbiAgICAgICAgICAgICAgfSBcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuICAgICAgaWYgKGZpZWxkSW5mby5oeXBlcmxpbms/LmxpbmtJZCAmJiBmaWVsZEluZm8uaHlwZXJsaW5rLmxpbmtJZC5sZW5ndGggPiAwKSB7XG4gICAgICAgIGZpZWxkSW5mby5oeXBlcmxpbmsubGluayA9IHJlcztcbiAgICAgIH1cbiAgICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLkhZUEVSTElOSztcbiAgICAgIGxldCBvYmo6IGFueSA9IHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gICAgICBvYmpbJ29yaWduYWxMaW5rJ10gPSBsaW5rO1xuICAgICAgcmV0dXJuIG9iajtcbiAgICB9KTtcbiAgfVxufVxuXG4gIGFkZENhbGVuZGFyKGZpZWxkSW5mbzogQWRkRm9ybUZpZWxkKTogSUZvcm1GaWVsZCB7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuQ0FMRU5EQVI7XG4gICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gIH1cblxuICAvLyBhZGQgQXV0b0NvbXBsZXRlIGZvciBGb3JtXG4gIGFkZEF1dG9Db21wbGV0ZShmaWVsZEluZm86IEFkZEZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLkFVVE9DT01QTEVURTtcbiAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgfVxuXG4gIC8vIFNlYXJjaCBBdXRvQ29tcGxldGUgRGF0YSBmb3IgZm9ybVxuICBnZXRBdXRvQ29tcGxldGVEYXRhKGZvcm1GaWVsZD86IGFueSwgdW5pcXVlS2V5Pzogc3RyaW5nLCBmaWx0ZXJzPzogYW55W10sIHNlYXJjaDogc3RyaW5nID0gJycpOiBhbnkge1xuICAgIHRoaXMucmVxdWVzdFNlcnZpY2UuZ2V0PGFueVtdLCBhbnk+KCcvRGF0YS9GZXRjaCcsIHsgdW5pcXVlS2V5OiB1bmlxdWVLZXksIGZpbHRlcnN9KS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpPT57XG4gICAgICBpZihzZWFyY2gpe1xuICAgICAgIGxldCBleGlzdEluUmVjb3JkOiBib29sZWFuID0gcmVzcG9uc2UucmVjb3Jkcy5zb21lKChyZWNvcmQ6IGFueSk9PiByZWNvcmRbZm9ybUZpZWxkLmRpc3BsYXlGaWVsZF0gJiYgcmVjb3JkW2Zvcm1GaWVsZC5kaXNwbGF5RmllbGRdPy50b1N0cmluZygpPy50b0xvd2VyQ2FzZSgpID09PSBzZWFyY2g/LnRvTG93ZXJDYXNlKCkpO1xuICAgICAgICBpZighZXhpc3RJblJlY29yZCl7XG4gICAgICAgICAgcmVzcG9uc2UucmVjb3Jkcy51bnNoaWZ0ICh7W2Zvcm1GaWVsZC5kaXNwbGF5RmllbGRdOiBzZWFyY2h9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZm9ybUZpZWxkLmRhdGEgPSBbLi4ucmVzcG9uc2UucmVjb3Jkc107XG4gICAgfSk7XG4gIH1cblxuICBhZGREcm9wZG93bihmaWVsZEluZm86IEFkZEZvcm1GaWVsZCwgZHJvcERvd25Qcm9wPzogSURyb3BEb3duUmVxdWVzdCk6IGFueSB7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuRFJPUERPV047XG4gICAgaWYgKGRyb3BEb3duUHJvcCkge1xuICAgICAgbGV0IHVuaXF1ZUtleSA9IGRyb3BEb3duUHJvcC51bmlxdWVLZXk7XG4gICAgICBsZXQgdmFsdWVQcm9wID0gZHJvcERvd25Qcm9wLnZhbHVlUHJvcDtcbiAgICAgIGxldCBsYWJlbFByb3AgPSBkcm9wRG93blByb3AubGFiZWxQcm9wO1xuICAgICAgbGV0IGZpbHRlcnM6IElTZXRGaWx0ZXJbXSA9IGRyb3BEb3duUHJvcC5maWx0ZXJzICYmIGRyb3BEb3duUHJvcC5maWx0ZXJzLmxlbmd0aCA+IDAgPyBkcm9wRG93blByb3AuZmlsdGVycyA6IFtdO1xuICAgICAgaWYgKHVuaXF1ZUtleSAmJiB2YWx1ZVByb3AgJiYgbGFiZWxQcm9wKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldERyb3Bkb3duRGF0YShmaWVsZEluZm8sIHVuaXF1ZUtleSwgdmFsdWVQcm9wLCBsYWJlbFByb3AsIGZpbHRlcnMpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgICB9XG4gIH1cblxuICBnZXREcm9wZG93bkRhdGEoZmllbGRJbmZvOiBBZGRGb3JtRmllbGQsIHVuaXF1ZUtleTogc3RyaW5nLCB2YWx1ZVByb3A6IHN0cmluZywgbGFiZWxQcm9wOiBzdHJpbmcsIGZpbHRlcnM6IGFueVtdKSB7XG4gICAgcmV0dXJuIHRoaXMuZHJvcGRvd25TZXJ2aWNlXG4gICAgICAuc2V0RHJvcERvd25MaXN0KFxuICAgICAgICB1bmlxdWVLZXksXG4gICAgICAgIHZhbHVlUHJvcCxcbiAgICAgICAgbGFiZWxQcm9wLFxuICAgICAgICBmaWx0ZXJzXG4gICAgICApXG4gICAgICAudGhlbigocmVzOiBhbnkpID0+IHtcbiAgICAgICAgZmllbGRJbmZvLmRhdGEgPSByZXM7XG4gICAgICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZXJyb3I6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5hcGlFcnJvcihlcnJvcik7XG4gICAgICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICAgICAgfSk7XG4gIH1cblxuICBhZGRMb29rVXAoZmllbGRJbmZvOiBBZGRGb3JtRmllbGQpOiBJRm9ybUZpZWxkIHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5MT09LVVBfSU5QVVQ7XG4gICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gIH1cblxuICBhZGREaWFsb2coZmllbGRJbmZvOiBBZGRGb3JtRmllbGQpOiBJRm9ybUZpZWxkIHtcbiAgICByZXR1cm4gdGhpcy5hZGRMb29rVXAoZmllbGRJbmZvKTtcbiAgfVxuXG4gIGFkZENvbXBvbmVudChmaWVsZEluZm86IEFkZEZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLkNPTVBPTkVOVDtcbiAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgfVxuXG4gIGFkZEhlYWRlcihmaWVsZEluZm86IElGb3JtRmllbGQpOiBJRm9ybUZpZWxkIHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5TRUNUSU9OX0hFQURFUjtcbiAgICBmaWVsZEluZm8uY2xhc3MgPSAnZm9ybS1oZWFkZXInO1xuICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICB9XG5cbiAgYWRkTXVsdGlTZWxlY3QoZmllbGRJbmZvOiBJRm9ybUZpZWxkKTogSUZvcm1GaWVsZCB7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuTVVMVElTRUxFQ1Q7XG4gICAgZmllbGRJbmZvLm9wdGlvbkxhYmVsID0gZmllbGRJbmZvLm9wdGlvbkxhYmVsID8gZmllbGRJbmZvLm9wdGlvbkxhYmVsIDogJ2xhYmVsJztcbiAgICBmaWVsZEluZm8ub3B0aW9uVmFsdWUgPSBmaWVsZEluZm8ub3B0aW9uVmFsdWUgPyBmaWVsZEluZm8ub3B0aW9uVmFsdWUgOiAndmFsdWUnO1xuICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICB9XG5cbiAgYWRkRmlsZVVwbG9hZChmaWVsZEluZm86IElGb3JtRmllbGQpOiBJRm9ybUZpZWxkIHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5GSUxFX1VQTE9BRDtcbiAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgfVxuXG4gIGFkZERpc3BsYXlGaWxlKGZpZWxkSW5mbzogSUZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLkRJU1BMQVlfRklMRTtcbiAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgfVxuXG4gIC8vIEFkZGluZyBPbkNsaWNrIEJ1dHRvbiBGdW5jdGlvbiBmb3IgRHluYW1pY0Zvcm1cbiAgYWRkQnV0dG9uKGZpZWxkSW5mbzogSUZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLkFERF9CVVRUT047XG4gICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gIH1cblxuICAvLyBBZGRpbmcgU3dpdGNoIEZ1bmN0aW9uIGZvciBEeW5hbWljRm9ybVxuICBhZGRTd2l0Y2goZmllbGRJbmZvOiBJRm9ybUZpZWxkKTogSUZvcm1GaWVsZCB7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuU1dJVENIO1xuICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICB9XG5cbiAgLy8gc3RhcnQgYWRkIG5ldyBjYXJkIGZ1bmN0aW9uYWxpdHlcbiAgYWRkQ2FyZChmaWVsZEluZm86IElGb3JtRmllbGQsIGNhcmREYXRhPzogSUxpc3RGaWx0ZXIpOiBJRm9ybUZpZWxkIHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5DQVJEO1xuICAgIGlmIChjYXJkRGF0YSAmJiBjYXJkRGF0YS51bmlxdWVLZXkpIHtcbiAgICAgIGlmKGNhcmREYXRhLnNvcnRzPy5sZW5ndGggPiAwKXtcbiAgICAgICAgY2FyZERhdGEuc29ydHMuZm9yRWFjaCgocmVzKSA9PntcbiAgICAgICAgcmVzLmRpcmVjdGlvbiA9IHJlcy5kaXJlY3Rpb24gPyByZXMuZGlyZWN0aW9uIDogRUdyaWRTb3J0RGlyZWN0aW9uLkFTQztcbiAgICAgICAgfSk7XG4gICAgICB9ICAgXG4gICAgICByZXR1cm4gdGhpcy5nZXRDYXJkRGF0YShmaWVsZEluZm8sIGNhcmREYXRhLnVuaXF1ZUtleSwgY2FyZERhdGEuZmlsdGVycywgY2FyZERhdGEuc29ydHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgICB9XG4gIH1cblxuICBnZXRDYXJkRGF0YShmaWVsZEluZm86IGFueSwgdW5pcXVlS2V5OiBzdHJpbmcsIGZpbHRlcnM6IGFueVtdID0gW10sIHNvcnRzOiBhbnlbXSA9IFtdKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5nZXRDYXJkTGlzdCh1bmlxdWVLZXksIGZpbHRlcnMsIHNvcnRzKVxuICAgICAgLnRoZW4oKHJlczogYW55KSA9PiB7XG4gICAgICAgIGZpZWxkSW5mby5jYXJkLmRhdGEgPSByZXMucmVjb3JkcztcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5hcGlFcnJvcihlcnJvcik7XG4gICAgICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICAgICAgfSk7XG4gIH1cblxuICAvLyBsb2FkIGNvbXBvbmVudCBvbiBmb3JtXG4gIHNldEFkZENvbXBvbmVudERhdGEoe2Zvcm1TZWN0aW9uc306SUR5bmFtaWNGb3JtLGlkOnN0cmluZyx2YWx1ZTphbnkpe1xuICAgIGZvcm1TZWN0aW9ucz8uZm9yRWFjaCgoc2VjdGlvbik9PntcbiAgICAgIHNlY3Rpb24uZmllbGRzLmZvckVhY2goKGZpZWxkOmFueSk9PntcbiAgICAgICAgaWYoZmllbGQuY29udHJvbD09PUVGb3JtQ29udHJvbC5DT01QT05FTlQgJiYgZmllbGQuY29tcG9uZW50Q29udHJvbCAmJiBmaWVsZC5jb21wb25lbnRDb250cm9sPy5pZD09PWlkKXtcbiAgICAgICAgICBsZXQga2V5cyA9IE9iamVjdC5rZXlzKHZhbHVlKTtcbiAgICAgICAgICBrZXlzLmZvckVhY2goKGtleSk9PntcbiAgICAgICAgICAgIGZpZWxkLmNvbXBvbmVudENvbnRyb2wuZGF0YSA9IHsgLi4uZmllbGQuY29tcG9uZW50Q29udHJvbD8uZGF0YSxba2V5XSA6IHZhbHVlW2tleV19O1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHV0aWxpdGllcy5jaGFuZ2VEeW5hbWljRm9ybVN0YXRlKGlkLCBmaWVsZC5jb21wb25lbnRDb250cm9sLmRhdGEpO1xuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvLyBzZXQgZm9ybWZpZWxkIHZhbHVlXG4gIHNldEZvcm1GaWVsZFZhbHVlKFxuICAgIHsgZm9ybVNlY3Rpb25zIH06IElEeW5hbWljRm9ybSxcbiAgICBmaWVsZDogc3RyaW5nLFxuICAgIHZhbHVlOiBhbnksXG4gICAgZGlzcGxheVRleHQ6IHN0cmluZyA9ICcnXG4gICkge1xuICAgIGZvcm1TZWN0aW9ucz8uZm9yRWFjaCgoc2VjdGlvbikgPT4ge1xuICAgICAgc2VjdGlvbi5maWVsZHMuZm9yRWFjaCgoZm9ybUZpZWxkKSA9PiB7XG4gICAgICAgIGlmIChmb3JtRmllbGQuZmllbGQ/LnRvTG93ZXJDYXNlKCkgPT09IGZpZWxkPy50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICAgICAgaWYgKGRpc3BsYXlUZXh0ICYmIGRpc3BsYXlUZXh0Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGZvcm1GaWVsZC52YWx1ZSA9IHsgdGV4dDogZGlzcGxheVRleHQsIHZhbHVlOiB2YWx1ZSB9O1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmb3JtRmllbGQudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gc2V0IGZvcm1maWVsZCBwcm9wZXJ0eVxuICBzZXRGb3JtRmllbGRQcm9wKFxuICAgIHsgZm9ybVNlY3Rpb25zIH06IElEeW5hbWljRm9ybSxcbiAgICBmaWVsZDogc3RyaW5nLFxuICAgIHByb3BzOiBJRGljdGlvbmFyeVtdXG4gICkge1xuICAgIHJldHVybiBmb3JtU2VjdGlvbnM/Lm1hcCgoc2VjdGlvbjogYW55KSA9PiB7XG4gICAgICByZXR1cm4gc2VjdGlvbi5maWVsZHMubWFwKChmb3JtRmllbGQ6IGFueSk6IGFueSA9PiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAoZm9ybUZpZWxkLmZpZWxkPy50b0xvd2VyQ2FzZSgpID09PSBmaWVsZD8udG9Mb3dlckNhc2UoKSkgfHxcbiAgICAgICAgICAoZm9ybUZpZWxkLmxhYmVsICYmIGZvcm1GaWVsZC5sYWJlbC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT09IGZpZWxkPy50b0xvd2VyQ2FzZSgpKVxuICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm4gcHJvcHMubWFwKChwcm9wOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGlmIChmb3JtRmllbGQuaGFzT3duUHJvcGVydHkocHJvcC5uYW1lKSkge1xuICAgICAgICAgICAgICBpZihwcm9wLm5hbWUgPT09ICdsYWJlbCcgJiYgdHlwZW9mIGZvcm1GaWVsZC5sYWJlbCA9PT0gJ29iamVjdCcgJiYgIXByb3Aub3ZlcnJpZGUpe1xuICAgICAgICAgICAgICAgIHJldHVybiAoZm9ybUZpZWxkW3Byb3AubmFtZV0ubmFtZSA9IHByb3AudmFsdWUpO1xuICAgICAgICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgICAgICByZXR1cm4gKGZvcm1GaWVsZFtwcm9wLm5hbWVdID0gcHJvcC52YWx1ZSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2V7XG4gICAgICAgICAgICAgIHJldHVybiAoZm9ybUZpZWxkW3Byb3AubmFtZV0gPSBwcm9wLnZhbHVlKTtcbiAgICAgICAgICAgICAgXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0Q2FyZExpc3QodW5pcXVlS2V5OiBzdHJpbmcsIGZpbHRlcnM6IGFueVtdID0gW10sIHNvcnRzOiBhbnlbXSA9IFtdKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMucmVxdWVzdFNlcnZpY2VcbiAgICAgICAgLmdldDxhbnlbXSwgYW55PignL0RhdGEvRmV0Y2gnLCB7IHVuaXF1ZUtleTogdW5pcXVlS2V5LCBmaWx0ZXJzLCBzb3J0cyB9KVxuICAgICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAgIChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAocmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUocmVzcG9uc2UpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUoW10pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgKHsgZXJyb3IgfTogYW55KSA9PiB7XG4gICAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9KTtcbiAgfVxuICAvLyBFbmQgYWRkIG5ldyBjYXJkIGZ1bmN0aW9uYWxpdHlcblxufVxuIl19
464
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2UtdWktdG9vbGtpdC9zcmMvbGliL3NlcnZpY2VzL2Zvcm0uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFDTCxVQUFVLEVBRVYsWUFBWSxHQU9iLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFFLGtCQUFrQixFQUFhLE1BQU0sc0JBQXNCLENBQUM7QUFLckUsT0FBTyxLQUFLLFNBQVMsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7O0FBTWpELE1BQU0sT0FBTyxXQUFXO0lBRXRCLFlBQ1UsZ0JBQWtDLEVBQ2xDLGVBQWdDLEVBQ2hDLFlBQTBCLEVBQzFCLGNBQThCO1FBSDlCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUxqQyxvQkFBZSxHQUFXLEtBQUssQ0FBQztJQU1uQyxDQUFDO0lBRUwsYUFBYSxDQUFDLFVBQXdCO1FBQ3BDLElBQUksT0FBTyxHQUFZLElBQUksQ0FBQztRQUU1QixVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBZ0IsRUFBRSxFQUFFO1lBQ2xDLElBQUksSUFBSSxDQUFDLFdBQVcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7Z0JBQ3RDLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLEtBQUssWUFBWSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFLLE9BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENB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S0FBSyxDQUFDLENBQUM7NkJBQzVDO3lCQUNGOzZCQUNHOzRCQUNGLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQzt5QkFFNUM7b0JBQ0gsQ0FBQyxDQUFDLENBQUM7aUJBQ0o7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFdBQVcsQ0FBQyxTQUFpQixFQUFFLFVBQWlCLEVBQUUsRUFBRSxRQUFlLEVBQUU7UUFDbkUsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUNyQyxJQUFJLENBQUMsY0FBYztpQkFDaEIsR0FBRyxDQUFhLGFBQWEsRUFBRSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDO2lCQUN4RSxTQUFTLENBQ1IsQ0FBQyxRQUFhLEVBQUUsRUFBRTtnQkFDaEIsSUFBSSxRQUFRLEVBQUU7b0JBQ1osT0FBTyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7aUJBQzFCO3FCQUFNO29CQUNMLE9BQU8sT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2lCQUNwQjtZQUNILENBQUMsRUFDRCxDQUFDLEVBQUUsS0FBSyxFQUFPLEVBQUUsRUFBRTtnQkFDakIsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2hCLENBQUMsQ0FDRixDQUFDO1FBQ04sQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO2lJQXJnQlUsV0FBVztxSUFBWCxXQUFXLGNBRlYsTUFBTTs7MkZBRVAsV0FBVztrQkFIdkIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBFVmFsaWRhdG9yLFxuICBJRm9ybUZpZWxkLFxuICBFRm9ybUNvbnRyb2wsXG4gIEFkZEZvcm1GaWVsZCxcbiAgSVNldEZpbHRlcixcbiAgSURyb3BEb3duUmVxdWVzdCxcbiAgSUxpc3RGaWx0ZXIsXG4gIElSZXBvcnRCdG4sXG4gIElEeW5hbWljRm9ybSxcbn0gZnJvbSAnLi4vbW9kZWxzL2Zvcm0ubW9kZWwnO1xuaW1wb3J0IHsgRUdyaWRTb3J0RGlyZWN0aW9uLCBJR3JpZFNvcnQgfSBmcm9tICcuLi9tb2RlbHMvZ3JpZC5tb2RlbCc7XG5pbXBvcnQgeyBIeXBlcmxpbmtTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvaHlwZXJsaW5rLnNlcnZpY2UnO1xuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlIH0gZnJvbSAnLi9hbGVydC5zZXJ2aWNlJztcbmltcG9ydCB7IERyb3Bkb3duU2VydmljZSB9IGZyb20gJy4vZHJvcGRvd24uc2VydmljZSc7XG5pbXBvcnQgeyBSZXF1ZXN0U2VydmljZSB9IGZyb20gJy4vcmVxdWVzdC5zZXJ2aWNlJztcbmltcG9ydCAqIGFzIHV0aWxpdGllcyBmcm9tICcuL3V0aWxpdGllcy5zZXJ2aWNlJztcbmltcG9ydCB7IElEaWN0aW9uYXJ5IH0gZnJvbSAnLi4vbW9kZWxzL2NvbW1vbi5tb2RlbCc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBGb3JtU2VydmljZSB7XG4gIHB1YmxpYyBmaWVsZEZvY3VzZWRPdXQ6Ym9vbGVhbiA9IGZhbHNlO1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGh5cGVybGlua1NlcnZpY2U6IEh5cGVybGlua1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBkcm9wZG93blNlcnZpY2U6IERyb3Bkb3duU2VydmljZSxcbiAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVxdWVzdFNlcnZpY2U6IFJlcXVlc3RTZXJ2aWNlXG4gICkgeyB9XG5cbiAgY2hlY2tWYWxpZGl0eShmb3JtRmllbGRzOiBJRm9ybUZpZWxkW10pOiBib29sZWFuIHtcbiAgICBsZXQgaXNWYWxpZDogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBmb3JtRmllbGRzLm1hcCgoaXRlbTogSUZvcm1GaWVsZCkgPT4ge1xuICAgICAgaWYgKGl0ZW0udmFsaWRhdGlvbnMgJiYgIWl0ZW0uZGlzYWJsZWQpIHtcbiAgICAgICAgbGV0IGl0ZW1WYWx1ZSA9IGl0ZW0uY29udHJvbCA9PT0gRUZvcm1Db250cm9sLkxPT0tVUF9JTlBVVCAmJiBpdGVtLnZhbHVlICAmJiB0eXBlb2YoaXRlbS52YWx1ZSkgPT09ICdvYmplY3QnID8gaXRlbS52YWx1ZS52YWx1ZSA6IGl0ZW0udmFsdWVcbiAgICAgICAgLy8gaWYoaXRlbS5jb250cm9sID09PSBFRm9ybUNvbnRyb2wuTE9PS1VQX0lOUFVUICYmIGl0ZW0udmFsdWUgICYmIHR5cGVvZihpdGVtLnZhbHVlKSA9PT0gJ29iamVjdCcpe1xuICAgICAgICAvLyAgIGl0ZW0udmFsdWUgPSBpdGVtLnZhbHVlLnZhbHVlO1xuICAgICAgICAvLyAgfVxuICAgICAgICBpdGVtLmVycm9yTWVzc2FnZSA9ICcnO1xuICAgICAgICBpdGVtLmlzdmFsaWQgPSB0cnVlO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW0udmFsaWRhdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBjb25zdCBtaW5NYXhWYWxpZERhdGUgPSB1dGlsaXRpZXMuY2FsZW5kZXJNaW5NYXhWYWx1ZShpdGVtLCBpdGVtVmFsdWUsIGkpO1xuICAgICAgICAgIGNvbnN0IHZhbGlkID1cbiAgICAgICAgICAgIGl0ZW0udmFsaWRhdGlvbnMgJiYgdHlwZW9mIGl0ZW0ubGFiZWwgPT09ICdvYmplY3QnXG4gICAgICAgICAgICAgID8gaXRlbS5sYWJlbC5uYW1lXG4gICAgICAgICAgICAgIDogaXRlbS5sYWJlbDtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBpdGVtLnZhbGlkYXRpb25zW2ldLnR5cGUgPT0gRVZhbGlkYXRvci5SRVFVSVJFRCAmJlxuICAgICAgICAgICAgIWl0ZW1WYWx1ZSAmJlxuICAgICAgICAgICAgIWl0ZW0uaGlkZGVuICYmXG4gICAgICAgICAgICB2YWxpZFxuICAgICAgICAgICkge1xuICAgICAgICAgICAgaXNWYWxpZCA9IGl0ZW1WYWx1ZVxuICAgICAgICAgICAgICA/IHRydWVcbiAgICAgICAgICAgICAgOiB0aGlzLnNldEVycm9yTWVzc2FnZShpdGVtLCBgJHt2YWxpZH0gaXMgcmVxdWlyZWRgKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICBpdGVtVmFsdWUgJiZcbiAgICAgICAgICAgIGl0ZW0udmFsaWRhdGlvbnNbaV0udHlwZSA9PSBFVmFsaWRhdG9yLk1JTkxFTkdUSCAmJlxuICAgICAgICAgICAgaXRlbVZhbHVlLmxlbmd0aCA8IGl0ZW0udmFsaWRhdGlvbnNbaV0uZXhwcmVzc2lvblxuICAgICAgICAgICkge1xuICAgICAgICAgICAgaXNWYWxpZCA9XG4gICAgICAgICAgICBpdGVtVmFsdWUgJiYgaXRlbVZhbHVlLmxlbmd0aCA+IGl0ZW0udmFsaWRhdGlvbnNbaV0uZXhwcmVzc2lvblxuICAgICAgICAgICAgICAgID8gdHJ1ZVxuICAgICAgICAgICAgICAgIDogdGhpcy5zZXRFcnJvck1lc3NhZ2UoXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0sXG4gICAgICAgICAgICAgICAgICAgIGAke2l0ZW0ubGFiZWx9IE1pbmltdW0gJHtpdGVtLnZhbGlkYXRpb25zW2ldLmV4cHJlc3Npb259IGNoYXJhY3RlcnNgXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgIGl0ZW1WYWx1ZSAmJlxuICAgICAgICAgICAgaXRlbS52YWxpZGF0aW9uc1tpXS50eXBlID09IEVWYWxpZGF0b3IuTUFYTEVOR1RIICYmXG4gICAgICAgICAgICBpdGVtVmFsdWUubGVuZ3RoID4gaXRlbS52YWxpZGF0aW9uc1tpXS5leHByZXNzaW9uXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBpc1ZhbGlkID1cbiAgICAgICAgICAgIGl0ZW1WYWx1ZSAmJiBpdGVtVmFsdWUubGVuZ3RoIDwgaXRlbS52YWxpZGF0aW9uc1tpXS5leHByZXNzaW9uXG4gICAgICAgICAgICAgICAgPyB0cnVlXG4gICAgICAgICAgICAgICAgOiB0aGlzLnNldEVycm9yTWVzc2FnZShcbiAgICAgICAgICAgICAgICAgICAgaXRlbSxcbiAgICAgICAgICAgICAgICAgICAgYCR7aXRlbS5sYWJlbH0gTWF4aW11bSAke2l0ZW0udmFsaWRhdGlvbnNbaV0uZXhwcmVzc2lvbn0gY2hhcmFjdGVyc2BcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgaXRlbVZhbHVlICYmXG4gICAgICAgICAgICBpdGVtLnZhbGlkYXRpb25zW2ldLnR5cGUgPT0gRVZhbGlkYXRvci5NSU5JTVVNICYmXG4gICAgICAgICAgICBpc1ZhbGlkXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBpZihpdGVtLmNvbnRyb2wgPT09IEVGb3JtQ29udHJvbC5DQUxFTkRBUil7XG4gICAgICAgICAgICAgIGlzVmFsaWQgPSBtaW5NYXhWYWxpZERhdGUgPT09ICdtaW5pbXVtJyA/IHRoaXMuc2V0RXJyb3JNZXNzYWdlKGl0ZW0sIGBNaW5pbXVtICR7dmFsaWR9ICR7aXRlbS52YWxpZGF0aW9uc1tpXS5leHByZXNzaW9ufWApIDogdHJ1ZTtcbiAgICAgICAgICAgIH1lbHNlIGlmKGl0ZW1WYWx1ZSA8IGl0ZW0udmFsaWRhdGlvbnNbaV0uZXhwcmVzc2lvbil7XG4gICAgICAgICAgICBpc1ZhbGlkID1cbiAgICAgICAgICAgIGl0ZW1WYWx1ZSAmJiBpdGVtVmFsdWUubGVuZ3RoID4gaXRlbS52YWxpZGF0aW9uc1tpXS5leHByZXNzaW9uXG4gICAgICAgICAgICAgICAgPyB0cnVlXG4gICAgICAgICAgICAgICAgOiB0aGlzLnNldEVycm9yTWVzc2FnZShcbiAgICAgICAgICAgICAgICAgICAgaXRlbSxcbiAgICAgICAgICAgICAgICAgICAgYCR7aXRlbS5sYWJlbH0gTWluaW11bSAke3ZhbGlkfSAke2l0ZW0udmFsaWRhdGlvbnNbaV0uZXhwcmVzc2lvbn1gXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICBpdGVtVmFsdWUgJiZcbiAgICAgICAgICAgIGl0ZW0udmFsaWRhdGlvbnNbaV0udHlwZSA9PSBFVmFsaWRhdG9yLk1BWElNVU0gJiZcbiAgICAgICAgICAgIGlzVmFsaWRcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGlmKGl0ZW0uY29udHJvbCA9PT0gRUZvcm1Db250cm9sLkNBTEVOREFSKXtcbiAgICAgICAgICAgICAgaXNWYWxpZCA9IG1pbk1heFZhbGlkRGF0ZSA9PT0gJ2dyZWF0ZXInID8gdGhpcy5zZXRFcnJvck1lc3NhZ2UoaXRlbSwgYE1heGltdW0gJHt2YWxpZH0gJHtpdGVtLnZhbGlkYXRpb25zW2ldLmV4cHJlc3Npb259YCkgOiB0cnVlO1xuICAgICAgICAgICAgfWVsc2UgaWYoaXRlbVZhbHVlID4gaXRlbS52YWxpZGF0aW9uc1tpXS5leHByZXNzaW9uKXtcbiAgICAgICAgICAgIGlzVmFsaWQgPVxuICAgICAgICAgICAgaXRlbVZhbHVlICYmIGl0ZW1WYWx1ZS5sZW5ndGggPCBpdGVtLnZhbGlkYXRpb25zW2ldLmV4cHJlc3Npb25cbiAgICAgICAgICAgICAgICA/IHRydWVcbiAgICAgICAgICAgICAgICA6IHRoaXMuc2V0RXJyb3JNZXNzYWdlKFxuICAgICAgICAgICAgICAgICAgICBpdGVtLFxuICAgICAgICAgICAgICAgICAgICBgJHtpdGVtLmxhYmVsfSBNYXhpbXVtICR7dmFsaWR9ICR7aXRlbS52YWxpZGF0aW9uc1tpXS5leHByZXNzaW9ufWBcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgIGl0ZW1WYWx1ZSAmJlxuICAgICAgICAgICAgaXRlbS52YWxpZGF0aW9uc1tpXS50eXBlID09IEVWYWxpZGF0b3IuUEFUVEVSTiAmJlxuICAgICAgICAgICAgIWl0ZW1WYWx1ZS5tYXRjaChpdGVtLnZhbGlkYXRpb25zW2ldLmV4cHJlc3Npb24pXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBpc1ZhbGlkID1cbiAgICAgICAgICAgIGl0ZW1WYWx1ZSAmJiBpdGVtVmFsdWUubWF0Y2goaXRlbS52YWxpZGF0aW9uc1tpXS5leHByZXNzaW9uKVxuICAgICAgICAgICAgICAgID8gdHJ1ZVxuICAgICAgICAgICAgICAgIDogdGhpcy5zZXRFcnJvck1lc3NhZ2UoaXRlbSwgYEVudGVyIHZhbGlkICR7dmFsaWR9YCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgaXRlbVZhbHVlICYmXG4gICAgICAgICAgICBpdGVtLnZhbGlkYXRpb25zW2ldLnR5cGUgPT0gRVZhbGlkYXRvci5OVU1FUklDICYmXG4gICAgICAgICAgICAhaXRlbVZhbHVlLnRvU3RyaW5nKCkubWF0Y2goL14oMHxbLSgpMS05XVxcZCopJC8pXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBpc1ZhbGlkID1cbiAgICAgICAgICAgIGl0ZW1WYWx1ZSAmJiBpdGVtVmFsdWU/LnRvU3RyaW5nKCk/Lm1hdGNoKC9eKDB8WzEtOV1cXGQqKSQvKVxuICAgICAgICAgICAgICAgID8gdHJ1ZVxuICAgICAgICAgICAgICAgIDogdGhpcy5zZXRFcnJvck1lc3NhZ2UoaXRlbSwgYEVudGVyICR7aXRlbS52YWxpZGF0aW9uc1tpXS50eXBlfSBmb3IgJHt2YWxpZH1gKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICBpdGVtVmFsdWUgJiZcbiAgICAgICAgICAgIGl0ZW0udmFsaWRhdGlvbnNbaV0udHlwZSA9PSBFVmFsaWRhdG9yLlBIT05FICYmXG4gICAgICAgICAgICAhaXRlbVZhbHVlLnRvU3RyaW5nKCkubWF0Y2goL14oPz0uKlswLTldKVstKCkwLTlcXHNdKyQvKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgaXNWYWxpZCA9XG4gICAgICAgICAgICBpdGVtVmFsdWUgJiYgaXRlbVZhbHVlLnRvU3RyaW5nKCkubWF0Y2goL14oPz0uKlswLTldKVstKCkwLTlcXHNdKyQvKVxuICAgICAgICAgICAgICAgID8gdHJ1ZVxuICAgICAgICAgICAgICAgIDogdGhpcy5zZXRFcnJvck1lc3NhZ2UoaXRlbSwgYEVudGVyIHZhbGlkICR7dmFsaWR9YCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgaXRlbVZhbHVlICYmXG4gICAgICAgICAgICBpdGVtLnZhbGlkYXRpb25zW2ldLnR5cGUgPT0gRVZhbGlkYXRvci5ERUNJTUFMICYmXG4gICAgICAgICAgICAhaXRlbVZhbHVlPy50b1N0cmluZygpPy5tYXRjaCgvXigwfFstKCkxLTldXFxkKikoXFwuXFxkKyk/JC8pXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBpc1ZhbGlkID1cbiAgICAgICAgICAgIGl0ZW1WYWx1ZSAmJiBpdGVtVmFsdWUubWF0Y2goL14oMHxbMS05XVxcZCopKFxcLlxcZCspPyQvKVxuICAgICAgICAgICAgICAgID8gdHJ1ZVxuICAgICAgICAgICAgICAgIDogdGhpcy5zZXRFcnJvck1lc3NhZ2UoaXRlbSwgYEVudGVyICR7aXRlbS52YWxpZGF0aW9uc1tpXS50eXBlfSBmb3IgJHt2YWxpZH1gKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICBpdGVtVmFsdWUgJiZcbiAgICAgICAgICAgIGl0ZW0udmFsaWRhdGlvbnNbaV0udHlwZSA9PSBFVmFsaWRhdG9yLkVNQUlMICYmXG4gICAgICAgICAgICAhaXRlbVZhbHVlLm1hdGNoKC9eW2EtekEtWjAtOS5fLV0rQFthLXpBLVowLTkuLV0rXFwuW2EtekEtWl17Miw2fSQvKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgaXNWYWxpZCA9XG4gICAgICAgICAgICBpdGVtVmFsdWUgJiZcbiAgICAgICAgICAgIGl0ZW1WYWx1ZS5tYXRjaChcbiAgICAgICAgICAgICAgICAvXlthLXpBLVowLTkuXy1dK0BbYS16QS1aMC05Li1dK1xcLlthLXpBLVpdezIsNn0kL1xuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgPyB0cnVlXG4gICAgICAgICAgICAgICAgOiB0aGlzLnNldEVycm9yTWVzc2FnZShpdGVtLCBgRW50ZXIgdmFsaWQgJHt2YWxpZH1gKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBpc1ZhbGlkO1xuICB9XG5cbiAgc2V0RXJyb3JNZXNzYWdlKGl0ZW06IElGb3JtRmllbGQsIGVycm9yTWVzc2FnZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaXRlbS5lcnJvck1lc3NhZ2UgPSBlcnJvck1lc3NhZ2U7XG4gICAgaXRlbS5pc3ZhbGlkID0gZmFsc2U7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgYWRkRm9ybUZpZWxkKGZpZWxkSW5mbzogSUZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIGlmICghZmllbGRJbmZvLmxhYmVsKSB7XG4gICAgICBmaWVsZEluZm8ubGFiZWwgPSBmaWVsZEluZm8uZmllbGQ7XG4gICAgfVxuICAgIGNvbnN0IGZvcm1GaWVsZDogYW55ID0ge1xuICAgICAgbGFiZWw6IGZpZWxkSW5mby5sYWJlbCxcbiAgICAgIGZpZWxkOiBmaWVsZEluZm8uZmllbGQsXG4gICAgICBkaXNwbGF5RmllbGQ6IGZpZWxkSW5mby5kaXNwbGF5RmllbGQsXG4gICAgICBjb250cm9sOiBmaWVsZEluZm8uY29udHJvbCxcbiAgICAgIHNob3dPcHRpb246IGZpZWxkSW5mby5zaG93T3B0aW9uLFxuICAgICAgY29sdW1uOiBmaWVsZEluZm8uY29sdW1uLFxuICAgICAgcm93OiBmaWVsZEluZm8ucm93LFxuICAgICAgbWludXRlc0ludGVydmFsOiBmaWVsZEluZm8ubWludXRlc0ludGVydmFsLFxuICAgICAgdmFsdWU6IGZpZWxkSW5mby52YWx1ZSxcbiAgICAgIGZvcm1hdDogZmllbGRJbmZvLmZvcm1hdCxcbiAgICAgIGhpZGRlbjogZmllbGRJbmZvLmhpZGRlbixcbiAgICAgIHBlcm1pc3Npb25zOiBmaWVsZEluZm8ucGVybWlzc2lvbnMsXG4gICAgICB2YWxpZGF0aW9uczogZmllbGRJbmZvLnZhbGlkYXRpb25zLFxuICAgICAgaWQ6IGZpZWxkSW5mby5pZCxcbiAgICAgIGh5cGVybGluazogZmllbGRJbmZvLmh5cGVybGluayxcbiAgICAgIGRhdGE6IGZpZWxkSW5mby5kYXRhLFxuICAgICAgbG9va3VwQ29udHJvbDogZmllbGRJbmZvLmxvb2t1cENvbnRyb2wsXG4gICAgICBjb21wb25lbnRDb250cm9sOiBmaWVsZEluZm8uY29tcG9uZW50Q29udHJvbCxcbiAgICAgIG9wdGlvbkxhYmVsOiBmaWVsZEluZm8ub3B0aW9uTGFiZWwsXG4gICAgICBvcHRpb25WYWx1ZTogZmllbGRJbmZvLm9wdGlvblZhbHVlLFxuICAgICAgc2F2ZUFzU3RyaW5nOiBmaWVsZEluZm8uc2F2ZUFzU3RyaW5nLFxuICAgICAgc2hvd0FsbFZhbHVlOiBmaWVsZEluZm8uc2hvd0FsbFZhbHVlLFxuICAgICAgb25DbGljazogZmllbGRJbmZvLm9uQ2xpY2ssXG4gICAgICBvblJldHVybjogZmllbGRJbmZvLm9uUmV0dXJuLFxuICAgICAgb25Gb2N1c091dDogZmllbGRJbmZvLm9uRm9jdXNPdXQsXG4gICAgICBvbkNoYW5nZTogZmllbGRJbmZvLm9uQ2hhbmdlLFxuICAgICAgdGFibGVzOiBmaWVsZEluZm8udGFibGVzLFxuICAgICAgZGlzYWJsZWQ6IGZpZWxkSW5mby5kaXNhYmxlZCxcbiAgICAgIGRpc2FibGVkVGV4dDogZmllbGRJbmZvLmRpc2FibGVkVGV4dCxcbiAgICAgIHRpbWVPbmx5OiBmaWVsZEluZm8udGltZU9ubHksXG4gICAgICBpc1Bhc3N3b3JkOiBmaWVsZEluZm8uaXNQYXNzd29yZCxcbiAgICAgIHRleHRUeXBlOiBmaWVsZEluZm8udGV4dFR5cGUsXG4gICAgICBtb250aE9ubHk6IGZpZWxkSW5mby5tb250aE9ubHksXG4gICAgICBzaG93VGltZTogZmllbGRJbmZvLnNob3dUaW1lLCAvLyB0byBzaG93IHRpbWUgYXMgd2VsbCBpbiBjYWxlbmRhciBmb3JtIGZpZWxkXG4gICAgICBoZWlnaHQ6IGZpZWxkSW5mby5oZWlnaHQsXG4gICAgICBzaG93Qm90dG9tQm9yZGVyOiBmaWVsZEluZm8uc2hvd0JvdHRvbUJvcmRlcixcbiAgICAgIGFsbG93U2VhcmNoOiBmaWVsZEluZm8uYWxsb3dTZWFyY2gsXG4gICAgICBzZWxlY3RNdWx0aXBsZUZpbGVzOiBmaWVsZEluZm8uc2VsZWN0TXVsdGlwbGVGaWxlcyxcbiAgICAgIFNldGZpbGVUeXBlczogZmllbGRJbmZvLlNldGZpbGVUeXBlcyxcbiAgICAgIGljb246IGZpZWxkSW5mby5pY29uLFxuICAgICAgY29sb3I6IGZpZWxkSW5mby5jb2xvcixcbiAgICAgIGNhcmQ6IGZpZWxkSW5mby5jYXJkLFxuICAgICAgdW5pcXVlS2V5OiBmaWVsZEluZm8udW5pcXVlS2V5LFxuICAgICAgcGF0aFN5c3RlbUNvbmZpZzogZmllbGRJbmZvLnBhdGhTeXN0ZW1Db25maWcsXG4gICAgICBhenVyZUNvbnRhaW5lcjogZmllbGRJbmZvLmF6dXJlQ29udGFpbmVyLFxuICAgICAgY2xhc3M6IGZpZWxkSW5mby5jbGFzc1xuICAgIH07XG5cbiAgICByZXR1cm4gZm9ybUZpZWxkO1xuICB9XG5cbiAgYWRkQ2hlY2tib3goZmllbGRJbmZvOiBBZGRGb3JtRmllbGQpOiBJRm9ybUZpZWxkIHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5DSEVDS0JPWDtcbiAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgfVxuXG4gIGFkZFRleHRib3goZmllbGRJbmZvOiBBZGRGb3JtRmllbGQpOiBJRm9ybUZpZWxkIHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5JTlBVVDtcbiAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgfVxuXG4gIGFkZERpc3BsYXlGaWVsZChmaWVsZEluZm86IEFkZEZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLklOUFVUO1xuICAgIGZpZWxkSW5mby5kaXNhYmxlZCA9IHRydWU7XG4gICAgZmllbGRJbmZvLnNob3dCb3R0b21Cb3JkZXIgPSB0cnVlO1xuICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICB9XG5cbiAgYWRkTnVtZXJpY1RleHRib3goZmllbGRJbmZvOiBBZGRGb3JtRmllbGQpOiBJRm9ybUZpZWxkIHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5OVU1FUklDO1xuICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICB9XG5cbiAgYWRkU3BhY2VGaWVsZChmaWVsZEluZm86IEFkZEZvcm1GaWVsZCk6IElGb3JtRmllbGR7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuU1BBQ0VSO1xuICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICB9XG5cbiAgYWRkTmV3TGluZShmaWVsZEluZm86IEFkZEZvcm1GaWVsZCk6IElGb3JtRmllbGR7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuQlJFQUtfTElORTtcbiAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgfVxuXG4gIGFkZFRleHRBcmVhKGZpZWxkSW5mbzogQWRkRm9ybUZpZWxkKTogSUZvcm1GaWVsZCB7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuVEVYVEFSRUE7XG4gICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gIH1cbiAgXG4gICAvLyBBZGRpbmcgUmVwb3J0IGJ1dHRvbiBmb3IgRHluYW1pY0Zvcm1cbiAgIGFkZFJlcG9ydEJ0bihmaWVsZEluZm86IElSZXBvcnRCdG4pIHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5SRVBPUlQ7XG4gICAgcmV0dXJuIGZpZWxkSW5mbztcbiAgfVxuXG4gIGFkZE5vdGVGaWVsZChmaWVsZEluZm86IEFkZEZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLk5PVEVfRklFTEQ7XG4gICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gIH1cblxuICBhZGRIeXBlcmxpbmsoZmllbGRJbmZvOiBBZGRGb3JtRmllbGQpIHtcbiAgICBpZihmaWVsZEluZm8uaHlwZXJsaW5rICYmIGZpZWxkSW5mby5oeXBlcmxpbmsuY29tcG9uZW50KXtcbiAgICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLkhZUEVSTElOSztcbiAgICAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgIH1lbHNle3JldHVybiB0aGlzLmh5cGVybGlua1NlcnZpY2UuYnVpbGRVcmwoXG4gICAgICBmaWVsZEluZm8/Lmh5cGVybGluaz8ubGlua0lkLFxuICAgICAgZmllbGRJbmZvLmh5cGVybGluaz8ucGFyYW1zXG4gICAgKS50aGVuKChyZXM6IGFueSkgPT4ge1xuICAgICAgY29uc3QgcGFyYW1zID0gZmllbGRJbmZvPy5oeXBlcmxpbms/LnBhcmFtcztcbiAgICAgICAgICBjb25zdCBsaW5rID0gcmVzO1xuICAgICAgICAgIGlmKHJlcyAmJiBwYXJhbXMpe1xuICAgICAgICAgICAgT2JqZWN0LmtleXMocGFyYW1zKS5mb3JFYWNoKChrZXkpPT57XG4gICAgICAgICAgICAgIGlmKHJlcy5pbmNsdWRlcygne3snK2tleSsnfX0nKSAmJiBwYXJhbXNba2V5XSAmJiAhcGFyYW1zW2tleV0udG9TdHJpbmcoKT8uaW5jbHVkZXMoJ3snKSl7XG4gICAgICAgICAgICAgICAgcmVzID0gcmVzLnJlcGxhY2UoJ3t7JytrZXkrJ319JywgcGFyYW1zW2tleV0pXG4gICAgICAgICAgICAgIH0gXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH1cbiAgICAgIGlmIChmaWVsZEluZm8uaHlwZXJsaW5rPy5saW5rSWQgJiYgZmllbGRJbmZvLmh5cGVybGluay5saW5rSWQubGVuZ3RoID4gMCkge1xuICAgICAgICBmaWVsZEluZm8uaHlwZXJsaW5rLmxpbmsgPSByZXM7XG4gICAgICB9XG4gICAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5IWVBFUkxJTks7XG4gICAgICBsZXQgb2JqOiBhbnkgPSB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICAgICAgb2JqWydvcmlnbmFsTGluayddID0gbGluaztcbiAgICAgIHJldHVybiBvYmo7XG4gICAgfSk7XG4gIH1cbn1cblxuICBhZGRDYWxlbmRhcihmaWVsZEluZm86IEFkZEZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLkNBTEVOREFSO1xuICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICB9XG5cbiAgLy8gYWRkIEF1dG9Db21wbGV0ZSBmb3IgRm9ybVxuICBhZGRBdXRvQ29tcGxldGUoZmllbGRJbmZvOiBBZGRGb3JtRmllbGQpOiBJRm9ybUZpZWxkIHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5BVVRPQ09NUExFVEU7XG4gICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gIH1cblxuICAvLyBTZWFyY2ggQXV0b0NvbXBsZXRlIERhdGEgZm9yIGZvcm1cbiAgZ2V0QXV0b0NvbXBsZXRlRGF0YShmb3JtRmllbGQ/OiBhbnksIHVuaXF1ZUtleT86IHN0cmluZywgZmlsdGVycz86IGFueVtdLCBzZWFyY2g6IHN0cmluZyA9ICcnKTogYW55IHtcbiAgICB0aGlzLnJlcXVlc3RTZXJ2aWNlLmdldDxhbnlbXSwgYW55PignL0RhdGEvRmV0Y2gnLCB7IHVuaXF1ZUtleTogdW5pcXVlS2V5LCBmaWx0ZXJzfSkuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KT0+e1xuICAgICAgaWYoc2VhcmNoKXtcbiAgICAgICBsZXQgZXhpc3RJblJlY29yZDogYm9vbGVhbiA9IHJlc3BvbnNlLnJlY29yZHMuc29tZSgocmVjb3JkOiBhbnkpPT4gcmVjb3JkW2Zvcm1GaWVsZC5kaXNwbGF5RmllbGRdICYmIHJlY29yZFtmb3JtRmllbGQuZGlzcGxheUZpZWxkXT8udG9TdHJpbmcoKT8udG9Mb3dlckNhc2UoKSA9PT0gc2VhcmNoPy50b0xvd2VyQ2FzZSgpKTtcbiAgICAgICAgaWYoIWV4aXN0SW5SZWNvcmQpe1xuICAgICAgICAgIHJlc3BvbnNlLnJlY29yZHMudW5zaGlmdCAoe1tmb3JtRmllbGQuZGlzcGxheUZpZWxkXTogc2VhcmNofSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGZvcm1GaWVsZC5kYXRhID0gWy4uLnJlc3BvbnNlLnJlY29yZHNdO1xuICAgIH0pO1xuICB9XG5cbiAgYWRkRHJvcGRvd24oZmllbGRJbmZvOiBBZGRGb3JtRmllbGQsIGRyb3BEb3duUHJvcD86IElEcm9wRG93blJlcXVlc3QpOiBhbnkge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLkRST1BET1dOO1xuICAgIGlmIChkcm9wRG93blByb3ApIHtcbiAgICAgIGxldCB1bmlxdWVLZXkgPSBkcm9wRG93blByb3AudW5pcXVlS2V5O1xuICAgICAgbGV0IHZhbHVlUHJvcCA9IGRyb3BEb3duUHJvcC52YWx1ZVByb3A7XG4gICAgICBsZXQgbGFiZWxQcm9wID0gZHJvcERvd25Qcm9wLmxhYmVsUHJvcDtcbiAgICAgIGxldCBmaWx0ZXJzOiBJU2V0RmlsdGVyW10gPSBkcm9wRG93blByb3AuZmlsdGVycyAmJiBkcm9wRG93blByb3AuZmlsdGVycy5sZW5ndGggPiAwID8gZHJvcERvd25Qcm9wLmZpbHRlcnMgOiBbXTtcbiAgICAgIGlmICh1bmlxdWVLZXkgJiYgdmFsdWVQcm9wICYmIGxhYmVsUHJvcCkge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXREcm9wZG93bkRhdGEoZmllbGRJbmZvLCB1bmlxdWVLZXksIHZhbHVlUHJvcCwgbGFiZWxQcm9wLCBmaWx0ZXJzKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gICAgfVxuICB9XG5cbiAgZ2V0RHJvcGRvd25EYXRhKGZpZWxkSW5mbzogQWRkRm9ybUZpZWxkLCB1bmlxdWVLZXk6IHN0cmluZywgdmFsdWVQcm9wOiBzdHJpbmcsIGxhYmVsUHJvcDogc3RyaW5nLCBmaWx0ZXJzOiBhbnlbXSkge1xuICAgIHJldHVybiB0aGlzLmRyb3Bkb3duU2VydmljZVxuICAgICAgLnNldERyb3BEb3duTGlzdChcbiAgICAgICAgdW5pcXVlS2V5LFxuICAgICAgICB2YWx1ZVByb3AsXG4gICAgICAgIGxhYmVsUHJvcCxcbiAgICAgICAgZmlsdGVyc1xuICAgICAgKVxuICAgICAgLnRoZW4oKHJlczogYW55KSA9PiB7XG4gICAgICAgIGZpZWxkSW5mby5kYXRhID0gcmVzO1xuICAgICAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGVycm9yOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuYXBpRXJyb3IoZXJyb3IpO1xuICAgICAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgYWRkTG9va1VwKGZpZWxkSW5mbzogQWRkRm9ybUZpZWxkKTogSUZvcm1GaWVsZCB7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuTE9PS1VQX0lOUFVUO1xuICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICB9XG5cbiAgYWRkRGlhbG9nKGZpZWxkSW5mbzogQWRkRm9ybUZpZWxkKTogSUZvcm1GaWVsZCB7XG4gICAgcmV0dXJuIHRoaXMuYWRkTG9va1VwKGZpZWxkSW5mbyk7XG4gIH1cblxuICBhZGRDb21wb25lbnQoZmllbGRJbmZvOiBBZGRGb3JtRmllbGQpOiBJRm9ybUZpZWxkIHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5DT01QT05FTlQ7XG4gICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gIH1cblxuICBhZGRIZWFkZXIoZmllbGRJbmZvOiBJRm9ybUZpZWxkKTogSUZvcm1GaWVsZCB7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuU0VDVElPTl9IRUFERVI7XG4gICAgZmllbGRJbmZvLmNsYXNzID0gJ2Zvcm0taGVhZGVyJztcbiAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgfVxuXG4gIGFkZE11bHRpU2VsZWN0KGZpZWxkSW5mbzogSUZvcm1GaWVsZCwgZHJvcERvd25Qcm9wPzogSURyb3BEb3duUmVxdWVzdCk6IGFueSB7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuTVVMVElTRUxFQ1Q7XG4gICAgaWYgKGRyb3BEb3duUHJvcCkge1xuICAgICAgbGV0IHVuaXF1ZUtleSA9IGRyb3BEb3duUHJvcC51bmlxdWVLZXk7XG4gICAgICBsZXQgdmFsdWVQcm9wID0gZHJvcERvd25Qcm9wLnZhbHVlUHJvcDtcbiAgICAgIGxldCBsYWJlbFByb3AgPSBkcm9wRG93blByb3AubGFiZWxQcm9wO1xuICAgICAgbGV0IGZpbHRlcnM6IElTZXRGaWx0ZXJbXSA9IGRyb3BEb3duUHJvcC5maWx0ZXJzICYmIGRyb3BEb3duUHJvcC5maWx0ZXJzLmxlbmd0aCA+IDAgPyBkcm9wRG93blByb3AuZmlsdGVycyA6IFtdO1xuICAgICAgaWYgKHVuaXF1ZUtleSAmJiB2YWx1ZVByb3AgJiYgbGFiZWxQcm9wKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldERyb3Bkb3duRGF0YShmaWVsZEluZm8sIHVuaXF1ZUtleSwgdmFsdWVQcm9wLCBsYWJlbFByb3AsIGZpbHRlcnMpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBmaWVsZEluZm8ub3B0aW9uTGFiZWwgPSBmaWVsZEluZm8ub3B0aW9uTGFiZWwgPyBmaWVsZEluZm8ub3B0aW9uTGFiZWwgOiAnbGFiZWwnO1xuICAgICAgZmllbGRJbmZvLm9wdGlvblZhbHVlID0gZmllbGRJbmZvLm9wdGlvblZhbHVlID8gZmllbGRJbmZvLm9wdGlvblZhbHVlIDogJ3ZhbHVlJztcbiAgICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICAgIH1cbiAgfVxuXG4gIGFkZEZpbGVVcGxvYWQoZmllbGRJbmZvOiBJRm9ybUZpZWxkKTogSUZvcm1GaWVsZCB7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuRklMRV9VUExPQUQ7XG4gICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gIH1cblxuICBhZGREaXNwbGF5RmlsZShmaWVsZEluZm86IElGb3JtRmllbGQpOiBJRm9ybUZpZWxkIHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5ESVNQTEFZX0ZJTEU7XG4gICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gIH1cblxuICAvLyBBZGRpbmcgT25DbGljayBCdXR0b24gRnVuY3Rpb24gZm9yIER5bmFtaWNGb3JtXG4gIGFkZEJ1dHRvbihmaWVsZEluZm86IElGb3JtRmllbGQpOiBJRm9ybUZpZWxkIHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5BRERfQlVUVE9OO1xuICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICB9XG5cbiAgLy8gQWRkaW5nIFN3aXRjaCBGdW5jdGlvbiBmb3IgRHluYW1pY0Zvcm1cbiAgYWRkU3dpdGNoKGZpZWxkSW5mbzogSUZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLlNXSVRDSDtcbiAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgfVxuXG4gIC8vIHN0YXJ0IGFkZCBuZXcgY2FyZCBmdW5jdGlvbmFsaXR5XG4gIGFkZENhcmQoZmllbGRJbmZvOiBJRm9ybUZpZWxkLCBjYXJkRGF0YT86IElMaXN0RmlsdGVyKTogSUZvcm1GaWVsZCB7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuQ0FSRDtcbiAgICBpZiAoY2FyZERhdGEgJiYgY2FyZERhdGEudW5pcXVlS2V5KSB7XG4gICAgICBpZihjYXJkRGF0YS5zb3J0cz8ubGVuZ3RoID4gMCl7XG4gICAgICAgIGNhcmREYXRhLnNvcnRzLmZvckVhY2goKHJlcykgPT57XG4gICAgICAgIHJlcy5kaXJlY3Rpb24gPSByZXMuZGlyZWN0aW9uID8gcmVzLmRpcmVjdGlvbiA6IEVHcmlkU29ydERpcmVjdGlvbi5BU0M7XG4gICAgICAgIH0pO1xuICAgICAgfSAgIFxuICAgICAgcmV0dXJuIHRoaXMuZ2V0Q2FyZERhdGEoZmllbGRJbmZvLCBjYXJkRGF0YS51bmlxdWVLZXksIGNhcmREYXRhLmZpbHRlcnMsIGNhcmREYXRhLnNvcnRzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gICAgfVxuICB9XG5cbiAgZ2V0Q2FyZERhdGEoZmllbGRJbmZvOiBhbnksIHVuaXF1ZUtleTogc3RyaW5nLCBmaWx0ZXJzOiBhbnlbXSA9IFtdLCBzb3J0czogYW55W10gPSBbXSk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0Q2FyZExpc3QodW5pcXVlS2V5LCBmaWx0ZXJzLCBzb3J0cylcbiAgICAgIC50aGVuKChyZXM6IGFueSkgPT4ge1xuICAgICAgICBmaWVsZEluZm8uY2FyZC5kYXRhID0gcmVzLnJlY29yZHM7XG4gICAgICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuYXBpRXJyb3IoZXJyb3IpO1xuICAgICAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgLy8gbG9hZCBjb21wb25lbnQgb24gZm9ybVxuICBzZXRBZGRDb21wb25lbnREYXRhKHtmb3JtU2VjdGlvbnN9OklEeW5hbWljRm9ybSxpZDpzdHJpbmcsdmFsdWU6YW55KXtcbiAgICBmb3JtU2VjdGlvbnM/LmZvckVhY2goKHNlY3Rpb24pPT57XG4gICAgICBzZWN0aW9uLmZpZWxkcy5mb3JFYWNoKChmaWVsZDphbnkpPT57XG4gICAgICAgIGlmKGZpZWxkLmNvbnRyb2w9PT1FRm9ybUNvbnRyb2wuQ09NUE9ORU5UICYmIGZpZWxkLmNvbXBvbmVudENvbnRyb2wgJiYgZmllbGQuY29tcG9uZW50Q29udHJvbD8uaWQ9PT1pZCl7XG4gICAgICAgICAgbGV0IGtleXMgPSBPYmplY3Qua2V5cyh2YWx1ZSk7XG4gICAgICAgICAga2V5cy5mb3JFYWNoKChrZXkpPT57XG4gICAgICAgICAgICBmaWVsZC5jb21wb25lbnRDb250cm9sLmRhdGEgPSB7IC4uLmZpZWxkLmNvbXBvbmVudENvbnRyb2w/LmRhdGEsW2tleV0gOiB2YWx1ZVtrZXldfTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB1dGlsaXRpZXMuY2hhbmdlRHluYW1pY0Zvcm1TdGF0ZShpZCwgZmllbGQuY29tcG9uZW50Q29udHJvbC5kYXRhKTtcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gc2V0IGZvcm1maWVsZCB2YWx1ZVxuICBzZXRGb3JtRmllbGRWYWx1ZShcbiAgICB7IGZvcm1TZWN0aW9ucyB9OiBJRHluYW1pY0Zvcm0sXG4gICAgZmllbGQ6IHN0cmluZyxcbiAgICB2YWx1ZTogYW55LFxuICAgIGRpc3BsYXlUZXh0OiBzdHJpbmcgPSAnJ1xuICApIHtcbiAgICBmb3JtU2VjdGlvbnM/LmZvckVhY2goKHNlY3Rpb24pID0+IHtcbiAgICAgIHNlY3Rpb24uZmllbGRzLmZvckVhY2goKGZvcm1GaWVsZCkgPT4ge1xuICAgICAgICBpZiAoZm9ybUZpZWxkLmZpZWxkPy50b0xvd2VyQ2FzZSgpID09PSBmaWVsZD8udG9Mb3dlckNhc2UoKSkge1xuICAgICAgICAgIGlmIChkaXNwbGF5VGV4dCAmJiBkaXNwbGF5VGV4dC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBmb3JtRmllbGQudmFsdWUgPSB7IHRleHQ6IGRpc3BsYXlUZXh0LCB2YWx1ZTogdmFsdWUgfTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZm9ybUZpZWxkLnZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIHNldCBmb3JtZmllbGQgcHJvcGVydHlcbiAgc2V0Rm9ybUZpZWxkUHJvcChcbiAgICB7IGZvcm1TZWN0aW9ucyB9OiBJRHluYW1pY0Zvcm0sXG4gICAgZmllbGQ6IHN0cmluZyxcbiAgICBwcm9wczogSURpY3Rpb25hcnlbXVxuICApIHtcbiAgICByZXR1cm4gZm9ybVNlY3Rpb25zPy5tYXAoKHNlY3Rpb246IGFueSkgPT4ge1xuICAgICAgcmV0dXJuIHNlY3Rpb24uZmllbGRzLm1hcCgoZm9ybUZpZWxkOiBhbnkpOiBhbnkgPT4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgKGZvcm1GaWVsZC5maWVsZD8udG9Mb3dlckNhc2UoKSA9PT0gZmllbGQ/LnRvTG93ZXJDYXNlKCkpIHx8XG4gICAgICAgICAgKGZvcm1GaWVsZC5sYWJlbCAmJiBmb3JtRmllbGQubGFiZWwudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09PSBmaWVsZD8udG9Mb3dlckNhc2UoKSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuIHByb3BzLm1hcCgocHJvcDogYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAoZm9ybUZpZWxkLmhhc093blByb3BlcnR5KHByb3AubmFtZSkpIHtcbiAgICAgICAgICAgICAgaWYocHJvcC5uYW1lID09PSAnbGFiZWwnICYmIHR5cGVvZiBmb3JtRmllbGQubGFiZWwgPT09ICdvYmplY3QnICYmICFwcm9wLm92ZXJyaWRlKXtcbiAgICAgICAgICAgICAgICByZXR1cm4gKGZvcm1GaWVsZFtwcm9wLm5hbWVdLm5hbWUgPSBwcm9wLnZhbHVlKTtcbiAgICAgICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChmb3JtRmllbGRbcHJvcC5uYW1lXSA9IHByb3AudmFsdWUpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNle1xuICAgICAgICAgICAgICByZXR1cm4gKGZvcm1GaWVsZFtwcm9wLm5hbWVdID0gcHJvcC52YWx1ZSk7XG4gICAgICAgICAgICAgIFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldENhcmRMaXN0KHVuaXF1ZUtleTogc3RyaW5nLCBmaWx0ZXJzOiBhbnlbXSA9IFtdLCBzb3J0czogYW55W10gPSBbXSkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLnJlcXVlc3RTZXJ2aWNlXG4gICAgICAgIC5nZXQ8YW55W10sIGFueT4oJy9EYXRhL0ZldGNoJywgeyB1bmlxdWVLZXk6IHVuaXF1ZUtleSwgZmlsdGVycywgc29ydHMgfSlcbiAgICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgICAocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICAgICAgaWYgKHJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgIHJldHVybiByZXNvbHZlKHJlc3BvbnNlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJldHVybiByZXNvbHZlKFtdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgICh7IGVycm9yIH06IGFueSkgPT4ge1xuICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfSk7XG4gIH1cbiAgLy8gRW5kIGFkZCBuZXcgY2FyZCBmdW5jdGlvbmFsaXR5XG5cbn1cbiJdfQ==
@@ -3615,11 +3615,22 @@ class FormService {
3615
3615
  fieldInfo.class = 'form-header';
3616
3616
  return this.addFormField(fieldInfo);
3617
3617
  }
3618
- addMultiSelect(fieldInfo) {
3618
+ addMultiSelect(fieldInfo, dropDownProp) {
3619
3619
  fieldInfo.control = EFormControl.MULTISELECT;
3620
- fieldInfo.optionLabel = fieldInfo.optionLabel ? fieldInfo.optionLabel : 'label';
3621
- fieldInfo.optionValue = fieldInfo.optionValue ? fieldInfo.optionValue : 'value';
3622
- return this.addFormField(fieldInfo);
3620
+ if (dropDownProp) {
3621
+ let uniqueKey = dropDownProp.uniqueKey;
3622
+ let valueProp = dropDownProp.valueProp;
3623
+ let labelProp = dropDownProp.labelProp;
3624
+ let filters = dropDownProp.filters && dropDownProp.filters.length > 0 ? dropDownProp.filters : [];
3625
+ if (uniqueKey && valueProp && labelProp) {
3626
+ return this.getDropdownData(fieldInfo, uniqueKey, valueProp, labelProp, filters);
3627
+ }
3628
+ }
3629
+ else {
3630
+ fieldInfo.optionLabel = fieldInfo.optionLabel ? fieldInfo.optionLabel : 'label';
3631
+ fieldInfo.optionValue = fieldInfo.optionValue ? fieldInfo.optionValue : 'value';
3632
+ return this.addFormField(fieldInfo);
3633
+ }
3623
3634
  }
3624
3635
  addFileUpload(fieldInfo) {
3625
3636
  fieldInfo.control = EFormControl.FILE_UPLOAD;