ets-fe-ng-sdk 17.0.39 → 17.0.40

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.
@@ -365,4 +365,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImpor
365
365
  }], searchObservableFunc: [{
366
366
  type: Input
367
367
  }] } });
368
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluZC1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9SZXVzYWJsZXMvcmV1c2FibGUtY29tcHMvZmluZC1pdGVtL2ZpbmQtaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ldHMtZmUtbmctc2RrL3NyYy9saWIvUmV1c2FibGVzL3JldXNhYmxlLWNvbXBzL2ZpbmQtaXRlbS9maW5kLWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBbUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFlLE1BQU0sZUFBZSxDQUFDO0FBQ2hJLE9BQU8sRUFBMkMsU0FBUyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RILE9BQU8sRUFBRSxlQUFlLEVBQTRCLFlBQVksRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBR3RHLE9BQU8sRUFBb0IsbUJBQW1CLEVBQUUsTUFBTSw4REFBOEQsQ0FBQztBQUdySCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sa0VBQWtFLENBQUM7QUFDdkYsT0FBTyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNoRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4REFBOEQsQ0FBQztBQUNuRyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDNUUsT0FBTyxFQUFFLG1CQUFtQixFQUFtQixNQUFNLHdEQUF3RCxDQUFDO0FBQzlHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdFQUFnRSxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGtGQUFr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b25lbnQsIE9uSW5pdCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgVmlld0NoaWxkLCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtQXJyYXksIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24sIGRlYm91bmNlVGltZSwgZmlsdGVyLCBsYXN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBVc2VyQWN0aXZpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vUmV1c2FibGVzL3JldXNhYmxlLXBhZ2VzL3VzZXItYWN0aXZpdHkvdWEtZXh0cmFzL3VzZXItYWN0aXZpdHkuc2VydmljZSc7XG5pbXBvcnQgeyBVdGlsaXR5U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL1NlcnZpY2VzL3V0aWxpdHkuc2VydmljZSc7XG5pbXBvcnQgeyBJVGFibGVTZWFyY2hSZXNwLCBUYWJsZUh0dHBzQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL2NvbXBvbmVudHMvdGFibGUtaHR0cHMvdGFibGUtaHR0cHMuY29tcG9uZW50JztcbmltcG9ydCB7IElGb3JtT3B0aW9ucywgSUZvcm1TY2hlbWEgfSBmcm9tICcuLi8uLi8uLi9TaGFyZWQvbW9kZWxzL2Zvcm0tc2NoZW1hLm1vZGVsJztcbmltcG9ydCB7IElPYmplY3RMaXRlcmFsLCBJUm93T3B0aW9uLCBJU2VhcmNoUmVzcG9uc2UsIElTdHJpY3RGb3JtR3JvdXAsIElucHV0VHlwZSwgU29ydFR5cGUsIFRhYmxlQ29sIH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL21vZGVscy9pbmRleC5tb2RlbCc7XG5pbXBvcnQgeyBFVUEgfSBmcm9tICcuLi8uLi9yZXVzYWJsZS1wYWdlcy91c2VyLWFjdGl2aXR5L3VhLWV4dHJhcy91c2VyLWFjdGl2aXR5Lm1vZGVsJztcbmltcG9ydCB7IEZ1bmN0aW9uQ2FsbGVyMiwgVG9BbnlQaXBlIH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL3BpcGVzL3V0aWxpdHkucGlwZSc7XG5pbXBvcnQgeyBUYWJsZVBsYWluQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL2NvbXBvbmVudHMvdGFibGUtcGxhaW4vdGFibGUtcGxhaW4uY29tcG9uZW50JztcbmltcG9ydCB7IEJ0bkNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9jb21wb25lbnRzL2J0bi9idG4uY29tcG9uZW50JztcbmltcG9ydCB7IElucHV0QmFzaWNDb21wb25lbnQsIE9wdGlvbkxhYmVsVHlwZSB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9jb21wb25lbnRzL2lucHV0L2lucHV0LWJhc2ljLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBdXRvY29tcGxldGVDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9TaGFyZWQvY29tcG9uZW50cy9hdXRvY29tcGxldGUvYXV0b2NvbXBsZXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBWYWxpZGF0aW9uTWVzc2FnZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9jb21wb25lbnRzL2lucHV0L3ZhbGlkYXRpb24tbWVzc2FnZS92YWxpZGF0aW9uLW1lc3NhZ2UuY29tcG9uZW50JztcbmltcG9ydCB7IFBob25lTnVtYmVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL2NvbXBvbmVudHMvcGhvbmUtbnVtYmVyL3Bob25lLW51bWJlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgTmdJZiwgTmdGb3IsIE5nU3dpdGNoLCBOZ1N3aXRjaENhc2UsIE5nU3dpdGNoRGVmYXVsdCwgQXN5bmNQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IExvYWRlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9jb21wb25lbnRzL2xvYWRlci9sb2FkZXIuY29tcG9uZW50JztcbmltcG9ydCB7IGNsb25lRGVlcCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBDb25maWcgfSBmcm9tICcuLi8uLi8uLi9jb25maWdzL2luZGV4LmNvbmZpZyc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEJhc2VGb3JtR2VuZXJhdG9yLCBJQmFzZUZvcm1TY2hlbWEgfSBmcm9tICcuLi8uLi8uLi9TaGFyZWQvY29tcG9uZW50cy9mb3JtLWdlbmVyYXRvci9mb3JtLWdlbmVyYXRvci5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtZmluZC1pdGVtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpbmQtaXRlbS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2ZpbmQtaXRlbS5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgTG9hZGVyQ29tcG9uZW50LFxuICAgIE5nSWYsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgTmdGb3IsXG4gICAgTmdTd2l0Y2gsXG4gICAgTmdTd2l0Y2hDYXNlLFxuICAgIFBob25lTnVtYmVyQ29tcG9uZW50LFxuICAgIFZhbGlkYXRpb25NZXNzYWdlQ29tcG9uZW50LFxuICAgIEF1dG9jb21wbGV0ZUNvbXBvbmVudCxcbiAgICBOZ1N3aXRjaERlZmF1bHQsXG4gICAgSW5wdXRCYXNpY0NvbXBvbmVudCxcbiAgICBCdG5Db21wb25lbnQsXG4gICAgVGFibGVIdHRwc0NvbXBvbmVudCxcbiAgICBUYWJsZVBsYWluQ29tcG9uZW50LFxuICAgIEFzeW5jUGlwZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIEZ1bmN0aW9uQ2FsbGVyMixcbiAgICBUb0FueVBpcGUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEZpbmRJdGVtQ29tcG9uZW50PFRRdWVyeSBleHRlbmRzIElPYmplY3RMaXRlcmFsID0gSU9iamVjdExpdGVyYWwsIFRSb3cgZXh0ZW5kcyBJT2JqZWN0TGl0ZXJhbCA9IElPYmplY3RMaXRlcmFsPlxuICBleHRlbmRzIEJhc2VGb3JtR2VuZXJhdG9yPFRRdWVyeT5cbiAgaW1wbGVtZW50cyBPbkluaXRcbntcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gc29ydCBzY2hlbWFcbiAgICovXG4gIEBJbnB1dCgpIGF1dG9Gb3JtYXRTY2hlbWEgPSB0cnVlO1xuICBASW5wdXQoKSBhdXRvT3JkZXIgPSB0cnVlO1xuICBASW5wdXQoKSBjZW50ZXJDZWxsczogYm9vbGVhbjtcbiAgQElucHV0KCkgZGlzcGxheWVkQ29sdW1uczogVGFibGVDb2xbXTtcbiAgLyoqXG4gICAqIFJvdyBncmlkIGNvbmZpZ3VyYXRpb25cbiAgICovXG4gIEBJbnB1dCgpIGdyaWRDbGFzcyA9ICdjb2wtbWQtNCBjb2wteHhsLTMnO1xuICBASW5wdXQoKSBoaWRlRm9ybSA9IGZhbHNlO1xuICBASW5wdXQoKSBleHBhbmRlZFJvd1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBASW5wdXQoKSBpc1RhYmxlUGFnaW5hdGVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIGlzRXhwYW5kYWJsZSA9IGZhbHNlO1xuICBASW5wdXQoKSBsYWJlbDogc3RyaW5nO1xuICBASW5wdXQoKSBub3dyYXAgPSBmYWxzZTtcbiAgQElucHV0KCdyb3dPcHRpb25zJykgb3B0aW9uczogSVJvd09wdGlvbltdO1xuICBASW5wdXQoKSBvcmRlckRpcmVjdGlvbjogU29ydFR5cGUgPSAnYXNjJztcbiAgQElucHV0KCkgb3JkZXJGaWVsZDoga2V5b2YgVFJvdztcbiAgQElucHV0KCkgcGFnZVNpemUgPSAxMDtcbiAgQElucHV0KCkgc2VhcmNoRnVuY3Rpb246IChkYXRhOiBhbnkpID0+IE9ic2VydmFibGU8VFJvd1tdIHwgeyBjb250ZW50OiBUUm93W10gfT47XG4gIEBJbnB1dCgpIHNob3dEYXRhID0gdHJ1ZTtcbiAgQElucHV0KCkgc2hvd0V4cG9ydCA9IHRydWU7XG4gIEBJbnB1dCgpIHNob3dGaWx0ZXIgPSBmYWxzZTtcbiAgQElucHV0KCkgc2hvd1JlZnJlc2hCdG46IGJvb2xlYW47XG4gIEBJbnB1dCgpIHN0YXJ0U2VjdGlvblRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxIVE1MRWxlbWVudD47XG4gIGZvcm06IEZvcm1Hcm91cDtcbiAgLyoqXG4gICAqIFVzZWQgdG8gc3BlY2lmeSBpZiB0aGUgc2VhcmNoIGJ1dHRvbiBzaG91bGQgYmUgc2hvd25cbiAgICovXG4gIEBJbnB1dCgpIHNob3dTZWFyY2hCdG4gPSB0cnVlO1xuICAvKipcbiAgICogVXNlZCB0byBzcGVjaWZ5IGlmIHRoZSBjbGVhciBmb3JtIGJ1dHRvbiBzaG91bGQgYmUgc2hvd25cbiAgICovXG4gIEBJbnB1dCgpIHNob3dDbGVhckJ0biA9IHRydWU7XG4gIC8qKlxuICAgKiBVc2VkIHRvIHNwZWNpZnkgaWYgdmFsaWRhdGlvbiBtZXNzYWdlcyBzaG91bGQgYmUgc2hvd25cbiAgICovXG4gIEBJbnB1dCgpIHNob3dWYWxpZGF0aW9uTXNnID0gdHJ1ZTtcbiAgLyoqXG4gICAqIFVzZWQgdG8gc3BlY2lmeSBpZiBzaG93IGFkZGl0aW9uYWwgY29sdW1uIGJ1dHRvbiB3aWlsIGJlIGRpc3BsYXllZCBvciBub3QuXG4gICAqL1xuICBASW5wdXQoKSBzaG93QWRkaXRpb25hbENvbHVtbnMgPSB0cnVlO1xuICBASW5wdXQoKSBzbWFsbGVyRm9udHMgPSBmYWxzZTtcbiAgLyoqIFVzZSBjaGVja2JveGVzICovXG4gIEBJbnB1dCgpIHVzZVNlbGVjdGlvbiA9IGZhbHNlO1xuICBjZWxsT3B0aW9uczogSUZvcm1PcHRpb25zID0ge307XG4gIGNlbGxDb3VudHJ5Q29kZTNzOiBJRm9ybU9wdGlvbnMgPSB7fTtcbiAgQE91dHB1dCgncm93Q2xpY2snKSBfcm93Q2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQFZpZXdDaGlsZChUYWJsZUh0dHBzQ29tcG9uZW50KSB0YWJsZUhUVFBTUkVGOiBUYWJsZUh0dHBzQ29tcG9uZW50PFRSb3c+O1xuICBAVmlld0NoaWxkKFRhYmxlUGxhaW5Db21wb25lbnQpIHRhYmxlUGxhaW5SZWY6IFRhYmxlUGxhaW5Db21wb25lbnQ8VFJvdz47XG4gIGRhdGE6IFRSb3dbXTtcbiAgZm9ybVNjaGVtYTogSVNlYXJjaEZvcm1TY2hlbWE8VFF1ZXJ5LCBUUm93PltdO1xuICBsb2FkaW5nOiBib29sZWFuO1xuICBzZWFyY2hGb3JtOiBGb3JtR3JvdXA7XG4gIHN0YW5kYWxvbmVGb3JtOiBGb3JtR3JvdXA7XG4gIC8qKlxuICAgKiBVc2VkIHRvIHNwZWNpZnkgaWYgc2hvdyBjcmVhdGUgYnV0dG9uIGlzIG5lZWRlZC5cbiAgICovXG4gIEBJbnB1dCgpIGNyZWF0ZUJ1dHRvbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgnZm9ybVNjaGVtYScpIHNldCBfZm9ybVNjaGVtYSh2OiBJU2VhcmNoRm9ybVNjaGVtYTxUUm93PltdKSB7XG4gICAgdGhpcy5pbml0KGNsb25lRGVlcCh2Py5maWx0ZXIoKHgpID0+IHgpKSk7XG4gIH1cblxuICBASW5wdXQoKSBzZWFyY2hPYnNlcnZhYmxlRnVuYzogKGRhdGE6IGFueSkgPT4gT2JzZXJ2YWJsZTxJVGFibGVTZWFyY2hSZXNwPFRSb3c+PjtcbiAgcmVhZG9ubHkgZGVsaW1pdGVyRmllbGQgPSAnfn5+JztcbiAgcmVhZG9ubHkgZGVsaW1pdGVyV29yZCA9ICd+fic7XG4gIHByb3RlY3RlZCBzdWJzOiB7IGZpZWxkTmFtZTogc3RyaW5nOyBzdWI6IFN1YnNjcmlwdGlvbiB9W10gPSBbXTtcbiAgcHJvdGVjdGVkIHNlYXJjaFRyaWdnZXIgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJvdGVjdGVkIHN1YnMyID0gdGhpcy51Uy5jcmVhdGVTdWJzY3JpcHRpb25NYW5hZ2VyKCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHVTOiBVdGlsaXR5U2VydmljZSxcbiAgICBwdWJsaWMgdWFTOiBVc2VyQWN0aXZpdHlTZXJ2aWNlLFxuICAgIHB1YmxpYyByb3V0ZXI6IFJvdXRlcixcbiAgICBwdWJsaWMgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICApIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgLy8gIHRoaXMuZmV0Y2hTYXZlZFF1ZXJ5KClcbiAgICB0aGlzLnN1YnMyLnB1c2goXG4gICAgICB0aGlzLnNlYXJjaFRyaWdnZXJcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgZGVib3VuY2VUaW1lKDEwMCksXG4gICAgICAgICAgZmlsdGVyKCh4KSA9PiB4KSxcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKChyKSA9PiB7XG4gICAgICAgICAgdGhpcy5fc2VhcmNoKCk7XG4gICAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnMuZm9yRWFjaCgocykgPT4ge1xuICAgICAgcz8uc3ViPy51bnN1YnNjcmliZSgpO1xuICAgIH0pO1xuICAgIHRoaXMuc3VicyA9IFtdO1xuICAgIHRoaXMuc3ViczI/LmNsZWFyKCk7XG4gIH1cblxuICBmZXRjaFNhdmVkUXVlcnkoKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHByZXZRdWVyeVN0cmluZyA9IHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbU1hcC5nZXQoJ3EnKTtcbiAgICAgIGlmIChwcmV2UXVlcnlTdHJpbmcpIHtcbiAgICAgICAgY29uc3QgcHJldlF1ZXJ5OiB7IFtmOiBzdHJpbmddOiBhbnkgfSA9IHt9O1xuICAgICAgICBjb25zdCBmaWVsZHMgPSBwcmV2UXVlcnlTdHJpbmcuc3BsaXQodGhpcy5kZWxpbWl0ZXJGaWVsZCk7XG4gICAgICAgIGZvciAoY29uc3QgZmllbGQgb2YgZmllbGRzKSB7XG4gICAgICAgICAgY29uc3QgZiA9IGZpZWxkLnNwbGl0KHRoaXMuZGVsaW1pdGVyV29yZCk7XG4gICAgICAgICAgLy8gZGVidWdnZXI7XG4gICAgICAgICAgaWYgKGZbMV0gPT0gbnVsbCB8fCBmWzFdID09ICdudWxsJykgY29udGludWU7XG4gICAgICAgICAgcHJldlF1ZXJ5W2ZbMF1dID0gZlsxXTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNlYXJjaEZvcm0/LnBhdGNoVmFsdWUocHJldlF1ZXJ5KTtcbiAgICAgICAgaWYgKE9iamVjdC52YWx1ZXMocHJldlF1ZXJ5KS5zb21lKCh4KSA9PiB4ICE9IG51bGwpKSB0aGlzLnNlYXJjaCgpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICB9XG4gIH1cblxuICBpbml0KHNjaGVtYTogSVNlYXJjaEZvcm1TY2hlbWE8VFF1ZXJ5LFRSb3c+W10pIHtcbiAgICB0aGlzLm5nT25EZXN0cm95KCk7XG4gICAgaWYgKCFzY2hlbWE/Lmxlbmd0aCkge1xuICAgICAgdGhpcy5mb3JtU2NoZW1hID0gc2NoZW1hO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvLyBkZWJ1Z2dlcjtcbiAgICB0aGlzLmhhbmRsZUFsbFNjaGVtYShzY2hlbWEpO1xuICAgIGZvciAoY29uc3Qgc2NoZW1lIG9mIHRoaXMuZm9ybVNjaGVtYSkgdGhpcy5oYW5kbGVGb3JtU2NoZW1lKHNjaGVtZSk7XG4gICAgZm9yIChjb25zdCBzY2hlbWUgb2YgdGhpcy5mb3JtU2NoZW1hKVxuICAgICAgaWYgKHNjaGVtZS50cmlnZ2VyT25DaGFuZ2VPbkluaXQpIHNjaGVtZS5vbkNoYW5nZUZ1bmModGhpcy5mb3JtLmdldFJhd1ZhbHVlKCksIHRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpW3NjaGVtZS5maWVsZF0sIHRoaXMpO1xuICB9XG5cbiAgaGFuZGxlQWxsU2NoZW1hKHNjaGVtYTogSVNlYXJjaEZvcm1TY2hlbWE8VFF1ZXJ5LCBUUm93PltdKSB7XG4gICAgc2NoZW1hLmZvckVhY2goKHgpID0+ICh4LnR5cGUgPSB4LnR5cGUgfHwgJ3RleHQnKSk7XG4gICAgaWYgKHRoaXMuYXV0b0Zvcm1hdFNjaGVtYSB8fCB0aGlzLmF1dG9PcmRlcikge1xuICAgICAgaWYgKHRoaXMuYXV0b0Zvcm1hdFNjaGVtYSkge1xuICAgICAgICBzY2hlbWFcbiAgICAgICAgICAuZmlsdGVyKCh4KSA9PiB4LnR5cGUgPT0gJ3NlbGVjdCcpXG4gICAgICAgICAgLmZvckVhY2goKHgpID0+IHtcbiAgICAgICAgICAgIGlmICh4Lm9wdGlvbnM/Lmxlbmd0aCA+IDUgfHwgIXgub3B0aW9ucykgeC50eXBlID0gJ2F1dG9jb21wbGV0ZSc7XG4gICAgICAgICAgfSk7XG4gICAgICAgIHNjaGVtYVxuICAgICAgICAgIC5maWx0ZXIoKHgpID0+IHgudHlwZSA9PSAnY2hlY2tib3gnKVxuICAgICAgICAgIC5mb3JFYWNoKCh4KSA9PiB7XG4gICAgICAgICAgICB4LnR5cGUgPSAnc2VsZWN0JztcbiAgICAgICAgICAgIHgub3B0aW9ucyA9IENvbmZpZy5ib29sTGlzdDtcbiAgICAgICAgICAgIHgubGFiZWxGaWVsZCA9ICd0aXRsZSc7XG4gICAgICAgICAgICB4LnZhbHVlRmllbGQgPSAnY29kZSc7XG4gICAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZm9ybVNjaGVtYSA9IHNjaGVtYTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmF1dG9PcmRlcikge1xuICAgICAgICBzY2hlbWEgPSBzY2hlbWEuc29ydDIoJ2xhYmVsJywgdHJ1ZSk7XG4gICAgICAgIHRoaXMuZm9ybVNjaGVtYSA9IFtcbiAgICAgICAgICAuLi5zY2hlbWE/LmZpbHRlcigoeCkgPT4geC5hY3Rpb24gJiYgeC50eXBlICE9ICdjaGVja2JveCcpLFxuICAgICAgICAgIC4uLnNjaGVtYT8uZmlsdGVyKCh4KSA9PiAheC5hY3Rpb24gJiYgeC50eXBlICE9ICdjaGVja2JveCcpLFxuICAgICAgICAgIC4uLnNjaGVtYT8uZmlsdGVyKCh4KSA9PiB4LnR5cGUgPT0gJ2NoZWNrYm94JyksXG4gICAgICAgIF07XG4gICAgICB9XG4gICAgfSBlbHNlIHRoaXMuZm9ybVNjaGVtYSA9IHNjaGVtYTtcbiAgICB0aGlzLnNlYXJjaEZvcm0gPSBuZXcgRm9ybUdyb3VwKHRoaXMudVMuZm9ybVNjaGVtYVRvRm9ybUNvbnRyb2xzPElTZWFyY2hGb3JtU2NoZW1hPFRRdWVyeSxUUm93Pj4oc2NoZW1hLmZpbHRlcigoeCkgPT4gIXguc3RhbmRhbG9uZSkpKTtcbiAgICB0aGlzLnN0YW5kYWxvbmVGb3JtID0gbmV3IEZvcm1Hcm91cCh0aGlzLnVTLmZvcm1TY2hlbWFUb0Zvcm1Db250cm9sczxJU2VhcmNoRm9ybVNjaGVtYTxUUXVlcnksVFJvdz4+KHNjaGVtYS5maWx0ZXIoKHgpID0+IHguc3RhbmRhbG9uZSkpKTtcbiAgfVxuICBoYW5kbGVGb3JtU2NoZW1lKHNjaGVtZTogSVNlYXJjaEZvcm1TY2hlbWE8VFF1ZXJ5LCBUUm93Pikge1xuICAgIHNjaGVtZS5pZCA9IHRoaXMudVMuZ2VuZXJhdGVVVUlEKCk7XG5cbiAgICBpZiAoc2NoZW1lLm9wdGlvbnNJbml0RnVuYykge1xuICAgICAgc2NoZW1lLm9wdGlvbnNJbml0RnVuYy5zdWJzY3JpYmUoKHIpID0+IHtcbiAgICAgICAgc2NoZW1lLm9wdGlvbnMgPSByO1xuICAgICAgICAvLyB0aGlzLm9wdGlvbnNNYXBbc2NoZW1lLmZpZWxkXSA9IHI7XG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKHNjaGVtZS5vbkNoYW5nZUZ1bmMpIHtcbiAgICAgIGNvbnN0IHN1YiA9IHRoaXMuc2VhcmNoRm9ybT8uY29udHJvbHNbc2NoZW1lLmZpZWxkPy50b1N0cmluZygpXT8udmFsdWVDaGFuZ2VzXG4gICAgICAgIC5waXBlKGRlYm91bmNlVGltZSgwKSlcbiAgICAgICAgLnN1YnNjcmliZSgocikgPT4gc2NoZW1lLm9uQ2hhbmdlRnVuYyh0aGlzLnNlYXJjaEZvcm0/LmdldFJhd1ZhbHVlKCksIHIsIHRoaXMpKTtcbiAgICAgIHRoaXMuc3Vicy5wdXNoKHsgc3ViOiBzdWIsIGZpZWxkTmFtZTogc2NoZW1lLmZpZWxkPy50b1N0cmluZygpIH0pO1xuICAgIH1cbiAgICBpZiAoc2NoZW1lLnN0YW5kYWxvbmUpIHNjaGVtZS5mb3JtID0gdGhpcy5zdGFuZGFsb25lRm9ybTtcbiAgICBlbHNlIHNjaGVtZS5mb3JtID0gdGhpcy5zZWFyY2hGb3JtO1xuICB9XG4gIGRldGFjaEZvcm1TY2hlbWUoc2NoZW1lSW5kZXg/OiBudW1iZXIsIGZpZWxkTmFtZT86IHN0cmluZykge1xuICAgIHRoaXMuc3Vicy5maW5kKCh4KSA9PiB4LmZpZWxkTmFtZSA9PSB0aGlzLmZvcm1TY2hlbWFbc2NoZW1lSW5kZXhdPy5maWVsZCB8fCB4LmZpZWxkTmFtZSA9PSBmaWVsZE5hbWUpPy5zdWI/LnVuc3Vic2NyaWJlKCk7XG4gIH1cbiAgYW1lbmRGb3JtU2NoZW1lID0gKGZpZWxkTmFtZToga2V5b2YgVFF1ZXJ5LCBmb3JtU2NoZW1lOiBQYXJ0aWFsPElTZWFyY2hGb3JtU2NoZW1hPHsgW2sgaW4ga2V5b2YgVFF1ZXJ5XTogQWJzdHJhY3RDb250cm9sPGFueSwgYW55PiB8IGFueSB9Pj4pID0+IHtcbiAgICAvLyBkZWJ1Z2dlcjtcbiAgICBjb25zdCBpbmQgPSB0aGlzLmZvcm1TY2hlbWEuZmluZEluZGV4KCh4KSA9PiB4LmZpZWxkID09IGZpZWxkTmFtZSk7XG4gICAgaWYgKGluZCA+IC0xKSB7XG4gICAgICB0aGlzLmZvcm1TY2hlbWFbaW5kXSA9IHtcbiAgICAgICAgLi4udGhpcy5mb3JtU2NoZW1hW2luZF0sXG4gICAgICAgIC4uLihmb3JtU2NoZW1lIGFzIGFueSksXG4gICAgICB9O1xuICAgIH1cbiAgfTtcblxuICBnZXQgYWxsU2VhcmNoRm9ybVZhbHVlKCkge1xuICAgIHJldHVybiB7IC4uLnRoaXMuc2VhcmNoRm9ybT8udmFsdWUsIC4uLnRoaXMuc3RhbmRhbG9uZUZvcm0udmFsdWUgfTtcbiAgfVxuXG4gIHRyYWNrQnlSb3dJRCA9IChpbmRleCwgaXRlbSkgPT4ge1xuICAgIHJldHVybiBpdGVtPy52YWx1ZT8uX19yb3dJRDtcbiAgfTtcblxuICBjbGVhckZpbHRlcnMoKSB7XG4gICAgdGhpcy5zZWFyY2hGb3JtPy5yZXNldCgpO1xuICAgIHRoaXMuc2VhcmNoKCk7XG4gIH1cblxuICByZWZyZXNoKCkge1xuICAgIHRoaXMuc2VhcmNoKCk7XG4gIH1cbiAgc2VhcmNoKCkge1xuICAgIHRoaXMuc2VhcmNoVHJpZ2dlci5uZXh0KHRydWUpO1xuICB9XG4gIGFzeW5jIF9zZWFyY2goKSB7XG4gICAgLy8gZGVidWdnZXI7XG4gICAgaWYgKCF0aGlzLnNlYXJjaEZvcm0pIHJldHVybjtcbiAgICBjb25zdCByZXEgPSB0aGlzLnVTLmRlbGV0ZU51bGwoY2xvbmVEZWVwKHRoaXMuc2VhcmNoRm9ybT8uZ2V0UmF3VmFsdWUoKSkpO1xuICAgIC8vIGRlYnVnZ2VyO1xuICAgIGlmICh0aGlzLmlzVGFibGVQYWdpbmF0ZWQpIHtcbiAgICAgIGlmICghdGhpcy5kYXRhKSB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgdGhpcy5kYXRhID0gW107XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy50YWJsZUhUVFBTUkVGPy5zZWFyY2gocmVxKTtcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICB9LCA1MDApO1xuICAgIH0gZWxzZSBpZiAodGhpcy5zZWFyY2hGdW5jdGlvbikge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IGxhc3RWYWx1ZUZyb20oXG4gICAgICAgICAgdGhpcy5zZWFyY2hGdW5jdGlvbih7XG4gICAgICAgICAgICAuLi5yZXEsXG4gICAgICAgICAgICBzb3J0Qnk6IHRoaXMub3JkZXJGaWVsZCB8fCAnY3JlYXRlZE9uJyxcbiAgICAgICAgICAgIHNvcnREaXJlY3Rpb246IHRoaXMub3JkZXJEaXJlY3Rpb24/LnRvVXBwZXJDYXNlKCkgfHwgJ0RFU0MnLFxuICAgICAgICAgIH0pLFxuICAgICAgICApO1xuICAgICAgICB0aGlzLmRhdGEgPSBkYXRhPy5bJ2NvbnRlbnQnXSB8fCBkYXRhO1xuICAgICAgICBjb25zb2xlLmxvZyhkYXRhKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoRXJyb3IpO1xuICAgICAgfVxuICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgfVxuICAgIHRoaXMudWFTLmFkZCh7XG4gICAgICBjb2RlOiBFVUEuc2VhcmNoZWQsXG4gICAgICBhY3Rpdml0eURlc2NyaXB0aW9uOiB0aGlzLmxhYmVsICsgJyAnICsgSlNPTi5zdHJpbmdpZnkocmVxKSxcbiAgICB9KTtcbiAgfVxuXG4gIHNhdmVRdWVyeShxdWVyeSA9IHRoaXMuc2VhcmNoRm9ybT8udmFsdWUpIHtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXSwge1xuICAgICAgcXVlcnlQYXJhbXM6IHtcbiAgICAgICAgcTogT2JqZWN0LmtleXMocXVlcnkpXG4gICAgICAgICAgLmZpbHRlcigoeCkgPT4gcXVlcnlbeF0gIT0gbnVsbClcbiAgICAgICAgICAubWFwKChrKSA9PiBgJHtrfSR7dGhpcy5kZWxpbWl0ZXJXb3JkfSR7cXVlcnlba119YClcbiAgICAgICAgICAuam9pbih0aGlzLmRlbGltaXRlckZpZWxkKSxcbiAgICAgIH0sXG4gICAgICByZXBsYWNlVXJsOiB0cnVlLFxuICAgICAgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSxcbiAgICAgIHF1ZXJ5UGFyYW1zSGFuZGxpbmc6ICdtZXJnZScsXG4gICAgfSk7XG4gIH1cbiAgcm93Q2xpY2soZSkge1xuICAgIHRoaXMuX3Jvd0NsaWNrLmVtaXQoZSk7XG4gIH1cblxuICBnZXQgc2VsZWN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnRhYmxlSFRUUFNSRUY/LnNlbGVjdGVkSXRlbXMgfHwgdGhpcy50YWJsZVBsYWluUmVmPy5zZWxlY3RlZEl0ZW1zO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVNlYXJjaEZvcm1TY2hlbWE8VFF1ZXJ5IGV4dGVuZHMgSU9iamVjdExpdGVyYWwgPSBJT2JqZWN0TGl0ZXJhbCwgVFJvdyBleHRlbmRzIElPYmplY3RMaXRlcmFsID0gSU9iamVjdExpdGVyYWw+XG4gIGV4dGVuZHMgSUJhc2VGb3JtU2NoZW1hPFxuICAgIFRRdWVyeSxcbiAgICBGaW5kSXRlbUNvbXBvbmVudDxUUXVlcnksIFRSb3c+LFxuICAgIHtcbiAgICAgIFtLIGluIGtleW9mIFRRdWVyeV06IEFic3RyYWN0Q29udHJvbDxhbnksIGFueT47XG4gICAgfVxuICA+IHtcbiAgc3RhbmRhbG9uZT86IGJvb2xlYW47XG4gIGFjdGlvbj86IChyb3c6IGFueSwgY2VsbDogYW55LCBmb3JtPzogRm9ybUdyb3VwPElTdHJpY3RGb3JtR3JvdXA8VFF1ZXJ5Pj4pID0+IGFueTtcbn1cbiIsIjxsb2FkZXIgW2xvYWRpbmddPVwibG9hZGluZ1wiPlxuICBAaWYgKCFoaWRlRm9ybSAmJiBzZWFyY2hGb3JtKSB7XG4gICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJzZWFyY2hGb3JtXCIgKG5nU3VibWl0KT1cInNlYXJjaCgpXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICBAZm9yIChzY2hlbWUgb2YgZm9ybVNjaGVtYTsgdHJhY2sgdHJhY2tCeVJvd0lEKCRpbmRleCwgc2NoZW1lKSkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ7eyBncmlkQ2xhc3MgfX0gXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWVuZFwiPlxuICAgICAgICAgICAgICBAc3dpdGNoICh0cnVlKSB7XG4gICAgICAgICAgICAgICAgQGNhc2UgKHNjaGVtZS50eXBlID09ICd0ZWwnKSB7XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XG4gICAgICAgICAgICAgICAgICAgIDxhcHAtcGhvbmUtbnVtYmVyXG4gICAgICAgICAgICAgICAgICAgICAgW2Zvcm1dPVwic2NoZW1lLmZvcm1cIlxuICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJzY2hlbWUubGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgIFtuYW1lXT1cInNjaGVtZS5maWVsZFwiXG4gICAgICAgICAgICAgICAgICAgICAgW3Nob3dMYWJlbF09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW3Nob3dWYWxpZGF0aW9uXT1cInNjaGVtZS5zaG93VmFsaWRhdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgW3Nob3dWYWxpZGF0aW9uSWNvbl09XCJzY2hlbWUuc2hvd1ZhbGlkYXRpb25JY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICBbY291bnRyeUNvZGUzXT1cImNlbGxDb3VudHJ5Q29kZTNzW3NjaGVtZS5nZXRDb3VudHJ5Q29kZTNLZXldIHx8IHNjaGVtZS5jb3VudHJ5Q29kZTNcIlxuICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJzY2hlbWUuZGlzYWJsZWRJZiB8IGZ1bmN0aW9uQ2FsbGVyMjogc2VhcmNoRm9ybS52YWx1ZSA6IChzY2hlbWUuZmllbGQgfCB0b0FueSlcIlxuICAgICAgICAgICAgICAgICAgICAgICNpbnB1dFRhZyAvPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKHNob3dWYWxpZGF0aW9uTXNnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgPGFwcC12YWxpZGF0aW9uLW1lc3NhZ2UgW2lucHV0XT1cImlucHV0VGFnXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIEBjYXNlIChzY2hlbWUudHlwZSA9PSAnYXV0b2NvbXBsZXRlJykge1xuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxuICAgICAgICAgICAgICAgICAgICA8YXBwLWF1dG9jb21wbGV0ZVxuICAgICAgICAgICAgICAgICAgICAgIFtmb3JtXT1cInNjaGVtZS5mb3JtXCJcbiAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwic2NoZW1lLmxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxGaWVsZF09XCJzY2hlbWUubGFiZWxGaWVsZFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2F1dG9QaWNrVmFsdWVGaWVsZF09XCJzY2hlbWUuYXV0b1BpY2tWYWx1ZUZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxUeXBlXT1cInNjaGVtZS5sYWJlbFR5cGV8dG9BbnlcIlxuICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zRnVuY109XCJzY2hlbWUub3B0aW9uc0Z1bmNcIlxuICAgICAgICAgICAgICAgICAgICAgIFtuYW1lXT1cInNjaGVtZS5maWVsZFwiXG4gICAgICAgICAgICAgICAgICAgICAgW29wdGlvbkZvcm1hdHRlcl09XCJzY2hlbWUub3B0aW9uRm9ybWF0dGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVGaWVsZF09XCJzY2hlbWUudmFsdWVGaWVsZFwiXG4gICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwic2NoZW1lLm9wdGlvbnMgfHwgY2VsbE9wdGlvbnNbc2NoZW1lLmZpZWxkIHwgdG9BbnldXCJcbiAgICAgICAgICAgICAgICAgICAgICBbaGludF09XCJzY2hlbWUuaGludFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInNjaGVtZS5kaXNhYmxlZElmIHwgZnVuY3Rpb25DYWxsZXIyOiBzZWFyY2hGb3JtLnZhbHVlIDogKHNjaGVtZS5maWVsZCB8IHRvQW55KVwiXG4gICAgICAgICAgICAgICAgICAgICAgI2lucHV0VGFnIC8+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoc2hvd1ZhbGlkYXRpb25Nc2cpIHtcbiAgICAgICAgICAgICAgICAgICAgICA8YXBwLXZhbGlkYXRpb24tbWVzc2FnZSBbaW5wdXRdPVwiaW5wdXRUYWdcIiAvPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgQGRlZmF1bHQge1xuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxuICAgICAgICAgICAgICAgICAgICA8Zm9ybT5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3gtMiByb3cgYWxpZ24taXRlbXMtZW5kXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtaW5wdXQtYmFzaWNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjZm9ybUZpZWxkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwic2NoZW1lLmZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybV09XCJzY2hlbWUuZm9ybVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3R5cGVdPVwic2NoZW1lLnR5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdXRvUGlja1ZhbHVlRmllbGRdPVwic2NoZW1lLmF1dG9QaWNrVmFsdWVGaWVsZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlRmllbGRdPVwic2NoZW1lLnZhbHVlRmllbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbFR5cGVdPVwic2NoZW1lLmxhYmVsVHlwZXx0b0FueVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwic2NoZW1lLmNoZWNrZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93VmFsaWRhdGlvbl09XCIhIXNjaGVtZS5hc3luY1ZhbGlkYXRvcnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93VmFsaWRhdGlvbkljb25dPVwiISFzY2hlbWUuYXN5bmNWYWxpZGF0b3JzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbm9Gb3JtYXRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsRmllbGRdPVwic2NoZW1lLmxhYmVsRmllbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25Gb3JtYXR0ZXJdPVwic2NoZW1lLm9wdGlvbkZvcm1hdHRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwic2NoZW1lLm9wdGlvbnMgfHwgY2VsbE9wdGlvbnNbc2NoZW1lLmZpZWxkIHwgdG9BbnldXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGVjaW1hbFBvaW50c109XCJzY2hlbWUuZGVjaW1hbFBvaW50c1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hpbnRdPVwic2NoZW1lLmhpbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYXhdPVwic2NoZW1lLm1heFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW21pbl09XCJzY2hlbWUubWluXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwic2NoZW1lLnBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwic2NoZW1lLmxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwic2NoZW1lLmRpc2FibGVkSWYgfCBmdW5jdGlvbkNhbGxlcjI6IHNlYXJjaEZvcm0udmFsdWUgOiAoc2NoZW1lLmZpZWxkIHwgdG9BbnkpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChzY2hlbWUuc3RhbmRhbG9uZSAmJiBzY2hlbWUuYWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtYXV0b1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtYnRuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncm91cD1cInNob3dcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFmb3JtRmllbGQuY29udHJvbD8udmFsaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uVHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWNsaWNrKT1cInNjaGVtZS5hY3Rpb24oYWxsU2VhcmNoRm9ybVZhbHVlLCBmb3JtRmllbGQudmFsdWUsIHNlYXJjaEZvcm0pXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHNjaGVtZS5hY3Rpb24gJiYgIXNjaGVtZS5zdGFuZGFsb25lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtYXV0b1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtYnRuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWNvbl09XCJzY2hlbWUuaWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWNvbkJ0bl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvblR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1jbGljayk9XCJzY2hlbWUuYWN0aW9uKGFsbFNlYXJjaEZvcm1WYWx1ZSwgZm9ybUZpZWxkLnZhbHVlLCBzZWFyY2hGb3JtKVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIEBpZiAoc2hvd1ZhbGlkYXRpb25Nc2cpIHtcbiAgICAgICAgICAgICAgICAgICAgPGFwcC12YWxpZGF0aW9uLW1lc3NhZ2UgW2lucHV0XT1cImZvcm1GaWVsZFwiIC8+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kIGp1c3RpZnktY29udGVudC1lbmQgZC1mbGV4XCI+XG4gICAgICAgICAgQGlmIChzaG93Q2xlYXJCdG4pIHtcbiAgICAgICAgICAgIDxhcHAtYnRuIHR5cGU9XCJkYW5nZXItb3V0bGluZVwiIHRleHQ9XCJDbGVhclwiIGljb249XCJkZWxldGVcIiAobWNsaWNrKT1cImNsZWFyRmlsdGVycygpXCIgLz5cbiAgICAgICAgICB9XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJteC0xXCI+PC9zcGFuPlxuICAgICAgICAgIEBpZiAoc2hvd1NlYXJjaEJ0bikge1xuICAgICAgICAgICAgPGFwcC1idG5cbiAgICAgICAgICAgICAgW2dyb3VwXT1cIidzZWFyY2gnXCJcbiAgICAgICAgICAgICAgW2ljb25CdG5dPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIHRleHQ9XCJTZWFyY2hcIlxuICAgICAgICAgICAgICBhY3Rpb25UeXBlPVwic3VibWl0XCJcbiAgICAgICAgICAgICAgW2V4Y2x1ZGVMb2dnaW5nXT1cInRydWVcIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIXNlYXJjaEZ1bmN0aW9uICYmICFpc1RhYmxlUGFnaW5hdGVkXCJcbiAgICAgICAgICAgICAgKG1jbGljayk9XCJzZWFyY2goKVwiIC8+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBpZiAoY3JlYXRlQnV0dG9uKSB7XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm14LTFcIj48L3NwYW4+XG4gICAgICAgICAgICA8YXBwLWJ0biB0eXBlPVwib3V0bGluZVwiIHRleHQ9XCJDcmVhdGVcIiBpY29uPVwiYWRkXCIgcm91dGVyTGluaz1cIi4uL2NyZWF0ZVwiIC8+XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZm9ybT5cbiAgfVxuXG4gIDxuZy1jb250ZW50IHNlbGVjdD1cIlt0YWJsZVBhbmVsXVwiPjwvbmctY29udGVudD5cblxuICBAaWYgKGRpc3BsYXllZENvbHVtbnM/Lmxlbmd0aCkge1xuICAgIDxkaXYgY2xhc3M9XCJtdC0zXCIgW2hpZGRlbl09XCIhc2hvd0RhdGEgfHwgKCFkYXRhICYmICFpc1RhYmxlUGFnaW5hdGVkKVwiPlxuICAgICAgPG5nLWNvbnRhaW5lcj5cbiAgICAgICAgQGlmIChpc1RhYmxlUGFnaW5hdGVkKSB7XG4gICAgICAgICAgPHRhYmxlLWh0dHBzXG4gICAgICAgICAgICAjdGFibGVIVFRQU1xuICAgICAgICAgICAgW2Rpc3BsYXllZENvbHVtbnNdPVwiZGlzcGxheWVkQ29sdW1uc1wiXG4gICAgICAgICAgICBbc2hvd0V4cG9ydF09XCJzaG93RXhwb3J0XCJcbiAgICAgICAgICAgIFtzdGFydFNlY3Rpb25UZW1wbGF0ZV09XCJzdGFydFNlY3Rpb25UZW1wbGF0ZVwiXG4gICAgICAgICAgICBbdXNlU2VsZWN0aW9uXT1cInVzZVNlbGVjdGlvblwiXG4gICAgICAgICAgICBbc2hvd1JlZnJlc2hCdG5dPVwic2hvd1JlZnJlc2hCdG5cIlxuICAgICAgICAgICAgW29ic2VydmFibGVGdW5jXT1cInNlYXJjaE9ic2VydmFibGVGdW5jXCJcbiAgICAgICAgICAgIG5vSXRlbVR4dD1cIk5vIHJlc3VsdHMgZm91bmRcIlxuICAgICAgICAgICAgW2lzRXhwYW5kYWJsZV09XCJpc0V4cGFuZGFibGVcIlxuICAgICAgICAgICAgW2V4cGFuZGVkUm93VGVtcGxhdGVdPVwiZXhwYW5kZWRSb3dUZW1wbGF0ZVwiXG4gICAgICAgICAgICBbY2VudGVyQ2VsbHNdPVwiY2VudGVyQ2VsbHNcIlxuICAgICAgICAgICAgW3NtYWxsZXJGb250c109XCJzbWFsbGVyRm9udHNcIlxuICAgICAgICAgICAgW25vd3JhcF09XCJub3dyYXBcIlxuICAgICAgICAgICAgW3BhZ2VTaXplXT1cInBhZ2VTaXplXCJcbiAgICAgICAgICAgIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgICAgICAgICBbc2hvd0FkZGl0aW9uYWxDb2x1bW5zXT1cInNob3dBZGRpdGlvbmFsQ29sdW1uc1wiXG4gICAgICAgICAgICBbb3JkZXJGaWVsZF09XCJvcmRlckZpZWxkXCJcbiAgICAgICAgICAgIFtyb3dPcHRpb25zXT1cIm9wdGlvbnNcIlxuICAgICAgICAgICAgW29yZGVyRGlyZWN0aW9uXT1cIm9yZGVyRGlyZWN0aW9uXCJcbiAgICAgICAgICAgIChyb3dDbGljayk9XCJyb3dDbGljaygkZXZlbnQpXCIgLz5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgPHRhYmxlLXBsYWluXG4gICAgICAgICAgICBbZGlzdGluY3RdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbc2hvd1BhZ2VyXT1cInRydWVcIlxuICAgICAgICAgICAgW3BhZ2VTaXplXT1cInBhZ2VTaXplXCJcbiAgICAgICAgICAgIFtjZW50ZXJDZWxsc109XCJmYWxzZVwiXG4gICAgICAgICAgICBbc3RhcnRTZWN0aW9uVGVtcGxhdGVdPVwic3RhcnRTZWN0aW9uVGVtcGxhdGVcIlxuICAgICAgICAgICAgW3NtYWxsZXJGb250c109XCJzbWFsbGVyRm9udHNcIlxuICAgICAgICAgICAgW25vd3JhcF09XCJub3dyYXBcIlxuICAgICAgICAgICAgW3Nob3dGaWx0ZXJdPVwic2hvd0ZpbHRlclwiXG4gICAgICAgICAgICBbc2hvd0V4cG9ydF09XCJzaG93RXhwb3J0XCJcbiAgICAgICAgICAgIFtpc0V4cGFuZGFibGVdPVwiaXNFeHBhbmRhYmxlXCJcbiAgICAgICAgICAgIFtleHBhbmRlZFJvd1RlbXBsYXRlXT1cImV4cGFuZGVkUm93VGVtcGxhdGVcIlxuICAgICAgICAgICAgW2xhYmVsXT1cImxhYmVsXCJcbiAgICAgICAgICAgIG5vSXRlbVR4dD1cIk5vIHJlc3VsdHMgZm91bmRcIlxuICAgICAgICAgICAgKHJvd0NsaWNrKT1cInJvd0NsaWNrKCRldmVudClcIlxuICAgICAgICAgICAgW29yZGVyRmllbGRdPVwib3JkZXJGaWVsZFwiXG4gICAgICAgICAgICBbcm93T3B0aW9uc109XCJvcHRpb25zXCJcbiAgICAgICAgICAgIFtzaG93QWRkaXRpb25hbENvbHVtbnNdPVwic2hvd0FkZGl0aW9uYWxDb2x1bW5zXCJcbiAgICAgICAgICAgIFtvcmRlckRpcmVjdGlvbl09XCJvcmRlckRpcmVjdGlvblwiXG4gICAgICAgICAgICBbZGlzcGxheWVkQ29sdW1uc109XCJkaXNwbGF5ZWRDb2x1bW5zXCJcbiAgICAgICAgICAgIFtkYXRhXT1cImRhdGFcIiAvPlxuICAgICAgICB9XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgfVxuPC9sb2FkZXI+XG4iXX0=
368
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluZC1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9SZXVzYWJsZXMvcmV1c2FibGUtY29tcHMvZmluZC1pdGVtL2ZpbmQtaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ldHMtZmUtbmctc2RrL3NyYy9saWIvUmV1c2FibGVzL3JldXNhYmxlLWNvbXBzL2ZpbmQtaXRlbS9maW5kLWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBbUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFlLE1BQU0sZUFBZSxDQUFDO0FBQ2hJLE9BQU8sRUFBMkMsU0FBUyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RILE9BQU8sRUFBRSxlQUFlLEVBQTRCLFlBQVksRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBR3RHLE9BQU8sRUFBb0IsbUJBQW1CLEVBQUUsTUFBTSw4REFBOEQsQ0FBQztBQUdySCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sa0VBQWtFLENBQUM7QUFDdkYsT0FBTyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNoRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4REFBOEQsQ0FBQztBQUNuRyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDNUUsT0FBTyxFQUFFLG1CQUFtQixFQUFtQixNQUFNLHdEQUF3RCxDQUFDO0FBQzlHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdFQUFnRSxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGtGQUFr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b25lbnQsIE9uSW5pdCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgVmlld0NoaWxkLCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtQXJyYXksIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24sIGRlYm91bmNlVGltZSwgZmlsdGVyLCBsYXN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBVc2VyQWN0aXZpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vUmV1c2FibGVzL3JldXNhYmxlLXBhZ2VzL3VzZXItYWN0aXZpdHkvdWEtZXh0cmFzL3VzZXItYWN0aXZpdHkuc2VydmljZSc7XG5pbXBvcnQgeyBVdGlsaXR5U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL1NlcnZpY2VzL3V0aWxpdHkuc2VydmljZSc7XG5pbXBvcnQgeyBJVGFibGVTZWFyY2hSZXNwLCBUYWJsZUh0dHBzQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL2NvbXBvbmVudHMvdGFibGUtaHR0cHMvdGFibGUtaHR0cHMuY29tcG9uZW50JztcbmltcG9ydCB7IElGb3JtT3B0aW9ucywgSUZvcm1TY2hlbWEgfSBmcm9tICcuLi8uLi8uLi9TaGFyZWQvbW9kZWxzL2Zvcm0tc2NoZW1hLm1vZGVsJztcbmltcG9ydCB7IElPYmplY3RMaXRlcmFsLCBJUm93T3B0aW9uLCBJU2VhcmNoUmVzcG9uc2UsIElTdHJpY3RGb3JtR3JvdXAsIElucHV0VHlwZSwgU29ydFR5cGUsIFRhYmxlQ29sIH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL21vZGVscy9pbmRleC5tb2RlbCc7XG5pbXBvcnQgeyBFVUEgfSBmcm9tICcuLi8uLi9yZXVzYWJsZS1wYWdlcy91c2VyLWFjdGl2aXR5L3VhLWV4dHJhcy91c2VyLWFjdGl2aXR5Lm1vZGVsJztcbmltcG9ydCB7IEZ1bmN0aW9uQ2FsbGVyMiwgVG9BbnlQaXBlIH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL3BpcGVzL3V0aWxpdHkucGlwZSc7XG5pbXBvcnQgeyBUYWJsZVBsYWluQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL2NvbXBvbmVudHMvdGFibGUtcGxhaW4vdGFibGUtcGxhaW4uY29tcG9uZW50JztcbmltcG9ydCB7IEJ0bkNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9jb21wb25lbnRzL2J0bi9idG4uY29tcG9uZW50JztcbmltcG9ydCB7IElucHV0QmFzaWNDb21wb25lbnQsIE9wdGlvbkxhYmVsVHlwZSB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9jb21wb25lbnRzL2lucHV0L2lucHV0LWJhc2ljLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBdXRvY29tcGxldGVDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9TaGFyZWQvY29tcG9uZW50cy9hdXRvY29tcGxldGUvYXV0b2NvbXBsZXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBWYWxpZGF0aW9uTWVzc2FnZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9jb21wb25lbnRzL2lucHV0L3ZhbGlkYXRpb24tbWVzc2FnZS92YWxpZGF0aW9uLW1lc3NhZ2UuY29tcG9uZW50JztcbmltcG9ydCB7IFBob25lTnVtYmVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL2NvbXBvbmVudHMvcGhvbmUtbnVtYmVyL3Bob25lLW51bWJlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgTmdJZiwgTmdGb3IsIE5nU3dpdGNoLCBOZ1N3aXRjaENhc2UsIE5nU3dpdGNoRGVmYXVsdCwgQXN5bmNQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IExvYWRlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9jb21wb25lbnRzL2xvYWRlci9sb2FkZXIuY29tcG9uZW50JztcbmltcG9ydCB7IGNsb25lRGVlcCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBDb25maWcgfSBmcm9tICcuLi8uLi8uLi9jb25maWdzL2luZGV4LmNvbmZpZyc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEJhc2VGb3JtR2VuZXJhdG9yLCBJQmFzZUZvcm1TY2hlbWEgfSBmcm9tICcuLi8uLi8uLi9TaGFyZWQvY29tcG9uZW50cy9mb3JtLWdlbmVyYXRvci9mb3JtLWdlbmVyYXRvci5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtZmluZC1pdGVtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpbmQtaXRlbS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2ZpbmQtaXRlbS5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgTG9hZGVyQ29tcG9uZW50LFxuICAgIE5nSWYsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgTmdGb3IsXG4gICAgTmdTd2l0Y2gsXG4gICAgTmdTd2l0Y2hDYXNlLFxuICAgIFBob25lTnVtYmVyQ29tcG9uZW50LFxuICAgIFZhbGlkYXRpb25NZXNzYWdlQ29tcG9uZW50LFxuICAgIEF1dG9jb21wbGV0ZUNvbXBvbmVudCxcbiAgICBOZ1N3aXRjaERlZmF1bHQsXG4gICAgSW5wdXRCYXNpY0NvbXBvbmVudCxcbiAgICBCdG5Db21wb25lbnQsXG4gICAgVGFibGVIdHRwc0NvbXBvbmVudCxcbiAgICBUYWJsZVBsYWluQ29tcG9uZW50LFxuICAgIEFzeW5jUGlwZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIEZ1bmN0aW9uQ2FsbGVyMixcbiAgICBUb0FueVBpcGUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEZpbmRJdGVtQ29tcG9uZW50PFRRdWVyeSBleHRlbmRzIElPYmplY3RMaXRlcmFsID0gSU9iamVjdExpdGVyYWwsIFRSb3cgZXh0ZW5kcyBJT2JqZWN0TGl0ZXJhbCA9IElPYmplY3RMaXRlcmFsPlxuICBleHRlbmRzIEJhc2VGb3JtR2VuZXJhdG9yPFRRdWVyeT5cbiAgaW1wbGVtZW50cyBPbkluaXRcbntcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gc29ydCBzY2hlbWFcbiAgICovXG4gIEBJbnB1dCgpIGF1dG9Gb3JtYXRTY2hlbWEgPSB0cnVlO1xuICBASW5wdXQoKSBhdXRvT3JkZXIgPSB0cnVlO1xuICBASW5wdXQoKSBjZW50ZXJDZWxsczogYm9vbGVhbjtcbiAgQElucHV0KCkgZGlzcGxheWVkQ29sdW1uczogVGFibGVDb2xbXTtcbiAgLyoqXG4gICAqIFJvdyBncmlkIGNvbmZpZ3VyYXRpb25cbiAgICovXG4gIEBJbnB1dCgpIGdyaWRDbGFzcyA9ICdjb2wtbWQtNCBjb2wteHhsLTMnO1xuICBASW5wdXQoKSBoaWRlRm9ybSA9IGZhbHNlO1xuICBASW5wdXQoKSBleHBhbmRlZFJvd1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBASW5wdXQoKSBpc1RhYmxlUGFnaW5hdGVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIGlzRXhwYW5kYWJsZSA9IGZhbHNlO1xuICBASW5wdXQoKSBsYWJlbDogc3RyaW5nO1xuICBASW5wdXQoKSBub3dyYXAgPSBmYWxzZTtcbiAgQElucHV0KCdyb3dPcHRpb25zJykgb3B0aW9uczogSVJvd09wdGlvbltdO1xuICBASW5wdXQoKSBvcmRlckRpcmVjdGlvbjogU29ydFR5cGUgPSAnYXNjJztcbiAgQElucHV0KCkgb3JkZXJGaWVsZDoga2V5b2YgVFJvdztcbiAgQElucHV0KCkgcGFnZVNpemUgPSAxMDtcbiAgQElucHV0KCkgc2VhcmNoRnVuY3Rpb246IChkYXRhOiBhbnkpID0+IE9ic2VydmFibGU8VFJvd1tdIHwgeyBjb250ZW50OiBUUm93W10gfT47XG4gIEBJbnB1dCgpIHNob3dEYXRhID0gdHJ1ZTtcbiAgQElucHV0KCkgc2hvd0V4cG9ydCA9IHRydWU7XG4gIEBJbnB1dCgpIHNob3dGaWx0ZXIgPSBmYWxzZTtcbiAgQElucHV0KCkgc2hvd1JlZnJlc2hCdG46IGJvb2xlYW47XG4gIEBJbnB1dCgpIHN0YXJ0U2VjdGlvblRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxIVE1MRWxlbWVudD47XG4gIGZvcm06IEZvcm1Hcm91cDtcbiAgLyoqXG4gICAqIFVzZWQgdG8gc3BlY2lmeSBpZiB0aGUgc2VhcmNoIGJ1dHRvbiBzaG91bGQgYmUgc2hvd25cbiAgICovXG4gIEBJbnB1dCgpIHNob3dTZWFyY2hCdG4gPSB0cnVlO1xuICAvKipcbiAgICogVXNlZCB0byBzcGVjaWZ5IGlmIHRoZSBjbGVhciBmb3JtIGJ1dHRvbiBzaG91bGQgYmUgc2hvd25cbiAgICovXG4gIEBJbnB1dCgpIHNob3dDbGVhckJ0biA9IHRydWU7XG4gIC8qKlxuICAgKiBVc2VkIHRvIHNwZWNpZnkgaWYgdmFsaWRhdGlvbiBtZXNzYWdlcyBzaG91bGQgYmUgc2hvd25cbiAgICovXG4gIEBJbnB1dCgpIHNob3dWYWxpZGF0aW9uTXNnID0gdHJ1ZTtcbiAgLyoqXG4gICAqIFVzZWQgdG8gc3BlY2lmeSBpZiBzaG93IGFkZGl0aW9uYWwgY29sdW1uIGJ1dHRvbiB3aWlsIGJlIGRpc3BsYXllZCBvciBub3QuXG4gICAqL1xuICBASW5wdXQoKSBzaG93QWRkaXRpb25hbENvbHVtbnMgPSB0cnVlO1xuICBASW5wdXQoKSBzbWFsbGVyRm9udHMgPSBmYWxzZTtcbiAgLyoqIFVzZSBjaGVja2JveGVzICovXG4gIEBJbnB1dCgpIHVzZVNlbGVjdGlvbiA9IGZhbHNlO1xuICBjZWxsT3B0aW9uczogSUZvcm1PcHRpb25zID0ge307XG4gIGNlbGxDb3VudHJ5Q29kZTNzOiBJRm9ybU9wdGlvbnMgPSB7fTtcbiAgQE91dHB1dCgncm93Q2xpY2snKSBfcm93Q2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQFZpZXdDaGlsZChUYWJsZUh0dHBzQ29tcG9uZW50KSB0YWJsZUhUVFBTUkVGOiBUYWJsZUh0dHBzQ29tcG9uZW50PFRSb3c+O1xuICBAVmlld0NoaWxkKFRhYmxlUGxhaW5Db21wb25lbnQpIHRhYmxlUGxhaW5SZWY6IFRhYmxlUGxhaW5Db21wb25lbnQ8VFJvdz47XG4gIGRhdGE6IFRSb3dbXTtcbiAgZm9ybVNjaGVtYTogSVNlYXJjaEZvcm1TY2hlbWE8VFF1ZXJ5LCBUUm93PltdO1xuICBsb2FkaW5nOiBib29sZWFuO1xuICBzZWFyY2hGb3JtOiBGb3JtR3JvdXA7XG4gIHN0YW5kYWxvbmVGb3JtOiBGb3JtR3JvdXA7XG4gIC8qKlxuICAgKiBVc2VkIHRvIHNwZWNpZnkgaWYgc2hvdyBjcmVhdGUgYnV0dG9uIGlzIG5lZWRlZC5cbiAgICovXG4gIEBJbnB1dCgpIGNyZWF0ZUJ1dHRvbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgnZm9ybVNjaGVtYScpIHNldCBfZm9ybVNjaGVtYSh2OiBJU2VhcmNoRm9ybVNjaGVtYTxUUXVlcnksVFJvdz5bXSkge1xuICAgIHRoaXMuaW5pdChjbG9uZURlZXAodj8uZmlsdGVyKCh4KSA9PiB4KSkpO1xuICB9XG5cbiAgQElucHV0KCkgc2VhcmNoT2JzZXJ2YWJsZUZ1bmM6IChkYXRhOiBhbnkpID0+IE9ic2VydmFibGU8SVRhYmxlU2VhcmNoUmVzcDxUUm93Pj47XG4gIHJlYWRvbmx5IGRlbGltaXRlckZpZWxkID0gJ35+fic7XG4gIHJlYWRvbmx5IGRlbGltaXRlcldvcmQgPSAnfn4nO1xuICBwcm90ZWN0ZWQgc3ViczogeyBmaWVsZE5hbWU6IHN0cmluZzsgc3ViOiBTdWJzY3JpcHRpb24gfVtdID0gW107XG4gIHByb3RlY3RlZCBzZWFyY2hUcmlnZ2VyID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHByb3RlY3RlZCBzdWJzMiA9IHRoaXMudVMuY3JlYXRlU3Vic2NyaXB0aW9uTWFuYWdlcigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyB1UzogVXRpbGl0eVNlcnZpY2UsXG4gICAgcHVibGljIHVhUzogVXNlckFjdGl2aXR5U2VydmljZSxcbiAgICBwdWJsaWMgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHVibGljIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIC8vICB0aGlzLmZldGNoU2F2ZWRRdWVyeSgpXG4gICAgdGhpcy5zdWJzMi5wdXNoKFxuICAgICAgdGhpcy5zZWFyY2hUcmlnZ2VyXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIGRlYm91bmNlVGltZSgxMDApLFxuICAgICAgICAgIGZpbHRlcigoeCkgPT4geCksXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgocikgPT4ge1xuICAgICAgICAgIHRoaXMuX3NlYXJjaCgpO1xuICAgICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzLmZvckVhY2goKHMpID0+IHtcbiAgICAgIHM/LnN1Yj8udW5zdWJzY3JpYmUoKTtcbiAgICB9KTtcbiAgICB0aGlzLnN1YnMgPSBbXTtcbiAgICB0aGlzLnN1YnMyPy5jbGVhcigpO1xuICB9XG5cbiAgZmV0Y2hTYXZlZFF1ZXJ5KCkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBwcmV2UXVlcnlTdHJpbmcgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1NYXAuZ2V0KCdxJyk7XG4gICAgICBpZiAocHJldlF1ZXJ5U3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IHByZXZRdWVyeTogeyBbZjogc3RyaW5nXTogYW55IH0gPSB7fTtcbiAgICAgICAgY29uc3QgZmllbGRzID0gcHJldlF1ZXJ5U3RyaW5nLnNwbGl0KHRoaXMuZGVsaW1pdGVyRmllbGQpO1xuICAgICAgICBmb3IgKGNvbnN0IGZpZWxkIG9mIGZpZWxkcykge1xuICAgICAgICAgIGNvbnN0IGYgPSBmaWVsZC5zcGxpdCh0aGlzLmRlbGltaXRlcldvcmQpO1xuICAgICAgICAgIC8vIGRlYnVnZ2VyO1xuICAgICAgICAgIGlmIChmWzFdID09IG51bGwgfHwgZlsxXSA9PSAnbnVsbCcpIGNvbnRpbnVlO1xuICAgICAgICAgIHByZXZRdWVyeVtmWzBdXSA9IGZbMV07XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZWFyY2hGb3JtPy5wYXRjaFZhbHVlKHByZXZRdWVyeSk7XG4gICAgICAgIGlmIChPYmplY3QudmFsdWVzKHByZXZRdWVyeSkuc29tZSgoeCkgPT4geCAhPSBudWxsKSkgdGhpcy5zZWFyY2goKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgfVxuICB9XG5cbiAgaW5pdChzY2hlbWE6IElTZWFyY2hGb3JtU2NoZW1hPFRRdWVyeSxUUm93PltdKSB7XG4gICAgdGhpcy5uZ09uRGVzdHJveSgpO1xuICAgIGlmICghc2NoZW1hPy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuZm9ybVNjaGVtYSA9IHNjaGVtYTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgLy8gZGVidWdnZXI7XG4gICAgdGhpcy5oYW5kbGVBbGxTY2hlbWEoc2NoZW1hKTtcbiAgICBmb3IgKGNvbnN0IHNjaGVtZSBvZiB0aGlzLmZvcm1TY2hlbWEpIHRoaXMuaGFuZGxlRm9ybVNjaGVtZShzY2hlbWUpO1xuICAgIGZvciAoY29uc3Qgc2NoZW1lIG9mIHRoaXMuZm9ybVNjaGVtYSlcbiAgICAgIGlmIChzY2hlbWUudHJpZ2dlck9uQ2hhbmdlT25Jbml0KSBzY2hlbWUub25DaGFuZ2VGdW5jKHRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpLCB0aGlzLmZvcm0uZ2V0UmF3VmFsdWUoKVtzY2hlbWUuZmllbGRdLCB0aGlzKTtcbiAgfVxuXG4gIGhhbmRsZUFsbFNjaGVtYShzY2hlbWE6IElTZWFyY2hGb3JtU2NoZW1hPFRRdWVyeSwgVFJvdz5bXSkge1xuICAgIHNjaGVtYS5mb3JFYWNoKCh4KSA9PiAoeC50eXBlID0geC50eXBlIHx8ICd0ZXh0JykpO1xuICAgIGlmICh0aGlzLmF1dG9Gb3JtYXRTY2hlbWEgfHwgdGhpcy5hdXRvT3JkZXIpIHtcbiAgICAgIGlmICh0aGlzLmF1dG9Gb3JtYXRTY2hlbWEpIHtcbiAgICAgICAgc2NoZW1hXG4gICAgICAgICAgLmZpbHRlcigoeCkgPT4geC50eXBlID09ICdzZWxlY3QnKVxuICAgICAgICAgIC5mb3JFYWNoKCh4KSA9PiB7XG4gICAgICAgICAgICBpZiAoeC5vcHRpb25zPy5sZW5ndGggPiA1IHx8ICF4Lm9wdGlvbnMpIHgudHlwZSA9ICdhdXRvY29tcGxldGUnO1xuICAgICAgICAgIH0pO1xuICAgICAgICBzY2hlbWFcbiAgICAgICAgICAuZmlsdGVyKCh4KSA9PiB4LnR5cGUgPT0gJ2NoZWNrYm94JylcbiAgICAgICAgICAuZm9yRWFjaCgoeCkgPT4ge1xuICAgICAgICAgICAgeC50eXBlID0gJ3NlbGVjdCc7XG4gICAgICAgICAgICB4Lm9wdGlvbnMgPSBDb25maWcuYm9vbExpc3Q7XG4gICAgICAgICAgICB4LmxhYmVsRmllbGQgPSAndGl0bGUnO1xuICAgICAgICAgICAgeC52YWx1ZUZpZWxkID0gJ2NvZGUnO1xuICAgICAgICAgIH0pO1xuICAgICAgICB0aGlzLmZvcm1TY2hlbWEgPSBzY2hlbWE7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5hdXRvT3JkZXIpIHtcbiAgICAgICAgc2NoZW1hID0gc2NoZW1hLnNvcnQyKCdsYWJlbCcsIHRydWUpO1xuICAgICAgICB0aGlzLmZvcm1TY2hlbWEgPSBbXG4gICAgICAgICAgLi4uc2NoZW1hPy5maWx0ZXIoKHgpID0+IHguYWN0aW9uICYmIHgudHlwZSAhPSAnY2hlY2tib3gnKSxcbiAgICAgICAgICAuLi5zY2hlbWE/LmZpbHRlcigoeCkgPT4gIXguYWN0aW9uICYmIHgudHlwZSAhPSAnY2hlY2tib3gnKSxcbiAgICAgICAgICAuLi5zY2hlbWE/LmZpbHRlcigoeCkgPT4geC50eXBlID09ICdjaGVja2JveCcpLFxuICAgICAgICBdO1xuICAgICAgfVxuICAgIH0gZWxzZSB0aGlzLmZvcm1TY2hlbWEgPSBzY2hlbWE7XG4gICAgdGhpcy5zZWFyY2hGb3JtID0gbmV3IEZvcm1Hcm91cCh0aGlzLnVTLmZvcm1TY2hlbWFUb0Zvcm1Db250cm9sczxJU2VhcmNoRm9ybVNjaGVtYTxUUXVlcnksVFJvdz4+KHNjaGVtYS5maWx0ZXIoKHgpID0+ICF4LnN0YW5kYWxvbmUpKSk7XG4gICAgdGhpcy5zdGFuZGFsb25lRm9ybSA9IG5ldyBGb3JtR3JvdXAodGhpcy51Uy5mb3JtU2NoZW1hVG9Gb3JtQ29udHJvbHM8SVNlYXJjaEZvcm1TY2hlbWE8VFF1ZXJ5LFRSb3c+PihzY2hlbWEuZmlsdGVyKCh4KSA9PiB4LnN0YW5kYWxvbmUpKSk7XG4gIH1cbiAgaGFuZGxlRm9ybVNjaGVtZShzY2hlbWU6IElTZWFyY2hGb3JtU2NoZW1hPFRRdWVyeSwgVFJvdz4pIHtcbiAgICBzY2hlbWUuaWQgPSB0aGlzLnVTLmdlbmVyYXRlVVVJRCgpO1xuXG4gICAgaWYgKHNjaGVtZS5vcHRpb25zSW5pdEZ1bmMpIHtcbiAgICAgIHNjaGVtZS5vcHRpb25zSW5pdEZ1bmMuc3Vic2NyaWJlKChyKSA9PiB7XG4gICAgICAgIHNjaGVtZS5vcHRpb25zID0gcjtcbiAgICAgICAgLy8gdGhpcy5vcHRpb25zTWFwW3NjaGVtZS5maWVsZF0gPSByO1xuICAgICAgfSk7XG4gICAgfVxuICAgIGlmIChzY2hlbWUub25DaGFuZ2VGdW5jKSB7XG4gICAgICBjb25zdCBzdWIgPSB0aGlzLnNlYXJjaEZvcm0/LmNvbnRyb2xzW3NjaGVtZS5maWVsZD8udG9TdHJpbmcoKV0/LnZhbHVlQ2hhbmdlc1xuICAgICAgICAucGlwZShkZWJvdW5jZVRpbWUoMCkpXG4gICAgICAgIC5zdWJzY3JpYmUoKHIpID0+IHNjaGVtZS5vbkNoYW5nZUZ1bmModGhpcy5zZWFyY2hGb3JtPy5nZXRSYXdWYWx1ZSgpLCByLCB0aGlzKSk7XG4gICAgICB0aGlzLnN1YnMucHVzaCh7IHN1Yjogc3ViLCBmaWVsZE5hbWU6IHNjaGVtZS5maWVsZD8udG9TdHJpbmcoKSB9KTtcbiAgICB9XG4gICAgaWYgKHNjaGVtZS5zdGFuZGFsb25lKSBzY2hlbWUuZm9ybSA9IHRoaXMuc3RhbmRhbG9uZUZvcm07XG4gICAgZWxzZSBzY2hlbWUuZm9ybSA9IHRoaXMuc2VhcmNoRm9ybTtcbiAgfVxuICBkZXRhY2hGb3JtU2NoZW1lKHNjaGVtZUluZGV4PzogbnVtYmVyLCBmaWVsZE5hbWU/OiBzdHJpbmcpIHtcbiAgICB0aGlzLnN1YnMuZmluZCgoeCkgPT4geC5maWVsZE5hbWUgPT0gdGhpcy5mb3JtU2NoZW1hW3NjaGVtZUluZGV4XT8uZmllbGQgfHwgeC5maWVsZE5hbWUgPT0gZmllbGROYW1lKT8uc3ViPy51bnN1YnNjcmliZSgpO1xuICB9XG4gIGFtZW5kRm9ybVNjaGVtZSA9IChmaWVsZE5hbWU6IGtleW9mIFRRdWVyeSwgZm9ybVNjaGVtZTogUGFydGlhbDxJU2VhcmNoRm9ybVNjaGVtYTx7IFtrIGluIGtleW9mIFRRdWVyeV06IEFic3RyYWN0Q29udHJvbDxhbnksIGFueT4gfCBhbnkgfT4+KSA9PiB7XG4gICAgLy8gZGVidWdnZXI7XG4gICAgY29uc3QgaW5kID0gdGhpcy5mb3JtU2NoZW1hLmZpbmRJbmRleCgoeCkgPT4geC5maWVsZCA9PSBmaWVsZE5hbWUpO1xuICAgIGlmIChpbmQgPiAtMSkge1xuICAgICAgdGhpcy5mb3JtU2NoZW1hW2luZF0gPSB7XG4gICAgICAgIC4uLnRoaXMuZm9ybVNjaGVtYVtpbmRdLFxuICAgICAgICAuLi4oZm9ybVNjaGVtZSBhcyBhbnkpLFxuICAgICAgfTtcbiAgICB9XG4gIH07XG5cbiAgZ2V0IGFsbFNlYXJjaEZvcm1WYWx1ZSgpIHtcbiAgICByZXR1cm4geyAuLi50aGlzLnNlYXJjaEZvcm0/LnZhbHVlLCAuLi50aGlzLnN0YW5kYWxvbmVGb3JtLnZhbHVlIH07XG4gIH1cblxuICB0cmFja0J5Um93SUQgPSAoaW5kZXgsIGl0ZW0pID0+IHtcbiAgICByZXR1cm4gaXRlbT8udmFsdWU/Ll9fcm93SUQ7XG4gIH07XG5cbiAgY2xlYXJGaWx0ZXJzKCkge1xuICAgIHRoaXMuc2VhcmNoRm9ybT8ucmVzZXQoKTtcbiAgICB0aGlzLnNlYXJjaCgpO1xuICB9XG5cbiAgcmVmcmVzaCgpIHtcbiAgICB0aGlzLnNlYXJjaCgpO1xuICB9XG4gIHNlYXJjaCgpIHtcbiAgICB0aGlzLnNlYXJjaFRyaWdnZXIubmV4dCh0cnVlKTtcbiAgfVxuICBhc3luYyBfc2VhcmNoKCkge1xuICAgIC8vIGRlYnVnZ2VyO1xuICAgIGlmICghdGhpcy5zZWFyY2hGb3JtKSByZXR1cm47XG4gICAgY29uc3QgcmVxID0gdGhpcy51Uy5kZWxldGVOdWxsKGNsb25lRGVlcCh0aGlzLnNlYXJjaEZvcm0/LmdldFJhd1ZhbHVlKCkpKTtcbiAgICAvLyBkZWJ1Z2dlcjtcbiAgICBpZiAodGhpcy5pc1RhYmxlUGFnaW5hdGVkKSB7XG4gICAgICBpZiAoIXRoaXMuZGF0YSkgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgIHRoaXMuZGF0YSA9IFtdO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMudGFibGVIVFRQU1JFRj8uc2VhcmNoKHJlcSk7XG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgfSwgNTAwKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuc2VhcmNoRnVuY3Rpb24pIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBsYXN0VmFsdWVGcm9tKFxuICAgICAgICAgIHRoaXMuc2VhcmNoRnVuY3Rpb24oe1xuICAgICAgICAgICAgLi4ucmVxLFxuICAgICAgICAgICAgc29ydEJ5OiB0aGlzLm9yZGVyRmllbGQgfHwgJ2NyZWF0ZWRPbicsXG4gICAgICAgICAgICBzb3J0RGlyZWN0aW9uOiB0aGlzLm9yZGVyRGlyZWN0aW9uPy50b1VwcGVyQ2FzZSgpIHx8ICdERVNDJyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5kYXRhID0gZGF0YT8uWydjb250ZW50J10gfHwgZGF0YTtcbiAgICAgICAgY29uc29sZS5sb2coZGF0YSk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBjb25zb2xlLmVycm9yKEVycm9yKTtcbiAgICAgIH1cbiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgIH1cbiAgICB0aGlzLnVhUy5hZGQoe1xuICAgICAgY29kZTogRVVBLnNlYXJjaGVkLFxuICAgICAgYWN0aXZpdHlEZXNjcmlwdGlvbjogdGhpcy5sYWJlbCArICcgJyArIEpTT04uc3RyaW5naWZ5KHJlcSksXG4gICAgfSk7XG4gIH1cblxuICBzYXZlUXVlcnkocXVlcnkgPSB0aGlzLnNlYXJjaEZvcm0/LnZhbHVlKSB7XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW10sIHtcbiAgICAgIHF1ZXJ5UGFyYW1zOiB7XG4gICAgICAgIHE6IE9iamVjdC5rZXlzKHF1ZXJ5KVxuICAgICAgICAgIC5maWx0ZXIoKHgpID0+IHF1ZXJ5W3hdICE9IG51bGwpXG4gICAgICAgICAgLm1hcCgoaykgPT4gYCR7a30ke3RoaXMuZGVsaW1pdGVyV29yZH0ke3F1ZXJ5W2tdfWApXG4gICAgICAgICAgLmpvaW4odGhpcy5kZWxpbWl0ZXJGaWVsZCksXG4gICAgICB9LFxuICAgICAgcmVwbGFjZVVybDogdHJ1ZSxcbiAgICAgIHJlbGF0aXZlVG86IHRoaXMucm91dGUsXG4gICAgICBxdWVyeVBhcmFtc0hhbmRsaW5nOiAnbWVyZ2UnLFxuICAgIH0pO1xuICB9XG4gIHJvd0NsaWNrKGUpIHtcbiAgICB0aGlzLl9yb3dDbGljay5lbWl0KGUpO1xuICB9XG5cbiAgZ2V0IHNlbGVjdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy50YWJsZUhUVFBTUkVGPy5zZWxlY3RlZEl0ZW1zIHx8IHRoaXMudGFibGVQbGFpblJlZj8uc2VsZWN0ZWRJdGVtcztcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTZWFyY2hGb3JtU2NoZW1hPFRRdWVyeSBleHRlbmRzIElPYmplY3RMaXRlcmFsID0gSU9iamVjdExpdGVyYWwsIFRSb3cgZXh0ZW5kcyBJT2JqZWN0TGl0ZXJhbCA9IElPYmplY3RMaXRlcmFsPlxuICBleHRlbmRzIElCYXNlRm9ybVNjaGVtYTxcbiAgICBUUXVlcnksXG4gICAgRmluZEl0ZW1Db21wb25lbnQ8VFF1ZXJ5LCBUUm93PixcbiAgICB7XG4gICAgICBbSyBpbiBrZXlvZiBUUXVlcnldOiBBYnN0cmFjdENvbnRyb2w8YW55LCBhbnk+O1xuICAgIH1cbiAgPiB7XG4gIHN0YW5kYWxvbmU/OiBib29sZWFuO1xuICBhY3Rpb24/OiAocm93OiBhbnksIGNlbGw6IGFueSwgZm9ybT86IEZvcm1Hcm91cDxJU3RyaWN0Rm9ybUdyb3VwPFRRdWVyeT4+KSA9PiBhbnk7XG59XG4iLCI8bG9hZGVyIFtsb2FkaW5nXT1cImxvYWRpbmdcIj5cbiAgQGlmICghaGlkZUZvcm0gJiYgc2VhcmNoRm9ybSkge1xuICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwic2VhcmNoRm9ybVwiIChuZ1N1Ym1pdCk9XCJzZWFyY2goKVwiPlxuICAgICAgPGRpdiBjbGFzcz1cInJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgQGZvciAoc2NoZW1lIG9mIGZvcm1TY2hlbWE7IHRyYWNrIHRyYWNrQnlSb3dJRCgkaW5kZXgsIHNjaGVtZSkpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwie3sgZ3JpZENsYXNzIH19IFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBhbGlnbi1pdGVtcy1lbmRcIj5cbiAgICAgICAgICAgICAgQHN3aXRjaCAodHJ1ZSkge1xuICAgICAgICAgICAgICAgIEBjYXNlIChzY2hlbWUudHlwZSA9PSAndGVsJykge1xuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxuICAgICAgICAgICAgICAgICAgICA8YXBwLXBob25lLW51bWJlclxuICAgICAgICAgICAgICAgICAgICAgIFtmb3JtXT1cInNjaGVtZS5mb3JtXCJcbiAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwic2NoZW1lLmxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCJzY2hlbWUuZmllbGRcIlxuICAgICAgICAgICAgICAgICAgICAgIFtzaG93TGFiZWxdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgIFtzaG93VmFsaWRhdGlvbl09XCJzY2hlbWUuc2hvd1ZhbGlkYXRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgIFtzaG93VmFsaWRhdGlvbkljb25dPVwic2NoZW1lLnNob3dWYWxpZGF0aW9uSWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgW2NvdW50cnlDb2RlM109XCJjZWxsQ291bnRyeUNvZGUzc1tzY2hlbWUuZ2V0Q291bnRyeUNvZGUzS2V5XSB8fCBzY2hlbWUuY291bnRyeUNvZGUzXCJcbiAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwic2NoZW1lLmRpc2FibGVkSWYgfCBmdW5jdGlvbkNhbGxlcjI6IHNlYXJjaEZvcm0udmFsdWUgOiAoc2NoZW1lLmZpZWxkIHwgdG9BbnkpXCJcbiAgICAgICAgICAgICAgICAgICAgICAjaW5wdXRUYWcgLz5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChzaG93VmFsaWRhdGlvbk1zZykge1xuICAgICAgICAgICAgICAgICAgICAgIDxhcHAtdmFsaWRhdGlvbi1tZXNzYWdlIFtpbnB1dF09XCJpbnB1dFRhZ1wiIC8+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBAY2FzZSAoc2NoZW1lLnR5cGUgPT0gJ2F1dG9jb21wbGV0ZScpIHtcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgPGFwcC1hdXRvY29tcGxldGVcbiAgICAgICAgICAgICAgICAgICAgICBbZm9ybV09XCJzY2hlbWUuZm9ybVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cInNjaGVtZS5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2xhYmVsRmllbGRdPVwic2NoZW1lLmxhYmVsRmllbGRcIlxuICAgICAgICAgICAgICAgICAgICAgIFthdXRvUGlja1ZhbHVlRmllbGRdPVwic2NoZW1lLmF1dG9QaWNrVmFsdWVGaWVsZFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2xhYmVsVHlwZV09XCJzY2hlbWUubGFiZWxUeXBlfHRvQW55XCJcbiAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc0Z1bmNdPVwic2NoZW1lLm9wdGlvbnNGdW5jXCJcbiAgICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCJzY2hlbWUuZmllbGRcIlxuICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25Gb3JtYXR0ZXJdPVwic2NoZW1lLm9wdGlvbkZvcm1hdHRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlRmllbGRdPVwic2NoZW1lLnZhbHVlRmllbGRcIlxuICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cInNjaGVtZS5vcHRpb25zIHx8IGNlbGxPcHRpb25zW3NjaGVtZS5maWVsZCB8IHRvQW55XVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2hpbnRdPVwic2NoZW1lLmhpbnRcIlxuICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJzY2hlbWUuZGlzYWJsZWRJZiB8IGZ1bmN0aW9uQ2FsbGVyMjogc2VhcmNoRm9ybS52YWx1ZSA6IChzY2hlbWUuZmllbGQgfCB0b0FueSlcIlxuICAgICAgICAgICAgICAgICAgICAgICNpbnB1dFRhZyAvPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKHNob3dWYWxpZGF0aW9uTXNnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgPGFwcC12YWxpZGF0aW9uLW1lc3NhZ2UgW2lucHV0XT1cImlucHV0VGFnXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIEBkZWZhdWx0IHtcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgPGZvcm0+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImd4LTIgcm93IGFsaWduLWl0ZW1zLWVuZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWlucHV0LWJhc2ljXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgI2Zvcm1GaWVsZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuYW1lXT1cInNjaGVtZS5maWVsZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1dPVwic2NoZW1lLmZvcm1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0eXBlXT1cInNjaGVtZS50eXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXV0b1BpY2tWYWx1ZUZpZWxkXT1cInNjaGVtZS5hdXRvUGlja1ZhbHVlRmllbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZUZpZWxkXT1cInNjaGVtZS52YWx1ZUZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxUeXBlXT1cInNjaGVtZS5sYWJlbFR5cGV8dG9BbnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cInNjaGVtZS5jaGVja2VkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd1ZhbGlkYXRpb25dPVwiISFzY2hlbWUuYXN5bmNWYWxpZGF0b3JzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd1ZhbGlkYXRpb25JY29uXT1cIiEhc2NoZW1lLmFzeW5jVmFsaWRhdG9yc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25vRm9ybWF0XT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbEZpZWxkXT1cInNjaGVtZS5sYWJlbEZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uRm9ybWF0dGVyXT1cInNjaGVtZS5vcHRpb25Gb3JtYXR0ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cInNjaGVtZS5vcHRpb25zIHx8IGNlbGxPcHRpb25zW3NjaGVtZS5maWVsZCB8IHRvQW55XVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2RlY2ltYWxQb2ludHNdPVwic2NoZW1lLmRlY2ltYWxQb2ludHNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoaW50XT1cInNjaGVtZS5oaW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWF4XT1cInNjaGVtZS5tYXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttaW5dPVwic2NoZW1lLm1pblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInNjaGVtZS5wbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cInNjaGVtZS5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInNjaGVtZS5kaXNhYmxlZElmIHwgZnVuY3Rpb25DYWxsZXIyOiBzZWFyY2hGb3JtLnZhbHVlIDogKHNjaGVtZS5maWVsZCB8IHRvQW55KVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoc2NoZW1lLnN0YW5kYWxvbmUgJiYgc2NoZW1lLmFjdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWF1dG9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWJ0blxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXA9XCJzaG93XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhZm9ybUZpZWxkLmNvbnRyb2w/LnZhbGlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvblR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1jbGljayk9XCJzY2hlbWUuYWN0aW9uKGFsbFNlYXJjaEZvcm1WYWx1ZSwgZm9ybUZpZWxkLnZhbHVlLCBzZWFyY2hGb3JtKVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChzY2hlbWUuYWN0aW9uICYmICFzY2hlbWUuc3RhbmRhbG9uZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWF1dG9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWJ0blxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ljb25dPVwic2NoZW1lLmljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ljb25CdG5dPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25UeXBlPVwic3VibWl0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtY2xpY2spPVwic2NoZW1lLmFjdGlvbihhbGxTZWFyY2hGb3JtVmFsdWUsIGZvcm1GaWVsZC52YWx1ZSwgc2VhcmNoRm9ybSlcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9mb3JtPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICBAaWYgKHNob3dWYWxpZGF0aW9uTXNnKSB7XG4gICAgICAgICAgICAgICAgICAgIDxhcHAtdmFsaWRhdGlvbi1tZXNzYWdlIFtpbnB1dF09XCJmb3JtRmllbGRcIiAvPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZCBqdXN0aWZ5LWNvbnRlbnQtZW5kIGQtZmxleFwiPlxuICAgICAgICAgIEBpZiAoc2hvd0NsZWFyQnRuKSB7XG4gICAgICAgICAgICA8YXBwLWJ0biB0eXBlPVwiZGFuZ2VyLW91dGxpbmVcIiB0ZXh0PVwiQ2xlYXJcIiBpY29uPVwiZGVsZXRlXCIgKG1jbGljayk9XCJjbGVhckZpbHRlcnMoKVwiIC8+XG4gICAgICAgICAgfVxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXgtMVwiPjwvc3Bhbj5cbiAgICAgICAgICBAaWYgKHNob3dTZWFyY2hCdG4pIHtcbiAgICAgICAgICAgIDxhcHAtYnRuXG4gICAgICAgICAgICAgIFtncm91cF09XCInc2VhcmNoJ1wiXG4gICAgICAgICAgICAgIFtpY29uQnRuXT1cInRydWVcIlxuICAgICAgICAgICAgICB0ZXh0PVwiU2VhcmNoXCJcbiAgICAgICAgICAgICAgYWN0aW9uVHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICAgIFtleGNsdWRlTG9nZ2luZ109XCJ0cnVlXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFzZWFyY2hGdW5jdGlvbiAmJiAhaXNUYWJsZVBhZ2luYXRlZFwiXG4gICAgICAgICAgICAgIChtY2xpY2spPVwic2VhcmNoKClcIiAvPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAaWYgKGNyZWF0ZUJ1dHRvbikge1xuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJteC0xXCI+PC9zcGFuPlxuICAgICAgICAgICAgPGFwcC1idG4gdHlwZT1cIm91dGxpbmVcIiB0ZXh0PVwiQ3JlYXRlXCIgaWNvbj1cImFkZFwiIHJvdXRlckxpbms9XCIuLi9jcmVhdGVcIiAvPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Zvcm0+XG4gIH1cblxuICA8bmctY29udGVudCBzZWxlY3Q9XCJbdGFibGVQYW5lbF1cIj48L25nLWNvbnRlbnQ+XG5cbiAgQGlmIChkaXNwbGF5ZWRDb2x1bW5zPy5sZW5ndGgpIHtcbiAgICA8ZGl2IGNsYXNzPVwibXQtM1wiIFtoaWRkZW5dPVwiIXNob3dEYXRhIHx8ICghZGF0YSAmJiAhaXNUYWJsZVBhZ2luYXRlZClcIj5cbiAgICAgIDxuZy1jb250YWluZXI+XG4gICAgICAgIEBpZiAoaXNUYWJsZVBhZ2luYXRlZCkge1xuICAgICAgICAgIDx0YWJsZS1odHRwc1xuICAgICAgICAgICAgI3RhYmxlSFRUUFNcbiAgICAgICAgICAgIFtkaXNwbGF5ZWRDb2x1bW5zXT1cImRpc3BsYXllZENvbHVtbnNcIlxuICAgICAgICAgICAgW3Nob3dFeHBvcnRdPVwic2hvd0V4cG9ydFwiXG4gICAgICAgICAgICBbc3RhcnRTZWN0aW9uVGVtcGxhdGVdPVwic3RhcnRTZWN0aW9uVGVtcGxhdGVcIlxuICAgICAgICAgICAgW3VzZVNlbGVjdGlvbl09XCJ1c2VTZWxlY3Rpb25cIlxuICAgICAgICAgICAgW3Nob3dSZWZyZXNoQnRuXT1cInNob3dSZWZyZXNoQnRuXCJcbiAgICAgICAgICAgIFtvYnNlcnZhYmxlRnVuY109XCJzZWFyY2hPYnNlcnZhYmxlRnVuY1wiXG4gICAgICAgICAgICBub0l0ZW1UeHQ9XCJObyByZXN1bHRzIGZvdW5kXCJcbiAgICAgICAgICAgIFtpc0V4cGFuZGFibGVdPVwiaXNFeHBhbmRhYmxlXCJcbiAgICAgICAgICAgIFtleHBhbmRlZFJvd1RlbXBsYXRlXT1cImV4cGFuZGVkUm93VGVtcGxhdGVcIlxuICAgICAgICAgICAgW2NlbnRlckNlbGxzXT1cImNlbnRlckNlbGxzXCJcbiAgICAgICAgICAgIFtzbWFsbGVyRm9udHNdPVwic21hbGxlckZvbnRzXCJcbiAgICAgICAgICAgIFtub3dyYXBdPVwibm93cmFwXCJcbiAgICAgICAgICAgIFtwYWdlU2l6ZV09XCJwYWdlU2l6ZVwiXG4gICAgICAgICAgICBbbGFiZWxdPVwibGFiZWxcIlxuICAgICAgICAgICAgW3Nob3dBZGRpdGlvbmFsQ29sdW1uc109XCJzaG93QWRkaXRpb25hbENvbHVtbnNcIlxuICAgICAgICAgICAgW29yZGVyRmllbGRdPVwib3JkZXJGaWVsZFwiXG4gICAgICAgICAgICBbcm93T3B0aW9uc109XCJvcHRpb25zXCJcbiAgICAgICAgICAgIFtvcmRlckRpcmVjdGlvbl09XCJvcmRlckRpcmVjdGlvblwiXG4gICAgICAgICAgICAocm93Q2xpY2spPVwicm93Q2xpY2soJGV2ZW50KVwiIC8+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIDx0YWJsZS1wbGFpblxuICAgICAgICAgICAgW2Rpc3RpbmN0XT1cInRydWVcIlxuICAgICAgICAgICAgW3Nob3dQYWdlcl09XCJ0cnVlXCJcbiAgICAgICAgICAgIFtwYWdlU2l6ZV09XCJwYWdlU2l6ZVwiXG4gICAgICAgICAgICBbY2VudGVyQ2VsbHNdPVwiZmFsc2VcIlxuICAgICAgICAgICAgW3N0YXJ0U2VjdGlvblRlbXBsYXRlXT1cInN0YXJ0U2VjdGlvblRlbXBsYXRlXCJcbiAgICAgICAgICAgIFtzbWFsbGVyRm9udHNdPVwic21hbGxlckZvbnRzXCJcbiAgICAgICAgICAgIFtub3dyYXBdPVwibm93cmFwXCJcbiAgICAgICAgICAgIFtzaG93RmlsdGVyXT1cInNob3dGaWx0ZXJcIlxuICAgICAgICAgICAgW3Nob3dFeHBvcnRdPVwic2hvd0V4cG9ydFwiXG4gICAgICAgICAgICBbaXNFeHBhbmRhYmxlXT1cImlzRXhwYW5kYWJsZVwiXG4gICAgICAgICAgICBbZXhwYW5kZWRSb3dUZW1wbGF0ZV09XCJleHBhbmRlZFJvd1RlbXBsYXRlXCJcbiAgICAgICAgICAgIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgICAgICAgICBub0l0ZW1UeHQ9XCJObyByZXN1bHRzIGZvdW5kXCJcbiAgICAgICAgICAgIChyb3dDbGljayk9XCJyb3dDbGljaygkZXZlbnQpXCJcbiAgICAgICAgICAgIFtvcmRlckZpZWxkXT1cIm9yZGVyRmllbGRcIlxuICAgICAgICAgICAgW3Jvd09wdGlvbnNdPVwib3B0aW9uc1wiXG4gICAgICAgICAgICBbc2hvd0FkZGl0aW9uYWxDb2x1bW5zXT1cInNob3dBZGRpdGlvbmFsQ29sdW1uc1wiXG4gICAgICAgICAgICBbb3JkZXJEaXJlY3Rpb25dPVwib3JkZXJEaXJlY3Rpb25cIlxuICAgICAgICAgICAgW2Rpc3BsYXllZENvbHVtbnNdPVwiZGlzcGxheWVkQ29sdW1uc1wiXG4gICAgICAgICAgICBbZGF0YV09XCJkYXRhXCIgLz5cbiAgICAgICAgfVxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIH1cbjwvbG9hZGVyPlxuIl19