@seniorsistemas/components-ai 2.0.2 → 2.0.3

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.
@@ -128,7 +128,7 @@ export class DynamicFieldLookupComponent {
128
128
  }
129
129
  else {
130
130
  const upperTerm = term.toUpperCase();
131
- filterConditions.push(`UPPER(${field}) like '%${upperTerm}%'`);
131
+ filterConditions.push(`containing(UPPER(${field}), '${upperTerm}')`);
132
132
  }
133
133
  });
134
134
  if (filterConditions.length > 0) {
@@ -297,7 +297,7 @@ export class DynamicFieldLookupComponent {
297
297
  }
298
298
  else {
299
299
  const upperTerm = term.toUpperCase();
300
- filterConditions.push(`UPPER(${field}) like '%${upperTerm}%'`);
300
+ filterConditions.push(`containing(UPPER(${field}), '${upperTerm}')`);
301
301
  }
302
302
  });
303
303
  if (filterConditions.length > 0) {
@@ -770,4 +770,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
770
770
  }], mode: [{
771
771
  type: Input
772
772
  }] } });
773
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1maWVsZC1sb29rdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy1haS9zcmMvbGliL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtL2ZpZWxkcy9keW5hbWljLWZpZWxkLWxvb2t1cC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQWEsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0UsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFMUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzlELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRXRFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRWpGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBQ2xHLE9BQU8sRUFBRSxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQkFBZ0Is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LDBJQUNmLFlBQVksbTZCQUNaLFdBQVcscW9FQUNYLGFBQWEscVhBQ2Isa0JBQWtCLDBCQUNsQixhQUFhLGtEQUNiLDRCQUE0Qix5R0FDNUIscUJBQXFCOzs0RkF1VVosMkJBQTJCO2tCQXRWdkMsU0FBUzsrQkFDRSwwQkFBMEIsY0FDeEIsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osbUJBQW1CO3dCQUNuQixXQUFXO3dCQUNYLFlBQVk7d0JBQ1osZUFBZTt3QkFDZixZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsYUFBYTt3QkFDYixrQkFBa0I7d0JBQ2xCLGFBQWE7d0JBQ2IsNEJBQTRCO3dCQUM1QixxQkFBcUI7cUJBQ3RCLFlBQ1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMEtUO3VGQTRKUSxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3JtR3JvdXAsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQnV0dG9uTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9idXR0b24nO1xuaW1wb3J0IHsgSW5wdXRUZXh0TW9kdWxlIH0gZnJvbSAncHJpbWVuZy9pbnB1dHRleHQnO1xuaW1wb3J0IHsgRGlhbG9nTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9kaWFsb2cnO1xuaW1wb3J0IHsgVGFibGVNb2R1bGUgfSBmcm9tICdwcmltZW5nL3RhYmxlJztcbmltcG9ydCB7IFRvb2x0aXBNb2R1bGUgfSBmcm9tICdwcmltZW5nL3Rvb2x0aXAnO1xuaW1wb3J0IHsgT3ZlcmxheVBhbmVsTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9vdmVybGF5cGFuZWwnO1xuaW1wb3J0IHsgRHluYW1pY0Zvcm1GaWVsZENvbmZpZyB9IGZyb20gJy4uL21vZGVscy9keW5hbWljLWZvcm0ubW9kZWxzJztcbmltcG9ydCB7IFRyYW5zbGF0ZVBpcGUgfSBmcm9tICcuLi8uLi8uLi9waXBlcy90cmFuc2xhdGUucGlwZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGlvbkhlbHBlciB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL3RyYW5zbGF0aW9uLmhlbHBlcic7XG5pbXBvcnQgeyBUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy90cmFuc2xhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IER5bmFtaWNGaWVsZFdyYXBwZXJDb21wb25lbnQgfSBmcm9tICcuL2R5bmFtaWMtZmllbGQtd3JhcHBlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgTG9va3VwQ29sdW1uIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2VudGl0eS1saXN0LmNvbmZpZyc7XG5pbXBvcnQgeyBUYWJsZUxvYWRpbmdEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmVzL3RhYmxlLWxvYWRpbmcvdGFibGUtbG9hZGluZy5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzaWEtZHluYW1pYy1maWVsZC1sb29rdXAnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgQnV0dG9uTW9kdWxlLFxuICAgIElucHV0VGV4dE1vZHVsZSxcbiAgICBEaWFsb2dNb2R1bGUsXG4gICAgVGFibGVNb2R1bGUsXG4gICAgVG9vbHRpcE1vZHVsZSxcbiAgICBPdmVybGF5UGFuZWxNb2R1bGUsXG4gICAgVHJhbnNsYXRlUGlwZSxcbiAgICBEeW5hbWljRmllbGRXcmFwcGVyQ29tcG9uZW50LFxuICAgIFRhYmxlTG9hZGluZ0RpcmVjdGl2ZVxuICBdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxzaWEtZHluYW1pYy1maWVsZC13cmFwcGVyIFtmaWVsZF09XCJmaWVsZFwiIFtmb3JtXT1cImZvcm1cIiBbbW9kZV09XCJtb2RlXCI+XG4gICAgICA8ZGl2IFtmb3JtR3JvdXBdPVwiZm9ybVwiIGNsYXNzPVwibG9va3VwLWZpZWxkXCIgW25nQ2xhc3NdPVwieydkaXNhYmxlZCc6IGlzRmllbGREaXNhYmxlZCgpfVwiPlxuICAgICAgICA8IS0tIEhpZGRlbiBpbnB1dCBwYXJhIG8gZm9ybUNvbnRyb2wgLS0+XG4gICAgICAgIDxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgW2Zvcm1Db250cm9sTmFtZV09XCJmaWVsZC5maWVsZFwiIC8+XG4gICAgICAgIFxuICAgICAgICA8ZGl2IGNsYXNzPVwibG9va3VwLWlucHV0LWdyb3VwXCI+XG4gICAgICAgICAgPCEtLSBBdXRvY29tcGxldGUgbW9kZTogZWRpdGFibGUgaW5wdXQgLS0+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAqbmdJZj1cImlzQXV0b2NvbXBsZXRlXCJcbiAgICAgICAgICAgICNhdXRvY29tcGxldGVJbnB1dFxuICAgICAgICAgICAgcElucHV0VGV4dFxuICAgICAgICAgICAgW3ZhbHVlXT1cImF1dG9jb21wbGV0ZVRleHRcIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImdldFBsYWNlaG9sZGVyKClcIlxuICAgICAgICAgICAgW2NsYXNzLnAtaW52YWxpZF09XCJpc0ZpZWxkSW52YWxpZCgpXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0ZpZWxkRGlzYWJsZWQoKVwiXG4gICAgICAgICAgICBjbGFzcz1cImxvb2t1cC1kaXNwbGF5XCJcbiAgICAgICAgICAgIChpbnB1dCk9XCJvbkF1dG9jb21wbGV0ZUlucHV0KCRldmVudClcIlxuICAgICAgICAgICAgKGZvY3VzKT1cIm9uQXV0b2NvbXBsZXRlRm9jdXMoKVwiXG4gICAgICAgICAgICAoYmx1cik9XCJvbkF1dG9jb21wbGV0ZUJsdXIoKVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8IS0tIFN0YW5kYXJkIG1vZGU6IHJlYWRvbmx5IGlucHV0IC0tPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgKm5nSWY9XCIhaXNBdXRvY29tcGxldGVcIlxuICAgICAgICAgICAgcElucHV0VGV4dFxuICAgICAgICAgICAgW3ZhbHVlXT1cImRpc3BsYXlWYWx1ZVwiXG4gICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZ2V0UGxhY2Vob2xkZXIoKVwiXG4gICAgICAgICAgICBbY2xhc3MucC1pbnZhbGlkXT1cImlzRmllbGRJbnZhbGlkKClcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzRmllbGREaXNhYmxlZCgpXCJcbiAgICAgICAgICAgIHJlYWRvbmx5XG4gICAgICAgICAgICBjbGFzcz1cImxvb2t1cC1kaXNwbGF5XCJcbiAgICAgICAgICAgIChjbGljayk9XCJvcGVuTG9va3VwKClcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPCEtLSBBdXRvY29tcGxldGUgc3VnZ2VzdGlvbnMgZHJvcGRvd24gLS0+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImF1dG9jb21wbGV0ZS1zdWdnZXN0aW9uc1wiICpuZ0lmPVwic2hvd1N1Z2dlc3Rpb25zICYmIHN1Z2dlc3Rpb25zLmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJzdWdnZXN0aW9uLWl0ZW1cIlxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBzdWdnZXN0aW9uc1wiXG4gICAgICAgICAgICAgIChtb3VzZWRvd24pPVwic2VsZWN0U3VnZ2VzdGlvbihpdGVtKVwiPlxuICAgICAgICAgICAgICB7eyBmb3JtYXREaXNwbGF5VmFsdWUoaXRlbSkgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdXRvY29tcGxldGUtc3VnZ2VzdGlvbnNcIiAqbmdJZj1cInNob3dTdWdnZXN0aW9ucyAmJiBzdWdnZXN0aW9ucy5sZW5ndGggPT09IDAgJiYgYXV0b2NvbXBsZXRlTG9hZGluZ1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1Z2dlc3Rpb24taXRlbSBzdWdnZXN0aW9uLWxvYWRpbmdcIj5CdXNjYW5kby4uLjwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsb29rdXAtYnV0dG9uc1wiPlxuICAgICAgICAgICAgPHAtYnV0dG9uXG4gICAgICAgICAgICAgICpuZ0lmPVwiY3VycmVudFZhbHVlXCJcbiAgICAgICAgICAgICAgaWNvbj1cInBpIHBpLXRyYXNoXCJcbiAgICAgICAgICAgICAgc2V2ZXJpdHk9XCJkYW5nZXJcIlxuICAgICAgICAgICAgICBbdGV4dF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgW3JvdW5kZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIChvbkNsaWNrKT1cImNsZWFyVmFsdWUoKVwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0ZpZWxkRGlzYWJsZWQoKVwiXG4gICAgICAgICAgICAgIHBUb29sdGlwPVwiTGltcGFyXCJcbiAgICAgICAgICAgICAgdG9vbHRpcFBvc2l0aW9uPVwidG9wXCJcbiAgICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICAgID48L3AtYnV0dG9uPlxuICAgICAgICAgICAgPHAtYnV0dG9uXG4gICAgICAgICAgICAgIGljb249XCJwaSBwaS1zZWFyY2hcIlxuICAgICAgICAgICAgICBzZXZlcml0eT1cInNlY29uZGFyeVwiXG4gICAgICAgICAgICAgIFt0ZXh0XT1cInRydWVcIlxuICAgICAgICAgICAgICBbcm91bmRlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgKG9uQ2xpY2spPVwib3Blbkxvb2t1cCgpXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzRmllbGREaXNhYmxlZCgpXCJcbiAgICAgICAgICAgICAgcFRvb2x0aXA9XCJCdXNjYXJcIlxuICAgICAgICAgICAgICB0b29sdGlwUG9zaXRpb249XCJ0b3BcIlxuICAgICAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgPjwvcC1idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDwhLS0gTG9va3VwIERpYWxvZyAtLT5cbiAgICAgIDxwLWRpYWxvZ1xuICAgICAgICBbKHZpc2libGUpXT1cInNob3dMb29rdXBEaWFsb2dcIlxuICAgICAgICBbbW9kYWxdPVwidHJ1ZVwiXG4gICAgICAgIFtzdHlsZV09XCJ7IHdpZHRoOiAnODAwcHgnLCBtYXhIZWlnaHQ6ICc4MHZoJyB9XCJcbiAgICAgICAgW2NvbnRlbnRTdHlsZV09XCJ7IG1heEhlaWdodDogJ2NhbGMoODB2aCAtIDEyMHB4KScsIG92ZXJmbG93OiAnYXV0bycgfVwiXG4gICAgICAgIFtkcmFnZ2FibGVdPVwiZmFsc2VcIlxuICAgICAgICBbcmVzaXphYmxlXT1cInRydWVcIlxuICAgICAgICBbaGVhZGVyXT1cIidTZWxlY2lvbmFyICcgKyAoZmllbGQubGFiZWwgfCB0cmFuc2xhdGUpXCJcbiAgICAgICAgW2FwcGVuZFRvXT1cIidib2R5J1wiXG4gICAgICAgIChvbkhpZGUpPVwib25EaWFsb2dIaWRlKClcIlxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibG9va3VwLWRpYWxvZy1jb250ZW50XCI+XG4gICAgICAgICAgPCEtLSBTZWFyY2ggSW5wdXQgLS0+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaC13cmFwcGVyXCI+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgcElucHV0VGV4dFxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlYXJjaFRlcm1cIlxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ0J1c2NhciAnICsgKGZpZWxkLmxhYmVsIHwgdHJhbnNsYXRlKS50b0xvd2VyQ2FzZSgpICsgJy4uLidcIlxuICAgICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJvblNlYXJjaCgpXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJzZWFyY2gtaW5wdXQtZnVsbFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaC1idXR0b25zLWluc2lkZVwiPlxuICAgICAgICAgICAgICA8cC1idXR0b25cbiAgICAgICAgICAgICAgICAqbmdJZj1cInNlYXJjaFRlcm1cIlxuICAgICAgICAgICAgICAgIGljb249XCJwaSBwaS10cmFzaFwiXG4gICAgICAgICAgICAgICAgc2V2ZXJpdHk9XCJkYW5nZXJcIlxuICAgICAgICAgICAgICAgIFt0ZXh0XT1cInRydWVcIlxuICAgICAgICAgICAgICAgIFtyb3VuZGVkXT1cInRydWVcIlxuICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cImNsZWFyU2VhcmNoKClcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwic2VhcmNoLWJ1dHRvbi1jbGVhclwiXG4gICAgICAgICAgICAgICAgcFRvb2x0aXA9XCJMaW1wYXIgYnVzY2FcIlxuICAgICAgICAgICAgICAgIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiXG4gICAgICAgICAgICAgID48L3AtYnV0dG9uPlxuICAgICAgICAgICAgICA8cC1idXR0b25cbiAgICAgICAgICAgICAgICBpY29uPVwicGkgcGktc2VhcmNoXCJcbiAgICAgICAgICAgICAgICBzZXZlcml0eT1cInNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgW3RleHRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgW3JvdW5kZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgKG9uQ2xpY2spPVwib25TZWFyY2goKVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzZWFyY2gtYnV0dG9uLXNlYXJjaFwiXG4gICAgICAgICAgICAgICAgcFRvb2x0aXA9XCJCdXNjYXJcIlxuICAgICAgICAgICAgICAgIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiXG4gICAgICAgICAgICAgID48L3AtYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8IS0tIERhdGEgVGFibGUgLS0+XG4gICAgICAgICAgPHAtdGFibGVcbiAgICAgICAgICAgIFt2YWx1ZV09XCJmaWx0ZXJlZERhdGFcIlxuICAgICAgICAgICAgW3BhZ2luYXRvcl09XCJ0cnVlXCJcbiAgICAgICAgICAgIFtyb3dzXT1cInBhZ2VTaXplXCJcbiAgICAgICAgICAgIFt0b3RhbFJlY29yZHNdPVwidG90YWxSZWNvcmRzXCJcbiAgICAgICAgICAgIFtsYXp5XT1cInRydWVcIlxuICAgICAgICAgICAgKG9uTGF6eUxvYWQpPVwib25QYWdlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgW2xvYWRpbmddPVwibG9hZGluZ1wiIHNpYVRhYmxlTG9hZGluZ1xuICAgICAgICAgICAgW3Nob3dDdXJyZW50UGFnZVJlcG9ydF09XCJ0cnVlXCJcbiAgICAgICAgICAgIGN1cnJlbnRQYWdlUmVwb3J0VGVtcGxhdGU9XCJNb3N0cmFuZG8ge2ZpcnN0fSBhIHtsYXN0fSBkZSB7dG90YWxSZWNvcmRzfSByZWdpc3Ryb3NcIlxuICAgICAgICAgICAgZGF0YUtleT1cImlkXCJcbiAgICAgICAgICAgIFtyb3dIb3Zlcl09XCJ0cnVlXCJcbiAgICAgICAgICAgIHJlc3BvbnNpdmVMYXlvdXQ9XCJzY3JvbGxcIlxuICAgICAgICAgICAgc3R5bGVDbGFzcz1cInAtZGF0YXRhYmxlLXN0cmlwZWQgbG9va3VwLXRhYmxlXCJcbiAgICAgICAgICAgIFsoc2VsZWN0aW9uKV09XCJzZWxlY3RlZEl0ZW1cIlxuICAgICAgICAgICAgKG9uUm93U2VsZWN0KT1cIm9uUm93U2VsZWN0KCRldmVudClcIlxuICAgICAgICAgICAgc2VsZWN0aW9uTW9kZT1cInNpbmdsZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiPlxuICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgPHRoICpuZ0Zvcj1cImxldCBjb2wgb2YgY29sdW1uc1wiIFtzdHlsZS53aWR0aF09XCJjb2wud2lkdGhcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGNvbC5oZWFkZXIgfX1cbiAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImJvZHlcIiBsZXQtaXRlbT5cbiAgICAgICAgICAgICAgPHRyIFtwU2VsZWN0YWJsZVJvd109XCJpdGVtXCI+XG4gICAgICAgICAgICAgICAgPHRkICpuZ0Zvcj1cImxldCBjb2wgb2YgY29sdW1uc1wiPlxuICAgICAgICAgICAgICAgICAge3sgZ2V0RmllbGRWYWx1ZShpdGVtLCBjb2wuZmllbGQpIH19XG4gICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJlbXB0eW1lc3NhZ2VcIj5cbiAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgIDx0ZCBbYXR0ci5jb2xzcGFuXT1cImNvbHVtbnMubGVuZ3RoXCIgY2xhc3M9XCJlbXB0eS1tZXNzYWdlXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZW1wdHktc3RhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJwaSBwaS1zZWFyY2hcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgIDxwPk5lbmh1bSByZWdpc3RybyBlbmNvbnRyYWRvPC9wPlxuICAgICAgICAgICAgICAgICAgICA8c21hbGw+VGVudGUgYWp1c3RhciBvcyB0ZXJtb3MgZGUgYnVzY2E8L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9wLXRhYmxlPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvcC1kaWFsb2c+XG4gICAgPC9zaWEtZHluYW1pYy1maWVsZC13cmFwcGVyPlxuICBgLFxuICBzdHlsZXM6IFtgXG4gICAgLmxvb2t1cC1maWVsZCB7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB9XG5cbiAgICAubG9va3VwLWlucHV0LWdyb3VwIHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgXG4gICAgICAubG9va3VwLWRpc3BsYXkge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICBoZWlnaHQ6IDIuODU3cmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjc1cmVtIDRyZW0gMC43NXJlbSAwLjc1cmVtO1xuICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjU7XG4gICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIFxuICAgICAgICAmOmZvY3VzIHtcbiAgICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAubG9va3VwLWJ1dHRvbnMge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHJpZ2h0OiA0cHg7XG4gICAgICAgIHRvcDogNTAlO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGdhcDogMnB4O1xuICAgICAgICB6LWluZGV4OiAxMDtcbiAgICAgIH1cblxuICAgICAgOjpuZy1kZWVwIC5wLWJ1dHRvbiB7XG4gICAgICAgIHdpZHRoOiAycmVtICFpbXBvcnRhbnQ7XG4gICAgICAgIGhlaWdodDogMnJlbSAhaW1wb3J0YW50O1xuICAgICAgICBtaW4td2lkdGg6IDJyZW0gIWltcG9ydGFudDtcbiAgICAgICAgbWluLWhlaWdodDogMnJlbSAhaW1wb3J0YW50O1xuICAgICAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XG4gICAgICAgIG1hcmdpbjogMCAhaW1wb3J0YW50O1xuICAgICAgICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXIgIWltcG9ydGFudDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDtcbiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveCAhaW1wb3J0YW50O1xuICAgICAgICBcbiAgICAgICAgLnAtYnV0dG9uLWljb24ge1xuICAgICAgICAgIG1hcmdpbjogMCAhaW1wb3J0YW50O1xuICAgICAgICAgIGZvbnQtc2l6ZTogMC44NzVyZW0gIWltcG9ydGFudDtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgLnAtYnV0dG9uLWxhYmVsIHtcbiAgICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLmF1dG9jb21wbGV0ZS1zdWdnZXN0aW9ucyB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAxMDAlO1xuICAgICAgICBsZWZ0OiAwO1xuICAgICAgICByaWdodDogMDtcbiAgICAgICAgei1pbmRleDogMTAwMDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tcC1zdXJmYWNlLTAsICNmZmYpO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1wLXN1cmZhY2UtMzAwLCAjZDFkNWRiKTtcbiAgICAgICAgYm9yZGVyLXRvcDogbm9uZTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMCAwIDZweCA2cHg7XG4gICAgICAgIG1heC1oZWlnaHQ6IDIwMHB4O1xuICAgICAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgICAgICBib3gtc2hhZG93OiAwIDRweCA2cHggcmdiYSgwLCAwLCAwLCAwLjEpO1xuXG4gICAgICAgIC5zdWdnZXN0aW9uLWl0ZW0ge1xuICAgICAgICAgIHBhZGRpbmc6IDAuNjI1cmVtIDAuNzVyZW07XG4gICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgICAgICAgY29sb3I6IHZhcigtLXAtdGV4dC1jb2xvciwgIzMzMyk7XG4gICAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjE1cztcblxuICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tcC1zdXJmYWNlLTEwMCwgI2YzZjRmNik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgJi5zdWdnZXN0aW9uLWxvYWRpbmcge1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXAtdGV4dC1tdXRlZC1jb2xvciwgIzk5OSk7XG4gICAgICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7XG4gICAgICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLmxvb2t1cC1kaWFsb2ctY29udGVudCB7XG4gICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgIHBhZGRpbmc6IDA7XG5cbiAgICAgIC5zZWFyY2gtd3JhcHBlciB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG5cbiAgICAgICAgLnNlYXJjaC1pbnB1dC1mdWxsIHtcbiAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiA1LjVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuc2VhcmNoLWJ1dHRvbnMtaW5zaWRlIHtcbiAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgcmlnaHQ6IDRweDtcbiAgICAgICAgICB0b3A6IDUwJTtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBnYXA6IDJweDtcbiAgICAgICAgICBcbiAgICAgICAgICA6Om5nLWRlZXAgLnAtYnV0dG9uIHtcbiAgICAgICAgICAgIHdpZHRoOiAyLjVyZW0gIWltcG9ydGFudDtcbiAgICAgICAgICAgIGhlaWdodDogMi41cmVtICFpbXBvcnRhbnQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5sb29rdXAtdGFibGUge1xuICAgICAgICBmbGV4OiAxO1xuICAgICAgICBcbiAgICAgICAgLmVtcHR5LXN0YXRlIHtcbiAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgcGFkZGluZzogMzJweDtcbiAgICAgICAgICBjb2xvcjogdmFyKC0tcC10ZXh0LWNvbG9yLXNlY29uZGFyeSk7XG5cbiAgICAgICAgICBpIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogNDhweDtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDE2cHg7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBwIHtcbiAgICAgICAgICAgIG1hcmdpbjogOHB4IDA7XG4gICAgICAgICAgICBmb250LXNpemU6IDE2cHg7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgc21hbGwge1xuICAgICAgICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgYF1cbn0pXG5leHBvcnQgY2xhc3MgRHluYW1pY0ZpZWxkTG9va3VwQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBmaWVsZCE6IER5bmFtaWNGb3JtRmllbGRDb25maWc7XG4gIEBJbnB1dCgpIGZvcm0hOiBGb3JtR3JvdXA7XG4gIEBJbnB1dCgpIGZvcm1Hcm91cCE6IEZvcm1Hcm91cDtcbiAgQElucHV0KCkgbW9kZTogJ2Zvcm0nIHwgJ2ZpbHRlcicgPSAnZm9ybSc7XG5cbiAgZGlzcGxheVZhbHVlOiBzdHJpbmcgPSAnJztcbiAgc2hvd0xvb2t1cERpYWxvZzogYm9vbGVhbiA9IGZhbHNlO1xuICBsb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XG4gIHNlYXJjaFRlcm06IHN0cmluZyA9ICcnO1xuICBcbiAgZGF0YTogYW55W10gPSBbXTtcbiAgZmlsdGVyZWREYXRhOiBhbnlbXSA9IFtdO1xuICB0b3RhbFJlY29yZHM6IG51bWJlciA9IDA7XG4gIGN1cnJlbnRQYWdlOiBudW1iZXIgPSAwO1xuICBwYWdlU2l6ZTogbnVtYmVyID0gMTA7XG4gIHNlbGVjdGVkSXRlbTogYW55ID0gbnVsbDtcbiAgXG4gIGNvbHVtbnM6IExvb2t1cENvbHVtbltdID0gW107XG4gIGRpc3BsYXlGaWVsZDogc3RyaW5nID0gJ25hbWUnO1xuICB2YWx1ZUZpZWxkOiBzdHJpbmcgPSAnaWQnO1xuICBzZWFyY2hGaWVsZHM6IHN0cmluZ1tdID0gWyduYW1lJ107XG5cbiAgLy8gQXV0b2NvbXBsZXRlIHN0YXRlXG4gIGF1dG9jb21wbGV0ZVRleHQ6IHN0cmluZyA9ICcnO1xuICBzdWdnZXN0aW9uczogYW55W10gPSBbXTtcbiAgc2hvd1N1Z2dlc3Rpb25zOiBib29sZWFuID0gZmFsc2U7XG4gIGF1dG9jb21wbGV0ZUxvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBhdXRvY29tcGxldGVTdWJqZWN0ID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuICBwcml2YXRlIGF1dG9jb21wbGV0ZVN1Yj86IFN1YnNjcmlwdGlvbjtcblxuICBnZXQgaXNBdXRvY29tcGxldGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGQ/Lmxvb2t1cEF1dG9jb21wbGV0ZSA9PT0gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IG1pbkxlbmd0aCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmZpZWxkPy5sb29rdXBBdXRvY29tcGxldGVNaW5MZW5ndGggPz8gMjtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdHJhbnNsYXRpb25TZXJ2aWNlOiBUcmFuc2xhdGlvblNlcnZpY2UpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZXR1cExvb2t1cENvbmZpZygpO1xuICAgIHRoaXMud2F0Y2hWYWx1ZUNoYW5nZXMoKTtcbiAgICB0aGlzLnNldHVwQXV0b2NvbXBsZXRlKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmF1dG9jb21wbGV0ZVN1Yj8udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBBdXRvY29tcGxldGUoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmlzQXV0b2NvbXBsZXRlKSByZXR1cm47XG4gICAgdGhpcy5hdXRvY29tcGxldGVTdWIgPSB0aGlzLmF1dG9jb21wbGV0ZVN1YmplY3QucGlwZShcbiAgICAgIGRlYm91bmNlVGltZSgzMDApLFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxuICAgICkuc3Vic2NyaWJlKHRlcm0gPT4ge1xuICAgICAgaWYgKHRlcm0ubGVuZ3RoID49IHRoaXMubWluTGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuc2VhcmNoU3VnZ2VzdGlvbnModGVybSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnN1Z2dlc3Rpb25zID0gW107XG4gICAgICAgIHRoaXMuc2hvd1N1Z2dlc3Rpb25zID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBvbkF1dG9jb21wbGV0ZUlucHV0KGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IHZhbHVlID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZTtcbiAgICB0aGlzLmF1dG9jb21wbGV0ZVRleHQgPSB2YWx1ZTtcbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICB0aGlzLmNsZWFyVmFsdWUoKTtcbiAgICAgIHRoaXMuc3VnZ2VzdGlvbnMgPSBbXTtcbiAgICAgIHRoaXMuc2hvd1N1Z2dlc3Rpb25zID0gZmFsc2U7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuYXV0b2NvbXBsZXRlU3ViamVjdC5uZXh0KHZhbHVlKTtcbiAgfVxuXG4gIG9uQXV0b2NvbXBsZXRlRm9jdXMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYXV0b2NvbXBsZXRlVGV4dC5sZW5ndGggPj0gdGhpcy5taW5MZW5ndGggJiYgdGhpcy5zdWdnZXN0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnNob3dTdWdnZXN0aW9ucyA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgb25BdXRvY29tcGxldGVCbHVyKCk6IHZvaWQge1xuICAgIC8vIERlbGF5IHRvIGFsbG93IGNsaWNrIG9uIHN1Z2dlc3Rpb25cbiAgICBzZXRUaW1lb3V0KCgpID0+IHsgdGhpcy5zaG93U3VnZ2VzdGlvbnMgPSBmYWxzZTsgfSwgMjAwKTtcbiAgfVxuXG4gIHNlbGVjdFN1Z2dlc3Rpb24oaXRlbTogYW55KTogdm9pZCB7XG4gICAgdGhpcy5zZXRWYWx1ZShpdGVtKTtcbiAgICB0aGlzLmRpc3BsYXlWYWx1ZSA9IHRoaXMuZm9ybWF0RGlzcGxheVZhbHVlKGl0ZW0pO1xuICAgIHRoaXMuYXV0b2NvbXBsZXRlVGV4dCA9IHRoaXMuZGlzcGxheVZhbHVlO1xuICAgIHRoaXMuc3VnZ2VzdGlvbnMgPSBbXTtcbiAgICB0aGlzLnNob3dTdWdnZXN0aW9ucyA9IGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBzZWFyY2hTdWdnZXN0aW9ucyh0ZXJtOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZmllbGQ/Lmxvb2t1cFNlcnZpY2UpIHJldHVybjtcbiAgICB0aGlzLmF1dG9jb21wbGV0ZUxvYWRpbmcgPSB0cnVlO1xuICAgIHRoaXMuc2hvd1N1Z2dlc3Rpb25zID0gdHJ1ZTtcblxuICAgIGNvbnN0IGxpc3RQYXJhbXM6IGFueSA9IHsgcGFnZTogMCwgc2l6ZTogMTAgfTtcblxuICAgIGlmICh0aGlzLmZpZWxkLmxvb2t1cFNvcnQpIHtcbiAgICAgIGxpc3RQYXJhbXMuc29ydCA9IHRoaXMuZmllbGQubG9va3VwU29ydDtcbiAgICB9XG5cbiAgICBjb25zdCBmaWx0ZXJDb25kaXRpb25zOiBzdHJpbmdbXSA9IFtdO1xuICAgIGNvbnN0IGlzTnVtZXJpY1Rlcm0gPSAhaXNOYU4oTnVtYmVyKHRlcm0pKSAmJiB0ZXJtICE9PSAnJztcblxuICAgIHRoaXMuc2VhcmNoRmllbGRzLmZvckVhY2goZmllbGQgPT4ge1xuICAgICAgY29uc3QgY29sdW1uID0gdGhpcy5jb2x1bW5zLmZpbmQoY29sID0+IGNvbC5maWVsZCA9PT0gZmllbGQpO1xuICAgICAgY29uc3QgZmllbGRUeXBlID0gY29sdW1uPy50eXBlIHx8ICd0ZXh0JztcblxuICAgICAgaWYgKGZpZWxkVHlwZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgaWYgKGlzTnVtZXJpY1Rlcm0pIHtcbiAgICAgICAgICBmaWx0ZXJDb25kaXRpb25zLnB1c2goYCR7ZmllbGR9IGVxICR7dGVybX1gKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgdXBwZXJUZXJtID0gdGVybS50b1VwcGVyQ2FzZSgpO1xuICAgICAgICBmaWx0ZXJDb25kaXRpb25zLnB1c2goYFVQUEVSKCR7ZmllbGR9KSBsaWtlICclJHt1cHBlclRlcm19JSdgKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmIChmaWx0ZXJDb25kaXRpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgIGxpc3RQYXJhbXMuZmlsdGVyUXVlcnkgPSBmaWx0ZXJDb25kaXRpb25zLmpvaW4oJyBvciAnKTtcbiAgICB9XG5cbiAgICAvLyBBcHBseSBsb29rdXBGaWx0ZXJzXG4gICAgaWYgKHRoaXMuZmllbGQubG9va3VwRmlsdGVycykge1xuICAgICAgY29uc3QgZXh0cmEgPSB0eXBlb2YgdGhpcy5maWVsZC5sb29rdXBGaWx0ZXJzID09PSAnZnVuY3Rpb24nXG4gICAgICAgID8gdGhpcy5maWVsZC5sb29rdXBGaWx0ZXJzKHRoaXMuZm9ybUdyb3VwPy52YWx1ZSB8fCB7fSlcbiAgICAgICAgOiB0aGlzLmZpZWxkLmxvb2t1cEZpbHRlcnM7XG4gICAgICBpZiAoZXh0cmEpIHtcbiAgICAgICAgbGlzdFBhcmFtcy5maWx0ZXJRdWVyeSA9IGxpc3RQYXJhbXMuZmlsdGVyUXVlcnlcbiAgICAgICAgICA/IGAoJHtsaXN0UGFyYW1zLmZpbHRlclF1ZXJ5fSkgYW5kICgke2V4dHJhfSlgXG4gICAgICAgICAgOiBleHRyYTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmZpZWxkLmxvb2t1cFNlcnZpY2UubGlzdChsaXN0UGFyYW1zKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuc3VnZ2VzdGlvbnMgPSByZXMuY29udGVudHMgfHwgW107XG4gICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlTG9hZGluZyA9IGZhbHNlO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgIHRoaXMuc3VnZ2VzdGlvbnMgPSBbXTtcbiAgICAgICAgdGhpcy5hdXRvY29tcGxldGVMb2FkaW5nID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHdhdGNoVmFsdWVDaGFuZ2VzKCk6IHZvaWQge1xuICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmdldEZvcm1Db250cm9sKCk7XG4gICAgaWYgKGNvbnRyb2wpIHtcbiAgICAgIC8vIENhcnJlZ2FyIHZhbG9yIGluaWNpYWxcbiAgICAgIGlmIChjb250cm9sLnZhbHVlKSB7XG4gICAgICAgIHRoaXMuaGFuZGxlVmFsdWVEaXNwbGF5KGNvbnRyb2wudmFsdWUpO1xuICAgICAgfVxuICAgICAgXG4gICAgICAvLyBPYnNlcnZhciBtdWRhbsOnYXNcbiAgICAgIGNvbnRyb2wudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgodmFsdWU6IGFueSkgPT4ge1xuICAgICAgICBpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCAmJiB2YWx1ZSAhPT0gJycpIHtcbiAgICAgICAgICB0aGlzLmhhbmRsZVZhbHVlRGlzcGxheSh2YWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5kaXNwbGF5VmFsdWUgPSAnJztcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE9idMOpbSBvIEZvcm1Db250cm9sLCBsaWRhbmRvIGNvbSBjYW1wb3MgYW5pbmhhZG9zIChjb20gcG9udG8gbm8gbm9tZSlcbiAgICovXG4gIHByaXZhdGUgZ2V0Rm9ybUNvbnRyb2woKSB7XG4gICAgaWYgKCF0aGlzLmZpZWxkPy5maWVsZCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLy8gQWNlc3NhIGRpcmV0YW1lbnRlIHZpYSBjb250cm9sc1tdIHBvaXMgZm9ybS5nZXQoKSBuw6NvIGZ1bmNpb25hIGNvbSBjYW1wb3MgcXVlIHTDqm0gcG9udG9cbiAgICByZXR1cm4gdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMuZmllbGQuZmllbGRdO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgdmFsdWUoKTogYW55IHtcbiAgICBjb25zdCBjb250cm9sID0gdGhpcy5nZXRGb3JtQ29udHJvbCgpO1xuICAgIHJldHVybiBjb250cm9sPy52YWx1ZTtcbiAgfVxuXG4gIGdldCBjdXJyZW50VmFsdWUoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0VmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmdldEZvcm1Db250cm9sKCk7XG4gICAgY29udHJvbD8uc2V0VmFsdWUodmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cExvb2t1cENvbmZpZygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5maWVsZCkge1xuICAgICAgdGhpcy5kaXNwbGF5RmllbGQgPSB0aGlzLmZpZWxkLmxvb2t1cERpc3BsYXlGaWVsZCB8fCAnbmFtZSc7XG4gICAgICB0aGlzLnZhbHVlRmllbGQgPSB0aGlzLmZpZWxkLmxvb2t1cFZhbHVlRmllbGQgfHwgJ2lkJztcbiAgICAgIHRoaXMuc2VhcmNoRmllbGRzID0gdGhpcy5maWVsZC5sb29rdXBTZWFyY2hGaWVsZHMgfHwgWyduYW1lJ107XG4gICAgICB0aGlzLmNvbHVtbnMgPSB0aGlzLmZpZWxkLmxvb2t1cENvbHVtbnMgfHwgW1xuICAgICAgICB7IGZpZWxkOiB0aGlzLmRpc3BsYXlGaWVsZCwgaGVhZGVyOiAnTm9tZScsIHdpZHRoOiAnMTAwJScgfVxuICAgICAgXTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVZhbHVlRGlzcGxheSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09ICcnKSB7XG4gICAgICB0aGlzLmRpc3BsYXlWYWx1ZSA9ICcnO1xuICAgICAgdGhpcy5hdXRvY29tcGxldGVUZXh0ID0gJyc7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIFxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICE9PSBudWxsKSB7XG4gICAgICB0aGlzLmRpc3BsYXlWYWx1ZSA9IHRoaXMuZm9ybWF0RGlzcGxheVZhbHVlKHZhbHVlKTtcbiAgICAgIHRoaXMuYXV0b2NvbXBsZXRlVGV4dCA9IHRoaXMuZGlzcGxheVZhbHVlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgICB0aGlzLmRpc3BsYXlWYWx1ZSA9ICcnO1xuICAgICAgdGhpcy5hdXRvY29tcGxldGVUZXh0ID0gJyc7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgZm9ybWF0RGlzcGxheVZhbHVlKGl0ZW06IGFueSk6IHN0cmluZyB7XG4gICAgaWYgKCFpdGVtKSByZXR1cm4gJyc7XG4gICAgXG4gICAgaWYgKHRoaXMuZmllbGQ/Lmxvb2t1cERpc3BsYXlGaWVsZHMgJiYgdGhpcy5maWVsZC5sb29rdXBEaXNwbGF5RmllbGRzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHZhbHVlcyA9IHRoaXMuZmllbGQubG9va3VwRGlzcGxheUZpZWxkc1xuICAgICAgICAubWFwKGZpZWxkTmFtZSA9PiB0aGlzLmdldEZpZWxkVmFsdWUoaXRlbSwgZmllbGROYW1lKSlcbiAgICAgICAgLmZpbHRlcih2YWx1ZSA9PiB2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlICE9PSAnJyk7XG4gICAgICBcbiAgICAgIHJldHVybiB2YWx1ZXMuam9pbignIC0gJyk7XG4gICAgfVxuICAgIFxuICAgIHJldHVybiB0aGlzLmdldEZpZWxkVmFsdWUoaXRlbSwgdGhpcy5kaXNwbGF5RmllbGQpIHx8ICcnO1xuICB9XG5cbiAgaXNGaWVsZEludmFsaWQoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgY29udHJvbCA9IHRoaXMuZ2V0Rm9ybUNvbnRyb2woKTtcbiAgICByZXR1cm4gISEoY29udHJvbCAmJiBjb250cm9sLmludmFsaWQgJiYgKGNvbnRyb2wuZGlydHkgfHwgY29udHJvbC50b3VjaGVkKSk7XG4gIH1cblxuICBpc0ZpZWxkRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgY29udHJvbCA9IHRoaXMuZ2V0Rm9ybUNvbnRyb2woKTtcbiAgICByZXR1cm4gY29udHJvbD8uZGlzYWJsZWQgfHwgZmFsc2U7XG4gIH1cblxuICBnZXRQbGFjZWhvbGRlcigpOiBzdHJpbmcge1xuICAgIHJldHVybiBUcmFuc2xhdGlvbkhlbHBlci5nZXRGaWx0ZXJQbGFjZWhvbGRlcihcbiAgICAgIHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLFxuICAgICAgdGhpcy5tb2RlLFxuICAgICAgdGhpcy5maWVsZC5sYWJlbCxcbiAgICAgIHRoaXMuZmllbGQucGxhY2Vob2xkZXJcbiAgICApO1xuICB9XG5cbiAgb3Blbkxvb2t1cCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc0ZpZWxkRGlzYWJsZWQoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBcbiAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkSXRlbSgpO1xuICAgIFxuICAgIHRoaXMuc2hvd0xvb2t1cERpYWxvZyA9IHRydWU7XG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IDA7XG4gICAgdGhpcy5zZWFyY2hUZXJtID0gJyc7XG4gICAgLy8gRGVsYXkgbG9hZERhdGEgdG8gbmV4dCBtYWNyb3Rhc2sgdG8gYXZvaWQgTkcwMTAwXG4gICAgLy8gKHAtZGlhbG9nIHRyaWdnZXJzIGEgQ0QgY3ljbGUgb24gb3BlbiB0aGF0IGNvbmZsaWN0cyB3aXRoIGxvYWRpbmcgc3RhdGUgY2hhbmdlKVxuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5sb2FkRGF0YSgpLCAwKTtcbiAgfVxuXG4gIG9uRGlhbG9nSGlkZSgpOiB2b2lkIHtcbiAgICB0aGlzLnNlYXJjaFRlcm0gPSAnJztcbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gMDtcbiAgfVxuXG4gIG9uUGFnZUNoYW5nZShldmVudDogYW55KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnNob3dMb29rdXBEaWFsb2cpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBuZXdQYWdlID0gZXZlbnQuZmlyc3QgLyBldmVudC5yb3dzO1xuICAgIGlmIChuZXdQYWdlID09PSB0aGlzLmN1cnJlbnRQYWdlICYmIHRoaXMuZmlsdGVyZWREYXRhLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgXG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IG5ld1BhZ2U7XG4gICAgdGhpcy5sb2FkRGF0YSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2FkRGF0YSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZmllbGQ/Lmxvb2t1cFNlcnZpY2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgIFxuICAgIGNvbnN0IGxpc3RQYXJhbXM6IGFueSA9IHsgXG4gICAgICBwYWdlOiB0aGlzLmN1cnJlbnRQYWdlLFxuICAgICAgc2l6ZTogdGhpcy5wYWdlU2l6ZVxuICAgIH07XG5cbiAgICBpZiAodGhpcy5maWVsZC5sb29rdXBTb3J0KSB7XG4gICAgICBsaXN0UGFyYW1zLnNvcnQgPSB0aGlzLmZpZWxkLmxvb2t1cFNvcnQ7XG4gICAgfVxuICAgIFxuICAgIGlmICh0aGlzLnNlYXJjaFRlcm0udHJpbSgpKSB7XG4gICAgICBjb25zdCB0ZXJtID0gdGhpcy5zZWFyY2hUZXJtLnRyaW0oKTtcbiAgICAgIGNvbnN0IGZpbHRlckNvbmRpdGlvbnM6IHN0cmluZ1tdID0gW107XG4gICAgICBjb25zdCBpc051bWVyaWNUZXJtID0gIWlzTmFOKE51bWJlcih0ZXJtKSkgJiYgdGVybSAhPT0gJyc7XG4gICAgICBcbiAgICAgIHRoaXMuc2VhcmNoRmllbGRzLmZvckVhY2goZmllbGQgPT4ge1xuICAgICAgICBjb25zdCBjb2x1bW4gPSB0aGlzLmNvbHVtbnMuZmluZChjb2wgPT4gY29sLmZpZWxkID09PSBmaWVsZCk7XG4gICAgICAgIGNvbnN0IGZpZWxkVHlwZSA9IGNvbHVtbj8udHlwZSB8fCAndGV4dCc7XG4gICAgICAgIFxuICAgICAgICBpZiAoZmllbGRUeXBlID09PSAnbnVtYmVyJykge1xuICAgICAgICAgIGlmIChpc051bWVyaWNUZXJtKSB7XG4gICAgICAgICAgICBmaWx0ZXJDb25kaXRpb25zLnB1c2goYCR7ZmllbGR9IGVxICR7dGVybX1gKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgdXBwZXJUZXJtID0gdGVybS50b1VwcGVyQ2FzZSgpO1xuICAgICAgICAgIGZpbHRlckNvbmRpdGlvbnMucHVzaChgVVBQRVIoJHtmaWVsZH0pIGxpa2UgJyUke3VwcGVyVGVybX0lJ2ApO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIFxuICAgICAgaWYgKGZpbHRlckNvbmRpdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICBsaXN0UGFyYW1zLmZpbHRlclF1ZXJ5ID0gZmlsdGVyQ29uZGl0aW9ucy5qb2luKCcgb3IgJyk7XG4gICAgICB9XG4gICAgfVxuICAgIFxuICAgIGlmICh0aGlzLmZpZWxkLmxvb2t1cEZpbHRlcnMpIHtcbiAgICAgIGxldCBleHRyYUZpbHRlciA9ICcnO1xuICAgICAgaWYgKHR5cGVvZiB0aGlzLmZpZWxkLmxvb2t1cEZpbHRlcnMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgZXh0cmFGaWx0ZXIgPSB0aGlzLmZpZWxkLmxvb2t1cEZpbHRlcnModGhpcy5mb3JtR3JvdXA/LnZhbHVlIHx8IHt9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGV4dHJhRmlsdGVyID0gdGhpcy5maWVsZC5sb29rdXBGaWx0ZXJzO1xuICAgICAgfVxuICAgICAgXG4gICAgICBpZiAoZXh0cmFGaWx0ZXIpIHtcbiAgICAgICAgaWYgKGxpc3RQYXJhbXMuZmlsdGVyUXVlcnkpIHtcbiAgICAgICAgICBsaXN0UGFyYW1zLmZpbHRlclF1ZXJ5ID0gYCgke2xpc3RQYXJhbXMuZmlsdGVyUXVlcnl9KSBhbmQgKCR7ZXh0cmFGaWx0ZXJ9KWA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbGlzdFBhcmFtcy5maWx0ZXJRdWVyeSA9IGV4dHJhRmlsdGVyO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIFxuICAgIHRoaXMuZmllbGQubG9va3VwU2VydmljZS5saXN0KGxpc3RQYXJhbXMpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmRhdGEgPSByZXNwb25zZS5jb250ZW50cyB8fCBbXTtcbiAgICAgICAgdGhpcy5maWx0ZXJlZERhdGEgPSBbLi4udGhpcy5kYXRhXTtcbiAgICAgICAgdGhpcy50b3RhbFJlY29yZHMgPSByZXNwb25zZS50b3RhbEVsZW1lbnRzIHx8IDA7XG4gICAgICAgIFxuICAgICAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkSXRlbSgpO1xuICAgICAgICBcbiAgICAgICAgLy8gQXDDs3MgY2FycmVnYXIgb3MgZGFkb3MgZGEgZ3JpZCwgc2UgdGVtb3MgdW0gdmFsb3Igc2VsZWNpb25hZG8gbWFzIHNlbSBkaXNwbGF5VmFsdWUsXG4gICAgICAgIC8vIHRlbnRhciBlbmNvbnRyYXIgbyBpdGVtIG5vcyBkYWRvcyBjYXJyZWdhZG9zXG4gICAgICAgIGlmICh0aGlzLnZhbHVlICYmICF0aGlzLmRpc3BsYXlWYWx1ZSkge1xuICAgICAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLmZpbHRlcmVkRGF0YS5maW5kKGkgPT4gaVt0aGlzLnZhbHVlRmllbGRdID09PSB0aGlzLnZhbHVlKTtcbiAgICAgICAgICBpZiAoaXRlbSkge1xuICAgICAgICAgICAgdGhpcy5kaXNwbGF5VmFsdWUgPSB0aGlzLmZvcm1hdERpc3BsYXlWYWx1ZShpdGVtKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoX2Vycm9yOiB1bmtub3duKSA9PiB7XG4gICAgICAgIHRoaXMuZGF0YSA9IFtdO1xuICAgICAgICB0aGlzLmZpbHRlcmVkRGF0YSA9IFtdO1xuICAgICAgICB0aGlzLnRvdGFsUmVjb3JkcyA9IDA7XG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVTZWxlY3RlZEl0ZW0oKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnZhbHVlKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbSA9IG51bGw7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIFxuICAgIC8vIHZhbHVlIGNhbiBiZSBhIGZ1bGwgb2JqZWN0IG9yIGp1c3QgYW4gSURcbiAgICBjb25zdCB2YWx1ZUlkID0gdHlwZW9mIHRoaXMudmFsdWUgPT09ICdvYmplY3QnID8gdGhpcy52YWx1ZVt0aGlzLnZhbHVlRmllbGRdIDogdGhpcy52YWx1ZTtcbiAgICBjb25zdCBpdGVtID0gdGhpcy5maWx0ZXJlZERhdGEuZmluZChpID0+IGlbdGhpcy52YWx1ZUZpZWxkXSA9PT0gdmFsdWVJZCk7XG4gICAgaWYgKGl0ZW0pIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtID0gaXRlbTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB0aGlzLnZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgLy8gSXRlbSBub3QgaW4gY3VycmVudCBwYWdlIGJ1dCB3ZSBoYXZlIHRoZSBmdWxsIG9iamVjdCBmcm9tIGF1dG9jb21wbGV0ZVxuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW0gPSB0aGlzLnZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIG9uU2VhcmNoKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zaG93TG9va3VwRGlhbG9nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIFxuICAgIHRoaXMuY3VycmVudFBhZ2UgPSAwO1xuICAgIHRoaXMubG9hZERhdGEoKTtcbiAgfVxuXG4gIGNsZWFyU2VhcmNoKCk6IHZvaWQge1xuICAgIHRoaXMuc2VhcmNoVGVybSA9ICcnO1xuICAgIHRoaXMuY3VycmVudFBhZ2UgPSAwO1xuICAgIHRoaXMubG9hZERhdGEoKTtcbiAgfVxuXG4gIHNlbGVjdEl0ZW0oaXRlbTogYW55KTogdm9pZCB7XG4gICAgLy8gQ2xvc2UgZGlhbG9nIGZpcnN0LCB0aGVuIHNldCB2YWx1ZSBpbiBuZXh0IHRpY2sgdG8gcHJldmVudFxuICAgIC8vIGNsaWNrIGV2ZW50IGZyb20gcHJvcGFnYXRpbmcgdG8gZWxlbWVudHMgYmVoaW5kIHRoZSBkaWFsb2dcbiAgICB0aGlzLnNob3dMb29rdXBEaWFsb2cgPSBmYWxzZTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuc2V0VmFsdWUoaXRlbSk7XG4gICAgICB0aGlzLmRpc3BsYXlWYWx1ZSA9IHRoaXMuZm9ybWF0RGlzcGxheVZhbHVlKGl0ZW0pO1xuICAgIH0pO1xuICB9XG5cbiAgb25Sb3dTZWxlY3QoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIC8vIFByZXZlbnQgdGhlIGNsaWNrIGV2ZW50IGZyb20gcHJvcGFnYXRpbmcgYWZ0ZXIgdGhlIGRpYWxvZyBjbG9zZXMsXG4gICAgLy8gd2hpY2ggY291bGQgdHJpZ2dlciBidXR0b25zIGJlaGluZCB0aGUgZGlhbG9nIChlLmcuIGlubGluZS1lZGl0IHNhdmUgYnV0dG9uKVxuICAgIGlmIChldmVudC5vcmlnaW5hbEV2ZW50KSB7XG4gICAgICBldmVudC5vcmlnaW5hbEV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgZXZlbnQub3JpZ2luYWxFdmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgICB0aGlzLnNlbGVjdEl0ZW0oZXZlbnQuZGF0YSk7XG4gIH1cblxuICBjbGVhclZhbHVlKCk6IHZvaWQge1xuICAgIHRoaXMuc2V0VmFsdWUobnVsbCk7XG4gICAgdGhpcy5kaXNwbGF5VmFsdWUgPSAnJztcbiAgICB0aGlzLmF1dG9jb21wbGV0ZVRleHQgPSAnJztcbiAgICB0aGlzLnNlbGVjdGVkSXRlbSA9IG51bGw7XG4gICAgdGhpcy5zdWdnZXN0aW9ucyA9IFtdO1xuICAgIHRoaXMuc2hvd1N1Z2dlc3Rpb25zID0gZmFsc2U7XG4gIH1cblxuICBnZXRGaWVsZFZhbHVlKGl0ZW06IGFueSwgZmllbGQ6IHN0cmluZyk6IGFueSB7XG4gICAgcmV0dXJuIGZpZWxkLnNwbGl0KCcuJykucmVkdWNlKChvYmosIGtleSkgPT4gb2JqPy5ba2V5XSwgaXRlbSkgfHwgJyc7XG4gIH1cbn1cbiJdfQ==
773
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1maWVsZC1sb29rdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy1haS9zcmMvbGliL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtL2ZpZWxkcy9keW5hbWljLWZpZWxkLWxvb2t1cC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQWEsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0UsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFMUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzlELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRXRFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRWpGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBQ2xHLE9BQU8sRUFBRSxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQkFBZ0Is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ZUFBZSwwSUFDZixZQUFZLG02QkFDWixXQUFXLHFvRUFDWCxhQUFhLHFYQUNiLGtCQUFrQiwwQkFDbEIsYUFBYSxrREFDYiw0QkFBNEIseUdBQzVCLHFCQUFxQjs7NEZBdVVaLDJCQUEyQjtrQkF0VnZDLFNBQVM7K0JBQ0UsMEJBQTBCLGNBQ3hCLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLG1CQUFtQjt3QkFDbkIsV0FBVzt3QkFDWCxZQUFZO3dCQUNaLGVBQWU7d0JBQ2YsWUFBWTt3QkFDWixXQUFXO3dCQUNYLGFBQWE7d0JBQ2Isa0JBQWtCO3dCQUNsQixhQUFhO3dCQUNiLDRCQUE0Qjt3QkFDNUIscUJBQXFCO3FCQUN0QixZQUNTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTBLVDt1RkE0SlEsS0FBSztzQkFBYixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRm9ybUdyb3VwLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEJ1dHRvbk1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvYnV0dG9uJztcbmltcG9ydCB7IElucHV0VGV4dE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvaW5wdXR0ZXh0JztcbmltcG9ydCB7IERpYWxvZ01vZHVsZSB9IGZyb20gJ3ByaW1lbmcvZGlhbG9nJztcbmltcG9ydCB7IFRhYmxlTW9kdWxlIH0gZnJvbSAncHJpbWVuZy90YWJsZSc7XG5pbXBvcnQgeyBUb29sdGlwTW9kdWxlIH0gZnJvbSAncHJpbWVuZy90b29sdGlwJztcbmltcG9ydCB7IE92ZXJsYXlQYW5lbE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvb3ZlcmxheXBhbmVsJztcbmltcG9ydCB7IER5bmFtaWNGb3JtRmllbGRDb25maWcgfSBmcm9tICcuLi9tb2RlbHMvZHluYW1pYy1mb3JtLm1vZGVscyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVQaXBlIH0gZnJvbSAnLi4vLi4vLi4vcGlwZXMvdHJhbnNsYXRlLnBpcGUnO1xuaW1wb3J0IHsgVHJhbnNsYXRpb25IZWxwZXIgfSBmcm9tICcuLi8uLi8uLi91dGlscy90cmFuc2xhdGlvbi5oZWxwZXInO1xuaW1wb3J0IHsgVHJhbnNsYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdHJhbnNsYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBEeW5hbWljRmllbGRXcmFwcGVyQ29tcG9uZW50IH0gZnJvbSAnLi9keW5hbWljLWZpZWxkLXdyYXBwZXIuY29tcG9uZW50JztcbmltcG9ydCB7IExvb2t1cENvbHVtbiB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9lbnRpdHktbGlzdC5jb25maWcnO1xuaW1wb3J0IHsgVGFibGVMb2FkaW5nRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlcy90YWJsZS1sb2FkaW5nL3RhYmxlLWxvYWRpbmcuZGlyZWN0aXZlJztcbmltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2lhLWR5bmFtaWMtZmllbGQtbG9va3VwJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIEJ1dHRvbk1vZHVsZSxcbiAgICBJbnB1dFRleHRNb2R1bGUsXG4gICAgRGlhbG9nTW9kdWxlLFxuICAgIFRhYmxlTW9kdWxlLFxuICAgIFRvb2x0aXBNb2R1bGUsXG4gICAgT3ZlcmxheVBhbmVsTW9kdWxlLFxuICAgIFRyYW5zbGF0ZVBpcGUsXG4gICAgRHluYW1pY0ZpZWxkV3JhcHBlckNvbXBvbmVudCxcbiAgICBUYWJsZUxvYWRpbmdEaXJlY3RpdmVcbiAgXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8c2lhLWR5bmFtaWMtZmllbGQtd3JhcHBlciBbZmllbGRdPVwiZmllbGRcIiBbZm9ybV09XCJmb3JtXCIgW21vZGVdPVwibW9kZVwiPlxuICAgICAgPGRpdiBbZm9ybUdyb3VwXT1cImZvcm1cIiBjbGFzcz1cImxvb2t1cC1maWVsZFwiIFtuZ0NsYXNzXT1cInsnZGlzYWJsZWQnOiBpc0ZpZWxkRGlzYWJsZWQoKX1cIj5cbiAgICAgICAgPCEtLSBIaWRkZW4gaW5wdXQgcGFyYSBvIGZvcm1Db250cm9sIC0tPlxuICAgICAgICA8aW5wdXQgdHlwZT1cImhpZGRlblwiIFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQuZmllbGRcIiAvPlxuICAgICAgICBcbiAgICAgICAgPGRpdiBjbGFzcz1cImxvb2t1cC1pbnB1dC1ncm91cFwiPlxuICAgICAgICAgIDwhLS0gQXV0b2NvbXBsZXRlIG1vZGU6IGVkaXRhYmxlIGlucHV0IC0tPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgKm5nSWY9XCJpc0F1dG9jb21wbGV0ZVwiXG4gICAgICAgICAgICAjYXV0b2NvbXBsZXRlSW5wdXRcbiAgICAgICAgICAgIHBJbnB1dFRleHRcbiAgICAgICAgICAgIFt2YWx1ZV09XCJhdXRvY29tcGxldGVUZXh0XCJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJnZXRQbGFjZWhvbGRlcigpXCJcbiAgICAgICAgICAgIFtjbGFzcy5wLWludmFsaWRdPVwiaXNGaWVsZEludmFsaWQoKVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNGaWVsZERpc2FibGVkKClcIlxuICAgICAgICAgICAgY2xhc3M9XCJsb29rdXAtZGlzcGxheVwiXG4gICAgICAgICAgICAoaW5wdXQpPVwib25BdXRvY29tcGxldGVJbnB1dCgkZXZlbnQpXCJcbiAgICAgICAgICAgIChmb2N1cyk9XCJvbkF1dG9jb21wbGV0ZUZvY3VzKClcIlxuICAgICAgICAgICAgKGJsdXIpPVwib25BdXRvY29tcGxldGVCbHVyKClcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPCEtLSBTdGFuZGFyZCBtb2RlOiByZWFkb25seSBpbnB1dCAtLT5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICpuZ0lmPVwiIWlzQXV0b2NvbXBsZXRlXCJcbiAgICAgICAgICAgIHBJbnB1dFRleHRcbiAgICAgICAgICAgIFt2YWx1ZV09XCJkaXNwbGF5VmFsdWVcIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImdldFBsYWNlaG9sZGVyKClcIlxuICAgICAgICAgICAgW2NsYXNzLnAtaW52YWxpZF09XCJpc0ZpZWxkSW52YWxpZCgpXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0ZpZWxkRGlzYWJsZWQoKVwiXG4gICAgICAgICAgICByZWFkb25seVxuICAgICAgICAgICAgY2xhc3M9XCJsb29rdXAtZGlzcGxheVwiXG4gICAgICAgICAgICAoY2xpY2spPVwib3Blbkxvb2t1cCgpXCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDwhLS0gQXV0b2NvbXBsZXRlIHN1Z2dlc3Rpb25zIGRyb3Bkb3duIC0tPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdXRvY29tcGxldGUtc3VnZ2VzdGlvbnNcIiAqbmdJZj1cInNob3dTdWdnZXN0aW9ucyAmJiBzdWdnZXN0aW9ucy5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwic3VnZ2VzdGlvbi1pdGVtXCJcbiAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2Ygc3VnZ2VzdGlvbnNcIlxuICAgICAgICAgICAgICAobW91c2Vkb3duKT1cInNlbGVjdFN1Z2dlc3Rpb24oaXRlbSlcIj5cbiAgICAgICAgICAgICAge3sgZm9ybWF0RGlzcGxheVZhbHVlKGl0ZW0pIH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXV0b2NvbXBsZXRlLXN1Z2dlc3Rpb25zXCIgKm5nSWY9XCJzaG93U3VnZ2VzdGlvbnMgJiYgc3VnZ2VzdGlvbnMubGVuZ3RoID09PSAwICYmIGF1dG9jb21wbGV0ZUxvYWRpbmdcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWdnZXN0aW9uLWl0ZW0gc3VnZ2VzdGlvbi1sb2FkaW5nXCI+QnVzY2FuZG8uLi48L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibG9va3VwLWJ1dHRvbnNcIj5cbiAgICAgICAgICAgIDxwLWJ1dHRvblxuICAgICAgICAgICAgICAqbmdJZj1cImN1cnJlbnRWYWx1ZVwiXG4gICAgICAgICAgICAgIGljb249XCJwaSBwaS10cmFzaFwiXG4gICAgICAgICAgICAgIHNldmVyaXR5PVwiZGFuZ2VyXCJcbiAgICAgICAgICAgICAgW3RleHRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIFtyb3VuZGVkXT1cInRydWVcIlxuICAgICAgICAgICAgICAob25DbGljayk9XCJjbGVhclZhbHVlKClcIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNGaWVsZERpc2FibGVkKClcIlxuICAgICAgICAgICAgICBwVG9vbHRpcD1cIkxpbXBhclwiXG4gICAgICAgICAgICAgIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiXG4gICAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgICA+PC9wLWJ1dHRvbj5cbiAgICAgICAgICAgIDxwLWJ1dHRvblxuICAgICAgICAgICAgICBpY29uPVwicGkgcGktc2VhcmNoXCJcbiAgICAgICAgICAgICAgc2V2ZXJpdHk9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgICAgICBbdGV4dF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgW3JvdW5kZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIChvbkNsaWNrKT1cIm9wZW5Mb29rdXAoKVwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0ZpZWxkRGlzYWJsZWQoKVwiXG4gICAgICAgICAgICAgIHBUb29sdGlwPVwiQnVzY2FyXCJcbiAgICAgICAgICAgICAgdG9vbHRpcFBvc2l0aW9uPVwidG9wXCJcbiAgICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICAgID48L3AtYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIExvb2t1cCBEaWFsb2cgLS0+XG4gICAgICA8cC1kaWFsb2dcbiAgICAgICAgWyh2aXNpYmxlKV09XCJzaG93TG9va3VwRGlhbG9nXCJcbiAgICAgICAgW21vZGFsXT1cInRydWVcIlxuICAgICAgICBbc3R5bGVdPVwieyB3aWR0aDogJzgwMHB4JywgbWF4SGVpZ2h0OiAnODB2aCcgfVwiXG4gICAgICAgIFtjb250ZW50U3R5bGVdPVwieyBtYXhIZWlnaHQ6ICdjYWxjKDgwdmggLSAxMjBweCknLCBvdmVyZmxvdzogJ2F1dG8nIH1cIlxuICAgICAgICBbZHJhZ2dhYmxlXT1cImZhbHNlXCJcbiAgICAgICAgW3Jlc2l6YWJsZV09XCJ0cnVlXCJcbiAgICAgICAgW2hlYWRlcl09XCInU2VsZWNpb25hciAnICsgKGZpZWxkLmxhYmVsIHwgdHJhbnNsYXRlKVwiXG4gICAgICAgIFthcHBlbmRUb109XCInYm9keSdcIlxuICAgICAgICAob25IaWRlKT1cIm9uRGlhbG9nSGlkZSgpXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cImxvb2t1cC1kaWFsb2ctY29udGVudFwiPlxuICAgICAgICAgIDwhLS0gU2VhcmNoIElucHV0IC0tPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWFyY2gtd3JhcHBlclwiPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIHBJbnB1dFRleHRcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWFyY2hUZXJtXCJcbiAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidCdXNjYXIgJyArIChmaWVsZC5sYWJlbCB8IHRyYW5zbGF0ZSkudG9Mb3dlckNhc2UoKSArICcuLi4nXCJcbiAgICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwib25TZWFyY2goKVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwic2VhcmNoLWlucHV0LWZ1bGxcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWFyY2gtYnV0dG9ucy1pbnNpZGVcIj5cbiAgICAgICAgICAgICAgPHAtYnV0dG9uXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJzZWFyY2hUZXJtXCJcbiAgICAgICAgICAgICAgICBpY29uPVwicGkgcGktdHJhc2hcIlxuICAgICAgICAgICAgICAgIHNldmVyaXR5PVwiZGFuZ2VyXCJcbiAgICAgICAgICAgICAgICBbdGV4dF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBbcm91bmRlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAob25DbGljayk9XCJjbGVhclNlYXJjaCgpXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNlYXJjaC1idXR0b24tY2xlYXJcIlxuICAgICAgICAgICAgICAgIHBUb29sdGlwPVwiTGltcGFyIGJ1c2NhXCJcbiAgICAgICAgICAgICAgICB0b29sdGlwUG9zaXRpb249XCJ0b3BcIlxuICAgICAgICAgICAgICA+PC9wLWJ1dHRvbj5cbiAgICAgICAgICAgICAgPHAtYnV0dG9uXG4gICAgICAgICAgICAgICAgaWNvbj1cInBpIHBpLXNlYXJjaFwiXG4gICAgICAgICAgICAgICAgc2V2ZXJpdHk9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgIFt0ZXh0XT1cInRydWVcIlxuICAgICAgICAgICAgICAgIFtyb3VuZGVkXT1cInRydWVcIlxuICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cIm9uU2VhcmNoKClcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwic2VhcmNoLWJ1dHRvbi1zZWFyY2hcIlxuICAgICAgICAgICAgICAgIHBUb29sdGlwPVwiQnVzY2FyXCJcbiAgICAgICAgICAgICAgICB0b29sdGlwUG9zaXRpb249XCJ0b3BcIlxuICAgICAgICAgICAgICA+PC9wLWJ1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPCEtLSBEYXRhIFRhYmxlIC0tPlxuICAgICAgICAgIDxwLXRhYmxlXG4gICAgICAgICAgICBbdmFsdWVdPVwiZmlsdGVyZWREYXRhXCJcbiAgICAgICAgICAgIFtwYWdpbmF0b3JdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbcm93c109XCJwYWdlU2l6ZVwiXG4gICAgICAgICAgICBbdG90YWxSZWNvcmRzXT1cInRvdGFsUmVjb3Jkc1wiXG4gICAgICAgICAgICBbbGF6eV09XCJ0cnVlXCJcbiAgICAgICAgICAgIChvbkxhenlMb2FkKT1cIm9uUGFnZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgIFtsb2FkaW5nXT1cImxvYWRpbmdcIiBzaWFUYWJsZUxvYWRpbmdcbiAgICAgICAgICAgIFtzaG93Q3VycmVudFBhZ2VSZXBvcnRdPVwidHJ1ZVwiXG4gICAgICAgICAgICBjdXJyZW50UGFnZVJlcG9ydFRlbXBsYXRlPVwiTW9zdHJhbmRvIHtmaXJzdH0gYSB7bGFzdH0gZGUge3RvdGFsUmVjb3Jkc30gcmVnaXN0cm9zXCJcbiAgICAgICAgICAgIGRhdGFLZXk9XCJpZFwiXG4gICAgICAgICAgICBbcm93SG92ZXJdPVwidHJ1ZVwiXG4gICAgICAgICAgICByZXNwb25zaXZlTGF5b3V0PVwic2Nyb2xsXCJcbiAgICAgICAgICAgIHN0eWxlQ2xhc3M9XCJwLWRhdGF0YWJsZS1zdHJpcGVkIGxvb2t1cC10YWJsZVwiXG4gICAgICAgICAgICBbKHNlbGVjdGlvbildPVwic2VsZWN0ZWRJdGVtXCJcbiAgICAgICAgICAgIChvblJvd1NlbGVjdCk9XCJvblJvd1NlbGVjdCgkZXZlbnQpXCJcbiAgICAgICAgICAgIHNlbGVjdGlvbk1vZGU9XCJzaW5nbGVcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJoZWFkZXJcIj5cbiAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgIDx0aCAqbmdGb3I9XCJsZXQgY29sIG9mIGNvbHVtbnNcIiBbc3R5bGUud2lkdGhdPVwiY29sLndpZHRoXCI+XG4gICAgICAgICAgICAgICAgICB7eyBjb2wuaGVhZGVyIH19XG4gICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJib2R5XCIgbGV0LWl0ZW0+XG4gICAgICAgICAgICAgIDx0ciBbcFNlbGVjdGFibGVSb3ddPVwiaXRlbVwiPlxuICAgICAgICAgICAgICAgIDx0ZCAqbmdGb3I9XCJsZXQgY29sIG9mIGNvbHVtbnNcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGdldEZpZWxkVmFsdWUoaXRlbSwgY29sLmZpZWxkKSB9fVxuICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiZW1wdHltZXNzYWdlXCI+XG4gICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICA8dGQgW2F0dHIuY29sc3Bhbl09XCJjb2x1bW5zLmxlbmd0aFwiIGNsYXNzPVwiZW1wdHktbWVzc2FnZVwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVtcHR5LXN0YXRlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwicGkgcGktc2VhcmNoXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICA8cD5OZW5odW0gcmVnaXN0cm8gZW5jb250cmFkbzwvcD5cbiAgICAgICAgICAgICAgICAgICAgPHNtYWxsPlRlbnRlIGFqdXN0YXIgb3MgdGVybW9zIGRlIGJ1c2NhPC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvcC10YWJsZT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3AtZGlhbG9nPlxuICAgIDwvc2lhLWR5bmFtaWMtZmllbGQtd3JhcHBlcj5cbiAgYCxcbiAgc3R5bGVzOiBbYFxuICAgIC5sb29rdXAtZmllbGQge1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgfVxuXG4gICAgLmxvb2t1cC1pbnB1dC1ncm91cCB7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIFxuICAgICAgLmxvb2t1cC1kaXNwbGF5IHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgaGVpZ2h0OiAyLjg1N3JlbTtcbiAgICAgICAgcGFkZGluZzogMC43NXJlbSA0cmVtIDAuNzVyZW0gMC43NXJlbTtcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICBsaW5lLWhlaWdodDogMS41O1xuICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBcbiAgICAgICAgJjpmb2N1cyB7XG4gICAgICAgICAgb3V0bGluZTogbm9uZTtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLmxvb2t1cC1idXR0b25zIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICByaWdodDogNHB4O1xuICAgICAgICB0b3A6IDUwJTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBnYXA6IDJweDtcbiAgICAgICAgei1pbmRleDogMTA7XG4gICAgICB9XG5cbiAgICAgIDo6bmctZGVlcCAucC1idXR0b24ge1xuICAgICAgICB3aWR0aDogMnJlbSAhaW1wb3J0YW50O1xuICAgICAgICBoZWlnaHQ6IDJyZW0gIWltcG9ydGFudDtcbiAgICAgICAgbWluLXdpZHRoOiAycmVtICFpbXBvcnRhbnQ7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDJyZW0gIWltcG9ydGFudDtcbiAgICAgICAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xuICAgICAgICBtYXJnaW46IDAgIWltcG9ydGFudDtcbiAgICAgICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyICFpbXBvcnRhbnQ7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7XG4gICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3ggIWltcG9ydGFudDtcbiAgICAgICAgXG4gICAgICAgIC5wLWJ1dHRvbi1pY29uIHtcbiAgICAgICAgICBtYXJnaW46IDAgIWltcG9ydGFudDtcbiAgICAgICAgICBmb250LXNpemU6IDAuODc1cmVtICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIC5wLWJ1dHRvbi1sYWJlbCB7XG4gICAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5hdXRvY29tcGxldGUtc3VnZ2VzdGlvbnMge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogMTAwJTtcbiAgICAgICAgbGVmdDogMDtcbiAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgIHotaW5kZXg6IDEwMDA7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXAtc3VyZmFjZS0wLCAjZmZmKTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tcC1zdXJmYWNlLTMwMCwgI2QxZDVkYik7XG4gICAgICAgIGJvcmRlci10b3A6IG5vbmU7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAgMCA2cHggNnB4O1xuICAgICAgICBtYXgtaGVpZ2h0OiAyMDBweDtcbiAgICAgICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICAgICAgYm94LXNoYWRvdzogMCA0cHggNnB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcblxuICAgICAgICAuc3VnZ2VzdGlvbi1pdGVtIHtcbiAgICAgICAgICBwYWRkaW5nOiAwLjYyNXJlbSAwLjc1cmVtO1xuICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgICBmb250LXNpemU6IDAuODc1cmVtO1xuICAgICAgICAgIGNvbG9yOiB2YXIoLS1wLXRleHQtY29sb3IsICMzMzMpO1xuICAgICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC4xNXM7XG5cbiAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXAtc3VyZmFjZS0xMDAsICNmM2Y0ZjYpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgICYuc3VnZ2VzdGlvbi1sb2FkaW5nIHtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1wLXRleHQtbXV0ZWQtY29sb3IsICM5OTkpO1xuICAgICAgICAgICAgY3Vyc29yOiBkZWZhdWx0O1xuICAgICAgICAgICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC5sb29rdXAtZGlhbG9nLWNvbnRlbnQge1xuICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICBwYWRkaW5nOiAwO1xuXG4gICAgICAuc2VhcmNoLXdyYXBwZXIge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDE2cHg7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgICAgIC5zZWFyY2gtaW5wdXQtZnVsbCB7XG4gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgcGFkZGluZy1yaWdodDogNS41cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLnNlYXJjaC1idXR0b25zLWluc2lkZSB7XG4gICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgIHJpZ2h0OiA0cHg7XG4gICAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgZ2FwOiAycHg7XG4gICAgICAgICAgXG4gICAgICAgICAgOjpuZy1kZWVwIC5wLWJ1dHRvbiB7XG4gICAgICAgICAgICB3aWR0aDogMi41cmVtICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICBoZWlnaHQ6IDIuNXJlbSAhaW1wb3J0YW50O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAubG9va3VwLXRhYmxlIHtcbiAgICAgICAgZmxleDogMTtcbiAgICAgICAgXG4gICAgICAgIC5lbXB0eS1zdGF0ZSB7XG4gICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgIHBhZGRpbmc6IDMycHg7XG4gICAgICAgICAgY29sb3I6IHZhcigtLXAtdGV4dC1jb2xvci1zZWNvbmRhcnkpO1xuXG4gICAgICAgICAgaSB7XG4gICAgICAgICAgICBmb250LXNpemU6IDQ4cHg7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxNnB4O1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcCB7XG4gICAgICAgICAgICBtYXJnaW46IDhweCAwO1xuICAgICAgICAgICAgZm9udC1zaXplOiAxNnB4O1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHNtYWxsIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIGBdXG59KVxuZXhwb3J0IGNsYXNzIER5bmFtaWNGaWVsZExvb2t1cENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgZmllbGQhOiBEeW5hbWljRm9ybUZpZWxkQ29uZmlnO1xuICBASW5wdXQoKSBmb3JtITogRm9ybUdyb3VwO1xuICBASW5wdXQoKSBmb3JtR3JvdXAhOiBGb3JtR3JvdXA7XG4gIEBJbnB1dCgpIG1vZGU6ICdmb3JtJyB8ICdmaWx0ZXInID0gJ2Zvcm0nO1xuXG4gIGRpc3BsYXlWYWx1ZTogc3RyaW5nID0gJyc7XG4gIHNob3dMb29rdXBEaWFsb2c6IGJvb2xlYW4gPSBmYWxzZTtcbiAgbG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xuICBzZWFyY2hUZXJtOiBzdHJpbmcgPSAnJztcbiAgXG4gIGRhdGE6IGFueVtdID0gW107XG4gIGZpbHRlcmVkRGF0YTogYW55W10gPSBbXTtcbiAgdG90YWxSZWNvcmRzOiBudW1iZXIgPSAwO1xuICBjdXJyZW50UGFnZTogbnVtYmVyID0gMDtcbiAgcGFnZVNpemU6IG51bWJlciA9IDEwO1xuICBzZWxlY3RlZEl0ZW06IGFueSA9IG51bGw7XG4gIFxuICBjb2x1bW5zOiBMb29rdXBDb2x1bW5bXSA9IFtdO1xuICBkaXNwbGF5RmllbGQ6IHN0cmluZyA9ICduYW1lJztcbiAgdmFsdWVGaWVsZDogc3RyaW5nID0gJ2lkJztcbiAgc2VhcmNoRmllbGRzOiBzdHJpbmdbXSA9IFsnbmFtZSddO1xuXG4gIC8vIEF1dG9jb21wbGV0ZSBzdGF0ZVxuICBhdXRvY29tcGxldGVUZXh0OiBzdHJpbmcgPSAnJztcbiAgc3VnZ2VzdGlvbnM6IGFueVtdID0gW107XG4gIHNob3dTdWdnZXN0aW9uczogYm9vbGVhbiA9IGZhbHNlO1xuICBhdXRvY29tcGxldGVMb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgYXV0b2NvbXBsZXRlU3ViamVjdCA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcbiAgcHJpdmF0ZSBhdXRvY29tcGxldGVTdWI/OiBTdWJzY3JpcHRpb247XG5cbiAgZ2V0IGlzQXV0b2NvbXBsZXRlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmZpZWxkPy5sb29rdXBBdXRvY29tcGxldGUgPT09IHRydWU7XG4gIH1cblxuICBwcml2YXRlIGdldCBtaW5MZW5ndGgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5maWVsZD8ubG9va3VwQXV0b2NvbXBsZXRlTWluTGVuZ3RoID8/IDI7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHRyYW5zbGF0aW9uU2VydmljZTogVHJhbnNsYXRpb25TZXJ2aWNlKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc2V0dXBMb29rdXBDb25maWcoKTtcbiAgICB0aGlzLndhdGNoVmFsdWVDaGFuZ2VzKCk7XG4gICAgdGhpcy5zZXR1cEF1dG9jb21wbGV0ZSgpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5hdXRvY29tcGxldGVTdWI/LnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcml2YXRlIHNldHVwQXV0b2NvbXBsZXRlKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pc0F1dG9jb21wbGV0ZSkgcmV0dXJuO1xuICAgIHRoaXMuYXV0b2NvbXBsZXRlU3ViID0gdGhpcy5hdXRvY29tcGxldGVTdWJqZWN0LnBpcGUoXG4gICAgICBkZWJvdW5jZVRpbWUoMzAwKSxcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKClcbiAgICApLnN1YnNjcmliZSh0ZXJtID0+IHtcbiAgICAgIGlmICh0ZXJtLmxlbmd0aCA+PSB0aGlzLm1pbkxlbmd0aCkge1xuICAgICAgICB0aGlzLnNlYXJjaFN1Z2dlc3Rpb25zKHRlcm0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zdWdnZXN0aW9ucyA9IFtdO1xuICAgICAgICB0aGlzLnNob3dTdWdnZXN0aW9ucyA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgb25BdXRvY29tcGxldGVJbnB1dChldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCB2YWx1ZSA9IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWU7XG4gICAgdGhpcy5hdXRvY29tcGxldGVUZXh0ID0gdmFsdWU7XG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgdGhpcy5jbGVhclZhbHVlKCk7XG4gICAgICB0aGlzLnN1Z2dlc3Rpb25zID0gW107XG4gICAgICB0aGlzLnNob3dTdWdnZXN0aW9ucyA9IGZhbHNlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmF1dG9jb21wbGV0ZVN1YmplY3QubmV4dCh2YWx1ZSk7XG4gIH1cblxuICBvbkF1dG9jb21wbGV0ZUZvY3VzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmF1dG9jb21wbGV0ZVRleHQubGVuZ3RoID49IHRoaXMubWluTGVuZ3RoICYmIHRoaXMuc3VnZ2VzdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5zaG93U3VnZ2VzdGlvbnMgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIG9uQXV0b2NvbXBsZXRlQmx1cigpOiB2b2lkIHtcbiAgICAvLyBEZWxheSB0byBhbGxvdyBjbGljayBvbiBzdWdnZXN0aW9uXG4gICAgc2V0VGltZW91dCgoKSA9PiB7IHRoaXMuc2hvd1N1Z2dlc3Rpb25zID0gZmFsc2U7IH0sIDIwMCk7XG4gIH1cblxuICBzZWxlY3RTdWdnZXN0aW9uKGl0ZW06IGFueSk6IHZvaWQge1xuICAgIHRoaXMuc2V0VmFsdWUoaXRlbSk7XG4gICAgdGhpcy5kaXNwbGF5VmFsdWUgPSB0aGlzLmZvcm1hdERpc3BsYXlWYWx1ZShpdGVtKTtcbiAgICB0aGlzLmF1dG9jb21wbGV0ZVRleHQgPSB0aGlzLmRpc3BsYXlWYWx1ZTtcbiAgICB0aGlzLnN1Z2dlc3Rpb25zID0gW107XG4gICAgdGhpcy5zaG93U3VnZ2VzdGlvbnMgPSBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgc2VhcmNoU3VnZ2VzdGlvbnModGVybTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmZpZWxkPy5sb29rdXBTZXJ2aWNlKSByZXR1cm47XG4gICAgdGhpcy5hdXRvY29tcGxldGVMb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLnNob3dTdWdnZXN0aW9ucyA9IHRydWU7XG5cbiAgICBjb25zdCBsaXN0UGFyYW1zOiBhbnkgPSB7IHBhZ2U6IDAsIHNpemU6IDEwIH07XG5cbiAgICBpZiAodGhpcy5maWVsZC5sb29rdXBTb3J0KSB7XG4gICAgICBsaXN0UGFyYW1zLnNvcnQgPSB0aGlzLmZpZWxkLmxvb2t1cFNvcnQ7XG4gICAgfVxuXG4gICAgY29uc3QgZmlsdGVyQ29uZGl0aW9uczogc3RyaW5nW10gPSBbXTtcbiAgICBjb25zdCBpc051bWVyaWNUZXJtID0gIWlzTmFOKE51bWJlcih0ZXJtKSkgJiYgdGVybSAhPT0gJyc7XG5cbiAgICB0aGlzLnNlYXJjaEZpZWxkcy5mb3JFYWNoKGZpZWxkID0+IHtcbiAgICAgIGNvbnN0IGNvbHVtbiA9IHRoaXMuY29sdW1ucy5maW5kKGNvbCA9PiBjb2wuZmllbGQgPT09IGZpZWxkKTtcbiAgICAgIGNvbnN0IGZpZWxkVHlwZSA9IGNvbHVtbj8udHlwZSB8fCAndGV4dCc7XG5cbiAgICAgIGlmIChmaWVsZFR5cGUgPT09ICdudW1iZXInKSB7XG4gICAgICAgIGlmIChpc051bWVyaWNUZXJtKSB7XG4gICAgICAgICAgZmlsdGVyQ29uZGl0aW9ucy5wdXNoKGAke2ZpZWxkfSBlcSAke3Rlcm19YCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHVwcGVyVGVybSA9IHRlcm0udG9VcHBlckNhc2UoKTtcbiAgICAgICAgZmlsdGVyQ29uZGl0aW9ucy5wdXNoKGBjb250YWluaW5nKFVQUEVSKCR7ZmllbGR9KSwgJyR7dXBwZXJUZXJtfScpYCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAoZmlsdGVyQ29uZGl0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICBsaXN0UGFyYW1zLmZpbHRlclF1ZXJ5ID0gZmlsdGVyQ29uZGl0aW9ucy5qb2luKCcgb3IgJyk7XG4gICAgfVxuXG4gICAgLy8gQXBwbHkgbG9va3VwRmlsdGVyc1xuICAgIGlmICh0aGlzLmZpZWxkLmxvb2t1cEZpbHRlcnMpIHtcbiAgICAgIGNvbnN0IGV4dHJhID0gdHlwZW9mIHRoaXMuZmllbGQubG9va3VwRmlsdGVycyA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICA/IHRoaXMuZmllbGQubG9va3VwRmlsdGVycyh0aGlzLmZvcm1Hcm91cD8udmFsdWUgfHwge30pXG4gICAgICAgIDogdGhpcy5maWVsZC5sb29rdXBGaWx0ZXJzO1xuICAgICAgaWYgKGV4dHJhKSB7XG4gICAgICAgIGxpc3RQYXJhbXMuZmlsdGVyUXVlcnkgPSBsaXN0UGFyYW1zLmZpbHRlclF1ZXJ5XG4gICAgICAgICAgPyBgKCR7bGlzdFBhcmFtcy5maWx0ZXJRdWVyeX0pIGFuZCAoJHtleHRyYX0pYFxuICAgICAgICAgIDogZXh0cmE7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5maWVsZC5sb29rdXBTZXJ2aWNlLmxpc3QobGlzdFBhcmFtcykuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLnN1Z2dlc3Rpb25zID0gcmVzLmNvbnRlbnRzIHx8IFtdO1xuICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZUxvYWRpbmcgPSBmYWxzZTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICB0aGlzLnN1Z2dlc3Rpb25zID0gW107XG4gICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlTG9hZGluZyA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSB3YXRjaFZhbHVlQ2hhbmdlcygpOiB2b2lkIHtcbiAgICBjb25zdCBjb250cm9sID0gdGhpcy5nZXRGb3JtQ29udHJvbCgpO1xuICAgIGlmIChjb250cm9sKSB7XG4gICAgICAvLyBDYXJyZWdhciB2YWxvciBpbmljaWFsXG4gICAgICBpZiAoY29udHJvbC52YWx1ZSkge1xuICAgICAgICB0aGlzLmhhbmRsZVZhbHVlRGlzcGxheShjb250cm9sLnZhbHVlKTtcbiAgICAgIH1cbiAgICAgIFxuICAgICAgLy8gT2JzZXJ2YXIgbXVkYW7Dp2FzXG4gICAgICBjb250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHZhbHVlOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQgJiYgdmFsdWUgIT09ICcnKSB7XG4gICAgICAgICAgdGhpcy5oYW5kbGVWYWx1ZURpc3BsYXkodmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuZGlzcGxheVZhbHVlID0gJyc7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBPYnTDqW0gbyBGb3JtQ29udHJvbCwgbGlkYW5kbyBjb20gY2FtcG9zIGFuaW5oYWRvcyAoY29tIHBvbnRvIG5vIG5vbWUpXG4gICAqL1xuICBwcml2YXRlIGdldEZvcm1Db250cm9sKCkge1xuICAgIGlmICghdGhpcy5maWVsZD8uZmllbGQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIC8vIEFjZXNzYSBkaXJldGFtZW50ZSB2aWEgY29udHJvbHNbXSBwb2lzIGZvcm0uZ2V0KCkgbsOjbyBmdW5jaW9uYSBjb20gY2FtcG9zIHF1ZSB0w6ptIHBvbnRvXG4gICAgcmV0dXJuIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLmZpZWxkLmZpZWxkXTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IHZhbHVlKCk6IGFueSB7XG4gICAgY29uc3QgY29udHJvbCA9IHRoaXMuZ2V0Rm9ybUNvbnRyb2woKTtcbiAgICByZXR1cm4gY29udHJvbD8udmFsdWU7XG4gIH1cblxuICBnZXQgY3VycmVudFZhbHVlKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gIH1cblxuICBwcml2YXRlIHNldFZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCBjb250cm9sID0gdGhpcy5nZXRGb3JtQ29udHJvbCgpO1xuICAgIGNvbnRyb2w/LnNldFZhbHVlKHZhbHVlKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBMb29rdXBDb25maWcoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZmllbGQpIHtcbiAgICAgIHRoaXMuZGlzcGxheUZpZWxkID0gdGhpcy5maWVsZC5sb29rdXBEaXNwbGF5RmllbGQgfHwgJ25hbWUnO1xuICAgICAgdGhpcy52YWx1ZUZpZWxkID0gdGhpcy5maWVsZC5sb29rdXBWYWx1ZUZpZWxkIHx8ICdpZCc7XG4gICAgICB0aGlzLnNlYXJjaEZpZWxkcyA9IHRoaXMuZmllbGQubG9va3VwU2VhcmNoRmllbGRzIHx8IFsnbmFtZSddO1xuICAgICAgdGhpcy5jb2x1bW5zID0gdGhpcy5maWVsZC5sb29rdXBDb2x1bW5zIHx8IFtcbiAgICAgICAgeyBmaWVsZDogdGhpcy5kaXNwbGF5RmllbGQsIGhlYWRlcjogJ05vbWUnLCB3aWR0aDogJzEwMCUnIH1cbiAgICAgIF07XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVWYWx1ZURpc3BsYXkodmFsdWU6IGFueSk6IHZvaWQge1xuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSAnJykge1xuICAgICAgdGhpcy5kaXNwbGF5VmFsdWUgPSAnJztcbiAgICAgIHRoaXMuYXV0b2NvbXBsZXRlVGV4dCA9ICcnO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgdGhpcy5kaXNwbGF5VmFsdWUgPSB0aGlzLmZvcm1hdERpc3BsYXlWYWx1ZSh2YWx1ZSk7XG4gICAgICB0aGlzLmF1dG9jb21wbGV0ZVRleHQgPSB0aGlzLmRpc3BsYXlWYWx1ZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgICAgdGhpcy5kaXNwbGF5VmFsdWUgPSAnJztcbiAgICAgIHRoaXMuYXV0b2NvbXBsZXRlVGV4dCA9ICcnO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIGZvcm1hdERpc3BsYXlWYWx1ZShpdGVtOiBhbnkpOiBzdHJpbmcge1xuICAgIGlmICghaXRlbSkgcmV0dXJuICcnO1xuICAgIFxuICAgIGlmICh0aGlzLmZpZWxkPy5sb29rdXBEaXNwbGF5RmllbGRzICYmIHRoaXMuZmllbGQubG9va3VwRGlzcGxheUZpZWxkcy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCB2YWx1ZXMgPSB0aGlzLmZpZWxkLmxvb2t1cERpc3BsYXlGaWVsZHNcbiAgICAgICAgLm1hcChmaWVsZE5hbWUgPT4gdGhpcy5nZXRGaWVsZFZhbHVlKGl0ZW0sIGZpZWxkTmFtZSkpXG4gICAgICAgIC5maWx0ZXIodmFsdWUgPT4gdmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCAmJiB2YWx1ZSAhPT0gJycpO1xuICAgICAgXG4gICAgICByZXR1cm4gdmFsdWVzLmpvaW4oJyAtICcpO1xuICAgIH1cbiAgICBcbiAgICByZXR1cm4gdGhpcy5nZXRGaWVsZFZhbHVlKGl0ZW0sIHRoaXMuZGlzcGxheUZpZWxkKSB8fCAnJztcbiAgfVxuXG4gIGlzRmllbGRJbnZhbGlkKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmdldEZvcm1Db250cm9sKCk7XG4gICAgcmV0dXJuICEhKGNvbnRyb2wgJiYgY29udHJvbC5pbnZhbGlkICYmIChjb250cm9sLmRpcnR5IHx8IGNvbnRyb2wudG91Y2hlZCkpO1xuICB9XG5cbiAgaXNGaWVsZERpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmdldEZvcm1Db250cm9sKCk7XG4gICAgcmV0dXJuIGNvbnRyb2w/LmRpc2FibGVkIHx8IGZhbHNlO1xuICB9XG5cbiAgZ2V0UGxhY2Vob2xkZXIoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gVHJhbnNsYXRpb25IZWxwZXIuZ2V0RmlsdGVyUGxhY2Vob2xkZXIoXG4gICAgICB0aGlzLnRyYW5zbGF0aW9uU2VydmljZSxcbiAgICAgIHRoaXMubW9kZSxcbiAgICAgIHRoaXMuZmllbGQubGFiZWwsXG4gICAgICB0aGlzLmZpZWxkLnBsYWNlaG9sZGVyXG4gICAgKTtcbiAgfVxuXG4gIG9wZW5Mb29rdXAoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNGaWVsZERpc2FibGVkKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgXG4gICAgdGhpcy51cGRhdGVTZWxlY3RlZEl0ZW0oKTtcbiAgICBcbiAgICB0aGlzLnNob3dMb29rdXBEaWFsb2cgPSB0cnVlO1xuICAgIHRoaXMuY3VycmVudFBhZ2UgPSAwO1xuICAgIHRoaXMuc2VhcmNoVGVybSA9ICcnO1xuICAgIC8vIERlbGF5IGxvYWREYXRhIHRvIG5leHQgbWFjcm90YXNrIHRvIGF2b2lkIE5HMDEwMFxuICAgIC8vIChwLWRpYWxvZyB0cmlnZ2VycyBhIENEIGN5Y2xlIG9uIG9wZW4gdGhhdCBjb25mbGljdHMgd2l0aCBsb2FkaW5nIHN0YXRlIGNoYW5nZSlcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMubG9hZERhdGEoKSwgMCk7XG4gIH1cblxuICBvbkRpYWxvZ0hpZGUoKTogdm9pZCB7XG4gICAgdGhpcy5zZWFyY2hUZXJtID0gJyc7XG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IDA7XG4gIH1cblxuICBvblBhZ2VDaGFuZ2UoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zaG93TG9va3VwRGlhbG9nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbmV3UGFnZSA9IGV2ZW50LmZpcnN0IC8gZXZlbnQucm93cztcbiAgICBpZiAobmV3UGFnZSA9PT0gdGhpcy5jdXJyZW50UGFnZSAmJiB0aGlzLmZpbHRlcmVkRGF0YS5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIFxuICAgIHRoaXMuY3VycmVudFBhZ2UgPSBuZXdQYWdlO1xuICAgIHRoaXMubG9hZERhdGEoKTtcbiAgfVxuXG4gIHByaXZhdGUgbG9hZERhdGEoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmZpZWxkPy5sb29rdXBTZXJ2aWNlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICBcbiAgICBjb25zdCBsaXN0UGFyYW1zOiBhbnkgPSB7IFxuICAgICAgcGFnZTogdGhpcy5jdXJyZW50UGFnZSxcbiAgICAgIHNpemU6IHRoaXMucGFnZVNpemVcbiAgICB9O1xuXG4gICAgaWYgKHRoaXMuZmllbGQubG9va3VwU29ydCkge1xuICAgICAgbGlzdFBhcmFtcy5zb3J0ID0gdGhpcy5maWVsZC5sb29rdXBTb3J0O1xuICAgIH1cbiAgICBcbiAgICBpZiAodGhpcy5zZWFyY2hUZXJtLnRyaW0oKSkge1xuICAgICAgY29uc3QgdGVybSA9IHRoaXMuc2VhcmNoVGVybS50cmltKCk7XG4gICAgICBjb25zdCBmaWx0ZXJDb25kaXRpb25zOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgY29uc3QgaXNOdW1lcmljVGVybSA9ICFpc05hTihOdW1iZXIodGVybSkpICYmIHRlcm0gIT09ICcnO1xuICAgICAgXG4gICAgICB0aGlzLnNlYXJjaEZpZWxkcy5mb3JFYWNoKGZpZWxkID0+IHtcbiAgICAgICAgY29uc3QgY29sdW1uID0gdGhpcy5jb2x1bW5zLmZpbmQoY29sID0+IGNvbC5maWVsZCA9PT0gZmllbGQpO1xuICAgICAgICBjb25zdCBmaWVsZFR5cGUgPSBjb2x1bW4/LnR5cGUgfHwgJ3RleHQnO1xuICAgICAgICBcbiAgICAgICAgaWYgKGZpZWxkVHlwZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICBpZiAoaXNOdW1lcmljVGVybSkge1xuICAgICAgICAgICAgZmlsdGVyQ29uZGl0aW9ucy5wdXNoKGAke2ZpZWxkfSBlcSAke3Rlcm19YCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IHVwcGVyVGVybSA9IHRlcm0udG9VcHBlckNhc2UoKTtcbiAgICAgICAgICBmaWx0ZXJDb25kaXRpb25zLnB1c2goYGNvbnRhaW5pbmcoVVBQRVIoJHtmaWVsZH0pLCAnJHt1cHBlclRlcm19JylgKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBcbiAgICAgIGlmIChmaWx0ZXJDb25kaXRpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgbGlzdFBhcmFtcy5maWx0ZXJRdWVyeSA9IGZpbHRlckNvbmRpdGlvbnMuam9pbignIG9yICcpO1xuICAgICAgfVxuICAgIH1cbiAgICBcbiAgICBpZiAodGhpcy5maWVsZC5sb29rdXBGaWx0ZXJzKSB7XG4gICAgICBsZXQgZXh0cmFGaWx0ZXIgPSAnJztcbiAgICAgIGlmICh0eXBlb2YgdGhpcy5maWVsZC5sb29rdXBGaWx0ZXJzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGV4dHJhRmlsdGVyID0gdGhpcy5maWVsZC5sb29rdXBGaWx0ZXJzKHRoaXMuZm9ybUdyb3VwPy52YWx1ZSB8fCB7fSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBleHRyYUZpbHRlciA9IHRoaXMuZmllbGQubG9va3VwRmlsdGVycztcbiAgICAgIH1cbiAgICAgIFxuICAgICAgaWYgKGV4dHJhRmlsdGVyKSB7XG4gICAgICAgIGlmIChsaXN0UGFyYW1zLmZpbHRlclF1ZXJ5KSB7XG4gICAgICAgICAgbGlzdFBhcmFtcy5maWx0ZXJRdWVyeSA9IGAoJHtsaXN0UGFyYW1zLmZpbHRlclF1ZXJ5fSkgYW5kICgke2V4dHJhRmlsdGVyfSlgO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxpc3RQYXJhbXMuZmlsdGVyUXVlcnkgPSBleHRyYUZpbHRlcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBcbiAgICB0aGlzLmZpZWxkLmxvb2t1cFNlcnZpY2UubGlzdChsaXN0UGFyYW1zKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5kYXRhID0gcmVzcG9uc2UuY29udGVudHMgfHwgW107XG4gICAgICAgIHRoaXMuZmlsdGVyZWREYXRhID0gWy4uLnRoaXMuZGF0YV07XG4gICAgICAgIHRoaXMudG90YWxSZWNvcmRzID0gcmVzcG9uc2UudG90YWxFbGVtZW50cyB8fCAwO1xuICAgICAgICBcbiAgICAgICAgdGhpcy51cGRhdGVTZWxlY3RlZEl0ZW0oKTtcbiAgICAgICAgXG4gICAgICAgIC8vIEFww7NzIGNhcnJlZ2FyIG9zIGRhZG9zIGRhIGdyaWQsIHNlIHRlbW9zIHVtIHZhbG9yIHNlbGVjaW9uYWRvIG1hcyBzZW0gZGlzcGxheVZhbHVlLFxuICAgICAgICAvLyB0ZW50YXIgZW5jb250cmFyIG8gaXRlbSBub3MgZGFkb3MgY2FycmVnYWRvc1xuICAgICAgICBpZiAodGhpcy52YWx1ZSAmJiAhdGhpcy5kaXNwbGF5VmFsdWUpIHtcbiAgICAgICAgICBjb25zdCBpdGVtID0gdGhpcy5maWx0ZXJlZERhdGEuZmluZChpID0+IGlbdGhpcy52YWx1ZUZpZWxkXSA9PT0gdGhpcy52YWx1ZSk7XG4gICAgICAgICAgaWYgKGl0ZW0pIHtcbiAgICAgICAgICAgIHRoaXMuZGlzcGxheVZhbHVlID0gdGhpcy5mb3JtYXREaXNwbGF5VmFsdWUoaXRlbSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKF9lcnJvcjogdW5rbm93bikgPT4ge1xuICAgICAgICB0aGlzLmRhdGEgPSBbXTtcbiAgICAgICAgdGhpcy5maWx0ZXJlZERhdGEgPSBbXTtcbiAgICAgICAgdGhpcy50b3RhbFJlY29yZHMgPSAwO1xuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlU2VsZWN0ZWRJdGVtKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy52YWx1ZSkge1xuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW0gPSBudWxsO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBcbiAgICAvLyB2YWx1ZSBjYW4gYmUgYSBmdWxsIG9iamVjdCBvciBqdXN0IGFuIElEXG4gICAgY29uc3QgdmFsdWVJZCA9IHR5cGVvZiB0aGlzLnZhbHVlID09PSAnb2JqZWN0JyA/IHRoaXMudmFsdWVbdGhpcy52YWx1ZUZpZWxkXSA6IHRoaXMudmFsdWU7XG4gICAgY29uc3QgaXRlbSA9IHRoaXMuZmlsdGVyZWREYXRhLmZpbmQoaSA9PiBpW3RoaXMudmFsdWVGaWVsZF0gPT09IHZhbHVlSWQpO1xuICAgIGlmIChpdGVtKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbSA9IGl0ZW07XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdGhpcy52YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIC8vIEl0ZW0gbm90IGluIGN1cnJlbnQgcGFnZSBidXQgd2UgaGF2ZSB0aGUgZnVsbCBvYmplY3QgZnJvbSBhdXRvY29tcGxldGVcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtID0gdGhpcy52YWx1ZTtcbiAgICB9XG4gIH1cblxuICBvblNlYXJjaCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc2hvd0xvb2t1cERpYWxvZykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBcbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gMDtcbiAgICB0aGlzLmxvYWREYXRhKCk7XG4gIH1cblxuICBjbGVhclNlYXJjaCgpOiB2b2lkIHtcbiAgICB0aGlzLnNlYXJjaFRlcm0gPSAnJztcbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gMDtcbiAgICB0aGlzLmxvYWREYXRhKCk7XG4gIH1cblxuICBzZWxlY3RJdGVtKGl0ZW06IGFueSk6IHZvaWQge1xuICAgIC8vIENsb3NlIGRpYWxvZyBmaXJzdCwgdGhlbiBzZXQgdmFsdWUgaW4gbmV4dCB0aWNrIHRvIHByZXZlbnRcbiAgICAvLyBjbGljayBldmVudCBmcm9tIHByb3BhZ2F0aW5nIHRvIGVsZW1lbnRzIGJlaGluZCB0aGUgZGlhbG9nXG4gICAgdGhpcy5zaG93TG9va3VwRGlhbG9nID0gZmFsc2U7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnNldFZhbHVlKGl0ZW0pO1xuICAgICAgdGhpcy5kaXNwbGF5VmFsdWUgPSB0aGlzLmZvcm1hdERpc3BsYXlWYWx1ZShpdGVtKTtcbiAgICB9KTtcbiAgfVxuXG4gIG9uUm93U2VsZWN0KGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICAvLyBQcmV2ZW50IHRoZSBjbGljayBldmVudCBmcm9tIHByb3BhZ2F0aW5nIGFmdGVyIHRoZSBkaWFsb2cgY2xvc2VzLFxuICAgIC8vIHdoaWNoIGNvdWxkIHRyaWdnZXIgYnV0dG9ucyBiZWhpbmQgdGhlIGRpYWxvZyAoZS5nLiBpbmxpbmUtZWRpdCBzYXZlIGJ1dHRvbilcbiAgICBpZiAoZXZlbnQub3JpZ2luYWxFdmVudCkge1xuICAgICAgZXZlbnQub3JpZ2luYWxFdmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIGV2ZW50Lm9yaWdpbmFsRXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gICAgdGhpcy5zZWxlY3RJdGVtKGV2ZW50LmRhdGEpO1xuICB9XG5cbiAgY2xlYXJWYWx1ZSgpOiB2b2lkIHtcbiAgICB0aGlzLnNldFZhbHVlKG51bGwpO1xuICAgIHRoaXMuZGlzcGxheVZhbHVlID0gJyc7XG4gICAgdGhpcy5hdXRvY29tcGxldGVUZXh0ID0gJyc7XG4gICAgdGhpcy5zZWxlY3RlZEl0ZW0gPSBudWxsO1xuICAgIHRoaXMuc3VnZ2VzdGlvbnMgPSBbXTtcbiAgICB0aGlzLnNob3dTdWdnZXN0aW9ucyA9IGZhbHNlO1xuICB9XG5cbiAgZ2V0RmllbGRWYWx1ZShpdGVtOiBhbnksIGZpZWxkOiBzdHJpbmcpOiBhbnkge1xuICAgIHJldHVybiBmaWVsZC5zcGxpdCgnLicpLnJlZHVjZSgob2JqLCBrZXkpID0+IG9iaj8uW2tleV0sIGl0ZW0pIHx8ICcnO1xuICB9XG59XG4iXX0=
@@ -143,7 +143,7 @@ export const createFilterString = (formField, value) => {
143
143
  return getEnumQuery(name, value, multiple);
144
144
  case FieldType.String: {
145
145
  const escapedValue = escapeFilterValue(String(value));
146
- return `upper(${name}) like upper('${escapedValue}%')`;
146
+ return `containing(upper(${name}), upper('${escapedValue}'))`;
147
147
  }
148
148
  case FieldType.Lookup: {
149
149
  const lookupId = typeof value === 'object' ? value.id : value;
@@ -309,4 +309,4 @@ export const throttle = (func, limit) => {
309
309
  }
310
310
  };
311
311
  };
312
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzLWFpL3NyYy9saWIvdXRpbHMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxDQUFOLElBQVksU0FXWDtBQVhELFdBQVksU0FBUztJQUNuQiw4QkFBaUIsQ0FBQTtJQUNqQixnQ0FBbUIsQ0FBQTtJQUNuQiw4QkFBaUIsQ0FBQTtJQUNqQixnQ0FBbUIsQ0FBQTtJQUNuQiwwQkFBYSxDQUFBO0lBQ2IsMEJBQWEsQ0FBQTtJQUNiLGtDQUFxQixDQUFBO0lBQ3JCLDRDQUErQixDQUFBO0lBQy9CLDBCQUFhLENBQUE7SUFDYiw4QkFBaUIsQ0FBQTtBQUNuQixDQUFDLEVBWFcsU0FBUyxLQUFULFNBQVMsUUFXcEI7QUFxQkQsTUFBTSxXQUFXLEdBQUcsQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUMxRCxNQUFNLGFBQWEsR0FBRyxTQUFTLENBQUM7QUFFaEM7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxLQUFvQixFQUFFLFVBQXlCLEVBQWlCLEVBQUU7SUFDNUYsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDMUUsQ0FBQyxDQUFDO0FBRUY7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLElBQWUsRUFBRSxLQUFVLEVBQUUsRUFBRTtJQUNoRSxRQUFRLElBQUksRUFBRSxDQUFDO1FBQ2IsS0FBSyxTQUFTLENBQUMsSUFBSSxDQUFDO1FBQ3BCLEtBQUssU0FBUyxDQUFDLElBQUksQ0FBQztRQUNwQixLQUFLLFNBQVMsQ0FBQyxhQUFhLENB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QztRQUM5QyxDQUFDO0lBQ0gsQ0FBQyxDQUFDO0FBQ0osQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHJhbnNsYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvdHJhbnNsYXRpb24uc2VydmljZSc7XG5cbmV4cG9ydCBlbnVtIEZpZWxkVHlwZSB7XG4gIFN0cmluZyA9ICdTdHJpbmcnLFxuICBJbnRlZ2VyID0gJ0ludGVnZXInLFxuICBEb3VibGUgPSAnRG91YmxlJyxcbiAgQm9vbGVhbiA9ICdCb29sZWFuJyxcbiAgRGF0ZSA9ICdEYXRlJyxcbiAgVGltZSA9ICdUaW1lJyxcbiAgRGF0ZVRpbWUgPSAnRGF0ZVRpbWUnLFxuICBMb2NhbERhdGVUaW1lID0gJ0xvY2FsRGF0ZVRpbWUnLFxuICBFbnVtID0gJ0VudW0nLFxuICBMb29rdXAgPSAnTG9va3VwJ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1GaWVsZCB7XG4gIG5hbWU6IHN0cmluZztcbiAgdHlwZTogRmllbGRUeXBlO1xuICBsYWJlbDogc3RyaW5nO1xuICBtdWx0aXBsZT86IGJvb2xlYW47XG4gIHNlYXJjaEZpZWxkcz86IEZvcm1GaWVsZFtdO1xuICBvcHRpb25zPzogT3B0aW9uW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3B0aW9uIHtcbiAgdmFsdWU6IGFueTtcbiAgbGFiZWw6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXJUb2tlbiB7XG4gIGlkOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG59XG5cbmNvbnN0IG51bWJlclR5cGVzID0gW0ZpZWxkVHlwZS5JbnRlZ2VyLCBGaWVsZFR5cGUuRG91YmxlXTtcbmNvbnN0IG51bWJlclBhdHRlcm4gPSAvXlxcZCtcXGIkLztcblxuLyoqXG4gKiBNZXJnZSB0d28gYXJyYXlzIHJlbW92aW5nIGR1cGxpY2F0ZXNcbiAqL1xuZXhwb3J0IGNvbnN0IG1lcmdlVW5pcXVlID0gKGFycmF5OiBBcnJheTxzdHJpbmc+LCBvdGhlckFycmF5OiBBcnJheTxzdHJpbmc+KTogQXJyYXk8c3RyaW5nPiA9PiB7XG4gIHJldHVybiBhcnJheS5jb25jYXQob3RoZXJBcnJheS5maWx0ZXIoKGl0ZW0pID0+ICFhcnJheS5pbmNsdWRlcyhpdGVtKSkpO1xufTtcblxuLyoqXG4gKiBHZXQgdHlwZSBpbmZvcm1hdGlvbiBmb3IgdmFsaWRhdGlvblxuICovXG5leHBvcnQgY29uc3QgZ2V0VHlwZUluZm9ybWF0aW9uID0gKHR5cGU6IEZpZWxkVHlwZSwgdmFsdWU6IGFueSkgPT4ge1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIEZpZWxkVHlwZS5UaW1lOlxuICAgIGNhc2UgRmllbGRUeXBlLkRhdGU6XG4gICAgY2FzZSBGaWVsZFR5cGUuTG9jYWxEYXRlVGltZTpcbiAgICBjYXNlIEZpZWxkVHlwZS5EYXRlVGltZTpcbiAgICAgIHJldHVybiB7IGlzVmFsaWRWYWx1ZTogZmFsc2UsIHR5cGVFeGlzdHM6IHRydWUgfTtcbiAgICBjYXNlIEZpZWxkVHlwZS5JbnRlZ2VyOlxuICAgIGNhc2UgRmllbGRUeXBlLkRvdWJsZTpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGlzVmFsaWRWYWx1ZTogdmFsdWUubWF0Y2gobnVtYmVyUGF0dGVybiksXG4gICAgICAgIHR5cGVFeGlzdHM6IG51bWJlclR5cGVzLmluY2x1ZGVzKHR5cGUpLFxuICAgICAgfTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaXNWYWxpZFZhbHVlOiB2YWx1ZS5tYXRjaChudW1iZXJQYXR0ZXJuKSxcbiAgICAgICAgdHlwZUV4aXN0czogbnVtYmVyVHlwZXMuaW5jbHVkZXModHlwZSksXG4gICAgICB9O1xuICB9XG59O1xuXG4vKipcbiAqIFZhbGlkYXRlIGlmIGZpbHRlciB2YWx1ZSBpcyB2YWxpZCBmb3IgZmllbGQgdHlwZVxuICovXG5leHBvcnQgY29uc3QgaXNWYWxpZEZpbHRlciA9ICh0eXBlOiBGaWVsZFR5cGUsIHZhbHVlOiBhbnkpOiBib29sZWFuID0+IHtcbiAgY29uc3QgeyBpc1ZhbGlkVmFsdWUsIHR5cGVFeGlzdHMgfSA9IGdldFR5cGVJbmZvcm1hdGlvbih0eXBlLCB2YWx1ZSk7XG4gIHJldHVybiAhKHR5cGVFeGlzdHMgJiYgIWlzVmFsaWRWYWx1ZSk7XG59O1xuXG4vKipcbiAqIEdldCBuZXN0ZWQgcHJvcGVydHkgdmFsdWUgZnJvbSBvYmplY3QgdXNpbmcgZG90IG5vdGF0aW9uXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRQcm9wID0gKG9iajogYW55LCBwYXRoOiBzdHJpbmcpOiBhbnkgPT4ge1xuICBpZiAoIW9iaiB8fCAhcGF0aCkgcmV0dXJuICcnO1xuICByZXR1cm4gcGF0aC5zcGxpdCgnLicpLnJlZHVjZSgocmVzdWx0OiBhbnksIHByb3A6IGFueSkgPT4ge1xuICAgIHJldHVybiAocmVzdWx0ICYmIHJlc3VsdFtwcm9wXSAhPT0gdW5kZWZpbmVkKSA/IHJlc3VsdFtwcm9wXSA6ICcnO1xuICB9LCBvYmopO1xufTtcblxuLyoqXG4gKiBTZXQgbmVzdGVkIHByb3BlcnR5IHZhbHVlIGluIG9iamVjdCB1c2luZyBkb3Qgbm90YXRpb25cbiAqL1xuZXhwb3J0IGNvbnN0IHNldFByb3AgPSAob2JqOiBhbnksIHBhdGg6IHN0cmluZywgdmFsdWU6IGFueSk6IHZvaWQgPT4ge1xuICBjb25zdCBrZXlzID0gcGF0aC5zcGxpdCgnLicpO1xuICBjb25zdCBsYXN0S2V5ID0ga2V5cy5wb3AoKTtcbiAgXG4gIGlmICghbGFzdEtleSkgcmV0dXJuO1xuICBcbiAgY29uc3QgdGFyZ2V0ID0ga2V5cy5yZWR1Y2UoKGN1cnJlbnQsIGtleSkgPT4ge1xuICAgIGlmICghY3VycmVudFtrZXldIHx8IHR5cGVvZiBjdXJyZW50W2tleV0gIT09ICdvYmplY3QnKSB7XG4gICAgICBjdXJyZW50W2tleV0gPSB7fTtcbiAgICB9XG4gICAgcmV0dXJuIGN1cnJlbnRba2V5XTtcbiAgfSwgb2JqKTtcbiAgXG4gIHRhcmdldFtsYXN0S2V5XSA9IHZhbHVlO1xufTtcblxuLyoqXG4gKiBDcmVhdGUgbGFiZWwtdmFsdWUgcGFpcnMgZm9yIGRpc3BsYXlcbiAqL1xuZXhwb3J0IGNvbnN0IGdldExhYmVsVmFsdWVSZXF1ZXN0ID0gKGNvbnRlbnRzOiBhbnlbXSwgZGlzcGxheUZpZWxkczogc3RyaW5nW10pOiBhbnlbXSA9PiB7XG4gIHJldHVybiBjb250ZW50cy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAuLi5pdGVtLFxuICAgIGxhYmVsOiBkaXNwbGF5RmllbGRzLm1hcCgoZmllbGQpID0+IGdldFByb3AoaXRlbSwgZmllbGQpKS5qb2luKCcgLSAnKSxcbiAgfSkpO1xufTtcblxuLyoqXG4gKiBHZXQgc3VnZ2VzdGlvbiB2YWx1ZSBmb3IgYXV0b2NvbXBsZXRlXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRTdWdnZXN0aW9uVmFsdWUgPSAoXG4gIGRpc3BsYXlGaWVsZHM6IHN0cmluZ1tdLCBcbiAgb3duZXJFbnRpdHk6IHN0cmluZywgXG4gIHZhbHVlOiBhbnksIFxuICBzZXBhcmF0b3I6IHN0cmluZyA9ICcgLSAnXG4pOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gZGlzcGxheUZpZWxkc1xuICAgIC5tYXAoKGZpZWxkKSA9PiBnZXRQcm9wKHZhbHVlLCBgJHtvd25lckVudGl0eX0uJHtmaWVsZH1gKSlcbiAgICAuZmlsdGVyKHZhbCA9PiB2YWwgIT09IG51bGwgJiYgdmFsICE9PSB1bmRlZmluZWQgJiYgdmFsICE9PSAnJylcbiAgICAuam9pbihzZXBhcmF0b3IpO1xufTtcblxuLyoqXG4gKiBDcmVhdGUgZW51bSBxdWVyeSBmaWx0ZXJcbiAqL1xuZXhwb3J0IGNvbnN0IGdldEVudW1RdWVyeSA9IChuYW1lOiBzdHJpbmcsIHZhbHVlOiBhbnksIG11bHRpcGxlOiBib29sZWFuID0gZmFsc2UpOiBzdHJpbmcgPT4ge1xuICBpZiAobXVsdGlwbGUgJiYgQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gYCgke3ZhbHVlLm1hcCgoc2VsZWN0ZWQ6IGFueSkgPT4gYCR7bmFtZX0gZXEgJyR7c2VsZWN0ZWR9J2ApLmpvaW4oJyBvciAnKX0pYDtcbiAgfVxuICByZXR1cm4gYCR7bmFtZX0gZXEgJyR7dmFsdWV9J2A7XG59O1xuXG4vKipcbiAqIEVzY2FwZSBzcGVjaWFsIGNoYXJhY3RlcnMgaW4gZmlsdGVyIHN0cmluZ3NcbiAqL1xuZXhwb3J0IGNvbnN0IGVzY2FwZUZpbHRlclZhbHVlID0gKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gdmFsdWUucmVwbGFjZSgvJy9nLCBcIicnXCIpO1xufTtcblxuLyoqXG4gKiBDcmVhdGUgZmlsdGVyIHN0cmluZyBmb3IgZGlmZmVyZW50IGZpZWxkIHR5cGVzXG4gKi9cbmV4cG9ydCBjb25zdCBjcmVhdGVGaWx0ZXJTdHJpbmcgPSAoZm9ybUZpZWxkOiBGb3JtRmllbGQsIHZhbHVlOiBhbnkpOiBzdHJpbmcgPT4ge1xuICBjb25zdCB7IG5hbWUsIHR5cGUsIG11bHRpcGxlIH0gPSBmb3JtRmllbGQ7XG4gIFxuICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBgJHtuYW1lfSBlcSBudWxsYDtcbiAgfVxuICBcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICByZXR1cm4gYCR7bmFtZX0gZXEgJHt2YWx1ZX1gO1xuICB9XG5cbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBGaWVsZFR5cGUuRGF0ZToge1xuICAgICAgY29uc3QgZGF0ZVZhbHVlID0gdmFsdWUgaW5zdGFuY2VvZiBEYXRlID8gdmFsdWUgOiBuZXcgRGF0ZSh2YWx1ZSk7XG4gICAgICBjb25zdCBkYXRlU3RyID0gZGF0ZVZhbHVlLnRvSVNPU3RyaW5nKCkuc3BsaXQoJ1QnKVswXTtcbiAgICAgIHJldHVybiBgJHtuYW1lfSBlcSAnJHtkYXRlU3RyfSdgO1xuICAgIH1cbiAgICAgIFxuICAgIGNhc2UgRmllbGRUeXBlLlRpbWU6IHtcbiAgICAgIGNvbnN0IHRpbWVWYWx1ZSA9IHZhbHVlIGluc3RhbmNlb2YgRGF0ZSA/IHZhbHVlIDogbmV3IERhdGUodmFsdWUpO1xuICAgICAgY29uc3QgdGltZVN0ciA9IHRpbWVWYWx1ZS50b1RpbWVTdHJpbmcoKS5zcGxpdCgnICcpWzBdO1xuICAgICAgcmV0dXJuIGAke25hbWV9IGVxICcke3RpbWVTdHJ9J2A7XG4gICAgfVxuICAgICAgXG4gICAgY2FzZSBGaWVsZFR5cGUuRGF0ZVRpbWU6IHtcbiAgICAgIGNvbnN0IGRhdGVUaW1lVmFsdWUgPSB2YWx1ZSBpbnN0YW5jZW9mIERhdGUgPyB2YWx1ZSA6IG5ldyBEYXRlKHZhbHVlKTtcbiAgICAgIHJldHVybiBgJHtuYW1lfSBlcSAnJHtkYXRlVGltZVZhbHVlLnRvSVNPU3RyaW5nKCl9J2A7XG4gICAgfVxuICAgICAgXG4gICAgY2FzZSBGaWVsZFR5cGUuTG9jYWxEYXRlVGltZToge1xuICAgICAgY29uc3QgbG9jYWxEYXRlVGltZVZhbHVlID0gdmFsdWUgaW5zdGFuY2VvZiBEYXRlID8gdmFsdWUgOiBuZXcgRGF0ZSh2YWx1ZSk7XG4gICAgICBjb25zdCBsb2NhbERhdGVUaW1lU3RyID0gbG9jYWxEYXRlVGltZVZhbHVlLnRvSVNPU3RyaW5nKCkucmVwbGFjZSgnWicsICcnKTtcbiAgICAgIHJldHVybiBgJHtuYW1lfSBlcSAnJHtsb2NhbERhdGVUaW1lU3RyfSdgO1xuICAgIH1cbiAgICAgIFxuICAgIGNhc2UgRmllbGRUeXBlLkVudW06XG4gICAgICByZXR1cm4gZ2V0RW51bVF1ZXJ5KG5hbWUsIHZhbHVlLCBtdWx0aXBsZSk7XG4gICAgICBcbiAgICBjYXNlIEZpZWxkVHlwZS5TdHJpbmc6IHtcbiAgICAgIGNvbnN0IGVzY2FwZWRWYWx1ZSA9IGVzY2FwZUZpbHRlclZhbHVlKFN0cmluZyh2YWx1ZSkpO1xuICAgICAgcmV0dXJuIGB1cHBlcigke25hbWV9KSBsaWtlIHVwcGVyKCcke2VzY2FwZWRWYWx1ZX0lJylgO1xuICAgIH1cbiAgICAgIFxuICAgIGNhc2UgRmllbGRUeXBlLkxvb2t1cDoge1xuICAgICAgY29uc3QgbG9va3VwSWQgPSB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnID8gdmFsdWUuaWQgOiB2YWx1ZTtcbiAgICAgIHJldHVybiBgJHtuYW1lfSBlcSAnJHtsb29rdXBJZH0nYDtcbiAgICB9XG4gICAgICBcbiAgICBjYXNlIEZpZWxkVHlwZS5Cb29sZWFuOlxuICAgICAgcmV0dXJuIGAke25hbWV9IGVxICR7dmFsdWUgPyAndHJ1ZScgOiAnZmFsc2UnfWA7XG4gICAgICBcbiAgICBjYXNlIEZpZWxkVHlwZS5JbnRlZ2VyOlxuICAgIGNhc2UgRmllbGRUeXBlLkRvdWJsZTpcbiAgICAgIHJldHVybiBgJHtuYW1lfSBlcSAke3ZhbHVlfWA7XG4gICAgICBcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGAke25hbWV9IGVxICcke2VzY2FwZUZpbHRlclZhbHVlKFN0cmluZyh2YWx1ZSkpfSdgO1xuICB9XG59O1xuXG4vKipcbiAqIENyZWF0ZSBmaWx0ZXIgdG9rZW5zIGZvciBVSSBkaXNwbGF5XG4gKi9cbmV4cG9ydCBjb25zdCBjcmVhdGVGaWx0ZXJUb2tlbnMgPSAoXG4gIGZvcm1GaWVsZDogRm9ybUZpZWxkLCBcbiAgdmFsdWU6IGFueSwgXG4gIHRyYW5zbGF0aW9uU2VydmljZTogVHJhbnNsYXRpb25TZXJ2aWNlXG4pOiBGaWx0ZXJUb2tlbiA9PiB7XG4gIGNvbnN0IHsgbmFtZSwgdHlwZSwgbGFiZWwsIHNlYXJjaEZpZWxkcywgb3B0aW9ucyB9ID0gZm9ybUZpZWxkIGFzIGFueTtcbiAgbGV0IGxhYmVsVmFsdWUgPSB2YWx1ZTtcblxuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIEZpZWxkVHlwZS5EYXRlOlxuICAgICAgbGFiZWxWYWx1ZSA9IHZhbHVlLnRvTG9jYWxlRGF0ZVN0cmluZyA/IHZhbHVlLnRvTG9jYWxlRGF0ZVN0cmluZygpIDogdmFsdWU7XG4gICAgICBicmVhaztcbiAgICAgIFxuICAgIGNhc2UgRmllbGRUeXBlLlRpbWU6XG4gICAgICBsYWJlbFZhbHVlID0gdmFsdWUudG9Mb2NhbGVUaW1lU3RyaW5nID8gdmFsdWUudG9Mb2NhbGVUaW1lU3RyaW5nKCkgOiB2YWx1ZTtcbiAgICAgIGJyZWFrO1xuICAgICAgXG4gICAgY2FzZSBGaWVsZFR5cGUuTG9jYWxEYXRlVGltZTpcbiAgICBjYXNlIEZpZWxkVHlwZS5EYXRlVGltZTpcbiAgICAgIGxhYmVsVmFsdWUgPSB2YWx1ZS50b0xvY2FsZVN0cmluZyA/IHZhbHVlLnRvTG9jYWxlU3RyaW5nKCkgOiB2YWx1ZTtcbiAgICAgIGJyZWFrO1xuICAgICAgXG4gICAgY2FzZSBGaWVsZFR5cGUuTG9va3VwOlxuICAgICAgaWYgKHNlYXJjaEZpZWxkcyAmJiBzZWFyY2hGaWVsZHMubGVuZ3RoKSB7XG4gICAgICAgIGxhYmVsVmFsdWUgPSBzZWFyY2hGaWVsZHMubWFwKChmaWVsZDogRm9ybUZpZWxkKSA9PiBnZXRQcm9wKHZhbHVlLCBmaWVsZC5uYW1lKSkuam9pbignIC0gJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsYWJlbFZhbHVlID0gdmFsdWUubGFiZWwgfHwgdmFsdWUubmFtZSB8fCB2YWx1ZS5pZDtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgICAgXG4gICAgY2FzZSBGaWVsZFR5cGUuRW51bTpcbiAgICAgIGlmIChvcHRpb25zKSB7XG4gICAgICAgIGNvbnN0IG9wdGlvbiA9IG9wdGlvbnMuZmluZCgob3B0OiBPcHRpb24pID0+IG9wdC52YWx1ZSA9PT0gdmFsdWUpO1xuICAgICAgICBsYWJlbFZhbHVlID0gb3B0aW9uID8gb3B0aW9uLmxhYmVsIDogdmFsdWU7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICAgIFxuICAgIGNhc2UgRmllbGRUeXBlLkJvb2xlYW46XG4gICAgICBsYWJlbFZhbHVlID0gdmFsdWUgXG4gICAgICAgID8gdHJhbnNsYXRpb25TZXJ2aWNlLnRyYW5zbGF0ZSgnYm9vbGVhbi50cnVlJykgXG4gICAgICAgIDogdHJhbnNsYXRpb25TZXJ2aWNlLnRyYW5zbGF0ZSgnYm9vbGVhbi5mYWxzZScpO1xuICAgICAgYnJlYWs7XG4gICAgICBcbiAgICBjYXNlIEZpZWxkVHlwZS5JbnRlZ2VyOlxuICAgIGNhc2UgRmllbGRUeXBlLkRvdWJsZTpcbiAgICAgIGxhYmVsVmFsdWUgPSB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInID8gdmFsdWUudG9Mb2NhbGVTdHJpbmcoKSA6IHZhbHVlO1xuICAgICAgYnJlYWs7XG4gIH1cblxuICByZXR1cm4geyBcbiAgICBpZDogbmFtZSwgXG4gICAgbGFiZWw6IGAke2xhYmVsfTogJHtsYWJlbFZhbHVlfWAgXG4gIH07XG59O1xuXG4vKipcbiAqIFJlc29sdmUgJHJlZiByZWZlcmVuY2VzIGluIEpTT04gb2JqZWN0c1xuICovXG5leHBvcnQgY29uc3QgcmVzb2x2ZVJlZnMgPSAocGF5bG9hZDogYW55KTogYW55ID0+IHtcbiAgY29uc3QgZ2V0RGF0YUZyb21SZWYgPSAocmVmOiBzdHJpbmcsIHJvb3RPYmo6IGFueSk6IGFueSA9PiB7XG4gICAgY29uc3QgcmVnZXggPSAvXFxbXCIoLio/KVwiXFxdL2c7XG4gICAgY29uc3QgcmVzdWx0ID0gW107XG4gICAgbGV0IG1hdGNoO1xuXG4gICAgd2hpbGUgKChtYXRjaCA9IHJlZ2V4LmV4ZWMocmVmKSkgIT09IG51bGwpIHtcbiAgICAgIHJlc3VsdC5wdXNoKG1hdGNoWzFdKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0LnJlZHVjZSgoYWNjLCBwYXJ0KSA9PiBhY2MgJiYgYWNjW3BhcnRdLCByb290T2JqKTtcbiAgfTtcblxuICBjb25zdCByZXNvbHZlID0gKG9iajogYW55LCByb290T2JqOiBhbnkpOiB2b2lkID0+IHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShvYmopKSB7XG4gICAgICBvYmouZm9yRWFjaCgoaXRlbSkgPT4gcmVzb2x2ZShpdGVtLCByb290T2JqKSk7XG4gICAgfSBlbHNlIGlmIChvYmogIT09IG51bGwgJiYgdHlwZW9mIG9iaiA9PT0gJ29iamVjdCcpIHtcbiAgICAgIE9iamVjdC5rZXlzKG9iaikuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgIGlmIChrZXkgPT09ICckcmVmJyAmJiBvYmpba2V5XSkge1xuICAgICAgICAgIGNvbnN0IHJlZlBhdGggPSBvYmpba2V5XTtcbiAgICAgICAgICBjb25zdCByZWZEYXRhID0gZ2V0RGF0YUZyb21SZWYocmVmUGF0aCwgcm9vdE9iaik7XG4gICAgICAgICAgaWYgKHJlZkRhdGEpIHtcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24ob2JqLCByZWZEYXRhKTtcbiAgICAgICAgICAgIGRlbGV0ZSBvYmpba2V5XTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzb2x2ZShvYmpba2V5XSwgcm9vdE9iaik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBjbG9uZWRQYXlsb2FkID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShwYXlsb2FkKSk7XG4gIHJlc29sdmUoY2xvbmVkUGF5bG9hZCwgY2xvbmVkUGF5bG9hZCk7XG4gIHJldHVybiBjbG9uZWRQYXlsb2FkO1xufTtcblxuLyoqXG4gKiBEZWVwIGNsb25lIGFuIG9iamVjdFxuICovXG5leHBvcnQgY29uc3QgZGVlcENsb25lID0gPFQ+KG9iajogVCk6IFQgPT4ge1xuICBpZiAob2JqID09PSBudWxsIHx8IHR5cGVvZiBvYmogIT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIG9iajtcbiAgfVxuICBcbiAgaWYgKG9iaiBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICByZXR1cm4gbmV3IERhdGUob2JqLmdldFRpbWUoKSkgYXMgYW55O1xuICB9XG4gIFxuICBpZiAoQXJyYXkuaXNBcnJheShvYmopKSB7XG4gICAgcmV0dXJuIG9iai5tYXAoaXRlbSA9PiBkZWVwQ2xvbmUoaXRlbSkpIGFzIGFueTtcbiAgfVxuICBcbiAgY29uc3QgY2xvbmVkID0ge30gYXMgVDtcbiAgT2JqZWN0LmtleXMob2JqKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgKGNsb25lZCBhcyBhbnkpW2tleV0gPSBkZWVwQ2xvbmUoKG9iaiBhcyBhbnkpW2tleV0pO1xuICB9KTtcbiAgXG4gIHJldHVybiBjbG9uZWQ7XG59O1xuXG4vKipcbiAqIENoZWNrIGlmIHR3byBvYmplY3RzIGFyZSBkZWVwbHkgZXF1YWxcbiAqL1xuZXhwb3J0IGNvbnN0IGRlZXBFcXVhbCA9IChvYmoxOiBhbnksIG9iajI6IGFueSk6IGJvb2xlYW4gPT4ge1xuICBpZiAob2JqMSA9PT0gb2JqMikge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIFxuICBpZiAob2JqMSA9PSBudWxsIHx8IG9iajIgPT0gbnVsbCkge1xuICAgIHJldHVybiBvYmoxID09PSBvYmoyO1xuICB9XG4gIFxuICBpZiAodHlwZW9mIG9iajEgIT09IHR5cGVvZiBvYmoyKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIFxuICBpZiAodHlwZW9mIG9iajEgIT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIG9iajEgPT09IG9iajI7XG4gIH1cbiAgXG4gIGlmIChBcnJheS5pc0FycmF5KG9iajEpICE9PSBBcnJheS5pc0FycmF5KG9iajIpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIFxuICBjb25zdCBrZXlzMSA9IE9iamVjdC5rZXlzKG9iajEpO1xuICBjb25zdCBrZXlzMiA9IE9iamVjdC5rZXlzKG9iajIpO1xuICBcbiAgaWYgKGtleXMxLmxlbmd0aCAhPT0ga2V5czIubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIFxuICByZXR1cm4ga2V5czEuZXZlcnkoa2V5ID0+IGRlZXBFcXVhbChvYmoxW2tleV0sIG9iajJba2V5XSkpO1xufTtcblxuLyoqXG4gKiBEZWJvdW5jZSBmdW5jdGlvbiBleGVjdXRpb25cbiAqL1xuZXhwb3J0IGNvbnN0IGRlYm91bmNlID0gPFQgZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IGFueT4oXG4gIGZ1bmM6IFQsXG4gIHdhaXQ6IG51bWJlclxuKTogKCguLi5hcmdzOiBQYXJhbWV0ZXJzPFQ+KSA9PiB2b2lkKSA9PiB7XG4gIGxldCB0aW1lb3V0OiBhbnk7XG4gIFxuICByZXR1cm4gKC4uLmFyZ3M6IFBhcmFtZXRlcnM8VD4pID0+IHtcbiAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgdGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4gZnVuYyguLi5hcmdzKSwgd2FpdCk7XG4gIH07XG59O1xuXG4vKipcbiAqIFRocm90dGxlIGZ1bmN0aW9uIGV4ZWN1dGlvblxuICovXG5leHBvcnQgY29uc3QgdGhyb3R0bGUgPSA8VCBleHRlbmRzICguLi5hcmdzOiBhbnlbXSkgPT4gYW55PihcbiAgZnVuYzogVCxcbiAgbGltaXQ6IG51bWJlclxuKTogKCguLi5hcmdzOiBQYXJhbWV0ZXJzPFQ+KSA9PiB2b2lkKSA9PiB7XG4gIGxldCBpblRocm90dGxlOiBib29sZWFuO1xuICBcbiAgcmV0dXJuICguLi5hcmdzOiBQYXJhbWV0ZXJzPFQ+KSA9PiB7XG4gICAgaWYgKCFpblRocm90dGxlKSB7XG4gICAgICBmdW5jKC4uLmFyZ3MpO1xuICAgICAgaW5UaHJvdHRsZSA9IHRydWU7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IGluVGhyb3R0bGUgPSBmYWxzZSwgbGltaXQpO1xuICAgIH1cbiAgfTtcbn07XG4iXX0=
312
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzLWFpL3NyYy9saWIvdXRpbHMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxDQUFOLElBQVksU0FXWDtBQVhELFdBQVksU0FBUztJQUNuQiw4QkFBaUIsQ0FBQTtJQUNqQixnQ0FBbUIsQ0FBQTtJQUNuQiw4QkFBaUIsQ0FBQTtJQUNqQixnQ0FBbUIsQ0FBQTtJQUNuQiwwQkFBYSxDQUFBO0lBQ2IsMEJBQWEsQ0FBQTtJQUNiLGtDQUFxQixDQUFBO0lBQ3JCLDRDQUErQixDQUFBO0lBQy9CLDBCQUFhLENBQUE7SUFDYiw4QkFBaUIsQ0FBQTtBQUNuQixDQUFDLEVBWFcsU0FBUyxLQUFULFNBQVMsUUFXcEI7QUFxQkQsTUFBTSxXQUFXLEdBQUcsQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUMxRCxNQUFNLGFBQWEsR0FBRyxTQUFTLENBQUM7QUFFaEM7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxLQUFvQixFQUFFLFVBQXlCLEVBQWlCLEVBQUU7SUFDNUYsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDMUUsQ0FBQyxDQUFDO0FBRUY7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLElBQWUsRUFBRSxLQUFVLEVBQUUsRUFBRTtJQUNoRSxRQUFRLElBQUksRUFBRSxDQUFDO1FBQ2IsS0FBSyxTQUFTLENBQUMsSUFBSSxDQUFDO1FBQ3BCLEtBQUssU0FBUyxDQUFDLElBQUksQ0FBQztRQUNwQixLQUFLLFNBQVMsQ0FBQyxhQUFhLENB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QztRQUM5QyxDQUFDO0lBQ0gsQ0FBQyxDQUFDO0FBQ0osQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHJhbnNsYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvdHJhbnNsYXRpb24uc2VydmljZSc7XG5cbmV4cG9ydCBlbnVtIEZpZWxkVHlwZSB7XG4gIFN0cmluZyA9ICdTdHJpbmcnLFxuICBJbnRlZ2VyID0gJ0ludGVnZXInLFxuICBEb3VibGUgPSAnRG91YmxlJyxcbiAgQm9vbGVhbiA9ICdCb29sZWFuJyxcbiAgRGF0ZSA9ICdEYXRlJyxcbiAgVGltZSA9ICdUaW1lJyxcbiAgRGF0ZVRpbWUgPSAnRGF0ZVRpbWUnLFxuICBMb2NhbERhdGVUaW1lID0gJ0xvY2FsRGF0ZVRpbWUnLFxuICBFbnVtID0gJ0VudW0nLFxuICBMb29rdXAgPSAnTG9va3VwJ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1GaWVsZCB7XG4gIG5hbWU6IHN0cmluZztcbiAgdHlwZTogRmllbGRUeXBlO1xuICBsYWJlbDogc3RyaW5nO1xuICBtdWx0aXBsZT86IGJvb2xlYW47XG4gIHNlYXJjaEZpZWxkcz86IEZvcm1GaWVsZFtdO1xuICBvcHRpb25zPzogT3B0aW9uW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3B0aW9uIHtcbiAgdmFsdWU6IGFueTtcbiAgbGFiZWw6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXJUb2tlbiB7XG4gIGlkOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG59XG5cbmNvbnN0IG51bWJlclR5cGVzID0gW0ZpZWxkVHlwZS5JbnRlZ2VyLCBGaWVsZFR5cGUuRG91YmxlXTtcbmNvbnN0IG51bWJlclBhdHRlcm4gPSAvXlxcZCtcXGIkLztcblxuLyoqXG4gKiBNZXJnZSB0d28gYXJyYXlzIHJlbW92aW5nIGR1cGxpY2F0ZXNcbiAqL1xuZXhwb3J0IGNvbnN0IG1lcmdlVW5pcXVlID0gKGFycmF5OiBBcnJheTxzdHJpbmc+LCBvdGhlckFycmF5OiBBcnJheTxzdHJpbmc+KTogQXJyYXk8c3RyaW5nPiA9PiB7XG4gIHJldHVybiBhcnJheS5jb25jYXQob3RoZXJBcnJheS5maWx0ZXIoKGl0ZW0pID0+ICFhcnJheS5pbmNsdWRlcyhpdGVtKSkpO1xufTtcblxuLyoqXG4gKiBHZXQgdHlwZSBpbmZvcm1hdGlvbiBmb3IgdmFsaWRhdGlvblxuICovXG5leHBvcnQgY29uc3QgZ2V0VHlwZUluZm9ybWF0aW9uID0gKHR5cGU6IEZpZWxkVHlwZSwgdmFsdWU6IGFueSkgPT4ge1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIEZpZWxkVHlwZS5UaW1lOlxuICAgIGNhc2UgRmllbGRUeXBlLkRhdGU6XG4gICAgY2FzZSBGaWVsZFR5cGUuTG9jYWxEYXRlVGltZTpcbiAgICBjYXNlIEZpZWxkVHlwZS5EYXRlVGltZTpcbiAgICAgIHJldHVybiB7IGlzVmFsaWRWYWx1ZTogZmFsc2UsIHR5cGVFeGlzdHM6IHRydWUgfTtcbiAgICBjYXNlIEZpZWxkVHlwZS5JbnRlZ2VyOlxuICAgIGNhc2UgRmllbGRUeXBlLkRvdWJsZTpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGlzVmFsaWRWYWx1ZTogdmFsdWUubWF0Y2gobnVtYmVyUGF0dGVybiksXG4gICAgICAgIHR5cGVFeGlzdHM6IG51bWJlclR5cGVzLmluY2x1ZGVzKHR5cGUpLFxuICAgICAgfTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaXNWYWxpZFZhbHVlOiB2YWx1ZS5tYXRjaChudW1iZXJQYXR0ZXJuKSxcbiAgICAgICAgdHlwZUV4aXN0czogbnVtYmVyVHlwZXMuaW5jbHVkZXModHlwZSksXG4gICAgICB9O1xuICB9XG59O1xuXG4vKipcbiAqIFZhbGlkYXRlIGlmIGZpbHRlciB2YWx1ZSBpcyB2YWxpZCBmb3IgZmllbGQgdHlwZVxuICovXG5leHBvcnQgY29uc3QgaXNWYWxpZEZpbHRlciA9ICh0eXBlOiBGaWVsZFR5cGUsIHZhbHVlOiBhbnkpOiBib29sZWFuID0+IHtcbiAgY29uc3QgeyBpc1ZhbGlkVmFsdWUsIHR5cGVFeGlzdHMgfSA9IGdldFR5cGVJbmZvcm1hdGlvbih0eXBlLCB2YWx1ZSk7XG4gIHJldHVybiAhKHR5cGVFeGlzdHMgJiYgIWlzVmFsaWRWYWx1ZSk7XG59O1xuXG4vKipcbiAqIEdldCBuZXN0ZWQgcHJvcGVydHkgdmFsdWUgZnJvbSBvYmplY3QgdXNpbmcgZG90IG5vdGF0aW9uXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRQcm9wID0gKG9iajogYW55LCBwYXRoOiBzdHJpbmcpOiBhbnkgPT4ge1xuICBpZiAoIW9iaiB8fCAhcGF0aCkgcmV0dXJuICcnO1xuICByZXR1cm4gcGF0aC5zcGxpdCgnLicpLnJlZHVjZSgocmVzdWx0OiBhbnksIHByb3A6IGFueSkgPT4ge1xuICAgIHJldHVybiAocmVzdWx0ICYmIHJlc3VsdFtwcm9wXSAhPT0gdW5kZWZpbmVkKSA/IHJlc3VsdFtwcm9wXSA6ICcnO1xuICB9LCBvYmopO1xufTtcblxuLyoqXG4gKiBTZXQgbmVzdGVkIHByb3BlcnR5IHZhbHVlIGluIG9iamVjdCB1c2luZyBkb3Qgbm90YXRpb25cbiAqL1xuZXhwb3J0IGNvbnN0IHNldFByb3AgPSAob2JqOiBhbnksIHBhdGg6IHN0cmluZywgdmFsdWU6IGFueSk6IHZvaWQgPT4ge1xuICBjb25zdCBrZXlzID0gcGF0aC5zcGxpdCgnLicpO1xuICBjb25zdCBsYXN0S2V5ID0ga2V5cy5wb3AoKTtcbiAgXG4gIGlmICghbGFzdEtleSkgcmV0dXJuO1xuICBcbiAgY29uc3QgdGFyZ2V0ID0ga2V5cy5yZWR1Y2UoKGN1cnJlbnQsIGtleSkgPT4ge1xuICAgIGlmICghY3VycmVudFtrZXldIHx8IHR5cGVvZiBjdXJyZW50W2tleV0gIT09ICdvYmplY3QnKSB7XG4gICAgICBjdXJyZW50W2tleV0gPSB7fTtcbiAgICB9XG4gICAgcmV0dXJuIGN1cnJlbnRba2V5XTtcbiAgfSwgb2JqKTtcbiAgXG4gIHRhcmdldFtsYXN0S2V5XSA9IHZhbHVlO1xufTtcblxuLyoqXG4gKiBDcmVhdGUgbGFiZWwtdmFsdWUgcGFpcnMgZm9yIGRpc3BsYXlcbiAqL1xuZXhwb3J0IGNvbnN0IGdldExhYmVsVmFsdWVSZXF1ZXN0ID0gKGNvbnRlbnRzOiBhbnlbXSwgZGlzcGxheUZpZWxkczogc3RyaW5nW10pOiBhbnlbXSA9PiB7XG4gIHJldHVybiBjb250ZW50cy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAuLi5pdGVtLFxuICAgIGxhYmVsOiBkaXNwbGF5RmllbGRzLm1hcCgoZmllbGQpID0+IGdldFByb3AoaXRlbSwgZmllbGQpKS5qb2luKCcgLSAnKSxcbiAgfSkpO1xufTtcblxuLyoqXG4gKiBHZXQgc3VnZ2VzdGlvbiB2YWx1ZSBmb3IgYXV0b2NvbXBsZXRlXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRTdWdnZXN0aW9uVmFsdWUgPSAoXG4gIGRpc3BsYXlGaWVsZHM6IHN0cmluZ1tdLCBcbiAgb3duZXJFbnRpdHk6IHN0cmluZywgXG4gIHZhbHVlOiBhbnksIFxuICBzZXBhcmF0b3I6IHN0cmluZyA9ICcgLSAnXG4pOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gZGlzcGxheUZpZWxkc1xuICAgIC5tYXAoKGZpZWxkKSA9PiBnZXRQcm9wKHZhbHVlLCBgJHtvd25lckVudGl0eX0uJHtmaWVsZH1gKSlcbiAgICAuZmlsdGVyKHZhbCA9PiB2YWwgIT09IG51bGwgJiYgdmFsICE9PSB1bmRlZmluZWQgJiYgdmFsICE9PSAnJylcbiAgICAuam9pbihzZXBhcmF0b3IpO1xufTtcblxuLyoqXG4gKiBDcmVhdGUgZW51bSBxdWVyeSBmaWx0ZXJcbiAqL1xuZXhwb3J0IGNvbnN0IGdldEVudW1RdWVyeSA9IChuYW1lOiBzdHJpbmcsIHZhbHVlOiBhbnksIG11bHRpcGxlOiBib29sZWFuID0gZmFsc2UpOiBzdHJpbmcgPT4ge1xuICBpZiAobXVsdGlwbGUgJiYgQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gYCgke3ZhbHVlLm1hcCgoc2VsZWN0ZWQ6IGFueSkgPT4gYCR7bmFtZX0gZXEgJyR7c2VsZWN0ZWR9J2ApLmpvaW4oJyBvciAnKX0pYDtcbiAgfVxuICByZXR1cm4gYCR7bmFtZX0gZXEgJyR7dmFsdWV9J2A7XG59O1xuXG4vKipcbiAqIEVzY2FwZSBzcGVjaWFsIGNoYXJhY3RlcnMgaW4gZmlsdGVyIHN0cmluZ3NcbiAqL1xuZXhwb3J0IGNvbnN0IGVzY2FwZUZpbHRlclZhbHVlID0gKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gdmFsdWUucmVwbGFjZSgvJy9nLCBcIicnXCIpO1xufTtcblxuLyoqXG4gKiBDcmVhdGUgZmlsdGVyIHN0cmluZyBmb3IgZGlmZmVyZW50IGZpZWxkIHR5cGVzXG4gKi9cbmV4cG9ydCBjb25zdCBjcmVhdGVGaWx0ZXJTdHJpbmcgPSAoZm9ybUZpZWxkOiBGb3JtRmllbGQsIHZhbHVlOiBhbnkpOiBzdHJpbmcgPT4ge1xuICBjb25zdCB7IG5hbWUsIHR5cGUsIG11bHRpcGxlIH0gPSBmb3JtRmllbGQ7XG4gIFxuICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBgJHtuYW1lfSBlcSBudWxsYDtcbiAgfVxuICBcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICByZXR1cm4gYCR7bmFtZX0gZXEgJHt2YWx1ZX1gO1xuICB9XG5cbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBGaWVsZFR5cGUuRGF0ZToge1xuICAgICAgY29uc3QgZGF0ZVZhbHVlID0gdmFsdWUgaW5zdGFuY2VvZiBEYXRlID8gdmFsdWUgOiBuZXcgRGF0ZSh2YWx1ZSk7XG4gICAgICBjb25zdCBkYXRlU3RyID0gZGF0ZVZhbHVlLnRvSVNPU3RyaW5nKCkuc3BsaXQoJ1QnKVswXTtcbiAgICAgIHJldHVybiBgJHtuYW1lfSBlcSAnJHtkYXRlU3RyfSdgO1xuICAgIH1cbiAgICAgIFxuICAgIGNhc2UgRmllbGRUeXBlLlRpbWU6IHtcbiAgICAgIGNvbnN0IHRpbWVWYWx1ZSA9IHZhbHVlIGluc3RhbmNlb2YgRGF0ZSA/IHZhbHVlIDogbmV3IERhdGUodmFsdWUpO1xuICAgICAgY29uc3QgdGltZVN0ciA9IHRpbWVWYWx1ZS50b1RpbWVTdHJpbmcoKS5zcGxpdCgnICcpWzBdO1xuICAgICAgcmV0dXJuIGAke25hbWV9IGVxICcke3RpbWVTdHJ9J2A7XG4gICAgfVxuICAgICAgXG4gICAgY2FzZSBGaWVsZFR5cGUuRGF0ZVRpbWU6IHtcbiAgICAgIGNvbnN0IGRhdGVUaW1lVmFsdWUgPSB2YWx1ZSBpbnN0YW5jZW9mIERhdGUgPyB2YWx1ZSA6IG5ldyBEYXRlKHZhbHVlKTtcbiAgICAgIHJldHVybiBgJHtuYW1lfSBlcSAnJHtkYXRlVGltZVZhbHVlLnRvSVNPU3RyaW5nKCl9J2A7XG4gICAgfVxuICAgICAgXG4gICAgY2FzZSBGaWVsZFR5cGUuTG9jYWxEYXRlVGltZToge1xuICAgICAgY29uc3QgbG9jYWxEYXRlVGltZVZhbHVlID0gdmFsdWUgaW5zdGFuY2VvZiBEYXRlID8gdmFsdWUgOiBuZXcgRGF0ZSh2YWx1ZSk7XG4gICAgICBjb25zdCBsb2NhbERhdGVUaW1lU3RyID0gbG9jYWxEYXRlVGltZVZhbHVlLnRvSVNPU3RyaW5nKCkucmVwbGFjZSgnWicsICcnKTtcbiAgICAgIHJldHVybiBgJHtuYW1lfSBlcSAnJHtsb2NhbERhdGVUaW1lU3RyfSdgO1xuICAgIH1cbiAgICAgIFxuICAgIGNhc2UgRmllbGRUeXBlLkVudW06XG4gICAgICByZXR1cm4gZ2V0RW51bVF1ZXJ5KG5hbWUsIHZhbHVlLCBtdWx0aXBsZSk7XG4gICAgICBcbiAgICBjYXNlIEZpZWxkVHlwZS5TdHJpbmc6IHtcbiAgICAgIGNvbnN0IGVzY2FwZWRWYWx1ZSA9IGVzY2FwZUZpbHRlclZhbHVlKFN0cmluZyh2YWx1ZSkpO1xuICAgICAgcmV0dXJuIGBjb250YWluaW5nKHVwcGVyKCR7bmFtZX0pLCB1cHBlcignJHtlc2NhcGVkVmFsdWV9JykpYDtcbiAgICB9XG4gICAgICBcbiAgICBjYXNlIEZpZWxkVHlwZS5Mb29rdXA6IHtcbiAgICAgIGNvbnN0IGxvb2t1cElkID0gdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyA/IHZhbHVlLmlkIDogdmFsdWU7XG4gICAgICByZXR1cm4gYCR7bmFtZX0gZXEgJyR7bG9va3VwSWR9J2A7XG4gICAgfVxuICAgICAgXG4gICAgY2FzZSBGaWVsZFR5cGUuQm9vbGVhbjpcbiAgICAgIHJldHVybiBgJHtuYW1lfSBlcSAke3ZhbHVlID8gJ3RydWUnIDogJ2ZhbHNlJ31gO1xuICAgICAgXG4gICAgY2FzZSBGaWVsZFR5cGUuSW50ZWdlcjpcbiAgICBjYXNlIEZpZWxkVHlwZS5Eb3VibGU6XG4gICAgICByZXR1cm4gYCR7bmFtZX0gZXEgJHt2YWx1ZX1gO1xuICAgICAgXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBgJHtuYW1lfSBlcSAnJHtlc2NhcGVGaWx0ZXJWYWx1ZShTdHJpbmcodmFsdWUpKX0nYDtcbiAgfVxufTtcblxuLyoqXG4gKiBDcmVhdGUgZmlsdGVyIHRva2VucyBmb3IgVUkgZGlzcGxheVxuICovXG5leHBvcnQgY29uc3QgY3JlYXRlRmlsdGVyVG9rZW5zID0gKFxuICBmb3JtRmllbGQ6IEZvcm1GaWVsZCwgXG4gIHZhbHVlOiBhbnksIFxuICB0cmFuc2xhdGlvblNlcnZpY2U6IFRyYW5zbGF0aW9uU2VydmljZVxuKTogRmlsdGVyVG9rZW4gPT4ge1xuICBjb25zdCB7IG5hbWUsIHR5cGUsIGxhYmVsLCBzZWFyY2hGaWVsZHMsIG9wdGlvbnMgfSA9IGZvcm1GaWVsZCBhcyBhbnk7XG4gIGxldCBsYWJlbFZhbHVlID0gdmFsdWU7XG5cbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBGaWVsZFR5cGUuRGF0ZTpcbiAgICAgIGxhYmVsVmFsdWUgPSB2YWx1ZS50b0xvY2FsZURhdGVTdHJpbmcgPyB2YWx1ZS50b0xvY2FsZURhdGVTdHJpbmcoKSA6IHZhbHVlO1xuICAgICAgYnJlYWs7XG4gICAgICBcbiAgICBjYXNlIEZpZWxkVHlwZS5UaW1lOlxuICAgICAgbGFiZWxWYWx1ZSA9IHZhbHVlLnRvTG9jYWxlVGltZVN0cmluZyA/IHZhbHVlLnRvTG9jYWxlVGltZVN0cmluZygpIDogdmFsdWU7XG4gICAgICBicmVhaztcbiAgICAgIFxuICAgIGNhc2UgRmllbGRUeXBlLkxvY2FsRGF0ZVRpbWU6XG4gICAgY2FzZSBGaWVsZFR5cGUuRGF0ZVRpbWU6XG4gICAgICBsYWJlbFZhbHVlID0gdmFsdWUudG9Mb2NhbGVTdHJpbmcgPyB2YWx1ZS50b0xvY2FsZVN0cmluZygpIDogdmFsdWU7XG4gICAgICBicmVhaztcbiAgICAgIFxuICAgIGNhc2UgRmllbGRUeXBlLkxvb2t1cDpcbiAgICAgIGlmIChzZWFyY2hGaWVsZHMgJiYgc2VhcmNoRmllbGRzLmxlbmd0aCkge1xuICAgICAgICBsYWJlbFZhbHVlID0gc2VhcmNoRmllbGRzLm1hcCgoZmllbGQ6IEZvcm1GaWVsZCkgPT4gZ2V0UHJvcCh2YWx1ZSwgZmllbGQubmFtZSkpLmpvaW4oJyAtICcpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGFiZWxWYWx1ZSA9IHZhbHVlLmxhYmVsIHx8IHZhbHVlLm5hbWUgfHwgdmFsdWUuaWQ7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICAgIFxuICAgIGNhc2UgRmllbGRUeXBlLkVudW06XG4gICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICBjb25zdCBvcHRpb24gPSBvcHRpb25zLmZpbmQoKG9wdDogT3B0aW9uKSA9PiBvcHQudmFsdWUgPT09IHZhbHVlKTtcbiAgICAgICAgbGFiZWxWYWx1ZSA9IG9wdGlvbiA/IG9wdGlvbi5sYWJlbCA6IHZhbHVlO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgICBcbiAgICBjYXNlIEZpZWxkVHlwZS5Cb29sZWFuOlxuICAgICAgbGFiZWxWYWx1ZSA9IHZhbHVlIFxuICAgICAgICA/IHRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGUoJ2Jvb2xlYW4udHJ1ZScpIFxuICAgICAgICA6IHRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGUoJ2Jvb2xlYW4uZmFsc2UnKTtcbiAgICAgIGJyZWFrO1xuICAgICAgXG4gICAgY2FzZSBGaWVsZFR5cGUuSW50ZWdlcjpcbiAgICBjYXNlIEZpZWxkVHlwZS5Eb3VibGU6XG4gICAgICBsYWJlbFZhbHVlID0gdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyA/IHZhbHVlLnRvTG9jYWxlU3RyaW5nKCkgOiB2YWx1ZTtcbiAgICAgIGJyZWFrO1xuICB9XG5cbiAgcmV0dXJuIHsgXG4gICAgaWQ6IG5hbWUsIFxuICAgIGxhYmVsOiBgJHtsYWJlbH06ICR7bGFiZWxWYWx1ZX1gIFxuICB9O1xufTtcblxuLyoqXG4gKiBSZXNvbHZlICRyZWYgcmVmZXJlbmNlcyBpbiBKU09OIG9iamVjdHNcbiAqL1xuZXhwb3J0IGNvbnN0IHJlc29sdmVSZWZzID0gKHBheWxvYWQ6IGFueSk6IGFueSA9PiB7XG4gIGNvbnN0IGdldERhdGFGcm9tUmVmID0gKHJlZjogc3RyaW5nLCByb290T2JqOiBhbnkpOiBhbnkgPT4ge1xuICAgIGNvbnN0IHJlZ2V4ID0gL1xcW1wiKC4qPylcIlxcXS9nO1xuICAgIGNvbnN0IHJlc3VsdCA9IFtdO1xuICAgIGxldCBtYXRjaDtcblxuICAgIHdoaWxlICgobWF0Y2ggPSByZWdleC5leGVjKHJlZikpICE9PSBudWxsKSB7XG4gICAgICByZXN1bHQucHVzaChtYXRjaFsxXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdC5yZWR1Y2UoKGFjYywgcGFydCkgPT4gYWNjICYmIGFjY1twYXJ0XSwgcm9vdE9iaik7XG4gIH07XG5cbiAgY29uc3QgcmVzb2x2ZSA9IChvYmo6IGFueSwgcm9vdE9iajogYW55KTogdm9pZCA9PiB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkob2JqKSkge1xuICAgICAgb2JqLmZvckVhY2goKGl0ZW0pID0+IHJlc29sdmUoaXRlbSwgcm9vdE9iaikpO1xuICAgIH0gZWxzZSBpZiAob2JqICE9PSBudWxsICYmIHR5cGVvZiBvYmogPT09ICdvYmplY3QnKSB7XG4gICAgICBPYmplY3Qua2V5cyhvYmopLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICBpZiAoa2V5ID09PSAnJHJlZicgJiYgb2JqW2tleV0pIHtcbiAgICAgICAgICBjb25zdCByZWZQYXRoID0gb2JqW2tleV07XG4gICAgICAgICAgY29uc3QgcmVmRGF0YSA9IGdldERhdGFGcm9tUmVmKHJlZlBhdGgsIHJvb3RPYmopO1xuICAgICAgICAgIGlmIChyZWZEYXRhKSB7XG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKG9iaiwgcmVmRGF0YSk7XG4gICAgICAgICAgICBkZWxldGUgb2JqW2tleV07XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc29sdmUob2JqW2tleV0sIHJvb3RPYmopO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgY2xvbmVkUGF5bG9hZCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkocGF5bG9hZCkpO1xuICByZXNvbHZlKGNsb25lZFBheWxvYWQsIGNsb25lZFBheWxvYWQpO1xuICByZXR1cm4gY2xvbmVkUGF5bG9hZDtcbn07XG5cbi8qKlxuICogRGVlcCBjbG9uZSBhbiBvYmplY3RcbiAqL1xuZXhwb3J0IGNvbnN0IGRlZXBDbG9uZSA9IDxUPihvYmo6IFQpOiBUID0+IHtcbiAgaWYgKG9iaiA9PT0gbnVsbCB8fCB0eXBlb2Ygb2JqICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBvYmo7XG4gIH1cbiAgXG4gIGlmIChvYmogaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKG9iai5nZXRUaW1lKCkpIGFzIGFueTtcbiAgfVxuICBcbiAgaWYgKEFycmF5LmlzQXJyYXkob2JqKSkge1xuICAgIHJldHVybiBvYmoubWFwKGl0ZW0gPT4gZGVlcENsb25lKGl0ZW0pKSBhcyBhbnk7XG4gIH1cbiAgXG4gIGNvbnN0IGNsb25lZCA9IHt9IGFzIFQ7XG4gIE9iamVjdC5rZXlzKG9iaikuZm9yRWFjaChrZXkgPT4ge1xuICAgIChjbG9uZWQgYXMgYW55KVtrZXldID0gZGVlcENsb25lKChvYmogYXMgYW55KVtrZXldKTtcbiAgfSk7XG4gIFxuICByZXR1cm4gY2xvbmVkO1xufTtcblxuLyoqXG4gKiBDaGVjayBpZiB0d28gb2JqZWN0cyBhcmUgZGVlcGx5IGVxdWFsXG4gKi9cbmV4cG9ydCBjb25zdCBkZWVwRXF1YWwgPSAob2JqMTogYW55LCBvYmoyOiBhbnkpOiBib29sZWFuID0+IHtcbiAgaWYgKG9iajEgPT09IG9iajIpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBcbiAgaWYgKG9iajEgPT0gbnVsbCB8fCBvYmoyID09IG51bGwpIHtcbiAgICByZXR1cm4gb2JqMSA9PT0gb2JqMjtcbiAgfVxuICBcbiAgaWYgKHR5cGVvZiBvYmoxICE9PSB0eXBlb2Ygb2JqMikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBcbiAgaWYgKHR5cGVvZiBvYmoxICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBvYmoxID09PSBvYmoyO1xuICB9XG4gIFxuICBpZiAoQXJyYXkuaXNBcnJheShvYmoxKSAhPT0gQXJyYXkuaXNBcnJheShvYmoyKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBcbiAgY29uc3Qga2V5czEgPSBPYmplY3Qua2V5cyhvYmoxKTtcbiAgY29uc3Qga2V5czIgPSBPYmplY3Qua2V5cyhvYmoyKTtcbiAgXG4gIGlmIChrZXlzMS5sZW5ndGggIT09IGtleXMyLmxlbmd0aCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBcbiAgcmV0dXJuIGtleXMxLmV2ZXJ5KGtleSA9PiBkZWVwRXF1YWwob2JqMVtrZXldLCBvYmoyW2tleV0pKTtcbn07XG5cbi8qKlxuICogRGVib3VuY2UgZnVuY3Rpb24gZXhlY3V0aW9uXG4gKi9cbmV4cG9ydCBjb25zdCBkZWJvdW5jZSA9IDxUIGV4dGVuZHMgKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnk+KFxuICBmdW5jOiBULFxuICB3YWl0OiBudW1iZXJcbik6ICgoLi4uYXJnczogUGFyYW1ldGVyczxUPikgPT4gdm9pZCkgPT4ge1xuICBsZXQgdGltZW91dDogYW55O1xuICBcbiAgcmV0dXJuICguLi5hcmdzOiBQYXJhbWV0ZXJzPFQ+KSA9PiB7XG4gICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgIHRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IGZ1bmMoLi4uYXJncyksIHdhaXQpO1xuICB9O1xufTtcblxuLyoqXG4gKiBUaHJvdHRsZSBmdW5jdGlvbiBleGVjdXRpb25cbiAqL1xuZXhwb3J0IGNvbnN0IHRocm90dGxlID0gPFQgZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IGFueT4oXG4gIGZ1bmM6IFQsXG4gIGxpbWl0OiBudW1iZXJcbik6ICgoLi4uYXJnczogUGFyYW1ldGVyczxUPikgPT4gdm9pZCkgPT4ge1xuICBsZXQgaW5UaHJvdHRsZTogYm9vbGVhbjtcbiAgXG4gIHJldHVybiAoLi4uYXJnczogUGFyYW1ldGVyczxUPikgPT4ge1xuICAgIGlmICghaW5UaHJvdHRsZSkge1xuICAgICAgZnVuYyguLi5hcmdzKTtcbiAgICAgIGluVGhyb3R0bGUgPSB0cnVlO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiBpblRocm90dGxlID0gZmFsc2UsIGxpbWl0KTtcbiAgICB9XG4gIH07XG59O1xuIl19
@@ -4313,7 +4313,7 @@ class DynamicFieldLookupComponent {
4313
4313
  }
4314
4314
  else {
4315
4315
  const upperTerm = term.toUpperCase();
4316
- filterConditions.push(`UPPER(${field}) like '%${upperTerm}%'`);
4316
+ filterConditions.push(`containing(UPPER(${field}), '${upperTerm}')`);
4317
4317
  }
4318
4318
  });
4319
4319
  if (filterConditions.length > 0) {
@@ -4482,7 +4482,7 @@ class DynamicFieldLookupComponent {
4482
4482
  }
4483
4483
  else {
4484
4484
  const upperTerm = term.toUpperCase();
4485
- filterConditions.push(`UPPER(${field}) like '%${upperTerm}%'`);
4485
+ filterConditions.push(`containing(UPPER(${field}), '${upperTerm}')`);
4486
4486
  }
4487
4487
  });
4488
4488
  if (filterConditions.length > 0) {
@@ -5625,7 +5625,7 @@ class DynamicFormComponent {
5625
5625
  if (control) {
5626
5626
  const shouldDisable = this.isFieldDisabled(field);
5627
5627
  if (shouldDisable && control.enabled) {
5628
- control.setValue(null);
5628
+ control.setValue(null, { emitEvent: false });
5629
5629
  control.disable({ emitEvent: false });
5630
5630
  }
5631
5631
  else if (!shouldDisable && control.disabled && !field.disabled) {
@@ -6564,7 +6564,7 @@ const createFilterString = (formField, value) => {
6564
6564
  return getEnumQuery(name, value, multiple);
6565
6565
  case FieldType.String: {
6566
6566
  const escapedValue = escapeFilterValue(String(value));
6567
- return `upper(${name}) like upper('${escapedValue}%')`;
6567
+ return `containing(upper(${name}), upper('${escapedValue}'))`;
6568
6568
  }
6569
6569
  case FieldType.Lookup: {
6570
6570
  const lookupId = typeof value === 'object' ? value.id : value;