ets-fe-ng-sdk 17.0.23 → 17.0.26

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.
@@ -521,6 +521,21 @@ export class UtilityService {
521
521
  console.log(label, startTIme, endTime, (endTime - startTIme) / 1000 + 'sec');
522
522
  return res;
523
523
  };
524
+ /**
525
+ * Delete null or undefined fields from an object
526
+ * @param obj Object to delete from
527
+ * @returns
528
+ */
529
+ this.deleteNull = (obj) => {
530
+ const ret = {};
531
+ for (const key in obj) {
532
+ if (obj[key] === null || obj[key] === undefined || obj[key] === '')
533
+ continue;
534
+ else
535
+ ret[key] = obj[key];
536
+ }
537
+ return ret;
538
+ };
524
539
  responsive.observe([Breakpoints.HandsetPortrait]).subscribe((result) => {
525
540
  const breakpoints = result.breakpoints;
526
541
  if (breakpoints[Breakpoints.HandsetPortrait]) {
@@ -753,4 +768,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImpor
753
768
  type: Injectable,
754
769
  args: [{ providedIn: 'root' }]
755
770
  }], ctorParameters: () => [{ type: i1.MatDialog }, { type: i2.MatSnackBar }, { type: i3.Router }, { type: i4.Title }, { type: i5.Location }, { type: i6.ETSReactiveFormInputService }, { type: i7.RouteService }, { type: i8.PageLoaderService }, { type: i5.CurrencyPipe }, { type: i5.TitleCasePipe }, { type: i9.LoggerService }, { type: i10.PageService }, { type: i11.BreakpointObserver }, { type: i5.DatePipe }, { type: i12.InfoDialogService }, { type: i13.DebouncerService }] });
756
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbGl0eS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXRzLWZlLW5nLXNkay9zcmMvbGliL1NlcnZpY2VzL3V0aWxpdHkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBVTNDLE9BQU8sR0FBRyxNQUFNLGtCQUFrQixDQUFDO0FBRW5DLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxJQUFJLE1BQU0sRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRW5FLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDcEMsT0FBTyxFQUFFLGVBQWUsRUFBNEIsTUFBTSw4QkFBOEIsQ0FBQztBQUN6RixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFN0QsT0FBTyxFQUdMLFdBQVcsRUFDWCxTQUFTLEdBRVYsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3RDLE9BQU8sRUFDTCxjQUFjLEVBQ2QsWUFBWSxFQUNaLGFBQWEsRUFDYixLQUFLLEVBQ0wsVUFBVSxFQUNWLEVBQUUsRUFDRixhQUFhLEdBRWQsTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFLdEQsT0FBTyxFQUFzQixXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7O0FBT3RFLE1BQU0sT0FBTyxjQUFjO0lBb0J6QixZQUNTLE1BQWlCLEVBQ2pCLFFBQXFCLEVBQ3JCLE1BQWMsRUFDZCxNQUFhLEVBQ2IsUUFBa0IsRUFDbEIsWUFBaUIsRUFDakIsWUFBMEIsRUFD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QUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDdXJyZW5jeVBpcGUsXG4gIERhdGVQaXBlLFxuICBMb2NhdGlvbixcbiAgVGl0bGVDYXNlUGlwZSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIE1hdERpYWxvZyBhcyBNYXREaWFsb2csXG4gIE1hdERpYWxvZ0NvbmZpZyBhcyBNYXREaWFsb2dDb25maWcsXG59IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBNYXRTbmFja0JhciBhcyBNYXRTbmFja0JhciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NuYWNrLWJhcic7XG5pbXBvcnQgeyBUaXRsZSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgUm91dGVyLCBOYXZpZ2F0aW9uRXh0cmFzIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEVUU1JlYWN0aXZlRm9ybUlucHV0U2VydmljZSBhcyBJUzEgfSBmcm9tICcuL2lucHV0LnNlcnZpY2UnO1xuaW1wb3J0IHsgUm91dGVTZXJ2aWNlIH0gZnJvbSAnLi9yb3V0ZS5zZXJ2aWNlJztcbmltcG9ydCBqZmQgZnJvbSAnanMtZmlsZS1kb3dubG9hZCc7XG5pbXBvcnQgeyBQYWdlTG9hZGVyU2VydmljZSB9IGZyb20gJy4vcGFnZS1sb2FkZXIuc2VydmljZSc7XG5pbXBvcnQgeyBDb25maWcsIENvbmZpZyBhcyBjb25maWcgfSBmcm9tICcuLi9jb25maWdzL2luZGV4LmNvbmZpZyc7XG5pbXBvcnQgeyBBcHBSb3V0ZUJhc2UgfSBmcm9tICcuLi9TaGFyZWQvbW9kZWxzL1JvdXRlSXRlbS5jbGFzcyc7XG5pbXBvcnQgeyBzYXZlQXMgfSBmcm9tICdmaWxlLXNhdmVyJztcbmltcG9ydCB7IEVWYWxpZGF0aW9uVHlwZSwgSVN0cmljdEZvcm1Hcm91cCwgU3RhdHVzIH0gZnJvbSAnLi4vU2hhcmVkL21vZGVscy9pbmRleC5tb2RlbCc7XG5pbXBvcnQgeyBlbnZpcm9ubWVudCB9IGZyb20gJy4uLy4uL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudCc7XG5pbXBvcnQgeyBQYWdlU2VydmljZSB9IGZyb20gJy4vcGFnZS5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIEFic3RyYWN0Q29udHJvbCxcbiAgRm9ybUFycmF5LFxuICBGb3JtQ29udHJvbCxcbiAgRm9ybUdyb3VwLFxuICBVbnR5cGVkRm9ybUFycmF5LFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBMb2dnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vUmV1c2FibGVzL3JldXNhYmxlLXBhZ2VzL2xvZ2dlci9sb2dnZXIuc2VydmljZSc7XG5pbXBvcnQgeyBjbG9uZURlZXAgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHtcbiAgZmlyc3RWYWx1ZUZyb20sXG4gIGlzT2JzZXJ2YWJsZSxcbiAgbGFzdFZhbHVlRnJvbSxcbiAgbWVyZ2UsXG4gIE9ic2VydmFibGUsXG4gIG9mLFxuICBSZXBsYXlTdWJqZWN0LFxuICBTdWJzY3JpcHRpb24sXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRUVUU1BhZ2VCdG5JRCB9IGZyb20gJy4uL1NoYXJlZC9tb2RlbHMvSU1lbnVJdGVtJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgRW52aXJvbm1lbnQsXG4gIFNES0Vudmlyb25tZW50LFxufSBmcm9tICcuLi9TaGFyZWQvbW9kZWxzL2Vudmlyb25tZW50Lm1vZGVsJztcbmltcG9ydCB7IEJyZWFrcG9pbnRPYnNlcnZlciwgQnJlYWtwb2ludHMgfSBmcm9tICdAYW5ndWxhci9jZGsvbGF5b3V0JztcbmltcG9ydCB7IEluZm9EaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi4vU2hhcmVkL2NvbXBvbmVudHMvaW5mby1kaWFsb2cvaW5mby1kaWFsb2cuc2VydmljZSc7XG5pbXBvcnQgeyBEZWJvdW5jZXJTZXJ2aWNlIH0gZnJvbSAnLi9kZWJvdW5jZXIuc2VydmljZSc7XG5pbXBvcnQgeyBJRm9ybVNjaGVtYSB9IGZyb20gJy4uL1NoYXJlZC9jb21wb25lbnRzL2Zvcm0tZ2VuZXJhdG9yL2Zvcm0tZ2VuZXJhdG9yLmNvbXBvbmVudCc7XG5kZWNsYXJlIGNvbnN0ICQ6IGFueTtcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBVdGlsaXR5U2VydmljZTxcbiAgVEVudmlyb25tZW50IGV4dGVuZHMgU0RLRW52aXJvbm1lbnQgPSBTREtFbnZpcm9ubWVudCxcbj4ge1xuICByOiBBcHBSb3V0ZUJhc2U7XG4gIGRvd25sb2FkZXIgPSBqZmQ7XG4gIGVWYWxpZGF0aW9uVHlwZSA9IEVWYWxpZGF0aW9uVHlwZTtcbiAgY29uZmlnID0gQ29uZmlnO1xuICBlbnZpcm9ubWVudDogVEVudmlyb25tZW50ID0gZW52aXJvbm1lbnQgYXMgYW55O1xuICBwYmlkID0gRUVUU1BhZ2VCdG5JRDtcbiAgJDogYW55O1xuICBpc01vYmlsZTogYm9vbGVhbjtcbiAgcGFnZVNpemVPcHRpb25zID0gWzUsIDEwLCAxNSwgMjAsIDUwLCAxMDAsIDIwMCwgNTAwLCAxMDAwXTtcbiAgZGF0ZVBpcGVEYXRlID0gJ0VFLCBNTU1NIGQsIHknO1xuICBkYXRlUGlwZURhdGVMZWFuID0gJ0VFLCBNTU0gZCwgeSc7XG4gIGRhdGVQaXBlRGF0ZVRpbWVMZWFuID0gJ0VFLCBNTU0gZCwgeSBoaDptbSBhJztcbiAgcmVhZG9ubHkgY3VzdG9tSURGaWVsZCA9ICdfX2lkJztcbiAgLyoqXG4gICAqIEVtaXRzIHRydWUgaWYgbW9iaWxlXG4gICAqL1xuICBtb2JpbGVRdWVyeUNoYW5nZWQgPSBuZXcgUmVwbGF5U3ViamVjdDxib29sZWFuPigpO1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgZGlhbG9nOiBNYXREaWFsb2csXG4gICAgcHVibGljIHNuYWNrQmFyOiBNYXRTbmFja0JhcixcbiAgICBwdWJsaWMgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHVibGljIHRpdGxlUzogVGl0bGUsXG4gICAgcHVibGljIGxvY2F0aW9uOiBMb2NhdGlvbixcbiAgICBwdWJsaWMgaW5wdXRTZXJ2aWNlOiBJUzEsXG4gICAgcHVibGljIHJvdXRlU2VydmljZTogUm91dGVTZXJ2aWNlLFxuICAgIHB1YmxpYyBwUzogUGFnZUxvYWRlclNlcnZpY2UsXG4gICAgcHVibGljIGN1cnJlbmN5UGlwZTogQ3VycmVuY3lQaXBlLFxuICAgIHB1YmxpYyB0aXRsZUNhc2VQaXBlOiBUaXRsZUNhc2VQaXBlLFxuICAgIHB1YmxpYyBsb2dnZXJTZXJ2aWNlOiBMb2dnZXJTZXJ2aWNlLFxuICAgIHB1YmxpYyBwYWdlUzogUGFnZVNlcnZpY2UsXG4gICAgcHVibGljIHJlc3BvbnNpdmU6IEJyZWFrcG9pbnRPYnNlcnZlcixcbiAgICBwdWJsaWMgZGF0ZVBpcGU6IERhdGVQaXBlLFxuICAgIHB1YmxpYyBpbmZvRGlhbG9nU2VydmljZTogSW5mb0RpYWxvZ1NlcnZpY2UsXG4gICAgcHVibGljIGRlYm91bmNlclNlcnZpY2U6IERlYm91bmNlclNlcnZpY2UsXG4gICkge1xuICAgIHJlc3BvbnNpdmUub2JzZXJ2ZShbQnJlYWtwb2ludHMuSGFuZHNldFBvcnRyYWl0XSkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcbiAgICAgIGNvbnN0IGJyZWFrcG9pbnRzID0gcmVzdWx0LmJyZWFrcG9pbnRzO1xuXG4gICAgICBpZiAoYnJlYWtwb2ludHNbQnJlYWtwb2ludHMuSGFuZHNldFBvcnRyYWl0XSkge1xuICAgICAgICB0aGlzLmlzTW9iaWxlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5tb2JpbGVRdWVyeUNoYW5nZWQubmV4dCh0cnVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuaXNNb2JpbGUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5tb2JpbGVRdWVyeUNoYW5nZWQubmV4dChmYWxzZSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgLy8gaWYgKCQpIHRoaXMuJCA9ICQ7XG4gIH1cblxuICBiYWNrID0gKCkgPT4gdGhpcy5sb2NhdGlvbi5iYWNrKCk7XG5cbiAgb25seU9uZUlucHV0KGlucHV0czogRm9ybUNvbnRyb2xbXSkge1xuICAgIGNvbnN0IG5JbnB1dHMgPSBpbnB1dHM/Lm1hcCgoaW5wKSA9PiAoeyBpZDogdGhpcy5nZW5SYW5kb21JRCwgaW5wIH0pKSB8fCBbXTtcbiAgICByZXR1cm4gbWVyZ2UoXG4gICAgICAuLi5uSW5wdXRzLm1hcCgoaSkgPT5cbiAgICAgICAgaS5pbnAudmFsdWVDaGFuZ2VzLnBpcGUobWFwKCh2YWwpID0+ICh7IGlkOiBpLmlkLCB2YWwgfSkpKSxcbiAgICAgICksXG4gICAgKS5zdWJzY3JpYmUoKHIpID0+IHtcbiAgICAgIC8vIGRlYnVnZ2VyXG4gICAgICBpZiAoci52YWwpXG4gICAgICAgIG5JbnB1dHNcbiAgICAgICAgICAuZmlsdGVyKCh4KSA9PiB4LmlkICE9IHIuaWQpXG4gICAgICAgICAgLmZvckVhY2goKHgpID0+IHguaW5wLmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pKTtcbiAgICAgIGVsc2VcbiAgICAgICAgbklucHV0c1xuICAgICAgICAgIC5maWx0ZXIoKHgpID0+IHguaWQgIT0gci5pZClcbiAgICAgICAgICAuZm9yRWFjaCgoeCkgPT4geC5pbnAuZW5hYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KSk7XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBjb3B5UGF5bG9hZChwYXlsb2FkKSB7XG4gICAgdHJ5IHtcbiAgICAgIGlmICgoPFNES0Vudmlyb25tZW50PnRoaXMuZW52aXJvbm1lbnQpLmRlYnVnKSB7XG4gICAgICAgIGNvbnN0IGVsZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZXh0YXJlYScpO1xuICAgICAgICBlbGVtLnZhbHVlID0gSlNPTi5zdHJpbmdpZnkocGF5bG9hZCk7XG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZWxlbSk7XG4gICAgICAgIGVsZW0uc2VsZWN0KCk7XG4gICAgICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCdjb3B5Jyk7XG4gICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZWxlbSk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICB9XG4gIH1cbiAgeE9yWSA9ICh4LCB5ID0gJy0nKSA9PiBgJHt4ID09IG51bGwgPyB5IDogeH1gO1xuICB0b1RpdGxlQ2FzZSh0ZXh0OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy50aXRsZUNhc2VQaXBlLnRyYW5zZm9ybSh0ZXh0KTtcbiAgfVxuICAvKipcbiAgICogQ29udmVydCBEYXRlIHN0cmluZyB0byBEYXRlIFRpbWUgc3RyaW5nXG4gICAqIEBwYXJhbSBkYXRlU3RyIERhdGUgc3RyaW5nXG4gICAqIEBleGFtcGxlICcyMDIyLTAxLTI1J1xuICAgKiBAcGFyYW0gY29uZmlnIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBjb252ZXJzaW9uXG4gICAqIEByZXR1cm5zIFJldHVybnMgYSBEYXRlIFRpbWUgc3RyaW5nXG4gICAqIEBleGFtcGxlICcyMDIyLTAxLTI1VDAwOjAwOjAwWicgb3IgJzIwMjItMDEtMjUgMDA6MDA6MDAnXG4gICAqL1xuICBkYXRlVG9EYXRlVGltZSA9IChcbiAgICBkYXRlU3RyOiBzdHJpbmcsXG4gICAgY29uZmlnPzoge1xuICAgICAgLyoqXG4gICAgICAgKiBVc2UgdGhlIHl5eXktbW0tZGQgaGg6bW06c3MgZm9ybWF0XG4gICAgICAgKi9cbiAgICAgIG9taXRUPzogYm9vbGVhbjtcbiAgICAgIC8qKlRpbWUgdG8gYXBwZW5kIHRvIGRhdGUuIEBleGFtcGxlIGAxMjowMDowMFpgICovXG4gICAgICB0aW1lPzogc3RyaW5nO1xuICAgIH0sXG4gICkgPT4ge1xuICAgIHJldHVybiAhZGF0ZVN0clxuICAgICAgPyBudWxsXG4gICAgICA6IGRhdGVTdHJbMTBdID09ICdUJ1xuICAgICAgICA/IGRhdGVTdHJcbiAgICAgICAgOiBkYXRlU3RyICtcbiAgICAgICAgICAoISFjb25maWc/Lm9taXRUXG4gICAgICAgICAgICA/IGAgJHtjb25maWc/LnRpbWUgfHwgJzAwOjAwOjAwJ31gXG4gICAgICAgICAgICA6IGBUJHtjb25maWc/LnRpbWUgfHwgJzAwOjAwOjAwWid9YCk7XG4gIH07XG5cbiAgLyoqXG4gICAqIFNldCBhbiBPYmplY3QncyBmaWVsZCBpZiB0aGUgb2JqZWN0IGV4aXN0cyBvciBkb24ndCBpZiB0aGUgb2JqZWN0IGRvZXNuJ3RcbiAgICogQHBhcmFtIG9iaiBPYmplY3QgaG9sZGluZyB0aGUgZmllbGRcbiAgICogQHBhcmFtIGZpZWxkTmFtZSBOYW1lIG9mIHRoZSBmaWVsZCB0byBzZXRcbiAgICogQHBhcmFtIHZhbCBWYWx1ZSB0byBzZXQgdGhlIGZpZWxkIHdpdGhcbiAgICogQHJldHVybnMgUmV0dXJucyB0aGUgb2JqZWN0IGhvbGRpbmcgdGhlIGRhdGFcbiAgICovXG4gIHNldHRlcldpdGhOdWxsPFQ+KG9iajogVCwga3ZwczogUGFydGlhbDxUPikge1xuICAgIGlmICghb2JqKSByZXR1cm4gbnVsbDtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBrdnBzKSB7XG4gICAgICBvYmpba2V5XSA9IGt2cHNba2V5XTtcbiAgICB9XG4gICAgcmV0dXJuIG9iajtcbiAgfVxuXG4gIC8qKlxuICAgKiAoU2V0IGFuIE9iamVjdCdzIGZpZWxkIGlmIHRoZSBvYmplY3QgZXhpc3RzIG9yIGRvbid0IGlmIHRoZSBvYmplY3QgZG9lc24ndCkgZm9yIG11bHRpcGxlIGVudHJpZXNcbiAgICogQHBhcmFtIGl0ZW1zIEFycmF5IG9mIG9iamVjdHMgYW5kIHRoZWlyIG1vZGlmaWNhdGlvbnNcbiAgICovXG4gIHNldHRlcldpdGhOdWxsQXJyYXk8VD4oaXRlbXM6IHsgb2JqOiBUOyBrdnBzOiBQYXJ0aWFsPFQ+IH1bXSkge1xuICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykge1xuICAgICAgdGhpcy5zZXR0ZXJXaXRoTnVsbChpdGVtLm9iaiwgaXRlbS5rdnBzKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlcyB0aGUgZGVsZXRpb24gb2Ygcm93cyBmcm9tIGEgRm9ybUFycmF5XG4gICAqIEBwYXJhbSBpbmRleCBJbmRleCBvZiB0aGUgcm93IHRvIGRlbGV0ZVxuICAgKiBAcGFyYW0gZmEgVGhlIEZvcm1BcnJheSB0aGF0IGhvbGRzIHRoZSByb3dzXG4gICAqIEBwYXJhbSBkZWxldGVTZXJ2aWNlIFRoZSBkZWxldGlvbiBzZXJ2aWNlIHRvIGJlIGNhbGxlZCAoSXQgc2hvdWxkIGJlIGFuIGFub255bW91cyBmdW5jdGlvbilcbiAgICogQHBhcmFtIGFkZFJvd0Z1bmMgVGhlIGZ1bmN0aW9uIChhbm9ueW1vdXMpIHRoYXQgYWRkcyBhIG5ldyByb3cgdG8gdGhlIEZvcm1BcnJheVxuICAgKiBAcGFyYW0gZW1pdEV2ZW50IFNwZWNpZnkgd2hldGhlciB0byBlbWl0IGFuIGV2ZW50IHdoZW4gbWFuaXB1bGF0aW5nIHRoZSBGb3JtQXJyYXlcbiAgICogQHJldHVybnNcbiAgICovXG4gIGhhbmRsZUZvcm1Sb3dEZWxldGUgPSAoXG4gICAgaW5kZXg6IG51bWJlcixcbiAgICBmYTogVW50eXBlZEZvcm1BcnJheSxcbiAgICBkZWxldGVTZXJ2aWNlOiAoLi4uYXJncykgPT4gUHJvbWlzZTxhbnk+IHwgT2JzZXJ2YWJsZTxhbnk+LFxuICAgIGFkZFJvd0Z1bmM6ICguLi5hcmdzKSA9PiBhbnksXG4gICAgZXh0cmFDb25maWc/OiB7XG4gICAgICBkb250RW1pdEV2ZW50PzogYm9vbGVhbjtcbiAgICAgIG9uRGVsZXRlPzogKHJlcykgPT4gYW55O1xuICAgIH0sXG4gICkgPT4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTxhbnk+KChyZXNvbHZlKSA9PiB7XG4gICAgICBjb25zdCBpZCA9IGNsb25lRGVlcChmYS5jb250cm9sc1tpbmRleF0/LnZhbHVlPy5pZCk7XG4gICAgICAvLyBkZWJ1Z2dlcjtcbiAgICAgIGlmIChmYS5jb250cm9scy5sZW5ndGggPT0gMSAmJiBpZCkge1xuICAgICAgICBmYS5yZW1vdmVBdChpbmRleCwgeyBlbWl0RXZlbnQ6ICFleHRyYUNvbmZpZz8uZG9udEVtaXRFdmVudCB9KTtcbiAgICAgICAgYWRkUm93RnVuYygpO1xuICAgICAgfSBlbHNlIGlmIChmYS5jb250cm9scy5sZW5ndGggPiAxKVxuICAgICAgICBmYS5yZW1vdmVBdChpbmRleCwgeyBlbWl0RXZlbnQ6ICFleHRyYUNvbmZpZz8uZG9udEVtaXRFdmVudCB9KTtcbiAgICAgIGVsc2UgaWYgKGZhLmNvbnRyb2xzLmxlbmd0aCA9PSAxKSBmYS5jb250cm9sc1swXS5yZXNldCgpO1xuXG4gICAgICBpZiAoaWQgJiYgZGVsZXRlU2VydmljZSkge1xuICAgICAgICBjb25zdCByZXEgPSBkZWxldGVTZXJ2aWNlKGlkKTtcbiAgICAgICAgaWYgKHJlcVsndG9Qcm9taXNlJ10pIHtcbiAgICAgICAgICByZXNvbHZlKGxhc3RWYWx1ZUZyb20ocmVxIGFzIE9ic2VydmFibGU8YW55PikpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc29sdmUocmVxIGFzIGFueSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc29sdmUobnVsbCk7XG4gICAgICB9XG4gICAgfSkudGhlbigocikgPT4ge1xuICAgICAgZXh0cmFDb25maWc/Lm9uRGVsZXRlKHIpO1xuICAgICAgcmV0dXJuIHI7XG4gICAgfSk7XG4gIH07XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgdGhlIGRlbGV0aW9uIG9mIHJvd3MgZnJvbSBhbiBhcnJheVxuICAgKiBAcGFyYW0gaW5kZXggSW5kZXggb2YgdGhlIHJvdyB0byBkZWxldGVcbiAgICogQHBhcmFtIGFyciBUaGUgYXJyYXkgdGhhdCBob2xkcyB0aGUgcm93c1xuICAgKiBAcGFyYW0gZGVsZXRlU2VydmljZSBUaGUgZGVsZXRpb24gc2VydmljZSB0byBiZSBjYWxsZWQgKEl0IHNob3VsZCBiZSBhbiBhbm9ueW1vdXMgZnVuY3Rpb24pXG4gICAqIEBwYXJhbSBhZGRSb3dGdW5jIFRoZSBmdW5jdGlvbiAoYW5vbnltb3VzKSB0aGF0IGFkZHMgYSBuZXcgcm93IHRvIHRoZSBhcnJheVxuICAgKiBAcGFyYW0gY2IgVGhlIGZ1bmN0aW9uIHRvIGNhbGxiYWNrIHdpdGggdGhlIHJlc3BvbnNlIG9mIHRoZSBkZWxldGlvbiBzZXJ2aWNlIGFzIHRoZSBpbnB1dCBwYXJhbWV0ZXJcbiAgICovXG4gIGhhbmRsZVJvd0RlbGV0ZSA9IGFzeW5jIDxUPihcbiAgICBpbmRleDogbnVtYmVyLFxuICAgIGFycjogYW55W10sXG4gICAgZGVsZXRlU2VydmljZTogKC4uLmFyZ3MpID0+IFByb21pc2U8VD4gfCBPYnNlcnZhYmxlPFQ+LFxuICAgIGFkZFJvd0Z1bmM6ICguLi5hcmdzKSA9PiBhbnksXG4gICAgY2I/OiAoYW55KSA9PiBhbnksXG4gICkgPT4ge1xuICAgIGNvbnN0IGlkID0gYXJyW2luZGV4XT8uaWQ7XG4gICAgLy8gZGVidWdnZXI7XG5cbiAgICBpZiAoaWQgJiYgZGVsZXRlU2VydmljZSkge1xuICAgICAgY29uc3QgcmVxID0gZGVsZXRlU2VydmljZShpZCk7XG4gICAgICBpZiAodHlwZW9mIHJlcVsndG9Qcm9taXNlJ10gPT0gJ2Z1bmN0aW9uJylcbiAgICAgICAgY2IgPyBjYihhd2FpdCByZXFbJ3RvUHJvbWlzZSddKCkpIDogcmVxWyd0b1Byb21pc2UnXSgpO1xuICAgICAgZWxzZSBjYiA/IGNiKGF3YWl0IHJlcSkgOiBudWxsO1xuICAgIH1cblxuICAgIGlmIChhcnIubGVuZ3RoID09IDEpIHtcbiAgICAgIGFyci5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgYWRkUm93RnVuYygpO1xuICAgIH0gZWxzZSBpZiAoYXJyLmxlbmd0aCA+IDEpIGFyci5zcGxpY2UoaW5kZXgsIDEpO1xuICB9O1xuICAvKipcbiAgICogVG8gaGFuZGxlIHRoZSBwYXRjaGluZyBvZiBhIEZvcm1BcnJheVxuICAgKiBAcGFyYW0gYXJyIFRoZSBhcnJheSB0aGF0IGNvbnRhaW5zIHRoZSBkYXRhXG4gICAqIEBwYXJhbSBhZGRGdW5jIFRoZSBmdW5jdGlvbiB0aGF0IHBlcmZvcm1zIGFkZGl0aW9uIG9mIHNpbmdsZSBlbnRyaWVzXG4gICAqIEBwYXJhbSBmb3JtQXJyIFRoZSBGb3JtQXJyYXkgdGhhdCB3aWxsIGhvbGQgdGhlIGFycmF5J3MgZGF0YVxuICAgKi9cbiAgaW5pdFBhdGNoRm9ybUFycmF5ID0gPFQ+KFxuICAgIGFycjogVFtdLFxuICAgIGFkZEZ1bmM6IChpOiBudW1iZXIsIGRhdGE/OiBULCBmb3JtQXJyPzogRm9ybUFycmF5KSA9PiB2b2lkLFxuICAgIGZvcm1BcnI6IEZvcm1BcnJheSxcbiAgKSA9PiB7XG4gICAgLy8gZGVidWdnZXJcbiAgICBpZiAoYXJyPy5sZW5ndGgpIHtcbiAgICAgIGlmIChmb3JtQXJyLmxlbmd0aCkgZm9ybUFyci5jbGVhcigpO1xuICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGFycikge1xuICAgICAgICBhZGRGdW5jKGZvcm1BcnIubGVuZ3RoLCBpdGVtLCBmb3JtQXJyKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCFmb3JtQXJyLmxlbmd0aCkgYWRkRnVuYyhmb3JtQXJyLmxlbmd0aCwgbnVsbCwgZm9ybUFycik7XG4gICAgfVxuICB9O1xuICBwcml2YXRlIGlzUHJvbWlzZSA9IChmdW5jKSA9PiB7XG4gICAgcmV0dXJuIHR5cGVvZiBmdW5jID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgZnVuYy50aGVuID09PSAnZnVuY3Rpb24nO1xuICB9O1xuICBpc0FzeW5jID0gKGZ1bmMpID0+IHtcbiAgICByZXR1cm4gKFxuICAgICAgZnVuYy5jb25zdHJ1Y3Rvci5uYW1lID09PSAnQXN5bmNGdW5jdGlvbicgfHxcbiAgICAgICh0eXBlb2YgZnVuYyA9PT0gJ2Z1bmN0aW9uJyAmJiB0aGlzLmlzUHJvbWlzZShmdW5jKCkpKVxuICAgICk7XG4gIH07XG5cbiAgaXNPYnNlcnZhYmxlID0gPFQ+KGZ1bmMpID0+IHtcbiAgICAvLyByZXR1cm4gdHlwZW9mIGZ1bmMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBmdW5jLnN1YnNjcmliZSA9PT0gJ2Z1bmN0aW9uJztcbiAgICAvLyByZXR1cm4gdHlwZW9mIGZ1bmMgPT09ICdvYmplY3QnICYmIGZ1bmMgaW5zdGFuY2VvZiBPYnNlcnZhYmxlO1xuICAgIC8vIHJldHVybiB0eXBlb2YgZnVuYyA9PT0gJ29iamVjdCcgJiYgZnVuYyBpbnN0YW5jZW9mIE9ic2VydmFibGU8VD47XG4gICAgcmV0dXJuIHR5cGVvZiBmdW5jID09PSAnb2JqZWN0JyAmJiBpc09ic2VydmFibGUoZnVuYyk7XG4gICAgcmV0dXJuIHR5cGVvZiBmdW5jID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgZnVuYy50b1Byb21pc2UgPT09ICdmdW5jdGlvbic7XG4gIH07XG4gIHByb21pc2lmeVZhbCA9IDxUPih2YWw6IFQgfCBQcm9taXNlPFQ+IHwgT2JzZXJ2YWJsZTxUPikgPT4ge1xuICAgIGlmICh0aGlzLmlzQXN5bmModmFsKSkge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh2YWwgYXMgUHJvbWlzZTxUPik7XG4gICAgfSBlbHNlIGlmICh0aGlzLmlzT2JzZXJ2YWJsZSh2YWwpKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGxhc3RWYWx1ZUZyb20odmFsIGFzIE9ic2VydmFibGU8VD4pKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh2YWwgYXMgVCk7XG4gICAgfVxuICB9O1xuXG4gIC8qKlxuICAgKiBAcGFyYW0gYXJyIEFycmF5IG9mIG9ic2VydmFibGVzIHRvIGZldGNoXG4gICAqIEByZXR1cm5zIEFuIGFycmF5IG9mIHRoZSByZXNwb25zZXMgbWVyZ2VkIHRvZ2V0aGVyLiBJdCBlbWl0cyB0aGUgbWVyZ2VkIHJlc3BvbnNlcyBhcyB0aGV5IGFyZSBmZXRjaGVkIGFuZCBjbG9zZXMgb25jZSBhbGxsIHRoZSByZXNwb25zZXMgaGF2ZSBiZWVuIGZldGNoZWRcbiAgICovXG4gIG1lcmdlQXJyT2JzZXJ2YWJsZXMgPSA8VD4oYXJyOiB7ICRmdW5jOiBPYnNlcnZhYmxlPFRbXT4gfVtdKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPFRbXT4oKHN1YikgPT4ge1xuICAgICAgY29uc3QgcmV0OiBUW10gPSBbXTtcbiAgICAgIGxldCByZXNwb25zZUNvdW50ID0gMDtcbiAgICAgIG1lcmdlKFxuICAgICAgICAuLi5hcnIubWFwKFxuICAgICAgICAgICh4KSA9PlxuICAgICAgICAgICAgeC4kZnVuYz8ucGlwZShcbiAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9mKFtdKTtcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIHRhcCgocikgPT4ge1xuICAgICAgICAgICAgICAgIHJlc3BvbnNlQ291bnQrKztcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApLFxuICAgICAgICApLFxuICAgICAgKS5zdWJzY3JpYmUoKHIpID0+IHtcbiAgICAgICAgcmV0LnB1c2goLi4ucik7XG4gICAgICAgIHN1Yi5uZXh0KHJldCk7XG4gICAgICAgIGlmIChyZXNwb25zZUNvdW50ID09IGFyci5maWx0ZXIoKHgpID0+IHguJGZ1bmMpLmxlbmd0aCkge1xuICAgICAgICAgIC8vIGRlYnVnZ2VyXG4gICAgICAgICAgc3ViLmNvbXBsZXRlKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9O1xuICByZW1vdmVEdXBsaWNhdGU8VD4obGlzdDogVFtdLCBrZXlGaWVsZCA9ICdjb2RlJykge1xuICAgIGlmICghbGlzdCkgcmV0dXJuIG51bGw7XG4gICAgbGlzdCA9IGxpc3QuZmlsdGVyKCh4KSA9PiB4KTtcbiAgICBjb25zdCByZXQ6IFRbXSA9IFtdLFxuICAgICAgZHVwbGljYXRlTWFwOiB7IFt4OiBzdHJpbmddOiBhbnkgfSA9IHt9O1xuICAgIGZvciAoY29uc3QgaXRlbSBvZiBsaXN0KSB7XG4gICAgICBpZiAoZHVwbGljYXRlTWFwW2l0ZW1ba2V5RmllbGRdXSkgY29udGludWU7XG4gICAgICByZXQucHVzaChpdGVtKTtcbiAgICAgIGR1cGxpY2F0ZU1hcFtpdGVtW2tleUZpZWxkXV0gPSBpdGVtO1xuICAgIH1cbiAgICByZXR1cm4gcmV0O1xuICB9XG4gIGdldCBnZW5SYW5kb21JRCgpIHtcbiAgICByZXR1cm4gTWF0aC5yb3VuZChNYXRoLnJhbmRvbSgpICogMTAwMDAwMDAwMDAwMDAwMCk7XG4gIH1cbiAgc3RvcmVQYXlsb2FkID0gdGhpcy5sb2dnZXJTZXJ2aWNlLmFkZExvZztcbiAgb2JqSXNFbXB0eSA9IChvYmosIGV4Y2x1c2lvbkZpZWxkcz86IHN0cmluZ1tdKSA9PiB7XG4gICAgaWYgKCFvYmopIHJldHVybiB0cnVlO1xuICAgIGZvciAoY29uc3Qga2V5IGluIG9iaikge1xuICAgICAgaWYgKGV4Y2x1c2lvbkZpZWxkcz8uaW5jbHVkZXMoa2V5KSkgY29udGludWU7XG4gICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkge1xuICAgICAgICBpZiAob2JqW2tleV0pIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG4gIGRhdGFHZW4gPSA8VCA9IGFueT4oa2V5czogc3RyaW5nW10sIGxlbmd0aCA9IDEwKSA9PiB7XG4gICAgY29uc3QgcmV0OiBhbnlbXSA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCB0OiBhbnkgPSB7fTtcbiAgICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICAgICAgdFtrZXldID0gdGhpcy50ZXh0R2VuKCk7XG4gICAgICB9XG4gICAgICByZXQucHVzaCh0KTtcbiAgICB9XG4gICAgcmV0dXJuIHJldCBhcyBUW107XG4gIH07XG4gIHRleHRHZW4gPSAoKSA9PiAncmFuZG9tJyArIE1hdGgucm91bmQoTWF0aC5yYW5kb20oKSAqIDEwMDApO1xuICB0cmFja0J5Q29kZShpbmRleDogbnVtYmVyLCBpdGVtOiBhbnkpIHtcbiAgICByZXR1cm4gaXRlbT8uY29kZTtcbiAgfVxuICB0cmFja0J5SUQoaW5kZXg6IG51bWJlciwgaXRlbTogYW55KSB7XG4gICAgcmV0dXJuIGl0ZW0/LmlkO1xuICB9XG4gIGRpYWxvZ09wZW5lciA9IChcbiAgICBjb21wOiBhbnksXG4gICAgY29uZmlnOiBNYXREaWFsb2dDb25maWcsXG4gICAgdmFsdWVDQjogKHIpID0+IGFueSxcbiAgICBub1ZhbHVlQ0I/OiBhbnksXG4gICkgPT5cbiAgICB0aGlzLmRpYWxvZ09wZW5lclJlZihjb21wLCBjb25maWcpXG4gICAgICAuYWZ0ZXJDbG9zZWQoKVxuICAgICAgLnN1YnNjcmliZSgocikgPT4ge1xuICAgICAgICBpZiAociAhPSBudWxsICYmIHIgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdmFsdWVDQihyKTtcbiAgICAgICAgfSBlbHNlIGlmIChub1ZhbHVlQ0IpIHtcbiAgICAgICAgICBub1ZhbHVlQ0IoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIGRpYWxvZ09wZW5lclJlZiA9IChjb21wOiBhbnksIGNvbmZpZzogTWF0RGlhbG9nQ29uZmlnKSA9PlxuICAgIHRoaXMuZGlhbG9nLm9wZW4oY29tcCwgY29uZmlnKTtcbiAgZmluZExhYmVsQnlJdGVtID0gKFxuICAgIGl0ZW0sXG4gICAgYXJyOiBhbnlbXSxcbiAgICBsYWJlbEZpZWxkPzogc3RyaW5nLFxuICAgIGtleUZpZWxkOiBzdHJpbmcgPSAnY29kZScsXG4gICkgPT4ge1xuICAgIGlmICghaXRlbSkgcmV0dXJuIG51bGw7XG4gICAgY29uc3Qgb2JqID0gYXJyPy5maW5kKCh4KSA9PiB4W2tleUZpZWxkXSA9PSBpdGVtKTtcbiAgICBpZiAoIW9iaikgcmV0dXJuIGl0ZW07XG4gICAgZWxzZVxuICAgICAgcmV0dXJuIGAke2l0ZW19IC0gJHtcbiAgICAgICAgb2JqW2xhYmVsRmllbGQgfHwgJ3RpdGxlJ10gfHwgb2JqW2xhYmVsRmllbGQgfHwgJ2Rlc2NyaXB0aW9uJ11cbiAgICAgIH1gO1xuICB9O1xuXG4gIGZvcm1GaWVsZHNGcm9tQXJyID0gdGhpcy5pbnB1dFNlcnZpY2UuZm9ybUZpZWxkc0Zyb21GQ0lucHV0c0FycjtcbiAgb2JqVG9Gb3JtQ29udHJvbHMgPSB0aGlzLmlucHV0U2VydmljZS5mb3JtRmllbGRzRnJvbU9iajtcbiAgZm9ybVNjaGVtYVRvRm9ybUNvbnRyb2xzID0gdGhpcy5pbnB1dFNlcnZpY2UuZm9ybVNjaGVtYVRvRm9ybUNvbnRyb2xzO1xuXG4gIGJpbmRGb3JtQ29udHJvbFRvSW5wdXRzID0gdGhpcy5pbnB1dFNlcnZpY2UuYmluZEZvcm1Db250cm9sVG9JbnB1dHM7XG5cbiAgZ28gPSAodmFsdWU6IHN0cmluZywgZXh0cmE/OiBOYXZpZ2F0aW9uRXh0cmFzKSA9PiB7XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3ZhbHVlXSwgZXh0cmEpO1xuICB9O1xuICAvKipcbiAgICogUm91dGUgdG8gY29tcG9uZW50XG4gICAqIEBwYXJhbSByb3V0ZSBSb3V0ZSBvZiBwYXRoIHRvIGNvbXBvbmVudFxuICAgKiBAcGFyYW0gZXh0cmFcbiAgICovXG4gIGdvUiA9IChyb3V0ZTogc3RyaW5nLCBleHRyYT86IE5hdmlnYXRpb25FeHRyYXMpID0+IHtcbiAgICBpZiAoISg8U0RLRW52aXJvbm1lbnQ+dGhpcy5lbnZpcm9ubWVudCkuYWN0aXZhdGVkUm91dGUpIGRlYnVnZ2VyO1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtyb3V0ZV0sIHtcbiAgICAgIHJlbGF0aXZlVG86ICg8U0RLRW52aXJvbm1lbnQ+dGhpcy5lbnZpcm9ubWVudCkuYWN0aXZhdGVkUm91dGUsXG4gICAgICAuLi5leHRyYSxcbiAgICB9KTtcbiAgICAvLyBkZWJ1Z2dlcjtcbiAgfTtcbiAgbW9uZXlQYXJzZXIgPSAoYW1vdW50OiBzdHJpbmcgfCBudW1iZXIsIGN1cnJlbmN5ID0gJyAnKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVuY3lQaXBlLnRyYW5zZm9ybShhbW91bnQsIGN1cnJlbmN5IHx8ICcgJyk7XG4gIH07XG4gIGV4dHJhY3RVcGxvYWQoZXZlbnQ6IGFueSkge1xuICAgIHJldHVybiAoZXZlbnQudGFyZ2V0LmZpbGVzIGFzIEZpbGVbXSkgfHwgW107XG4gIH1cblxuICBzZWNvbmRzVG9Ib3VyTWluU2VjID0gKHNlY29uZHM6IG51bWJlcikgPT4ge1xuICAgIGlmICghc2Vjb25kcykgcmV0dXJuIHsgc2VjczogbnVsbCwgaG91cnM6IG51bGwsIG1pbnM6IG51bGwgfTtcbiAgICBjb25zdCBob3VycyA9IE1hdGguZmxvb3Ioc2Vjb25kcyAvIDM2MDApIHx8IDAsXG4gICAgICBzZWNvbmRzRXhIb3VycyA9IHNlY29uZHMgJSAzNjAwIHx8IDAsXG4gICAgICBtaW5zID0gTWF0aC5mbG9vcihzZWNvbmRzRXhIb3VycyAvIDYwKSB8fCAwLFxuICAgICAgc2VjcyA9IHNlY29uZHNFeEhvdXJzICUgNjA7XG4gICAgcmV0dXJuIHsgaG91cnMsIG1pbnMsIHNlY3MgfTtcbiAgfTtcbiAgbWludXRlc1RvRGF5SG91ck1pbiA9IChtaW51dGVzOiBudW1iZXIpID0+IHtcbiAgICBpZiAoIW1pbnV0ZXMpIHJldHVybiB7IGRheXM6IG51bGwsIGhvdXJzOiBudWxsLCBtaW5zOiBudWxsIH07XG4gICAgY29uc3QgZGF5cyA9IE1hdGguZmxvb3IobWludXRlcyAvIDE0NDApIHx8IDAsXG4gICAgICBtaW5pdXRlc0V4RGF5cyA9IG1pbnV0ZXMgJSAxNDQwIHx8IDAsXG4gICAgICBob3VycyA9IE1hdGguZmxvb3IobWluaXV0ZXNFeERheXMgLyA2MCkgfHwgMCxcbiAgICAgIG1pbnMgPSBtaW5pdXRlc0V4RGF5cyAlIDYwIHx8IDA7XG4gICAgcmV0dXJuIHsgZGF5cywgaG91cnMsIG1pbnMgfTtcbiAgfTtcbiAgbWludXRlc1RvRGF5SG91ck1pblN0ciA9IChtaW51dGVzOiBudW1iZXIpID0+IHtcbiAgICBpZiAoIW1pbnV0ZXMpIHJldHVybiBudWxsO1xuICAgIGNvbnN0IHJldCA9IHRoaXMubWludXRlc1RvRGF5SG91ck1pbihtaW51dGVzKTtcbiAgICByZXR1cm4gYCR7cmV0LmRheXN9ICR7cmV0LmhvdXJzfToke3JldC5taW5zfWAudHJpbSgpO1xuICB9O1xuICBtaW51dGVzVG9EYXlIb3VyTWluU3RyMiA9IChtaW51dGVzOiBudW1iZXIpID0+IHtcbiAgICBpZiAoIW1pbnV0ZXMpIHJldHVybiBudWxsO1xuICAgIGNvbnN0IHJldCA9IHRoaXMubWludXRlc1RvRGF5SG91ck1pbihtaW51dGVzKTtcbiAgICByZXR1cm4gYCR7cmV0LmRheXN9ZGF5cyAke3JldC5ob3Vyc31ocnMgJHtyZXQubWluc31taW5zYC50cmltKCk7XG4gIH07XG4gIGRheUhvdXJNaW5Ub0hvdXJNaW51dGVzID0gKGR5czogbnVtYmVyLCBocnM6IG51bWJlciwgbWluczogbnVtYmVyKSA9PiB7XG4gICAgaWYgKCFkeXMgJiYgIWhycyAmJiAhbWlucykgcmV0dXJuICcnO1xuICAgIGNvbnN0IGR5c1RvSHJzID0gKGR5cyB8fCAwKSAqIDI0O1xuICAgIGhycyA9ICgraHJzIHx8IDApICsgZHlzVG9IcnM7XG4gICAgcmV0dXJuIChocnMgfHwgJzAwJykgKyAnOicgKyAobWlucyB8fCAnMDAnKTtcbiAgfTtcbiAgZGlzYWJsZU9yRW5hYmxlSW5wdXRzID0gKGNvbnRyb2xzOiBBYnN0cmFjdENvbnRyb2xbXSwgZGlzYWJsZTogYm9vbGVhbikgPT4ge1xuICAgIGlmIChkaXNhYmxlKSB0aGlzLmRpc2FibGVJbnB1dHMoY29udHJvbHMpO1xuICAgIGVsc2UgdGhpcy5lbmFibGVJbnB1dHMoY29udHJvbHMpO1xuICB9O1xuICBkaXNhYmxlSW5wdXRzID0gKGNvbnRyb2xzOiBBYnN0cmFjdENvbnRyb2xbXSkgPT4ge1xuICAgIGZvciAoY29uc3QgY29udHJvbCBvZiBjb250cm9scykge1xuICAgICAgY29udHJvbD8uZGlzYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgfVxuICB9O1xuICBlbmFibGVJbnB1dHMgPSAoY29udHJvbHM6IEFic3RyYWN0Q29udHJvbFtdKSA9PiB7XG4gICAgZm9yIChjb25zdCBjb250cm9sIG9mIGNvbnRyb2xzKSB7XG4gICAgICBjb250cm9sPy5lbmFibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgIH1cbiAgfTtcbiAgZGF5SG91ck1pblRvTWludXRlcyA9IChkeXM6IG51bWJlciwgaHJzOiBudW1iZXIsIG1pbnM6IG51bWJlcikgPT4ge1xuICAgIGlmICghZHlzICYmICFocnMgJiYgIW1pbnMpIHJldHVybiAwO1xuICAgIGNvbnN0IGR5c1RvSHJzID0gKGR5cyB8fCAwKSAqIDI0O1xuICAgIGhycyA9ICgraHJzIHx8IDApICsgZHlzVG9IcnM7XG4gICAgcmV0dXJuIChocnMgfHwgMCkgKiA2MCArIG1pbnM7XG4gIH07XG4gIGhvdXJNaW5Ub01pbnV0ZXMgPSAoaHJzOiBudW1iZXIsIG1pbnM6IG51bWJlcikgPT4ge1xuICAgIGlmICghaHJzICYmICFtaW5zKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gKGhycyB8fCAwKSAqIDYwICsgbWlucztcbiAgfTtcbiAgaG91ck1pblRvTWludXRlczIgPSAoaHJzTWluczogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgW2hycywgbWluc10gPSBocnNNaW5zPy5zcGxpdCgnOicpIHx8IFswLCAwXTtcbiAgICByZXR1cm4gdGhpcy5ob3VyTWluVG9NaW51dGVzKCtocnMsICttaW5zKTtcbiAgfTtcbiAgbm90aWZ5KFxuICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICBjbHM6IDAgfCAxIHwgMiB8IDMgPSAxLFxuICAgIGR1cmF0aW9uID0gNTAwMCxcbiAgICB0aXRsZSA9ICdDbG9zZScsXG4gICkge1xuICAgIGlmIChjbHMgPT0gMCkgcmV0dXJuIHRoaXMuaW5mb0RpYWxvZ1NlcnZpY2UuaW5mbyhtZXNzYWdlLCBjbHMpO1xuICAgIGlmICh0eXBlb2YgbWVzc2FnZSAhPSAnc3RyaW5nJykgY29uc29sZS5lcnJvcihtZXNzYWdlKTtcbiAgICBtZXNzYWdlID0gdHlwZW9mIG1lc3NhZ2UgPT0gJ3N0cmluZycgPyBtZXNzYWdlIDogJyc7XG4gICAgY29uc3QgcmVmID0gdGhpcy5zbmFja0Jhci5vcGVuKG1lc3NhZ2UsIHRpdGxlLCB7XG4gICAgICBkdXJhdGlvbixcbiAgICAgIGhvcml6b250YWxQb3NpdGlvbjogJ2NlbnRlcicsXG4gICAgICB2ZXJ0aWNhbFBvc2l0aW9uOiAnYm90dG9tJyxcbiAgICAgIHBhbmVsQ2xhc3M6XG4gICAgICAgIGNscyA9PSAxXG4gICAgICAgICAgPyAnYmctc3VjY2VzcydcbiAgICAgICAgICA6IGNscyA9PSAyXG4gICAgICAgICAgICA/ICdidG4taW5mbydcbiAgICAgICAgICAgIDogY2xzID09IDNcbiAgICAgICAgICAgICAgPyAnYnRuLXdhcm5pbmcnXG4gICAgICAgICAgICAgIDogJ2JnLWRhbmdlcicsXG4gICAgfSk7XG4gICAgcmV0dXJuIGZpcnN0VmFsdWVGcm9tKFxuICAgICAgcmVmLmFmdGVyRGlzbWlzc2VkKCkucGlwZShtYXAoKHIpID0+IHIuZGlzbWlzc2VkQnlBY3Rpb24pKSxcbiAgICApO1xuICB9XG5cbiAgc2Nyb2xsVG9Ub3AgPSAoKSA9PiB3aW5kb3cuc2Nyb2xsVG8oMCwgMCk7XG5cbiAgLyoqXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBjdXJyZW50IGRhdGUgdGltZSBsb2NhbCB0aGF0IGNhbiBiZSB1c2VkIHRvIHNldCB0aGUgZGF0ZXRpbWUtbG9jYWwgaW5wdXRcbiAgICovXG4gIGdldExvY2FsRGF0ZVRpbWVOb3cgPSAoKSA9PiB7XG4gICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgY29uc3QgZGF0ZUNodW5rcyA9IGRhdGUudG9Mb2NhbGVEYXRlU3RyaW5nKCkuc3BsaXQoJy8nKTtcbiAgICByZXR1cm4gKFxuICAgICAgYCR7ZGF0ZUNodW5rc1syXX0tJHtkYXRlQ2h1bmtzWzFdfS0ke2RhdGVDaHVua3NbMF19YCArXG4gICAgICAnVCcgK1xuICAgICAgZGF0ZS50b0xvY2FsZVRpbWVTdHJpbmcoKVxuICAgICk7XG4gIH07XG4gIC8qKiBAcmV0dXJucyBUaGUgY3VycmVudCBkYXRlIGxvY2FsIHRoYXQgY2FuIGJlIHVzZWQgdG8gc2V0IHRoZSBkYXRlIGlucHV0ICovXG4gIGxvY2FsRGF0ZU5vdyA9ICgpID0+IHtcbiAgICByZXR1cm4gbmV3IERhdGUoKS50b0lTT1N0cmluZygpLnNwbGl0KCdUJylbMF07XG4gIH07XG4gIGRhdGVGb3JtYXQgPSAoZGF0ZTogYW55LCBmb3JtYXQgPSAxKSA9PiB7XG4gICAgaWYgKCFkYXRlKSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCBkID0gbmV3IERhdGUoZGF0ZSk7XG4gICAgaWYgKGZvcm1hdCA9PSAxKSB7XG4gICAgICByZXR1cm4gZC50b0RhdGVTdHJpbmcoKTtcbiAgICB9IGVsc2UgaWYgKGZvcm1hdCA9PSAyKSB7XG4gICAgICByZXR1cm4gZC5nZXREYXRlKCkgKyAnICcgKyBjb25maWcuTW9udGhzW2QuZ2V0TW9udGgoKV07XG4gICAgfSBlbHNlIGlmIChmb3JtYXQgPT0gMykge1xuICAgICAgcmV0dXJuIHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKGRhdGUsIGBFRUUgTU1NIGRkIFlZWVksIGhoOm1tIGFhYCk7XG4gICAgfSBlbHNlIGlmIChmb3JtYXQgPT0gNCkge1xuICAgICAgcmV0dXJuIGNvbmZpZy5Nb250aHNbZC5nZXRNb250aCgpXSArICcgJyArIGQuZ2V0RGF0ZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICB9O1xuXG4gIHRvSmF2YURhdGVTdHJpbmcgPSAoaXNvRGF0ZVN0cmluZzogc3RyaW5nID0gbmV3IERhdGUoKS50b0lTT1N0cmluZygpKSA9PiB7XG4gICAgaWYgKCFpc29EYXRlU3RyaW5nKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gYCR7aXNvRGF0ZVN0cmluZy5zbGljZSgwLCAxOSl9YDtcbiAgICByZXR1cm4gYCR7aXNvRGF0ZVN0cmluZy5zbGljZSgwLCAxMCl9ICR7aXNvRGF0ZVN0cmluZy5zbGljZSgxMSwgMTkpfWA7XG4gIH07XG5cbiAgdG9KYXZhRGF0ZXRpbWVTdHJpbmcgPSAoaXNvRGF0ZVN0cmluZzogc3RyaW5nKSA9PiB7XG4gICAgaWYgKCFpc29EYXRlU3RyaW5nKSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCBkYXRlID0gaXNvRGF0ZVN0cmluZy5pbmNsdWRlcygnVCcpXG4gICAgICA/IGlzb0RhdGVTdHJpbmdcbiAgICAgIDogbmV3IERhdGUoaXNvRGF0ZVN0cmluZykudG9JU09TdHJpbmcoKTtcbiAgICByZXR1cm4gYCR7ZGF0ZS5zbGljZSgwLCAxMCl9ICR7ZGF0ZS5zbGljZSgxMSwgMTkpfWA7XG4gIH07XG5cbiAgdGltZUZvcm1hdCA9ICh0aW1lPzogYW55KSA9PiB7XG4gICAgY29uc3QgdGltZUFycjogYW55W10gPSB0aW1lLnNwbGl0KCcgJyk7XG4gICAgdGltZUFyclswXSA9IHRpbWVBcnJbMF0uc3BsaXQoJzonKS5zcGxpY2UoMCwgMikuam9pbignOicpO1xuICAgIHJldHVybiB0aW1lQXJyLmpvaW4oJyAnKTtcbiAgfTtcbiAgZnVsbERhdGVUaW1lID0gKHRpbWVzdGFtcDogc3RyaW5nIHwgbnVtYmVyKSA9PiB7XG4gICAgLy8gZGVidWdnZXJcbiAgICByZXR1cm4gdGhpcy5kYXRlRm9ybWF0KHRpbWVzdGFtcCwgMyk7XG4gIH07XG4gIGRheXNGb3JtYXR0ZXIgPSAoZGF5czogbnVtYmVyKSA9PiB7XG4gICAgaWYgKCFkYXlzKSB7XG4gICAgICByZXR1cm4gJy0nO1xuICAgIH1cbiAgICBsZXQgeXI6IG51bWJlcixcbiAgICAgIG10OiBudW1iZXIsXG4gICAgICBkeTogbnVtYmVyLFxuICAgICAgcmV0OiBzdHJpbmcsXG4gICAgICBfeXIgPSAzNjUsXG4gICAgICBfbXQgPSAzMDtcbiAgICBpZiAoZGF5cyA+IF95cikge1xuICAgICAgeXIgPSBNYXRoLmZsb29yKGRheXMgLyBfeXIpO1xuICAgIH1cbiAgICBpZiAoZGF5cyA+IF9tdCkge1xuICAgICAgbXQgPSBNYXRoLmZsb29yKChkYXlzICUgX3lyKSAvIF9tdCk7XG4gICAgfVxuICAgIGR5ID0gKGRheXMgJSBfeXIpICUgX210O1xuICAgIHJldCA9IGAke3lyID8gdGhpcy5wbHVhcmxpemVyKHlyLCAneXInKSA6ICcnfSAke1xuICAgICAgbXQgPyB0aGlzLnBsdWFybGl6ZXIobXQsICdtdGgnKSA6ICcnXG4gICAgfSAke3RoaXMucGx1YXJsaXplcihkeSwgJ2R5Jyl9YDtcbiAgICByZXR1cm4gcmV0O1xuICB9O1xuICBtb250aHNGb3JtYXR0ZXIgPSAobW9udGhzOiBudW1iZXIpID0+IHtcbiAgICBpZiAoIW1vbnRocykge1xuICAgICAgcmV0dXJuICctJztcbiAgICB9XG4gICAgbGV0IHlyOiBudW1iZXIsXG4gICAgICBtdDogbnVtYmVyLFxuICAgICAgcmV0OiBzdHJpbmcsXG4gICAgICBfeXIgPSAxMjtcbiAgICBpZiAobW9udGhzID4gX3lyKSB7XG4gICAgICB5ciA9IE1hdGguZmxvb3IobW9udGhzIC8gX3lyKTtcbiAgICB9XG4gICAgbXQgPSBtb250aHMgJSBfeXI7XG4gICAgcmV0ID0gYCR7eXIgPyB0aGlzLnBsdWFybGl6ZXIoeXIsICd5cicpIDogJyd9ICR7XG4gICAgICBtdCA/IHRoaXMucGx1YXJsaXplcihtdCwgJ210aCcpIDogJydcbiAgICB9YDtcbiAgICByZXR1cm4gcmV0O1xuICB9O1xuICBwbHVhcmxpemVyID0gKHZhbDogbnVtYmVyLCB0eHQ6IHN0cmluZywgcGx1cmFsPzogc3RyaW5nKSA9PiB7XG4gICAgcGx1cmFsID0gcGx1cmFsIHx8IHR4dCArICdzJztcbiAgICByZXR1cm4gdmFsICsgKHZhbCA9PSAxID8gdHh0IDogcGx1cmFsKTtcbiAgfTtcbiAgZGVjaW1hbFRvUGVyY2VudGFnZSA9IChkZWM6IG51bWJlcikgPT4ge1xuICAgIHJldHVybiBkZWMgKiAxMDAgKyAnJSc7XG4gIH07XG4gIGxvZ0Zvcm0gPSAoZm9ybSkgPT4ge1xuICAgIGNvbnNvbGUubG9nKCdGT1JNJywgZm9ybSwgJ1ZBTFVFUycsIGZvcm0udmFsdWUgYXMgYW55KTtcbiAgfTtcblxuICB0b0NTVihkYXRhOiBhbnlbXSwgaGVhZGVyTmFtZXM6IHN0cmluZ1tdLCBmaWxlbmFtZTogc3RyaW5nKSB7XG4gICAgY29uc3QgcmVwbGFjZXIgPSAoa2V5LCB2YWx1ZSkgPT4gKHZhbHVlID09PSBudWxsID8gJycgOiB2YWx1ZSk7IC8vIHNwZWNpZnkgaG93IHlvdSB3YW50IHRvIGhhbmRsZSBudWxsIHZhbHVlcyBoZXJlXG5cbiAgICBsZXQgY3N2ID0gZGF0YS5tYXAoKHJvdykgPT5cbiAgICAgIGhlYWRlck5hbWVzXG4gICAgICAgIC5tYXAoKGZpZWxkTmFtZSkgPT4gSlNPTi5zdHJpbmdpZnkocm93W2ZpZWxkTmFtZV0sIHJlcGxhY2VyKSlcbiAgICAgICAgLmpvaW4oJywnKSxcbiAgICApO1xuICAgIGNzdi51bnNoaWZ0KGhlYWRlck5hbWVzLmpvaW4oJywnKSk7XG4gICAgbGV0IGNzdkFycmF5ID0gY3N2LmpvaW4oJ1xcclxcbicpO1xuXG4gICAgdmFyIGJsb2IgPSBuZXcgQmxvYihbY3N2QXJyYXldLCB7IHR5cGU6ICd0ZXh0L2NzdicgfSk7XG4gICAgc2F2ZUFzKGJsb2IsIGZpbGVuYW1lICsgJy5jc3YnKTtcbiAgfVxuXG4gIGlzUGljdHVyZUZvcm1hdChmaWxlTmFtZTogc3RyaW5nKSB7XG4gICAgaWYgKCFmaWxlTmFtZSkgcmV0dXJuIGZhbHNlO1xuICAgIGNvbnN0IFBJQ1RVUkVfRk9STUFUUyA9IFsnLmpwZycsICcuanBlZycsICcucG5nJywgJy5naWYnXTtcbiAgICByZXR1cm4gUElDVFVSRV9GT1JNQVRTLnNvbWUoKGZvcm1hdCkgPT4gZmlsZU5hbWUuZW5kc1dpdGgoZm9ybWF0KSk7XG4gIH1cbiAgb2JqZWN0VG9BcnJheTxUPihvYmo6IGFueSkge1xuICAgIGNvbnN0IHJldCA9IFtdO1xuICAgIGZvciAoY29uc3Qga2V5IGluIG9iaikge1xuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHtcbiAgICAgICAgcmV0LnB1c2gob2JqW2tleV0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmV0IGFzIFRbXTtcbiAgfVxuICBmb3JtYXRGaWVsZChmaWVsZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy50b1RpdGxlQ2FzZShmaWVsZD8udG9TZW50ZW5jZUNhc2UoKSk7XG4gIH1cbiAgLyoqXG4gICAqIFVzZXMgYSB3ZWIgd29ya2VyIHRvIHBlcmZvcm0gYSB0YXNrXG4gICAqIEBleGFtcGxlIG5ldyBXb3JrZXIobmV3IFVSTCgnLi91cGxvYWQtY3N2LndvcmtlcicsIGltcG9ydC5tZXRhLnVybCkpXG4gICAqIEBwYXJhbSB3b3JrZXIgV2ViIHdvcmtlciBvYmplY3RcbiAgICogQHBhcmFtIGlucHV0RGF0YSBEYXRhIGJlaW5nIHBhc3NlZCBpbnRvIHdlYiB3b3JrZXJcbiAgICogQHJldHVybnMgRGF0YSBnb3R0ZW4gZnJvbSB3ZWIgd29ya2VyXG4gICAqL1xuICB1c2VXZWJXb3JrZXI8VCA9IGFueT4oXG4gICAgd29ya2VyOiBXb3JrZXIsXG4gICAgaW5wdXREYXRhOiBhbnksXG4gICAgY29uZGl0aW9ucz86IHsgc3RvcDogKHJlcykgPT4gYm9vbGVhbjsgZXJyb3I6IChyZXMpID0+IGJvb2xlYW4gfSxcbiAgKSB7XG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPFQ+KChzdWIpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGlmICh0eXBlb2YgV29ya2VyICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgIHdvcmtlci5wb3N0TWVzc2FnZShpbnB1dERhdGEpO1xuICAgICAgICAgIHdvcmtlci5vbm1lc3NhZ2UgPSAocikgPT4ge1xuICAgICAgICAgICAgLy8gZGVidWdnZXJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKGUpO1xuICAgICAgICAgICAgY29uc3QgZGF0YSA9IHIuZGF0YTtcbiAgICAgICAgICAgIGlmIChjb25kaXRpb25zKSB7XG4gICAgICAgICAgICAgIGlmIChjb25kaXRpb25zLmVycm9yKGRhdGEpKSB7XG4gICAgICAgICAgICAgICAgc3ViLmVycm9yKGRhdGEpO1xuICAgICAgICAgICAgICAgIHN1Yi5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICAgIHdvcmtlci50ZXJtaW5hdGUoKTtcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChjb25kaXRpb25zLnN0b3AoZGF0YSkpIHtcbiAgICAgICAgICAgICAgICBzdWIubmV4dChkYXRhKTtcbiAgICAgICAgICAgICAgICBzdWIuY29tcGxldGUoKTtcbiAgICAgICAgICAgICAgICB3b3JrZXIudGVybWluYXRlKCk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc3ViLm5leHQoZGF0YSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHN1Yi5uZXh0KGRhdGEgYXMgYW55KTtcbiAgICAgICAgICAgICAgc3ViLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICAgIHdvcmtlci50ZXJtaW5hdGUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRocm93ICdub1dvcmtlcic7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY29uc29sZS5sb2coZSk7XG4gICAgICAgIHN1Yi5lcnJvcihlKTtcbiAgICAgICAgc3ViLmNvbXBsZXRlKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgYXN5bmMgYXJyYXlUb0NTVldvcmtlcihcbiAgICBhcnJheTogYW55W10sXG4gICAgZmlsZW5hbWU6IHN0cmluZyxcbiAgICBjb2x1bW5zPzogc3RyaW5nW10sXG4gICAgc2hvd0hlYWRlciA9IHRydWUsXG4gICkge1xuICAgIGRlYnVnZ2VyO1xuXG4gICAgdGhpcy51c2VXZWJXb3JrZXIoXG4gICAgICBuZXcgV29ya2VyKG5ldyBVUkwoYC4vanNvbi1kb3dubG9hZGVyLndvcmtlcmAsIGltcG9ydC5tZXRhLnVybCkpLFxuICAgICAge1xuICAgICAgICBhcnJheSxcbiAgICAgICAgY29sdW1ucyxcbiAgICAgICAgc2hvd0hlYWRlcixcbiAgICAgICAgZm9ybWF0OiAnY3N2JyxcbiAgICAgIH0sXG4gICAgKS5zdWJzY3JpYmUoKGNzdikgPT4ge1xuICAgICAgLy8gZGVidWdnZXI7XG4gICAgICB0aGlzLmRvd25sb2FkZXIoXG4gICAgICAgIGNzdixcbiAgICAgICAgZmlsZW5hbWU/LmVuZHNXaXRoKCcuY3N2JykgPyBmaWxlbmFtZSA6IGZpbGVuYW1lICsgJy5jc3YnLFxuICAgICAgKTtcblxuICAgICAgdGhpcy5pbmZvKGBEb3dubG9hZGVkICR7ZmlsZW5hbWV9YCk7XG4gICAgfSk7XG4gIH1cblxuICBpc0RhdGVWYWx1ZSA9ICh2KSA9PiAodiA/IHZbNF0gPT0gJy0nICYmIHZbN10gPT0gJy0nIDogZmFsc2UpO1xuICBpc0RhdFRpbWVWYWx1ZSA9ICh2KSA9PlxuICAgIHYgPyB2LmluY2x1ZGVzKCdUJykgJiYgdls0XSA9PSAnLScgJiYgdls3XSA9PSAnLScgOiBmYWxzZTtcblxuICB5ZXNOb0NlbGxGb3JtYXR0ZXJDb2xvdXJlZCA9ICh2KSA9PlxuICAgIGA8c3BhbiBjbGFzcz0nJHt2ID8gJ3N1Y2Nlc3NDZWxsJyA6ICdpbmVydENlbGwnfSc+JHtcbiAgICAgIHYgPyAnWWVzJyA6IHYgPT0gZmFsc2UgPyAnTm8nIDogJy0nXG4gICAgfTwvc3Bhbj5gO1xuICB5ZXNOb0NlbGxGb3JtYXR0ZXIgPSAodikgPT4gYCR7diA/ICdZZXMnIDogJ05vJ31gO1xuICBzdGF0dXNDZWxsRm9ybWF0dGVyID0gKHN0YXR1czogU3RhdHVzKSA9PlxuICAgIGA8c3BhbiBjbGFzcz0nJHtcbiAgICAgIHN0YXR1cyA9PSAnQ09NUExFVEVEJ1xuICAgICAgICA/ICdzdWNjZXNzQ2VsbCdcbiAgICAgICAgOiBzdGF0dXMgPT0gJ1BFTkRJTkcnXG4gICAgICAgICAgPyAncGVuZGluZ0NlbGwnXG4gICAgICAgICAgOiAnaW5lcnRDZWxsJ1xuICAgIH0nPiR7c3RhdHVzIHx8ICctJ308L3NwYW4+YDtcblxuICBjZWxsU3RhdHVzRm9ybWF0dGVyID1cbiAgICA8VCA9IGFueT4oZ3VpZGU6IHtcbiAgICAgIHN1Y2Nlc3NWYWw/OiBUO1xuICAgICAgcGVuZGluZ1ZhbD86IFQ7XG4gICAgICBlcnJvclZhbD86IFQ7XG4gICAgICBpbmVydFZhbD86IFQ7XG4gICAgfSkgPT5cbiAgICAodikgPT5cbiAgICAgIGA8c3BhbiBjbGFzcz0nJHtcbiAgICAgICAgdiA9PSBndWlkZS5zdWNjZXNzVmFsXG4gICAgICAgICAgPyAnc3VjY2Vzc0NlbGwnXG4gICAgICAgICAgOiB2ID09IGd1aWRlLnBlbmRpbmdWYWxcbiAgICAgICAgICAgID8gJ3BlbmRpbmdDZWxsJ1xuICAgICAgICAgICAgOiB2ID09IGd1aWRlLmVycm9yVmFsXG4gICAgICAgICAgICAgID8gJ2Vycm9yQ2VsbCdcbiAgICAgICAgICAgICAgOiAnaW5lcnRDZWxsJ1xuICAgICAgfSc+JHt2fTwvc3Bhbj5gO1xuXG4gIGdlbmVyYXRlVVVJRCgpIHtcbiAgICBsZXQgZCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgIGxldCBkMiA9XG4gICAgICAodHlwZW9mIHBlcmZvcm1hbmNlICE9PSAndW5kZWZpbmVkJyAmJlxuICAgICAgICBwZXJmb3JtYW5jZS5ub3cgJiZcbiAgICAgICAgcGVyZm9ybWFuY2Uubm93KCkgKiAxMDAwKSB8fFxuICAgICAgMDsgLy9UaW1lIGluIG1pY3Jvc2Vjb25kcyBzaW5jZSBwYWdlLWxvYWQgb3IgMCBpZiB1bnN1cHBvcnRlZFxuICAgIHJldHVybiAneHh4eHh4eHgteHh4eC00eHh4LXl4eHgteHh4eHh4eHh4eHh4Jy5yZXBsYWNlKC9beHldL2csIChjKSA9PiB7XG4gICAgICBsZXQgciA9IE1hdGgucmFuZG9tKCkgKiAxNjsgLy9yYW5kb20gbnVtYmVyIGJldHdlZW4gMCBhbmQgMTZcbiAgICAgIGlmIChkID4gMCkge1xuICAgICAgICAvL1VzZSB0aW1lc3RhbXAgdW50aWwgZGVwbGV0ZWRcbiAgICAgICAgciA9IChkICsgcikgJSAxNiB8IDA7XG4gICAgICAgIGQgPSBNYXRoLmZsb29yKGQgLyAxNik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvL1VzZSBtaWNyb3NlY29uZHMgc2luY2UgcGFnZS1sb2FkIGlmIHN1cHBvcnRlZFxuICAgICAgICByID0gKGQyICsgcikgJSAxNiB8IDA7XG4gICAgICAgIGQyID0gTWF0aC5mbG9vcihkMiAvIDE2KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiAoYyA9PT0gJ3gnID8gciA6IChyICYgMHgzKSB8IDB4OCkudG9TdHJpbmcoMTYpO1xuICAgIH0pO1xuICB9XG5cbiAgaW5mbyA9IHRoaXMuaW5mb0RpYWxvZ1NlcnZpY2UuaW5mbztcbiAgZGVib3VuY2VyID0gdGhpcy5kZWJvdW5jZXJTZXJ2aWNlLmRlYm91bmNlcjtcblxuICBhc3luY1ZhbGlkYXRpb24gPSB0aGlzLmRlYm91bmNlclNlcnZpY2UuYXN5bmNWYWxpZGF0aW9uO1xuICAvLyNyZWdpb24gcm91dGVcbiAgcm91dGVQYXJhbXMxID0gdGhpcy5yb3V0ZVNlcnZpY2Uucm91dGVQYXJhbXMxO1xuICByb3V0ZVBhcmFtczIgPSB0aGlzLnJvdXRlU2VydmljZS5yb3V0ZVBhcmFtczI7XG4gIHJvdXRlUGFyYW1zMyA9IHRoaXMucm91dGVTZXJ2aWNlLnJvdXRlUGFyYW1zMztcbiAgLy8jZW5kcmVnaW9uXG4gIHN0YXJ0UGwgPSB0aGlzLnBTLnN0YXJ0UGw7XG4gIHN0b3BQbCA9IHRoaXMucFMuc3RvcFBsO1xuXG4gIGNyZWF0ZVN1YnNjcmlwdGlvbk1hbmFnZXIgPSAoLi4uc3ViczogU3Vic2NyaXB0aW9uW10pID0+IHtcbiAgICBsZXQgX3N1YnM6IFN1YnNjcmlwdGlvbltdID0gc3VicyB8fCBbXTtcbiAgICBjb25zdCBjbGVhciA9ICgpID0+IHtcbiAgICAgIF9zdWJzLmZvckVhY2goKHgpID0+IHgudW5zdWJzY3JpYmUoKSk7XG4gICAgICBfc3VicyA9IFtdO1xuICAgIH07XG4gICAgY29uc3QgcHVzaCA9ICguLi5zdWJzOiBTdWJzY3JpcHRpb25bXSkgPT4ge1xuICAgICAgX3N1YnMucHVzaCguLi5zdWJzKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIHsgY2xlYXIsIHB1c2ggfTtcbiAgfTtcblxuICBjcmVhdGVDYWNoZU1hbmFnZXIgPSAoKSA9PiB7XG4gICAgbGV0IF9jYWNoZTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHt9O1xuICAgIGNvbnN0IGNsZWFyID0gKCkgPT4ge1xuICAgICAgX2NhY2hlID0ge307XG4gICAgfTtcbiAgICBjb25zdCBkcm9wID0gKCkgPT4ge1xuICAgICAgX2NhY2hlID0gdW5kZWZpbmVkO1xuICAgIH07XG4gICAgY29uc3Qgc2F2ZSA9IChrZXk6IHN0cmluZywgZGF0YTogYW55KSA9PiB7XG4gICAgICBpZiAoIV9jYWNoZSkgX2NhY2hlID0ge307XG4gICAgICBfY2FjaGVba2V5XSA9IGRhdGE7XG4gICAgfTtcbiAgICBjb25zdCBnZXQgPSA8VD4oa2V5OiBzdHJpbmcpID0+IF9jYWNoZT8uW2tleV0gYXMgVDtcblxuICAgIHJldHVybiB7IGNsZWFyLCBkcm9wLCBnZXQsIHNhdmUgfTtcbiAgfTtcblxuICB0cmFja0J5Q3VzdG9tSUQgPSAoaW5kZXgsIGl0ZW0pID0+IHtcbiAgICBpZiAoIWl0ZW1bdGhpcy5jdXN0b21JREZpZWxkXSkge1xuICAgICAgaXRlbVt0aGlzLmN1c3RvbUlERmllbGRdID0gdGhpcy5nZW5lcmF0ZVVVSUQoKTtcbiAgICAgIGNvbnNvbGUubG9nKCdzZXQgY3VzdG9tIGlkJyk7XG4gICAgfVxuICAgIHJldHVybiBpdGVtW3RoaXMuY3VzdG9tSURGaWVsZF07XG4gIH07XG4gIHRyYWNrQnlGb3JGb3JtcyA9IChpbmRleCwgaXRlbTogRm9ybUdyb3VwKSA9PiB7XG4gICAgaWYgKCFpdGVtLmNvbnRyb2xzW3RoaXMuY3VzdG9tSURGaWVsZF0pXG4gICAgICBpdGVtLmFkZENvbnRyb2wodGhpcy5jdXN0b21JREZpZWxkLCBuZXcgRm9ybUNvbnRyb2wodGhpcy5nZW5lcmF0ZVVVSUQoKSkpO1xuICAgIHJldHVybiBpdGVtLmNvbnRyb2xzW3RoaXMuY3VzdG9tSURGaWVsZF0udmFsdWU7XG4gIH07XG4gIG9iamVjdFRvRm9ybUdyb3VwID0gPFQ+KGRhdGE6IFQpID0+IHtcbiAgICBjb25zdCBmb3JtID0gbmV3IEZvcm1Hcm91cDxJU3RyaWN0Rm9ybUdyb3VwPFQ+Pih7fSBhcyBhbnkpO1xuICAgIGZvciAoY29uc3Qga2V5IGluIGRhdGEpXG4gICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGRhdGEsIGtleSkpXG4gICAgICAgIGZvcm0uYWRkQ29udHJvbChrZXksIG5ldyBGb3JtQ29udHJvbChkYXRhW2tleV0pKTtcbiAgICByZXR1cm4gZm9ybTtcbiAgfTtcblxuICBmb3JtU2NoZW1hVG9Gb3JtR3JvdXAgPSA8VCBleHRlbmRzIHsgW3g6IHN0cmluZ106IGFueSB9PihcbiAgICBzY2hlbWE6IElGb3JtU2NoZW1hW10sXG4gICAgZGF0YT86IFQsXG4gICkgPT4ge1xuICAgIGNvbnN0IGZvcm0gPSBuZXcgRm9ybUdyb3VwPElTdHJpY3RGb3JtR3JvdXA8VD4+KHt9IGFzIGFueSk7XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIHNjaGVtYSlcbiAgICAgIGZvcm0uYWRkQ29udHJvbChcbiAgICAgICAgaXRlbS5maWVsZC50b1N0cmluZygpLFxuICAgICAgICBuZXcgRm9ybUNvbnRyb2woZGF0YVtpdGVtLmZpZWxkLnRvU3RyaW5nKCldKSxcbiAgICAgICk7XG4gICAgcmV0dXJuIGZvcm07XG4gIH07XG5cbiAgdGltZUNvZGVCbG9jayA9IDxUPihsYWJlbDogc3RyaW5nLCBjYjogKCkgPT4gVCkgPT4ge1xuICAgIGNvbnN0IHN0YXJ0VEltZSA9IERhdGUubm93KCk7XG4gICAgY29uc3QgcmVzID0gY2IoKTtcbiAgICBjb25zdCBlbmRUaW1lID0gRGF0ZS5ub3coKTtcbiAgICBjb25zb2xlLmxvZyhcbiAgICAgIGxhYmVsLFxuICAgICAgc3RhcnRUSW1lLFxuICAgICAgZW5kVGltZSxcbiAgICAgIChlbmRUaW1lIC0gc3RhcnRUSW1lKSAvIDEwMDAgKyAnc2VjJyxcbiAgICApO1xuICAgIHJldHVybiByZXM7XG4gIH07XG59XG4iXX0=
771
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbGl0eS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXRzLWZlLW5nLXNkay9zcmMvbGliL1NlcnZpY2VzL3V0aWxpdHkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBVTNDLE9BQU8sR0FBRyxNQUFNLGtCQUFrQixDQUFDO0FBRW5DLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxJQUFJLE1BQU0sRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRW5FLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDcEMsT0FBTyxFQUFFLGVBQWUsRUFBNEIsTUFBTSw4QkFBOEIsQ0FBQztBQUN6RixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFN0QsT0FBTyxFQUdMLFdBQVcsRUFDWCxTQUFTLEdBRVYsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3RDLE9BQU8sRUFDTCxjQUFjLEVBQ2QsWUFBWSxFQUNaLGFBQWEsRUFDYixLQUFLLEVBQ0wsVUFBVSxFQUNWLEVBQUUsRUFDRixhQUFhLEdBRWQsTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFLdEQsT0FBTyxFQUFzQixXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7O0FBT3RFLE1BQU0sT0FBTyxjQUFjO0lBb0J6QixZQUNTLE1BQWlCLEVBQ2pCLFFBQXFCLEVBQ3JCLE1BQWMsRUFDZCxNQUFhLEVBQ2IsUUFBa0IsRUFDbEIsWUFBaUIsRUFDakIsWUFBMEIsRUFD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LEdBQUcsQ0FBQyxDQUFDO2dCQUN0QixFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7YUFDMUI7WUFDRCxPQUFPLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDeEQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzhHQTF2QlUsY0FBYztrSEFBZCxjQUFjLGNBREQsTUFBTTs7MkZBQ25CLGNBQWM7a0JBRDFCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ3VycmVuY3lQaXBlLFxuICBEYXRlUGlwZSxcbiAgTG9jYXRpb24sXG4gIFRpdGxlQ2FzZVBpcGUsXG59IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBNYXREaWFsb2cgYXMgTWF0RGlhbG9nLFxuICBNYXREaWFsb2dDb25maWcgYXMgTWF0RGlhbG9nQ29uZmlnLFxufSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgTWF0U25hY2tCYXIgYXMgTWF0U25hY2tCYXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXInO1xuaW1wb3J0IHsgVGl0bGUgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IFJvdXRlciwgTmF2aWdhdGlvbkV4dHJhcyB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBFVFNSZWFjdGl2ZUZvcm1JbnB1dFNlcnZpY2UgYXMgSVMxIH0gZnJvbSAnLi9pbnB1dC5zZXJ2aWNlJztcbmltcG9ydCB7IFJvdXRlU2VydmljZSB9IGZyb20gJy4vcm91dGUuc2VydmljZSc7XG5pbXBvcnQgamZkIGZyb20gJ2pzLWZpbGUtZG93bmxvYWQnO1xuaW1wb3J0IHsgUGFnZUxvYWRlclNlcnZpY2UgfSBmcm9tICcuL3BhZ2UtbG9hZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29uZmlnLCBDb25maWcgYXMgY29uZmlnIH0gZnJvbSAnLi4vY29uZmlncy9pbmRleC5jb25maWcnO1xuaW1wb3J0IHsgQXBwUm91dGVCYXNlIH0gZnJvbSAnLi4vU2hhcmVkL21vZGVscy9Sb3V0ZUl0ZW0uY2xhc3MnO1xuaW1wb3J0IHsgc2F2ZUFzIH0gZnJvbSAnZmlsZS1zYXZlcic7XG5pbXBvcnQgeyBFVmFsaWRhdGlvblR5cGUsIElTdHJpY3RGb3JtR3JvdXAsIFN0YXR1cyB9IGZyb20gJy4uL1NoYXJlZC9tb2RlbHMvaW5kZXgubW9kZWwnO1xuaW1wb3J0IHsgZW52aXJvbm1lbnQgfSBmcm9tICcuLi8uLi9lbnZpcm9ubWVudHMvZW52aXJvbm1lbnQnO1xuaW1wb3J0IHsgUGFnZVNlcnZpY2UgfSBmcm9tICcuL3BhZ2Uuc2VydmljZSc7XG5pbXBvcnQge1xuICBBYnN0cmFjdENvbnRyb2wsXG4gIEZvcm1BcnJheSxcbiAgRm9ybUNvbnRyb2wsXG4gIEZvcm1Hcm91cCxcbiAgVW50eXBlZEZvcm1BcnJheSxcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTG9nZ2VyU2VydmljZSB9IGZyb20gJy4uL1JldXNhYmxlcy9yZXVzYWJsZS1wYWdlcy9sb2dnZXIvbG9nZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgY2xvbmVEZWVwIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7XG4gIGZpcnN0VmFsdWVGcm9tLFxuICBpc09ic2VydmFibGUsXG4gIGxhc3RWYWx1ZUZyb20sXG4gIG1lcmdlLFxuICBPYnNlcnZhYmxlLFxuICBvZixcbiAgUmVwbGF5U3ViamVjdCxcbiAgU3Vic2NyaXB0aW9uLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEVFVFNQYWdlQnRuSUQgfSBmcm9tICcuLi9TaGFyZWQvbW9kZWxzL0lNZW51SXRlbSc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gIEVudmlyb25tZW50LFxuICBTREtFbnZpcm9ubWVudCxcbn0gZnJvbSAnLi4vU2hhcmVkL21vZGVscy9lbnZpcm9ubWVudC5tb2RlbCc7XG5pbXBvcnQgeyBCcmVha3BvaW50T2JzZXJ2ZXIsIEJyZWFrcG9pbnRzIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2xheW91dCc7XG5pbXBvcnQgeyBJbmZvRGlhbG9nU2VydmljZSB9IGZyb20gJy4uL1NoYXJlZC9jb21wb25lbnRzL2luZm8tZGlhbG9nL2luZm8tZGlhbG9nLnNlcnZpY2UnO1xuaW1wb3J0IHsgRGVib3VuY2VyU2VydmljZSB9IGZyb20gJy4vZGVib3VuY2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgSUZvcm1TY2hlbWEgfSBmcm9tICcuLi9TaGFyZWQvY29tcG9uZW50cy9mb3JtLWdlbmVyYXRvci9mb3JtLWdlbmVyYXRvci5jb21wb25lbnQnO1xuZGVjbGFyZSBjb25zdCAkOiBhbnk7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgVXRpbGl0eVNlcnZpY2U8XG4gIFRFbnZpcm9ubWVudCBleHRlbmRzIFNES0Vudmlyb25tZW50ID0gU0RLRW52aXJvbm1lbnQsXG4+IHtcbiAgcjogQXBwUm91dGVCYXNlO1xuICBkb3dubG9hZGVyID0gamZkO1xuICBlVmFsaWRhdGlvblR5cGUgPSBFVmFsaWRhdGlvblR5cGU7XG4gIGNvbmZpZyA9IENvbmZpZztcbiAgZW52aXJvbm1lbnQ6IFRFbnZpcm9ubWVudCA9IGVudmlyb25tZW50IGFzIGFueTtcbiAgcGJpZCA9IEVFVFNQYWdlQnRuSUQ7XG4gICQ6IGFueTtcbiAgaXNNb2JpbGU6IGJvb2xlYW47XG4gIHBhZ2VTaXplT3B0aW9ucyA9IFs1LCAxMCwgMTUsIDIwLCA1MCwgMTAwLCAyMDAsIDUwMCwgMTAwMF07XG4gIGRhdGVQaXBlRGF0ZSA9ICdFRSwgTU1NTSBkLCB5JztcbiAgZGF0ZVBpcGVEYXRlTGVhbiA9ICdFRSwgTU1NIGQsIHknO1xuICBkYXRlUGlwZURhdGVUaW1lTGVhbiA9ICdFRSwgTU1NIGQsIHkgaGg6bW0gYSc7XG4gIHJlYWRvbmx5IGN1c3RvbUlERmllbGQgPSAnX19pZCc7XG4gIC8qKlxuICAgKiBFbWl0cyB0cnVlIGlmIG1vYmlsZVxuICAgKi9cbiAgbW9iaWxlUXVlcnlDaGFuZ2VkID0gbmV3IFJlcGxheVN1YmplY3Q8Ym9vbGVhbj4oKTtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGRpYWxvZzogTWF0RGlhbG9nLFxuICAgIHB1YmxpYyBzbmFja0JhcjogTWF0U25hY2tCYXIsXG4gICAgcHVibGljIHJvdXRlcjogUm91dGVyLFxuICAgIHB1YmxpYyB0aXRsZVM6IFRpdGxlLFxuICAgIHB1YmxpYyBsb2NhdGlvbjogTG9jYXRpb24sXG4gICAgcHVibGljIGlucHV0U2VydmljZTogSVMxLFxuICAgIHB1YmxpYyByb3V0ZVNlcnZpY2U6IFJvdXRlU2VydmljZSxcbiAgICBwdWJsaWMgcFM6IFBhZ2VMb2FkZXJTZXJ2aWNlLFxuICAgIHB1YmxpYyBjdXJyZW5jeVBpcGU6IEN1cnJlbmN5UGlwZSxcbiAgICBwdWJsaWMgdGl0bGVDYXNlUGlwZTogVGl0bGVDYXNlUGlwZSxcbiAgICBwdWJsaWMgbG9nZ2VyU2VydmljZTogTG9nZ2VyU2VydmljZSxcbiAgICBwdWJsaWMgcGFnZVM6IFBhZ2VTZXJ2aWNlLFxuICAgIHB1YmxpYyByZXNwb25zaXZlOiBCcmVha3BvaW50T2JzZXJ2ZXIsXG4gICAgcHVibGljIGRhdGVQaXBlOiBEYXRlUGlwZSxcbiAgICBwdWJsaWMgaW5mb0RpYWxvZ1NlcnZpY2U6IEluZm9EaWFsb2dTZXJ2aWNlLFxuICAgIHB1YmxpYyBkZWJvdW5jZXJTZXJ2aWNlOiBEZWJvdW5jZXJTZXJ2aWNlLFxuICApIHtcbiAgICByZXNwb25zaXZlLm9ic2VydmUoW0JyZWFrcG9pbnRzLkhhbmRzZXRQb3J0cmFpdF0pLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XG4gICAgICBjb25zdCBicmVha3BvaW50cyA9IHJlc3VsdC5icmVha3BvaW50cztcblxuICAgICAgaWYgKGJyZWFrcG9pbnRzW0JyZWFrcG9pbnRzLkhhbmRzZXRQb3J0cmFpdF0pIHtcbiAgICAgICAgdGhpcy5pc01vYmlsZSA9IHRydWU7XG4gICAgICAgIHRoaXMubW9iaWxlUXVlcnlDaGFuZ2VkLm5leHQodHJ1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmlzTW9iaWxlID0gZmFsc2U7XG4gICAgICAgIHRoaXMubW9iaWxlUXVlcnlDaGFuZ2VkLm5leHQoZmFsc2UpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIC8vIGlmICgkKSB0aGlzLiQgPSAkO1xuICB9XG5cbiAgYmFjayA9ICgpID0+IHRoaXMubG9jYXRpb24uYmFjaygpO1xuXG4gIG9ubHlPbmVJbnB1dChpbnB1dHM6IEZvcm1Db250cm9sW10pIHtcbiAgICBjb25zdCBuSW5wdXRzID0gaW5wdXRzPy5tYXAoKGlucCkgPT4gKHsgaWQ6IHRoaXMuZ2VuUmFuZG9tSUQsIGlucCB9KSkgfHwgW107XG4gICAgcmV0dXJuIG1lcmdlKFxuICAgICAgLi4ubklucHV0cy5tYXAoKGkpID0+XG4gICAgICAgIGkuaW5wLnZhbHVlQ2hhbmdlcy5waXBlKG1hcCgodmFsKSA9PiAoeyBpZDogaS5pZCwgdmFsIH0pKSksXG4gICAgICApLFxuICAgICkuc3Vic2NyaWJlKChyKSA9PiB7XG4gICAgICAvLyBkZWJ1Z2dlclxuICAgICAgaWYgKHIudmFsKVxuICAgICAgICBuSW5wdXRzXG4gICAgICAgICAgLmZpbHRlcigoeCkgPT4geC5pZCAhPSByLmlkKVxuICAgICAgICAgIC5mb3JFYWNoKCh4KSA9PiB4LmlucC5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KSk7XG4gICAgICBlbHNlXG4gICAgICAgIG5JbnB1dHNcbiAgICAgICAgICAuZmlsdGVyKCh4KSA9PiB4LmlkICE9IHIuaWQpXG4gICAgICAgICAgLmZvckVhY2goKHgpID0+IHguaW5wLmVuYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSkpO1xuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgY29weVBheWxvYWQocGF5bG9hZCkge1xuICAgIHRyeSB7XG4gICAgICBpZiAoKDxTREtFbnZpcm9ubWVudD50aGlzLmVudmlyb25tZW50KS5kZWJ1Zykge1xuICAgICAgICBjb25zdCBlbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGV4dGFyZWEnKTtcbiAgICAgICAgZWxlbS52YWx1ZSA9IEpTT04uc3RyaW5naWZ5KHBheWxvYWQpO1xuICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGVsZW0pO1xuICAgICAgICBlbGVtLnNlbGVjdCgpO1xuICAgICAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgnY29weScpO1xuICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGVsZW0pO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgfVxuICB9XG4gIHhPclkgPSAoeCwgeSA9ICctJykgPT4gYCR7eCA9PSBudWxsID8geSA6IHh9YDtcbiAgdG9UaXRsZUNhc2UodGV4dDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMudGl0bGVDYXNlUGlwZS50cmFuc2Zvcm0odGV4dCk7XG4gIH1cbiAgLyoqXG4gICAqIENvbnZlcnQgRGF0ZSBzdHJpbmcgdG8gRGF0ZSBUaW1lIHN0cmluZ1xuICAgKiBAcGFyYW0gZGF0ZVN0ciBEYXRlIHN0cmluZ1xuICAgKiBAZXhhbXBsZSAnMjAyMi0wMS0yNSdcbiAgICogQHBhcmFtIGNvbmZpZyBDb25maWd1cmF0aW9uIGZvciB0aGUgY29udmVyc2lvblxuICAgKiBAcmV0dXJucyBSZXR1cm5zIGEgRGF0ZSBUaW1lIHN0cmluZ1xuICAgKiBAZXhhbXBsZSAnMjAyMi0wMS0yNVQwMDowMDowMFonIG9yICcyMDIyLTAxLTI1IDAwOjAwOjAwJ1xuICAgKi9cbiAgZGF0ZVRvRGF0ZVRpbWUgPSAoXG4gICAgZGF0ZVN0cjogc3RyaW5nLFxuICAgIGNvbmZpZz86IHtcbiAgICAgIC8qKlxuICAgICAgICogVXNlIHRoZSB5eXl5LW1tLWRkIGhoOm1tOnNzIGZvcm1hdFxuICAgICAgICovXG4gICAgICBvbWl0VD86IGJvb2xlYW47XG4gICAgICAvKipUaW1lIHRvIGFwcGVuZCB0byBkYXRlLiBAZXhhbXBsZSBgMTI6MDA6MDBaYCAqL1xuICAgICAgdGltZT86IHN0cmluZztcbiAgICB9LFxuICApID0+IHtcbiAgICByZXR1cm4gIWRhdGVTdHJcbiAgICAgID8gbnVsbFxuICAgICAgOiBkYXRlU3RyWzEwXSA9PSAnVCdcbiAgICAgICAgPyBkYXRlU3RyXG4gICAgICAgIDogZGF0ZVN0ciArXG4gICAgICAgICAgKCEhY29uZmlnPy5vbWl0VFxuICAgICAgICAgICAgPyBgICR7Y29uZmlnPy50aW1lIHx8ICcwMDowMDowMCd9YFxuICAgICAgICAgICAgOiBgVCR7Y29uZmlnPy50aW1lIHx8ICcwMDowMDowMFonfWApO1xuICB9O1xuXG4gIC8qKlxuICAgKiBTZXQgYW4gT2JqZWN0J3MgZmllbGQgaWYgdGhlIG9iamVjdCBleGlzdHMgb3IgZG9uJ3QgaWYgdGhlIG9iamVjdCBkb2Vzbid0XG4gICAqIEBwYXJhbSBvYmogT2JqZWN0IGhvbGRpbmcgdGhlIGZpZWxkXG4gICAqIEBwYXJhbSBmaWVsZE5hbWUgTmFtZSBvZiB0aGUgZmllbGQgdG8gc2V0XG4gICAqIEBwYXJhbSB2YWwgVmFsdWUgdG8gc2V0IHRoZSBmaWVsZCB3aXRoXG4gICAqIEByZXR1cm5zIFJldHVybnMgdGhlIG9iamVjdCBob2xkaW5nIHRoZSBkYXRhXG4gICAqL1xuICBzZXR0ZXJXaXRoTnVsbDxUPihvYmo6IFQsIGt2cHM6IFBhcnRpYWw8VD4pIHtcbiAgICBpZiAoIW9iaikgcmV0dXJuIG51bGw7XG4gICAgZm9yIChjb25zdCBrZXkgaW4ga3Zwcykge1xuICAgICAgb2JqW2tleV0gPSBrdnBzW2tleV07XG4gICAgfVxuICAgIHJldHVybiBvYmo7XG4gIH1cblxuICAvKipcbiAgICogKFNldCBhbiBPYmplY3QncyBmaWVsZCBpZiB0aGUgb2JqZWN0IGV4aXN0cyBvciBkb24ndCBpZiB0aGUgb2JqZWN0IGRvZXNuJ3QpIGZvciBtdWx0aXBsZSBlbnRyaWVzXG4gICAqIEBwYXJhbSBpdGVtcyBBcnJheSBvZiBvYmplY3RzIGFuZCB0aGVpciBtb2RpZmljYXRpb25zXG4gICAqL1xuICBzZXR0ZXJXaXRoTnVsbEFycmF5PFQ+KGl0ZW1zOiB7IG9iajogVDsga3ZwczogUGFydGlhbDxUPiB9W10pIHtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHtcbiAgICAgIHRoaXMuc2V0dGVyV2l0aE51bGwoaXRlbS5vYmosIGl0ZW0ua3Zwcyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgdGhlIGRlbGV0aW9uIG9mIHJvd3MgZnJvbSBhIEZvcm1BcnJheVxuICAgKiBAcGFyYW0gaW5kZXggSW5kZXggb2YgdGhlIHJvdyB0byBkZWxldGVcbiAgICogQHBhcmFtIGZhIFRoZSBGb3JtQXJyYXkgdGhhdCBob2xkcyB0aGUgcm93c1xuICAgKiBAcGFyYW0gZGVsZXRlU2VydmljZSBUaGUgZGVsZXRpb24gc2VydmljZSB0byBiZSBjYWxsZWQgKEl0IHNob3VsZCBiZSBhbiBhbm9ueW1vdXMgZnVuY3Rpb24pXG4gICAqIEBwYXJhbSBhZGRSb3dGdW5jIFRoZSBmdW5jdGlvbiAoYW5vbnltb3VzKSB0aGF0IGFkZHMgYSBuZXcgcm93IHRvIHRoZSBGb3JtQXJyYXlcbiAgICogQHBhcmFtIGVtaXRFdmVudCBTcGVjaWZ5IHdoZXRoZXIgdG8gZW1pdCBhbiBldmVudCB3aGVuIG1hbmlwdWxhdGluZyB0aGUgRm9ybUFycmF5XG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBoYW5kbGVGb3JtUm93RGVsZXRlID0gKFxuICAgIGluZGV4OiBudW1iZXIsXG4gICAgZmE6IFVudHlwZWRGb3JtQXJyYXksXG4gICAgZGVsZXRlU2VydmljZTogKC4uLmFyZ3MpID0+IFByb21pc2U8YW55PiB8IE9ic2VydmFibGU8YW55PixcbiAgICBhZGRSb3dGdW5jOiAoLi4uYXJncykgPT4gYW55LFxuICAgIGV4dHJhQ29uZmlnPzoge1xuICAgICAgZG9udEVtaXRFdmVudD86IGJvb2xlYW47XG4gICAgICBvbkRlbGV0ZT86IChyZXMpID0+IGFueTtcbiAgICB9LFxuICApID0+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8YW55PigocmVzb2x2ZSkgPT4ge1xuICAgICAgY29uc3QgaWQgPSBjbG9uZURlZXAoZmEuY29udHJvbHNbaW5kZXhdPy52YWx1ZT8uaWQpO1xuICAgICAgLy8gZGVidWdnZXI7XG4gICAgICBpZiAoZmEuY29udHJvbHMubGVuZ3RoID09IDEgJiYgaWQpIHtcbiAgICAgICAgZmEucmVtb3ZlQXQoaW5kZXgsIHsgZW1pdEV2ZW50OiAhZXh0cmFDb25maWc/LmRvbnRFbWl0RXZlbnQgfSk7XG4gICAgICAgIGFkZFJvd0Z1bmMoKTtcbiAgICAgIH0gZWxzZSBpZiAoZmEuY29udHJvbHMubGVuZ3RoID4gMSlcbiAgICAgICAgZmEucmVtb3ZlQXQoaW5kZXgsIHsgZW1pdEV2ZW50OiAhZXh0cmFDb25maWc/LmRvbnRFbWl0RXZlbnQgfSk7XG4gICAgICBlbHNlIGlmIChmYS5jb250cm9scy5sZW5ndGggPT0gMSkgZmEuY29udHJvbHNbMF0ucmVzZXQoKTtcblxuICAgICAgaWYgKGlkICYmIGRlbGV0ZVNlcnZpY2UpIHtcbiAgICAgICAgY29uc3QgcmVxID0gZGVsZXRlU2VydmljZShpZCk7XG4gICAgICAgIGlmIChyZXFbJ3RvUHJvbWlzZSddKSB7XG4gICAgICAgICAgcmVzb2x2ZShsYXN0VmFsdWVGcm9tKHJlcSBhcyBPYnNlcnZhYmxlPGFueT4pKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXNvbHZlKHJlcSBhcyBhbnkpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKG51bGwpO1xuICAgICAgfVxuICAgIH0pLnRoZW4oKHIpID0+IHtcbiAgICAgIGV4dHJhQ29uZmlnPy5vbkRlbGV0ZShyKTtcbiAgICAgIHJldHVybiByO1xuICAgIH0pO1xuICB9O1xuXG4gIC8qKlxuICAgKiBIYW5kbGVzIHRoZSBkZWxldGlvbiBvZiByb3dzIGZyb20gYW4gYXJyYXlcbiAgICogQHBhcmFtIGluZGV4IEluZGV4IG9mIHRoZSByb3cgdG8gZGVsZXRlXG4gICAqIEBwYXJhbSBhcnIgVGhlIGFycmF5IHRoYXQgaG9sZHMgdGhlIHJvd3NcbiAgICogQHBhcmFtIGRlbGV0ZVNlcnZpY2UgVGhlIGRlbGV0aW9uIHNlcnZpY2UgdG8gYmUgY2FsbGVkIChJdCBzaG91bGQgYmUgYW4gYW5vbnltb3VzIGZ1bmN0aW9uKVxuICAgKiBAcGFyYW0gYWRkUm93RnVuYyBUaGUgZnVuY3Rpb24gKGFub255bW91cykgdGhhdCBhZGRzIGEgbmV3IHJvdyB0byB0aGUgYXJyYXlcbiAgICogQHBhcmFtIGNiIFRoZSBmdW5jdGlvbiB0byBjYWxsYmFjayB3aXRoIHRoZSByZXNwb25zZSBvZiB0aGUgZGVsZXRpb24gc2VydmljZSBhcyB0aGUgaW5wdXQgcGFyYW1ldGVyXG4gICAqL1xuICBoYW5kbGVSb3dEZWxldGUgPSBhc3luYyA8VD4oXG4gICAgaW5kZXg6IG51bWJlcixcbiAgICBhcnI6IGFueVtdLFxuICAgIGRlbGV0ZVNlcnZpY2U6ICguLi5hcmdzKSA9PiBQcm9taXNlPFQ+IHwgT2JzZXJ2YWJsZTxUPixcbiAgICBhZGRSb3dGdW5jOiAoLi4uYXJncykgPT4gYW55LFxuICAgIGNiPzogKGFueSkgPT4gYW55LFxuICApID0+IHtcbiAgICBjb25zdCBpZCA9IGFycltpbmRleF0/LmlkO1xuICAgIC8vIGRlYnVnZ2VyO1xuXG4gICAgaWYgKGlkICYmIGRlbGV0ZVNlcnZpY2UpIHtcbiAgICAgIGNvbnN0IHJlcSA9IGRlbGV0ZVNlcnZpY2UoaWQpO1xuICAgICAgaWYgKHR5cGVvZiByZXFbJ3RvUHJvbWlzZSddID09ICdmdW5jdGlvbicpXG4gICAgICAgIGNiID8gY2IoYXdhaXQgcmVxWyd0b1Byb21pc2UnXSgpKSA6IHJlcVsndG9Qcm9taXNlJ10oKTtcbiAgICAgIGVsc2UgY2IgPyBjYihhd2FpdCByZXEpIDogbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoYXJyLmxlbmd0aCA9PSAxKSB7XG4gICAgICBhcnIuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgIGFkZFJvd0Z1bmMoKTtcbiAgICB9IGVsc2UgaWYgKGFyci5sZW5ndGggPiAxKSBhcnIuc3BsaWNlKGluZGV4LCAxKTtcbiAgfTtcbiAgLyoqXG4gICAqIFRvIGhhbmRsZSB0aGUgcGF0Y2hpbmcgb2YgYSBGb3JtQXJyYXlcbiAgICogQHBhcmFtIGFyciBUaGUgYXJyYXkgdGhhdCBjb250YWlucyB0aGUgZGF0YVxuICAgKiBAcGFyYW0gYWRkRnVuYyBUaGUgZnVuY3Rpb24gdGhhdCBwZXJmb3JtcyBhZGRpdGlvbiBvZiBzaW5nbGUgZW50cmllc1xuICAgKiBAcGFyYW0gZm9ybUFyciBUaGUgRm9ybUFycmF5IHRoYXQgd2lsbCBob2xkIHRoZSBhcnJheSdzIGRhdGFcbiAgICovXG4gIGluaXRQYXRjaEZvcm1BcnJheSA9IDxUPihcbiAgICBhcnI6IFRbXSxcbiAgICBhZGRGdW5jOiAoaTogbnVtYmVyLCBkYXRhPzogVCwgZm9ybUFycj86IEZvcm1BcnJheSkgPT4gdm9pZCxcbiAgICBmb3JtQXJyOiBGb3JtQXJyYXksXG4gICkgPT4ge1xuICAgIC8vIGRlYnVnZ2VyXG4gICAgaWYgKGFycj8ubGVuZ3RoKSB7XG4gICAgICBpZiAoZm9ybUFyci5sZW5ndGgpIGZvcm1BcnIuY2xlYXIoKTtcbiAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBhcnIpIHtcbiAgICAgICAgYWRkRnVuYyhmb3JtQXJyLmxlbmd0aCwgaXRlbSwgZm9ybUFycik7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghZm9ybUFyci5sZW5ndGgpIGFkZEZ1bmMoZm9ybUFyci5sZW5ndGgsIG51bGwsIGZvcm1BcnIpO1xuICAgIH1cbiAgfTtcbiAgcHJpdmF0ZSBpc1Byb21pc2UgPSAoZnVuYykgPT4ge1xuICAgIHJldHVybiB0eXBlb2YgZnVuYyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIGZ1bmMudGhlbiA9PT0gJ2Z1bmN0aW9uJztcbiAgfTtcbiAgaXNBc3luYyA9IChmdW5jKSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgIGZ1bmMuY29uc3RydWN0b3IubmFtZSA9PT0gJ0FzeW5jRnVuY3Rpb24nIHx8XG4gICAgICAodHlwZW9mIGZ1bmMgPT09ICdmdW5jdGlvbicgJiYgdGhpcy5pc1Byb21pc2UoZnVuYygpKSlcbiAgICApO1xuICB9O1xuXG4gIGlzT2JzZXJ2YWJsZSA9IDxUPihmdW5jKSA9PiB7XG4gICAgLy8gcmV0dXJuIHR5cGVvZiBmdW5jID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgZnVuYy5zdWJzY3JpYmUgPT09ICdmdW5jdGlvbic7XG4gICAgLy8gcmV0dXJuIHR5cGVvZiBmdW5jID09PSAnb2JqZWN0JyAmJiBmdW5jIGluc3RhbmNlb2YgT2JzZXJ2YWJsZTtcbiAgICAvLyByZXR1cm4gdHlwZW9mIGZ1bmMgPT09ICdvYmplY3QnICYmIGZ1bmMgaW5zdGFuY2VvZiBPYnNlcnZhYmxlPFQ+O1xuICAgIHJldHVybiB0eXBlb2YgZnVuYyA9PT0gJ29iamVjdCcgJiYgaXNPYnNlcnZhYmxlKGZ1bmMpO1xuICAgIHJldHVybiB0eXBlb2YgZnVuYyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIGZ1bmMudG9Qcm9taXNlID09PSAnZnVuY3Rpb24nO1xuICB9O1xuICBwcm9taXNpZnlWYWwgPSA8VD4odmFsOiBUIHwgUHJvbWlzZTxUPiB8IE9ic2VydmFibGU8VD4pID0+IHtcbiAgICBpZiAodGhpcy5pc0FzeW5jKHZhbCkpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodmFsIGFzIFByb21pc2U8VD4pO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pc09ic2VydmFibGUodmFsKSkge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShsYXN0VmFsdWVGcm9tKHZhbCBhcyBPYnNlcnZhYmxlPFQ+KSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodmFsIGFzIFQpO1xuICAgIH1cbiAgfTtcblxuICAvKipcbiAgICogQHBhcmFtIGFyciBBcnJheSBvZiBvYnNlcnZhYmxlcyB0byBmZXRjaFxuICAgKiBAcmV0dXJucyBBbiBhcnJheSBvZiB0aGUgcmVzcG9uc2VzIG1lcmdlZCB0b2dldGhlci4gSXQgZW1pdHMgdGhlIG1lcmdlZCByZXNwb25zZXMgYXMgdGhleSBhcmUgZmV0Y2hlZCBhbmQgY2xvc2VzIG9uY2UgYWxsbCB0aGUgcmVzcG9uc2VzIGhhdmUgYmVlbiBmZXRjaGVkXG4gICAqL1xuICBtZXJnZUFyck9ic2VydmFibGVzID0gPFQ+KGFycjogeyAkZnVuYzogT2JzZXJ2YWJsZTxUW10+IH1bXSkgPT4ge1xuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZTxUW10+KChzdWIpID0+IHtcbiAgICAgIGNvbnN0IHJldDogVFtdID0gW107XG4gICAgICBsZXQgcmVzcG9uc2VDb3VudCA9IDA7XG4gICAgICBtZXJnZShcbiAgICAgICAgLi4uYXJyLm1hcChcbiAgICAgICAgICAoeCkgPT5cbiAgICAgICAgICAgIHguJGZ1bmM/LnBpcGUoXG4gICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGUpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICAgICAgICAgIHJldHVybiBvZihbXSk7XG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICB0YXAoKHIpID0+IHtcbiAgICAgICAgICAgICAgICByZXNwb25zZUNvdW50Kys7XG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgKSxcbiAgICAgICkuc3Vic2NyaWJlKChyKSA9PiB7XG4gICAgICAgIHJldC5wdXNoKC4uLnIpO1xuICAgICAgICBzdWIubmV4dChyZXQpO1xuICAgICAgICBpZiAocmVzcG9uc2VDb3VudCA9PSBhcnIuZmlsdGVyKCh4KSA9PiB4LiRmdW5jKS5sZW5ndGgpIHtcbiAgICAgICAgICAvLyBkZWJ1Z2dlclxuICAgICAgICAgIHN1Yi5jb21wbGV0ZSgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfTtcbiAgcmVtb3ZlRHVwbGljYXRlPFQ+KGxpc3Q6IFRbXSwga2V5RmllbGQgPSAnY29kZScpIHtcbiAgICBpZiAoIWxpc3QpIHJldHVybiBudWxsO1xuICAgIGxpc3QgPSBsaXN0LmZpbHRlcigoeCkgPT4geCk7XG4gICAgY29uc3QgcmV0OiBUW10gPSBbXSxcbiAgICAgIGR1cGxpY2F0ZU1hcDogeyBbeDogc3RyaW5nXTogYW55IH0gPSB7fTtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgbGlzdCkge1xuICAgICAgaWYgKGR1cGxpY2F0ZU1hcFtpdGVtW2tleUZpZWxkXV0pIGNvbnRpbnVlO1xuICAgICAgcmV0LnB1c2goaXRlbSk7XG4gICAgICBkdXBsaWNhdGVNYXBbaXRlbVtrZXlGaWVsZF1dID0gaXRlbTtcbiAgICB9XG4gICAgcmV0dXJuIHJldDtcbiAgfVxuICBnZXQgZ2VuUmFuZG9tSUQoKSB7XG4gICAgcmV0dXJuIE1hdGgucm91bmQoTWF0aC5yYW5kb20oKSAqIDEwMDAwMDAwMDAwMDAwMDApO1xuICB9XG4gIHN0b3JlUGF5bG9hZCA9IHRoaXMubG9nZ2VyU2VydmljZS5hZGRMb2c7XG4gIG9iaklzRW1wdHkgPSAob2JqLCBleGNsdXNpb25GaWVsZHM/OiBzdHJpbmdbXSkgPT4ge1xuICAgIGlmICghb2JqKSByZXR1cm4gdHJ1ZTtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBvYmopIHtcbiAgICAgIGlmIChleGNsdXNpb25GaWVsZHM/LmluY2x1ZGVzKGtleSkpIGNvbnRpbnVlO1xuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHtcbiAgICAgICAgaWYgKG9ialtrZXldKSByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9O1xuICBkYXRhR2VuID0gPFQgPSBhbnk+KGtleXM6IHN0cmluZ1tdLCBsZW5ndGggPSAxMCkgPT4ge1xuICAgIGNvbnN0IHJldDogYW55W10gPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgdDogYW55ID0ge307XG4gICAgICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XG4gICAgICAgIHRba2V5XSA9IHRoaXMudGV4dEdlbigpO1xuICAgICAgfVxuICAgICAgcmV0LnB1c2godCk7XG4gICAgfVxuICAgIHJldHVybiByZXQgYXMgVFtdO1xuICB9O1xuICB0ZXh0R2VuID0gKCkgPT4gJ3JhbmRvbScgKyBNYXRoLnJvdW5kKE1hdGgucmFuZG9tKCkgKiAxMDAwKTtcbiAgdHJhY2tCeUNvZGUoaW5kZXg6IG51bWJlciwgaXRlbTogYW55KSB7XG4gICAgcmV0dXJuIGl0ZW0/LmNvZGU7XG4gIH1cbiAgdHJhY2tCeUlEKGluZGV4OiBudW1iZXIsIGl0ZW06IGFueSkge1xuICAgIHJldHVybiBpdGVtPy5pZDtcbiAgfVxuICBkaWFsb2dPcGVuZXIgPSAoXG4gICAgY29tcDogYW55LFxuICAgIGNvbmZpZzogTWF0RGlhbG9nQ29uZmlnLFxuICAgIHZhbHVlQ0I6IChyKSA9PiBhbnksXG4gICAgbm9WYWx1ZUNCPzogYW55LFxuICApID0+XG4gICAgdGhpcy5kaWFsb2dPcGVuZXJSZWYoY29tcCwgY29uZmlnKVxuICAgICAgLmFmdGVyQ2xvc2VkKClcbiAgICAgIC5zdWJzY3JpYmUoKHIpID0+IHtcbiAgICAgICAgaWYgKHIgIT0gbnVsbCAmJiByICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHZhbHVlQ0Iocik7XG4gICAgICAgIH0gZWxzZSBpZiAobm9WYWx1ZUNCKSB7XG4gICAgICAgICAgbm9WYWx1ZUNCKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICBkaWFsb2dPcGVuZXJSZWYgPSAoY29tcDogYW55LCBjb25maWc6IE1hdERpYWxvZ0NvbmZpZykgPT5cbiAgICB0aGlzLmRpYWxvZy5vcGVuKGNvbXAsIGNvbmZpZyk7XG4gIGZpbmRMYWJlbEJ5SXRlbSA9IChcbiAgICBpdGVtLFxuICAgIGFycjogYW55W10sXG4gICAgbGFiZWxGaWVsZD86IHN0cmluZyxcbiAgICBrZXlGaWVsZDogc3RyaW5nID0gJ2NvZGUnLFxuICApID0+IHtcbiAgICBpZiAoIWl0ZW0pIHJldHVybiBudWxsO1xuICAgIGNvbnN0IG9iaiA9IGFycj8uZmluZCgoeCkgPT4geFtrZXlGaWVsZF0gPT0gaXRlbSk7XG4gICAgaWYgKCFvYmopIHJldHVybiBpdGVtO1xuICAgIGVsc2VcbiAgICAgIHJldHVybiBgJHtpdGVtfSAtICR7XG4gICAgICAgIG9ialtsYWJlbEZpZWxkIHx8ICd0aXRsZSddIHx8IG9ialtsYWJlbEZpZWxkIHx8ICdkZXNjcmlwdGlvbiddXG4gICAgICB9YDtcbiAgfTtcblxuICBmb3JtRmllbGRzRnJvbUFyciA9IHRoaXMuaW5wdXRTZXJ2aWNlLmZvcm1GaWVsZHNGcm9tRkNJbnB1dHNBcnI7XG4gIG9ialRvRm9ybUNvbnRyb2xzID0gdGhpcy5pbnB1dFNlcnZpY2UuZm9ybUZpZWxkc0Zyb21PYmo7XG4gIGZvcm1TY2hlbWFUb0Zvcm1Db250cm9scyA9IHRoaXMuaW5wdXRTZXJ2aWNlLmZvcm1TY2hlbWFUb0Zvcm1Db250cm9scztcblxuICBiaW5kRm9ybUNvbnRyb2xUb0lucHV0cyA9IHRoaXMuaW5wdXRTZXJ2aWNlLmJpbmRGb3JtQ29udHJvbFRvSW5wdXRzO1xuXG4gIGdvID0gKHZhbHVlOiBzdHJpbmcsIGV4dHJhPzogTmF2aWdhdGlvbkV4dHJhcykgPT4ge1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFt2YWx1ZV0sIGV4dHJhKTtcbiAgfTtcbiAgLyoqXG4gICAqIFJvdXRlIHRvIGNvbXBvbmVudFxuICAgKiBAcGFyYW0gcm91dGUgUm91dGUgb2YgcGF0aCB0byBjb21wb25lbnRcbiAgICogQHBhcmFtIGV4dHJhXG4gICAqL1xuICBnb1IgPSAocm91dGU6IHN0cmluZywgZXh0cmE/OiBOYXZpZ2F0aW9uRXh0cmFzKSA9PiB7XG4gICAgaWYgKCEoPFNES0Vudmlyb25tZW50PnRoaXMuZW52aXJvbm1lbnQpLmFjdGl2YXRlZFJvdXRlKSBkZWJ1Z2dlcjtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbcm91dGVdLCB7XG4gICAgICByZWxhdGl2ZVRvOiAoPFNES0Vudmlyb25tZW50PnRoaXMuZW52aXJvbm1lbnQpLmFjdGl2YXRlZFJvdXRlLFxuICAgICAgLi4uZXh0cmEsXG4gICAgfSk7XG4gICAgLy8gZGVidWdnZXI7XG4gIH07XG4gIG1vbmV5UGFyc2VyID0gKGFtb3VudDogc3RyaW5nIHwgbnVtYmVyLCBjdXJyZW5jeSA9ICcgJykgPT4ge1xuICAgIHJldHVybiB0aGlzLmN1cnJlbmN5UGlwZS50cmFuc2Zvcm0oYW1vdW50LCBjdXJyZW5jeSB8fCAnICcpO1xuICB9O1xuICBleHRyYWN0VXBsb2FkKGV2ZW50OiBhbnkpIHtcbiAgICByZXR1cm4gKGV2ZW50LnRhcmdldC5maWxlcyBhcyBGaWxlW10pIHx8IFtdO1xuICB9XG5cbiAgc2Vjb25kc1RvSG91ck1pblNlYyA9IChzZWNvbmRzOiBudW1iZXIpID0+IHtcbiAgICBpZiAoIXNlY29uZHMpIHJldHVybiB7IHNlY3M6IG51bGwsIGhvdXJzOiBudWxsLCBtaW5zOiBudWxsIH07XG4gICAgY29uc3QgaG91cnMgPSBNYXRoLmZsb29yKHNlY29uZHMgLyAzNjAwKSB8fCAwLFxuICAgICAgc2Vjb25kc0V4SG91cnMgPSBzZWNvbmRzICUgMzYwMCB8fCAwLFxuICAgICAgbWlucyA9IE1hdGguZmxvb3Ioc2Vjb25kc0V4SG91cnMgLyA2MCkgfHwgMCxcbiAgICAgIHNlY3MgPSBzZWNvbmRzRXhIb3VycyAlIDYwO1xuICAgIHJldHVybiB7IGhvdXJzLCBtaW5zLCBzZWNzIH07XG4gIH07XG4gIG1pbnV0ZXNUb0RheUhvdXJNaW4gPSAobWludXRlczogbnVtYmVyKSA9PiB7XG4gICAgaWYgKCFtaW51dGVzKSByZXR1cm4geyBkYXlzOiBudWxsLCBob3VyczogbnVsbCwgbWluczogbnVsbCB9O1xuICAgIGNvbnN0IGRheXMgPSBNYXRoLmZsb29yKG1pbnV0ZXMgLyAxNDQwKSB8fCAwLFxuICAgICAgbWluaXV0ZXNFeERheXMgPSBtaW51dGVzICUgMTQ0MCB8fCAwLFxuICAgICAgaG91cnMgPSBNYXRoLmZsb29yKG1pbml1dGVzRXhEYXlzIC8gNjApIHx8IDAsXG4gICAgICBtaW5zID0gbWluaXV0ZXNFeERheXMgJSA2MCB8fCAwO1xuICAgIHJldHVybiB7IGRheXMsIGhvdXJzLCBtaW5zIH07XG4gIH07XG4gIG1pbnV0ZXNUb0RheUhvdXJNaW5TdHIgPSAobWludXRlczogbnVtYmVyKSA9PiB7XG4gICAgaWYgKCFtaW51dGVzKSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCByZXQgPSB0aGlzLm1pbnV0ZXNUb0RheUhvdXJNaW4obWludXRlcyk7XG4gICAgcmV0dXJuIGAke3JldC5kYXlzfSAke3JldC5ob3Vyc306JHtyZXQubWluc31gLnRyaW0oKTtcbiAgfTtcbiAgbWludXRlc1RvRGF5SG91ck1pblN0cjIgPSAobWludXRlczogbnVtYmVyKSA9PiB7XG4gICAgaWYgKCFtaW51dGVzKSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCByZXQgPSB0aGlzLm1pbnV0ZXNUb0RheUhvdXJNaW4obWludXRlcyk7XG4gICAgcmV0dXJuIGAke3JldC5kYXlzfWRheXMgJHtyZXQuaG91cnN9aHJzICR7cmV0Lm1pbnN9bWluc2AudHJpbSgpO1xuICB9O1xuICBkYXlIb3VyTWluVG9Ib3VyTWludXRlcyA9IChkeXM6IG51bWJlciwgaHJzOiBudW1iZXIsIG1pbnM6IG51bWJlcikgPT4ge1xuICAgIGlmICghZHlzICYmICFocnMgJiYgIW1pbnMpIHJldHVybiAnJztcbiAgICBjb25zdCBkeXNUb0hycyA9IChkeXMgfHwgMCkgKiAyNDtcbiAgICBocnMgPSAoK2hycyB8fCAwKSArIGR5c1RvSHJzO1xuICAgIHJldHVybiAoaHJzIHx8ICcwMCcpICsgJzonICsgKG1pbnMgfHwgJzAwJyk7XG4gIH07XG4gIGRpc2FibGVPckVuYWJsZUlucHV0cyA9IChjb250cm9sczogQWJzdHJhY3RDb250cm9sW10sIGRpc2FibGU6IGJvb2xlYW4pID0+IHtcbiAgICBpZiAoZGlzYWJsZSkgdGhpcy5kaXNhYmxlSW5wdXRzKGNvbnRyb2xzKTtcbiAgICBlbHNlIHRoaXMuZW5hYmxlSW5wdXRzKGNvbnRyb2xzKTtcbiAgfTtcbiAgZGlzYWJsZUlucHV0cyA9IChjb250cm9sczogQWJzdHJhY3RDb250cm9sW10pID0+IHtcbiAgICBmb3IgKGNvbnN0IGNvbnRyb2wgb2YgY29udHJvbHMpIHtcbiAgICAgIGNvbnRyb2w/LmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgIH1cbiAgfTtcbiAgZW5hYmxlSW5wdXRzID0gKGNvbnRyb2xzOiBBYnN0cmFjdENvbnRyb2xbXSkgPT4ge1xuICAgIGZvciAoY29uc3QgY29udHJvbCBvZiBjb250cm9scykge1xuICAgICAgY29udHJvbD8uZW5hYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICB9XG4gIH07XG4gIGRheUhvdXJNaW5Ub01pbnV0ZXMgPSAoZHlzOiBudW1iZXIsIGhyczogbnVtYmVyLCBtaW5zOiBudW1iZXIpID0+IHtcbiAgICBpZiAoIWR5cyAmJiAhaHJzICYmICFtaW5zKSByZXR1cm4gMDtcbiAgICBjb25zdCBkeXNUb0hycyA9IChkeXMgfHwgMCkgKiAyNDtcbiAgICBocnMgPSAoK2hycyB8fCAwKSArIGR5c1RvSHJzO1xuICAgIHJldHVybiAoaHJzIHx8IDApICogNjAgKyBtaW5zO1xuICB9O1xuICBob3VyTWluVG9NaW51dGVzID0gKGhyczogbnVtYmVyLCBtaW5zOiBudW1iZXIpID0+IHtcbiAgICBpZiAoIWhycyAmJiAhbWlucykgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIChocnMgfHwgMCkgKiA2MCArIG1pbnM7XG4gIH07XG4gIGhvdXJNaW5Ub01pbnV0ZXMyID0gKGhyc01pbnM6IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IFtocnMsIG1pbnNdID0gaHJzTWlucz8uc3BsaXQoJzonKSB8fCBbMCwgMF07XG4gICAgcmV0dXJuIHRoaXMuaG91ck1pblRvTWludXRlcygraHJzLCArbWlucyk7XG4gIH07XG4gIG5vdGlmeShcbiAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgY2xzOiAwIHwgMSB8IDIgfCAzID0gMSxcbiAgICBkdXJhdGlvbiA9IDUwMDAsXG4gICAgdGl0bGUgPSAnQ2xvc2UnLFxuICApIHtcbiAgICBpZiAoY2xzID09IDApIHJldHVybiB0aGlzLmluZm9EaWFsb2dTZXJ2aWNlLmluZm8obWVzc2FnZSwgY2xzKTtcbiAgICBpZiAodHlwZW9mIG1lc3NhZ2UgIT0gJ3N0cmluZycpIGNvbnNvbGUuZXJyb3IobWVzc2FnZSk7XG4gICAgbWVzc2FnZSA9IHR5cGVvZiBtZXNzYWdlID09ICdzdHJpbmcnID8gbWVzc2FnZSA6ICcnO1xuICAgIGNvbnN0IHJlZiA9IHRoaXMuc25hY2tCYXIub3BlbihtZXNzYWdlLCB0aXRsZSwge1xuICAgICAgZHVyYXRpb24sXG4gICAgICBob3Jpem9udGFsUG9zaXRpb246ICdjZW50ZXInLFxuICAgICAgdmVydGljYWxQb3NpdGlvbjogJ2JvdHRvbScsXG4gICAgICBwYW5lbENsYXNzOlxuICAgICAgICBjbHMgPT0gMVxuICAgICAgICAgID8gJ2JnLXN1Y2Nlc3MnXG4gICAgICAgICAgOiBjbHMgPT0gMlxuICAgICAgICAgICAgPyAnYnRuLWluZm8nXG4gICAgICAgICAgICA6IGNscyA9PSAzXG4gICAgICAgICAgICAgID8gJ2J0bi13YXJuaW5nJ1xuICAgICAgICAgICAgICA6ICdiZy1kYW5nZXInLFxuICAgIH0pO1xuICAgIHJldHVybiBmaXJzdFZhbHVlRnJvbShcbiAgICAgIHJlZi5hZnRlckRpc21pc3NlZCgpLnBpcGUobWFwKChyKSA9PiByLmRpc21pc3NlZEJ5QWN0aW9uKSksXG4gICAgKTtcbiAgfVxuXG4gIHNjcm9sbFRvVG9wID0gKCkgPT4gd2luZG93LnNjcm9sbFRvKDAsIDApO1xuXG4gIC8qKlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgY3VycmVudCBkYXRlIHRpbWUgbG9jYWwgdGhhdCBjYW4gYmUgdXNlZCB0byBzZXQgdGhlIGRhdGV0aW1lLWxvY2FsIGlucHV0XG4gICAqL1xuICBnZXRMb2NhbERhdGVUaW1lTm93ID0gKCkgPT4ge1xuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSgpO1xuICAgIGNvbnN0IGRhdGVDaHVua3MgPSBkYXRlLnRvTG9jYWxlRGF0ZVN0cmluZygpLnNwbGl0KCcvJyk7XG4gICAgcmV0dXJuIChcbiAgICAgIGAke2RhdGVDaHVua3NbMl19LSR7ZGF0ZUNodW5rc1sxXX0tJHtkYXRlQ2h1bmtzWzBdfWAgK1xuICAgICAgJ1QnICtcbiAgICAgIGRhdGUudG9Mb2NhbGVUaW1lU3RyaW5nKClcbiAgICApO1xuICB9O1xuICAvKiogQHJldHVybnMgVGhlIGN1cnJlbnQgZGF0ZSBsb2NhbCB0aGF0IGNhbiBiZSB1c2VkIHRvIHNldCB0aGUgZGF0ZSBpbnB1dCAqL1xuICBsb2NhbERhdGVOb3cgPSAoKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKS5zcGxpdCgnVCcpWzBdO1xuICB9O1xuICBkYXRlRm9ybWF0ID0gKGRhdGU6IGFueSwgZm9ybWF0ID0gMSkgPT4ge1xuICAgIGlmICghZGF0ZSkgcmV0dXJuIG51bGw7XG4gICAgY29uc3QgZCA9IG5ldyBEYXRlKGRhdGUpO1xuICAgIGlmIChmb3JtYXQgPT0gMSkge1xuICAgICAgcmV0dXJuIGQudG9EYXRlU3RyaW5nKCk7XG4gICAgfSBlbHNlIGlmIChmb3JtYXQgPT0gMikge1xuICAgICAgcmV0dXJuIGQuZ2V0RGF0ZSgpICsgJyAnICsgY29uZmlnLk1vbnRoc1tkLmdldE1vbnRoKCldO1xuICAgIH0gZWxzZSBpZiAoZm9ybWF0ID09IDMpIHtcbiAgICAgIHJldHVybiB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShkYXRlLCBgRUVFIE1NTSBkZCBZWVlZLCBoaDptbSBhYWApO1xuICAgIH0gZWxzZSBpZiAoZm9ybWF0ID09IDQpIHtcbiAgICAgIHJldHVybiBjb25maWcuTW9udGhzW2QuZ2V0TW9udGgoKV0gKyAnICcgKyBkLmdldERhdGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgfTtcblxuICB0b0phdmFEYXRlU3RyaW5nID0gKGlzb0RhdGVTdHJpbmc6IHN0cmluZyA9IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSkgPT4ge1xuICAgIGlmICghaXNvRGF0ZVN0cmluZykgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIGAke2lzb0RhdGVTdHJpbmcuc2xpY2UoMCwgMTkpfWA7XG4gICAgcmV0dXJuIGAke2lzb0RhdGVTdHJpbmcuc2xpY2UoMCwgMTApfSAke2lzb0RhdGVTdHJpbmcuc2xpY2UoMTEsIDE5KX1gO1xuICB9O1xuXG4gIHRvSmF2YURhdGV0aW1lU3RyaW5nID0gKGlzb0RhdGVTdHJpbmc6IHN0cmluZykgPT4ge1xuICAgIGlmICghaXNvRGF0ZVN0cmluZykgcmV0dXJuIG51bGw7XG4gICAgY29uc3QgZGF0ZSA9IGlzb0RhdGVTdHJpbmcuaW5jbHVkZXMoJ1QnKVxuICAgICAgPyBpc29EYXRlU3RyaW5nXG4gICAgICA6IG5ldyBEYXRlKGlzb0RhdGVTdHJpbmcpLnRvSVNPU3RyaW5nKCk7XG4gICAgcmV0dXJuIGAke2RhdGUuc2xpY2UoMCwgMTApfSAke2RhdGUuc2xpY2UoMTEsIDE5KX1gO1xuICB9O1xuXG4gIHRpbWVGb3JtYXQgPSAodGltZT86IGFueSkgPT4ge1xuICAgIGNvbnN0IHRpbWVBcnI6IGFueVtdID0gdGltZS5zcGxpdCgnICcpO1xuICAgIHRpbWVBcnJbMF0gPSB0aW1lQXJyWzBdLnNwbGl0KCc6Jykuc3BsaWNlKDAsIDIpLmpvaW4oJzonKTtcbiAgICByZXR1cm4gdGltZUFyci5qb2luKCcgJyk7XG4gIH07XG4gIGZ1bGxEYXRlVGltZSA9ICh0aW1lc3RhbXA6IHN0cmluZyB8IG51bWJlcikgPT4ge1xuICAgIC8vIGRlYnVnZ2VyXG4gICAgcmV0dXJuIHRoaXMuZGF0ZUZvcm1hdCh0aW1lc3RhbXAsIDMpO1xuICB9O1xuICBkYXlzRm9ybWF0dGVyID0gKGRheXM6IG51bWJlcikgPT4ge1xuICAgIGlmICghZGF5cykge1xuICAgICAgcmV0dXJuICctJztcbiAgICB9XG4gICAgbGV0IHlyOiBudW1iZXIsXG4gICAgICBtdDogbnVtYmVyLFxuICAgICAgZHk6IG51bWJlcixcbiAgICAgIHJldDogc3RyaW5nLFxuICAgICAgX3lyID0gMzY1LFxuICAgICAgX210ID0gMzA7XG4gICAgaWYgKGRheXMgPiBfeXIpIHtcbiAgICAgIHlyID0gTWF0aC5mbG9vcihkYXlzIC8gX3lyKTtcbiAgICB9XG4gICAgaWYgKGRheXMgPiBfbXQpIHtcbiAgICAgIG10ID0gTWF0aC5mbG9vcigoZGF5cyAlIF95cikgLyBfbXQpO1xuICAgIH1cbiAgICBkeSA9IChkYXlzICUgX3lyKSAlIF9tdDtcbiAgICByZXQgPSBgJHt5ciA/IHRoaXMucGx1YXJsaXplcih5ciwgJ3lyJykgOiAnJ30gJHtcbiAgICAgIG10ID8gdGhpcy5wbHVhcmxpemVyKG10LCAnbXRoJykgOiAnJ1xuICAgIH0gJHt0aGlzLnBsdWFybGl6ZXIoZHksICdkeScpfWA7XG4gICAgcmV0dXJuIHJldDtcbiAgfTtcbiAgbW9udGhzRm9ybWF0dGVyID0gKG1vbnRoczogbnVtYmVyKSA9PiB7XG4gICAgaWYgKCFtb250aHMpIHtcbiAgICAgIHJldHVybiAnLSc7XG4gICAgfVxuICAgIGxldCB5cjogbnVtYmVyLFxuICAgICAgbXQ6IG51bWJlcixcbiAgICAgIHJldDogc3RyaW5nLFxuICAgICAgX3lyID0gMTI7XG4gICAgaWYgKG1vbnRocyA+IF95cikge1xuICAgICAgeXIgPSBNYXRoLmZsb29yKG1vbnRocyAvIF95cik7XG4gICAgfVxuICAgIG10ID0gbW9udGhzICUgX3lyO1xuICAgIHJldCA9IGAke3lyID8gdGhpcy5wbHVhcmxpemVyKHlyLCAneXInKSA6ICcnfSAke1xuICAgICAgbXQgPyB0aGlzLnBsdWFybGl6ZXIobXQsICdtdGgnKSA6ICcnXG4gICAgfWA7XG4gICAgcmV0dXJuIHJldDtcbiAgfTtcbiAgcGx1YXJsaXplciA9ICh2YWw6IG51bWJlciwgdHh0OiBzdHJpbmcsIHBsdXJhbD86IHN0cmluZykgPT4ge1xuICAgIHBsdXJhbCA9IHBsdXJhbCB8fCB0eHQgKyAncyc7XG4gICAgcmV0dXJuIHZhbCArICh2YWwgPT0gMSA/IHR4dCA6IHBsdXJhbCk7XG4gIH07XG4gIGRlY2ltYWxUb1BlcmNlbnRhZ2UgPSAoZGVjOiBudW1iZXIpID0+IHtcbiAgICByZXR1cm4gZGVjICogMTAwICsgJyUnO1xuICB9O1xuICBsb2dGb3JtID0gKGZvcm0pID0+IHtcbiAgICBjb25zb2xlLmxvZygnRk9STScsIGZvcm0sICdWQUxVRVMnLCBmb3JtLnZhbHVlIGFzIGFueSk7XG4gIH07XG5cbiAgdG9DU1YoZGF0YTogYW55W10sIGhlYWRlck5hbWVzOiBzdHJpbmdbXSwgZmlsZW5hbWU6IHN0cmluZykge1xuICAgIGNvbnN0IHJlcGxhY2VyID0gKGtleSwgdmFsdWUpID0+ICh2YWx1ZSA9PT0gbnVsbCA/ICcnIDogdmFsdWUpOyAvLyBzcGVjaWZ5IGhvdyB5b3Ugd2FudCB0byBoYW5kbGUgbnVsbCB2YWx1ZXMgaGVyZVxuXG4gICAgbGV0IGNzdiA9IGRhdGEubWFwKChyb3cpID0+XG4gICAgICBoZWFkZXJOYW1lc1xuICAgICAgICAubWFwKChmaWVsZE5hbWUpID0+IEpTT04uc3RyaW5naWZ5KHJvd1tmaWVsZE5hbWVdLCByZXBsYWNlcikpXG4gICAgICAgIC5qb2luKCcsJyksXG4gICAgKTtcbiAgICBjc3YudW5zaGlmdChoZWFkZXJOYW1lcy5qb2luKCcsJykpO1xuICAgIGxldCBjc3ZBcnJheSA9IGNzdi5qb2luKCdcXHJcXG4nKTtcblxuICAgIHZhciBibG9iID0gbmV3IEJsb2IoW2NzdkFycmF5XSwgeyB0eXBlOiAndGV4dC9jc3YnIH0pO1xuICAgIHNhdmVBcyhibG9iLCBmaWxlbmFtZSArICcuY3N2Jyk7XG4gIH1cblxuICBpc1BpY3R1cmVGb3JtYXQoZmlsZU5hbWU6IHN0cmluZykge1xuICAgIGlmICghZmlsZU5hbWUpIHJldHVybiBmYWxzZTtcbiAgICBjb25zdCBQSUNUVVJFX0ZPUk1BVFMgPSBbJy5qcGcnLCAnLmpwZWcnLCAnLnBuZycsICcuZ2lmJ107XG4gICAgcmV0dXJuIFBJQ1RVUkVfRk9STUFUUy5zb21lKChmb3JtYXQpID0+IGZpbGVOYW1lLmVuZHNXaXRoKGZvcm1hdCkpO1xuICB9XG4gIG9iamVjdFRvQXJyYXk8VD4ob2JqOiBhbnkpIHtcbiAgICBjb25zdCByZXQgPSBbXTtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBvYmopIHtcbiAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSB7XG4gICAgICAgIHJldC5wdXNoKG9ialtrZXldKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJldCBhcyBUW107XG4gIH1cbiAgZm9ybWF0RmllbGQoZmllbGQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudG9UaXRsZUNhc2UoZmllbGQ/LnRvU2VudGVuY2VDYXNlKCkpO1xuICB9XG4gIC8qKlxuICAgKiBVc2VzIGEgd2ViIHdvcmtlciB0byBwZXJmb3JtIGEgdGFza1xuICAgKiBAZXhhbXBsZSBuZXcgV29ya2VyKG5ldyBVUkwoJy4vdXBsb2FkLWNzdi53b3JrZXInLCBpbXBvcnQubWV0YS51cmwpKVxuICAgKiBAcGFyYW0gd29ya2VyIFdlYiB3b3JrZXIgb2JqZWN0XG4gICAqIEBwYXJhbSBpbnB1dERhdGEgRGF0YSBiZWluZyBwYXNzZWQgaW50byB3ZWIgd29ya2VyXG4gICAqIEByZXR1cm5zIERhdGEgZ290dGVuIGZyb20gd2ViIHdvcmtlclxuICAgKi9cbiAgdXNlV2ViV29ya2VyPFQgPSBhbnk+KFxuICAgIHdvcmtlcjogV29ya2VyLFxuICAgIGlucHV0RGF0YTogYW55LFxuICAgIGNvbmRpdGlvbnM/OiB7IHN0b3A6IChyZXMpID0+IGJvb2xlYW47IGVycm9yOiAocmVzKSA9PiBib29sZWFuIH0sXG4gICkge1xuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZTxUPigoc3ViKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBpZiAodHlwZW9mIFdvcmtlciAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICB3b3JrZXIucG9zdE1lc3NhZ2UoaW5wdXREYXRhKTtcbiAgICAgICAgICB3b3JrZXIub25tZXNzYWdlID0gKHIpID0+IHtcbiAgICAgICAgICAgIC8vIGRlYnVnZ2VyXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhlKTtcbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSByLmRhdGE7XG4gICAgICAgICAgICBpZiAoY29uZGl0aW9ucykge1xuICAgICAgICAgICAgICBpZiAoY29uZGl0aW9ucy5lcnJvcihkYXRhKSkge1xuICAgICAgICAgICAgICAgIHN1Yi5lcnJvcihkYXRhKTtcbiAgICAgICAgICAgICAgICBzdWIuY29tcGxldGUoKTtcbiAgICAgICAgICAgICAgICB3b3JrZXIudGVybWluYXRlKCk7XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoY29uZGl0aW9ucy5zdG9wKGRhdGEpKSB7XG4gICAgICAgICAgICAgICAgc3ViLm5leHQoZGF0YSk7XG4gICAgICAgICAgICAgICAgc3ViLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICAgICAgd29ya2VyLnRlcm1pbmF0ZSgpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHN1Yi5uZXh0KGRhdGEpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBzdWIubmV4dChkYXRhIGFzIGFueSk7XG4gICAgICAgICAgICAgIHN1Yi5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICB3b3JrZXIudGVybWluYXRlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aHJvdyAnbm9Xb3JrZXInO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGUpO1xuICAgICAgICBzdWIuZXJyb3IoZSk7XG4gICAgICAgIHN1Yi5jb21wbGV0ZSgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIGFzeW5jIGFycmF5VG9DU1ZXb3JrZXIoXG4gICAgYXJyYXk6IGFueVtdLFxuICAgIGZpbGVuYW1lOiBzdHJpbmcsXG4gICAgY29sdW1ucz86IHN0cmluZ1tdLFxuICAgIHNob3dIZWFkZXIgPSB0cnVlLFxuICApIHtcbiAgICBkZWJ1Z2dlcjtcblxuICAgIHRoaXMudXNlV2ViV29ya2VyKFxuICAgICAgbmV3IFdvcmtlcihuZXcgVVJMKGAuL2pzb24tZG93bmxvYWRlci53b3JrZXJgLCBpbXBvcnQubWV0YS51cmwpKSxcbiAgICAgIHtcbiAgICAgICAgYXJyYXksXG4gICAgICAgIGNvbHVtbnMsXG4gICAgICAgIHNob3dIZWFkZXIsXG4gICAgICAgIGZvcm1hdDogJ2NzdicsXG4gICAgICB9LFxuICAgICkuc3Vic2NyaWJlKChjc3YpID0+IHtcbiAgICAgIC8vIGRlYnVnZ2VyO1xuICAgICAgdGhpcy5kb3dubG9hZGVyKFxuICAgICAgICBjc3YsXG4gICAgICAgIGZpbGVuYW1lPy5lbmRzV2l0aCgnLmNzdicpID8gZmlsZW5hbWUgOiBmaWxlbmFtZSArICcuY3N2JyxcbiAgICAgICk7XG5cbiAgICAgIHRoaXMuaW5mbyhgRG93bmxvYWRlZCAke2ZpbGVuYW1lfWApO1xuICAgIH0pO1xuICB9XG5cbiAgaXNEYXRlVmFsdWUgPSAodikgPT4gKHYgPyB2WzRdID09ICctJyAmJiB2WzddID09ICctJyA6IGZhbHNlKTtcbiAgaXNEYXRUaW1lVmFsdWUgPSAodikgPT5cbiAgICB2ID8gdi5pbmNsdWRlcygnVCcpICYmIHZbNF0gPT0gJy0nICYmIHZbN10gPT0gJy0nIDogZmFsc2U7XG5cbiAgeWVzTm9DZWxsRm9ybWF0dGVyQ29sb3VyZWQgPSAodikgPT5cbiAgICBgPHNwYW4gY2xhc3M9JyR7diA/ICdzdWNjZXNzQ2VsbCcgOiAnaW5lcnRDZWxsJ30nPiR7XG4gICAgICB2ID8gJ1llcycgOiB2ID09IGZhbHNlID8gJ05vJyA6ICctJ1xuICAgIH08L3NwYW4+YDtcbiAgeWVzTm9DZWxsRm9ybWF0dGVyID0gKHYpID0+IGAke3YgPyAnWWVzJyA6ICdObyd9YDtcbiAgc3RhdHVzQ2VsbEZvcm1hdHRlciA9IChzdGF0dXM6IFN0YXR1cykgPT5cbiAgICBgPHNwYW4gY2xhc3M9JyR7XG4gICAgICBzdGF0dXMgPT0gJ0NPTVBMRVRFRCdcbiAgICAgICAgPyAnc3VjY2Vzc0NlbGwnXG4gICAgICAgIDogc3RhdHVzID09ICdQRU5ESU5HJ1xuICAgICAgICAgID8gJ3BlbmRpbmdDZWxsJ1xuICAgICAgICAgIDogJ2luZXJ0Q2VsbCdcbiAgICB9Jz4ke3N0YXR1cyB8fCAnLSd9PC9zcGFuPmA7XG5cbiAgY2VsbFN0YXR1c0Zvcm1hdHRlciA9XG4gICAgPFQgPSBhbnk+KGd1aWRlOiB7XG4gICAgICBzdWNjZXNzVmFsPzogVDtcbiAgICAgIHBlbmRpbmdWYWw/OiBUO1xuICAgICAgZXJyb3JWYWw/OiBUO1xuICAgICAgaW5lcnRWYWw/OiBUO1xuICAgIH0pID0+XG4gICAgKHYpID0+XG4gICAgICBgPHNwYW4gY2xhc3M9JyR7XG4gICAgICAgIHYgPT0gZ3VpZGUuc3VjY2Vzc1ZhbFxuICAgICAgICAgID8gJ3N1Y2Nlc3NDZWxsJ1xuICAgICAgICAgIDogdiA9PSBndWlkZS5wZW5kaW5nVmFsXG4gICAgICAgICAgICA/ICdwZW5kaW5nQ2VsbCdcbiAgICAgICAgICAgIDogdiA9PSBndWlkZS5lcnJvclZhbFxuICAgICAgICAgICAgICA/ICdlcnJvckNlbGwnXG4gICAgICAgICAgICAgIDogJ2luZXJ0Q2VsbCdcbiAgICAgIH0nPiR7dn08L3NwYW4+YDtcblxuICBnZW5lcmF0ZVVVSUQoKSB7XG4gICAgbGV0IGQgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICBsZXQgZDIgPVxuICAgICAgKHR5cGVvZiBwZXJmb3JtYW5jZSAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAgICAgcGVyZm9ybWFuY2Uubm93ICYmXG4gICAgICAgIHBlcmZvcm1hbmNlLm5vdygpICogMTAwMCkgfHxcbiAgICAgIDA7IC8vVGltZSBpbiBtaWNyb3NlY29uZHMgc2luY2UgcGFnZS1sb2FkIG9yIDAgaWYgdW5zdXBwb3J0ZWRcbiAgICByZXR1cm4gJ3h4eHh4eHh4LXh4eHgtNHh4eC15eHh4LXh4eHh4eHh4eHh4eCcucmVwbGFjZSgvW3h5XS9nLCAoYykgPT4ge1xuICAgICAgbGV0IHIgPSBNYXRoLnJhbmRvbSgpICogMTY7IC8vcmFuZG9tIG51bWJlciBiZXR3ZWVuIDAgYW5kIDE2XG4gICAgICBpZiAoZCA+IDApIHtcbiAgICAgICAgLy9Vc2UgdGltZXN0YW1wIHVudGlsIGRlcGxldGVkXG4gICAgICAgIHIgPSAoZCArIHIpICUgMTYgfCAwO1xuICAgICAgICBkID0gTWF0aC5mbG9vcihkIC8gMTYpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy9Vc2UgbWljcm9zZWNvbmRzIHNpbmNlIHBhZ2UtbG9hZCBpZiBzdXBwb3J0ZWRcbiAgICAgICAgciA9IChkMiArIHIpICUgMTYgfCAwO1xuICAgICAgICBkMiA9IE1hdGguZmxvb3IoZDIgLyAxNik7XG4gICAgICB9XG4gICAgICByZXR1cm4gKGMgPT09ICd4JyA/IHIgOiAociAmIDB4MykgfCAweDgpLnRvU3RyaW5nKDE2KTtcbiAgICB9KTtcbiAgfVxuXG4gIGluZm8gPSB0aGlzLmluZm9EaWFsb2dTZXJ2aWNlLmluZm87XG4gIGRlYm91bmNlciA9IHRoaXMuZGVib3VuY2VyU2VydmljZS5kZWJvdW5jZXI7XG5cbiAgYXN5bmNWYWxpZGF0aW9uID0gdGhpcy5kZWJvdW5jZXJTZXJ2aWNlLmFzeW5jVmFsaWRhdGlvbjtcbiAgLy8jcmVnaW9uIHJvdXRlXG4gIHJvdXRlUGFyYW1zMSA9IHRoaXMucm91dGVTZXJ2aWNlLnJvdXRlUGFyYW1zMTtcbiAgcm91dGVQYXJhbXMyID0gdGhpcy5yb3V0ZVNlcnZpY2Uucm91dGVQYXJhbXMyO1xuICByb3V0ZVBhcmFtczMgPSB0aGlzLnJvdXRlU2VydmljZS5yb3V0ZVBhcmFtczM7XG4gIC8vI2VuZHJlZ2lvblxuICBzdGFydFBsID0gdGhpcy5wUy5zdGFydFBsO1xuICBzdG9wUGwgPSB0aGlzLnBTLnN0b3BQbDtcblxuICBjcmVhdGVTdWJzY3JpcHRpb25NYW5hZ2VyID0gKC4uLnN1YnM6IFN1YnNjcmlwdGlvbltdKSA9PiB7XG4gICAgbGV0IF9zdWJzOiBTdWJzY3JpcHRpb25bXSA9IHN1YnMgfHwgW107XG4gICAgY29uc3QgY2xlYXIgPSAoKSA9PiB7XG4gICAgICBfc3Vicy5mb3JFYWNoKCh4KSA9PiB4LnVuc3Vic2NyaWJlKCkpO1xuICAgICAgX3N1YnMgPSBbXTtcbiAgICB9O1xuICAgIGNvbnN0IHB1c2ggPSAoLi4uc3ViczogU3Vic2NyaXB0aW9uW10pID0+IHtcbiAgICAgIF9zdWJzLnB1c2goLi4uc3Vicyk7XG4gICAgfTtcblxuICAgIHJldHVybiB7IGNsZWFyLCBwdXNoIH07XG4gIH07XG5cbiAgY3JlYXRlQ2FjaGVNYW5hZ2VyID0gKCkgPT4ge1xuICAgIGxldCBfY2FjaGU6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7fTtcbiAgICBjb25zdCBjbGVhciA9ICgpID0+IHtcbiAgICAgIF9jYWNoZSA9IHt9O1xuICAgIH07XG4gICAgY29uc3QgZHJvcCA9ICgpID0+IHtcbiAgICAgIF9jYWNoZSA9IHVuZGVmaW5lZDtcbiAgICB9O1xuICAgIGNvbnN0IHNhdmUgPSAoa2V5OiBzdHJpbmcsIGRhdGE6IGFueSkgPT4ge1xuICAgICAgaWYgKCFfY2FjaGUpIF9jYWNoZSA9IHt9O1xuICAgICAgX2NhY2hlW2tleV0gPSBkYXRhO1xuICAgIH07XG4gICAgY29uc3QgZ2V0ID0gPFQ+KGtleTogc3RyaW5nKSA9PiBfY2FjaGU/LltrZXldIGFzIFQ7XG5cbiAgICByZXR1cm4geyBjbGVhciwgZHJvcCwgZ2V0LCBzYXZlIH07XG4gIH07XG5cbiAgdHJhY2tCeUN1c3RvbUlEID0gKGluZGV4LCBpdGVtKSA9PiB7XG4gICAgaWYgKCFpdGVtW3RoaXMuY3VzdG9tSURGaWVsZF0pIHtcbiAgICAgIGl0ZW1bdGhpcy5jdXN0b21JREZpZWxkXSA9IHRoaXMuZ2VuZXJhdGVVVUlEKCk7XG4gICAgICBjb25zb2xlLmxvZygnc2V0IGN1c3RvbSBpZCcpO1xuICAgIH1cbiAgICByZXR1cm4gaXRlbVt0aGlzLmN1c3RvbUlERmllbGRdO1xuICB9O1xuICB0cmFja0J5Rm9yRm9ybXMgPSAoaW5kZXgsIGl0ZW06IEZvcm1Hcm91cCkgPT4ge1xuICAgIGlmICghaXRlbS5jb250cm9sc1t0aGlzLmN1c3RvbUlERmllbGRdKVxuICAgICAgaXRlbS5hZGRDb250cm9sKHRoaXMuY3VzdG9tSURGaWVsZCwgbmV3IEZvcm1Db250cm9sKHRoaXMuZ2VuZXJhdGVVVUlEKCkpKTtcbiAgICByZXR1cm4gaXRlbS5jb250cm9sc1t0aGlzLmN1c3RvbUlERmllbGRdLnZhbHVlO1xuICB9O1xuICBvYmplY3RUb0Zvcm1Hcm91cCA9IDxUPihkYXRhOiBUKSA9PiB7XG4gICAgY29uc3QgZm9ybSA9IG5ldyBGb3JtR3JvdXA8SVN0cmljdEZvcm1Hcm91cDxUPj4oe30gYXMgYW55KTtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBkYXRhKVxuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkYXRhLCBrZXkpKVxuICAgICAgICBmb3JtLmFkZENvbnRyb2woa2V5LCBuZXcgRm9ybUNvbnRyb2woZGF0YVtrZXldKSk7XG4gICAgcmV0dXJuIGZvcm07XG4gIH07XG5cbiAgZm9ybVNjaGVtYVRvRm9ybUdyb3VwID0gPFQgZXh0ZW5kcyB7IFt4OiBzdHJpbmddOiBhbnkgfT4oXG4gICAgc2NoZW1hOiBJRm9ybVNjaGVtYVtdLFxuICAgIGRhdGE/OiBULFxuICApID0+IHtcbiAgICBjb25zdCBmb3JtID0gbmV3IEZvcm1Hcm91cDxJU3RyaWN0Rm9ybUdyb3VwPFQ+Pih7fSBhcyBhbnkpO1xuICAgIGZvciAoY29uc3QgaXRlbSBvZiBzY2hlbWEpXG4gICAgICBmb3JtLmFkZENvbnRyb2woXG4gICAgICAgIGl0ZW0uZmllbGQudG9TdHJpbmcoKSxcbiAgICAgICAgbmV3IEZvcm1Db250cm9sKGRhdGFbaXRlbS5maWVsZC50b1N0cmluZygpXSksXG4gICAgICApO1xuICAgIHJldHVybiBmb3JtO1xuICB9O1xuXG4gIHRpbWVDb2RlQmxvY2sgPSA8VD4obGFiZWw6IHN0cmluZywgY2I6ICgpID0+IFQpID0+IHtcbiAgICBjb25zdCBzdGFydFRJbWUgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IHJlcyA9IGNiKCk7XG4gICAgY29uc3QgZW5kVGltZSA9IERhdGUubm93KCk7XG4gICAgY29uc29sZS5sb2coXG4gICAgICBsYWJlbCxcbiAgICAgIHN0YXJ0VEltZSxcbiAgICAgIGVuZFRpbWUsXG4gICAgICAoZW5kVGltZSAtIHN0YXJ0VEltZSkgLyAxMDAwICsgJ3NlYycsXG4gICAgKTtcbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG5cblx0LyoqXG5cdCAqIERlbGV0ZSBudWxsIG9yIHVuZGVmaW5lZCBmaWVsZHMgZnJvbSBhbiBvYmplY3Rcblx0ICogQHBhcmFtIG9iaiBPYmplY3QgdG8gZGVsZXRlIGZyb21cblx0ICogQHJldHVybnNcblx0ICovXG5cdGRlbGV0ZU51bGwgPSA8VD4ob2JqOiBUKSA9PiB7XG5cdFx0Y29uc3QgcmV0OiBUID0ge30gYXMgYW55O1xuXHRcdGZvciAoY29uc3Qga2V5IGluIG9iaikge1xuXHRcdFx0aWYgKG9ialtrZXldID09PSBudWxsIHx8IG9ialtrZXldID09PSB1bmRlZmluZWQgfHwgb2JqW2tleV0gPT09ICcnKSBjb250aW51ZTtcblx0XHRcdGVsc2UgcmV0W2tleV0gPSBvYmpba2V5XTtcblx0XHR9XG5cdFx0cmV0dXJuIHJldDtcblx0fTtcbn1cbiJdfQ==
@@ -1,9 +1,7 @@
1
1
  import { Injectable } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
- import * as i1 from "../../../Services/utility.service";
4
3
  export class AutocompleteService {
5
- constructor(uS) {
6
- this.uS = uS;
4
+ constructor() {
7
5
  this.displayWith = (options) => (val) => {
8
6
  console.log('this.options', options);
9
7
  return options?.find((x) => x.value == val)?.label || val;
@@ -18,7 +16,7 @@ export class AutocompleteService {
18
16
  normalizeValue(value) {
19
17
  return value?.toString()?.toLowerCase().replace(/\s/g, '');
20
18
  }
21
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: AutocompleteService, deps: [{ token: i1.UtilityService }], target: i0.ɵɵFactoryTarget.Injectable }); }
19
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: AutocompleteService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
22
20
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: AutocompleteService, providedIn: 'root' }); }
23
21
  }
24
22
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: AutocompleteService, decorators: [{
@@ -26,5 +24,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImpor
26
24
  args: [{
27
25
  providedIn: 'root',
28
26
  }]
29
- }], ctorParameters: () => [{ type: i1.UtilityService }] });
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ldHMtZmUtbmctc2RrL3NyYy9saWIvU2hhcmVkL2NvbXBvbmVudHMvYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQU8zQyxNQUFNLE9BQU8sbUJBQW1CO0lBQzlCLFlBQW1CLEVBQWtCO1FBQWxCLE9BQUUsR0FBRixFQUFFLENBQWdCO1FBWXJDLGdCQUFXLEdBQUcsQ0FBQyxPQUFjLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDeEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDckMsT0FBTyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLEdBQUcsQ0FBQyxFQUFFLEtBQUssSUFBSSxHQUFHLENBQUM7UUFDNUQsQ0FBQyxDQUFDO0lBZnNDLENBQUM7SUFDekMsYUFBYSxDQUFDLEtBQWEsRUFBRSxPQUFrQjtRQUM3QyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQy9DLE9BQU8sV0FBVztZQUNoQixDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3ZGLENBQUMsQ0FBQyxPQUFPLENBQUM7SUFDZCxDQUFDO0lBRUQsY0FBYyxDQUFDLEtBQWE7UUFDMUIsT0FBTyxLQUFLLEVBQUUsUUFBUSxFQUFFLEVBQUUsV0FBVyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztJQUM3RCxDQUFDOzhHQVhVLG1CQUFtQjtrSEFBbkIsbUJBQW1CLGNBRmxCLE1BQU07OzJGQUVQLG1CQUFtQjtrQkFIL0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7IFxuaW1wb3J0IHsgVXRpbGl0eVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9TZXJ2aWNlcy91dGlsaXR5LnNlcnZpY2UnO1xuaW1wb3J0IHsgSU9wdGlvbiB9IGZyb20gJy4uL2lucHV0L2lucHV0LnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQXV0b2NvbXBsZXRlU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB1UzogVXRpbGl0eVNlcnZpY2UpIHt9XG4gIGZpbHRlck9wdGlvbnMocXVlcnk6IHN0cmluZywgb3B0aW9uczogSU9wdGlvbltdKTogSU9wdGlvbltdIHtcbiAgICBjb25zdCBmaWx0ZXJWYWx1ZSA9IHRoaXMubm9ybWFsaXplVmFsdWUocXVlcnkpO1xuICAgIHJldHVybiBmaWx0ZXJWYWx1ZVxuICAgICAgPyBvcHRpb25zPy5maWx0ZXIoKG9wdGlvbikgPT4gdGhpcy5ub3JtYWxpemVWYWx1ZShvcHRpb24ubGFiZWwpPy5pbmNsdWRlcyhmaWx0ZXJWYWx1ZSkpXG4gICAgICA6IG9wdGlvbnM7XG4gIH1cblxuICBub3JtYWxpemVWYWx1ZSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdmFsdWU/LnRvU3RyaW5nKCk/LnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvXFxzL2csICcnKTtcbiAgfVxuXG4gIGRpc3BsYXlXaXRoID0gKG9wdGlvbnM6IGFueVtdKSA9PiAodmFsKSA9PiB7XG4gICAgY29uc29sZS5sb2coJ3RoaXMub3B0aW9ucycsIG9wdGlvbnMpO1xuICAgIHJldHVybiBvcHRpb25zPy5maW5kKCh4KSA9PiB4LnZhbHVlID09IHZhbCk/LmxhYmVsIHx8IHZhbDtcbiAgfTsgXG59XG4iXX0=
27
+ }], ctorParameters: () => [] });
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ldHMtZmUtbmctc2RrL3NyYy9saWIvU2hhcmVkL2NvbXBvbmVudHMvYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBTTNDLE1BQU0sT0FBTyxtQkFBbUI7SUFDOUI7UUFZQSxnQkFBVyxHQUFHLENBQUMsT0FBYyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ3hDLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ3JDLE9BQU8sT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxHQUFHLENBQUMsRUFBRSxLQUFLLElBQUksR0FBRyxDQUFDO1FBQzVELENBQUMsQ0FBQztJQWZjLENBQUM7SUFDakIsYUFBYSxDQUFDLEtBQWEsRUFBRSxPQUFrQjtRQUM3QyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQy9DLE9BQU8sV0FBVztZQUNoQixDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3ZGLENBQUMsQ0FBQyxPQUFPLENBQUM7SUFDZCxDQUFDO0lBRUQsY0FBYyxDQUFDLEtBQWE7UUFDMUIsT0FBTyxLQUFLLEVBQUUsUUFBUSxFQUFFLEVBQUUsV0FBVyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztJQUM3RCxDQUFDOzhHQVhVLG1CQUFtQjtrSEFBbkIsbUJBQW1CLGNBRmxCLE1BQU07OzJGQUVQLG1CQUFtQjtrQkFIL0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJT3B0aW9uIH0gZnJvbSAnLi4vaW5wdXQvaW5wdXQuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBBdXRvY29tcGxldGVTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IoICkge31cbiAgZmlsdGVyT3B0aW9ucyhxdWVyeTogc3RyaW5nLCBvcHRpb25zOiBJT3B0aW9uW10pOiBJT3B0aW9uW10ge1xuICAgIGNvbnN0IGZpbHRlclZhbHVlID0gdGhpcy5ub3JtYWxpemVWYWx1ZShxdWVyeSk7XG4gICAgcmV0dXJuIGZpbHRlclZhbHVlXG4gICAgICA/IG9wdGlvbnM/LmZpbHRlcigob3B0aW9uKSA9PiB0aGlzLm5vcm1hbGl6ZVZhbHVlKG9wdGlvbi5sYWJlbCk/LmluY2x1ZGVzKGZpbHRlclZhbHVlKSlcbiAgICAgIDogb3B0aW9ucztcbiAgfVxuXG4gIG5vcm1hbGl6ZVZhbHVlKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB2YWx1ZT8udG9TdHJpbmcoKT8udG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9cXHMvZywgJycpO1xuICB9XG5cbiAgZGlzcGxheVdpdGggPSAob3B0aW9uczogYW55W10pID0+ICh2YWwpID0+IHtcbiAgICBjb25zb2xlLmxvZygndGhpcy5vcHRpb25zJywgb3B0aW9ucyk7XG4gICAgcmV0dXJuIG9wdGlvbnM/LmZpbmQoKHgpID0+IHgudmFsdWUgPT0gdmFsKT8ubGFiZWwgfHwgdmFsO1xuICB9OyBcbn1cbiJdfQ==
@@ -217,4 +217,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImpor
217
217
  type: Input,
218
218
  args: ['isShow']
219
219
  }] } });
220
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1nZW5lcmF0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXRzLWZlLW5nLXNkay9zcmMvbGliL1NoYXJlZC9jb21wb25lbnRzL2Zvcm0tZ2VuZXJhdG9yL2Zvcm0tZ2VuZXJhdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy9mb3JtLWdlbmVyYXRvci9mb3JtLWdlbmVyYXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxHQUVQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFJTCxXQUFXLEdBRVosTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRCxPQUFPLEVBQ0wsbUJBQW1CLEdBRXBCLE1BQU0sZ0NBQWdDLENBQUM7QUFDeEMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDL0UsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sMERBQTBELENBQUM7QUFDdEcsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDOUUsT0FBTyxFQUNMLFlBQVksRUFDWixlQUFlLEVBQ2YsZ0JBQWdCLEdBQ2pCLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLGVBQWUsRUFBRSxN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aEIsTUFBTTtnQkFDdUIsbUJBQW1CO3NCQUFoRCxNQUFNO3VCQUFDLG9CQUFvQjtnQkFDbkIsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUVHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBRXFCLElBQUk7c0JBQTlCLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQUcyQixXQUFXO3NCQUE5RCxLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFO2dCQUt6QixPQUFPO3NCQUEzQixLQUFLO3VCQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBUZW1wbGF0ZVJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBYnN0cmFjdENvbnRyb2wsXG4gIEFzeW5jVmFsaWRhdG9yRm4sXG4gIEZvcm1Hcm91cCxcbiAgRm9ybXNNb2R1bGUsXG4gIFZhbGlkYXRvckZuLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBjbG9uZURlZXAgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRnVuY3Rpb25DYWxsZXIyLCBUb0FueVBpcGUgfSBmcm9tICcuLi8uLi9waXBlcy91dGlsaXR5LnBpcGUnO1xuaW1wb3J0IHsgQnRuQ29tcG9uZW50IH0gZnJvbSAnLi4vYnRuL2J0bi5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgSW5wdXRCYXNpY0NvbXBvbmVudCxcbiAgT3B0aW9uTGFiZWxUeXBlLFxufSBmcm9tICcuLi9pbnB1dC9pbnB1dC1iYXNpYy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQXV0b2NvbXBsZXRlQ29tcG9uZW50IH0gZnJvbSAnLi4vYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVmFsaWRhdGlvbk1lc3NhZ2VDb21wb25lbnQgfSBmcm9tICcuLi9pbnB1dC92YWxpZGF0aW9uLW1lc3NhZ2UvdmFsaWRhdGlvbi1tZXNzYWdlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQaG9uZU51bWJlckNvbXBvbmVudCB9IGZyb20gJy4uL3Bob25lLW51bWJlci9waG9uZS1udW1iZXIuY29tcG9uZW50JztcbmltcG9ydCB7XG4gIENvbW1vbk1vZHVsZSxcbiAgTmdTd2l0Y2hEZWZhdWx0LFxuICBOZ1RlbXBsYXRlT3V0bGV0LFxufSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTG9hZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vbG9hZGVyL2xvYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBVdGlsaXR5U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL1NlcnZpY2VzL3V0aWxpdHkuc2VydmljZSc7XG5pbXBvcnQgeyBJbnB1dFR5cGUgfSBmcm9tICcuLi8uLi9tb2RlbHMvaW5kZXgubW9kZWwnO1xuaW1wb3J0IHsgSWNvblR5cGUgfSBmcm9tICcuLi9idG4vYnRuLm1vZGVsJztcblxuLyoqXG4gKiBGb3JtIHNob3VsZCBiZSBzZXQgYmVmb3JlIHRoZSB0aGUgZm9ybVNjaGVtYVxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmb3JtLWdlbmVyYXRvcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9mb3JtLWdlbmVyYXRvci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Zvcm0tZ2VuZXJhdG9yLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBMb2FkZXJDb21wb25lbnQsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFBob25lTnVtYmVyQ29tcG9uZW50LFxuICAgIFZhbGlkYXRpb25NZXNzYWdlQ29tcG9uZW50LFxuICAgIEF1dG9jb21wbGV0ZUNvbXBvbmVudCxcbiAgICBOZ1N3aXRjaERlZmF1bHQsXG4gICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICBJbnB1dEJhc2ljQ29tcG9uZW50LFxuICAgIEJ0bkNvbXBvbmVudCxcbiAgICBGdW5jdGlvbkNhbGxlcjIsXG4gICAgVG9BbnlQaXBlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBGb3JtR2VuZXJhdG9yQ29tcG9uZW50PFxuICBURm9ybUdyb3VwIGV4dGVuZHMge1xuICAgIFtLIGluIGtleW9mIFRGb3JtR3JvdXBdOiBURm9ybUdyb3VwW0tdO1xuICB9ID0gYW55LFxuPiBpbXBsZW1lbnRzIE9uSW5pdFxue1xuICBASW5wdXQoKSBrZXlGaWVsZDogJ2ZpZWxkJyB8ICdsYWJlbCcgPSAnZmllbGQnO1xuXG4gIEBPdXRwdXQoKSBvblN1Ym1pdCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgbWNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCdzdWJtaXNzaW9uUmVzcG9uc2UnKSBfc3VibWlzc2lvblJlc3BvbnNlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBJbnB1dCgpIHN1Ym1pdEZ1bmM6ICh2YWx1ZTogYW55KSA9PiBQcm9taXNlPGFueT47XG4gIEBJbnB1dCgpIHN1Ym1pdEJ0blRleHQ6IHN0cmluZyA9ICdTdWJtaXQnO1xuICBASW5wdXQoKSBzdWJtaXRCdG5UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgQElucHV0KCkgc3VibWl0U3VjY2Vzc1RleHQ6IHN0cmluZyA9ICdTYXZlJztcbiAgQElucHV0KCkgc2hvd1N1Ym1pdEJ0bjogYm9vbGVhbiA9IHRydWU7XG5cbiAgQElucHV0KCkgZ3JpZFN0eWxlOiBudW1iZXIgfCAnYXV0byc7XG4gIEBJbnB1dCgpIGdyaWRNRFN0eWxlOiBudW1iZXIgfCAnYXV0byc7XG4gIEBJbnB1dCgpIGdyaWRMR1N0eWxlOiBudW1iZXIgfCAnYXV0byc7XG4gIEBJbnB1dCgpIGdyaWRYWExTdHlsZTogbnVtYmVyIHwgJ2F1dG8nO1xuXG4gIEBJbnB1dCgpIGZvcm1HcmlkQ2xhc3M6IHN0cmluZztcbiAgQElucHV0KCkgdXNlTG9hZGVyOiBib29sZWFuO1xuICBASW5wdXQoKSBsb2FkaW5nOiBib29sZWFuO1xuXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIGZvcm06IEZvcm1Hcm91cDxURm9ybUdyb3VwPjtcbiAgZm9ybVNjaGVtYTogSUZvcm1TY2hlbWE8VEZvcm1Hcm91cD5bXTtcbiAgc3VibWlzc2lvblJlc3BvbnNlOiBhbnk7XG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlLCBhbGlhczogJ2Zvcm1TY2hlbWEnIH0pIHNldCBfZm9ybVNjaGVtYShcbiAgICB2OiBJRm9ybVNjaGVtYTxURm9ybUdyb3VwPltdLFxuICApIHtcbiAgICB0aGlzLmluaXQoY2xvbmVEZWVwKHYuZmlsdGVyKCh4KSA9PiB4KSkpO1xuICB9XG4gIEBJbnB1dCgnaXNTaG93Jykgc2V0IF9pc1Nob3codjogYm9vbGVhbikge1xuICAgIGlmICh2KSB0aGlzLmZvcm0/LmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgIGVsc2UgdGhpcy5mb3JtPy5lbmFibGUoKTtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHYpIHRoaXMuZm9ybT8uZGlzYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICBlbHNlIHRoaXMuZm9ybT8uZW5hYmxlKCk7XG4gICAgfSwgNTAwKTtcbiAgfVxuICBvcHRpb25zTWFwOiBJRm9ybU9wdGlvbnMgPSB7fTtcbiAgY2VsbENvdW50cnlDb2RlM3M6IElGb3JtT3B0aW9ucyA9IHt9O1xuICBzdWJzOiB7IGZpZWxkTmFtZTogc3RyaW5nOyBzdWI6IFN1YnNjcmlwdGlvbiB9W10gPSBbXTtcbiAgLy8gbWlzY0luZGV4OiBUTWlzY0luZGV4O1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB1UzogVXRpbGl0eVNlcnZpY2UpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7fVxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnMuZm9yRWFjaCgocykgPT4ge1xuICAgICAgcz8uc3ViPy51bnN1YnNjcmliZSgpO1xuICAgIH0pO1xuICAgIHRoaXMuc3VicyA9IFtdO1xuICB9XG4gIGluaXQoc2NoZW1hOiBJRm9ybVNjaGVtYVtdKSB7XG4gICAgLy8gZGVidWdnZXI7XG4gICAgdGhpcy5uZ09uRGVzdHJveSgpO1xuICAgIC8vIGRlYnVnZ2VyO1xuICAgIGlmIChzY2hlbWEpIGZvciAoY29uc3Qgc2NoZW1lIG9mIHNjaGVtYSkgdGhpcy5oYW5kbGVGb3JtU2NoZW1lKHNjaGVtZSk7XG4gICAgdGhpcy5mb3JtU2NoZW1hID0gc2NoZW1hO1xuICAgIGlmIChzY2hlbWEpXG4gICAgICBmb3IgKGNvbnN0IHNjaGVtZSBvZiBzY2hlbWEpXG4gICAgICAgIGlmIChzY2hlbWUudHJpZ2dlck9uQ2hhbmdlT25Jbml0KVxuICAgICAgICAgIHNjaGVtZS5vbkNoYW5nZUZ1bmMoXG4gICAgICAgICAgICB0aGlzLmZvcm0uZ2V0UmF3VmFsdWUoKSxcbiAgICAgICAgICAgIHRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpW3NjaGVtZS5maWVsZF0sXG4gICAgICAgICAgICB0aGlzLFxuICAgICAgICAgICk7XG4gIH1cbiAgaGFuZGxlRm9ybVNjaGVtZShzY2hlbWU6IElGb3JtU2NoZW1hKSB7XG4gICAgc2NoZW1lLmlkID0gdGhpcy51Uy5nZW5lcmF0ZVVVSUQoKTtcbiAgICBpZiAoc2NoZW1lLnN0YWNrZWQgPT0gbnVsbCkgc2NoZW1lLnN0YWNrZWQgPSB0cnVlO1xuICAgIGlmIChzY2hlbWUuc2hvd1ZhbGlkYXRpb25Nc2cgPT0gbnVsbCkgc2NoZW1lLnNob3dWYWxpZGF0aW9uTXNnID0gdHJ1ZTtcbiAgICBpZiAoXG4gICAgICBzY2hlbWUuYXV0b1BpY2tWYWx1ZUZpZWxkID09IG51bGwgJiZcbiAgICAgICghc2NoZW1lLnZhbHVlRmllbGQgfHwgIXNjaGVtZS5sYWJlbEZpZWxkKVxuICAgIClcbiAgICAgIHNjaGVtZS5hdXRvUGlja1ZhbHVlRmllbGQgPSB0cnVlO1xuXG4gICAgaWYgKHNjaGVtZS5vcHRpb25zSW5pdEZ1bmMpIHtcbiAgICAgIHNjaGVtZS5vcHRpb25zSW5pdEZ1bmMuc3Vic2NyaWJlKChyKSA9PiB7XG4gICAgICAgIHNjaGVtZS5vcHRpb25zID0gcjtcbiAgICAgICAgLy8gdGhpcy5vcHRpb25zTWFwW3NjaGVtZS5maWVsZF0gPSByO1xuICAgICAgfSk7XG4gICAgfVxuICAgIGlmIChzY2hlbWUub25DaGFuZ2VGdW5jKSB7XG4gICAgICBpZiAoc2NoZW1lLmRlYnVnKSBkZWJ1Z2dlcjtcbiAgICAgIGNvbnN0IHN1YiA9IHRoaXMuZm9ybT8uY29udHJvbHNbc2NoZW1lLmZpZWxkPy50b1N0cmluZygpXT8udmFsdWVDaGFuZ2VzXG4gICAgICAgIC5waXBlKGRlYm91bmNlVGltZSgwKSlcbiAgICAgICAgLnN1YnNjcmliZSgocikgPT4ge1xuICAgICAgICAgIHNjaGVtZS5vbkNoYW5nZUZ1bmModGhpcy5mb3JtLmdldFJhd1ZhbHVlKCksIHIsIHRoaXMpO1xuICAgICAgICB9KTtcbiAgICAgIHRoaXMuc3Vicy5wdXNoKHsgc3ViOiBzdWIsIGZpZWxkTmFtZTogc2NoZW1lLmZpZWxkPy50b1N0cmluZygpIH0pO1xuICAgIH1cbiAgfVxuICBkZXRhY2hGb3JtU2NoZW1lKHNjaGVtZUluZGV4PzogbnVtYmVyLCBmaWVsZE5hbWU/OiBzdHJpbmcpIHtcbiAgICB0aGlzLnN1YnNcbiAgICAgIC5maW5kKFxuICAgICAgICAoeCkgPT5cbiAgICAgICAgICB4LmZpZWxkTmFtZSA9PSB0aGlzLmZvcm1TY2hlbWFbc2NoZW1lSW5kZXhdPy5maWVsZCB8fFxuICAgICAgICAgIHguZmllbGROYW1lID09IGZpZWxkTmFtZSxcbiAgICAgIClcbiAgICAgID8uc3ViPy51bnN1YnNjcmliZSgpO1xuICB9XG4gIGFtZW5kRm9ybVNjaGVtZSA9IChcbiAgICBmaWVsZE5hbWU6IGtleW9mIFRGb3JtR3JvdXAsXG4gICAgZm9ybVNjaGVtZTogUGFydGlhbDxJRm9ybVNjaGVtYTxURm9ybUdyb3VwPj4sXG4gICkgPT4ge1xuICAgIC8vIGRlYnVnZ2VyO1xuICAgIGNvbnN0IGluZCA9IHRoaXMuZm9ybVNjaGVtYS5maW5kSW5kZXgoKHgpID0+IHguZmllbGQgPT0gZmllbGROYW1lKTtcbiAgICBpZiAoaW5kID4gLTEpIHtcbiAgICAgIHRoaXMuZm9ybVNjaGVtYVtpbmRdID0ge1xuICAgICAgICAuLi50aGlzLmZvcm1TY2hlbWFbaW5kXSxcbiAgICAgICAgLi4uKGZvcm1TY2hlbWUgYXMgYW55KSxcbiAgICAgIH07XG4gICAgICAvLyBkZWJ1Z2dlcjtcbiAgICAgIC8vIHRoaXMuZm9ybVNjaGVtYVtpbmRdLm9wdGlvbnMgPSBmb3JtU2NoZW1lLm9wdGlvbnM7XG4gICAgICAvLyBkZWJ1Z2dlcjtcbiAgICB9XG4gIH07XG5cbiAgbWNoYW5nZUVtaXR0ZXIoKSB7XG4gICAgdGhpcy5tY2hhbmdlLmVtaXQodGhpcy5mb3JtLmdldFJhd1ZhbHVlKCkpO1xuICB9XG5cbiAgZ2V0Rm9ybVNjaGVtZSA9IChmaWVsZE5hbWU6IGtleW9mIFRGb3JtR3JvdXApID0+IHtcbiAgICAvLyBkZWJ1Z2dlcjtcbiAgICBjb25zdCBpbmQgPSB0aGlzLmZvcm1TY2hlbWEuZmluZEluZGV4KCh4KSA9PiB4LmZpZWxkID09IGZpZWxkTmFtZSk7XG4gICAgcmV0dXJuIGluZCA+IC0xID8gdGhpcy5mb3JtU2NoZW1hW2luZF0gOiBudWxsO1xuICB9O1xuICBhZGRUb0Zvcm1TY2hlbWEoZm9ybVNjaGVtZTogSUZvcm1TY2hlbWEpIHtcbiAgICB0aGlzLnJlbW92ZUZyb21Gb3JtU2NoZW1hKGZvcm1TY2hlbWUuZmllbGQ/LnRvU3RyaW5nKCkpO1xuICAgIGNvbnN0IF9mcyA9IGNsb25lRGVlcChmb3JtU2NoZW1lKTtcbiAgICB0aGlzLmhhbmRsZUZvcm1TY2hlbWUoX2ZzKTtcbiAgICB0aGlzLmZvcm1TY2hlbWEucHVzaChfZnMpO1xuICB9XG4gIHJlbW92ZUZyb21Gb3JtU2NoZW1hKGZpZWxkTmFtZTogc3RyaW5nKSB7XG4gICAgY29uc3QgaW5kID0gdGhpcy5mb3JtU2NoZW1hLmZpbmRJbmRleCgoeCkgPT4geC5maWVsZCA9PSBmaWVsZE5hbWUpO1xuICAgIHRoaXMuZGV0YWNoRm9ybVNjaGVtZShpbmQsIGZpZWxkTmFtZSk7XG4gICAgaWYgKGluZCA+IC0xKSB7XG4gICAgICBpZiAodGhpcy5mb3JtU2NoZW1hW2luZF0/Lm9uUmVtb3ZlRnVuYylcbiAgICAgICAgdGhpcy5mb3JtU2NoZW1hW2luZF0/Lm9uUmVtb3ZlRnVuYyhcbiAgICAgICAgICB0aGlzLmZvcm0uZ2V0UmF3VmFsdWUoKSBhcyBhbnksXG4gICAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW2ZpZWxkTmFtZV0sXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgKTtcbiAgICAgIHRoaXMuZm9ybVNjaGVtYS5zcGxpY2UoaW5kLCAxKTtcbiAgICB9XG4gIH1cbiAgc2V0T3B0aW9uTGFiZWwoJGV2ZW50OiBhbnksIHNjaGVtZTogSUZvcm1TY2hlbWEpIHtcbiAgICBzY2hlbWUuc2VsZWN0ZWRPcHRpb25MYWJlbCA9ICRldmVudDtcbiAgfVxuICBhc3luYyBzdWJtaXQoKSB7XG4gICAgaWYgKHRoaXMuc3VibWl0RnVuYykge1xuICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgIHRoaXMub25TdWJtaXQuZW1pdCh0aGlzLmZvcm0udmFsdWUpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgdGhpcy5zdWJtaXNzaW9uUmVzcG9uc2UgPSBhd2FpdCB0aGlzLnN1Ym1pdEZ1bmModGhpcy5mb3JtLnZhbHVlKTtcbiAgICAgICAgdGhpcy51Uy5pbmZvKHRoaXMuc3VibWl0U3VjY2Vzc1RleHQsIDEpO1xuICAgICAgICB0aGlzLl9zdWJtaXNzaW9uUmVzcG9uc2UuZW1pdCh0aGlzLnN1Ym1pc3Npb25SZXNwb25zZSk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICB0aGlzLnVTLmluZm8oZXJyb3IsIDApO1xuICAgICAgfVxuICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgfSBlbHNlIHRoaXMub25TdWJtaXQuZW1pdCh0aGlzLmZvcm0udmFsdWUpO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUZvcm1TY2hlbWE8XG4gIFRGb3JtR3JvdXAgZXh0ZW5kcyB7XG4gICAgW0sgaW4ga2V5b2YgVEZvcm1Hcm91cF06IEFic3RyYWN0Q29udHJvbDxhbnksIGFueT47XG4gIH0gPSBhbnksXG4gIFRPcHRpb25MYWJlbFR5cGUgPSBPcHRpb25MYWJlbFR5cGUsXG4gIFRJbnB1dFR5cGUgPSBJbnB1dFR5cGUsXG4+IHtcbiAgYXN5bmNWYWxpZGF0b3JzPzogQXN5bmNWYWxpZGF0b3JGbltdO1xuICBhdXRvUGlja1ZhbHVlRmllbGQ/OiBib29sZWFuO1xuICBjaGVja2VkPzogYm9vbGVhbjtcbiAgY2xlYXJPbkRpc2FibGU/OiBib29sZWFuO1xuICBjbHM/OiBzdHJpbmc7XG4gIGNvdW50cnlDb2RlMz86IHN0cmluZztcbiAgY2hpbGRyZW4/OiBJRm9ybVNjaGVtYTxURm9ybUdyb3VwPltdO1xuICBkZWNpbWFsUG9pbnRzPzogbnVtYmVyO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIGRpc2FibGVkSWY/OiAocm93OiBhbnksIGNlbGxGaWVsZD86IHN0cmluZykgPT4gYm9vbGVhbjtcbiAgaGlkZUlmRnVuYz86IChyb3cpID0+IGJvb2xlYW47XG4gIGZpZWxkOiBrZXlvZiBURm9ybUdyb3VwO1xuICBmb3JtPzogRm9ybUdyb3VwPFRGb3JtR3JvdXA+O1xuICBnZXRDb3VudHJ5Q29kZTNLZXk/OiBzdHJpbmc7XG4gIGhpZGRlbj86IGJvb2xlYW47XG4gIGhpbnQ/OiBzdHJpbmc7XG4gIGlkPzogc3RyaW5nO1xuICBpc1JlcXVpcmVkPzogYm9vbGVhbjtcbiAgaXNTZWFyY2hGaWVsZD86IGJvb2xlYW47XG4gIGxhYmVsPzogc3RyaW5nO1xuICBsYWJlbEZpZWxkPzogc3RyaW5nO1xuICBsYWJlbFR5cGU/OiBUT3B0aW9uTGFiZWxUeXBlO1xuICBvcHRpb25MYWJlbEZvcm1hdHRlcj86IChyb3cpID0+IHN0cmluZztcbiAgbWF4PzogbnVtYmVyO1xuICBtaW4/OiBudW1iZXI7XG4gIG5vRm9ybWF0PzogYm9vbGVhbjtcbiAgb3B0aW9uRm9ybWF0dGVyPzogKGl0ZW06IGFueSkgPT4gc3RyaW5nO1xuICBvcHRpb25zPzogYW55W107XG4gIG9wdGlvbnNBc3luYz86IE9ic2VydmFibGU8YW55W10+IHwgUHJvbWlzZTxhbnlbXT47XG4gIG9wdGlvbnNJbml0RnVuYz86IE9ic2VydmFibGU8YW55W10+O1xuICBvcHRpb25zS2V5Pzogc3RyaW5nO1xuICBwbGFjZWhvbGRlcj86IHN0cmluZztcbiAgc2VhcmNoRnVuYz86ICguLi5hcmdzKSA9PiBhbnk7XG4gIHNldEFzQ291bnRyeUNvZGUzPzogYm9vbGVhbjtcbiAgc2hvd1ZhbGlkYXRpb24/OiBib29sZWFuO1xuICBzaG93VmFsaWRhdGlvbkljb24/OiBib29sZWFuO1xuICB0ZW1wbGF0ZVZhbHVlPzogYW55O1xuICB0eXBlPzogVElucHV0VHlwZTtcbiAgdmFsaWRhdG9ycz86IFZhbGlkYXRvckZuW107XG4gIHZhbHVlPzogYW55O1xuICB2YWx1ZUZpZWxkPzogc3RyaW5nO1xuICBvcHRpb25zRnVuYz86ICguLi52YWw6IGFueSkgPT4gT2JzZXJ2YWJsZTxhbnlbXT47XG4gIHRyaWdnZXJPbkNoYW5nZU9uSW5pdD86IGJvb2xlYW47XG4gIGZvcm1hdHRlcj86IChcbiAgICByb3c6IHsgW0sgaW4ga2V5b2YgVEZvcm1Hcm91cF06IGFueSB9LFxuICAgIGZpZWxkTmFtZToga2V5b2YgVEZvcm1Hcm91cCxcbiAgKSA9PiBzdHJpbmc7XG4gIGV4dHJhPzogYW55O1xuICBvbkNoYW5nZUZ1bmM/OiAoXG4gICAgcm93OiB7IFtLIGluIGtleW9mIFRGb3JtR3JvdXBdPzogVEZvcm1Hcm91cFtLXVsndmFsdWUnXSB9LFxuICAgIGNlbGxWYWx1ZT86IGFueSxcbiAgICBfdGhpcz86IEZvcm1HZW5lcmF0b3JDb21wb25lbnQ8VEZvcm1Hcm91cD4sXG4gICkgPT4gT2JzZXJ2YWJsZTxhbnlbXT4gfCBhbnk7XG4gIG9uUmVtb3ZlRnVuYz86IChcbiAgICByb3c6IHsgW0sgaW4ga2V5b2YgVEZvcm1Hcm91cF06IFRGb3JtR3JvdXBbS11bJ3ZhbHVlJ10gfSxcbiAgICBjZWxsPzogYW55LFxuICAgIF90aGlzPzogRm9ybUdlbmVyYXRvckNvbXBvbmVudDxURm9ybUdyb3VwPixcbiAgKSA9PiBhbnk7XG4gIHNlbGVjdGVkT3B0aW9uTGFiZWw/OiBzdHJpbmc7XG4gIHN0YWNrZWQ/OiBib29sZWFuO1xuICBkZWJ1Zz86IGJvb2xlYW47XG4gIHNob3dWYWxpZGF0aW9uTXNnPzogYm9vbGVhbjtcbiAgZG9udEZvcm1hdEFzSW5wdXQ/OiBib29sZWFuO1xuICBzaG93UmVxdWlyZWRUYWc/OiBib29sZWFuO1xuICBpY29uPzogSWNvblR5cGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUZvcm1PcHRpb25zIHtcbiAgW2ZpZWxkOiBzdHJpbmddOiBhbnk7XG59XG4iLCI8bG9hZGVyIFtsb2FkaW5nXT1cInVzZUxvYWRlciAmJiBsb2FkaW5nXCI+XG4gIDxmb3JtPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwicm93IHJvdy1jb2xzLXt7Z3JpZFN0eWxlfX0gcm93LWNvbHMtbWQte3tncmlkTURTdHlsZX19IHJvdy1jb2xzLWxnLXt7Z3JpZExHU3R5bGV9fSByb3ctY29scy14eGwte3tncmlkWFhMU3R5bGV9fSBhbGlnbi1pdGVtcy1jZW50ZXIge3tmb3JtR3JpZENsYXNzfX1cIj5cbiAgICAgIEBmb3IgKHNjaGVtZSBvZiBmb3JtU2NoZW1hOyB0cmFjayB1Uy50cmFja0J5SUQoJGluZGV4LCBzY2hlbWUpKSB7XG5cbiAgICAgIEBpZiAoIXNjaGVtZS5oaWRkZW4gJiYgKCFzY2hlbWUuaGlkZUlmRnVuYyB8fCAhc2NoZW1lLmhpZGVJZkZ1bmMoZm9ybS52YWx1ZSkpKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sIHt7c2NoZW1lLmNsc319IFwiPlxuXG4gICAgICAgIEBzd2l0Y2ggKHRydWUpIHtcbiAgICAgICAgQGNhc2UgKHNjaGVtZS50eXBlID09ICd0ZWwnKSB7XG5cbiAgICAgICAgPGFwcC1waG9uZS1udW1iZXIgW2Zvcm1dPVwic2NoZW1lLmZvcm18fGZvcm1cIiBbbGFiZWxdPVwic2NoZW1lLmxhYmVsXCIgW2NsZWFyT25EaXNhYmxlXT1cInNjaGVtZS5jbGVhck9uRGlzYWJsZVwiXG4gICAgICAgICAgW3N0YWNrZWRdPVwic2NoZW1lLnN0YWNrZWRcIiBbbmFtZV09XCJzY2hlbWUuZmllbGRcIiBbc2hvd0xhYmVsXT1cImZhbHNlXCIgW25vRm9ybWF0XT1cInNjaGVtZS5ub0Zvcm1hdFwiXG4gICAgICAgICAgW2RlYnVnXT1cInNjaGVtZS5kZWJ1Z1wiIChtY2hhbmdlKT1cIm1jaGFuZ2VFbWl0dGVyKClcIiBbc2hvd1ZhbGlkYXRpb25dPVwic2NoZW1lLnNob3dWYWxpZGF0aW9uXCJcbiAgICAgICAgICBbYXV0b1BpY2tWYWx1ZUZpZWxkXT1cInNjaGVtZS5hdXRvUGlja1ZhbHVlRmllbGRcIiBbc2hvd1JlcXVpcmVkVGFnXT1cInNjaGVtZS5zaG93UmVxdWlyZWRUYWdcIlxuICAgICAgICAgIFtzaG93VmFsaWRhdGlvbk1zZ109XCJzY2hlbWUuc2hvd1ZhbGlkYXRpb25Nc2dcIiBbc2hvd1ZhbGlkYXRpb25JY29uXT1cInNjaGVtZS5zaG93VmFsaWRhdGlvbkljb25cIlxuICAgICAgICAgIFtjb3VudHJ5Q29kZTNdPVwiY2VsbENvdW50cnlDb2RlM3Nbc2NoZW1lLmdldENvdW50cnlDb2RlM0tleV0gfHwgc2NoZW1lLmNvdW50cnlDb2RlM1wiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cInNjaGVtZS5kaXNhYmxlZHx8KHNjaGVtZS5kaXNhYmxlZElmfGZ1bmN0aW9uQ2FsbGVyMjpmb3JtLnZhbHVlOihzY2hlbWUuZmllbGR8dG9BbnkpKVwiIC8+XG5cbiAgICAgICAgfVxuICAgICAgICBAY2FzZSAoc2NoZW1lLnR5cGUgPT0gJ2F1dG9jb21wbGV0ZScpIHtcblxuICAgICAgICA8YXBwLWF1dG9jb21wbGV0ZSBbZm9ybV09XCJzY2hlbWUuZm9ybXx8Zm9ybVwiIFtsYWJlbF09XCJzY2hlbWUubGFiZWxcIiBbY2xlYXJPbkRpc2FibGVdPVwic2NoZW1lLmNsZWFyT25EaXNhYmxlXCJcbiAgICAgICAgICBbc3RhY2tlZF09XCJzY2hlbWUuc3RhY2tlZFwiIFtsYWJlbEZpZWxkXT1cInNjaGVtZS5sYWJlbEZpZWxkXCIgW25vRm9ybWF0XT1cInNjaGVtZS5ub0Zvcm1hdFwiXG4gICAgICAgICAgW2xhYmVsVHlwZV09XCJzY2hlbWUubGFiZWxUeXBlXCIgKG1jaGFuZ2UpPVwibWNoYW5nZUVtaXR0ZXIoKVwiXG4gICAgICAgICAgKG1TZWxlY3RlZE9wdGlvbkxhYmVsKT1cInNldE9wdGlvbkxhYmVsKCRldmVudCxzY2hlbWUpXCIgW25hbWVdPVwic2NoZW1lLmZpZWxkXCIgW2RlYnVnXT1cInNjaGVtZS5kZWJ1Z1wiXG4gICAgICAgICAgW3Nob3dSZXF1aXJlZFRhZ109XCJzY2hlbWUuc2hvd1JlcXVpcmVkVGFnXCIgW29wdGlvbkZvcm1hdHRlcl09XCJzY2hlbWUub3B0aW9uRm9ybWF0dGVyXCJcbiAgICAgICAgICBbdmFsdWVGaWVsZF09XCJzY2hlbWUudmFsdWVGaWVsZFwiIFtvcHRpb25zRnVuY109XCJzY2hlbWUub3B0aW9uc0Z1bmNcIlxuICAgICAgICAgIFtzaG93VmFsaWRhdGlvbk1zZ109XCJzY2hlbWUuc2hvd1ZhbGlkYXRpb25Nc2dcIiBbYXV0b1BpY2tWYWx1ZUZpZWxkXT1cInNjaGVtZS5hdXRvUGlja1ZhbHVlRmllbGRcIlxuICAgICAgICAgIFtvcHRpb25zXT1cIiBzY2hlbWUub3B0aW9uc3x8b3B0aW9uc01hcFtzY2hlbWUuZmllbGR8dG9BbnldXCIgW2hpbnRdPVwic2NoZW1lLmhpbnRcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJzY2hlbWUuZGlzYWJsZWR8fChzY2hlbWUuZGlzYWJsZWRJZnxmdW5jdGlvbkNhbGxlcjI6IGZvcm0udmFsdWU6KHNjaGVtZS5maWVsZHx0b0FueSkpXCIgLz5cblxuICAgICAgICB9XG4gICAgICAgIEBkZWZhdWx0IHtcblxuICAgICAgICA8YXBwLWlucHV0LWJhc2ljIFtub0Zvcm1hdF09XCJzY2hlbWUubm9Gb3JtYXRcIiBbbmFtZV09XCJzY2hlbWUuZmllbGRcIiBbZm9ybV09XCJzY2hlbWUuZm9ybXx8Zm9ybVwiXG4gICAgICAgICAgW2NsZWFyT25EaXNhYmxlXT1cInNjaGVtZS5jbGVhck9uRGlzYWJsZVwiIFt0eXBlXT1cInNjaGVtZS50eXBlXCIgW3ZhbHVlRmllbGRdPVwic2NoZW1lLnZhbHVlRmllbGRcIlxuICAgICAgICAgIFthdXRvUGlja1ZhbHVlRmllbGRdPVwic2NoZW1lLmF1dG9QaWNrVmFsdWVGaWVsZFwiIFtzdGFja2VkXT1cInNjaGVtZS5zdGFja2VkXCIgW2xhYmVsVHlwZV09XCJzY2hlbWUubGFiZWxUeXBlXCJcbiAgICAgICAgICBbY2hlY2tlZF09XCJzY2hlbWUuY2hlY2tlZFwiIFtzaG93VmFsaWRhdGlvbl09XCIhIXNjaGVtZS5hc3luY1ZhbGlkYXRvcnNcIlxuICAgICAgICAgIFtzaG93VmFsaWRhdGlvbkljb25dPVwiISFzY2hlbWUuYXN5bmNWYWxpZGF0b3JzXCIgW2RlYnVnXT1cInNjaGVtZS5kZWJ1Z1wiIChtY2hhbmdlKT1cIm1jaGFuZ2VFbWl0dGVyKClcIlxuICAgICAgICAgIFtzaG93UmVxdWlyZWRUYWddPVwic2NoZW1lLnNob3dSZXF1aXJlZFRhZ1wiIFtsYWJlbEZpZWxkXT1cInNjaGVtZS5sYWJlbEZpZWxkXCJcbiAgICAgICAgICBbb3B0aW9uRm9ybWF0dGVyXT1cInNjaGVtZS5vcHRpb25Gb3JtYXR0ZXJcIiAobVNlbGVjdGVkT3B0aW9uTGFiZWwpPVwic2V0T3B0aW9uTGFiZWwoJGV2ZW50LHNjaGVtZSlcIlxuICAgICAgICAgIFtvcHRpb25zXT1cInNjaGVtZS5vcHRpb25zfHxvcHRpb25zTWFwW3NjaGVtZS5maWVsZHx0b0FueV1cIiBbZGVjaW1hbFBvaW50c109XCJzY2hlbWUuZGVjaW1hbFBvaW50c1wiXG4gICAgICAgICAgW2hpbnRdPVwic2NoZW1lLmhpbnRcIiBbbWF4XT1cInNjaGVtZS5tYXhcIiBbbWluXT1cInNjaGVtZS5taW5cIiBbcGxhY2Vob2xkZXJdPVwic2NoZW1lLnBsYWNlaG9sZGVyXCJcbiAgICAgICAgICBbbGFiZWxdPVwic2NoZW1lLmxhYmVsXCIgW3Nob3dWYWxpZGF0aW9uTXNnXT1cInNjaGVtZS5zaG93VmFsaWRhdGlvbk1zZ1wiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cInNjaGVtZS5kaXNhYmxlZHx8KHNjaGVtZS5kaXNhYmxlZElmfGZ1bmN0aW9uQ2FsbGVyMjpmb3JtLnZhbHVlOihzY2hlbWUuZmllbGR8dG9BbnkpKVwiIC8+XG4gICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICA8L2Rpdj5cbiAgICAgIH1cblxuICAgICAgfVxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJyb3cgcm93LWNvbHMtYXV0byBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiXCI+XG4gICAgICAgIEBpZiAoc2hvd1N1Ym1pdEJ0biApIHtcbiAgICAgICAgPGFwcC1idG4gW3RleHRdPVwic3VibWl0QnRuVGV4dFwiIGFjdGlvblR5cGU9XCJzdWJtaXRcIiBncm91cD1cInN1Ym1pdFwiIFtmb3JtXT1cImZvcm1cIiAobWNsaWNrKT1cInN1Ym1pdCgpXCIgLz5cbiAgICAgICAgfVxuICAgICAgICBAaWYgKHN1Ym1pdEJ0blRlbXBsYXRlKSB7XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInN1Ym1pdEJ0blRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZm9ybT5cbjwvbG9hZGVyPiJdfQ==
220
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1nZW5lcmF0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXRzLWZlLW5nLXNkay9zcmMvbGliL1NoYXJlZC9jb21wb25lbnRzL2Zvcm0tZ2VuZXJhdG9yL2Zvcm0tZ2VuZXJhdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy9mb3JtLWdlbmVyYXRvci9mb3JtLWdlbmVyYXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxHQUVQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFJTCxXQUFXLEdBRVosTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRCxPQUFPLEVBQ0wsbUJBQW1CLEdBRXBCLE1BQU0sZ0NBQWdDLENBQUM7QUFDeEMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDL0UsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sMERBQTBELENBQUM7QUFDdEcsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDOUUsT0FBTyxFQUNMLFlBQVksRUFDWixlQUFlLEVBQ2YsZ0JBQWdCLEdBQ2pCLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLGVBQWUsRUFBRSxN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aEIsTUFBTTtnQkFDdUIsbUJBQW1CO3NCQUFoRCxNQUFNO3VCQUFDLG9CQUFvQjtnQkFDbkIsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUVHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBRXFCLElBQUk7c0JBQTlCLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQUcyQixXQUFXO3NCQUE5RCxLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFO2dCQUt6QixPQUFPO3NCQUEzQixLQUFLO3VCQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBUZW1wbGF0ZVJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBYnN0cmFjdENvbnRyb2wsXG4gIEFzeW5jVmFsaWRhdG9yRm4sXG4gIEZvcm1Hcm91cCxcbiAgRm9ybXNNb2R1bGUsXG4gIFZhbGlkYXRvckZuLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBjbG9uZURlZXAgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRnVuY3Rpb25DYWxsZXIyLCBUb0FueVBpcGUgfSBmcm9tICcuLi8uLi9waXBlcy91dGlsaXR5LnBpcGUnO1xuaW1wb3J0IHsgQnRuQ29tcG9uZW50IH0gZnJvbSAnLi4vYnRuL2J0bi5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgSW5wdXRCYXNpY0NvbXBvbmVudCxcbiAgT3B0aW9uTGFiZWxUeXBlLFxufSBmcm9tICcuLi9pbnB1dC9pbnB1dC1iYXNpYy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQXV0b2NvbXBsZXRlQ29tcG9uZW50IH0gZnJvbSAnLi4vYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVmFsaWRhdGlvbk1lc3NhZ2VDb21wb25lbnQgfSBmcm9tICcuLi9pbnB1dC92YWxpZGF0aW9uLW1lc3NhZ2UvdmFsaWRhdGlvbi1tZXNzYWdlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQaG9uZU51bWJlckNvbXBvbmVudCB9IGZyb20gJy4uL3Bob25lLW51bWJlci9waG9uZS1udW1iZXIuY29tcG9uZW50JztcbmltcG9ydCB7XG4gIENvbW1vbk1vZHVsZSxcbiAgTmdTd2l0Y2hEZWZhdWx0LFxuICBOZ1RlbXBsYXRlT3V0bGV0LFxufSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTG9hZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vbG9hZGVyL2xvYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBVdGlsaXR5U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL1NlcnZpY2VzL3V0aWxpdHkuc2VydmljZSc7XG5pbXBvcnQgeyBJbnB1dFR5cGUgfSBmcm9tICcuLi8uLi9tb2RlbHMvaW5kZXgubW9kZWwnO1xuaW1wb3J0IHsgSWNvblR5cGUgfSBmcm9tICcuLi9idG4vYnRuLm1vZGVsJztcblxuLyoqXG4gKiBGb3JtIHNob3VsZCBiZSBzZXQgYmVmb3JlIHRoZSB0aGUgZm9ybVNjaGVtYVxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmb3JtLWdlbmVyYXRvcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9mb3JtLWdlbmVyYXRvci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Zvcm0tZ2VuZXJhdG9yLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBMb2FkZXJDb21wb25lbnQsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFBob25lTnVtYmVyQ29tcG9uZW50LFxuICAgIFZhbGlkYXRpb25NZXNzYWdlQ29tcG9uZW50LFxuICAgIEF1dG9jb21wbGV0ZUNvbXBvbmVudCxcbiAgICBOZ1N3aXRjaERlZmF1bHQsXG4gICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICBJbnB1dEJhc2ljQ29tcG9uZW50LFxuICAgIEJ0bkNvbXBvbmVudCxcbiAgICBGdW5jdGlvbkNhbGxlcjIsXG4gICAgVG9BbnlQaXBlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBGb3JtR2VuZXJhdG9yQ29tcG9uZW50PFxuICBURm9ybUdyb3VwIGV4dGVuZHMge1xuICAgIFtLIGluIGtleW9mIFRGb3JtR3JvdXBdOiBURm9ybUdyb3VwW0tdO1xuICB9ID0gYW55LFxuPiBpbXBsZW1lbnRzIE9uSW5pdFxue1xuICBASW5wdXQoKSBrZXlGaWVsZDogJ2ZpZWxkJyB8ICdsYWJlbCcgPSAnZmllbGQnO1xuXG4gIEBPdXRwdXQoKSBvblN1Ym1pdCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgbWNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCdzdWJtaXNzaW9uUmVzcG9uc2UnKSBfc3VibWlzc2lvblJlc3BvbnNlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBJbnB1dCgpIHN1Ym1pdEZ1bmM6ICh2YWx1ZTogYW55KSA9PiBQcm9taXNlPGFueT47XG4gIEBJbnB1dCgpIHN1Ym1pdEJ0blRleHQ6IHN0cmluZyA9ICdTdWJtaXQnO1xuICBASW5wdXQoKSBzdWJtaXRCdG5UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgQElucHV0KCkgc3VibWl0U3VjY2Vzc1RleHQ6IHN0cmluZyA9ICdTYXZlJztcbiAgQElucHV0KCkgc2hvd1N1Ym1pdEJ0bjogYm9vbGVhbiA9IHRydWU7XG5cbiAgQElucHV0KCkgZ3JpZFN0eWxlOiBudW1iZXIgfCAnYXV0byc7XG4gIEBJbnB1dCgpIGdyaWRNRFN0eWxlOiBudW1iZXIgfCAnYXV0byc7XG4gIEBJbnB1dCgpIGdyaWRMR1N0eWxlOiBudW1iZXIgfCAnYXV0byc7XG4gIEBJbnB1dCgpIGdyaWRYWExTdHlsZTogbnVtYmVyIHwgJ2F1dG8nO1xuXG4gIEBJbnB1dCgpIGZvcm1HcmlkQ2xhc3M6IHN0cmluZztcbiAgQElucHV0KCkgdXNlTG9hZGVyOiBib29sZWFuO1xuICBASW5wdXQoKSBsb2FkaW5nOiBib29sZWFuO1xuXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIGZvcm06IEZvcm1Hcm91cDxURm9ybUdyb3VwPjtcbiAgZm9ybVNjaGVtYTogSUZvcm1TY2hlbWE8VEZvcm1Hcm91cD5bXTtcbiAgc3VibWlzc2lvblJlc3BvbnNlOiBhbnk7XG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlLCBhbGlhczogJ2Zvcm1TY2hlbWEnIH0pIHNldCBfZm9ybVNjaGVtYShcbiAgICB2OiBJRm9ybVNjaGVtYTxURm9ybUdyb3VwPltdLFxuICApIHtcbiAgICB0aGlzLmluaXQoY2xvbmVEZWVwKHYuZmlsdGVyKCh4KSA9PiB4KSkpO1xuICB9XG4gIEBJbnB1dCgnaXNTaG93Jykgc2V0IF9pc1Nob3codjogYm9vbGVhbikge1xuICAgIGlmICh2KSB0aGlzLmZvcm0/LmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgIGVsc2UgdGhpcy5mb3JtPy5lbmFibGUoKTtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHYpIHRoaXMuZm9ybT8uZGlzYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICBlbHNlIHRoaXMuZm9ybT8uZW5hYmxlKCk7XG4gICAgfSwgNTAwKTtcbiAgfVxuICBvcHRpb25zTWFwOiBJRm9ybU9wdGlvbnMgPSB7fTtcbiAgY2VsbENvdW50cnlDb2RlM3M6IElGb3JtT3B0aW9ucyA9IHt9O1xuICBzdWJzOiB7IGZpZWxkTmFtZTogc3RyaW5nOyBzdWI6IFN1YnNjcmlwdGlvbiB9W10gPSBbXTtcbiAgLy8gbWlzY0luZGV4OiBUTWlzY0luZGV4O1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB1UzogVXRpbGl0eVNlcnZpY2UpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7fVxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnMuZm9yRWFjaCgocykgPT4ge1xuICAgICAgcz8uc3ViPy51bnN1YnNjcmliZSgpO1xuICAgIH0pO1xuICAgIHRoaXMuc3VicyA9IFtdO1xuICB9XG4gIGluaXQoc2NoZW1hOiBJRm9ybVNjaGVtYVtdKSB7XG4gICAgLy8gZGVidWdnZXI7XG4gICAgdGhpcy5uZ09uRGVzdHJveSgpO1xuICAgIC8vIGRlYnVnZ2VyO1xuICAgIGlmIChzY2hlbWEpIGZvciAoY29uc3Qgc2NoZW1lIG9mIHNjaGVtYSkgdGhpcy5oYW5kbGVGb3JtU2NoZW1lKHNjaGVtZSk7XG4gICAgdGhpcy5mb3JtU2NoZW1hID0gc2NoZW1hO1xuICAgIGlmIChzY2hlbWEpXG4gICAgICBmb3IgKGNvbnN0IHNjaGVtZSBvZiBzY2hlbWEpXG4gICAgICAgIGlmIChzY2hlbWUudHJpZ2dlck9uQ2hhbmdlT25Jbml0KVxuICAgICAgICAgIHNjaGVtZS5vbkNoYW5nZUZ1bmMoXG4gICAgICAgICAgICB0aGlzLmZvcm0uZ2V0UmF3VmFsdWUoKSxcbiAgICAgICAgICAgIHRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpW3NjaGVtZS5maWVsZF0sXG4gICAgICAgICAgICB0aGlzLFxuICAgICAgICAgICk7XG4gIH1cbiAgaGFuZGxlRm9ybVNjaGVtZShzY2hlbWU6IElGb3JtU2NoZW1hKSB7XG4gICAgc2NoZW1lLmlkID0gdGhpcy51Uy5nZW5lcmF0ZVVVSUQoKTtcbiAgICBpZiAoc2NoZW1lLnN0YWNrZWQgPT0gbnVsbCkgc2NoZW1lLnN0YWNrZWQgPSB0cnVlO1xuICAgIGlmIChzY2hlbWUuc2hvd1ZhbGlkYXRpb25Nc2cgPT0gbnVsbCkgc2NoZW1lLnNob3dWYWxpZGF0aW9uTXNnID0gdHJ1ZTtcbiAgICBpZiAoXG4gICAgICBzY2hlbWUuYXV0b1BpY2tWYWx1ZUZpZWxkID09IG51bGwgJiZcbiAgICAgICghc2NoZW1lLnZhbHVlRmllbGQgfHwgIXNjaGVtZS5sYWJlbEZpZWxkKVxuICAgIClcbiAgICAgIHNjaGVtZS5hdXRvUGlja1ZhbHVlRmllbGQgPSB0cnVlO1xuXG4gICAgaWYgKHNjaGVtZS5vcHRpb25zSW5pdEZ1bmMpIHtcbiAgICAgIHNjaGVtZS5vcHRpb25zSW5pdEZ1bmMuc3Vic2NyaWJlKChyKSA9PiB7XG4gICAgICAgIHNjaGVtZS5vcHRpb25zID0gcjtcbiAgICAgICAgLy8gdGhpcy5vcHRpb25zTWFwW3NjaGVtZS5maWVsZF0gPSByO1xuICAgICAgfSk7XG4gICAgfVxuICAgIGlmIChzY2hlbWUub25DaGFuZ2VGdW5jKSB7XG4gICAgICBpZiAoc2NoZW1lLmRlYnVnKSBkZWJ1Z2dlcjtcbiAgICAgIGNvbnN0IHN1YiA9IHRoaXMuZm9ybT8uY29udHJvbHNbc2NoZW1lLmZpZWxkPy50b1N0cmluZygpXT8udmFsdWVDaGFuZ2VzXG4gICAgICAgIC5waXBlKGRlYm91bmNlVGltZSgwKSlcbiAgICAgICAgLnN1YnNjcmliZSgocikgPT4ge1xuICAgICAgICAgIHNjaGVtZS5vbkNoYW5nZUZ1bmModGhpcy5mb3JtLmdldFJhd1ZhbHVlKCksIHIsIHRoaXMpO1xuICAgICAgICB9KTtcbiAgICAgIHRoaXMuc3Vicy5wdXNoKHsgc3ViOiBzdWIsIGZpZWxkTmFtZTogc2NoZW1lLmZpZWxkPy50b1N0cmluZygpIH0pO1xuICAgIH1cbiAgfVxuICBkZXRhY2hGb3JtU2NoZW1lKHNjaGVtZUluZGV4PzogbnVtYmVyLCBmaWVsZE5hbWU/OiBzdHJpbmcpIHtcbiAgICB0aGlzLnN1YnNcbiAgICAgIC5maW5kKFxuICAgICAgICAoeCkgPT5cbiAgICAgICAgICB4LmZpZWxkTmFtZSA9PSB0aGlzLmZvcm1TY2hlbWFbc2NoZW1lSW5kZXhdPy5maWVsZCB8fFxuICAgICAgICAgIHguZmllbGROYW1lID09IGZpZWxkTmFtZSxcbiAgICAgIClcbiAgICAgID8uc3ViPy51bnN1YnNjcmliZSgpO1xuICB9XG4gIGFtZW5kRm9ybVNjaGVtZSA9IChcbiAgICBmaWVsZE5hbWU6IGtleW9mIFRGb3JtR3JvdXAsXG4gICAgZm9ybVNjaGVtZTogUGFydGlhbDxJRm9ybVNjaGVtYTxURm9ybUdyb3VwPj4sXG4gICkgPT4ge1xuICAgIC8vIGRlYnVnZ2VyO1xuICAgIGNvbnN0IGluZCA9IHRoaXMuZm9ybVNjaGVtYS5maW5kSW5kZXgoKHgpID0+IHguZmllbGQgPT0gZmllbGROYW1lKTtcbiAgICBpZiAoaW5kID4gLTEpIHtcbiAgICAgIHRoaXMuZm9ybVNjaGVtYVtpbmRdID0ge1xuICAgICAgICAuLi50aGlzLmZvcm1TY2hlbWFbaW5kXSxcbiAgICAgICAgLi4uKGZvcm1TY2hlbWUgYXMgYW55KSxcbiAgICAgIH07XG4gICAgICAvLyBkZWJ1Z2dlcjtcbiAgICAgIC8vIHRoaXMuZm9ybVNjaGVtYVtpbmRdLm9wdGlvbnMgPSBmb3JtU2NoZW1lLm9wdGlvbnM7XG4gICAgICAvLyBkZWJ1Z2dlcjtcbiAgICB9XG4gIH07XG5cbiAgbWNoYW5nZUVtaXR0ZXIoKSB7XG4gICAgdGhpcy5tY2hhbmdlLmVtaXQodGhpcy5mb3JtLmdldFJhd1ZhbHVlKCkpO1xuICB9XG5cbiAgZ2V0Rm9ybVNjaGVtZSA9IChmaWVsZE5hbWU6IGtleW9mIFRGb3JtR3JvdXApID0+IHtcbiAgICAvLyBkZWJ1Z2dlcjtcbiAgICBjb25zdCBpbmQgPSB0aGlzLmZvcm1TY2hlbWEuZmluZEluZGV4KCh4KSA9PiB4LmZpZWxkID09IGZpZWxkTmFtZSk7XG4gICAgcmV0dXJuIGluZCA+IC0xID8gdGhpcy5mb3JtU2NoZW1hW2luZF0gOiBudWxsO1xuICB9O1xuICBhZGRUb0Zvcm1TY2hlbWEoZm9ybVNjaGVtZTogSUZvcm1TY2hlbWEpIHtcbiAgICB0aGlzLnJlbW92ZUZyb21Gb3JtU2NoZW1hKGZvcm1TY2hlbWUuZmllbGQ/LnRvU3RyaW5nKCkpO1xuICAgIGNvbnN0IF9mcyA9IGNsb25lRGVlcChmb3JtU2NoZW1lKTtcbiAgICB0aGlzLmhhbmRsZUZvcm1TY2hlbWUoX2ZzKTtcbiAgICB0aGlzLmZvcm1TY2hlbWEucHVzaChfZnMpO1xuICB9XG4gIHJlbW92ZUZyb21Gb3JtU2NoZW1hKGZpZWxkTmFtZTogc3RyaW5nKSB7XG4gICAgY29uc3QgaW5kID0gdGhpcy5mb3JtU2NoZW1hLmZpbmRJbmRleCgoeCkgPT4geC5maWVsZCA9PSBmaWVsZE5hbWUpO1xuICAgIHRoaXMuZGV0YWNoRm9ybVNjaGVtZShpbmQsIGZpZWxkTmFtZSk7XG4gICAgaWYgKGluZCA+IC0xKSB7XG4gICAgICBpZiAodGhpcy5mb3JtU2NoZW1hW2luZF0/Lm9uUmVtb3ZlRnVuYylcbiAgICAgICAgdGhpcy5mb3JtU2NoZW1hW2luZF0/Lm9uUmVtb3ZlRnVuYyhcbiAgICAgICAgICB0aGlzLmZvcm0uZ2V0UmF3VmFsdWUoKSBhcyBhbnksXG4gICAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW2ZpZWxkTmFtZV0sXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgKTtcbiAgICAgIHRoaXMuZm9ybVNjaGVtYS5zcGxpY2UoaW5kLCAxKTtcbiAgICB9XG4gIH1cbiAgc2V0T3B0aW9uTGFiZWwoJGV2ZW50OiBhbnksIHNjaGVtZTogSUZvcm1TY2hlbWEpIHtcbiAgICBzY2hlbWUuc2VsZWN0ZWRPcHRpb25MYWJlbCA9ICRldmVudDtcbiAgfVxuICBhc3luYyBzdWJtaXQoKSB7XG4gICAgaWYgKHRoaXMuc3VibWl0RnVuYykge1xuICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgIHRoaXMub25TdWJtaXQuZW1pdCh0aGlzLmZvcm0udmFsdWUpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgdGhpcy5zdWJtaXNzaW9uUmVzcG9uc2UgPSBhd2FpdCB0aGlzLnN1Ym1pdEZ1bmModGhpcy5mb3JtLnZhbHVlKTtcbiAgICAgICAgdGhpcy51Uy5pbmZvKHRoaXMuc3VibWl0U3VjY2Vzc1RleHQsIDEpO1xuICAgICAgICB0aGlzLl9zdWJtaXNzaW9uUmVzcG9uc2UuZW1pdCh0aGlzLnN1Ym1pc3Npb25SZXNwb25zZSk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICB0aGlzLnVTLmluZm8oZXJyb3IsIDApO1xuICAgICAgfVxuICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgfSBlbHNlIHRoaXMub25TdWJtaXQuZW1pdCh0aGlzLmZvcm0udmFsdWUpO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUZvcm1TY2hlbWE8XG4gIFRGb3JtR3JvdXAgZXh0ZW5kcyB7XG4gICAgW0sgaW4ga2V5b2YgVEZvcm1Hcm91cF06IEFic3RyYWN0Q29udHJvbDxhbnksIGFueT47XG4gIH0gPSBhbnksXG4gIENvbXBvbmVudCA9IEZvcm1HZW5lcmF0b3JDb21wb25lbnQ8VEZvcm1Hcm91cD4sXG4gIFRPcHRpb25MYWJlbFR5cGUgPSBPcHRpb25MYWJlbFR5cGUsXG4gIFRJbnB1dFR5cGUgPSBJbnB1dFR5cGUsXG4+IHtcbiAgYXN5bmNWYWxpZGF0b3JzPzogQXN5bmNWYWxpZGF0b3JGbltdO1xuICBhdXRvUGlja1ZhbHVlRmllbGQ/OiBib29sZWFuO1xuICBjaGVja2VkPzogYm9vbGVhbjtcbiAgY2xlYXJPbkRpc2FibGU/OiBib29sZWFuO1xuICBjbHM/OiBzdHJpbmc7XG4gIGNvdW50cnlDb2RlMz86IHN0cmluZztcbiAgY2hpbGRyZW4/OiBJRm9ybVNjaGVtYTxURm9ybUdyb3VwPltdO1xuICBkZWNpbWFsUG9pbnRzPzogbnVtYmVyO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIGRpc2FibGVkSWY/OiAocm93OiBhbnksIGNlbGxGaWVsZD86IHN0cmluZykgPT4gYm9vbGVhbjtcbiAgaGlkZUlmRnVuYz86IChyb3cpID0+IGJvb2xlYW47XG4gIGZpZWxkOiBrZXlvZiBURm9ybUdyb3VwO1xuICBmb3JtPzogRm9ybUdyb3VwPFRGb3JtR3JvdXA+O1xuICBnZXRDb3VudHJ5Q29kZTNLZXk/OiBzdHJpbmc7XG4gIGhpZGRlbj86IGJvb2xlYW47XG4gIGhpbnQ/OiBzdHJpbmc7XG4gIGlkPzogc3RyaW5nO1xuICBpc1JlcXVpcmVkPzogYm9vbGVhbjtcbiAgaXNTZWFyY2hGaWVsZD86IGJvb2xlYW47XG4gIGxhYmVsPzogc3RyaW5nO1xuICBsYWJlbEZpZWxkPzogc3RyaW5nO1xuICBsYWJlbFR5cGU/OiBUT3B0aW9uTGFiZWxUeXBlO1xuICBvcHRpb25MYWJlbEZvcm1hdHRlcj86IChyb3cpID0+IHN0cmluZztcbiAgbWF4PzogbnVtYmVyO1xuICBtaW4/OiBudW1iZXI7XG4gIG5vRm9ybWF0PzogYm9vbGVhbjtcbiAgb3B0aW9uRm9ybWF0dGVyPzogKGl0ZW06IGFueSkgPT4gc3RyaW5nO1xuICBvcHRpb25zPzogYW55W107XG4gIG9wdGlvbnNBc3luYz86IE9ic2VydmFibGU8YW55W10+IHwgUHJvbWlzZTxhbnlbXT47XG4gIG9wdGlvbnNJbml0RnVuYz86IE9ic2VydmFibGU8YW55W10+O1xuICBvcHRpb25zS2V5Pzogc3RyaW5nO1xuICBwbGFjZWhvbGRlcj86IHN0cmluZztcbiAgc2VhcmNoRnVuYz86ICguLi5hcmdzKSA9PiBhbnk7XG4gIHNldEFzQ291bnRyeUNvZGUzPzogYm9vbGVhbjtcbiAgc2hvd1ZhbGlkYXRpb24/OiBib29sZWFuO1xuICBzaG93VmFsaWRhdGlvbkljb24/OiBib29sZWFuO1xuICB0ZW1wbGF0ZVZhbHVlPzogYW55O1xuICB0eXBlPzogVElucHV0VHlwZTtcbiAgdmFsaWRhdG9ycz86IFZhbGlkYXRvckZuW107XG4gIHZhbHVlPzogYW55O1xuICB2YWx1ZUZpZWxkPzogc3RyaW5nO1xuICBvcHRpb25zRnVuYz86ICguLi52YWw6IGFueSkgPT4gT2JzZXJ2YWJsZTxhbnlbXT47XG4gIHRyaWdnZXJPbkNoYW5nZU9uSW5pdD86IGJvb2xlYW47XG4gIGZvcm1hdHRlcj86IChcbiAgICByb3c6IHsgW0sgaW4ga2V5b2YgVEZvcm1Hcm91cF06IGFueSB9LFxuICAgIGZpZWxkTmFtZToga2V5b2YgVEZvcm1Hcm91cCxcbiAgKSA9PiBzdHJpbmc7XG4gIGV4dHJhPzogYW55O1xuICBvbkNoYW5nZUZ1bmM/OiAoXG4gICAgcm93OiB7IFtLIGluIGtleW9mIFRGb3JtR3JvdXBdPzogVEZvcm1Hcm91cFtLXVsndmFsdWUnXSB9LFxuICAgIGNlbGxWYWx1ZT86IGFueSxcbiAgICBfdGhpcz86IENvbXBvbmVudCxcbiAgKSA9PiBPYnNlcnZhYmxlPGFueVtdPiB8IGFueTtcbiAgb25SZW1vdmVGdW5jPzogKFxuICAgIHJvdzogeyBbSyBpbiBrZXlvZiBURm9ybUdyb3VwXTogVEZvcm1Hcm91cFtLXVsndmFsdWUnXSB9LFxuICAgIGNlbGw/OiBhbnksXG4gICAgX3RoaXM/OiBDb21wb25lbnQsXG4gICkgPT4gYW55O1xuICBzZWxlY3RlZE9wdGlvbkxhYmVsPzogc3RyaW5nO1xuICBzdGFja2VkPzogYm9vbGVhbjtcbiAgZGVidWc/OiBib29sZWFuO1xuICBzaG93VmFsaWRhdGlvbk1zZz86IGJvb2xlYW47XG4gIGRvbnRGb3JtYXRBc0lucHV0PzogYm9vbGVhbjtcbiAgc2hvd1JlcXVpcmVkVGFnPzogYm9vbGVhbjtcbiAgaWNvbj86IEljb25UeXBlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElGb3JtT3B0aW9ucyB7XG4gIFtmaWVsZDogc3RyaW5nXTogYW55O1xufVxuIiwiPGxvYWRlciBbbG9hZGluZ109XCJ1c2VMb2FkZXIgJiYgbG9hZGluZ1wiPlxuICA8Zm9ybT5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInJvdyByb3ctY29scy17e2dyaWRTdHlsZX19IHJvdy1jb2xzLW1kLXt7Z3JpZE1EU3R5bGV9fSByb3ctY29scy1sZy17e2dyaWRMR1N0eWxlfX0gcm93LWNvbHMteHhsLXt7Z3JpZFhYTFN0eWxlfX0gYWxpZ24taXRlbXMtY2VudGVyIHt7Zm9ybUdyaWRDbGFzc319XCI+XG4gICAgICBAZm9yIChzY2hlbWUgb2YgZm9ybVNjaGVtYTsgdHJhY2sgdVMudHJhY2tCeUlEKCRpbmRleCwgc2NoZW1lKSkge1xuXG4gICAgICBAaWYgKCFzY2hlbWUuaGlkZGVuICYmICghc2NoZW1lLmhpZGVJZkZ1bmMgfHwgIXNjaGVtZS5oaWRlSWZGdW5jKGZvcm0udmFsdWUpKSkge1xuICAgICAgPGRpdiBjbGFzcz1cImNvbCB7e3NjaGVtZS5jbHN9fSBcIj5cblxuICAgICAgICBAc3dpdGNoICh0cnVlKSB7XG4gICAgICAgIEBjYXNlIChzY2hlbWUudHlwZSA9PSAndGVsJykge1xuXG4gICAgICAgIDxhcHAtcGhvbmUtbnVtYmVyIFtmb3JtXT1cInNjaGVtZS5mb3JtfHxmb3JtXCIgW2xhYmVsXT1cInNjaGVtZS5sYWJlbFwiIFtjbGVhck9uRGlzYWJsZV09XCJzY2hlbWUuY2xlYXJPbkRpc2FibGVcIlxuICAgICAgICAgIFtzdGFja2VkXT1cInNjaGVtZS5zdGFja2VkXCIgW25hbWVdPVwic2NoZW1lLmZpZWxkXCIgW3Nob3dMYWJlbF09XCJmYWxzZVwiIFtub0Zvcm1hdF09XCJzY2hlbWUubm9Gb3JtYXRcIlxuICAgICAgICAgIFtkZWJ1Z109XCJzY2hlbWUuZGVidWdcIiAobWNoYW5nZSk9XCJtY2hhbmdlRW1pdHRlcigpXCIgW3Nob3dWYWxpZGF0aW9uXT1cInNjaGVtZS5zaG93VmFsaWRhdGlvblwiXG4gICAgICAgICAgW2F1dG9QaWNrVmFsdWVGaWVsZF09XCJzY2hlbWUuYXV0b1BpY2tWYWx1ZUZpZWxkXCIgW3Nob3dSZXF1aXJlZFRhZ109XCJzY2hlbWUuc2hvd1JlcXVpcmVkVGFnXCJcbiAgICAgICAgICBbc2hvd1ZhbGlkYXRpb25Nc2ddPVwic2NoZW1lLnNob3dWYWxpZGF0aW9uTXNnXCIgW3Nob3dWYWxpZGF0aW9uSWNvbl09XCJzY2hlbWUuc2hvd1ZhbGlkYXRpb25JY29uXCJcbiAgICAgICAgICBbY291bnRyeUNvZGUzXT1cImNlbGxDb3VudHJ5Q29kZTNzW3NjaGVtZS5nZXRDb3VudHJ5Q29kZTNLZXldIHx8IHNjaGVtZS5jb3VudHJ5Q29kZTNcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJzY2hlbWUuZGlzYWJsZWR8fChzY2hlbWUuZGlzYWJsZWRJZnxmdW5jdGlvbkNhbGxlcjI6Zm9ybS52YWx1ZTooc2NoZW1lLmZpZWxkfHRvQW55KSlcIiAvPlxuXG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKHNjaGVtZS50eXBlID09ICdhdXRvY29tcGxldGUnKSB7XG5cbiAgICAgICAgPGFwcC1hdXRvY29tcGxldGUgW2Zvcm1dPVwic2NoZW1lLmZvcm18fGZvcm1cIiBbbGFiZWxdPVwic2NoZW1lLmxhYmVsXCIgW2NsZWFyT25EaXNhYmxlXT1cInNjaGVtZS5jbGVhck9uRGlzYWJsZVwiXG4gICAgICAgICAgW3N0YWNrZWRdPVwic2NoZW1lLnN0YWNrZWRcIiBbbGFiZWxGaWVsZF09XCJzY2hlbWUubGFiZWxGaWVsZFwiIFtub0Zvcm1hdF09XCJzY2hlbWUubm9Gb3JtYXRcIlxuICAgICAgICAgIFtsYWJlbFR5cGVdPVwic2NoZW1lLmxhYmVsVHlwZVwiIChtY2hhbmdlKT1cIm1jaGFuZ2VFbWl0dGVyKClcIlxuICAgICAgICAgIChtU2VsZWN0ZWRPcHRpb25MYWJlbCk9XCJzZXRPcHRpb25MYWJlbCgkZXZlbnQsc2NoZW1lKVwiIFtuYW1lXT1cInNjaGVtZS5maWVsZFwiIFtkZWJ1Z109XCJzY2hlbWUuZGVidWdcIlxuICAgICAgICAgIFtzaG93UmVxdWlyZWRUYWddPVwic2NoZW1lLnNob3dSZXF1aXJlZFRhZ1wiIFtvcHRpb25Gb3JtYXR0ZXJdPVwic2NoZW1lLm9wdGlvbkZvcm1hdHRlclwiXG4gICAgICAgICAgW3ZhbHVlRmllbGRdPVwic2NoZW1lLnZhbHVlRmllbGRcIiBbb3B0aW9uc0Z1bmNdPVwic2NoZW1lLm9wdGlvbnNGdW5jXCJcbiAgICAgICAgICBbc2hvd1ZhbGlkYXRpb25Nc2ddPVwic2NoZW1lLnNob3dWYWxpZGF0aW9uTXNnXCIgW2F1dG9QaWNrVmFsdWVGaWVsZF09XCJzY2hlbWUuYXV0b1BpY2tWYWx1ZUZpZWxkXCJcbiAgICAgICAgICBbb3B0aW9uc109XCIgc2NoZW1lLm9wdGlvbnN8fG9wdGlvbnNNYXBbc2NoZW1lLmZpZWxkfHRvQW55XVwiIFtoaW50XT1cInNjaGVtZS5oaW50XCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwic2NoZW1lLmRpc2FibGVkfHwoc2NoZW1lLmRpc2FibGVkSWZ8ZnVuY3Rpb25DYWxsZXIyOiBmb3JtLnZhbHVlOihzY2hlbWUuZmllbGR8dG9BbnkpKVwiIC8+XG5cbiAgICAgICAgfVxuICAgICAgICBAZGVmYXVsdCB7XG5cbiAgICAgICAgPGFwcC1pbnB1dC1iYXNpYyBbbm9Gb3JtYXRdPVwic2NoZW1lLm5vRm9ybWF0XCIgW25hbWVdPVwic2NoZW1lLmZpZWxkXCIgW2Zvcm1dPVwic2NoZW1lLmZvcm18fGZvcm1cIlxuICAgICAgICAgIFtjbGVhck9uRGlzYWJsZV09XCJzY2hlbWUuY2xlYXJPbkRpc2FibGVcIiBbdHlwZV09XCJzY2hlbWUudHlwZVwiIFt2YWx1ZUZpZWxkXT1cInNjaGVtZS52YWx1ZUZpZWxkXCJcbiAgICAgICAgICBbYXV0b1BpY2tWYWx1ZUZpZWxkXT1cInNjaGVtZS5hdXRvUGlja1ZhbHVlRmllbGRcIiBbc3RhY2tlZF09XCJzY2hlbWUuc3RhY2tlZFwiIFtsYWJlbFR5cGVdPVwic2NoZW1lLmxhYmVsVHlwZVwiXG4gICAgICAgICAgW2NoZWNrZWRdPVwic2NoZW1lLmNoZWNrZWRcIiBbc2hvd1ZhbGlkYXRpb25dPVwiISFzY2hlbWUuYXN5bmNWYWxpZGF0b3JzXCJcbiAgICAgICAgICBbc2hvd1ZhbGlkYXRpb25JY29uXT1cIiEhc2NoZW1lLmFzeW5jVmFsaWRhdG9yc1wiIFtkZWJ1Z109XCJzY2hlbWUuZGVidWdcIiAobWNoYW5nZSk9XCJtY2hhbmdlRW1pdHRlcigpXCJcbiAgICAgICAgICBbc2hvd1JlcXVpcmVkVGFnXT1cInNjaGVtZS5zaG93UmVxdWlyZWRUYWdcIiBbbGFiZWxGaWVsZF09XCJzY2hlbWUubGFiZWxGaWVsZFwiXG4gICAgICAgICAgW29wdGlvbkZvcm1hdHRlcl09XCJzY2hlbWUub3B0aW9uRm9ybWF0dGVyXCIgKG1TZWxlY3RlZE9wdGlvbkxhYmVsKT1cInNldE9wdGlvbkxhYmVsKCRldmVudCxzY2hlbWUpXCJcbiAgICAgICAgICBbb3B0aW9uc109XCJzY2hlbWUub3B0aW9uc3x8b3B0aW9uc01hcFtzY2hlbWUuZmllbGR8dG9BbnldXCIgW2RlY2ltYWxQb2ludHNdPVwic2NoZW1lLmRlY2ltYWxQb2ludHNcIlxuICAgICAgICAgIFtoaW50XT1cInNjaGVtZS5oaW50XCIgW21heF09XCJzY2hlbWUubWF4XCIgW21pbl09XCJzY2hlbWUubWluXCIgW3BsYWNlaG9sZGVyXT1cInNjaGVtZS5wbGFjZWhvbGRlclwiXG4gICAgICAgICAgW2xhYmVsXT1cInNjaGVtZS5sYWJlbFwiIFtzaG93VmFsaWRhdGlvbk1zZ109XCJzY2hlbWUuc2hvd1ZhbGlkYXRpb25Nc2dcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJzY2hlbWUuZGlzYWJsZWR8fChzY2hlbWUuZGlzYWJsZWRJZnxmdW5jdGlvbkNhbGxlcjI6Zm9ybS52YWx1ZTooc2NoZW1lLmZpZWxkfHRvQW55KSlcIiAvPlxuICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgPC9kaXY+XG4gICAgICB9XG5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwicm93IHJvdy1jb2xzLWF1dG8ganVzdGlmeS1jb250ZW50LWVuZFwiPlxuICAgICAgPGRpdiBjbGFzcz1cIlwiPlxuICAgICAgICBAaWYgKHNob3dTdWJtaXRCdG4gKSB7XG4gICAgICAgIDxhcHAtYnRuIFt0ZXh0XT1cInN1Ym1pdEJ0blRleHRcIiBhY3Rpb25UeXBlPVwic3VibWl0XCIgZ3JvdXA9XCJzdWJtaXRcIiBbZm9ybV09XCJmb3JtXCIgKG1jbGljayk9XCJzdWJtaXQoKVwiIC8+XG4gICAgICAgIH1cbiAgICAgICAgQGlmIChzdWJtaXRCdG5UZW1wbGF0ZSkge1xuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzdWJtaXRCdG5UZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Zvcm0+XG48L2xvYWRlcj4iXX0=