simpo-component-library 2.1.82 → 2.1.84

Sign up to get free protection for your applications and to get access to all the features.
Files changed (27) hide show
  1. package/esm2022/lib/components/document/document.component.mjs +1 -2
  2. package/esm2022/lib/directive/removeCarousel-directive.mjs +1 -2
  3. package/esm2022/lib/ecommerce/sections/address/address.component.mjs +1 -2
  4. package/esm2022/lib/ecommerce/sections/authentication-required/authentication-required.component.mjs +1 -2
  5. package/esm2022/lib/ecommerce/sections/cart/cart.component.mjs +1 -19
  6. package/esm2022/lib/ecommerce/sections/order-details/order-details.component.mjs +1 -2
  7. package/esm2022/lib/ecommerce/sections/product-desc/product-desc.component.mjs +1 -5
  8. package/esm2022/lib/ecommerce/sections/product-list/product-list.component.mjs +1 -4
  9. package/esm2022/lib/ecommerce/sections/user-profile/user-profile.component.mjs +1 -5
  10. package/esm2022/lib/ecommerce/sections/verify-payment/verify-payment.component.mjs +1 -3
  11. package/esm2022/lib/ecommerce/sections/whislist/whislist.component.mjs +1 -5
  12. package/esm2022/lib/elements/navbar-button-element/navbar-button-element.component.mjs +1 -2
  13. package/esm2022/lib/sections/appointment-form/appointment-form.component.mjs +1 -16
  14. package/esm2022/lib/sections/banner-section/banner-section.component.mjs +1 -3
  15. package/esm2022/lib/sections/carousel-banner/carousel-banner.component.mjs +1 -4
  16. package/esm2022/lib/sections/logo-gallery/logo-gallery.component.mjs +1 -2
  17. package/esm2022/lib/sections/pricing-section/pricing-section.component.mjs +1 -2
  18. package/esm2022/lib/sections/property-component/property-component.component.mjs +1 -2
  19. package/esm2022/lib/sections/registration-form/registration-form.component.mjs +2 -2
  20. package/esm2022/lib/sections/usp-video-section/usp-video-section.component.mjs +1 -2
  21. package/esm2022/lib/services/rest.service.mjs +4 -4
  22. package/esm2022/lib/services/storage.service.mjs +1 -7
  23. package/fesm2022/simpo-component-library.mjs +4 -75
  24. package/fesm2022/simpo-component-library.mjs.map +1 -1
  25. package/package.json +1 -1
  26. package/simpo-component-library-2.1.84.tgz +0 -0
  27. package/simpo-component-library-2.1.82.tgz +0 -0
@@ -204,7 +204,7 @@ export class RegistrationFormComponent extends BaseSection {
204
204
  this.data?.sectionType === 'registrationForm' ? this.createRegistration() : this.createAdmission();
205
205
  }
206
206
  createRegistration() {
207
- this.payload['returnUrl'] = `https://cmis.tejsoft.com/verify-payment/?url=true&type=REGISTRATION&bId=${this.businessId}`;
207
+ this.payload['returnUrl'] = `https://dev.cmis.tejsoft.com/verify-payment/?url=true&type=REGISTRATION&bId=${this.businessId}`;
208
208
  this.registrationSubscription = this.restService.createRegistrationForPayment(this.payload).subscribe((res) => {
209
209
  // this.snackBar.open('Registration created successfully', 'close', {duration: 2000});
210
210
  this._eventService.cashFreeEvent.emit({ response: res, paymentType: 'REGISTRATION' });
@@ -423,4 +423,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImpor
423
423
  }], nextComponentColor: [{
424
424
  type: Input
425
425
  }] } });
426
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0cmF0aW9uLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9zZWN0aW9ucy9yZWdpc3RyYXRpb24tZm9ybS9yZWdpc3RyYXRpb24tZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL3NlY3Rpb25zL3JlZ2lzdHJhdGlvbi1mb3JtL3JlZ2lzdHJhdGlvbi1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxRQUFRLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBRTlDLE9BQU8sRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUFnQyxNQUFNLGVBQWUsQ0FBQztBQUMzRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUUzRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM5RCxPQUFPLEVBQWEsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFFMUYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDekUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDM0UsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDNUUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDekYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FB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QUF5QjtrR0FBekIseUJBQXlCLDRNQzVFdEMsNCtaQXdPQSxvdElEM0xJLFlBQVksaWtCQUNaLGlCQUFpQiw4QkFDakIsbUJBQW1CLDZRQUNuQixvQkFBb0IsMmRBQ3BCLGVBQWU7Z0JBRWYsV0FBVztnQkFDWCxrQkFBa0IseUZBQ2xCLG1CQUFtQiwwR0FFbkIsZUFBZSxtRkFDZix3QkFBd0Isb0hBSXhCLG1CQUFtQixtRkFHbkIsY0FBYyxnRkFFZCxnQkFBZ0Isb0ZBR2hCLGVBQWUsZ01BQ2YsZUFBZSwrdEJBQ2YsV0FBVyxzOEJBQ1gsYUFBYTs7MkZBS0oseUJBQXlCO2tCQW5DckMsU0FBUzsrQkFDRSx5QkFBeUIsY0FDdkIsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osaUJBQWlCO3dCQUNqQixtQkFBbUI7d0JBQ25CLG9CQUFvQjt3QkFDcEIsZUFBZTt3QkFDZixvQkFBb0I7d0JBQ3BCLFdBQVc7d0JBQ1gsa0JBQWtCO3dCQUNsQixtQkFBbUI7d0JBQ25CLHlCQUF5Qjt3QkFDekIsZUFBZTt3QkFDZix3QkFBd0I7d0JBQ3hCLHdCQUF3Qjt3QkFDeEIscUJBQXFCO3dCQUNyQiw4QkFBOEI7d0JBQzlCLG1CQUFtQjt3QkFDbkIsZUFBZTt3QkFDZiwwQkFBMEI7d0JBQzFCLGNBQWM7d0JBQ2QsdUJBQXVCO3dCQUN2QixnQkFBZ0I7d0JBQ2hCLGdDQUFnQzt3QkFDaEMsZ0NBQWdDO3dCQUNoQyxlQUFlO3dCQUNmLGVBQWU7d0JBQ2YsV0FBVzt3QkFDWCxhQUFhO3FCQUNkOytOQUtRLElBQUk7c0JBQVosS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcmVzdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgZm9ya0pvaW4sIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBNYXRTbmFja0JhciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NuYWNrLWJhcic7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0R3JpZExpc3RNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9ncmlkLWxpc3QnO1xyXG5pbXBvcnQgeyBTaW1wb0VsZW1lbnRzTW9kdWxlIH0gZnJvbSAnLi4vLi4vZWxlbWVudHMvaW5kZXgnO1xyXG5pbXBvcnQgeyBCYWNrZ3JvdW5kTW9kZWwsIFN0eWxlc01vZGVsIH0gZnJvbSAnLi4vLi4vc3R5bGVzL3N0eWxlLm1vZGVsJztcclxuaW1wb3J0IHsgU2ltcG9Db21wb25lbnRNb2R1bGUgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2luZGV4JztcclxuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXREaWFsb2dNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBTaW1wb0J1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2VsZW1lbnRzL3NpbXBvLWJ1dHRvbi9zaW1wby1idXR0b24uY29tcG9uZW50JztcclxuXHJcbmltcG9ydCB7IEFuaW1hdGlvbkRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9hbmltYXRpb24tZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQmFja2dyb3VuZERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9iYWNrZ3JvdW5kLWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IENvbnRlbnRGaXREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvY29udGVudC1maXQtZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQmFubmVyQ29udGVudEZpdERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9iYW5uZXItY29udGVudC1maXQtZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQm9yZGVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2JvcmRlci1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBCdXR0b25EaXJlY3RpdmVEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvYnV0dG9uLWRpcmVjdGl2ZS5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBDb2x1bW5EaXJlY3RpdmVEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvY29sdW1uLWRpcmVjdGl2ZS5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBDb250YWluZXJGaXREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvY29udGFpbmVyLWZpci5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBzaW1wb0NvbmV0ZW5BbGlnbm1lbnREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvY29udGVudC1hbGlnbm1lbnQtZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQ29ybmVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2Nvcm5lci1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBTaW1wb0Zvb3RlckxheW91dERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9mb290ZXItbGF5b3V0LWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IEhvdmVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2hvdmVyLWVsZW1lbnQtZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgSW1hZ2VEaXJlY3RpdmVEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvaW1hZ2UtZGlyZWN0aXZlLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IE92ZXJsYXlEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvb3ZlcmxheS1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBQb3NpdGlvbkxheW91dERpcmVjdGl2ZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9wb3NpdGlvbi1sYXlvdXQtZGlyZWN0aXZlLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFRleHRCYWNrZ3JvdW5kRGlyZWN0aXZlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL3RleHQtYmFja2dyb3VuZC1kaXJlY3RpdmUuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgRXZlbnRzU2VydmljZSB9IGZyb20gJy4vLi4vLi4vc2VydmljZXMvZXZlbnRzLnNlcnZpY2UnO1xyXG5pbXBvcnQgQmFzZVNlY3Rpb24gZnJvbSAnLi4vQmFzZVNlY3Rpb24nO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBUZXh0Q29udGVudE1vZGVsLCBUZXh0U2VjdGlvbk1vZGVsIH0gZnJvbSAnLi4vdGV4dC1zZWN0aW9uL3RleHQtc2VjdGlvbi5tb2RlbCc7XHJcbmltcG9ydCB7IE1hdE9wdGlvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXRTZWxlY3RNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3QnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHsgSW1hZ2VVcGxhb2RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvaW1hZ2UtdXBsb2FkLXNlcnZpY2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IFJlZ2lzdHJhdGlvbkZvcm1Db250ZW50TW9kZWwsIFJlZ2lzdHJhdGlvbkZvcm1Nb2RlbCB9IGZyb20gJy4vcmVnaXN0cmF0aW9uRm9ybS5tb2RlbCc7XHJcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NpbXBvLXJlZ2lzdHJhdGlvbi1mb3JtJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIE1hdEdyaWRMaXN0TW9kdWxlLFxyXG4gICAgU2ltcG9FbGVtZW50c01vZHVsZSxcclxuICAgIFNpbXBvQ29tcG9uZW50TW9kdWxlLFxyXG4gICAgTWF0RGlhbG9nTW9kdWxlLFxyXG4gICAgU2ltcG9CdXR0b25Db21wb25lbnQsXHJcbiAgICAvL2RpcmVjdGl2ZVxyXG4gICAgQW5pbWF0aW9uRGlyZWN0aXZlLFxyXG4gICAgQmFja2dyb3VuZERpcmVjdGl2ZSxcclxuICAgIEJhbm5lckNvbnRlbnRGaXREaXJlY3RpdmUsXHJcbiAgICBCb3JkZXJEaXJlY3RpdmUsXHJcbiAgICBCdXR0b25EaXJlY3RpdmVEaXJlY3RpdmUsXHJcbiAgICBDb2x1bW5EaXJlY3RpdmVEaXJlY3RpdmUsXHJcbiAgICBDb250YWluZXJGaXREaXJlY3RpdmUsXHJcbiAgICBzaW1wb0NvbmV0ZW5BbGlnbm1lbnREaXJlY3RpdmUsXHJcbiAgICBDb250ZW50Rml0RGlyZWN0aXZlLFxyXG4gICAgQ29ybmVyRGlyZWN0aXZlLFxyXG4gICAgU2ltcG9Gb290ZXJMYXlvdXREaXJlY3RpdmUsXHJcbiAgICBIb3ZlckRpcmVjdGl2ZSxcclxuICAgIEltYWdlRGlyZWN0aXZlRGlyZWN0aXZlLFxyXG4gICAgT3ZlcmxheURpcmVjdGl2ZSxcclxuICAgIFBvc2l0aW9uTGF5b3V0RGlyZWN0aXZlRGlyZWN0aXZlLFxyXG4gICAgVGV4dEJhY2tncm91bmREaXJlY3RpdmVEaXJlY3RpdmUsXHJcbiAgICBNYXRPcHRpb25Nb2R1bGUsXHJcbiAgICBNYXRTZWxlY3RNb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIE1hdEljb25Nb2R1bGVcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9yZWdpc3RyYXRpb24tZm9ybS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3JlZ2lzdHJhdGlvbi1mb3JtLmNvbXBvbmVudC5jc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZWdpc3RyYXRpb25Gb3JtQ29tcG9uZW50IGV4dGVuZHMgQmFzZVNlY3Rpb24gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveXtcclxuICBASW5wdXQoKSBkYXRhPzogUmVnaXN0cmF0aW9uRm9ybU1vZGVsO1xyXG4gIEBJbnB1dCgpIGluZGV4PyA6IG51bWJlcjtcclxuICBASW5wdXQoKSBlZGl0PyA6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgbmV4dENvbXBvbmVudENvbG9yPzogQmFja2dyb3VuZE1vZGVsO1xyXG4gIGNvbnRlbnQ6IFJlZ2lzdHJhdGlvbkZvcm1Db250ZW50TW9kZWwgfCB1bmRlZmluZWQ7XHJcbiAgc3R5bGVzOiBTdHlsZXNNb2RlbCB8IHVuZGVmaW5lZDtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZXN0U2VydmljZTogUmVzdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHNuYWNrQmFyOiBNYXRTbmFja0JhcixcclxuICAgIHByaXZhdGUgX2V2ZW50U2VydmljZSA6IEV2ZW50c1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJvdXRlcjogQWN0aXZhdGVkUm91dGUsXHJcbiAgICBwdWJsaWMgZHM6IERvbVNhbml0aXplcixcclxuICAgIHB1YmxpYyBpbWFnZVVwbG9hZFNlcnZpY2U6IEltYWdlVXBsYW9kU2VydmljZVxyXG4gICkge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcblxyXG4gIE9iamVjdCA9IE9iamVjdDtcclxuICBwYXlsb2FkOiBhbnkgPSB7XHJcbiAgICBcImJ1c2luZXNzRGV0YWlsc1wiOiB7XHJcbiAgICAgIFwiaWRcIjogbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJiSWRcIikgPz8gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJidXNpbmVzc0lkXCIpLFxyXG4gICAgICBcIm5hbWVcIjogbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJiTmFtZVwiKSA/PyBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImJ1c2luZXNzTmFtZVwiKVxyXG4gICAgfSxcclxuICAgIFwiZmllbGRJdGVtc1wiOiBbXSxcclxuICAgIFwiaW1nVXJsXCI6ICcnLFxyXG4gICAgJ2RvY3VtZW50cyc6IFtdLFxyXG4gICAgXCJwYXJlbnRBdXRob3JpemF0aW9uXCI6IGZhbHNlLFxyXG4gICAgXCJiYWNrdXBEb2NcIiA6ICcnLFxyXG4gICAgXCJwYXltZW50UGxhblR5cGVcIiA6ICdBTk5VQUxMWSdcclxuICB9XHJcblxyXG4gIHNlbGVjdGVkS2V5OiBhbnk7XHJcbiAgZmllbGREYXRhOiBhbnkgPSB7fVxyXG4gIGJ1c2luZXNzSWQ6IGFueTtcclxuICBzZWxlY3RlZEdyYWRlSWQ6IGFueTtcclxuICBzZWxlY3RlZEFjYWRlbWljWWVhcjogYW55O1xyXG4gIGRvY3VtZW50TGlzdDogYW55W10gPSBbXTtcclxuICBmb3JtU3RhdHVzOiBzdHJpbmcgPSAnJ1xyXG4gIHN0dWRlbnRMaXZlV2l0aDogYW55ID0gJydcclxuICBiYWNrdXBEb2NGaWxlPzogRmlsZTtcclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnJvdXRlci5xdWVyeVBhcmFtcy5zdWJzY3JpYmUoKHBhcmFtOiBhbnkpID0+IHtcclxuICAgICAgaWYocGFyYW1bJ2VJZCddKVxyXG4gICAgICAgIHRoaXMucGF5bG9hZFsnZW5xdWlyeUlkJ10gPSBwYXJhbVsnZUlkJ107XHJcblxyXG4gICAgICBpZihwYXJhbVsncklkJ10pXHJcbiAgICAgICAgdGhpcy5wYXlsb2FkWydyZWdpc3RyYXRpb25JZCddID0gcGFyYW1bJ3JJZCddO1xyXG5cclxuICAgICAgaWYocGFyYW1bJ2JJZCddKVxyXG4gICAgICAgIHRoaXMuYnVzaW5lc3NJZCA9IHBhcmFtWydiSWQnXTtcclxuXHJcbiAgICAgIGlmKHBhcmFtWyd0SWQnXSlcclxuICAgICAgICB0aGlzLnBheWxvYWRbJ3RlbXBsYXRlSWQnXSA9IHBhcmFtWyd0SWQnXTtcclxuXHJcbiAgICAgIHRoaXMucGF5bG9hZC5idXNpbmVzc0RldGFpbHMuaWQgPSB0aGlzLmJ1c2luZXNzSWQ7XHJcblxyXG4gICAgICBpZih0aGlzLnBheWxvYWRbJ3JlZ2lzdHJhdGlvbklkJ10gfHwgdGhpcy5wYXlsb2FkWydlbnF1aXJ5SWQnXSkge1xyXG4gICAgICAgIHRoaXMuZ2V0Rm9ybWRhdGEodGhpcy5wYXlsb2FkWydyZWdpc3RyYXRpb25JZCddIHx8IHRoaXMucGF5bG9hZFsnZW5xdWlyeUlkJ10pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZ2V0QWxsRmllbGRzKCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuZ2V0QUxMRG9jdW1lbnRMaXN0KCk7XHJcblxyXG4gICAgfSlcclxuXHJcbiAgICAvLyB0aGlzLmJ1c2luZXNzSWQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImJJZFwiKSA/PyBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImJ1c2luZXNzSWRcIik7XHJcblxyXG4gICAgdGhpcy5jb250ZW50ID0gdGhpcy5kYXRhPy5jb250ZW50O1xyXG4gICAgdGhpcy5zdHlsZXMgPSB0aGlzLmRhdGE/LnN0eWxlcztcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5mb3JtRmllbGRDaGFuZ2VTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBnZXRGb3JtZGF0YShhZG1pc3Npb25JZDogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBzZXJ2ZXJDYWxsID0gZm9ya0pvaW4oe1xyXG4gICAgICBhZG1pc3Npb25EYXRhOiB0aGlzLmRhdGE/LnNlY3Rpb25UeXBlID09PSAncmVnaXN0cmF0aW9uRm9ybScgPyB0aGlzLnJlc3RTZXJ2aWNlLmdldExlYWRCeUlkKGFkbWlzc2lvbklkKSA6IHRoaXMucmVzdFNlcnZpY2UuZ2V0UmVnaXN0cmF0aW9uTGlzdCh7aWQ6IGFkbWlzc2lvbklkLCBwYWdlTm86IDAsIHBhZ2VTaXplOiAxfSksXHJcbiAgICAgIGZpZWxkRGF0YTogdGhpcy5yZXN0U2VydmljZS5nZXRTZWxlY3RlZExpc3RGaWVsZHModGhpcy5idXNpbmVzc0lkLCB0aGlzLmRhdGE/LnNlY3Rpb25UeXBlID09PSAncmVnaXN0cmF0aW9uRm9ybScgPyAnUkVHSVNUUkFUSU9OJyA6ICdBRE1JU1NJT04nLCAgdGhpcy5kYXRhPy5zZWN0aW9uVHlwZSA9PT0gJ3JlZ2lzdHJhdGlvbkZvcm0nID8gJ1JFR0lTVFJBVElPTicgOiAnQURNSVNTSU9OJylcclxuICAgIH0pXHJcblxyXG4gICAgc2VydmVyQ2FsbC5zdWJzY3JpYmUoKHJlc3VsdDogYW55KSA9PiB7XHJcbiAgICAgIGxldCBhZG1pc3Npb25EYXRhID0gdGhpcy5kYXRhPy5zZWN0aW9uVHlwZSA9PT0gJ3JlZ2lzdHJhdGlvbkZvcm0nID8gcmVzdWx0LmFkbWlzc2lvbkRhdGEuZGF0YSA6IHJlc3VsdC5hZG1pc3Npb25EYXRhLmRhdGEuZGF0YVswXTtcclxuICAgICAgbGV0IGZpZWxkRGF0YSA9IHJlc3VsdC5maWVsZERhdGEuZGF0YTtcclxuXHJcbiAgICAgIHRoaXMuZm9ybVN0YXR1cyA9IGFkbWlzc2lvbkRhdGEuc3RhdHVzXHJcblxyXG4gICAgICAvLyB0aGlzLnBheWxvYWQgPSBhZG1pc3Npb25EYXRhO1xyXG4gICAgICB0aGlzLnBheWxvYWRbJ2RvY3VtZW50cyddID0gW107XHJcbiAgICAgIHRoaXMucGF5bG9hZC5idXNpbmVzc0RldGFpbHMuaWQgPSB0aGlzLmJ1c2luZXNzSWQ7XHJcbiAgICAgIHRoaXMucGF5bG9hZC5pbWdVcmwgPSBhZG1pc3Npb25EYXRhLmltZ1VybFxyXG5cclxuICAgICAgYWRtaXNzaW9uRGF0YVsnZmllbGRNYXAnXSA9IHt9O1xyXG4gICAgICBmb3IobGV0IGZpZWxkSXRlbSBvZiB0aGlzLmRhdGE/LnNlY3Rpb25UeXBlID09PSAncmVnaXN0cmF0aW9uRm9ybScgPyAoYWRtaXNzaW9uRGF0YT8uZmllbGREYXRhIHx8IFtdKSA6IChhZG1pc3Npb25EYXRhPy5maWVsZEl0ZW1zIHx8IFtdKSkge1xyXG4gICAgICAgIGlmKGZpZWxkSXRlbS5maWVsZE5hbWUgPT09ICdBY2FkZW1pYyBZZWFyJykge1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEFjYWRlbWljWWVhciA9IGZpZWxkSXRlbS5maWVsZFZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZihmaWVsZEl0ZW0udHlwZSAhPSBudWxsKSB7XHJcbiAgICAgICAgICBhZG1pc3Npb25EYXRhWydmaWVsZE1hcCddW2ZpZWxkSXRlbS50eXBlXSA9IGZpZWxkSXRlbS5maWVsZFZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgaWQgPSBmaWVsZEl0ZW0uZmllbGROYW1lICsgZmllbGRJdGVtLmZpZWxkR3JvdXBOYW1lO1xyXG4gICAgICAgIGFkbWlzc2lvbkRhdGFbJ2ZpZWxkTWFwJ11baWRdID0gZmllbGRJdGVtLmZpZWxkVmFsdWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuZmllbGREYXRhID0gdGhpcy5yZXN0U2VydmljZS5nZXRGaWVsZHNUb0Rpc3BsYXkoZmllbGREYXRhLmRhdGEpO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkS2V5ID0gdGhpcy5PYmplY3Qua2V5cyh0aGlzLmZpZWxkRGF0YSlbMF1cclxuXHJcbiAgICAgIGZvcihsZXQgc3RlcCBvZiB0aGlzLk9iamVjdC5rZXlzKHRoaXMuZmllbGREYXRhKSkge1xyXG4gICAgICAgIGZvcihsZXQgZ3JvdXAgb2YgT2JqZWN0LmtleXModGhpcy5maWVsZERhdGFbc3RlcF0pKSB7XHJcbiAgICAgICAgICBmb3IobGV0IGZpZWxkIG9mIHRoaXMuZmllbGREYXRhW3N0ZXBdW2dyb3VwXSkge1xyXG4gICAgICAgICAgICBpZihmaWVsZC50eXBlICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICBmaWVsZC5maWVsZFZhbHVlID0gYWRtaXNzaW9uRGF0YVsnZmllbGRNYXAnXVtmaWVsZC50eXBlXTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBmaWVsZC5maWVsZFZhbHVlID0gYWRtaXNzaW9uRGF0YVsnZmllbGRNYXAnXVtmaWVsZC5maWVsZExhYmVsICsgZ3JvdXBdO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZihmaWVsZD8udHlwZSA9PT0gJ0dSQURFJylcclxuICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUdyYWRlKGZpZWxkLnNvdXJjZURhdGFbZmllbGQuZGF0YVNvdXJjZVR5cGVdLCBmaWVsZC5maWVsZFZhbHVlKTtcclxuXHJcbiAgICAgICAgICAgIGlmKGZpZWxkLmRhdGFUeXBlID09PSAnQ0hFQ0tCT1gnKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5mb3JtYXRDaGVja0JveFZhbHVlKGZpZWxkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5nZXRGZWVTdHJ1Y3R1cmUoKTtcclxuICAgIH0pXHJcblxyXG4gIH1cclxuXHJcbiAgdXBkYXRlR3JhZGUoZ3JhZGVMaXN0IDphbnlbXSwgZ3JhZGVOYW1lOiBhbnkpIHtcclxuICAgIGZvcihsZXQgZ3JhZGUgb2YgZ3JhZGVMaXN0KSB7XHJcbiAgICAgIGlmKGdyYWRlLm5hbWUgPT09IGdyYWRlTmFtZSl7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEdyYWRlSWQgPSBncmFkZS5pZDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZm9ybWF0Q2hlY2tCb3hWYWx1ZShmaWVsZDogYW55KSB7XHJcbiAgICBpZihmaWVsZC52YWx1ZSkge1xyXG4gICAgICBmb3IobGV0IGZpZWxkVmFsdWUgb2YgZmllbGQudmFsdWUpIHtcclxuICAgICAgICBpZihmaWVsZC5maWVsZFZhbHVlPy5pbmNsdWRlcyhmaWVsZFZhbHVlLnZhbHVlKSkge1xyXG4gICAgICAgICAgZmllbGRWYWx1ZS5jaGVja2VkID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBmb3IobGV0IGZpZWxkVmFsdWUgb2YgZmllbGQuc291cmNlRGF0YT8uW2ZpZWxkLmRhdGFTb3VyY2VUeXBlXSB8fCBbXSkge1xyXG4gICAgICAgIGlmKGZpZWxkLmZpZWxkVmFsdWU/LmluY2x1ZGVzKGZpZWxkVmFsdWUubmFtZSkpIHtcclxuICAgICAgICAgIGZpZWxkVmFsdWUuY2hlY2tlZCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgZ2V0QWxsRmllbGRzKCkge1xyXG4gICAgdGhpcy5yZXN0U2VydmljZS5nZXRTZWxlY3RlZExpc3RGaWVsZHModGhpcy5idXNpbmVzc0lkLCB0aGlzLmRhdGE/LnNlY3Rpb25UeXBlID09PSAncmVnaXN0cmF0aW9uRm9ybScgPyAnUkVHSVNUUkFUSU9OJyA6ICdBRE1JU1NJT04nLCAgdGhpcy5kYXRhPy5zZWN0aW9uVHlwZSA9PT0gJ3JlZ2lzdHJhdGlvbkZvcm0nID8gJ1JFR0lTVFJBVElPTicgOiAnQURNSVNTSU9OJykuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLmZpZWxkRGF0YSA9IHRoaXMucmVzdFNlcnZpY2UuZ2V0RmllbGRzVG9EaXNwbGF5KHJlcy5kYXRhLmRhdGEpO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkS2V5ID0gdGhpcy5PYmplY3Qua2V5cyh0aGlzLmZpZWxkRGF0YSlbMF07XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0QUxMRG9jdW1lbnRMaXN0KCkge1xyXG4gICAgY29uc3QgcGF5bG9hZCA9IHtcclxuICAgICAgXCJidXNpbmVzc0lkXCI6IHRoaXMuYnVzaW5lc3NJZCxcclxuICAgICAgXCJzb3J0QnlcIjogXCJcIixcclxuICAgICAgXCJzb3J0T3JkZXJcIjogXCJcIixcclxuICAgICAgXCJzdGF0dXNcIjogdHJ1ZSxcclxuICAgICAgXCJpc0RlbGV0ZWRcIjogZmFsc2VcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnJlc3RTZXJ2aWNlLmdldEFsbERvY3VtZW50KHBheWxvYWQpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5kb2N1bWVudExpc3QgPSByZXMuZGF0YS5kYXRhO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGZvcm1GaWVsZENoYW5nZVN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcclxuICBmb3JtRmllbGRDaGFuZ2VkKCkge1xyXG4gICAgdGhpcy5mb3JtRmllbGRDaGFuZ2VTdWJzY3JpcHRpb24gPSB0aGlzLl9ldmVudFNlcnZpY2UuZm9ybUZpZWxkQ2hhbmdlZC5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMuZ2V0QWxsRmllbGRzKCk7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcblxyXG5cclxuICBhc3luYyBzdWJtaXRGb3JtKCkge1xyXG4gICAgdGhpcy5wYXlsb2FkLmZpZWxkSXRlbXMgPSB0aGlzLmNvbnZlcnRUb0xpc3RPZkZpZWxkcygpO1xyXG4gICAgaWYodGhpcy5wYXlsb2FkLmZpZWxkSXRlbXMubGVuZ3RoID09IDApXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICBpZih0aGlzLmZpbGVEYXRhKSB7XHJcbiAgICAgIGxldCBpbWFnZURhdGE6IGFueSA9IGF3YWl0IHRoaXMuaW1hZ2VVcGxvYWRTZXJ2aWNlLnVwbG9hZEZpbGVJbkF6dXJlKHRoaXMuZmlsZURhdGEpO1xyXG4gICAgICB0aGlzLnBheWxvYWQuaW1nVXJsID0gaW1hZ2VEYXRhLnVybFxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZGF0YT8uc2VjdGlvblR5cGUgPT09ICdyZWdpc3RyYXRpb25Gb3JtJyA/IHRoaXMuY3JlYXRlUmVnaXN0cmF0aW9uKCkgOiB0aGlzLmNyZWF0ZUFkbWlzc2lvbigpO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0cmF0aW9uU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xyXG4gIGNyZWF0ZVJlZ2lzdHJhdGlvbigpIHtcclxuICAgIHRoaXMucGF5bG9hZFsncmV0dXJuVXJsJ10gPSBgaHR0cHM6Ly9jbWlzLnRlanNvZnQuY29tL3ZlcmlmeS1wYXltZW50Lz91cmw9dHJ1ZSZ0eXBlPVJFR0lTVFJBVElPTiZiSWQ9JHt0aGlzLmJ1c2luZXNzSWR9YFxyXG4gICAgdGhpcy5yZWdpc3RyYXRpb25TdWJzY3JpcHRpb24gPSB0aGlzLnJlc3RTZXJ2aWNlLmNyZWF0ZVJlZ2lzdHJhdGlvbkZvclBheW1lbnQodGhpcy5wYXlsb2FkKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIC8vIHRoaXMuc25hY2tCYXIub3BlbignUmVnaXN0cmF0aW9uIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5JywgJ2Nsb3NlJywge2R1cmF0aW9uOiAyMDAwfSk7XHJcbiAgICAgIHRoaXMuX2V2ZW50U2VydmljZS5jYXNoRnJlZUV2ZW50LmVtaXQoe3Jlc3BvbnNlOiByZXMsIHBheW1lbnRUeXBlOidSRUdJU1RSQVRJT04nfSk7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgY3JlYXRlQWRtaXNzaW9uKCkge1xyXG4gICAgaWYodGhpcy5wYXlsb2FkLnBheW1lbnRQbGFuVHlwZSA9PT0gJ1RFUk0nICYmICh0aGlzLnBheWxvYWQ/LnN0dWRlbnRGZWVTdHJ1Y3R1cmU/LnRlcm1QYXltZW50TGlzdD8ubGVuZ3RoIHx8IDApID09IDApe1xyXG4gICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oJ1BsZWFzZSBzZWxlY3QgdGVybScpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5wYXlsb2FkLnN0dWRlbnRGZWVTdHJ1Y3R1cmVbJ3BheW1lbnRQbGFuVHlwZSddID0gdGhpcy5wYXlsb2FkLnBheW1lbnRQbGFuVHlwZTtcclxuICAgIHRoaXMucGF5bG9hZFsncmV0dXJuVXJsJ10gPSBgaHR0cHM6Ly9jbWlzLnRlanNvZnQuY29tL3ZlcmlmeS1wYXltZW50Lz91cmw9dHJ1ZSZ0eXBlPUFETUlTU0lPTiZiSWQ9JHt0aGlzLmJ1c2luZXNzSWR9YDtcclxuXHJcbiAgICBpZih0aGlzLmJhY2t1cERvY0ZpbGUpIHtcclxuICAgICAgbGV0IGltYWdlRGF0YTogYW55ID0gYXdhaXQgdGhpcy5pbWFnZVVwbG9hZFNlcnZpY2UudXBsb2FkRmlsZUluQXp1cmUodGhpcy5iYWNrdXBEb2NGaWxlKTtcclxuICAgICAgdGhpcy5wYXlsb2FkLmJhY2t1cERvYyA9IGltYWdlRGF0YS51cmxcclxuICAgIH1cclxuXHJcbiAgICBmb3IobGV0IGRvY3VtZW50IG9mIHRoaXMuZG9jdW1lbnRMaXN0KSB7XHJcbiAgICAgIGlmKGRvY3VtZW50LmZpbGUpIHtcclxuICAgICAgICBsZXQgaW1hZ2VEYXRhOiBhbnkgPSBhd2FpdCB0aGlzLmltYWdlVXBsb2FkU2VydmljZS51cGxvYWRGaWxlSW5BenVyZShkb2N1bWVudC5maWxlKTtcclxuXHJcbiAgICAgICAgdGhpcy5wYXlsb2FkWydkb2N1bWVudHMnXS5wdXNoKFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBuYW1lOiBkb2N1bWVudC5kaXNwbGF5VGV4dCxcclxuICAgICAgICAgICAgdXJsOiBpbWFnZURhdGEudXJsLFxyXG4gICAgICAgICAgICBkb2NUeXBlOiBkb2N1bWVudC5uYW1lLFxyXG4gICAgICAgICAgICBhdHRhY2htZW50VHlwZTogZG9jdW1lbnQudHlwZVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIClcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMucmVnaXN0cmF0aW9uU3Vic2NyaXB0aW9uID0gdGhpcy5yZXN0U2VydmljZS5jcmVhdGVQYXltZW50Rm9yQWRtaXNzaW9uKHRoaXMucGF5bG9hZCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAvLyB0aGlzLnNuYWNrQmFyLm9wZW4oJ0FkbWlzc2lvbiBjcmVhdGVkIHN1Y2Nlc3NmdWxseScsICdjbG9zZScsIHtkdXJhdGlvbjogMjAwMH0pO1xyXG4gICAgICB0aGlzLl9ldmVudFNlcnZpY2UuY2FzaEZyZWVFdmVudC5lbWl0KHtyZXNwb25zZTogcmVzLCBwYXltZW50VHlwZTonQURNSVNTSU9OJ30pO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGNvbnZlcnRUb0xpc3RPZkZpZWxkcygpIHtcclxuICAgIGxldCBmaWVsZExpc3Q6IGFueVtdID0gW107XHJcblxyXG4gICAgZm9yKGxldCBzdGVwIG9mIHRoaXMuT2JqZWN0LmtleXModGhpcy5maWVsZERhdGEpKSB7XHJcbiAgICAgIGZvcihsZXQgZ3JvdXAgb2YgT2JqZWN0LmtleXModGhpcy5maWVsZERhdGFbc3RlcF0pKSB7XHJcblxyXG4gICAgICAgIGlmKGdyb3VwID09ICdCYWNrdXAgQ29udGFjdCcgJiYgdGhpcy5zdHVkZW50TGl2ZVdpdGggIT0gJ3NpbmdsZSBwYXJlbnQnKVxyXG4gICAgICAgICAgY29udGludWU7XHJcblxyXG4gICAgICAgIGZvcihsZXQgZmllbGQgb2YgdGhpcy5maWVsZERhdGFbc3RlcF1bZ3JvdXBdKSB7XHJcbiAgICAgICAgICBpZihmaWVsZC5yZXF1aXJlZCAmJiAhZmllbGQuZmllbGRWYWx1ZSAmJiBmaWVsZC5kYXRhVHlwZSAhPSAnQ0hFQ0tCT1gnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc25hY2tCYXIub3BlbihgUGxlYXNlIGVudGVyICR7ZmllbGQuZmllbGRMYWJlbH1gLCAnY2xvc2UnLCB7ZHVyYXRpb246IDIwMDB9KTtcclxuICAgICAgICAgICAgcmV0dXJuIFtdO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGxldCBjaGVja0JveFZhbHVlOiBhbnlbXSA9IFtdO1xyXG4gICAgICAgICAgaWYoZmllbGQuZGF0YVR5cGUgPT09ICdDSEVDS0JPWCcpIHtcclxuICAgICAgICAgICAgY2hlY2tCb3hWYWx1ZSA9IHRoaXMuZ2V0Q2hlY2tCb3hWYWx1ZShmaWVsZCk7XHJcblxyXG4gICAgICAgICAgICBpZihjaGVja0JveFZhbHVlLmxlbmd0aCAgPT0gMCAmJiBmaWVsZC5yZXF1aXJlZCl7XHJcbiAgICAgICAgICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKGBQbGVhc2UgZW50ZXIgJHtmaWVsZC5maWVsZExhYmVsfWAsICdjbG9zZScsIHtkdXJhdGlvbjogMjAwMH0pO1xyXG4gICAgICAgICAgICAgIHJldHVybiBbXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGZpZWxkTGlzdC5wdXNoKHtcclxuICAgICAgICAgICAgZmllbGRJZDogZmllbGQuZmllbGRJZCxcclxuICAgICAgICAgICAgZmllbGROYW1lOiBmaWVsZC5maWVsZExhYmVsLFxyXG4gICAgICAgICAgICBmaWVsZFZhbHVlOiBmaWVsZC5kYXRhVHlwZSAhPT0gJ0NIRUNLQk9YJyA/IGZpZWxkLmZpZWxkVmFsdWUgOiBjaGVja0JveFZhbHVlLFxyXG4gICAgICAgICAgICBmaWVsZEdyb3VwSWQ6IGZpZWxkLmZpZWxkR3JvdXBJZCxcclxuICAgICAgICAgICAgZmllbGRHcm91cE5hbWU6IGdyb3VwLFxyXG4gICAgICAgICAgICBmaWVsZFN0ZXBJZDogZmllbGQuZmllbGRTdGVwSWQsXHJcbiAgICAgICAgICAgIGZpZWxkU3RlcE5hbWU6IHN0ZXAsXHJcbiAgICAgICAgICAgIHR5cGU6IGZpZWxkLnR5cGVcclxuICAgICAgICAgIH0pXHJcblxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmaWVsZExpc3Q7XHJcbiAgfVxyXG5cclxuICBnZXRDaGVja0JveFZhbHVlKGZpZWxkOiBhbnkpIHtcclxuICAgIGxldCByZXNwb25zZTogYW55W10gPSBbXTtcclxuXHJcbiAgICBpZihmaWVsZC52YWx1ZSkge1xyXG4gICAgICBmb3IobGV0IGZpZWxkVmFsdWUgb2YgZmllbGQudmFsdWUpIHtcclxuICAgICAgICBpZihmaWVsZFZhbHVlLmNoZWNrZWQpIHtcclxuICAgICAgICAgIHJlc3BvbnNlLnB1c2goZmllbGRWYWx1ZS52YWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBmb3IobGV0IGZpZWxkVmFsdWUgb2YgZmllbGQuc291cmNlRGF0YT8uW2ZpZWxkLmRhdGFTb3VyY2VUeXBlXSB8fCBbXSkge1xyXG4gICAgICAgIGlmKGZpZWxkVmFsdWUuY2hlY2tlZCkge1xyXG4gICAgICAgICAgcmVzcG9uc2UucHVzaChmaWVsZFZhbHVlLm5hbWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiByZXNwb25zZTtcclxuICB9XHJcblxyXG4gIGZpbGVEYXRhPzogRmlsZTtcclxuICB1cGRhdGVBZG1pc3Npb25JbWFnZShldjogYW55KSB7XHJcbiAgICB0aGlzLmZpbGVEYXRhID0gZXYuc3JjRWxlbWVudC5maWxlc1swXTtcclxuXHJcbiAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xyXG5cclxuICAgIHJlYWRlci5vbmxvYWQgPSAocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLnBheWxvYWQuaW1nVXJsID0gcmVzcG9uc2UudGFyZ2V0LnJlc3VsdDtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmZpbGVEYXRhID8gcmVhZGVyLnJlYWRBc0RhdGFVUkwodGhpcy5maWxlRGF0YSkgOiBudWxsO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlSW1nKCkge1xyXG4gICAgdGhpcy5wYXlsb2FkLmltZ1VybCA9ICcnO1xyXG4gICAgdGhpcy5maWxlRGF0YSA9IHVuZGVmaW5lZDtcclxuICB9ICByZWRpcmVjdFRvUGF5bWVudCgpIHtcclxuICAgIGlmKCEodGhpcy5zZWxlY3RlZEFjYWRlbWljWWVhciAmJiAgdGhpcy5zZWxlY3RlZEdyYWRlSWQpKXtcclxuICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKCdTZWxlY3RlZCBHcmFkZSBhbmQgQWNhZGVtaWMgWWVhciBmaXJzdCcsJ2Nsb3NlJywge2R1cmF0aW9uOiAyMDAwfSlcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZWxlY3RlZEtleSA9ICdQYXltZW50J1xyXG4gIH1cclxuXHJcbiAgY29udGludWVBZG1pc3Npb24oKSB7XHJcbiAgICBsZXQgc3RlcHMgPSBPYmplY3Qua2V5cyh0aGlzLmZpZWxkRGF0YSk7XHJcbiAgICBsZXQgaW5kZXggPSBzdGVwcy5pbmRleE9mKHRoaXMuc2VsZWN0ZWRLZXkpO1xyXG5cclxuICAgIGlmKHRoaXMuZGF0YT8uc2VjdGlvblR5cGUgPT09ICdhZG1pc3Npb25Gb3JtJyAmJiB0aGlzLnNlbGVjdGVkS2V5ID09PSAnRG9jdW1lbnQnICYmICEodGhpcy5zZWxlY3RlZEFjYWRlbWljWWVhciAmJiAgdGhpcy5zZWxlY3RlZEdyYWRlSWQpKSB7XHJcbiAgICAgIHRoaXMuc25hY2tCYXIub3BlbignU2VsZWN0ZWQgR3JhZGUgYW5kIEFjYWRlbWljIFllYXIgZmlyc3QnLCAnY2xvc2UnLCB7ZHVyYXRpb246IDIwMDB9KVxyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYodGhpcy5kYXRhPy5zZWN0aW9uVHlwZSA9PT0gJ2FkbWlzc2lvbkZvcm0nKVxyXG4gICAgICB0aGlzLnNlbGVjdGVkS2V5ID0gaW5kZXggPT09IHN0ZXBzLmxlbmd0aCAtIDEgPyAnRG9jdW1lbnQnIDogdGhpcy5zZWxlY3RlZEtleSA9PT0gJ0RvY3VtZW50JyA/ICdQYXltZW50JyA6IHN0ZXBzW2luZGV4ICsgMV07XHJcbiAgICBlbHNlXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRLZXkgPSBzdGVwc1tpbmRleCArIDFdXHJcbiAgfVxyXG5cclxuICBzdWJzY3JpcHRpb25zRGF0YTogYW55W10gPSBbXVxyXG4gIHRlcm1QYXltZW50TGlzdDogYW55W10gPSBbXTtcclxuXHJcbiAgZ2V0RmVlU3RydWN0dXJlKCkge1xyXG4gICAgaWYoIXRoaXMuc2VsZWN0ZWRBY2FkZW1pY1llYXIgfHwgIXRoaXMuc2VsZWN0ZWRHcmFkZUlkKVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgbGV0IHllYXIgPSB0aGlzLnNlbGVjdGVkQWNhZGVtaWNZZWFyLnNwbGl0KFwiLVwiKTtcclxuICAgIGxldCBwYXlsb2FkID0ge1xyXG4gICAgICBcImJ1c2luZXNzSWRcIjogdGhpcy5idXNpbmVzc0lkLFxyXG4gICAgICBcInN0YXJ0WWVhclwiOiBOdW1iZXIoeWVhclswXSksXHJcbiAgICAgIFwiZW5kWWVhclwiOiBOdW1iZXIoeWVhclsxXSksXHJcbiAgICAgIFwicGFnZU5vXCI6IDAsXHJcbiAgICAgIFwic2l6ZVwiOiAxLFxyXG4gICAgICBcImdyYWRlSWRzXCI6IFt0aGlzLnNlbGVjdGVkR3JhZGVJZF0sXHJcbiAgICAgIFwic2VhcmNoVGV4dFwiOiBcIlwiXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5yZXN0U2VydmljZS5nZXRGZWVTdHJ1Y3R1cmUocGF5bG9hZCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLnBheWxvYWQuc3R1ZGVudEZlZVN0cnVjdHVyZSA9IHJlcy5kYXRhLmRhdGFbMF07XHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9uc0RhdGEgPSAgSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLnBheWxvYWQuc3R1ZGVudEZlZVN0cnVjdHVyZS5zdWJzY3JpcHRpb25QbGFucykpO1xyXG4gICAgICB0aGlzLnBheWxvYWQuc3R1ZGVudEZlZVN0cnVjdHVyZS5zdWJzY3JpcHRpb25QbGFucyA9IFtdO1xyXG4gICAgICB0aGlzLnRlcm1QYXltZW50TGlzdCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5wYXlsb2FkLnN0dWRlbnRGZWVTdHJ1Y3R1cmU/LnRlcm1QYXltZW50TGlzdCB8fCAnJykpO1xyXG4gICAgICB0aGlzLnBheWxvYWQuc3R1ZGVudEZlZVN0cnVjdHVyZS50ZXJtUGF5bWVudExpc3QgPSBbXTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBpbnB1dEZpZWxkQ2hhbmdlKGl0ZW06IGFueSwgZmllbGQ6IGFueSkge1xyXG4gICAgaWYoZmllbGQuZmllbGRMYWJlbCA9PT0gJ0FjYWRlbWljIFllYXInKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRBY2FkZW1pY1llYXIgPSBpdGVtLm5hbWU7XHJcbiAgICAgIHRoaXMuZ2V0RmVlU3RydWN0dXJlKCk7XHJcbiAgICB9XHJcbiAgICBpZihmaWVsZC5maWVsZExhYmVsID09PSAnR3JhZGUnKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRHcmFkZUlkID0gaXRlbS5pZDtcclxuICAgICAgdGhpcy5nZXRGZWVTdHJ1Y3R1cmUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG1hc3RlckRyb3Bkb3duVmFsdWVDaGFuZ2UoaXRlbTogYW55LCBmaWVsZDogYW55KSB7XHJcbiAgICBpZihmaWVsZC5maWVsZExhYmVsID09PSAnU3R1ZGVudCBsaXZlIHdpdGgnKSB7XHJcbiAgICAgIHRoaXMuc3R1ZGVudExpdmVXaXRoID0gaXRlbS52YWx1ZVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdXBsb2FkQmFja1VwRG9jdW1lbnQoZXY6IGFueSkge1xyXG4gICAgdGhpcy5iYWNrdXBEb2NGaWxlID0gZXYuc3JjRWxlbWVudC5maWxlc1swXTtcclxuICB9XHJcblxyXG5cclxuICBhcnJhbmdlU3Vic2NyaXB0aW9uRm9yQWRtaXNzaW9uKHN1YnNjcmlwdGlvbkxpc3Q6IGFueVtdKSB7XHJcbiAgICBsZXQgcmVzcG9uc2U6IGFueSA9IHt9O1xyXG5cclxuICAgIGZvcihsZXQgc3Vic2NyaXB0aW9uIG9mIHN1YnNjcmlwdGlvbkxpc3QpIHtcclxuICAgICAgaWYoIXJlc3BvbnNlW3N1YnNjcmlwdGlvbi5zdWJzY3JpcHRpb25UeXBlXSkge1xyXG4gICAgICAgIHJlc3BvbnNlW3N1YnNjcmlwdGlvbi5zdWJzY3JpcHRpb25UeXBlXSA9IFtdO1xyXG4gICAgICB9XHJcbiAgICAgIHJlc3BvbnNlW3N1YnNjcmlwdGlvbi5zdWJzY3JpcHRpb25UeXBlXS5wdXNoKHN1YnNjcmlwdGlvbik7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gIH1cclxuXHJcbiAgYXJyYW5nZUZlZUNvbmZpZyhmZWVDb25maWdMaXN0OiBhbnlbXSkge1xyXG4gICAgbGV0IHJlc3BvbnNlOiBhbnkgPSB7fTtcclxuXHJcbiAgICBmb3IobGV0IGNvbmZpZyBvZiBmZWVDb25maWdMaXN0KSB7XHJcbiAgICAgIGlmKCFyZXNwb25zZVtjb25maWcuZmVlVHlwZV0pXHJcbiAgICAgICAgcmVzcG9uc2VbY29uZmlnLmZlZVR5cGVdID0gW107XHJcblxyXG4gICAgICByZXNwb25zZVtjb25maWcuZmVlVHlwZV0ucHVzaChjb25maWcpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiByZXNwb25zZTtcclxuICB9XHJcbn1cclxuIiwiPHNlY3Rpb24gc2ltcG9Ib3ZlciAoaG92ZXJpbmcpPVwic2hvd0VkaXRUYWJzKCRldmVudClcIiBjbGFzcz1cInRvdGFsLWNvbnRhaW5lclwiPlxyXG4gIDxkaXYgW2lkXT1cImRhdGE/LmlkXCIgW3NpbXBvQmFja2dyb3VuZF09XCJzdHlsZXM/LmJhY2tncm91bmRcIj5cclxuICAgIDxkaXYgI21haW5Db250YWluZXIgY2xhc3M9XCJyb3dGbGV4XCIgW2lkXT1cImRhdGE/LmlkXCIgW3NpbXBvT3ZlcmxheV09XCJzdHlsZXM/LmJhY2tncm91bmRcIlxyXG4gICAgICBbc2ltcG9Cb3JkZXJdPVwic3R5bGVzPy5ib3JkZXJcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1haW4tc2VjdGlvblwiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwieydqdXN0aWZ5LWNvbnRlbnQtbWQtc3RhcnQnOiBzdHlsZXM/LmxheW91dD8uYWxpZ24gPT09ICdsZWZ0JyAsICdqdXN0aWZ5LWNvbnRlbnQtbWQtZW5kJzogc3R5bGVzPy5sYXlvdXQ/LmFsaWduID09PSAncmlnaHQnfVwiXHJcbiAgICAgICAgW2lkXT1cImRhdGE/LmlkXCIgW3NpbXBvTGF5b3V0XT1cInN0eWxlcz8ubGF5b3V0XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImJvZHktc2VjdGlvblwiPlxyXG4gICAgICAgICAgPGRpdiBbc2ltcG9BbmltYXRpb25dPVwic3R5bGVzPy5hbmltYXRpb25cIiBbaWRdPVwiZGF0YT8uaWRcIj5cclxuICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICA8c2ltcG8tdGV4dC1lbGVtZW50IFt0ZXh0RGF0YV09XCJjb250ZW50Py5pbnB1dFRleHQ/LlswXT8udmFsdWVcIiBbdGV4dExhYmVsXT1cImNvbnRlbnQ/LmlucHV0VGV4dD8uWzBdPy5sYWJlbFwiPjwvc2ltcG8tdGV4dC1lbGVtZW50PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMiBkLW1kLWZsZXggbXQtMTVcIiAqbmdJZj1cImRhdGE/LmFjdGlvbj8uZGlzcGxheVwiIFtuZ0NsYXNzXT1cIltcclxuICAgICAgICAgICAgICBzdHlsZXM/LmxheW91dD8uYWxpZ24gPT09ICdsZWZ0JyA/ICdqdXN0aWZ5LWNvbnRlbnQtbWQtc3RhcnQnIDogJycsXHJcbiAgICAgICAgICAgICAgc3R5bGVzPy5sYXlvdXQ/LmFsaWduID09PSAnY2VudGVyJyA/ICdqdXN0aWZ5LWNvbnRlbnQtbWQtY2VudGVyJyA6ICcnLFxyXG4gICAgICAgICAgICAgIHN0eWxlcz8ubGF5b3V0Py5hbGlnbiA9PT0gJ3JpZ2h0JyA/ICdqdXN0aWZ5LWNvbnRlbnQtbWQtZW5kJyA6ICcnXHJcbiAgICAgICAgICAgIF1cIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgPC9kaXY+XHJcblxyXG4gIDxzZWN0aW9uIGNsYXNzPVwibWFpbi1zZWN0aW9uXCI+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiZm9ybVN0YXR1cyAhPSAnUkVHSVNURVJFRCcgJiYgZm9ybVN0YXR1cyAhPSAnQURNSVRURUQnXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJzdWJUYWJzX3NlY3Rpb25cIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibGlzdF90YWJzIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGtleSBvZiBPYmplY3Qua2V5cyhmaWVsZERhdGEpXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaW5nbGVfdGFiIGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInNlbGVjdGVkS2V5ID0ga2V5XCJcclxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJzZWxlY3RlZEtleSA9PT0ga2V5ID8gJ3NpbmdsZV90YWJfYWN0aXZlJyA6ICdzaW5nbGVfdGFiJ1wiPlxyXG4gICAgICAgICAgICAgIHt7a2V5IHwgdGl0bGVjYXNlfX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaW5nbGVfdGFiIGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInNlbGVjdGVkS2V5ID0gJ0RvY3VtZW50J1wiICpuZ0lmPVwiZGF0YT8uc2VjdGlvblR5cGUgPT09ICdhZG1pc3Npb25Gb3JtJ1wiXHJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNlbGVjdGVkS2V5ID09PSAnRG9jdW1lbnQnID8gJ3NpbmdsZV90YWJfYWN0aXZlJyA6ICdzaW5nbGVfdGFiJ1wiPlxyXG4gICAgICAgICAgICBEb2N1bWVudFxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2luZ2xlX3RhYiBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJyZWRpcmVjdFRvUGF5bWVudCgpXCJcclxuICAgICAgICAgICAgKm5nSWY9XCJkYXRhPy5zZWN0aW9uVHlwZSA9PT0gJ2FkbWlzc2lvbkZvcm0nXCJcclxuICAgICAgICAgICAgW25nQ2xhc3NdPVwic2VsZWN0ZWRLZXkgPT09ICdQYXltZW50JyA/ICdzaW5nbGVfdGFiX2FjdGl2ZScgOiAnc2luZ2xlX3RhYidcIj5cclxuICAgICAgICAgICAgUGF5bWVudFxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1haW4tY29udGVudFwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGdyb3VwIG9mIGZpZWxkRGF0YVtzZWxlY3RlZEtleV0gPyBPYmplY3Qua2V5cyhmaWVsZERhdGFbc2VsZWN0ZWRLZXldKSA6IFtdO2xldCBncm91cEluZGV4ID0gaW5kZXhcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYm9keVwiICpuZ0lmPVwiZ3JvdXAgIT09ICdCYWNrdXAgQ29udGFjdCdcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsaXN0X3RhYnMgYmFja1RvTGVhZHMgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICB7e2dyb3VwfX1cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJncm91cEluZGV4ID09IDAgJiYgT2JqZWN0LmtleXMoZmllbGREYXRhKVswXSA9PT0gc2VsZWN0ZWRLZXlcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImltYWdlLWJveFwiICpuZ0lmPVwiIXBheWxvYWQuaW1nVXJsXCI+XHJcbiAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImR1bW15LWltYWdlXCIgc3JjPVwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9tYXN0ZXIvYWRkLWltYWdlLnN2Z1wiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZmlsZUlucHV0LmNsaWNrKClcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1hZ2VfYm94XCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZjX2Jyb3dzZV9idG5cIiBpZD1cImRpc3BsYXlfYnJvd3NlX2J0blwiIChjbGljayk9XCJmaWxlSW5wdXQuY2xpY2soKVwiPkNsaWNrIHRvXHJcbiAgICAgICAgICAgICAgICAgIHVwbG9hZDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxpbnB1dCBzdHlsZT1cImRpc3BsYXk6IG5vbmU7XCIgaWQ9XCJ2ZW5kb3JJbWFnZVwiIHR5cGU9XCJmaWxlXCIgbmFtZT1cIm15ZmlsZVwiXHJcbiAgICAgICAgICAgICAgYWNjZXB0PVwiaW1hZ2UveC1wbmcsaW1hZ2UvanBlZyxpbWFnZS9qcGdcIiAoY2hhbmdlKT1cInVwZGF0ZUFkbWlzc2lvbkltYWdlKCRldmVudClcIiBjbGFzcz1cInBjLWJ0blwiXHJcbiAgICAgICAgICAgICAgaWQ9XCJicm93c2VfY29udGFjdF9pbWFnZVwiICNmaWxlSW5wdXQgLz5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJwYXlsb2FkLmltZ1VybFwiIGNsYXNzPVwiYWRkZWRJbWdcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidXBsb2FkZWRJbWdcIj5cclxuICAgICAgICAgICAgICAgIDxpbWcgIGFsdD1cIlwiIFtzcmNdPVwiZHMuYnlwYXNzU2VjdXJpdHlUcnVzdFVybChwYXlsb2FkLmltZ1VybClcIj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1hZ2UtYnV0dG9uc1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvblwiIChjbGljayk9XCJmaWxlSW5wdXQuY2xpY2soKVwiPlxyXG4gICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvYmxvZ3MvY2hhbmdlX2ltYWdlLnN2Z1wiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICBDaGFuZ2UgSW1hZ2VcclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbiBkZWxldGUtY2hhbmdlXCIgKGNsaWNrKT1cImRlbGV0ZUltZygpXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGVsZXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCIuLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvYmxvZ3MvZGVsZXRlX2ltYWdlLnN2Z1wiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXY+RGVsZXRlPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG10LTFcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IGNvbC0xMiBtdC0xXCIgKm5nRm9yPVwibGV0IGluZm8gb2YgZmllbGREYXRhW3NlbGVjdGVkS2V5XVtncm91cF1cIj5cclxuICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiXCIgY2xhc3M9XCJsYWJlbC10ZXh0XCI+e3tpbmZvLmZpZWxkTGFiZWx9fTwvbGFiZWw+Jm5ic3A7IDxzcGFuIHN0eWxlPVwiY29sb3I6IHJlZDtcIiAqbmdJZj1cImluZm8ucmVxdWlyZWRcIj4qPC9zcGFuPiA8YnI+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImlucHV0RGF0YTsgY29udGV4dDoge2RhdGE6IGluZm99XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJib2R5XCIgKm5nSWY9XCJmaWVsZERhdGFbc2VsZWN0ZWRLZXldLmhhc093blByb3BlcnR5KCdCYWNrdXAgQ29udGFjdCcpICYmIHN0dWRlbnRMaXZlV2l0aCA9PT0gJ3NpbmdsZSBwYXJlbnQnICYmIGdyb3VwSW5kZXggPT0gMCAmJiBPYmplY3Qua2V5cyhmaWVsZERhdGEpWzBdID09PSBzZWxlY3RlZEtleVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImxpc3RfdGFicyBiYWNrVG9MZWFkcyBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgIEJhY2t1cCBDb250YWN0IChPcHRpb25hbClcclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbXQtMVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwibXRiLTE1IGNoZWNrYm94LWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgbmFtZT1cIlwiIGlkPVwiXCIgWyhuZ01vZGVsKV09XCJwYXlsb2FkLnBhcmVudEF1dGhvcml6YXRpb25cIj5cclxuICAgICAgICAgICAgICAgICAgSSBhdXRob3JpemUgdGhlIHNjaG9vbCB0byByZWxlYXNlIHRoZSBjaGlsZCBvbmx5IHRvIHRoZSBwYXJlbnQgbGlzdGVkIGFib3ZlXHJcbiAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNCBjb2wtMTIgbXQtMVwiICpuZ0Zvcj1cImxldCBpbmZvIG9mIGZpZWxkRGF0YVtzZWxlY3RlZEtleV1bJ0JhY2t1cCBDb250YWN0J11cIj5cclxuICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiXCIgY2xhc3M9XCJsYWJlbC10ZXh0XCI+e3tpbmZvLmZpZWxkTGFiZWx9fTwvbGFiZWw+Jm5ic3A7IDxzcGFuIHN0eWxlPVwiY29sb3I6IHJlZDtcIlxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJpbmZvLnJlcXVpcmVkXCI+Kjwvc3Bhbj4gPGJyPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpbnB1dERhdGE7IGNvbnRleHQ6IHtkYXRhOiBpbmZvfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IGNvbC0xMiBtdC0xXCI+XHJcbiAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cIlwiIGNsYXNzPVwibGFiZWwtdGV4dFwiPlVwbG9hZCBTdXBwb3J0aW5nIERvY3VtZW50IChPcHRpb25hbCk8L2xhYmVsPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC10ZXh0IHVwbG9hZC1maWxlXCIgKGNsaWNrKT1cImJhY2tVcERvY0lucHV0LmNsaWNrKClcIj5cclxuICAgICAgICAgICAgICAgIDxwPnt7YmFja3VwRG9jRmlsZSA/ICdGaWxlIFVwbG9hZGVkJyA6ICdVcGxvYWQgRmlsZSd9fTwvcD5cclxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5jbG91ZF91cGxvYWQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxpbnB1dCBpZD1cInZlbmRvckltYWdlXCIgdHlwZT1cImZpbGVcIiBuYW1lPVwibXlmaWxlXCIgaGlkZGVuXHJcbiAgICAgICAgICAgICAgICBhY2NlcHQ9XCIuZG9jLC5kb2N4LGFwcGxpY2F0aW9uL21zd29yZCxhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5kb2N1bWVudCxpbWFnZS94LXBuZyxpbWFnZS9qcGVnLGltYWdlL2pwZywucGRmLCB2aWRlby9tcDQsdmlkZW8veC1tYXRyb3NrYSx2aWRlby94LW1zdmlkZW8sdmlkZW8vcXVpY2t0aW1lXCJcclxuICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwidXBsb2FkQmFja1VwRG9jdW1lbnQoJGV2ZW50KVwiIGNsYXNzPVwicGMtYnRuXCJcclxuICAgICAgICAgICAgICAgIGlkPVwiYnJvd3NlX2NvbnRhY3RfaW1hZ2VcIiAjYmFja1VwRG9jSW5wdXQgLz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInBheW1lbnQtZGV0YWlsc1wiICpuZ0lmPVwic2VsZWN0ZWRLZXkgPT09ICdEb2N1bWVudCcgJiYgZGF0YT8uc2VjdGlvblR5cGUgPT09ICdhZG1pc3Npb25Gb3JtJ1wiPlxyXG4gICAgICAgICAgPHNpbXBvLWRvY3VtZW50IFtkb2N1bWVudExpc3RdPVwiZG9jdW1lbnRMaXN0XCI+PC9zaW1wby1kb2N1bWVudD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicGF5bWVudC1kZXRhaWxzXCIgKm5nSWY9XCJzZWxlY3RlZEtleSA9PT0gJ1BheW1lbnQnICYmIGRhdGE/LnNlY3Rpb25UeXBlID09PSAnYWRtaXNzaW9uRm9ybSdcIj5cclxuICAgICAgICAgIDxzaW1wby1wYXltZW50LWRldGFpbHMgW2FkbWlzc2lvbkRhdGFdPVwicGF5bG9hZFwiXHJcbiAgICAgICAgICAgIFtzdWJzY3JpcHRpb25zRGF0YV09XCJzdWJzY3JpcHRpb25zRGF0YVwiIFt0ZXJtUGF5bWVudExpc3RdPVwidGVybVBheW1lbnRMaXN0XCI+PC9zaW1wby1wYXltZW50LWRldGFpbHM+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbi1wYXJlbnRcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBidXR0b24gb2YgZGF0YT8uYWN0aW9uPy5idXR0b25zXCI+XHJcbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uXCIgKGNsaWNrKT1cInN1Ym1pdEZvcm0oKVwiIHNpbXBvQnV0dG9uRGlyZWN0aXZlIFtpZF09XCJkYXRhPy5pZCtidXR0b24uaWRcIlxyXG4gICAgICAgICAgICBbYnV0dG9uU3R5bGVdPVwiYnV0dG9uLnN0eWxlc1wiICpuZ0lmPVwiKGRhdGE/LnNlY3Rpb25UeXBlID09PSAnYWRtaXNzaW9uRm9ybScgJiYgc2VsZWN0ZWRLZXkgPT0gJ1BheW1lbnQnKSB8fFxyXG4gICAgICAgICAgICAoZGF0YT8uc2VjdGlvblR5cGUgPT09ICdyZWdpc3RyYXRpb25Gb3JtJyAmJlxyXG4gICAgICAgICAgICAgIChPYmplY3Qua2V5cyhmaWVsZERhdGEpW09iamVjdC5rZXlzKGZpZWxkRGF0YSkubGVuZ3RoIC0gMV0gPT0gc2VsZWN0ZWRLZXkpKVwiXHJcbiAgICAgICAgICAgIFtjb2xvcl09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCI+e3tidXR0b24/LmNvbnRlbnQ/LmxhYmVsfX08L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uXCIgKGNsaWNrKT1cImNvbnRpbnVlQWRtaXNzaW9uKClcIiBzaW1wb0J1dHRvbkRpcmVjdGl2ZSBbaWRdPVwiZGF0YT8uaWQrYnV0dG9uLmlkXCJcclxuICAgICAgICAgICAgW2J1dHRvblN0eWxlXT1cImJ1dHRvbi5zdHlsZXNcIiAqbmdJZj1cInNlbGVjdGVkS2V5ICE9ICdQYXltZW50JyAmJiBkYXRhPy5zZWN0aW9uVHlwZSA9PT0gJ2FkbWlzc2lvbkZvcm0nXCJcclxuICAgICAgICAgICAgW2NvbG9yXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIj5Db250aW51ZTwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b25cIiAoY2xpY2spPVwiY29udGludWVBZG1pc3Npb24oKVwiIHNpbXBvQnV0dG9uRGlyZWN0aXZlIFtpZF09XCJkYXRhPy5pZCtidXR0b24uaWRcIlxyXG4gICAgICAgICAgICBbYnV0dG9uU3R5bGVdPVwiYnV0dG9uLnN0eWxlc1wiXHJcbiAgICAgICAgICAgICpuZ0lmPVwiZGF0YT8uc2VjdGlvblR5cGUgPT09ICdyZWdpc3RyYXRpb25Gb3JtJyAmJiAoT2JqZWN0LmtleXMoZmllbGREYXRhKVtPYmplY3Qua2V5cyhmaWVsZERhdGEpLmxlbmd0aCAtIDFdICE9IHNlbGVjdGVkS2V5KVwiXHJcbiAgICAgICAgICAgIFtjb2xvcl09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCI+Q29udGludWU8L2J1dHRvbj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiZW1wdHlUZXh0XCIgKm5nSWY9XCJmb3JtU3RhdHVzID09ICdSRUdJU1RFUkVEJyB8fCBmb3JtU3RhdHVzID09ICdBRE1JVFRFRCdcIj5cclxuICAgICAgPGltZyBbc3JjXT1cImNvbnRlbnQ/LmltYWdlPy51cmxcIiBhbHQ9XCJcIiAqbmdJZj1cImNvbnRlbnQ/LmltYWdlPy5zaG93SW1hZ2VcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImhlYWRpbmctbGFyZ2VcIiBbaW5uZXJIdG1sXT1cImNvbnRlbnQ/LmlucHV0VGV4dD8uWzFdPy52YWx1ZVwiPjwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9zZWN0aW9uPlxyXG5cclxuICA8bmctdGVtcGxhdGUgI2lucHV0RGF0YSBsZXQtZmllbGQ9XCJkYXRhXCI+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiZmllbGQuZGF0YVR5cGUgPT0gJ0lNQUdFJ1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiaW1hZ2UtYm94XCI+XHJcbiAgICAgICAgPGltZyBjbGFzcz1cImR1bW15LWltYWdlXCIgc3JjPVwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9tYXN0ZXIvYWRkLWltYWdlLnN2Z1wiXHJcbiAgICAgICAgICAoY2xpY2spPVwiZmlsZUlucHV0LmNsaWNrKClcIiBhbHQ9XCJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJmY19icm93c2VfYnRuXCIgaWQ9XCJkaXNwbGF5X2Jyb3dzZV9idG5cIiAoY2xpY2spPVwiZmlsZUlucHV0LmNsaWNrKClcIj5DbGljayB0b1xyXG4gICAgICAgICAgICB1cGxvYWQ8L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8aW5wdXQgc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiIGlkPVwidmVuZG9ySW1hZ2VcIiB0eXBlPVwiZmlsZVwiIG5hbWU9XCJteWZpbGVcIiBhY2NlcHQ9XCJpbWFnZS94LXBuZyxpbWFnZS9qcGVnLGltYWdlL2pwZ1wiXHJcbiAgICAgICAgKGNoYW5nZSk9XCJ1cGRhdGVBZG1pc3Npb25JbWFnZSgkZXZlbnQpXCIgY2xhc3M9XCJwYy1idG5cIiBpZD1cImJyb3dzZV9jb250YWN0X2ltYWdlXCIgI2ZpbGVJbnB1dCAvPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiZmllbGQuZGF0YVR5cGUgPT09ICdURVhUJ1wiPlxyXG4gICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImlucHV0LXRleHRcIiBwbGFjZWhvbGRlcj1cImVudGVyIHZhbHVlXCIgWyhuZ01vZGVsKV09XCJmaWVsZC5maWVsZFZhbHVlXCI+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgKm5nSWY9XCJmaWVsZC5kYXRhVHlwZSA9PT0gJ05VTUJFUidcIj5cclxuICAgICAgPGlucHV0IHR5cGU9XCJudW1iZXJcIiBjbGFzcz1cImlucHV0LXRleHRcIiBwbGFjZWhvbGRlcj1cImVudGVyIHZhbHVlXCIgWyhuZ01vZGVsKV09XCJmaWVsZC5maWVsZFZhbHVlXCI+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgKm5nSWY9XCJmaWVsZC5kYXRhVHlwZSA9PT0gJ01PTkVZJ1wiPlxyXG4gICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImlucHV0LXRleHRcIiBwbGFjZWhvbGRlcj1cImVudGVyIHZhbHVlXCIgWyhuZ01vZGVsKV09XCJmaWVsZC5maWVsZFZhbHVlXCI+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgKm5nSWY9XCJmaWVsZC5kYXRhVHlwZSA9PT0gJ0RBVEUnXCI+XHJcbiAgICAgIDxpbnB1dCB0eXBlPVwiZGF0ZVwiIGNsYXNzPVwiaW5wdXQtdGV4dFwiIFsobmdNb2RlbCldPVwiZmllbGQuZmllbGRWYWx1ZVwiPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiZmllbGQuZGF0YVR5cGUgPT09ICdEUk9QRE9XTidcIiBjbGFzcz1cImFkbWlzc2lvblwiPlxyXG4gICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJpbnB1dC10ZXh0XCIgYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cclxuICAgICAgICA8bWF0LXNlbGVjdCBjbGFzcz1cImlucHV0U3R5bGVcIiBwbGFjZWhvbGRlcj1cIi0tU2VsZWN0LS1cIiBbKG5nTW9kZWwpXT1cImZpZWxkLmZpZWxkVmFsdWVcIiBbbXVsdGlwbGVdPVwiZmllbGQubXVsdGlwbGVTZWxlY3Rpb25cIj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIoZmllbGQ/LnZhbHVlPy5sZW5ndGggfHwgMCkgPiAwXCI+XHJcbiAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBpdGVtIG9mIGZpZWxkLnZhbHVlXCIgW3ZhbHVlXT1cIml0ZW0/LnZhbHVlXCIgKGNsaWNrKT1cIm1hc3RlckRyb3Bkb3duVmFsdWVDaGFuZ2UoaXRlbSwgZmllbGQpXCI+e3tpdGVtLmxhYmVsfX08L21hdC1vcHRpb24+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIoZmllbGQ/LnZhbHVlPy5sZW5ndGggfHwgMCkgPT0gMFwiPlxyXG4gICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBmaWVsZC5zb3VyY2VEYXRhW2ZpZWxkLmRhdGFTb3VyY2VUeXBlXVwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImlucHV0RmllbGRDaGFuZ2UoaXRlbSwgZmllbGQpXCIgW3ZhbHVlXT1cIml0ZW0/Lm5hbWVcIj57e2l0ZW0ubmFtZX19PC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiZmllbGQuZGF0YVR5cGUgPT09ICdDSEVDS0JPWCdcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihmaWVsZD8udmFsdWU/Lmxlbmd0aCB8fCAwKSA+IDBcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBtYi01XCIgKm5nRm9yPVwibGV0IGRhdGEgb2YgZmllbGQudmFsdWVcIj5cclxuICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIiB0eXBlPVwiY2hlY2tib3hcIiB2YWx1ZT1cIlwiIGlkPVwiZmxleENoZWNrQ2hlY2tlZFwiIFsobmdNb2RlbCldPVwiZGF0YS5jaGVja2VkXCI+XHJcbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCIgZm9yPVwiZmxleENoZWNrQ2hlY2tlZFwiPlxyXG4gICAgICAgICAgICB7e2RhdGEubGFiZWx9fVxyXG4gICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGZpZWxkPy52YWx1ZT8ubGVuZ3RoIHx8IDApID09IDBcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBtYi01XCIgKm5nRm9yPVwibGV0IGRhdGEgb2YgZmllbGQuc291cmNlRGF0YVtmaWVsZC5kYXRhU291cmNlVHlwZV1cIj5cclxuICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIiB0eXBlPVwiY2hlY2tib3hcIiB2YWx1ZT1cIlwiIGlkPVwiZmxleENoZWNrQ2hlY2tlZFwiIFsobmdNb2RlbCldPVwiZGF0YS5jaGVja2VkXCI+XHJcbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCIgZm9yPVwiZmxleENoZWNrQ2hlY2tlZFwiPlxyXG4gICAgICAgICAgICB7e2RhdGEubmFtZX19XHJcbiAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcblxyXG5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwic3R5bGVzPy5kZXZpZGVyPy5kaXNwbGF5XCI+XHJcbiAgICA8c2ltcG8tc3ZnLWRpdmlkZXIgW2RpdmlkZXJUeXBlXT1cInN0eWxlcz8uZGV2aWRlcj8uZGV2aWRlclR5cGVcIlxyXG4gICAgICBbY29sb3JdPVwibmV4dENvbXBvbmVudENvbG9yPy5jb2xvclwiPjwvc2ltcG8tc3ZnLWRpdmlkZXI+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbiAgPGRpdiBbbmdDbGFzc109XCJ7J2hvdmVyX2VmZmVjdCc6IGVkaXR9XCIgKm5nSWY9XCJzaG93RWRpdG9yc1wiPlxyXG4gICAgPHNpbXBvLWhvdmVyLWVsZW1lbnRzIFtkYXRhXT1cImRhdGFcIiBbaW5kZXhdPVwiaW5kZXhcIiBbZWRpdE9wdGlvbnNdPVwiZWRpdFwiPjwvc2ltcG8taG92ZXItZWxlbWVudHM+XHJcbiAgPC9kaXY+XHJcbjwvc2VjdGlvbj5cclxuIl19
426
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0cmF0aW9uLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9zZWN0aW9ucy9yZWdpc3RyYXRpb24tZm9ybS9yZWdpc3RyYXRpb24tZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL3NlY3Rpb25zL3JlZ2lzdHJhdGlvbi1mb3JtL3JlZ2lzdHJhdGlvbi1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxRQUFRLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBRTlDLE9BQU8sRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUFnQyxNQUFNLGVBQWUsQ0FBQztBQUMzRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUUzRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM5RCxPQUFPLEVBQWEsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFFMUYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDekUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDM0UsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDNUUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDekYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FB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QUF5QjtrR0FBekIseUJBQXlCLDRNQzVFdEMsNCtaQXdPQSxvdElEM0xJLFlBQVksaWtCQUNaLGlCQUFpQiw4QkFDakIsbUJBQW1CLDZRQUNuQixvQkFBb0IsMmRBQ3BCLGVBQWU7Z0JBRWYsV0FBVztnQkFDWCxrQkFBa0IseUZBQ2xCLG1CQUFtQiwwR0FFbkIsZUFBZSxtRkFDZix3QkFBd0Isb0hBSXhCLG1CQUFtQixtRkFHbkIsY0FBYyxnRkFFZCxnQkFBZ0Isb0ZBR2hCLGVBQWUsZ01BQ2YsZUFBZSwrdEJBQ2YsV0FBVyxzOEJBQ1gsYUFBYTs7MkZBS0oseUJBQXlCO2tCQW5DckMsU0FBUzsrQkFDRSx5QkFBeUIsY0FDdkIsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osaUJBQWlCO3dCQUNqQixtQkFBbUI7d0JBQ25CLG9CQUFvQjt3QkFDcEIsZUFBZTt3QkFDZixvQkFBb0I7d0JBQ3BCLFdBQVc7d0JBQ1gsa0JBQWtCO3dCQUNsQixtQkFBbUI7d0JBQ25CLHlCQUF5Qjt3QkFDekIsZUFBZTt3QkFDZix3QkFBd0I7d0JBQ3hCLHdCQUF3Qjt3QkFDeEIscUJBQXFCO3dCQUNyQiw4QkFBOEI7d0JBQzlCLG1CQUFtQjt3QkFDbkIsZUFBZTt3QkFDZiwwQkFBMEI7d0JBQzFCLGNBQWM7d0JBQ2QsdUJBQXVCO3dCQUN2QixnQkFBZ0I7d0JBQ2hCLGdDQUFnQzt3QkFDaEMsZ0NBQWdDO3dCQUNoQyxlQUFlO3dCQUNmLGVBQWU7d0JBQ2YsV0FBVzt3QkFDWCxhQUFhO3FCQUNkOytOQUtRLElBQUk7c0JBQVosS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcmVzdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgZm9ya0pvaW4sIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBNYXRTbmFja0JhciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NuYWNrLWJhcic7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0R3JpZExpc3RNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9ncmlkLWxpc3QnO1xyXG5pbXBvcnQgeyBTaW1wb0VsZW1lbnRzTW9kdWxlIH0gZnJvbSAnLi4vLi4vZWxlbWVudHMvaW5kZXgnO1xyXG5pbXBvcnQgeyBCYWNrZ3JvdW5kTW9kZWwsIFN0eWxlc01vZGVsIH0gZnJvbSAnLi4vLi4vc3R5bGVzL3N0eWxlLm1vZGVsJztcclxuaW1wb3J0IHsgU2ltcG9Db21wb25lbnRNb2R1bGUgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2luZGV4JztcclxuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXREaWFsb2dNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBTaW1wb0J1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2VsZW1lbnRzL3NpbXBvLWJ1dHRvbi9zaW1wby1idXR0b24uY29tcG9uZW50JztcclxuXHJcbmltcG9ydCB7IEFuaW1hdGlvbkRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9hbmltYXRpb24tZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQmFja2dyb3VuZERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9iYWNrZ3JvdW5kLWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IENvbnRlbnRGaXREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvY29udGVudC1maXQtZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQmFubmVyQ29udGVudEZpdERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9iYW5uZXItY29udGVudC1maXQtZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQm9yZGVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2JvcmRlci1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBCdXR0b25EaXJlY3RpdmVEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvYnV0dG9uLWRpcmVjdGl2ZS5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBDb2x1bW5EaXJlY3RpdmVEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvY29sdW1uLWRpcmVjdGl2ZS5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBDb250YWluZXJGaXREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvY29udGFpbmVyLWZpci5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBzaW1wb0NvbmV0ZW5BbGlnbm1lbnREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvY29udGVudC1hbGlnbm1lbnQtZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQ29ybmVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2Nvcm5lci1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBTaW1wb0Zvb3RlckxheW91dERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9mb290ZXItbGF5b3V0LWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IEhvdmVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2hvdmVyLWVsZW1lbnQtZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgSW1hZ2VEaXJlY3RpdmVEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvaW1hZ2UtZGlyZWN0aXZlLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IE92ZXJsYXlEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvb3ZlcmxheS1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBQb3NpdGlvbkxheW91dERpcmVjdGl2ZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9wb3NpdGlvbi1sYXlvdXQtZGlyZWN0aXZlLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFRleHRCYWNrZ3JvdW5kRGlyZWN0aXZlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL3RleHQtYmFja2dyb3VuZC1kaXJlY3RpdmUuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgRXZlbnRzU2VydmljZSB9IGZyb20gJy4vLi4vLi4vc2VydmljZXMvZXZlbnRzLnNlcnZpY2UnO1xyXG5pbXBvcnQgQmFzZVNlY3Rpb24gZnJvbSAnLi4vQmFzZVNlY3Rpb24nO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBUZXh0Q29udGVudE1vZGVsLCBUZXh0U2VjdGlvbk1vZGVsIH0gZnJvbSAnLi4vdGV4dC1zZWN0aW9uL3RleHQtc2VjdGlvbi5tb2RlbCc7XHJcbmltcG9ydCB7IE1hdE9wdGlvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXRTZWxlY3RNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3QnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHsgSW1hZ2VVcGxhb2RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvaW1hZ2UtdXBsb2FkLXNlcnZpY2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IFJlZ2lzdHJhdGlvbkZvcm1Db250ZW50TW9kZWwsIFJlZ2lzdHJhdGlvbkZvcm1Nb2RlbCB9IGZyb20gJy4vcmVnaXN0cmF0aW9uRm9ybS5tb2RlbCc7XHJcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NpbXBvLXJlZ2lzdHJhdGlvbi1mb3JtJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIE1hdEdyaWRMaXN0TW9kdWxlLFxyXG4gICAgU2ltcG9FbGVtZW50c01vZHVsZSxcclxuICAgIFNpbXBvQ29tcG9uZW50TW9kdWxlLFxyXG4gICAgTWF0RGlhbG9nTW9kdWxlLFxyXG4gICAgU2ltcG9CdXR0b25Db21wb25lbnQsXHJcbiAgICAvL2RpcmVjdGl2ZVxyXG4gICAgQW5pbWF0aW9uRGlyZWN0aXZlLFxyXG4gICAgQmFja2dyb3VuZERpcmVjdGl2ZSxcclxuICAgIEJhbm5lckNvbnRlbnRGaXREaXJlY3RpdmUsXHJcbiAgICBCb3JkZXJEaXJlY3RpdmUsXHJcbiAgICBCdXR0b25EaXJlY3RpdmVEaXJlY3RpdmUsXHJcbiAgICBDb2x1bW5EaXJlY3RpdmVEaXJlY3RpdmUsXHJcbiAgICBDb250YWluZXJGaXREaXJlY3RpdmUsXHJcbiAgICBzaW1wb0NvbmV0ZW5BbGlnbm1lbnREaXJlY3RpdmUsXHJcbiAgICBDb250ZW50Rml0RGlyZWN0aXZlLFxyXG4gICAgQ29ybmVyRGlyZWN0aXZlLFxyXG4gICAgU2ltcG9Gb290ZXJMYXlvdXREaXJlY3RpdmUsXHJcbiAgICBIb3ZlckRpcmVjdGl2ZSxcclxuICAgIEltYWdlRGlyZWN0aXZlRGlyZWN0aXZlLFxyXG4gICAgT3ZlcmxheURpcmVjdGl2ZSxcclxuICAgIFBvc2l0aW9uTGF5b3V0RGlyZWN0aXZlRGlyZWN0aXZlLFxyXG4gICAgVGV4dEJhY2tncm91bmREaXJlY3RpdmVEaXJlY3RpdmUsXHJcbiAgICBNYXRPcHRpb25Nb2R1bGUsXHJcbiAgICBNYXRTZWxlY3RNb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIE1hdEljb25Nb2R1bGVcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9yZWdpc3RyYXRpb24tZm9ybS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3JlZ2lzdHJhdGlvbi1mb3JtLmNvbXBvbmVudC5jc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZWdpc3RyYXRpb25Gb3JtQ29tcG9uZW50IGV4dGVuZHMgQmFzZVNlY3Rpb24gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveXtcclxuICBASW5wdXQoKSBkYXRhPzogUmVnaXN0cmF0aW9uRm9ybU1vZGVsO1xyXG4gIEBJbnB1dCgpIGluZGV4PyA6IG51bWJlcjtcclxuICBASW5wdXQoKSBlZGl0PyA6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgbmV4dENvbXBvbmVudENvbG9yPzogQmFja2dyb3VuZE1vZGVsO1xyXG4gIGNvbnRlbnQ6IFJlZ2lzdHJhdGlvbkZvcm1Db250ZW50TW9kZWwgfCB1bmRlZmluZWQ7XHJcbiAgc3R5bGVzOiBTdHlsZXNNb2RlbCB8IHVuZGVmaW5lZDtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZXN0U2VydmljZTogUmVzdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHNuYWNrQmFyOiBNYXRTbmFja0JhcixcclxuICAgIHByaXZhdGUgX2V2ZW50U2VydmljZSA6IEV2ZW50c1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJvdXRlcjogQWN0aXZhdGVkUm91dGUsXHJcbiAgICBwdWJsaWMgZHM6IERvbVNhbml0aXplcixcclxuICAgIHB1YmxpYyBpbWFnZVVwbG9hZFNlcnZpY2U6IEltYWdlVXBsYW9kU2VydmljZVxyXG4gICkge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcblxyXG4gIE9iamVjdCA9IE9iamVjdDtcclxuICBwYXlsb2FkOiBhbnkgPSB7XHJcbiAgICBcImJ1c2luZXNzRGV0YWlsc1wiOiB7XHJcbiAgICAgIFwiaWRcIjogbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJiSWRcIikgPz8gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJidXNpbmVzc0lkXCIpLFxyXG4gICAgICBcIm5hbWVcIjogbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJiTmFtZVwiKSA/PyBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImJ1c2luZXNzTmFtZVwiKVxyXG4gICAgfSxcclxuICAgIFwiZmllbGRJdGVtc1wiOiBbXSxcclxuICAgIFwiaW1nVXJsXCI6ICcnLFxyXG4gICAgJ2RvY3VtZW50cyc6IFtdLFxyXG4gICAgXCJwYXJlbnRBdXRob3JpemF0aW9uXCI6IGZhbHNlLFxyXG4gICAgXCJiYWNrdXBEb2NcIiA6ICcnLFxyXG4gICAgXCJwYXltZW50UGxhblR5cGVcIiA6ICdBTk5VQUxMWSdcclxuICB9XHJcblxyXG4gIHNlbGVjdGVkS2V5OiBhbnk7XHJcbiAgZmllbGREYXRhOiBhbnkgPSB7fVxyXG4gIGJ1c2luZXNzSWQ6IGFueTtcclxuICBzZWxlY3RlZEdyYWRlSWQ6IGFueTtcclxuICBzZWxlY3RlZEFjYWRlbWljWWVhcjogYW55O1xyXG4gIGRvY3VtZW50TGlzdDogYW55W10gPSBbXTtcclxuICBmb3JtU3RhdHVzOiBzdHJpbmcgPSAnJ1xyXG4gIHN0dWRlbnRMaXZlV2l0aDogYW55ID0gJydcclxuICBiYWNrdXBEb2NGaWxlPzogRmlsZTtcclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnJvdXRlci5xdWVyeVBhcmFtcy5zdWJzY3JpYmUoKHBhcmFtOiBhbnkpID0+IHtcclxuICAgICAgaWYocGFyYW1bJ2VJZCddKVxyXG4gICAgICAgIHRoaXMucGF5bG9hZFsnZW5xdWlyeUlkJ10gPSBwYXJhbVsnZUlkJ107XHJcblxyXG4gICAgICBpZihwYXJhbVsncklkJ10pXHJcbiAgICAgICAgdGhpcy5wYXlsb2FkWydyZWdpc3RyYXRpb25JZCddID0gcGFyYW1bJ3JJZCddO1xyXG5cclxuICAgICAgaWYocGFyYW1bJ2JJZCddKVxyXG4gICAgICAgIHRoaXMuYnVzaW5lc3NJZCA9IHBhcmFtWydiSWQnXTtcclxuXHJcbiAgICAgIGlmKHBhcmFtWyd0SWQnXSlcclxuICAgICAgICB0aGlzLnBheWxvYWRbJ3RlbXBsYXRlSWQnXSA9IHBhcmFtWyd0SWQnXTtcclxuXHJcbiAgICAgIHRoaXMucGF5bG9hZC5idXNpbmVzc0RldGFpbHMuaWQgPSB0aGlzLmJ1c2luZXNzSWQ7XHJcblxyXG4gICAgICBpZih0aGlzLnBheWxvYWRbJ3JlZ2lzdHJhdGlvbklkJ10gfHwgdGhpcy5wYXlsb2FkWydlbnF1aXJ5SWQnXSkge1xyXG4gICAgICAgIHRoaXMuZ2V0Rm9ybWRhdGEodGhpcy5wYXlsb2FkWydyZWdpc3RyYXRpb25JZCddIHx8IHRoaXMucGF5bG9hZFsnZW5xdWlyeUlkJ10pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZ2V0QWxsRmllbGRzKCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuZ2V0QUxMRG9jdW1lbnRMaXN0KCk7XHJcblxyXG4gICAgfSlcclxuXHJcbiAgICAvLyB0aGlzLmJ1c2luZXNzSWQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImJJZFwiKSA/PyBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImJ1c2luZXNzSWRcIik7XHJcblxyXG4gICAgdGhpcy5jb250ZW50ID0gdGhpcy5kYXRhPy5jb250ZW50O1xyXG4gICAgdGhpcy5zdHlsZXMgPSB0aGlzLmRhdGE/LnN0eWxlcztcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5mb3JtRmllbGRDaGFuZ2VTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBnZXRGb3JtZGF0YShhZG1pc3Npb25JZDogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBzZXJ2ZXJDYWxsID0gZm9ya0pvaW4oe1xyXG4gICAgICBhZG1pc3Npb25EYXRhOiB0aGlzLmRhdGE/LnNlY3Rpb25UeXBlID09PSAncmVnaXN0cmF0aW9uRm9ybScgPyB0aGlzLnJlc3RTZXJ2aWNlLmdldExlYWRCeUlkKGFkbWlzc2lvbklkKSA6IHRoaXMucmVzdFNlcnZpY2UuZ2V0UmVnaXN0cmF0aW9uTGlzdCh7aWQ6IGFkbWlzc2lvbklkLCBwYWdlTm86IDAsIHBhZ2VTaXplOiAxfSksXHJcbiAgICAgIGZpZWxkRGF0YTogdGhpcy5yZXN0U2VydmljZS5nZXRTZWxlY3RlZExpc3RGaWVsZHModGhpcy5idXNpbmVzc0lkLCB0aGlzLmRhdGE/LnNlY3Rpb25UeXBlID09PSAncmVnaXN0cmF0aW9uRm9ybScgPyAnUkVHSVNUUkFUSU9OJyA6ICdBRE1JU1NJT04nLCAgdGhpcy5kYXRhPy5zZWN0aW9uVHlwZSA9PT0gJ3JlZ2lzdHJhdGlvbkZvcm0nID8gJ1JFR0lTVFJBVElPTicgOiAnQURNSVNTSU9OJylcclxuICAgIH0pXHJcblxyXG4gICAgc2VydmVyQ2FsbC5zdWJzY3JpYmUoKHJlc3VsdDogYW55KSA9PiB7XHJcbiAgICAgIGxldCBhZG1pc3Npb25EYXRhID0gdGhpcy5kYXRhPy5zZWN0aW9uVHlwZSA9PT0gJ3JlZ2lzdHJhdGlvbkZvcm0nID8gcmVzdWx0LmFkbWlzc2lvbkRhdGEuZGF0YSA6IHJlc3VsdC5hZG1pc3Npb25EYXRhLmRhdGEuZGF0YVswXTtcclxuICAgICAgbGV0IGZpZWxkRGF0YSA9IHJlc3VsdC5maWVsZERhdGEuZGF0YTtcclxuXHJcbiAgICAgIHRoaXMuZm9ybVN0YXR1cyA9IGFkbWlzc2lvbkRhdGEuc3RhdHVzXHJcblxyXG4gICAgICAvLyB0aGlzLnBheWxvYWQgPSBhZG1pc3Npb25EYXRhO1xyXG4gICAgICB0aGlzLnBheWxvYWRbJ2RvY3VtZW50cyddID0gW107XHJcbiAgICAgIHRoaXMucGF5bG9hZC5idXNpbmVzc0RldGFpbHMuaWQgPSB0aGlzLmJ1c2luZXNzSWQ7XHJcbiAgICAgIHRoaXMucGF5bG9hZC5pbWdVcmwgPSBhZG1pc3Npb25EYXRhLmltZ1VybFxyXG5cclxuICAgICAgYWRtaXNzaW9uRGF0YVsnZmllbGRNYXAnXSA9IHt9O1xyXG4gICAgICBmb3IobGV0IGZpZWxkSXRlbSBvZiB0aGlzLmRhdGE/LnNlY3Rpb25UeXBlID09PSAncmVnaXN0cmF0aW9uRm9ybScgPyAoYWRtaXNzaW9uRGF0YT8uZmllbGREYXRhIHx8IFtdKSA6IChhZG1pc3Npb25EYXRhPy5maWVsZEl0ZW1zIHx8IFtdKSkge1xyXG4gICAgICAgIGlmKGZpZWxkSXRlbS5maWVsZE5hbWUgPT09ICdBY2FkZW1pYyBZZWFyJykge1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEFjYWRlbWljWWVhciA9IGZpZWxkSXRlbS5maWVsZFZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZihmaWVsZEl0ZW0udHlwZSAhPSBudWxsKSB7XHJcbiAgICAgICAgICBhZG1pc3Npb25EYXRhWydmaWVsZE1hcCddW2ZpZWxkSXRlbS50eXBlXSA9IGZpZWxkSXRlbS5maWVsZFZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgaWQgPSBmaWVsZEl0ZW0uZmllbGROYW1lICsgZmllbGRJdGVtLmZpZWxkR3JvdXBOYW1lO1xyXG4gICAgICAgIGFkbWlzc2lvbkRhdGFbJ2ZpZWxkTWFwJ11baWRdID0gZmllbGRJdGVtLmZpZWxkVmFsdWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuZmllbGREYXRhID0gdGhpcy5yZXN0U2VydmljZS5nZXRGaWVsZHNUb0Rpc3BsYXkoZmllbGREYXRhLmRhdGEpO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkS2V5ID0gdGhpcy5PYmplY3Qua2V5cyh0aGlzLmZpZWxkRGF0YSlbMF1cclxuXHJcbiAgICAgIGZvcihsZXQgc3RlcCBvZiB0aGlzLk9iamVjdC5rZXlzKHRoaXMuZmllbGREYXRhKSkge1xyXG4gICAgICAgIGZvcihsZXQgZ3JvdXAgb2YgT2JqZWN0LmtleXModGhpcy5maWVsZERhdGFbc3RlcF0pKSB7XHJcbiAgICAgICAgICBmb3IobGV0IGZpZWxkIG9mIHRoaXMuZmllbGREYXRhW3N0ZXBdW2dyb3VwXSkge1xyXG4gICAgICAgICAgICBpZihmaWVsZC50eXBlICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICBmaWVsZC5maWVsZFZhbHVlID0gYWRtaXNzaW9uRGF0YVsnZmllbGRNYXAnXVtmaWVsZC50eXBlXTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBmaWVsZC5maWVsZFZhbHVlID0gYWRtaXNzaW9uRGF0YVsnZmllbGRNYXAnXVtmaWVsZC5maWVsZExhYmVsICsgZ3JvdXBdO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZihmaWVsZD8udHlwZSA9PT0gJ0dSQURFJylcclxuICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUdyYWRlKGZpZWxkLnNvdXJjZURhdGFbZmllbGQuZGF0YVNvdXJjZVR5cGVdLCBmaWVsZC5maWVsZFZhbHVlKTtcclxuXHJcbiAgICAgICAgICAgIGlmKGZpZWxkLmRhdGFUeXBlID09PSAnQ0hFQ0tCT1gnKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5mb3JtYXRDaGVja0JveFZhbHVlKGZpZWxkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5nZXRGZWVTdHJ1Y3R1cmUoKTtcclxuICAgIH0pXHJcblxyXG4gIH1cclxuXHJcbiAgdXBkYXRlR3JhZGUoZ3JhZGVMaXN0IDphbnlbXSwgZ3JhZGVOYW1lOiBhbnkpIHtcclxuICAgIGZvcihsZXQgZ3JhZGUgb2YgZ3JhZGVMaXN0KSB7XHJcbiAgICAgIGlmKGdyYWRlLm5hbWUgPT09IGdyYWRlTmFtZSl7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEdyYWRlSWQgPSBncmFkZS5pZDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZm9ybWF0Q2hlY2tCb3hWYWx1ZShmaWVsZDogYW55KSB7XHJcbiAgICBpZihmaWVsZC52YWx1ZSkge1xyXG4gICAgICBmb3IobGV0IGZpZWxkVmFsdWUgb2YgZmllbGQudmFsdWUpIHtcclxuICAgICAgICBpZihmaWVsZC5maWVsZFZhbHVlPy5pbmNsdWRlcyhmaWVsZFZhbHVlLnZhbHVlKSkge1xyXG4gICAgICAgICAgZmllbGRWYWx1ZS5jaGVja2VkID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBmb3IobGV0IGZpZWxkVmFsdWUgb2YgZmllbGQuc291cmNlRGF0YT8uW2ZpZWxkLmRhdGFTb3VyY2VUeXBlXSB8fCBbXSkge1xyXG4gICAgICAgIGlmKGZpZWxkLmZpZWxkVmFsdWU/LmluY2x1ZGVzKGZpZWxkVmFsdWUubmFtZSkpIHtcclxuICAgICAgICAgIGZpZWxkVmFsdWUuY2hlY2tlZCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgZ2V0QWxsRmllbGRzKCkge1xyXG4gICAgdGhpcy5yZXN0U2VydmljZS5nZXRTZWxlY3RlZExpc3RGaWVsZHModGhpcy5idXNpbmVzc0lkLCB0aGlzLmRhdGE/LnNlY3Rpb25UeXBlID09PSAncmVnaXN0cmF0aW9uRm9ybScgPyAnUkVHSVNUUkFUSU9OJyA6ICdBRE1JU1NJT04nLCAgdGhpcy5kYXRhPy5zZWN0aW9uVHlwZSA9PT0gJ3JlZ2lzdHJhdGlvbkZvcm0nID8gJ1JFR0lTVFJBVElPTicgOiAnQURNSVNTSU9OJykuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLmZpZWxkRGF0YSA9IHRoaXMucmVzdFNlcnZpY2UuZ2V0RmllbGRzVG9EaXNwbGF5KHJlcy5kYXRhLmRhdGEpO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkS2V5ID0gdGhpcy5PYmplY3Qua2V5cyh0aGlzLmZpZWxkRGF0YSlbMF07XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0QUxMRG9jdW1lbnRMaXN0KCkge1xyXG4gICAgY29uc3QgcGF5bG9hZCA9IHtcclxuICAgICAgXCJidXNpbmVzc0lkXCI6IHRoaXMuYnVzaW5lc3NJZCxcclxuICAgICAgXCJzb3J0QnlcIjogXCJcIixcclxuICAgICAgXCJzb3J0T3JkZXJcIjogXCJcIixcclxuICAgICAgXCJzdGF0dXNcIjogdHJ1ZSxcclxuICAgICAgXCJpc0RlbGV0ZWRcIjogZmFsc2VcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnJlc3RTZXJ2aWNlLmdldEFsbERvY3VtZW50KHBheWxvYWQpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5kb2N1bWVudExpc3QgPSByZXMuZGF0YS5kYXRhO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGZvcm1GaWVsZENoYW5nZVN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcclxuICBmb3JtRmllbGRDaGFuZ2VkKCkge1xyXG4gICAgdGhpcy5mb3JtRmllbGRDaGFuZ2VTdWJzY3JpcHRpb24gPSB0aGlzLl9ldmVudFNlcnZpY2UuZm9ybUZpZWxkQ2hhbmdlZC5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMuZ2V0QWxsRmllbGRzKCk7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcblxyXG5cclxuICBhc3luYyBzdWJtaXRGb3JtKCkge1xyXG4gICAgdGhpcy5wYXlsb2FkLmZpZWxkSXRlbXMgPSB0aGlzLmNvbnZlcnRUb0xpc3RPZkZpZWxkcygpO1xyXG4gICAgaWYodGhpcy5wYXlsb2FkLmZpZWxkSXRlbXMubGVuZ3RoID09IDApXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICBpZih0aGlzLmZpbGVEYXRhKSB7XHJcbiAgICAgIGxldCBpbWFnZURhdGE6IGFueSA9IGF3YWl0IHRoaXMuaW1hZ2VVcGxvYWRTZXJ2aWNlLnVwbG9hZEZpbGVJbkF6dXJlKHRoaXMuZmlsZURhdGEpO1xyXG4gICAgICB0aGlzLnBheWxvYWQuaW1nVXJsID0gaW1hZ2VEYXRhLnVybFxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZGF0YT8uc2VjdGlvblR5cGUgPT09ICdyZWdpc3RyYXRpb25Gb3JtJyA/IHRoaXMuY3JlYXRlUmVnaXN0cmF0aW9uKCkgOiB0aGlzLmNyZWF0ZUFkbWlzc2lvbigpO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0cmF0aW9uU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xyXG4gIGNyZWF0ZVJlZ2lzdHJhdGlvbigpIHtcclxuICAgIHRoaXMucGF5bG9hZFsncmV0dXJuVXJsJ10gPSBgaHR0cHM6Ly9kZXYuY21pcy50ZWpzb2Z0LmNvbS92ZXJpZnktcGF5bWVudC8/dXJsPXRydWUmdHlwZT1SRUdJU1RSQVRJT04mYklkPSR7dGhpcy5idXNpbmVzc0lkfWBcclxuICAgIHRoaXMucmVnaXN0cmF0aW9uU3Vic2NyaXB0aW9uID0gdGhpcy5yZXN0U2VydmljZS5jcmVhdGVSZWdpc3RyYXRpb25Gb3JQYXltZW50KHRoaXMucGF5bG9hZCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAvLyB0aGlzLnNuYWNrQmFyLm9wZW4oJ1JlZ2lzdHJhdGlvbiBjcmVhdGVkIHN1Y2Nlc3NmdWxseScsICdjbG9zZScsIHtkdXJhdGlvbjogMjAwMH0pO1xyXG4gICAgICB0aGlzLl9ldmVudFNlcnZpY2UuY2FzaEZyZWVFdmVudC5lbWl0KHtyZXNwb25zZTogcmVzLCBwYXltZW50VHlwZTonUkVHSVNUUkFUSU9OJ30pO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGFzeW5jIGNyZWF0ZUFkbWlzc2lvbigpIHtcclxuICAgIGlmKHRoaXMucGF5bG9hZC5wYXltZW50UGxhblR5cGUgPT09ICdURVJNJyAmJiAodGhpcy5wYXlsb2FkPy5zdHVkZW50RmVlU3RydWN0dXJlPy50ZXJtUGF5bWVudExpc3Q/Lmxlbmd0aCB8fCAwKSA9PSAwKXtcclxuICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKCdQbGVhc2Ugc2VsZWN0IHRlcm0nKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMucGF5bG9hZC5zdHVkZW50RmVlU3RydWN0dXJlWydwYXltZW50UGxhblR5cGUnXSA9IHRoaXMucGF5bG9hZC5wYXltZW50UGxhblR5cGU7XHJcbiAgICB0aGlzLnBheWxvYWRbJ3JldHVyblVybCddID0gYGh0dHBzOi8vY21pcy50ZWpzb2Z0LmNvbS92ZXJpZnktcGF5bWVudC8/dXJsPXRydWUmdHlwZT1BRE1JU1NJT04mYklkPSR7dGhpcy5idXNpbmVzc0lkfWA7XHJcblxyXG4gICAgaWYodGhpcy5iYWNrdXBEb2NGaWxlKSB7XHJcbiAgICAgIGxldCBpbWFnZURhdGE6IGFueSA9IGF3YWl0IHRoaXMuaW1hZ2VVcGxvYWRTZXJ2aWNlLnVwbG9hZEZpbGVJbkF6dXJlKHRoaXMuYmFja3VwRG9jRmlsZSk7XHJcbiAgICAgIHRoaXMucGF5bG9hZC5iYWNrdXBEb2MgPSBpbWFnZURhdGEudXJsXHJcbiAgICB9XHJcblxyXG4gICAgZm9yKGxldCBkb2N1bWVudCBvZiB0aGlzLmRvY3VtZW50TGlzdCkge1xyXG4gICAgICBpZihkb2N1bWVudC5maWxlKSB7XHJcbiAgICAgICAgbGV0IGltYWdlRGF0YTogYW55ID0gYXdhaXQgdGhpcy5pbWFnZVVwbG9hZFNlcnZpY2UudXBsb2FkRmlsZUluQXp1cmUoZG9jdW1lbnQuZmlsZSk7XHJcblxyXG4gICAgICAgIHRoaXMucGF5bG9hZFsnZG9jdW1lbnRzJ10ucHVzaChcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgbmFtZTogZG9jdW1lbnQuZGlzcGxheVRleHQsXHJcbiAgICAgICAgICAgIHVybDogaW1hZ2VEYXRhLnVybCxcclxuICAgICAgICAgICAgZG9jVHlwZTogZG9jdW1lbnQubmFtZSxcclxuICAgICAgICAgICAgYXR0YWNobWVudFR5cGU6IGRvY3VtZW50LnR5cGVcclxuICAgICAgICAgIH1cclxuICAgICAgICApXHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnJlZ2lzdHJhdGlvblN1YnNjcmlwdGlvbiA9IHRoaXMucmVzdFNlcnZpY2UuY3JlYXRlUGF5bWVudEZvckFkbWlzc2lvbih0aGlzLnBheWxvYWQpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgLy8gdGhpcy5zbmFja0Jhci5vcGVuKCdBZG1pc3Npb24gY3JlYXRlZCBzdWNjZXNzZnVsbHknLCAnY2xvc2UnLCB7ZHVyYXRpb246IDIwMDB9KTtcclxuICAgICAgdGhpcy5fZXZlbnRTZXJ2aWNlLmNhc2hGcmVlRXZlbnQuZW1pdCh7cmVzcG9uc2U6IHJlcywgcGF5bWVudFR5cGU6J0FETUlTU0lPTid9KTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBjb252ZXJ0VG9MaXN0T2ZGaWVsZHMoKSB7XHJcbiAgICBsZXQgZmllbGRMaXN0OiBhbnlbXSA9IFtdO1xyXG5cclxuICAgIGZvcihsZXQgc3RlcCBvZiB0aGlzLk9iamVjdC5rZXlzKHRoaXMuZmllbGREYXRhKSkge1xyXG4gICAgICBmb3IobGV0IGdyb3VwIG9mIE9iamVjdC5rZXlzKHRoaXMuZmllbGREYXRhW3N0ZXBdKSkge1xyXG5cclxuICAgICAgICBpZihncm91cCA9PSAnQmFja3VwIENvbnRhY3QnICYmIHRoaXMuc3R1ZGVudExpdmVXaXRoICE9ICdzaW5nbGUgcGFyZW50JylcclxuICAgICAgICAgIGNvbnRpbnVlO1xyXG5cclxuICAgICAgICBmb3IobGV0IGZpZWxkIG9mIHRoaXMuZmllbGREYXRhW3N0ZXBdW2dyb3VwXSkge1xyXG4gICAgICAgICAgaWYoZmllbGQucmVxdWlyZWQgJiYgIWZpZWxkLmZpZWxkVmFsdWUgJiYgZmllbGQuZGF0YVR5cGUgIT0gJ0NIRUNLQk9YJykge1xyXG4gICAgICAgICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oYFBsZWFzZSBlbnRlciAke2ZpZWxkLmZpZWxkTGFiZWx9YCwgJ2Nsb3NlJywge2R1cmF0aW9uOiAyMDAwfSk7XHJcbiAgICAgICAgICAgIHJldHVybiBbXTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBsZXQgY2hlY2tCb3hWYWx1ZTogYW55W10gPSBbXTtcclxuICAgICAgICAgIGlmKGZpZWxkLmRhdGFUeXBlID09PSAnQ0hFQ0tCT1gnKSB7XHJcbiAgICAgICAgICAgIGNoZWNrQm94VmFsdWUgPSB0aGlzLmdldENoZWNrQm94VmFsdWUoZmllbGQpO1xyXG5cclxuICAgICAgICAgICAgaWYoY2hlY2tCb3hWYWx1ZS5sZW5ndGggID09IDAgJiYgZmllbGQucmVxdWlyZWQpe1xyXG4gICAgICAgICAgICAgIHRoaXMuc25hY2tCYXIub3BlbihgUGxlYXNlIGVudGVyICR7ZmllbGQuZmllbGRMYWJlbH1gLCAnY2xvc2UnLCB7ZHVyYXRpb246IDIwMDB9KTtcclxuICAgICAgICAgICAgICByZXR1cm4gW107XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBmaWVsZExpc3QucHVzaCh7XHJcbiAgICAgICAgICAgIGZpZWxkSWQ6IGZpZWxkLmZpZWxkSWQsXHJcbiAgICAgICAgICAgIGZpZWxkTmFtZTogZmllbGQuZmllbGRMYWJlbCxcclxuICAgICAgICAgICAgZmllbGRWYWx1ZTogZmllbGQuZGF0YVR5cGUgIT09ICdDSEVDS0JPWCcgPyBmaWVsZC5maWVsZFZhbHVlIDogY2hlY2tCb3hWYWx1ZSxcclxuICAgICAgICAgICAgZmllbGRHcm91cElkOiBmaWVsZC5maWVsZEdyb3VwSWQsXHJcbiAgICAgICAgICAgIGZpZWxkR3JvdXBOYW1lOiBncm91cCxcclxuICAgICAgICAgICAgZmllbGRTdGVwSWQ6IGZpZWxkLmZpZWxkU3RlcElkLFxyXG4gICAgICAgICAgICBmaWVsZFN0ZXBOYW1lOiBzdGVwLFxyXG4gICAgICAgICAgICB0eXBlOiBmaWVsZC50eXBlXHJcbiAgICAgICAgICB9KVxyXG5cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmllbGRMaXN0O1xyXG4gIH1cclxuXHJcbiAgZ2V0Q2hlY2tCb3hWYWx1ZShmaWVsZDogYW55KSB7XHJcbiAgICBsZXQgcmVzcG9uc2U6IGFueVtdID0gW107XHJcblxyXG4gICAgaWYoZmllbGQudmFsdWUpIHtcclxuICAgICAgZm9yKGxldCBmaWVsZFZhbHVlIG9mIGZpZWxkLnZhbHVlKSB7XHJcbiAgICAgICAgaWYoZmllbGRWYWx1ZS5jaGVja2VkKSB7XHJcbiAgICAgICAgICByZXNwb25zZS5wdXNoKGZpZWxkVmFsdWUudmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZm9yKGxldCBmaWVsZFZhbHVlIG9mIGZpZWxkLnNvdXJjZURhdGE/LltmaWVsZC5kYXRhU291cmNlVHlwZV0gfHwgW10pIHtcclxuICAgICAgICBpZihmaWVsZFZhbHVlLmNoZWNrZWQpIHtcclxuICAgICAgICAgIHJlc3BvbnNlLnB1c2goZmllbGRWYWx1ZS5uYW1lKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgfVxyXG5cclxuICBmaWxlRGF0YT86IEZpbGU7XHJcbiAgdXBkYXRlQWRtaXNzaW9uSW1hZ2UoZXY6IGFueSkge1xyXG4gICAgdGhpcy5maWxlRGF0YSA9IGV2LnNyY0VsZW1lbnQuZmlsZXNbMF07XHJcblxyXG4gICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcclxuXHJcbiAgICByZWFkZXIub25sb2FkID0gKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5wYXlsb2FkLmltZ1VybCA9IHJlc3BvbnNlLnRhcmdldC5yZXN1bHQ7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5maWxlRGF0YSA/IHJlYWRlci5yZWFkQXNEYXRhVVJMKHRoaXMuZmlsZURhdGEpIDogbnVsbDtcclxuICB9XHJcblxyXG4gIGRlbGV0ZUltZygpIHtcclxuICAgIHRoaXMucGF5bG9hZC5pbWdVcmwgPSAnJztcclxuICAgIHRoaXMuZmlsZURhdGEgPSB1bmRlZmluZWQ7XHJcbiAgfSAgcmVkaXJlY3RUb1BheW1lbnQoKSB7XHJcbiAgICBpZighKHRoaXMuc2VsZWN0ZWRBY2FkZW1pY1llYXIgJiYgIHRoaXMuc2VsZWN0ZWRHcmFkZUlkKSl7XHJcbiAgICAgIHRoaXMuc25hY2tCYXIub3BlbignU2VsZWN0ZWQgR3JhZGUgYW5kIEFjYWRlbWljIFllYXIgZmlyc3QnLCdjbG9zZScsIHtkdXJhdGlvbjogMjAwMH0pXHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuc2VsZWN0ZWRLZXkgPSAnUGF5bWVudCdcclxuICB9XHJcblxyXG4gIGNvbnRpbnVlQWRtaXNzaW9uKCkge1xyXG4gICAgbGV0IHN0ZXBzID0gT2JqZWN0LmtleXModGhpcy5maWVsZERhdGEpO1xyXG4gICAgbGV0IGluZGV4ID0gc3RlcHMuaW5kZXhPZih0aGlzLnNlbGVjdGVkS2V5KTtcclxuXHJcbiAgICBpZih0aGlzLmRhdGE/LnNlY3Rpb25UeXBlID09PSAnYWRtaXNzaW9uRm9ybScgJiYgdGhpcy5zZWxlY3RlZEtleSA9PT0gJ0RvY3VtZW50JyAmJiAhKHRoaXMuc2VsZWN0ZWRBY2FkZW1pY1llYXIgJiYgIHRoaXMuc2VsZWN0ZWRHcmFkZUlkKSkge1xyXG4gICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oJ1NlbGVjdGVkIEdyYWRlIGFuZCBBY2FkZW1pYyBZZWFyIGZpcnN0JywgJ2Nsb3NlJywge2R1cmF0aW9uOiAyMDAwfSlcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmKHRoaXMuZGF0YT8uc2VjdGlvblR5cGUgPT09ICdhZG1pc3Npb25Gb3JtJylcclxuICAgICAgdGhpcy5zZWxlY3RlZEtleSA9IGluZGV4ID09PSBzdGVwcy5sZW5ndGggLSAxID8gJ0RvY3VtZW50JyA6IHRoaXMuc2VsZWN0ZWRLZXkgPT09ICdEb2N1bWVudCcgPyAnUGF5bWVudCcgOiBzdGVwc1tpbmRleCArIDFdO1xyXG4gICAgZWxzZVxyXG4gICAgICB0aGlzLnNlbGVjdGVkS2V5ID0gc3RlcHNbaW5kZXggKyAxXVxyXG4gIH1cclxuXHJcbiAgc3Vic2NyaXB0aW9uc0RhdGE6IGFueVtdID0gW11cclxuICB0ZXJtUGF5bWVudExpc3Q6IGFueVtdID0gW107XHJcblxyXG4gIGdldEZlZVN0cnVjdHVyZSgpIHtcclxuICAgIGlmKCF0aGlzLnNlbGVjdGVkQWNhZGVtaWNZZWFyIHx8ICF0aGlzLnNlbGVjdGVkR3JhZGVJZClcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIGxldCB5ZWFyID0gdGhpcy5zZWxlY3RlZEFjYWRlbWljWWVhci5zcGxpdChcIi1cIik7XHJcbiAgICBsZXQgcGF5bG9hZCA9IHtcclxuICAgICAgXCJidXNpbmVzc0lkXCI6IHRoaXMuYnVzaW5lc3NJZCxcclxuICAgICAgXCJzdGFydFllYXJcIjogTnVtYmVyKHllYXJbMF0pLFxyXG4gICAgICBcImVuZFllYXJcIjogTnVtYmVyKHllYXJbMV0pLFxyXG4gICAgICBcInBhZ2VOb1wiOiAwLFxyXG4gICAgICBcInNpemVcIjogMSxcclxuICAgICAgXCJncmFkZUlkc1wiOiBbdGhpcy5zZWxlY3RlZEdyYWRlSWRdLFxyXG4gICAgICBcInNlYXJjaFRleHRcIjogXCJcIlxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMucmVzdFNlcnZpY2UuZ2V0RmVlU3RydWN0dXJlKHBheWxvYWQpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5wYXlsb2FkLnN0dWRlbnRGZWVTdHJ1Y3R1cmUgPSByZXMuZGF0YS5kYXRhWzBdO1xyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnNEYXRhID0gIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5wYXlsb2FkLnN0dWRlbnRGZWVTdHJ1Y3R1cmUuc3Vic2NyaXB0aW9uUGxhbnMpKTtcclxuICAgICAgdGhpcy5wYXlsb2FkLnN0dWRlbnRGZWVTdHJ1Y3R1cmUuc3Vic2NyaXB0aW9uUGxhbnMgPSBbXTtcclxuICAgICAgdGhpcy50ZXJtUGF5bWVudExpc3QgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMucGF5bG9hZC5zdHVkZW50RmVlU3RydWN0dXJlPy50ZXJtUGF5bWVudExpc3QgfHwgJycpKTtcclxuICAgICAgdGhpcy5wYXlsb2FkLnN0dWRlbnRGZWVTdHJ1Y3R1cmUudGVybVBheW1lbnRMaXN0ID0gW107XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgaW5wdXRGaWVsZENoYW5nZShpdGVtOiBhbnksIGZpZWxkOiBhbnkpIHtcclxuICAgIGlmKGZpZWxkLmZpZWxkTGFiZWwgPT09ICdBY2FkZW1pYyBZZWFyJykge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkQWNhZGVtaWNZZWFyID0gaXRlbS5uYW1lO1xyXG4gICAgICB0aGlzLmdldEZlZVN0cnVjdHVyZSgpO1xyXG4gICAgfVxyXG4gICAgaWYoZmllbGQuZmllbGRMYWJlbCA9PT0gJ0dyYWRlJykge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkR3JhZGVJZCA9IGl0ZW0uaWQ7XHJcbiAgICAgIHRoaXMuZ2V0RmVlU3RydWN0dXJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBtYXN0ZXJEcm9wZG93blZhbHVlQ2hhbmdlKGl0ZW06IGFueSwgZmllbGQ6IGFueSkge1xyXG4gICAgaWYoZmllbGQuZmllbGRMYWJlbCA9PT0gJ1N0dWRlbnQgbGl2ZSB3aXRoJykge1xyXG4gICAgICB0aGlzLnN0dWRlbnRMaXZlV2l0aCA9IGl0ZW0udmFsdWVcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHVwbG9hZEJhY2tVcERvY3VtZW50KGV2OiBhbnkpIHtcclxuICAgIHRoaXMuYmFja3VwRG9jRmlsZSA9IGV2LnNyY0VsZW1lbnQuZmlsZXNbMF07XHJcbiAgfVxyXG5cclxuXHJcbiAgYXJyYW5nZVN1YnNjcmlwdGlvbkZvckFkbWlzc2lvbihzdWJzY3JpcHRpb25MaXN0OiBhbnlbXSkge1xyXG4gICAgbGV0IHJlc3BvbnNlOiBhbnkgPSB7fTtcclxuXHJcbiAgICBmb3IobGV0IHN1YnNjcmlwdGlvbiBvZiBzdWJzY3JpcHRpb25MaXN0KSB7XHJcbiAgICAgIGlmKCFyZXNwb25zZVtzdWJzY3JpcHRpb24uc3Vic2NyaXB0aW9uVHlwZV0pIHtcclxuICAgICAgICByZXNwb25zZVtzdWJzY3JpcHRpb24uc3Vic2NyaXB0aW9uVHlwZV0gPSBbXTtcclxuICAgICAgfVxyXG4gICAgICByZXNwb25zZVtzdWJzY3JpcHRpb24uc3Vic2NyaXB0aW9uVHlwZV0ucHVzaChzdWJzY3JpcHRpb24pO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiByZXNwb25zZTtcclxuICB9XHJcblxyXG4gIGFycmFuZ2VGZWVDb25maWcoZmVlQ29uZmlnTGlzdDogYW55W10pIHtcclxuICAgIGxldCByZXNwb25zZTogYW55ID0ge307XHJcblxyXG4gICAgZm9yKGxldCBjb25maWcgb2YgZmVlQ29uZmlnTGlzdCkge1xyXG4gICAgICBpZighcmVzcG9uc2VbY29uZmlnLmZlZVR5cGVdKVxyXG4gICAgICAgIHJlc3BvbnNlW2NvbmZpZy5mZWVUeXBlXSA9IFtdO1xyXG5cclxuICAgICAgcmVzcG9uc2VbY29uZmlnLmZlZVR5cGVdLnB1c2goY29uZmlnKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgfVxyXG59XHJcbiIsIjxzZWN0aW9uIHNpbXBvSG92ZXIgKGhvdmVyaW5nKT1cInNob3dFZGl0VGFicygkZXZlbnQpXCIgY2xhc3M9XCJ0b3RhbC1jb250YWluZXJcIj5cclxuICA8ZGl2IFtpZF09XCJkYXRhPy5pZFwiIFtzaW1wb0JhY2tncm91bmRdPVwic3R5bGVzPy5iYWNrZ3JvdW5kXCI+XHJcbiAgICA8ZGl2ICNtYWluQ29udGFpbmVyIGNsYXNzPVwicm93RmxleFwiIFtpZF09XCJkYXRhPy5pZFwiIFtzaW1wb092ZXJsYXldPVwic3R5bGVzPy5iYWNrZ3JvdW5kXCJcclxuICAgICAgW3NpbXBvQm9yZGVyXT1cInN0eWxlcz8uYm9yZGVyXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtYWluLXNlY3Rpb25cIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cInsnanVzdGlmeS1jb250ZW50LW1kLXN0YXJ0Jzogc3R5bGVzPy5sYXlvdXQ/LmFsaWduID09PSAnbGVmdCcgLCAnanVzdGlmeS1jb250ZW50LW1kLWVuZCc6IHN0eWxlcz8ubGF5b3V0Py5hbGlnbiA9PT0gJ3JpZ2h0J31cIlxyXG4gICAgICAgIFtpZF09XCJkYXRhPy5pZFwiIFtzaW1wb0xheW91dF09XCJzdHlsZXM/LmxheW91dFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJib2R5LXNlY3Rpb25cIj5cclxuICAgICAgICAgIDxkaXYgW3NpbXBvQW5pbWF0aW9uXT1cInN0eWxlcz8uYW5pbWF0aW9uXCIgW2lkXT1cImRhdGE/LmlkXCI+XHJcbiAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgPHNpbXBvLXRleHQtZWxlbWVudCBbdGV4dERhdGFdPVwiY29udGVudD8uaW5wdXRUZXh0Py5bMF0/LnZhbHVlXCIgW3RleHRMYWJlbF09XCJjb250ZW50Py5pbnB1dFRleHQ/LlswXT8ubGFiZWxcIj48L3NpbXBvLXRleHQtZWxlbWVudD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTIgZC1tZC1mbGV4IG10LTE1XCIgKm5nSWY9XCJkYXRhPy5hY3Rpb24/LmRpc3BsYXlcIiBbbmdDbGFzc109XCJbXHJcbiAgICAgICAgICAgICAgc3R5bGVzPy5sYXlvdXQ/LmFsaWduID09PSAnbGVmdCcgPyAnanVzdGlmeS1jb250ZW50LW1kLXN0YXJ0JyA6ICcnLFxyXG4gICAgICAgICAgICAgIHN0eWxlcz8ubGF5b3V0Py5hbGlnbiA9PT0gJ2NlbnRlcicgPyAnanVzdGlmeS1jb250ZW50LW1kLWNlbnRlcicgOiAnJyxcclxuICAgICAgICAgICAgICBzdHlsZXM/LmxheW91dD8uYWxpZ24gPT09ICdyaWdodCcgPyAnanVzdGlmeS1jb250ZW50LW1kLWVuZCcgOiAnJ1xyXG4gICAgICAgICAgICBdXCI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gIDwvZGl2PlxyXG5cclxuICA8c2VjdGlvbiBjbGFzcz1cIm1haW4tc2VjdGlvblwiPlxyXG4gICAgPGRpdiAqbmdJZj1cImZvcm1TdGF0dXMgIT0gJ1JFR0lTVEVSRUQnICYmIGZvcm1TdGF0dXMgIT0gJ0FETUlUVEVEJ1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwic3ViVGFic19zZWN0aW9uXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImxpc3RfdGFicyBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBrZXkgb2YgT2JqZWN0LmtleXMoZmllbGREYXRhKVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2luZ2xlX3RhYiBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJzZWxlY3RlZEtleSA9IGtleVwiXHJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic2VsZWN0ZWRLZXkgPT09IGtleSA/ICdzaW5nbGVfdGFiX2FjdGl2ZScgOiAnc2luZ2xlX3RhYidcIj5cclxuICAgICAgICAgICAgICB7e2tleSB8IHRpdGxlY2FzZX19XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2luZ2xlX3RhYiBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJzZWxlY3RlZEtleSA9ICdEb2N1bWVudCdcIiAqbmdJZj1cImRhdGE/LnNlY3Rpb25UeXBlID09PSAnYWRtaXNzaW9uRm9ybSdcIlxyXG4gICAgICAgICAgICBbbmdDbGFzc109XCJzZWxlY3RlZEtleSA9PT0gJ0RvY3VtZW50JyA/ICdzaW5nbGVfdGFiX2FjdGl2ZScgOiAnc2luZ2xlX3RhYidcIj5cclxuICAgICAgICAgICAgRG9jdW1lbnRcclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNpbmdsZV90YWIgY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwicmVkaXJlY3RUb1BheW1lbnQoKVwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwiZGF0YT8uc2VjdGlvblR5cGUgPT09ICdhZG1pc3Npb25Gb3JtJ1wiXHJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNlbGVjdGVkS2V5ID09PSAnUGF5bWVudCcgPyAnc2luZ2xlX3RhYl9hY3RpdmUnIDogJ3NpbmdsZV90YWInXCI+XHJcbiAgICAgICAgICAgIFBheW1lbnRcclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtYWluLWNvbnRlbnRcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBncm91cCBvZiBmaWVsZERhdGFbc2VsZWN0ZWRLZXldID8gT2JqZWN0LmtleXMoZmllbGREYXRhW3NlbGVjdGVkS2V5XSkgOiBbXTtsZXQgZ3JvdXBJbmRleCA9IGluZGV4XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImJvZHlcIiAqbmdJZj1cImdyb3VwICE9PSAnQmFja3VwIENvbnRhY3QnXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibGlzdF90YWJzIGJhY2tUb0xlYWRzIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAge3tncm91cH19XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZ3JvdXBJbmRleCA9PSAwICYmIE9iamVjdC5rZXlzKGZpZWxkRGF0YSlbMF0gPT09IHNlbGVjdGVkS2V5XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWFnZS1ib3hcIiAqbmdJZj1cIiFwYXlsb2FkLmltZ1VybFwiPlxyXG4gICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJkdW1teS1pbWFnZVwiIHNyYz1cIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvbWFzdGVyL2FkZC1pbWFnZS5zdmdcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImZpbGVJbnB1dC5jbGljaygpXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImltYWdlX2JveFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmY19icm93c2VfYnRuXCIgaWQ9XCJkaXNwbGF5X2Jyb3dzZV9idG5cIiAoY2xpY2spPVwiZmlsZUlucHV0LmNsaWNrKClcIj5DbGljayB0b1xyXG4gICAgICAgICAgICAgICAgICB1cGxvYWQ8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8aW5wdXQgc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiIGlkPVwidmVuZG9ySW1hZ2VcIiB0eXBlPVwiZmlsZVwiIG5hbWU9XCJteWZpbGVcIlxyXG4gICAgICAgICAgICAgIGFjY2VwdD1cImltYWdlL3gtcG5nLGltYWdlL2pwZWcsaW1hZ2UvanBnXCIgKGNoYW5nZSk9XCJ1cGRhdGVBZG1pc3Npb25JbWFnZSgkZXZlbnQpXCIgY2xhc3M9XCJwYy1idG5cIlxyXG4gICAgICAgICAgICAgIGlkPVwiYnJvd3NlX2NvbnRhY3RfaW1hZ2VcIiAjZmlsZUlucHV0IC8+XHJcblxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicGF5bG9hZC5pbWdVcmxcIiBjbGFzcz1cImFkZGVkSW1nXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInVwbG9hZGVkSW1nXCI+XHJcbiAgICAgICAgICAgICAgICA8aW1nICBhbHQ9XCJcIiBbc3JjXT1cImRzLmJ5cGFzc1NlY3VyaXR5VHJ1c3RVcmwocGF5bG9hZC5pbWdVcmwpXCI+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImltYWdlLWJ1dHRvbnNcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b25cIiAoY2xpY2spPVwiZmlsZUlucHV0LmNsaWNrKClcIj5cclxuICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hc3NldHMvaW1hZ2VzL2Jsb2dzL2NoYW5nZV9pbWFnZS5zdmdcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgQ2hhbmdlIEltYWdlXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24gZGVsZXRlLWNoYW5nZVwiIChjbGljayk9XCJkZWxldGVJbWcoKVwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRlbGV0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hc3NldHMvaW1hZ2VzL2Jsb2dzL2RlbGV0ZV9pbWFnZS5zdmdcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2PkRlbGV0ZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtdC0xXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNCBjb2wtMTIgbXQtMVwiICpuZ0Zvcj1cImxldCBpbmZvIG9mIGZpZWxkRGF0YVtzZWxlY3RlZEtleV1bZ3JvdXBdXCI+XHJcbiAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cIlwiIGNsYXNzPVwibGFiZWwtdGV4dFwiPnt7aW5mby5maWVsZExhYmVsfX08L2xhYmVsPiZuYnNwOyA8c3BhbiBzdHlsZT1cImNvbG9yOiByZWQ7XCIgKm5nSWY9XCJpbmZvLnJlcXVpcmVkXCI+Kjwvc3Bhbj4gPGJyPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpbnB1dERhdGE7IGNvbnRleHQ6IHtkYXRhOiBpbmZvfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYm9keVwiICpuZ0lmPVwiZmllbGREYXRhW3NlbGVjdGVkS2V5XS5oYXNPd25Qcm9wZXJ0eSgnQmFja3VwIENvbnRhY3QnKSAmJiBzdHVkZW50TGl2ZVdpdGggPT09ICdzaW5nbGUgcGFyZW50JyAmJiBncm91cEluZGV4ID09IDAgJiYgT2JqZWN0LmtleXMoZmllbGREYXRhKVswXSA9PT0gc2VsZWN0ZWRLZXlcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsaXN0X3RhYnMgYmFja1RvTGVhZHMgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICBCYWNrdXAgQ29udGFjdCAoT3B0aW9uYWwpXHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG10LTFcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cIm10Yi0xNSBjaGVja2JveC1sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIG5hbWU9XCJcIiBpZD1cIlwiIFsobmdNb2RlbCldPVwicGF5bG9hZC5wYXJlbnRBdXRob3JpemF0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgIEkgYXV0aG9yaXplIHRoZSBzY2hvb2wgdG8gcmVsZWFzZSB0aGUgY2hpbGQgb25seSB0byB0aGUgcGFyZW50IGxpc3RlZCBhYm92ZVxyXG4gICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTQgY29sLTEyIG10LTFcIiAqbmdGb3I9XCJsZXQgaW5mbyBvZiBmaWVsZERhdGFbc2VsZWN0ZWRLZXldWydCYWNrdXAgQ29udGFjdCddXCI+XHJcbiAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cIlwiIGNsYXNzPVwibGFiZWwtdGV4dFwiPnt7aW5mby5maWVsZExhYmVsfX08L2xhYmVsPiZuYnNwOyA8c3BhbiBzdHlsZT1cImNvbG9yOiByZWQ7XCJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiaW5mby5yZXF1aXJlZFwiPio8L3NwYW4+IDxicj5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaW5wdXREYXRhOyBjb250ZXh0OiB7ZGF0YTogaW5mb31cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNCBjb2wtMTIgbXQtMVwiPlxyXG4gICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJcIiBjbGFzcz1cImxhYmVsLXRleHRcIj5VcGxvYWQgU3VwcG9ydGluZyBEb2N1bWVudCAoT3B0aW9uYWwpPC9sYWJlbD5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtdGV4dCB1cGxvYWQtZmlsZVwiIChjbGljayk9XCJiYWNrVXBEb2NJbnB1dC5jbGljaygpXCI+XHJcbiAgICAgICAgICAgICAgICA8cD57e2JhY2t1cERvY0ZpbGUgPyAnRmlsZSBVcGxvYWRlZCcgOiAnVXBsb2FkIEZpbGUnfX08L3A+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWljb24+Y2xvdWRfdXBsb2FkPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8aW5wdXQgaWQ9XCJ2ZW5kb3JJbWFnZVwiIHR5cGU9XCJmaWxlXCIgbmFtZT1cIm15ZmlsZVwiIGhpZGRlblxyXG4gICAgICAgICAgICAgICAgYWNjZXB0PVwiLmRvYywuZG9jeCxhcHBsaWNhdGlvbi9tc3dvcmQsYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwuZG9jdW1lbnQsaW1hZ2UveC1wbmcsaW1hZ2UvanBlZyxpbWFnZS9qcGcsLnBkZiwgdmlkZW8vbXA0LHZpZGVvL3gtbWF0cm9za2EsdmlkZW8veC1tc3ZpZGVvLHZpZGVvL3F1aWNrdGltZVwiXHJcbiAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInVwbG9hZEJhY2tVcERvY3VtZW50KCRldmVudClcIiBjbGFzcz1cInBjLWJ0blwiXHJcbiAgICAgICAgICAgICAgICBpZD1cImJyb3dzZV9jb250YWN0X2ltYWdlXCIgI2JhY2tVcERvY0lucHV0IC8+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwYXltZW50LWRldGFpbHNcIiAqbmdJZj1cInNlbGVjdGVkS2V5ID09PSAnRG9jdW1lbnQnICYmIGRhdGE/LnNlY3Rpb25UeXBlID09PSAnYWRtaXNzaW9uRm9ybSdcIj5cclxuICAgICAgICAgIDxzaW1wby1kb2N1bWVudCBbZG9jdW1lbnRMaXN0XT1cImRvY3VtZW50TGlzdFwiPjwvc2ltcG8tZG9jdW1lbnQ+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInBheW1lbnQtZGV0YWlsc1wiICpuZ0lmPVwic2VsZWN0ZWRLZXkgPT09ICdQYXltZW50JyAmJiBkYXRhPy5zZWN0aW9uVHlwZSA9PT0gJ2FkbWlzc2lvbkZvcm0nXCI+XHJcbiAgICAgICAgICA8c2ltcG8tcGF5bWVudC1kZXRhaWxzIFthZG1pc3Npb25EYXRhXT1cInBheWxvYWRcIlxyXG4gICAgICAgICAgICBbc3Vic2NyaXB0aW9uc0RhdGFdPVwic3Vic2NyaXB0aW9uc0RhdGFcIiBbdGVybVBheW1lbnRMaXN0XT1cInRlcm1QYXltZW50TGlzdFwiPjwvc2ltcG8tcGF5bWVudC1kZXRhaWxzPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24tcGFyZW50XCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYnV0dG9uIG9mIGRhdGE/LmFjdGlvbj8uYnV0dG9uc1wiPlxyXG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvblwiIChjbGljayk9XCJzdWJtaXRGb3JtKClcIiBzaW1wb0J1dHRvbkRpcmVjdGl2ZSBbaWRdPVwiZGF0YT8uaWQrYnV0dG9uLmlkXCJcclxuICAgICAgICAgICAgW2J1dHRvblN0eWxlXT1cImJ1dHRvbi5zdHlsZXNcIiAqbmdJZj1cIihkYXRhPy5zZWN0aW9uVHlwZSA9PT0gJ2FkbWlzc2lvbkZvcm0nICYmIHNlbGVjdGVkS2V5ID09ICdQYXltZW50JykgfHxcclxuICAgICAgICAgICAgKGRhdGE/LnNlY3Rpb25UeXBlID09PSAncmVnaXN0cmF0aW9uRm9ybScgJiZcclxuICAgICAgICAgICAgICAoT2JqZWN0LmtleXMoZmllbGREYXRhKVtPYmplY3Qua2V5cyhmaWVsZERhdGEpLmxlbmd0aCAtIDFdID09IHNlbGVjdGVkS2V5KSlcIlxyXG4gICAgICAgICAgICBbY29sb3JdPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiPnt7YnV0dG9uPy5jb250ZW50Py5sYWJlbH19PC9idXR0b24+XHJcblxyXG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvblwiIChjbGljayk9XCJjb250aW51ZUFkbWlzc2lvbigpXCIgc2ltcG9CdXR0b25EaXJlY3RpdmUgW2lkXT1cImRhdGE/LmlkK2J1dHRvbi5pZFwiXHJcbiAgICAgICAgICAgIFtidXR0b25TdHlsZV09XCJidXR0b24uc3R5bGVzXCIgKm5nSWY9XCJzZWxlY3RlZEtleSAhPSAnUGF5bWVudCcgJiYgZGF0YT8uc2VjdGlvblR5cGUgPT09ICdhZG1pc3Npb25Gb3JtJ1wiXHJcbiAgICAgICAgICAgIFtjb2xvcl09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCI+Q29udGludWU8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uXCIgKGNsaWNrKT1cImNvbnRpbnVlQWRtaXNzaW9uKClcIiBzaW1wb0J1dHRvbkRpcmVjdGl2ZSBbaWRdPVwiZGF0YT8uaWQrYnV0dG9uLmlkXCJcclxuICAgICAgICAgICAgW2J1dHRvblN0eWxlXT1cImJ1dHRvbi5zdHlsZXNcIlxyXG4gICAgICAgICAgICAqbmdJZj1cImRhdGE/LnNlY3Rpb25UeXBlID09PSAncmVnaXN0cmF0aW9uRm9ybScgJiYgKE9iamVjdC5rZXlzKGZpZWxkRGF0YSlbT2JqZWN0LmtleXMoZmllbGREYXRhKS5sZW5ndGggLSAxXSAhPSBzZWxlY3RlZEtleSlcIlxyXG4gICAgICAgICAgICBbY29sb3JdPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiPkNvbnRpbnVlPC9idXR0b24+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImVtcHR5VGV4dFwiICpuZ0lmPVwiZm9ybVN0YXR1cyA9PSAnUkVHSVNURVJFRCcgfHwgZm9ybVN0YXR1cyA9PSAnQURNSVRURUQnXCI+XHJcbiAgICAgIDxpbWcgW3NyY109XCJjb250ZW50Py5pbWFnZT8udXJsXCIgYWx0PVwiXCIgKm5nSWY9XCJjb250ZW50Py5pbWFnZT8uc2hvd0ltYWdlXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJoZWFkaW5nLWxhcmdlXCIgW2lubmVySHRtbF09XCJjb250ZW50Py5pbnB1dFRleHQ/LlsxXT8udmFsdWVcIj48L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvc2VjdGlvbj5cclxuXHJcbiAgPG5nLXRlbXBsYXRlICNpbnB1dERhdGEgbGV0LWZpZWxkPVwiZGF0YVwiPlxyXG4gICAgPGRpdiAqbmdJZj1cImZpZWxkLmRhdGFUeXBlID09ICdJTUFHRSdcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImltYWdlLWJveFwiPlxyXG4gICAgICAgIDxpbWcgY2xhc3M9XCJkdW1teS1pbWFnZVwiIHNyYz1cIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvbWFzdGVyL2FkZC1pbWFnZS5zdmdcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cImZpbGVJbnB1dC5jbGljaygpXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmNfYnJvd3NlX2J0blwiIGlkPVwiZGlzcGxheV9icm93c2VfYnRuXCIgKGNsaWNrKT1cImZpbGVJbnB1dC5jbGljaygpXCI+Q2xpY2sgdG9cclxuICAgICAgICAgICAgdXBsb2FkPC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGlucHV0IHN0eWxlPVwiZGlzcGxheTogbm9uZTtcIiBpZD1cInZlbmRvckltYWdlXCIgdHlwZT1cImZpbGVcIiBuYW1lPVwibXlmaWxlXCIgYWNjZXB0PVwiaW1hZ2UveC1wbmcsaW1hZ2UvanBlZyxpbWFnZS9qcGdcIlxyXG4gICAgICAgIChjaGFuZ2UpPVwidXBkYXRlQWRtaXNzaW9uSW1hZ2UoJGV2ZW50KVwiIGNsYXNzPVwicGMtYnRuXCIgaWQ9XCJicm93c2VfY29udGFjdF9pbWFnZVwiICNmaWxlSW5wdXQgLz5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiAqbmdJZj1cImZpZWxkLmRhdGFUeXBlID09PSAnVEVYVCdcIj5cclxuICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJpbnB1dC10ZXh0XCIgcGxhY2Vob2xkZXI9XCJlbnRlciB2YWx1ZVwiIFsobmdNb2RlbCldPVwiZmllbGQuZmllbGRWYWx1ZVwiPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiZmllbGQuZGF0YVR5cGUgPT09ICdOVU1CRVInXCI+XHJcbiAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgY2xhc3M9XCJpbnB1dC10ZXh0XCIgcGxhY2Vob2xkZXI9XCJlbnRlciB2YWx1ZVwiIFsobmdNb2RlbCldPVwiZmllbGQuZmllbGRWYWx1ZVwiPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiZmllbGQuZGF0YVR5cGUgPT09ICdNT05FWSdcIj5cclxuICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJpbnB1dC10ZXh0XCIgcGxhY2Vob2xkZXI9XCJlbnRlciB2YWx1ZVwiIFsobmdNb2RlbCldPVwiZmllbGQuZmllbGRWYWx1ZVwiPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiZmllbGQuZGF0YVR5cGUgPT09ICdEQVRFJ1wiPlxyXG4gICAgICA8aW5wdXQgdHlwZT1cImRhdGVcIiBjbGFzcz1cImlucHV0LXRleHRcIiBbKG5nTW9kZWwpXT1cImZpZWxkLmZpZWxkVmFsdWVcIj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiAqbmdJZj1cImZpZWxkLmRhdGFUeXBlID09PSAnRFJPUERPV04nXCIgY2xhc3M9XCJhZG1pc3Npb25cIj5cclxuICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiaW5wdXQtdGV4dFwiIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XHJcbiAgICAgICAgPG1hdC1zZWxlY3QgY2xhc3M9XCJpbnB1dFN0eWxlXCIgcGxhY2Vob2xkZXI9XCItLVNlbGVjdC0tXCIgWyhuZ01vZGVsKV09XCJmaWVsZC5maWVsZFZhbHVlXCIgW211bHRpcGxlXT1cImZpZWxkLm11bHRpcGxlU2VsZWN0aW9uXCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGZpZWxkPy52YWx1ZT8ubGVuZ3RoIHx8IDApID4gMFwiPlxyXG4gICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBmaWVsZC52YWx1ZVwiIFt2YWx1ZV09XCJpdGVtPy52YWx1ZVwiIChjbGljayk9XCJtYXN0ZXJEcm9wZG93blZhbHVlQ2hhbmdlKGl0ZW0sIGZpZWxkKVwiPnt7aXRlbS5sYWJlbH19PC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGZpZWxkPy52YWx1ZT8ubGVuZ3RoIHx8IDApID09IDBcIj5cclxuICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGl0ZW0gb2YgZmllbGQuc291cmNlRGF0YVtmaWVsZC5kYXRhU291cmNlVHlwZV1cIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJpbnB1dEZpZWxkQ2hhbmdlKGl0ZW0sIGZpZWxkKVwiIFt2YWx1ZV09XCJpdGVtPy5uYW1lXCI+e3tpdGVtLm5hbWV9fTwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvbWF0LXNlbGVjdD5cclxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiAqbmdJZj1cImZpZWxkLmRhdGFUeXBlID09PSAnQ0hFQ0tCT1gnXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIoZmllbGQ/LnZhbHVlPy5sZW5ndGggfHwgMCkgPiAwXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgbWItNVwiICpuZ0Zvcj1cImxldCBkYXRhIG9mIGZpZWxkLnZhbHVlXCI+XHJcbiAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgdHlwZT1cImNoZWNrYm94XCIgdmFsdWU9XCJcIiBpZD1cImZsZXhDaGVja0NoZWNrZWRcIiBbKG5nTW9kZWwpXT1cImRhdGEuY2hlY2tlZFwiPlxyXG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiIGZvcj1cImZsZXhDaGVja0NoZWNrZWRcIj5cclxuICAgICAgICAgICAge3tkYXRhLmxhYmVsfX1cclxuICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihmaWVsZD8udmFsdWU/Lmxlbmd0aCB8fCAwKSA9PSAwXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgbWItNVwiICpuZ0Zvcj1cImxldCBkYXRhIG9mIGZpZWxkLnNvdXJjZURhdGFbZmllbGQuZGF0YVNvdXJjZVR5cGVdXCI+XHJcbiAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgdHlwZT1cImNoZWNrYm94XCIgdmFsdWU9XCJcIiBpZD1cImZsZXhDaGVja0NoZWNrZWRcIiBbKG5nTW9kZWwpXT1cImRhdGEuY2hlY2tlZFwiPlxyXG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiIGZvcj1cImZsZXhDaGVja0NoZWNrZWRcIj5cclxuICAgICAgICAgICAge3tkYXRhLm5hbWV9fVxyXG4gICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG5cclxuXHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN0eWxlcz8uZGV2aWRlcj8uZGlzcGxheVwiPlxyXG4gICAgPHNpbXBvLXN2Zy1kaXZpZGVyIFtkaXZpZGVyVHlwZV09XCJzdHlsZXM/LmRldmlkZXI/LmRldmlkZXJUeXBlXCJcclxuICAgICAgW2NvbG9yXT1cIm5leHRDb21wb25lbnRDb2xvcj8uY29sb3JcIj48L3NpbXBvLXN2Zy1kaXZpZGVyPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG4gIDxkaXYgW25nQ2xhc3NdPVwieydob3Zlcl9lZmZlY3QnOiBlZGl0fVwiICpuZ0lmPVwic2hvd0VkaXRvcnNcIj5cclxuICAgIDxzaW1wby1ob3Zlci1lbGVtZW50cyBbZGF0YV09XCJkYXRhXCIgW2luZGV4XT1cImluZGV4XCIgW2VkaXRPcHRpb25zXT1cImVkaXRcIj48L3NpbXBvLWhvdmVyLWVsZW1lbnRzPlxyXG4gIDwvZGl2PlxyXG48L3NlY3Rpb24+XHJcbiJdfQ==
@@ -19,7 +19,6 @@ export class UspVideoSectionComponent extends BaseSection {
19
19
  this._eventService = _eventService;
20
20
  }
21
21
  ngOnInit() {
22
- console.log(this.data);
23
22
  this.style = this.data?.styles;
24
23
  }
25
24
  get stylesLayout() {
@@ -65,4 +64,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImpor
65
64
  type: HostListener,
66
65
  args: ["window: resize", ["$event"]]
67
66
  }] } });
68
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNwLXZpZGVvLXNlY3Rpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9zZWN0aW9ucy91c3AtdmlkZW8tc2VjdGlvbi91c3AtdmlkZW8tc2VjdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL3NlY3Rpb25zL3VzcC12aWRlby1zZWN0aW9uL3VzcC12aWRlby1zZWN0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUV2RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFHdkYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMERBQTBELENBQUM7QUFDbEcsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sc0VBQXNFLENBQUM7QUFDbkgsT0FBTyxXQUFXLE1BQU0sZ0JBQWdCLENBQUM7QUFDekMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQzFGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDOzs7O0FBbUI1RSxNQUFNLE9BQU8sd0JBQXlCLFNBQVEsV0FBVztJQU12RCxZQUNVLGFBQTRCO1FBRXBDLEtBQUssRUFBRSxDQUFDO1FBRkEsa0JBQWEsR0FBYixhQUFhLENBQWU7SUFHdEMsQ0FBQztJQUdELFFBQVE7UUFDTixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUN0QixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDO0lBQ2pDLENBQUM7SUFFRCxJQUFJLFlBQVk7UUFDZCxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBaUIsQ0FBQztJQUNsRCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksTUFBTSxDQUFDLFVBQVUsSUFBSSxHQUFHO1lBQzFCLE9BQU07UUFFUixJQUFJLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqRCxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzNELENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNWLENBQUM7SUFHRCxhQUFhO1FBQ1gsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDO0lBQ3ZDLENBQUM7OEdBbkNVLHdCQUF3QjtrR0FBeEIsd0JBQXdCLHdQQ2pDckMscy9EQW1DQSxzN0JEaEJJLFlBQVksOFZBRVosc0JBQXNCLHlKQUN0QiwyQkFBMkIscUhBQzNCLGNBQWMsZ0ZBQ2Qsa0JBQWtCLHlGQUNsQixtQkFBbUIsMEdBQ25CLHNCQUFzQix1RkFDdEIsMEJBQTBCLDJHQUMxQixtQkFBbUI7OzJGQUtWLHdCQUF3QjtrQkFsQnBDLFNBQVM7K0JBQ0UseUJBQXlCLGNBQ3ZCLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLHNCQUFzQjt3QkFDdEIsc0JBQXNCO3dCQUN0QiwyQkFBMkI7d0JBQzNCLGNBQWM7d0JBQ2Qsa0JBQWtCO3dCQUNsQixtQkFBbUI7d0JBQ25CLHNCQUFzQjt3QkFDdEIsMEJBQTBCO3dCQUMxQixtQkFBbUI7cUJBQ3BCO2tGQUtRLElBQUk7c0JBQVosS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkE2Qk4sYUFBYTtzQkFEWixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVXNwU3R5bGVNb2RlbCwgVXNwVmlkZW9Nb2RlbCB9IGZyb20gJy4vdXNwLXZpZGVvLXNlY3Rpb24ubW9kZWwnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBTaW1wb0NvbnRhaW5lckFsaWdtZW50IH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2NvbnRhaW5lci1hbGlnbm1lbnQuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgTGF5T3V0TW9kZWwgfSBmcm9tICcuLi8uLi9zdHlsZXMvc3R5bGUubW9kZWwnO1xyXG5pbXBvcnQgeyBFdmVudHNTZXJ2aWNlIH0gZnJvbSAnLi8uLi8uLi9zZXJ2aWNlcy9ldmVudHMuc2VydmljZSc7XHJcbmltcG9ydCB7IEhvdmVyRWxlbWVudHNDb21wb25lbnQgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy9ob3Zlci1lbGVtZW50cy9ob3Zlci1lbGVtZW50cy5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgRGVsZXRlSG92ZXJFbGVtZW50Q29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvZGVsZXRlLWhvdmVyLWVsZW1lbnQvZGVsZXRlLWhvdmVyLWVsZW1lbnQuY29tcG9uZW50XCI7XHJcbmltcG9ydCBCYXNlU2VjdGlvbiBmcm9tICcuLi9CYXNlU2VjdGlvbic7XHJcbmltcG9ydCB7IEhvdmVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2hvdmVyLWVsZW1lbnQtZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQW5pbWF0aW9uRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2FuaW1hdGlvbi1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBCYWNrZ3JvdW5kRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2JhY2tncm91bmQtZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgU3BhY2luZ0Fyb3VuZERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9zcGFjaW5nLWFyb3VuZC5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBTcGFjaW5nSG9yaXpvbnRhbERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9zcGFjaW5nLWhvcml6b250YWwuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQ29udGVudEZpdERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9jb250ZW50LWZpdC1kaXJlY3RpdmUnO1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NpbXBvLXVzcC12aWRlby1zZWN0aW9uJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIFNpbXBvQ29udGFpbmVyQWxpZ21lbnQsXHJcbiAgICBIb3ZlckVsZW1lbnRzQ29tcG9uZW50LFxyXG4gICAgRGVsZXRlSG92ZXJFbGVtZW50Q29tcG9uZW50LFxyXG4gICAgSG92ZXJEaXJlY3RpdmUsXHJcbiAgICBBbmltYXRpb25EaXJlY3RpdmUsXHJcbiAgICBCYWNrZ3JvdW5kRGlyZWN0aXZlLFxyXG4gICAgU3BhY2luZ0Fyb3VuZERpcmVjdGl2ZSxcclxuICAgIFNwYWNpbmdIb3Jpem9udGFsRGlyZWN0aXZlLFxyXG4gICAgQ29udGVudEZpdERpcmVjdGl2ZVxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3VzcC12aWRlby1zZWN0aW9uLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vdXNwLXZpZGVvLXNlY3Rpb24uY29tcG9uZW50LmNzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIFVzcFZpZGVvU2VjdGlvbkNvbXBvbmVudCBleHRlbmRzIEJhc2VTZWN0aW9uIGltcGxlbWVudHMgT25Jbml0IHtcclxuICBASW5wdXQoKSBkYXRhPzogVXNwVmlkZW9Nb2RlbDtcclxuICBASW5wdXQoKSBpbmRleD86IG51bWJlcjtcclxuICBASW5wdXQoKSBlZGl0PzogYm9vbGVhbjtcclxuICBASW5wdXQoKSBkZWxldGU/OiBib29sZWFuO1xyXG4gIHN0eWxlPzogVXNwU3R5bGVNb2RlbDtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX2V2ZW50U2VydmljZTogRXZlbnRzU2VydmljZVxyXG4gICkge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcblxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIGNvbnNvbGUubG9nKHRoaXMuZGF0YSlcclxuICAgIHRoaXMuc3R5bGUgPSB0aGlzLmRhdGE/LnN0eWxlcztcclxuICB9XHJcblxyXG4gIGdldCBzdHlsZXNMYXlvdXQoKSB7XHJcbiAgICByZXR1cm4geyAuLi50aGlzLnN0eWxlPy5sYXlvdXQgfSBhcyBMYXlPdXRNb2RlbDtcclxuICB9XHJcblxyXG4gIGVkaXRTZWN0aW9uKCkge1xyXG4gICAgaWYgKHdpbmRvdy5pbm5lcldpZHRoIDw9IDQ3NSlcclxuICAgICAgcmV0dXJuXHJcblxyXG4gICAgdGhpcy5fZXZlbnRTZXJ2aWNlLnRvZ2dsZUVkaXRvckV2ZW50LmVtaXQoZmFsc2UpO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuX2V2ZW50U2VydmljZS5lZGl0U2VjdGlvbi5lbWl0KHsgZGF0YTogdGhpcy5kYXRhIH0pO1xyXG4gICAgfSwgMTAwKTtcclxuICB9XHJcbiAgc2NyZWVuV2lkdGg6IGFueVxyXG4gIEBIb3N0TGlzdGVuZXIoXCJ3aW5kb3c6IHJlc2l6ZVwiLCBbXCIkZXZlbnRcIl0pXHJcbiAgZ2V0U2NyZWVuU2l6ZSgpIHtcclxuICAgIHRoaXMuc2NyZWVuV2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aDtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cIm1haW4tY29udGFpbmVyXCIgIHNpbXBvSG92ZXIgKGhvdmVyaW5nKT1cInNob3dFZGl0VGFicygkZXZlbnQpXCI+XHJcbiAgPGRpdiBbc3BhY2luZ0Fyb3VuZF09XCJzdHlsZXNMYXlvdXRcIj5cclxuICAgIDxkaXYgW3NpbXBvQmFja2dyb3VuZF09XCJzdHlsZT8uYmFja2dyb3VuZFwiIFtzaW1wb0FuaW1hdGlvbl09XCJzdHlsZT8uYW5pbWF0aW9uXCIgW2lkXT1cImRhdGE/LmlkXCIgW3NwYWNpbmdIb3Jpem9udGFsXT1cInN0eWxlc0xheW91dFwiIFtzaW1wb0xheW91dF09XCJzdHlsZT8ubGF5b3V0XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXJcIiAqbmdGb3I9XCJsZXQgZWxlIG9mIGRhdGE/LmNvbnRlbnQ/LmlucHV0VGV4dFwiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwieyd0ZXh0LWNlbnRlcic6IGRhdGE/LnN0eWxlcz8ubGF5b3V0Py5hbGlnbiA9PSAnY2VudGVyJ31cIj5cclxuICAgICAgICB7e2VsZS52YWx1ZX19XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiYm9keS1jb250YWluZXIgZC1mbGV4IGctNCB3LTEwMFwiIFtzaW1wb0FuaW1hdGlvbl09XCJzdHlsZT8uYW5pbWF0aW9uXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImxlZnQgdy00MFwiXHJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7J3ctMTAwJzohZGF0YT8uY29udGVudD8udmlkZW9MaW5rPy5kaXNwbGF5ICwgJ2NlbnRlci1hbGlnbm1lbnQnOiAoZGF0YT8uc3R5bGVzPy5sYXlvdXQ/LmFsaWduID09ICdjZW50ZXInICYmIHNjcmVlbldpZHRoID4gNDc1KSB9XCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBlbGUgb2YgZGF0YT8uY29udGVudD8ubGlzdEl0ZW0/LmRhdGE7IGxldCBpID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtY29udGFpbmVyIHctMTAwXCIgW2NsYXNzLmFjdGl2ZS1ib3JkZXJdPVwiaSA9PSAxXCI+XHJcbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJoZWFkLXRleHRcIiBbY2xhc3MuYWN0aXZlLXRleHRdPVwiaSA9PSAxXCI+e3tlbGUuaW5wdXRUZXh0WzBdLnZhbHVlfX08L3A+XHJcbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJzdWItdGV4dFwiIFtjbGFzcy5hY3RpdmUtdGV4dF09XCJpID09IDFcIj57e2VsZS5pbnB1dFRleHRbMV0udmFsdWV9fTwvcD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicmlnaHQgdy02MCBkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZCBhbGlnbi1pdGVtcy1jZW50ZXJcIiAqbmdJZj1cImRhdGE/LmNvbnRlbnQ/LnZpZGVvTGluaz8uZGlzcGxheVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInZpZGVvLXNlY3Rpb25cIj5cclxuICAgICAgICAgICAgPHZpZGVvIGNvbnRyb2xzIGNsYXNzPVwidy0xMDAgYnItMjAgaC01MFwiPlxyXG4gICAgICAgICAgICAgIDxzb3VyY2UgW3NyY109XCJkYXRhPy5jb250ZW50Py52aWRlb0xpbms/LnVybFwiPlxyXG4gICAgICAgICAgICA8L3ZpZGVvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgW25nQ2xhc3NdPVwieydob3Zlcl9lZmZlY3QnOiBlZGl0fVwiICpuZ0lmPVwic2hvd0VkaXRvcnNcIj5cclxuICAgIDxzaW1wby1ob3Zlci1lbGVtZW50cyBbZGF0YV09XCJkYXRhXCIgW2luZGV4XT1cImluZGV4XCIgW2VkaXRPcHRpb25zXT1cImVkaXRcIj48L3NpbXBvLWhvdmVyLWVsZW1lbnRzPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgKm5nSWY9XCJzaG93RGVsZXRlXCIgW25nQ2xhc3NdPVwieydob3Zlcl9lZmZlY3QnOiBkZWxldGV9XCI+XHJcbiAgICA8c2ltcG8tZGVsZXRlLWhvdmVyLWVsZW1lbnQgW2RhdGFdPVwiZGF0YVwiIFtpbmRleF09XCJpbmRleFwiPjwvc2ltcG8tZGVsZXRlLWhvdmVyLWVsZW1lbnQ+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNwLXZpZGVvLXNlY3Rpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9zZWN0aW9ucy91c3AtdmlkZW8tc2VjdGlvbi91c3AtdmlkZW8tc2VjdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL3NlY3Rpb25zL3VzcC12aWRlby1zZWN0aW9uL3VzcC12aWRlby1zZWN0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUV2RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFHdkYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMERBQTBELENBQUM7QUFDbEcsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sc0VBQXNFLENBQUM7QUFDbkgsT0FBTyxXQUFXLE1BQU0sZ0JBQWdCLENBQUM7QUFDekMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQzFGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDOzs7O0FBbUI1RSxNQUFNLE9BQU8sd0JBQXlCLFNBQVEsV0FBVztJQU12RCxZQUNVLGFBQTRCO1FBRXBDLEtBQUssRUFBRSxDQUFDO1FBRkEsa0JBQWEsR0FBYixhQUFhLENBQWU7SUFHdEMsQ0FBQztJQUdELFFBQVE7UUFDTixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDO0lBQ2pDLENBQUM7SUFFRCxJQUFJLFlBQVk7UUFDZCxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBaUIsQ0FBQztJQUNsRCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksTUFBTSxDQUFDLFVBQVUsSUFBSSxHQUFHO1lBQzFCLE9BQU07UUFFUixJQUFJLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqRCxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzNELENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNWLENBQUM7SUFHRCxhQUFhO1FBQ1gsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDO0lBQ3ZDLENBQUM7OEdBbENVLHdCQUF3QjtrR0FBeEIsd0JBQXdCLHdQQ2pDckMscy9EQW1DQSxzN0JEaEJJLFlBQVksOFZBRVosc0JBQXNCLHlKQUN0QiwyQkFBMkIscUhBQzNCLGNBQWMsZ0ZBQ2Qsa0JBQWtCLHlGQUNsQixtQkFBbUIsMEdBQ25CLHNCQUFzQix1RkFDdEIsMEJBQTBCLDJHQUMxQixtQkFBbUI7OzJGQUtWLHdCQUF3QjtrQkFsQnBDLFNBQVM7K0JBQ0UseUJBQXlCLGNBQ3ZCLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLHNCQUFzQjt3QkFDdEIsc0JBQXNCO3dCQUN0QiwyQkFBMkI7d0JBQzNCLGNBQWM7d0JBQ2Qsa0JBQWtCO3dCQUNsQixtQkFBbUI7d0JBQ25CLHNCQUFzQjt3QkFDdEIsMEJBQTBCO3dCQUMxQixtQkFBbUI7cUJBQ3BCO2tGQUtRLElBQUk7c0JBQVosS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkE0Qk4sYUFBYTtzQkFEWixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVXNwU3R5bGVNb2RlbCwgVXNwVmlkZW9Nb2RlbCB9IGZyb20gJy4vdXNwLXZpZGVvLXNlY3Rpb24ubW9kZWwnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBTaW1wb0NvbnRhaW5lckFsaWdtZW50IH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2NvbnRhaW5lci1hbGlnbm1lbnQuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgTGF5T3V0TW9kZWwgfSBmcm9tICcuLi8uLi9zdHlsZXMvc3R5bGUubW9kZWwnO1xyXG5pbXBvcnQgeyBFdmVudHNTZXJ2aWNlIH0gZnJvbSAnLi8uLi8uLi9zZXJ2aWNlcy9ldmVudHMuc2VydmljZSc7XHJcbmltcG9ydCB7IEhvdmVyRWxlbWVudHNDb21wb25lbnQgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy9ob3Zlci1lbGVtZW50cy9ob3Zlci1lbGVtZW50cy5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgRGVsZXRlSG92ZXJFbGVtZW50Q29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvZGVsZXRlLWhvdmVyLWVsZW1lbnQvZGVsZXRlLWhvdmVyLWVsZW1lbnQuY29tcG9uZW50XCI7XHJcbmltcG9ydCBCYXNlU2VjdGlvbiBmcm9tICcuLi9CYXNlU2VjdGlvbic7XHJcbmltcG9ydCB7IEhvdmVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2hvdmVyLWVsZW1lbnQtZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQW5pbWF0aW9uRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2FuaW1hdGlvbi1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBCYWNrZ3JvdW5kRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2JhY2tncm91bmQtZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgU3BhY2luZ0Fyb3VuZERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9zcGFjaW5nLWFyb3VuZC5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBTcGFjaW5nSG9yaXpvbnRhbERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9zcGFjaW5nLWhvcml6b250YWwuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQ29udGVudEZpdERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9jb250ZW50LWZpdC1kaXJlY3RpdmUnO1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NpbXBvLXVzcC12aWRlby1zZWN0aW9uJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIFNpbXBvQ29udGFpbmVyQWxpZ21lbnQsXHJcbiAgICBIb3ZlckVsZW1lbnRzQ29tcG9uZW50LFxyXG4gICAgRGVsZXRlSG92ZXJFbGVtZW50Q29tcG9uZW50LFxyXG4gICAgSG92ZXJEaXJlY3RpdmUsXHJcbiAgICBBbmltYXRpb25EaXJlY3RpdmUsXHJcbiAgICBCYWNrZ3JvdW5kRGlyZWN0aXZlLFxyXG4gICAgU3BhY2luZ0Fyb3VuZERpcmVjdGl2ZSxcclxuICAgIFNwYWNpbmdIb3Jpem9udGFsRGlyZWN0aXZlLFxyXG4gICAgQ29udGVudEZpdERpcmVjdGl2ZVxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3VzcC12aWRlby1zZWN0aW9uLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vdXNwLXZpZGVvLXNlY3Rpb24uY29tcG9uZW50LmNzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIFVzcFZpZGVvU2VjdGlvbkNvbXBvbmVudCBleHRlbmRzIEJhc2VTZWN0aW9uIGltcGxlbWVudHMgT25Jbml0IHtcclxuICBASW5wdXQoKSBkYXRhPzogVXNwVmlkZW9Nb2RlbDtcclxuICBASW5wdXQoKSBpbmRleD86IG51bWJlcjtcclxuICBASW5wdXQoKSBlZGl0PzogYm9vbGVhbjtcclxuICBASW5wdXQoKSBkZWxldGU/OiBib29sZWFuO1xyXG4gIHN0eWxlPzogVXNwU3R5bGVNb2RlbDtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX2V2ZW50U2VydmljZTogRXZlbnRzU2VydmljZVxyXG4gICkge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcblxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuc3R5bGUgPSB0aGlzLmRhdGE/LnN0eWxlcztcclxuICB9XHJcblxyXG4gIGdldCBzdHlsZXNMYXlvdXQoKSB7XHJcbiAgICByZXR1cm4geyAuLi50aGlzLnN0eWxlPy5sYXlvdXQgfSBhcyBMYXlPdXRNb2RlbDtcclxuICB9XHJcblxyXG4gIGVkaXRTZWN0aW9uKCkge1xyXG4gICAgaWYgKHdpbmRvdy5pbm5lcldpZHRoIDw9IDQ3NSlcclxuICAgICAgcmV0dXJuXHJcblxyXG4gICAgdGhpcy5fZXZlbnRTZXJ2aWNlLnRvZ2dsZUVkaXRvckV2ZW50LmVtaXQoZmFsc2UpO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuX2V2ZW50U2VydmljZS5lZGl0U2VjdGlvbi5lbWl0KHsgZGF0YTogdGhpcy5kYXRhIH0pO1xyXG4gICAgfSwgMTAwKTtcclxuICB9XHJcbiAgc2NyZWVuV2lkdGg6IGFueVxyXG4gIEBIb3N0TGlzdGVuZXIoXCJ3aW5kb3c6IHJlc2l6ZVwiLCBbXCIkZXZlbnRcIl0pXHJcbiAgZ2V0U2NyZWVuU2l6ZSgpIHtcclxuICAgIHRoaXMuc2NyZWVuV2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aDtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cIm1haW4tY29udGFpbmVyXCIgIHNpbXBvSG92ZXIgKGhvdmVyaW5nKT1cInNob3dFZGl0VGFicygkZXZlbnQpXCI+XHJcbiAgPGRpdiBbc3BhY2luZ0Fyb3VuZF09XCJzdHlsZXNMYXlvdXRcIj5cclxuICAgIDxkaXYgW3NpbXBvQmFja2dyb3VuZF09XCJzdHlsZT8uYmFja2dyb3VuZFwiIFtzaW1wb0FuaW1hdGlvbl09XCJzdHlsZT8uYW5pbWF0aW9uXCIgW2lkXT1cImRhdGE/LmlkXCIgW3NwYWNpbmdIb3Jpem9udGFsXT1cInN0eWxlc0xheW91dFwiIFtzaW1wb0xheW91dF09XCJzdHlsZT8ubGF5b3V0XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXJcIiAqbmdGb3I9XCJsZXQgZWxlIG9mIGRhdGE/LmNvbnRlbnQ/LmlucHV0VGV4dFwiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwieyd0ZXh0LWNlbnRlcic6IGRhdGE/LnN0eWxlcz8ubGF5b3V0Py5hbGlnbiA9PSAnY2VudGVyJ31cIj5cclxuICAgICAgICB7e2VsZS52YWx1ZX19XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiYm9keS1jb250YWluZXIgZC1mbGV4IGctNCB3LTEwMFwiIFtzaW1wb0FuaW1hdGlvbl09XCJzdHlsZT8uYW5pbWF0aW9uXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImxlZnQgdy00MFwiXHJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7J3ctMTAwJzohZGF0YT8uY29udGVudD8udmlkZW9MaW5rPy5kaXNwbGF5ICwgJ2NlbnRlci1hbGlnbm1lbnQnOiAoZGF0YT8uc3R5bGVzPy5sYXlvdXQ/LmFsaWduID09ICdjZW50ZXInICYmIHNjcmVlbldpZHRoID4gNDc1KSB9XCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBlbGUgb2YgZGF0YT8uY29udGVudD8ubGlzdEl0ZW0/LmRhdGE7IGxldCBpID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtY29udGFpbmVyIHctMTAwXCIgW2NsYXNzLmFjdGl2ZS1ib3JkZXJdPVwiaSA9PSAxXCI+XHJcbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJoZWFkLXRleHRcIiBbY2xhc3MuYWN0aXZlLXRleHRdPVwiaSA9PSAxXCI+e3tlbGUuaW5wdXRUZXh0WzBdLnZhbHVlfX08L3A+XHJcbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJzdWItdGV4dFwiIFtjbGFzcy5hY3RpdmUtdGV4dF09XCJpID09IDFcIj57e2VsZS5pbnB1dFRleHRbMV0udmFsdWV9fTwvcD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicmlnaHQgdy02MCBkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZCBhbGlnbi1pdGVtcy1jZW50ZXJcIiAqbmdJZj1cImRhdGE/LmNvbnRlbnQ/LnZpZGVvTGluaz8uZGlzcGxheVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInZpZGVvLXNlY3Rpb25cIj5cclxuICAgICAgICAgICAgPHZpZGVvIGNvbnRyb2xzIGNsYXNzPVwidy0xMDAgYnItMjAgaC01MFwiPlxyXG4gICAgICAgICAgICAgIDxzb3VyY2UgW3NyY109XCJkYXRhPy5jb250ZW50Py52aWRlb0xpbms/LnVybFwiPlxyXG4gICAgICAgICAgICA8L3ZpZGVvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgW25nQ2xhc3NdPVwieydob3Zlcl9lZmZlY3QnOiBlZGl0fVwiICpuZ0lmPVwic2hvd0VkaXRvcnNcIj5cclxuICAgIDxzaW1wby1ob3Zlci1lbGVtZW50cyBbZGF0YV09XCJkYXRhXCIgW2luZGV4XT1cImluZGV4XCIgW2VkaXRPcHRpb25zXT1cImVkaXRcIj48L3NpbXBvLWhvdmVyLWVsZW1lbnRzPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgKm5nSWY9XCJzaG93RGVsZXRlXCIgW25nQ2xhc3NdPVwieydob3Zlcl9lZmZlY3QnOiBkZWxldGV9XCI+XHJcbiAgICA8c2ltcG8tZGVsZXRlLWhvdmVyLWVsZW1lbnQgW2RhdGFdPVwiZGF0YVwiIFtpbmRleF09XCJpbmRleFwiPjwvc2ltcG8tZGVsZXRlLWhvdmVyLWVsZW1lbnQ+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
@@ -9,9 +9,9 @@ export class RestService {
9
9
  constructor(http, eventService) {
10
10
  this.http = http;
11
11
  this.eventService = eventService;
12
- this.BASE_URL = "https://dev-api.simpo.ai/";
13
- this.ECOMMERCE_URL = "https://dev-ecommerce.simpo.ai/";
14
- this.CMIS_URL = "https://api-cmis.tejsoft.com/";
12
+ this.BASE_URL = "https://api.simpo.ai/";
13
+ this.ECOMMERCE_URL = "https://prod-ecommerce.simpo.ai/";
14
+ this.CMIS_URL = "https://dev-api.simpo.ai/";
15
15
  this.environmentTypeSubscriber = null;
16
16
  this.environmentTypeSubscriber = this.eventService.environmentType.subscribe((response) => {
17
17
  if (response == "DEV") {
@@ -312,4 +312,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImpor
312
312
  providedIn: 'root',
313
313
  }]
314
314
  }], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.EventsService }] });
315
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9zZXJ2aWNlcy9yZXN0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUN0RCxPQUFPLEVBQUUsR0FBRyxFQUF3QyxNQUFNLE1BQU0sQ0FBQztBQUNqRSxPQUFPLEVBQUUsUUFBUSxFQUFpQixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFJaEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJDQUEyQyxDQUFDOzs7O0FBSzVFLE1BQU0sT0FBTyxXQUFXO0lBT3BCLFlBQ3FCLElBQWdCLEVBQ2hCLFlBQTJCO1FBRDNCLFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsaUJBQVksR0FBWixZQUFZLENBQWU7UUFQeEMsYUFBUSxHQUFXLDJCQUEyQixDQUFDO1FBQy9DLGtCQUFhLEdBQVcsaUNBQWlDLENBQUM7UUFDMUQsYUFBUSxHQUFXLCtCQUErQixDQUFDO1FBQ25ELDhCQUF5QixHQUF3QixJQUFJLENBQUM7UUFNM0QsSUFBSSxDQUFDLHlCQUF5QixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsRUFBQyxFQUFFO1lBQ3BGLElBQUksUUFBUSxJQUFJLEtBQUssRUFBRSxDQUFDO2dCQUNwQixJQUFJLENBQUMsUUFBUSxHQUFHLDJCQUEyQixDQUFDO2dCQUM1QyxJQUFJLENBQUMsYUFBYSxHQUFHLGlDQUFpQyxDQUFDO1lBQzNELENBQUM7aUJBQ0ksSUFBSSxRQUFRLElBQUksT0FBTyxFQUFFLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxhQUFhLEdBQUcsbUNBQW1DLENBQUM7Z0JBQ3pELElBQUksQ0FBQyxRQUFRLEdBQUcsNkJBQTZCLENBQUM7WUFDbEQs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QUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzFDLENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDOzhHQXpYUSxXQUFXO2tIQUFYLFdBQVcsY0FGUixNQUFNOzsyRkFFVCxXQUFXO2tCQUh2QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgT25EZXN0cm95IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgbWFwLCBPYnNlcnZhYmxlLCBTdWJzY3JpYmVyLCBTdWJzY3JpcHRpb24gfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBDYXRlZ29yeSwgRXZlbnRzU2VydmljZSwgUHJvZHVjdCwgQ29sbGVjdGlvbiB9IGZyb20gXCIuLi8uLi9wdWJsaWMtYXBpXCI7XHJcbmltcG9ydCB7IFJldmlldyB9IGZyb20gXCIuLi9lY29tbWVyY2Uvc3R5bGVzL3Jldmlldy5tb2RhbFwiO1xyXG5pbXBvcnQgeyBEZXZpY2VJbmZvIH0gZnJvbSBcIi4uL2Vjb21tZXJjZS9zdHlsZXMvdXNlci5tb2RhbFwiO1xyXG5pbXBvcnQgeyBQaW5Db2RlTG9jYXRpb25JbnRlciB9IGZyb20gXCIuLi9lY29tbWVyY2Uvc3R5bGVzL1BpbmNvZGVMb2NhdGlvbkludGVyLm1vZGVsXCI7XHJcbmltcG9ydCB7IFBpbmNvZGVMb2NhdGlvbiB9IGZyb20gXCIuLi9lY29tbWVyY2Uvc3R5bGVzL1BpbmNvZGVMb2NhdGlvbi5tb2RlbFwiO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmVzdFNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG5cclxuICAgIHByaXZhdGUgQkFTRV9VUkw6IHN0cmluZyA9IFwiaHR0cHM6Ly9kZXYtYXBpLnNpbXBvLmFpL1wiO1xyXG4gICAgcHJpdmF0ZSBFQ09NTUVSQ0VfVVJMOiBzdHJpbmcgPSBcImh0dHBzOi8vZGV2LWVjb21tZXJjZS5zaW1wby5haS9cIjtcclxuICAgIHByaXZhdGUgQ01JU19VUkw6IHN0cmluZyA9IFwiaHR0cHM6Ly9hcGktY21pcy50ZWpzb2Z0LmNvbS9cIjtcclxuICAgIHByaXZhdGUgZW52aXJvbm1lbnRUeXBlU3Vic2NyaWJlcjogU3Vic2NyaXB0aW9uIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZXZlbnRTZXJ2aWNlOiBFdmVudHNTZXJ2aWNlXHJcbiAgICApIHtcclxuICAgICAgIHRoaXMuZW52aXJvbm1lbnRUeXBlU3Vic2NyaWJlciA9IHRoaXMuZXZlbnRTZXJ2aWNlLmVudmlyb25tZW50VHlwZS5zdWJzY3JpYmUoKHJlc3BvbnNlKT0+IHtcclxuICAgICAgICAgICAgaWYgKHJlc3BvbnNlID09IFwiREVWXCIpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuQkFTRV9VUkwgPSBcImh0dHBzOi8vZGV2LWFwaS5zaW1wby5haS9cIjtcclxuICAgICAgICAgICAgICAgIHRoaXMuRUNPTU1FUkNFX1VSTCA9IFwiaHR0cHM6Ly9kZXYtZWNvbW1lcmNlLnNpbXBvLmFpL1wiO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHJlc3BvbnNlID09IFwiU1RBR0VcIikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5FQ09NTUVSQ0VfVVJMID0gXCJodHRwczovL3N0YWdlLWVjb21tZXJjZS5zaW1wby5haS9cIjtcclxuICAgICAgICAgICAgICAgIHRoaXMuQkFTRV9VUkwgPSBcImh0dHBzOi8vc3RhdGUtYXBpLnNpbXBvLmFpL1wiO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5CQVNFX1VSTCA9IFwiaHR0cHM6Ly9hcGktY21pcy50ZWpzb2Z0LmNvbS9cIjtcclxuICAgICAgICAgICAgICAgIHRoaXMuRUNPTU1FUkNFX1VSTCA9IFwiaHR0cHM6Ly9wcm9kLWVjb21tZXJjZS5zaW1wby5haS9cIjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5lbnZpcm9ubWVudFR5cGVTdWJzY3JpYmVyKVxyXG4gICAgICAgICAgICB0aGlzLmVudmlyb25tZW50VHlwZVN1YnNjcmliZXI/LnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0RmVhdHVyZWRQcm9kdWN0KGNvbGxlY3Rpb25JZDogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbCkge1xyXG4gICAgICAgIGxldCBzdWJJbmR1c3RyeUlkOiBzdHJpbmcgfCBudWxsID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJzdWJJbmR1c3RyeUlkXCIpO1xyXG4gICAgICAgIGlmICghc3ViSW5kdXN0cnlJZClcclxuICAgICAgICAgICAgc3ViSW5kdXN0cnlJZCA9IFwiXCI7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2UvcHJvZHVjdC9jb2xsZWN0aW9uL2lkP2NvbGxlY3Rpb25JZD0ke2NvbGxlY3Rpb25JZCB8fCAnJ30mc3ViSW5kdXN0cnlJZD0ke3N1YkluZHVzdHJ5SWQgfHwgJyd9JmlzRW5kVXNlcj10cnVlYCkucGlwZShtYXAoKHJlc3BvbnNlOiBhbnkpPT4gcmVzcG9uc2UuZGF0YT8ubWFwKChwcm9kdWN0OiBhbnkpPT4gbmV3IFByb2R1Y3QocHJvZHVjdCkpKSk7XHJcbiAgICB9XHJcbiAgICBnZXRDYXRlZ29yaWVzQnlDb2xsZWN0aW9uSWQoY29sbGVjdGlvbklkOiBzdHJpbmcpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS9pbnZlbnRvcnkvY2F0ZWdvcnkvY29sbGVjdGlvbklkP2NvbGxlY3Rpb25JZD0ke2NvbGxlY3Rpb25JZH1gKS5waXBlKG1hcCgocmVzcG9uc2U6IGFueSk9PiByZXNwb25zZS5kYXRhPy5tYXAoKGNhdGVnb3J5OiBhbnkpPT4gbmV3IENhdGVnb3J5KGNhdGVnb3J5KSkpKTtcclxuICAgIH1cclxuICAgIGdldFByb2R1Y3REZXRhaWxzKHByb2R1Y3RJZDogc3RyaW5nIHwgbnVsbCA9IG51bGwpIHtcclxuICAgICAgICBjb25zdCBwYXlsb2FkOiBhbnkgPSB7XHJcbiAgICAgICAgICAgIHBhZ2VObzogMCxcclxuICAgICAgICAgICAgcGFnZVNpemU6IDEsXHJcbiAgICAgICAgICAgIGl0ZW1JZDogcHJvZHVjdElkLFxyXG4gICAgICAgICAgICBzdWJJbmR1c3RyeUlkOiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcInN1YkluZHVzdHJ5SWRcIiksXHJcbiAgICAgICAgICAgIHVzZXJJZDogbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJwZXJJZFwiKSA/PyBudWxsLFxyXG4gICAgICAgICAgICByZXF1ZXN0OiBcIlVTRVJcIlxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnB1dCh0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS9wcm9kdWN0L2l0ZW0vc2VhcmNoYCwgcGF5bG9hZCkucGlwZShtYXAoKHJlc3BvbnNlOiBhbnkpPT4gcmVzcG9uc2UuZGF0YS5kYXRhLm1hcCgocHJvZHVjdDogYW55KT0+IG5ldyBQcm9kdWN0KHByb2R1Y3QpKSkpO1xyXG4gICAgfVxyXG4gICAgZ2V0Q29sbGVjdGlvbkJ5SWRzKGNvbGxlY3Rpb25JZHM6IHN0cmluZ1tdKSB7XHJcbiAgICAgICAgY29uc3QgcGF5bG9hZCA9IHtcclxuICAgICAgICAgICAgaWRzOiBjb2xsZWN0aW9uSWRzXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucHV0KHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL2ludmVudG9yeS9jb2xsZWN0aW9uL2xpc3QvYWxsYCwgcGF5bG9hZCkucGlwZShtYXAoKHJlc3BvbnNlOiBhbnkpPT4gcmVzcG9uc2UuZGF0YT8ubWFwKChjb2xsZWN0aW9uOiBhbnkpPT4gbmV3IENvbGxlY3Rpb24oY29sbGVjdGlvbikpKSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0QWxsQ2F0ZWdvcmllcygpIHtcclxuXHJcbiAgICAgICAgY29uc3QgYnVzaW5lc3NJZDogc3RyaW5nID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJiSWRcIikgPz8gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJidXNpbmVzc0lkXCIpID8/IFwiXCI7XHJcbiAgICAgICAgY29uc3Qgc3ViSW5kdXN0cnlJZDogc3RyaW5nID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJzdWJJbmR1c3RyeUlkXCIpID8/IFwiXCI7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2UvaW52ZW50b3J5L2ZlYXR1cmVkP2J1c2luZXNzSWQ9JHtidXNpbmVzc0lkfSZzdWJJZD0ke3N1YkluZHVzdHJ5SWR9YCkucGlwZShtYXAoKHJlc3BvbnNlOiBhbnkpPT4gcmVzcG9uc2UuZGF0YT8ubWFwKChjYXRlZ29yeTogYW55KT0+IG5ldyBDYXRlZ29yeShjYXRlZ29yeSkpKSk7XHJcbiAgICB9XHJcbiAgICBnZXRBbGxDb2xsZWN0aW9ucygpIHtcclxuICAgICAgICBjb25zdCBwYXlsb2FkOiBhbnkgPSB7XHJcbiAgICAgICAgICAgIHBhZ2VObzogMCxcclxuICAgICAgICAgICAgcGFnZVNpemU6IDEwLFxyXG4gICAgICAgICAgICByZXF1ZXN0OiBcIlVTRVJcIixcclxuICAgICAgICAgICAgYnVzaW5lc3NJZDogbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJiSWRcIikgPz8gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJidXNpbmVzc0lkXCIpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucHV0KHRoaXMuQkFTRV9VUkwgKyAnZWNvbW1lcmNlL2ludmVudG9yeS9nZXQvY29sbGVjdGlvbicsIHBheWxvYWQpLnBpcGUobWFwKChyZXNwb25zZTogYW55KT0+IHJlc3BvbnNlLmRhdGEuZGF0YT8ubWFwKChjb2xsZWN0aW9uOiBhbnkpPT4gbmV3IENvbGxlY3Rpb24oY29sbGVjdGlvbikpKSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0RmlsdGVyZWRQcm9kdWN0KGNvbGxlY3Rpb25JZHM6IHN0cmluZ1tdLCBjYXRlZ29yeUlkczogc3RyaW5nW10sIHNlYXJjaFRleHQ6IHN0cmluZywgbWluUHJpY2U6IG51bWJlciwgbWF4UHJpY2U6IG51bWJlciwgc29ydEJ5OiBzdHJpbmcsIHBhZ2VObzogbnVtYmVyLCBzaXplOiBudW1iZXIpIHtcclxuICAgICAgICBjb25zdCBwYXlsb2FkOiBhbnkgPSB7XHJcbiAgICAgICAgICAgIFwiYnVzaW5lc3NJZFwiOiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImJJZFwiKSA/PyBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImJ1c2luZXNzSWRcIiksXHJcbiAgICAgICAgICAgIFwic3ViSW5kdXN0cnlJZFwiOiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcInN1YkluZHVzdHJ5SWRcIiksXHJcbiAgICAgICAgICAgIFwiY29sbGVjdGlvbklkXCI6IGNvbGxlY3Rpb25JZHMsXHJcbiAgICAgICAgICAgIFwiY2F0ZWdvcnlJZFwiOiBjYXRlZ29yeUlkcyxcclxuICAgICAgICAgICAgXCJzZWFyY2hUZXh0XCI6IHNlYXJjaFRleHQsXHJcbiAgICAgICAgICAgIFwibWluUHJpY2VcIjogbWluUHJpY2UgPz8gMCxcclxuICAgICAgICAgICAgXCJtYXhQcmljZVwiOiBtYXhQcmljZSA/PyAwLFxyXG4gICAgICAgICAgICBcInNvcnRCeVwiOiBzb3J0QnksXHJcbiAgICAgICAgICAgIFwicGFnZU5vXCI6IHBhZ2VObyxcclxuICAgICAgICAgICAgXCJwYWdlU2l6ZVwiOiBzaXplLFxyXG4gICAgICAgICAgICBcInVzZXJJZFwiOiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcInBlcklkXCIpID8/IG51bGwsXHJcbiAgICAgICAgICAgIHJlcXVlc3Q6IFwiVVNFUlwiXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucHV0KHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL3Byb2R1Y3QvaXRlbS9zZWFyY2hgLCBwYXlsb2FkKS5waXBlKG1hcCgocmVzcG9uc2U6IGFueSk9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICBjb3VudDogcmVzcG9uc2UuZGF0YS5jb3VudCxcclxuICAgICAgICAgICAgICAgIGRhdGE6IHJlc3BvbnNlLmRhdGEuZGF0YT8ubWFwKChwcm9kdWN0OiBhbnkpPT4gbmV3IFByb2R1Y3QocHJvZHVjdCkpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KSk7XHJcbiAgICB9XHJcbiAgICBnZXRQcm9kdWN0QnlDYXRlZ29yeUlkKGNhdGVnb3J5SWQ6IHN0cmluZykge1xyXG4gICAgICAgIGNvbnN0IHBheWxvYWQ6IGFueSA9IHtcclxuICAgICAgICAgICAgXCJidXNpbmVzc0lkXCI6IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiYklkXCIpID8/IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiYnVzaW5lc3NJZFwiKSxcclxuICAgICAgICAgICAgXCJjYXRlZ29yeUlkXCI6IFtjYXRlZ29yeUlkXSxcclxuICAgICAgICAgICAgXCJzdWJJbmR1c3RyeUlkXCI6IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwic3ViSW5kdXN0cnlJZFwiKSxcclxuICAgICAgICAgICAgXCJwYWdlTm9cIjogMCxcclxuICAgICAgICAgICAgXCJwYWdlU2l6ZVwiOiAxMCxcclxuICAgICAgICAgICAgXCJ1c2VySWRcIjogbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJwZXJJZFwiKSA/PyBudWxsLFxyXG4gICAgICAgICAgICByZXF1ZXN0OiBcIlVTRVJcIlxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnB1dCh0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS9wcm9kdWN0L2l0ZW0vc2VhcmNoYCwgcGF5bG9hZCkucGlwZShtYXAoKHJlc3BvbnNlOiBhbnkpPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgY291bnQ6IHJlc3BvbnNlLmNvdW50LFxyXG4gICAgICAgICAgICAgICAgZGF0YTogcmVzcG9uc2UuZGF0YS5kYXRhPy5tYXAoKHByb2R1Y3Q6IGFueSk9PiBuZXcgUHJvZHVjdChwcm9kdWN0KSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pKTtcclxuICAgIH1cclxuICAgIGdldFByb2R1Y3RCeUNvbGxlY3Rpb25JZChjb2xsZWN0aW9uSWQ6IHN0cmluZykge1xyXG4gICAgICAgIGNvbnN0IHBheWxvYWQ6IGFueSA9IHtcclxuICAgICAgICAgICAgXCJidXNpbmVzc0lkXCI6IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiYklkXCIpID8/IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiYnVzaW5lc3NJZFwiKSxcclxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uSWRcIjogW2NvbGxlY3Rpb25JZF0sXHJcbiAgICAgICAgICAgIFwic3ViSW5kdXN0cnlJZFwiOiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcInN1YkluZHVzdHJ5SWRcIiksXHJcbiAgICAgICAgICAgIFwicGFnZU5vXCI6IDAsXHJcbiAgICAgICAgICAgIFwicGFnZVNpemVcIjogMTAsXHJcbiAgICAgICAgICAgIFwidXNlcklkXCI6IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwicGVySWRcIikgPz8gbnVsbCxcclxuICAgICAgICAgICAgcmVxdWVzdDogXCJVU0VSXCJcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQodGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2UvcHJvZHVjdC9pdGVtL3NlYXJjaGAsIHBheWxvYWQpLnBpcGUobWFwKChyZXNwb25zZTogYW55KT0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIGNvdW50OiByZXNwb25zZS5jb3VudCxcclxuICAgICAgICAgICAgICAgIGRhdGE6IHJlc3BvbnNlLmRhdGEuZGF0YT8ubWFwKChwcm9kdWN0OiBhbnkpPT4gbmV3IFByb2R1Y3QocHJvZHVjdCkpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KSk7XHJcbiAgICB9XHJcblxyXG4gICAgYWRkUmV2aWV3KHBheWxvYWQ6IFJldmlldykge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS91c2VyL2FkZC9yZXZpZXdgLCBwYXlsb2FkKTtcclxuICAgIH1cclxuICAgIGdldEFsbFJldmlld3MocHJvZHVjdElkOiBzdHJpbmcpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnB1dCh0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS91c2VyL2ZpbHRlci9yZXZpZXdzP3Byb2R1Y3RJZD0ke3Byb2R1Y3RJZH1gLCBudWxsKTtcclxuICAgIH1cclxuXHJcbiAgICBnZW5lcmF0ZU9UUChtb2JpbGU6IHN0cmluZywgY291bnRyeUNvZGU6IHN0cmluZykge1xyXG4gICAgICAgIGNvbnN0IGJ1c2luZXNzSWQ6IHN0cmluZyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiYklkXCIpID8/IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiYnVzaW5lc3NJZFwiKSA/PyBcIlwiO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS91c2VyL290cC90cmlnZ2VyP21vYmlsZT0ke21vYmlsZX0mY291bnRyeUNvZGU9JHtjb3VudHJ5Q29kZX0mYnVzaW5lc3NJZD0ke2J1c2luZXNzSWR9YCwgbnVsbCk7XHJcbiAgICB9XHJcbiAgICB2ZXJpZnlPVFAobW9iaWxlOiBzdHJpbmcsIG90cDogc3RyaW5nLCBkZXZpY2VJbmZvOiBEZXZpY2VJbmZvKSB7XHJcbiAgICAgICAgY29uc3QgYnVzaW5lc3NJZDogc3RyaW5nID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJiSWRcIikgPz8gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJidXNpbmVzc0lkXCIpID8/IFwiXCI7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQodGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2UvdXNlci9hdXRoZW50aWNhdGU/bW9iaWxlPSR7bW9iaWxlfSZvdHA9JHtvdHB9JmJ1c2luZXNzSWQ9JHtidXNpbmVzc0lkfWAsIGRldmljZUluZm8pO1xyXG4gICAgfVxyXG4gICAgcmVzZW5kT1RQKG1vYmlsZTogc3RyaW5nLCBjb3VudHJ5Q29kZTogc3RyaW5nKSB7XHJcbiAgICAgICAgY29uc3QgYnVzaW5lc3NJZDogc3RyaW5nID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJiSWRcIikgPz8gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJidXNpbmVzc0lkXCIpID8/IFwiXCI7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL3VzZXIvcmVzZW5kP21vYmlsZT0ke21vYmlsZX0mY291bnRyeUNvZGU9JHtjb3VudHJ5Q29kZX0mYnVzaW5lc3NJZD0ke2J1c2luZXNzSWR9YCwgbnVsbCk7XHJcbiAgICB9XHJcbiAgICBhcHBsaWNhYmxlRGlzY291bnRMaXN0KGNhcnRJZDogc3RyaW5nKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2Uvb3JkZXIvZGlzY291bnQtY291cG9uLyR7Y2FydElkfS9hcHBsaWNhYmlsaXR5L2xpc3RgKTtcclxuICAgIH1cclxuICAgIHJlbW92ZURpc2NvdW50RnJvbUNhcnQoY2FydElkOiBzdHJpbmcpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnB1dCh0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS9vcmRlci9kaXNjb3VudC1jb3Vwb24vJHtjYXJ0SWR9L2NhcnQvcmVtb3ZlYCwgbnVsbCk7XHJcbiAgICB9XHJcblxyXG4gICAgYWRkSXRlbVRvREIodXNlckNhcnQ6IGFueSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS9vcmRlci9jYXJ0YCwgdXNlckNhcnQpO1xyXG4gICAgfVxyXG4gICAgZ2V0VXNlckl0ZW1zKHVzZXJJZDogc3RyaW5nLCBjYXJ0VHlwZTogJ0NBUlQnIHwgJ1dJU0hMSVNUJykge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL29yZGVyL2NhcnQ/dXNlcklkPSR7dXNlcklkfSZjYXJ0VHlwZT0ke2NhcnRUeXBlfWApO1xyXG4gICAgfVxyXG4gICAgcGxhY2VPcmRlcihjYXJ0SWQ6IHN0cmluZykge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS9vcmRlci9vcmRlcj9jYXJ0SWQ9JHtjYXJ0SWR9YCwgbnVsbCk7XHJcbiAgICB9XHJcbiAgICBnZXRVc2VySW5mbyh1c2VySWQ6IHN0cmluZykge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucHV0KHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL3VzZXIvZ2V0L3VzZXI/dXNlcklkPSR7dXNlcklkfWAsIG51bGwpO1xyXG4gICAgfVxyXG4gICAgYWRkVXNlckFkZHJlc3ModXNlcjogYW55KSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQodGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2UvdXNlci91cGRhdGUvdXNlcmAsIHVzZXIpO1xyXG4gICAgfVxyXG4gICAgdXBkYXRlUHJvZmlsZShwYXlsb2FkOiBhbnkpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnB1dCh0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS91c2VyL3VwZGF0ZS91c2VyYCwgcGF5bG9hZCk7XHJcbiAgICB9XHJcbiAgICBnZXRVc2VyT3JkZXJzKHBheWxvYWQ6IGFueSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucHV0KHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL29yZGVyL3VzZXIvb3JkZXJgLCBwYXlsb2FkKTtcclxuICAgIH1cclxuICAgIHRvZ2dsZUl0ZW1DYXJ0VG9GYXYoKSB7XHJcblxyXG4gICAgfVxyXG4gICAgbW92ZVdpc2hsaXN0VG9DYXJ0KCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL3VwZGF0ZS9jYXJ0YCk7XHJcbiAgICB9XHJcbiAgICBnZXRVc2VyV2lzaGxpc3QodXNlcklkOiBzdHJpbmcpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS9vcmRlci9jYXJ0P3VzZXJJZD0ke3VzZXJJZH0mY2FydFR5cGU9V0lTSExJU1RgKVxyXG4gICAgfVxyXG4gICAgbW92ZUl0ZW1Ub0NhcnQodXNlcklkOiBzdHJpbmcsIHBheWxvYWQ6IGFueSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucHV0KHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL29yZGVyL3VwZGF0ZS9jYXJ0P3VzZXJJZD0ke3VzZXJJZH1gLCBwYXlsb2FkKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBQYXltZW50XHJcbiAgICBjcmVhdGVQYXltZW50VG9rZW4ocGF5bG9hZDogYW55KSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHRoaXMuRUNPTU1FUkNFX1VSTCArIGBwYXltZW50L29yZGVyYCwgcGF5bG9hZCk7XHJcbiAgICB9XHJcbiAgICByZWZ1bmRQYXltZW50KG9yZGVySWQ6IHN0cmluZywgcGF5bG9hZDogYW55KSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL3BheW1lbnQvcmVmdW5kL2Jhbms/b3JkZXJJZD0ke29yZGVySWR9YCwgcGF5bG9hZCk7XHJcbiAgICB9XHJcbiAgICBjaGVja1BheW1lbnRTdGF0dXMocGF5bG9hZDogYW55KSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHRoaXMuRUNPTU1FUkNFX1VSTCArIGBwYXltZW50L3N0YXR1c2AsIHBheWxvYWQpO1xyXG4gICAgfVxyXG4gICAgZ2V0UmVjZW50Vmlld1Byb2R1Y3QodXNlcklkOiBzdHJpbmcpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2UvdXNlci9yZWNlbnRWaWV3P3VzZXJJZD0ke3VzZXJJZH1gLCBudWxsKS5waXBlKG1hcCgocmVzcG9uc2U6IGFueSk9PiByZXNwb25zZS5kYXRhPy5tYXAoKHByb2R1Y3Q6IGFueSk9PiBuZXcgUHJvZHVjdChwcm9kdWN0KSkpKTs7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0TG9jYXRpb25CeVBpbkNvZGUocGluY29kZTogc3RyaW5nKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYGh0dHBzOi8vYXBpLnBvc3RhbHBpbmNvZGUuaW4vcGluY29kZS8ke3BpbmNvZGV9YCkucGlwZShtYXAoKGxvY2F0aW9uczogYW55KT0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBQaW5jb2RlTG9jYXRpb24obG9jYXRpb25zKTtcclxuICAgICAgICB9KSlcclxuICAgIH1cclxuICAgIGdldExvY2F0aW9uQnlQaW5Db2RlSW50ZXJuYXRpb25hbChwaW5jb2RlOiBzdHJpbmcpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldChgaHR0cHM6Ly9hcGkuemlwcG9wb3RhbS51cy9pbi8ke3BpbmNvZGV9YCk7XHJcbiAgICB9XHJcblxyXG4gICAgc2VuZFNpZ251cE9UUChwYXlsb2FkOiBhbnkpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2UvdXNlci9zaWdudXAvb3RwL3RyaWdnZXJgLCBwYXlsb2FkKTtcclxuICAgIH1cclxuXHJcbiAgICB2ZXJpZnlTaWdudXBPVFAocGF5bG9hZDogYW55KSB7XHJcbiAgICAgICAgY29uc3QgYnVzaW5lc3NJZDogc3RyaW5nID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJiSWRcIikgPz8gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJidXNpbmVzc0lkXCIpID8/ICcnO1xyXG4gICAgICAgIC8vIHBheWxvYWRbXCJidXNpbmVzc0lkXCJdID0gYnVzaW5lc3NJZDtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnB1dCh0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS91c2VyL2F1dGhlbnRpY2F0ZS9zaWdudXBgLCBwYXlsb2FkKTtcclxuICAgIH1cclxuXHJcbiAgICBzaWduaW5QYXNzd29yZChwYXNzRGF0YTogYW55KXtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnB1dCh0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS91c2VyL2F1dGhlbnRpY2F0ZS9sb2dpbmAsIHBhc3NEYXRhKTtcclxuICAgIH1cclxuXHJcbiAgICBjcmVhdGVBcHBvaW50bWVudChkYXRhOmFueSl7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHRoaXMuQkFTRV9VUkwgKyBgY3JtL2FwcG9pbnRtZW50L2FkZGAsIGRhdGEpXHJcbiAgICB9XHJcblxyXG4gICAgZ2V0QWxsU2VydmljZXMoYnVzaW5lc3NJZDphbnksc2l6ZTpudW1iZXIscGFnZTpudW1iZXIpe1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxyXG4gICAgICAgICAgICB0aGlzLkJBU0VfVVJMICsgYGNybS9hcHBvaW50bWVudC9jb25maWcvc2VydmljZT9idXNpbmVzc0lkPSR7YnVzaW5lc3NJZH0mc2l6ZT0ke3NpemV9JnBhZ2U9JHtwYWdlfWBcclxuICAgICAgICApXHJcbiAgICB9XHJcblxyXG4gICAgZ2V0QWxsTG9jYXRpb24oYnVzaW5lc3NJZDphbnksc2l6ZTpudW1iZXIscGFnZTpudW1iZXIpe1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxyXG4gICAgICAgICAgICB0aGlzLkJBU0VfVVJMICsgYGNybS9hcHBvaW50bWVudC9jb25maWcvbG9jYXRpb24/YnVzaW5lc3NJZD0ke2J1c2luZXNzSWR9JnNpemU9JHtzaXplfSZwYWdlPSR7cGFnZX1gXHJcbiAgICAgICAgKVxyXG4gICAgfVxyXG5cclxuICAgIGdldEFsbFN0YWZmKGJ1c2luZXNzSWQ6YW55LHNpemU6bnVtYmVyLHBhZ2U6bnVtYmVyLCBsb2NhdGlvbklkOiBzdHJpbmcsIHNlcnZpY2VJZDogc3RyaW5nKXtcclxuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXHJcbiAgICAgICAgICB0aGlzLkJBU0VfVVJMICsgYGNybS9hcHBvaW50bWVudC9jb25maWcvbG9jYXRpb24/YnVzaW5lc3NJZD0ke2J1c2luZXNzSWR9JnNpemU9JHtzaXplfSZwYWdlPSR7cGFnZX0mbG9jYXRpb25JZD0ke2xvY2F0aW9uSWR9JnNlcnZpY2VJZD0ke3NlcnZpY2VJZH1gXHJcbiAgICAgIClcclxuICAgIH1cclxuXHJcblxyXG4gICAgZ2V0QWxsVGltZVNsb3RzKGxvY2F0aW9uSWQ6YW55LGRhdGU6RGF0ZSl7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXHJcbiAgICAgICAgICAgIHRoaXMuQkFTRV9VUkwgKyBgY3JtL2FwcG9pbnRtZW50L2NvbmZpZy90aW1lc2xvdHM/bG9jYXRpb25JZD0ke2xvY2F0aW9uSWR9JmRhdGU9JHtkYXRlfWBcclxuICAgICAgICApXHJcbiAgICB9XHJcblxyXG4gICAgZ2V0QmxvZ0J5QnVzaW5lc3NJZCgpIHtcclxuICAgICAgY29uc3QgYnVzaW5lc3NJZDogc3RyaW5nID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJiSWRcIikgPz8gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJidXNpbmVzc0lkXCIpID8/IFwiXCI7XHJcbiAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxyXG4gICAgICAgIHRoaXMuQkFTRV9VUkwgKyBgYnVzaW5lc3MvYmxvZy9ieS9idXNpbmVzcz9idXNpbmVzc0lkPSR7YnVzaW5lc3NJZH1gXHJcbiAgICAgIClcclxuICAgIH1cclxuXHJcbiAgICBnZXRBbGxTZXJ2aWNlKGJ1c2luZXNzSWQ6YW55LHNpemU6YW55LHBhZ2U6YW55LCBsb2NhdGlvbklkPzogYW55KXtcclxuICAgICAgaWYoIWxvY2F0aW9uSWQpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldChcclxuICAgICAgICAgIHRoaXMuQkFTRV9VUkwgKyBgY3JtL2FwcG9pbnRtZW50L2NvbmZpZy9zZXJ2aWNlP2J1c2luZXNzSWQ9JHtidXNpbmVzc0lkfSZzaXplPSR7c2l6ZX0mcGFnZT0ke3BhZ2V9YFxyXG4gICAgICAgIClcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldChcclxuICAgICAgICAgIHRoaXMuQkFTRV9VUkwgKyBgY3JtL2FwcG9pbnRtZW50L2NvbmZpZy9zZXJ2aWNlP2J1c2luZXNzSWQ9JHtidXNpbmVzc0lkfSZzaXplPSR7c2l6ZX0mcGFnZT0ke3BhZ2V9JmxvY2F0aW9uSWQ9JHtsb2NhdGlvbklkfWBcclxuICAgICAgICApXHJcblxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0QWxsU3RhZmZCeUxvY2F0aW9uKGJ1c2luZXNzSWQ6YW55LHNpemU6bnVtYmVyLHBhZ2U6bnVtYmVyLCBsb2NhdGlvbklkOiBzdHJpbmcsIHNlcnZpY2VJZDogc3RyaW5nKXtcclxuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXHJcbiAgICAgICAgICB0aGlzLkJBU0VfVVJMICsgYGNybS9hcHBvaW50bWVudC9jb25maWcvc3RhZmY/YnVzaW5lc3NJZD0ke2J1c2luZXNzSWR9JnNpemU9JHtzaXplfSZwYWdlPSR7cGFnZX0mbG9jYXRpb25JZD0ke2xvY2F0aW9uSWR9JnNlcnZpY2VJZD0ke3NlcnZpY2VJZH1gXHJcbiAgICAgIClcclxuICAgIH1cclxuXHJcbiAgICBnZXRBdmFpbGFibGVTbG90cyhkYXRhOiBhbnkpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQoXHJcbiAgICAgICAgdGhpcy5CQVNFX1VSTCArIGBjcm0vYXBwb2ludG1lbnQvY29uZmlnL2F2YWlsYWJsZS90aW1lc2xvdHNgLCBkYXRhXHJcbiAgICAgIClcclxuICAgIH1cclxuXHJcbiAgICBnZXRTZWxlY3RlZExpc3RGaWVsZHMoYklkOmFueSxzaG93SW5FcnA6YW55LGZvcm1OYW1lOmFueSl7XHJcbiAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxyXG4gICAgICAgIHRoaXMuQ01JU19VUkwrIGBjcm0vZmllbGRzP2J1c2luZXNzSWQ9JHtiSWR9JnN0YXR1cz10cnVlJnNob3dJbkVycD0ke3Nob3dJbkVycH0maXNQYWdpbmF0aW9uPWZhbHNlJmZpZWxkQ2F0ZWdvcnk9JHtmb3JtTmFtZX1gXHJcbiAgICAgIClcclxuICAgIH1cclxuXHJcbiAgICBjcmVhdGVSZWdpc3RyYXRpb24ocGF5bG9hZDogYW55KSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgICB0aGlzLkNNSVNfVVJMICsgYGNybS9yZWdpc3RyYXRpb24vP2VucXVpcnlJZD0ke3BheWxvYWQ/LmVucXVpcnlJZCB8fCAnJ31gLCBwYXlsb2FkXHJcbiAgICAgIClcclxuICAgIH1cclxuXHJcbiAgICBjcmVhdGVBZG1pc3Npb24ocGF5bG9hZDogYW55KSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgICB0aGlzLkNNSVNfVVJMICsgYGNybS9yZWdpc3RyYXRpb24vYWRtaXNzaW9uP3JlZ2lzdHJhdGlvbklkPSR7cGF5bG9hZD8ucmVnaXN0cmF0aW9uSWQgfHwgJyd9YCwgcGF5bG9hZFxyXG4gICAgICApXHJcbiAgICB9XHJcblxyXG4gICAgY3JlYXRlUGF5bWVudEZvckFkbWlzc2lvbihwYXlsb2FkOiBhbnkpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICAgIHRoaXMuQ01JU19VUkwgKyBgY3JtL3JlZ2lzdHJhdGlvbi9hZG1pc3Npb24vcGF5bWVudGAsIHBheWxvYWRcclxuICAgICAgKVxyXG4gICAgfVxyXG5cclxuICAgIGNyZWF0ZVJlZ2lzdHJhdGlvbkZvclBheW1lbnQocGF5bG9hZDogYW55KSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgICB0aGlzLkNNSVNfVVJMICsgYGNybS9yZWdpc3RyYXRpb24vcmVnaXN0cmF0aW9uL3BheW1lbnRgLCBwYXlsb2FkXHJcbiAgICAgIClcclxuICAgIH1cclxuXHJcblxyXG4gIGdldFN1YnNjcmlwdGlvbkZvckZlZVN0cnVjdHVyZShncmFkZUlkOiBhbnkpIHtcclxuICAgIGNvbnN0IGJ1c2luZXNzSWQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnYnVzaW5lc3NJZCcpO1xyXG5cclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxyXG4gICAgICB0aGlzLkNNSVNfVVJMICsgYGNybS9zdWJzY3JpcHRpb24vcGxhbi9saXN0P2J1c2luZXNzSWQ9JHtidXNpbmVzc0lkfSZncmFkZUlkPSR7Z3JhZGVJZH1gXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBnZXRGZWVTdHJ1Y3R1cmUocGF5bG9hZDogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dChcclxuICAgICAgdGhpcy5DTUlTX1VSTCArIGBjcm0vZmVlL3N0cnVjdHVyZWAsIHBheWxvYWRcclxuICAgIClcclxuICB9XHJcblxyXG4gIGdldEFsbERvY3VtZW50KHBheWxvYWQ6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQoXHJcbiAgICAgIHRoaXMuQ01JU19VUkwgKyAgYGNybS9tYXN0ZXIvZG9jdW1lbnRUeXBlL2ZpbHRlcmAsIHBheWxvYWQpXHJcbiAgfVxyXG5cclxuICBnZXRMZWFkQnlJZChsZWFkSWQ6YW55KXtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxyXG4gICAgICB0aGlzLkNNSVNfVVJMK2Bjcm0vbGVhZHMvZ2V0LW9uZT9sZWFkSWQ9JHtsZWFkSWR9YFxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgZ2V0UmVnaXN0cmF0aW9uTGlzdChwYXlsb2FkOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KFxyXG4gICAgICB0aGlzLkNNSVNfVVJMICsgYGNybS9yZWdpc3RyYXRpb24vZ2V0QWxsYCwgcGF5bG9hZFxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgICBnZXRGaWVsZHNUb0Rpc3BsYXkoZmllbGRzTGlzdDogYW55W10pIHtcclxuICAgICAgbGV0IG1hcDogYW55ID0ge307XHJcblxyXG4gICAgICBmb3IobGV0IGZpZWxkIG9mIGZpZWxkc0xpc3QpIHtcclxuICAgICAgICBmb3IobGV0IGZpZWxkR3JvdXAgb2YgZmllbGQuZmllbGRHcm91cCkge1xyXG4gICAgICAgICAgaWYoIWZpZWxkR3JvdXAuZmllbGRTdGVwSWQpXHJcbiAgICAgICAgICAgIGNvbnRpbnVlO1xyXG5cclxuICAgICAgICAgIGxldCBzdGVwTmFtZSA9IGZpZWxkR3JvdXAuZmllbGRTdGVwTmFtZSA/IGZpZWxkR3JvdXAuZmllbGRTdGVwTmFtZSA6ICd1bmRlZmluZWQnO1xyXG4gICAgICAgICAgbGV0IGdyb3VwTmFtZSA9IGZpZWxkR3JvdXAuZmllbGRHcm91cE5hbWU7XHJcblxyXG4gICAgICAgICAgaWYoIW1hcFtzdGVwTmFtZV0pIHtcclxuICAgICAgICAgICAgbWFwW3N0ZXBOYW1lXSA9IHt9O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYoIW1hcFtzdGVwTmFtZV1bZ3JvdXBOYW1lXSkge1xyXG4gICAgICAgICAgICBtYXBbc3RlcE5hbWVdW2dyb3VwTmFtZV0gPSBbXTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGZpZWxkWydmaWVsZFN0ZXBJZCddID0gZmllbGRHcm91cC5maWVsZFN0ZXBJZDtcclxuICAgICAgICAgIGZpZWxkWydmaWVsZEdyb3VwSWQnXSA9IGZpZWxkR3JvdXAuZmllbGRHcm91cElkO1xyXG5cclxuICAgICAgICAgIGNvbnN0IG5ld0ZpZWxkID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShmaWVsZCkpO1xyXG4gICAgICAgICAgbWFwW3N0ZXBOYW1lXVtncm91cE5hbWVdLnB1c2gobmV3RmllbGQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIG1hcDtcclxuICAgIH1cclxufVxyXG4iXX0=
315
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9zZXJ2aWNlcy9yZXN0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUN0RCxPQUFPLEVBQUUsR0FBRyxFQUF3QyxNQUFNLE1BQU0sQ0FBQztBQUNqRSxPQUFPLEVBQUUsUUFBUSxFQUFpQixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFJaEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJDQUEyQyxDQUFDOzs7O0FBSzVFLE1BQU0sT0FBTyxXQUFXO0lBT3BCLFlBQ3FCLElBQWdCLEVBQ2hCLFlBQTJCO1FBRDNCLFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsaUJBQVksR0FBWixZQUFZLENBQWU7UUFQeEMsYUFBUSxHQUFXLHVCQUF1QixDQUFDO1FBQzNDLGtCQUFhLEdBQVcsa0NBQWtDLENBQUM7UUFDM0QsYUFBUSxHQUFXLDJCQUEyQixDQUFDO1FBQy9DLDhCQUF5QixHQUF3QixJQUFJLENBQUM7UUFNM0QsSUFBSSxDQUFDLHlCQUF5QixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsRUFBQyxFQUFFO1lBQ3BGLElBQUksUUFBUSxJQUFJLEtBQUssRUFBRSxDQUFDO2dCQUNwQixJQUFJLENBQUMsUUFBUSxHQUFHLDJCQUEyQixDQUFDO2dCQUM1QyxJQUFJLENBQUMsYUFBYSxHQUFHLGlDQUFpQyxDQUFDO1lBQzNELENBQUM7aUJBQ0ksSUFBSSxRQUFRLElBQUksT0FBTyxFQUFFLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxhQUFhLEdBQUcsbUNBQW1DLENBQUM7Z0JBQ3pELElBQUksQ0FBQyxRQUFRLEdBQUcsNkJBQTZCLENBQUM7WUFDbEQs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QUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzFDLENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDOzhHQXpYUSxXQUFXO2tIQUFYLFdBQVcsY0FGUixNQUFNOzsyRkFFVCxXQUFXO2tCQUh2QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgT25EZXN0cm95IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgbWFwLCBPYnNlcnZhYmxlLCBTdWJzY3JpYmVyLCBTdWJzY3JpcHRpb24gfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBDYXRlZ29yeSwgRXZlbnRzU2VydmljZSwgUHJvZHVjdCwgQ29sbGVjdGlvbiB9IGZyb20gXCIuLi8uLi9wdWJsaWMtYXBpXCI7XHJcbmltcG9ydCB7IFJldmlldyB9IGZyb20gXCIuLi9lY29tbWVyY2Uvc3R5bGVzL3Jldmlldy5tb2RhbFwiO1xyXG5pbXBvcnQgeyBEZXZpY2VJbmZvIH0gZnJvbSBcIi4uL2Vjb21tZXJjZS9zdHlsZXMvdXNlci5tb2RhbFwiO1xyXG5pbXBvcnQgeyBQaW5Db2RlTG9jYXRpb25JbnRlciB9IGZyb20gXCIuLi9lY29tbWVyY2Uvc3R5bGVzL1BpbmNvZGVMb2NhdGlvbkludGVyLm1vZGVsXCI7XHJcbmltcG9ydCB7IFBpbmNvZGVMb2NhdGlvbiB9IGZyb20gXCIuLi9lY29tbWVyY2Uvc3R5bGVzL1BpbmNvZGVMb2NhdGlvbi5tb2RlbFwiO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmVzdFNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG5cclxuICAgIHByaXZhdGUgQkFTRV9VUkw6IHN0cmluZyA9IFwiaHR0cHM6Ly9hcGkuc2ltcG8uYWkvXCI7XHJcbiAgICBwcml2YXRlIEVDT01NRVJDRV9VUkw6IHN0cmluZyA9IFwiaHR0cHM6Ly9wcm9kLWVjb21tZXJjZS5zaW1wby5haS9cIjtcclxuICAgIHByaXZhdGUgQ01JU19VUkw6IHN0cmluZyA9IFwiaHR0cHM6Ly9kZXYtYXBpLnNpbXBvLmFpL1wiO1xyXG4gICAgcHJpdmF0ZSBlbnZpcm9ubWVudFR5cGVTdWJzY3JpYmVyOiBTdWJzY3JpcHRpb24gfCBudWxsID0gbnVsbDtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBldmVudFNlcnZpY2U6IEV2ZW50c1NlcnZpY2VcclxuICAgICkge1xyXG4gICAgICAgdGhpcy5lbnZpcm9ubWVudFR5cGVTdWJzY3JpYmVyID0gdGhpcy5ldmVudFNlcnZpY2UuZW52aXJvbm1lbnRUeXBlLnN1YnNjcmliZSgocmVzcG9uc2UpPT4ge1xyXG4gICAgICAgICAgICBpZiAocmVzcG9uc2UgPT0gXCJERVZcIikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5CQVNFX1VSTCA9IFwiaHR0cHM6Ly9kZXYtYXBpLnNpbXBvLmFpL1wiO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5FQ09NTUVSQ0VfVVJMID0gXCJodHRwczovL2Rldi1lY29tbWVyY2Uuc2ltcG8uYWkvXCI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAocmVzcG9uc2UgPT0gXCJTVEFHRVwiKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLkVDT01NRVJDRV9VUkwgPSBcImh0dHBzOi8vc3RhZ2UtZWNvbW1lcmNlLnNpbXBvLmFpL1wiO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5CQVNFX1VSTCA9IFwiaHR0cHM6Ly9zdGF0ZS1hcGkuc2ltcG8uYWkvXCI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLkJBU0VfVVJMID0gXCJodHRwczovL2FwaS1jbWlzLnRlanNvZnQuY29tL1wiO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5FQ09NTUVSQ0VfVVJMID0gXCJodHRwczovL3Byb2QtZWNvbW1lcmNlLnNpbXBvLmFpL1wiO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgIH1cclxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLmVudmlyb25tZW50VHlwZVN1YnNjcmliZXIpXHJcbiAgICAgICAgICAgIHRoaXMuZW52aXJvbm1lbnRUeXBlU3Vic2NyaWJlcj8udW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRGZWF0dXJlZFByb2R1Y3QoY29sbGVjdGlvbklkOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsKSB7XHJcbiAgICAgICAgbGV0IHN1YkluZHVzdHJ5SWQ6IHN0cmluZyB8IG51bGwgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcInN1YkluZHVzdHJ5SWRcIik7XHJcbiAgICAgICAgaWYgKCFzdWJJbmR1c3RyeUlkKVxyXG4gICAgICAgICAgICBzdWJJbmR1c3RyeUlkID0gXCJcIjtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS9wcm9kdWN0L2NvbGxlY3Rpb24vaWQ/Y29sbGVjdGlvbklkPSR7Y29sbGVjdGlvbklkIHx8ICcnfSZzdWJJbmR1c3RyeUlkPSR7c3ViSW5kdXN0cnlJZCB8fCAnJ30maXNFbmRVc2VyPXRydWVgKS5waXBlKG1hcCgocmVzcG9uc2U6IGFueSk9PiByZXNwb25zZS5kYXRhPy5tYXAoKHByb2R1Y3Q6IGFueSk9PiBuZXcgUHJvZHVjdChwcm9kdWN0KSkpKTtcclxuICAgIH1cclxuICAgIGdldENhdGVnb3JpZXNCeUNvbGxlY3Rpb25JZChjb2xsZWN0aW9uSWQ6IHN0cmluZykge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL2ludmVudG9yeS9jYXRlZ29yeS9jb2xsZWN0aW9uSWQ/Y29sbGVjdGlvbklkPSR7Y29sbGVjdGlvbklkfWApLnBpcGUobWFwKChyZXNwb25zZTogYW55KT0+IHJlc3BvbnNlLmRhdGE/Lm1hcCgoY2F0ZWdvcnk6IGFueSk9PiBuZXcgQ2F0ZWdvcnkoY2F0ZWdvcnkpKSkpO1xyXG4gICAgfVxyXG4gICAgZ2V0UHJvZHVjdERldGFpbHMocHJvZHVjdElkOiBzdHJpbmcgfCBudWxsID0gbnVsbCkge1xyXG4gICAgICAgIGNvbnN0IHBheWxvYWQ6IGFueSA9IHtcclxuICAgICAgICAgICAgcGFnZU5vOiAwLFxyXG4gICAgICAgICAgICBwYWdlU2l6ZTogMSxcclxuICAgICAgICAgICAgaXRlbUlkOiBwcm9kdWN0SWQsXHJcbiAgICAgICAgICAgIHN1YkluZHVzdHJ5SWQ6IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwic3ViSW5kdXN0cnlJZFwiKSxcclxuICAgICAgICAgICAgdXNlcklkOiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcInBlcklkXCIpID8/IG51bGwsXHJcbiAgICAgICAgICAgIHJlcXVlc3Q6IFwiVVNFUlwiXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucHV0KHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL3Byb2R1Y3QvaXRlbS9zZWFyY2hgLCBwYXlsb2FkKS5waXBlKG1hcCgocmVzcG9uc2U6IGFueSk9PiByZXNwb25zZS5kYXRhLmRhdGEubWFwKChwcm9kdWN0OiBhbnkpPT4gbmV3IFByb2R1Y3QocHJvZHVjdCkpKSk7XHJcbiAgICB9XHJcbiAgICBnZXRDb2xsZWN0aW9uQnlJZHMoY29sbGVjdGlvbklkczogc3RyaW5nW10pIHtcclxuICAgICAgICBjb25zdCBwYXlsb2FkID0ge1xyXG4gICAgICAgICAgICBpZHM6IGNvbGxlY3Rpb25JZHNcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQodGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2UvaW52ZW50b3J5L2NvbGxlY3Rpb24vbGlzdC9hbGxgLCBwYXlsb2FkKS5waXBlKG1hcCgocmVzcG9uc2U6IGFueSk9PiByZXNwb25zZS5kYXRhPy5tYXAoKGNvbGxlY3Rpb246IGFueSk9PiBuZXcgQ29sbGVjdGlvbihjb2xsZWN0aW9uKSkpKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRBbGxDYXRlZ29yaWVzKCkge1xyXG5cclxuICAgICAgICBjb25zdCBidXNpbmVzc0lkOiBzdHJpbmcgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImJJZFwiKSA/PyBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImJ1c2luZXNzSWRcIikgPz8gXCJcIjtcclxuICAgICAgICBjb25zdCBzdWJJbmR1c3RyeUlkOiBzdHJpbmcgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcInN1YkluZHVzdHJ5SWRcIikgPz8gXCJcIjtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS9pbnZlbnRvcnkvZmVhdHVyZWQ/YnVzaW5lc3NJZD0ke2J1c2luZXNzSWR9JnN1YklkPSR7c3ViSW5kdXN0cnlJZH1gKS5waXBlKG1hcCgocmVzcG9uc2U6IGFueSk9PiByZXNwb25zZS5kYXRhPy5tYXAoKGNhdGVnb3J5OiBhbnkpPT4gbmV3IENhdGVnb3J5KGNhdGVnb3J5KSkpKTtcclxuICAgIH1cclxuICAgIGdldEFsbENvbGxlY3Rpb25zKCkge1xyXG4gICAgICAgIGNvbnN0IHBheWxvYWQ6IGFueSA9IHtcclxuICAgICAgICAgICAgcGFnZU5vOiAwLFxyXG4gICAgICAgICAgICBwYWdlU2l6ZTogMTAsXHJcbiAgICAgICAgICAgIHJlcXVlc3Q6IFwiVVNFUlwiLFxyXG4gICAgICAgICAgICBidXNpbmVzc0lkOiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImJJZFwiKSA/PyBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImJ1c2luZXNzSWRcIilcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQodGhpcy5CQVNFX1VSTCArICdlY29tbWVyY2UvaW52ZW50b3J5L2dldC9jb2xsZWN0aW9uJywgcGF5bG9hZCkucGlwZShtYXAoKHJlc3BvbnNlOiBhbnkpPT4gcmVzcG9uc2UuZGF0YS5kYXRhPy5tYXAoKGNvbGxlY3Rpb246IGFueSk9PiBuZXcgQ29sbGVjdGlvbihjb2xsZWN0aW9uKSkpKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRGaWx0ZXJlZFByb2R1Y3QoY29sbGVjdGlvbklkczogc3RyaW5nW10sIGNhdGVnb3J5SWRzOiBzdHJpbmdbXSwgc2VhcmNoVGV4dDogc3RyaW5nLCBtaW5QcmljZTogbnVtYmVyLCBtYXhQcmljZTogbnVtYmVyLCBzb3J0Qnk6IHN0cmluZywgcGFnZU5vOiBudW1iZXIsIHNpemU6IG51bWJlcikge1xyXG4gICAgICAgIGNvbnN0IHBheWxvYWQ6IGFueSA9IHtcclxuICAgICAgICAgICAgXCJidXNpbmVzc0lkXCI6IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiYklkXCIpID8/IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiYnVzaW5lc3NJZFwiKSxcclxuICAgICAgICAgICAgXCJzdWJJbmR1c3RyeUlkXCI6IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwic3ViSW5kdXN0cnlJZFwiKSxcclxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uSWRcIjogY29sbGVjdGlvbklkcyxcclxuICAgICAgICAgICAgXCJjYXRlZ29yeUlkXCI6IGNhdGVnb3J5SWRzLFxyXG4gICAgICAgICAgICBcInNlYXJjaFRleHRcIjogc2VhcmNoVGV4dCxcclxuICAgICAgICAgICAgXCJtaW5QcmljZVwiOiBtaW5QcmljZSA/PyAwLFxyXG4gICAgICAgICAgICBcIm1heFByaWNlXCI6IG1heFByaWNlID8/IDAsXHJcbiAgICAgICAgICAgIFwic29ydEJ5XCI6IHNvcnRCeSxcclxuICAgICAgICAgICAgXCJwYWdlTm9cIjogcGFnZU5vLFxyXG4gICAgICAgICAgICBcInBhZ2VTaXplXCI6IHNpemUsXHJcbiAgICAgICAgICAgIFwidXNlcklkXCI6IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwicGVySWRcIikgPz8gbnVsbCxcclxuICAgICAgICAgICAgcmVxdWVzdDogXCJVU0VSXCJcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQodGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2UvcHJvZHVjdC9pdGVtL3NlYXJjaGAsIHBheWxvYWQpLnBpcGUobWFwKChyZXNwb25zZTogYW55KT0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIGNvdW50OiByZXNwb25zZS5kYXRhLmNvdW50LFxyXG4gICAgICAgICAgICAgICAgZGF0YTogcmVzcG9uc2UuZGF0YS5kYXRhPy5tYXAoKHByb2R1Y3Q6IGFueSk9PiBuZXcgUHJvZHVjdChwcm9kdWN0KSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pKTtcclxuICAgIH1cclxuICAgIGdldFByb2R1Y3RCeUNhdGVnb3J5SWQoY2F0ZWdvcnlJZDogc3RyaW5nKSB7XHJcbiAgICAgICAgY29uc3QgcGF5bG9hZDogYW55ID0ge1xyXG4gICAgICAgICAgICBcImJ1c2luZXNzSWRcIjogbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJiSWRcIikgPz8gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJidXNpbmVzc0lkXCIpLFxyXG4gICAgICAgICAgICBcImNhdGVnb3J5SWRcIjogW2NhdGVnb3J5SWRdLFxyXG4gICAgICAgICAgICBcInN1YkluZHVzdHJ5SWRcIjogbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJzdWJJbmR1c3RyeUlkXCIpLFxyXG4gICAgICAgICAgICBcInBhZ2VOb1wiOiAwLFxyXG4gICAgICAgICAgICBcInBhZ2VTaXplXCI6IDEwLFxyXG4gICAgICAgICAgICBcInVzZXJJZFwiOiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcInBlcklkXCIpID8/IG51bGwsXHJcbiAgICAgICAgICAgIHJlcXVlc3Q6IFwiVVNFUlwiXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucHV0KHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL3Byb2R1Y3QvaXRlbS9zZWFyY2hgLCBwYXlsb2FkKS5waXBlKG1hcCgocmVzcG9uc2U6IGFueSk9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICBjb3VudDogcmVzcG9uc2UuY291bnQsXHJcbiAgICAgICAgICAgICAgICBkYXRhOiByZXNwb25zZS5kYXRhLmRhdGE/Lm1hcCgocHJvZHVjdDogYW55KT0+IG5ldyBQcm9kdWN0KHByb2R1Y3QpKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSkpO1xyXG4gICAgfVxyXG4gICAgZ2V0UHJvZHVjdEJ5Q29sbGVjdGlvbklkKGNvbGxlY3Rpb25JZDogc3RyaW5nKSB7XHJcbiAgICAgICAgY29uc3QgcGF5bG9hZDogYW55ID0ge1xyXG4gICAgICAgICAgICBcImJ1c2luZXNzSWRcIjogbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJiSWRcIikgPz8gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJidXNpbmVzc0lkXCIpLFxyXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25JZFwiOiBbY29sbGVjdGlvbklkXSxcclxuICAgICAgICAgICAgXCJzdWJJbmR1c3RyeUlkXCI6IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwic3ViSW5kdXN0cnlJZFwiKSxcclxuICAgICAgICAgICAgXCJwYWdlTm9cIjogMCxcclxuICAgICAgICAgICAgXCJwYWdlU2l6ZVwiOiAxMCxcclxuICAgICAgICAgICAgXCJ1c2VySWRcIjogbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJwZXJJZFwiKSA/PyBudWxsLFxyXG4gICAgICAgICAgICByZXF1ZXN0OiBcIlVTRVJcIlxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnB1dCh0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS9wcm9kdWN0L2l0ZW0vc2VhcmNoYCwgcGF5bG9hZCkucGlwZShtYXAoKHJlc3BvbnNlOiBhbnkpPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgY291bnQ6IHJlc3BvbnNlLmNvdW50LFxyXG4gICAgICAgICAgICAgICAgZGF0YTogcmVzcG9uc2UuZGF0YS5kYXRhPy5tYXAoKHByb2R1Y3Q6IGFueSk9PiBuZXcgUHJvZHVjdChwcm9kdWN0KSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pKTtcclxuICAgIH1cclxuXHJcbiAgICBhZGRSZXZpZXcocGF5bG9hZDogUmV2aWV3KSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL3VzZXIvYWRkL3Jldmlld2AsIHBheWxvYWQpO1xyXG4gICAgfVxyXG4gICAgZ2V0QWxsUmV2aWV3cyhwcm9kdWN0SWQ6IHN0cmluZykge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucHV0KHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL3VzZXIvZmlsdGVyL3Jldmlld3M/cHJvZHVjdElkPSR7cHJvZHVjdElkfWAsIG51bGwpO1xyXG4gICAgfVxyXG5cclxuICAgIGdlbmVyYXRlT1RQKG1vYmlsZTogc3RyaW5nLCBjb3VudHJ5Q29kZTogc3RyaW5nKSB7XHJcbiAgICAgICAgY29uc3QgYnVzaW5lc3NJZDogc3RyaW5nID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJiSWRcIikgPz8gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJidXNpbmVzc0lkXCIpID8/IFwiXCI7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL3VzZXIvb3RwL3RyaWdnZXI/bW9iaWxlPSR7bW9iaWxlfSZjb3VudHJ5Q29kZT0ke2NvdW50cnlDb2RlfSZidXNpbmVzc0lkPSR7YnVzaW5lc3NJZH1gLCBudWxsKTtcclxuICAgIH1cclxuICAgIHZlcmlmeU9UUChtb2JpbGU6IHN0cmluZywgb3RwOiBzdHJpbmcsIGRldmljZUluZm86IERldmljZUluZm8pIHtcclxuICAgICAgICBjb25zdCBidXNpbmVzc0lkOiBzdHJpbmcgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImJJZFwiKSA/PyBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImJ1c2luZXNzSWRcIikgPz8gXCJcIjtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnB1dCh0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS91c2VyL2F1dGhlbnRpY2F0ZT9tb2JpbGU9JHttb2JpbGV9Jm90cD0ke290cH0mYnVzaW5lc3NJZD0ke2J1c2luZXNzSWR9YCwgZGV2aWNlSW5mbyk7XHJcbiAgICB9XHJcbiAgICByZXNlbmRPVFAobW9iaWxlOiBzdHJpbmcsIGNvdW50cnlDb2RlOiBzdHJpbmcpIHtcclxuICAgICAgICBjb25zdCBidXNpbmVzc0lkOiBzdHJpbmcgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImJJZFwiKSA/PyBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImJ1c2luZXNzSWRcIikgPz8gXCJcIjtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2UvdXNlci9yZXNlbmQ/bW9iaWxlPSR7bW9iaWxlfSZjb3VudHJ5Q29kZT0ke2NvdW50cnlDb2RlfSZidXNpbmVzc0lkPSR7YnVzaW5lc3NJZH1gLCBudWxsKTtcclxuICAgIH1cclxuICAgIGFwcGxpY2FibGVEaXNjb3VudExpc3QoY2FydElkOiBzdHJpbmcpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS9vcmRlci9kaXNjb3VudC1jb3Vwb24vJHtjYXJ0SWR9L2FwcGxpY2FiaWxpdHkvbGlzdGApO1xyXG4gICAgfVxyXG4gICAgcmVtb3ZlRGlzY291bnRGcm9tQ2FydChjYXJ0SWQ6IHN0cmluZykge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucHV0KHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL29yZGVyL2Rpc2NvdW50LWNvdXBvbi8ke2NhcnRJZH0vY2FydC9yZW1vdmVgLCBudWxsKTtcclxuICAgIH1cclxuXHJcbiAgICBhZGRJdGVtVG9EQih1c2VyQ2FydDogYW55KSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL29yZGVyL2NhcnRgLCB1c2VyQ2FydCk7XHJcbiAgICB9XHJcbiAgICBnZXRVc2VySXRlbXModXNlcklkOiBzdHJpbmcsIGNhcnRUeXBlOiAnQ0FSVCcgfCAnV0lTSExJU1QnKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2Uvb3JkZXIvY2FydD91c2VySWQ9JHt1c2VySWR9JmNhcnRUeXBlPSR7Y2FydFR5cGV9YCk7XHJcbiAgICB9XHJcbiAgICBwbGFjZU9yZGVyKGNhcnRJZDogc3RyaW5nKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL29yZGVyL29yZGVyP2NhcnRJZD0ke2NhcnRJZH1gLCBudWxsKTtcclxuICAgIH1cclxuICAgIGdldFVzZXJJbmZvKHVzZXJJZDogc3RyaW5nKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQodGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2UvdXNlci9nZXQvdXNlcj91c2VySWQ9JHt1c2VySWR9YCwgbnVsbCk7XHJcbiAgICB9XHJcbiAgICBhZGRVc2VyQWRkcmVzcyh1c2VyOiBhbnkpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnB1dCh0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS91c2VyL3VwZGF0ZS91c2VyYCwgdXNlcik7XHJcbiAgICB9XHJcbiAgICB1cGRhdGVQcm9maWxlKHBheWxvYWQ6IGFueSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucHV0KHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL3VzZXIvdXBkYXRlL3VzZXJgLCBwYXlsb2FkKTtcclxuICAgIH1cclxuICAgIGdldFVzZXJPcmRlcnMocGF5bG9hZDogYW55KSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQodGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2Uvb3JkZXIvdXNlci9vcmRlcmAsIHBheWxvYWQpO1xyXG4gICAgfVxyXG4gICAgdG9nZ2xlSXRlbUNhcnRUb0ZhdigpIHtcclxuXHJcbiAgICB9XHJcbiAgICBtb3ZlV2lzaGxpc3RUb0NhcnQoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2UvdXBkYXRlL2NhcnRgKTtcclxuICAgIH1cclxuICAgIGdldFVzZXJXaXNobGlzdCh1c2VySWQ6IHN0cmluZykge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL29yZGVyL2NhcnQ/dXNlcklkPSR7dXNlcklkfSZjYXJ0VHlwZT1XSVNITElTVGApXHJcbiAgICB9XHJcbiAgICBtb3ZlSXRlbVRvQ2FydCh1c2VySWQ6IHN0cmluZywgcGF5bG9hZDogYW55KSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQodGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2Uvb3JkZXIvdXBkYXRlL2NhcnQ/dXNlcklkPSR7dXNlcklkfWAsIHBheWxvYWQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFBheW1lbnRcclxuICAgIGNyZWF0ZVBheW1lbnRUb2tlbihwYXlsb2FkOiBhbnkpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5FQ09NTUVSQ0VfVVJMICsgYHBheW1lbnQvb3JkZXJgLCBwYXlsb2FkKTtcclxuICAgIH1cclxuICAgIHJlZnVuZFBheW1lbnQob3JkZXJJZDogc3RyaW5nLCBwYXlsb2FkOiBhbnkpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2UvcGF5bWVudC9yZWZ1bmQvYmFuaz9vcmRlcklkPSR7b3JkZXJJZH1gLCBwYXlsb2FkKTtcclxuICAgIH1cclxuICAgIGNoZWNrUGF5bWVudFN0YXR1cyhwYXlsb2FkOiBhbnkpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5FQ09NTUVSQ0VfVVJMICsgYHBheW1lbnQvc3RhdHVzYCwgcGF5bG9hZCk7XHJcbiAgICB9XHJcbiAgICBnZXRSZWNlbnRWaWV3UHJvZHVjdCh1c2VySWQ6IHN0cmluZykge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS91c2VyL3JlY2VudFZpZXc/dXNlcklkPSR7dXNlcklkfWAsIG51bGwpLnBpcGUobWFwKChyZXNwb25zZTogYW55KT0+IHJlc3BvbnNlLmRhdGE/Lm1hcCgocHJvZHVjdDogYW55KT0+IG5ldyBQcm9kdWN0KHByb2R1Y3QpKSkpOztcclxuICAgIH1cclxuXHJcbiAgICBnZXRMb2NhdGlvbkJ5UGluQ29kZShwaW5jb2RlOiBzdHJpbmcpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldChgaHR0cHM6Ly9hcGkucG9zdGFscGluY29kZS5pbi9waW5jb2RlLyR7cGluY29kZX1gKS5waXBlKG1hcCgobG9jYXRpb25zOiBhbnkpPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IFBpbmNvZGVMb2NhdGlvbihsb2NhdGlvbnMpO1xyXG4gICAgICAgIH0pKVxyXG4gICAgfVxyXG4gICAgZ2V0TG9jYXRpb25CeVBpbkNvZGVJbnRlcm5hdGlvbmFsKHBpbmNvZGU6IHN0cmluZykge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGBodHRwczovL2FwaS56aXBwb3BvdGFtLnVzL2luLyR7cGluY29kZX1gKTtcclxuICAgIH1cclxuXHJcbiAgICBzZW5kU2lnbnVwT1RQKHBheWxvYWQ6IGFueSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS91c2VyL3NpZ251cC9vdHAvdHJpZ2dlcmAsIHBheWxvYWQpO1xyXG4gICAgfVxyXG5cclxuICAgIHZlcmlmeVNpZ251cE9UUChwYXlsb2FkOiBhbnkpIHtcclxuICAgICAgICBjb25zdCBidXNpbmVzc0lkOiBzdHJpbmcgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImJJZFwiKSA/PyBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImJ1c2luZXNzSWRcIikgPz8gJyc7XHJcbiAgICAgICAgLy8gcGF5bG9hZFtcImJ1c2luZXNzSWRcIl0gPSBidXNpbmVzc0lkO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucHV0KHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL3VzZXIvYXV0aGVudGljYXRlL3NpZ251cGAsIHBheWxvYWQpO1xyXG4gICAgfVxyXG5cclxuICAgIHNpZ25pblBhc3N3b3JkKHBhc3NEYXRhOiBhbnkpe1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucHV0KHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL3VzZXIvYXV0aGVudGljYXRlL2xvZ2luYCwgcGFzc0RhdGEpO1xyXG4gICAgfVxyXG5cclxuICAgIGNyZWF0ZUFwcG9pbnRtZW50KGRhdGE6YW55KXtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5CQVNFX1VSTCArIGBjcm0vYXBwb2ludG1lbnQvYWRkYCwgZGF0YSlcclxuICAgIH1cclxuXHJcbiAgICBnZXRBbGxTZXJ2aWNlcyhidXNpbmVzc0lkOmFueSxzaXplOm51bWJlcixwYWdlOm51bWJlcil7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXHJcbiAgICAgICAgICAgIHRoaXMuQkFTRV9VUkwgKyBgY3JtL2FwcG9pbnRtZW50L2NvbmZpZy9zZXJ2aWNlP2J1c2luZXNzSWQ9JHtidXNpbmVzc0lkfSZzaXplPSR7c2l6ZX0mcGFnZT0ke3BhZ2V9YFxyXG4gICAgICAgIClcclxuICAgIH1cclxuXHJcbiAgICBnZXRBbGxMb2NhdGlvbihidXNpbmVzc0lkOmFueSxzaXplOm51bWJlcixwYWdlOm51bWJlcil7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXHJcbiAgICAgICAgICAgIHRoaXMuQkFTRV9VUkwgKyBgY3JtL2FwcG9pbnRtZW50L2NvbmZpZy9sb2NhdGlvbj9idXNpbmVzc0lkPSR7YnVzaW5lc3NJZH0mc2l6ZT0ke3NpemV9JnBhZ2U9JHtwYWdlfWBcclxuICAgICAgICApXHJcbiAgICB9XHJcblxyXG4gICAgZ2V0QWxsU3RhZmYoYnVzaW5lc3NJZDphbnksc2l6ZTpudW1iZXIscGFnZTpudW1iZXIsIGxvY2F0aW9uSWQ6IHN0cmluZywgc2VydmljZUlkOiBzdHJpbmcpe1xyXG4gICAgICByZXR1cm4gdGhpcy5odHRwLmdldChcclxuICAgICAgICAgIHRoaXMuQkFTRV9VUkwgKyBgY3JtL2FwcG9pbnRtZW50L2NvbmZpZy9sb2NhdGlvbj9idXNpbmVzc0lkPSR7YnVzaW5lc3NJZH0mc2l6ZT0ke3NpemV9JnBhZ2U9JHtwYWdlfSZsb2NhdGlvbklkPSR7bG9jYXRpb25JZH0mc2VydmljZUlkPSR7c2VydmljZUlkfWBcclxuICAgICAgKVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICBnZXRBbGxUaW1lU2xvdHMobG9jYXRpb25JZDphbnksZGF0ZTpEYXRlKXtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldChcclxuICAgICAgICAgICAgdGhpcy5CQVNFX1VSTCArIGBjcm0vYXBwb2ludG1lbnQvY29uZmlnL3RpbWVzbG90cz9sb2NhdGlvbklkPSR7bG9jYXRpb25JZH0mZGF0ZT0ke2RhdGV9YFxyXG4gICAgICAgIClcclxuICAgIH1cclxuXHJcbiAgICBnZXRCbG9nQnlCdXNpbmVzc0lkKCkge1xyXG4gICAgICBjb25zdCBidXNpbmVzc0lkOiBzdHJpbmcgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImJJZFwiKSA/PyBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImJ1c2luZXNzSWRcIikgPz8gXCJcIjtcclxuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXHJcbiAgICAgICAgdGhpcy5CQVNFX1VSTCArIGBidXNpbmVzcy9ibG9nL2J5L2J1c2luZXNzP2J1c2luZXNzSWQ9JHtidXNpbmVzc0lkfWBcclxuICAgICAgKVxyXG4gICAgfVxyXG5cclxuICAgIGdldEFsbFNlcnZpY2UoYnVzaW5lc3NJZDphbnksc2l6ZTphbnkscGFnZTphbnksIGxvY2F0aW9uSWQ/OiBhbnkpe1xyXG4gICAgICBpZighbG9jYXRpb25JZCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxyXG4gICAgICAgICAgdGhpcy5CQVNFX1VSTCArIGBjcm0vYXBwb2ludG1lbnQvY29uZmlnL3NlcnZpY2U/YnVzaW5lc3NJZD0ke2J1c2luZXNzSWR9JnNpemU9JHtzaXplfSZwYWdlPSR7cGFnZX1gXHJcbiAgICAgICAgKVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxyXG4gICAgICAgICAgdGhpcy5CQVNFX1VSTCArIGBjcm0vYXBwb2ludG1lbnQvY29uZmlnL3NlcnZpY2U/YnVzaW5lc3NJZD0ke2J1c2luZXNzSWR9JnNpemU9JHtzaXplfSZwYWdlPSR7cGFnZX0mbG9jYXRpb25JZD0ke2xvY2F0aW9uSWR9YFxyXG4gICAgICAgIClcclxuXHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBnZXRBbGxTdGFmZkJ5TG9jYXRpb24oYnVzaW5lc3NJZDphbnksc2l6ZTpudW1iZXIscGFnZTpudW1iZXIsIGxvY2F0aW9uSWQ6IHN0cmluZywgc2VydmljZUlkOiBzdHJpbmcpe1xyXG4gICAgICByZXR1cm4gdGhpcy5odHRwLmdldChcclxuICAgICAgICAgIHRoaXMuQkFTRV9VUkwgKyBgY3JtL2FwcG9pbnRtZW50L2NvbmZpZy9zdGFmZj9idXNpbmVzc0lkPSR7YnVzaW5lc3NJZH0mc2l6ZT0ke3NpemV9JnBhZ2U9JHtwYWdlfSZsb2NhdGlvbklkPSR7bG9jYXRpb25JZH0mc2VydmljZUlkPSR7c2VydmljZUlkfWBcclxuICAgICAgKVxyXG4gICAgfVxyXG5cclxuICAgIGdldEF2YWlsYWJsZVNsb3RzKGRhdGE6IGFueSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5odHRwLnB1dChcclxuICAgICAgICB0aGlzLkJBU0VfVVJMICsgYGNybS9hcHBvaW50bWVudC9jb25maWcvYXZhaWxhYmxlL3RpbWVzbG90c2AsIGRhdGFcclxuICAgICAgKVxyXG4gICAgfVxyXG5cclxuICAgIGdldFNlbGVjdGVkTGlzdEZpZWxkcyhiSWQ6YW55LHNob3dJbkVycDphbnksZm9ybU5hbWU6YW55KXtcclxuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXHJcbiAgICAgICAgdGhpcy5DTUlTX1VSTCsgYGNybS9maWVsZHM/YnVzaW5lc3NJZD0ke2JJZH0mc3RhdHVzPXRydWUmc2hvd0luRXJwPSR7c2hvd0luRXJwfSZpc1BhZ2luYXRpb249ZmFsc2UmZmllbGRDYXRlZ29yeT0ke2Zvcm1OYW1lfWBcclxuICAgICAgKVxyXG4gICAgfVxyXG5cclxuICAgIGNyZWF0ZVJlZ2lzdHJhdGlvbihwYXlsb2FkOiBhbnkpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICAgIHRoaXMuQ01JU19VUkwgKyBgY3JtL3JlZ2lzdHJhdGlvbi8/ZW5xdWlyeUlkPSR7cGF5bG9hZD8uZW5xdWlyeUlkIHx8ICcnfWAsIHBheWxvYWRcclxuICAgICAgKVxyXG4gICAgfVxyXG5cclxuICAgIGNyZWF0ZUFkbWlzc2lvbihwYXlsb2FkOiBhbnkpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICAgIHRoaXMuQ01JU19VUkwgKyBgY3JtL3JlZ2lzdHJhdGlvbi9hZG1pc3Npb24/cmVnaXN0cmF0aW9uSWQ9JHtwYXlsb2FkPy5yZWdpc3RyYXRpb25JZCB8fCAnJ31gLCBwYXlsb2FkXHJcbiAgICAgIClcclxuICAgIH1cclxuXHJcbiAgICBjcmVhdGVQYXltZW50Rm9yQWRtaXNzaW9uKHBheWxvYWQ6IGFueSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgICAgdGhpcy5DTUlTX1VSTCArIGBjcm0vcmVnaXN0cmF0aW9uL2FkbWlzc2lvbi9wYXltZW50YCwgcGF5bG9hZFxyXG4gICAgICApXHJcbiAgICB9XHJcblxyXG4gICAgY3JlYXRlUmVnaXN0cmF0aW9uRm9yUGF5bWVudChwYXlsb2FkOiBhbnkpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICAgIHRoaXMuQ01JU19VUkwgKyBgY3JtL3JlZ2lzdHJhdGlvbi9yZWdpc3RyYXRpb24vcGF5bWVudGAsIHBheWxvYWRcclxuICAgICAgKVxyXG4gICAgfVxyXG5cclxuXHJcbiAgZ2V0U3Vic2NyaXB0aW9uRm9yRmVlU3RydWN0dXJlKGdyYWRlSWQ6IGFueSkge1xyXG4gICAgY29uc3QgYnVzaW5lc3NJZCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdidXNpbmVzc0lkJyk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXHJcbiAgICAgIHRoaXMuQ01JU19VUkwgKyBgY3JtL3N1YnNjcmlwdGlvbi9wbGFuL2xpc3Q/YnVzaW5lc3NJZD0ke2J1c2luZXNzSWR9JmdyYWRlSWQ9JHtncmFkZUlkfWBcclxuICAgIClcclxuICB9XHJcblxyXG4gIGdldEZlZVN0cnVjdHVyZShwYXlsb2FkOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KFxyXG4gICAgICB0aGlzLkNNSVNfVVJMICsgYGNybS9mZWUvc3RydWN0dXJlYCwgcGF5bG9hZFxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgZ2V0QWxsRG9jdW1lbnQocGF5bG9hZDogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dChcclxuICAgICAgdGhpcy5DTUlTX1VSTCArICBgY3JtL21hc3Rlci9kb2N1bWVudFR5cGUvZmlsdGVyYCwgcGF5bG9hZClcclxuICB9XHJcblxyXG4gIGdldExlYWRCeUlkKGxlYWRJZDphbnkpe1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXHJcbiAgICAgIHRoaXMuQ01JU19VUkwrYGNybS9sZWFkcy9nZXQtb25lP2xlYWRJZD0ke2xlYWRJZH1gXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBnZXRSZWdpc3RyYXRpb25MaXN0KHBheWxvYWQ6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQoXHJcbiAgICAgIHRoaXMuQ01JU19VUkwgKyBgY3JtL3JlZ2lzdHJhdGlvbi9nZXRBbGxgLCBwYXlsb2FkXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICAgIGdldEZpZWxkc1RvRGlzcGxheShmaWVsZHNMaXN0OiBhbnlbXSkge1xyXG4gICAgICBsZXQgbWFwOiBhbnkgPSB7fTtcclxuXHJcbiAgICAgIGZvcihsZXQgZmllbGQgb2YgZmllbGRzTGlzdCkge1xyXG4gICAgICAgIGZvcihsZXQgZmllbGRHcm91cCBvZiBmaWVsZC5maWVsZEdyb3VwKSB7XHJcbiAgICAgICAgICBpZighZmllbGRHcm91cC5maWVsZFN0ZXBJZClcclxuICAgICAgICAgICAgY29udGludWU7XHJcblxyXG4gICAgICAgICAgbGV0IHN0ZXBOYW1lID0gZmllbGRHcm91cC5maWVsZFN0ZXBOYW1lID8gZmllbGRHcm91cC5maWVsZFN0ZXBOYW1lIDogJ3VuZGVmaW5lZCc7XHJcbiAgICAgICAgICBsZXQgZ3JvdXBOYW1lID0gZmllbGRHcm91cC5maWVsZEdyb3VwTmFtZTtcclxuXHJcbiAgICAgICAgICBpZighbWFwW3N0ZXBOYW1lXSkge1xyXG4gICAgICAgICAgICBtYXBbc3RlcE5hbWVdID0ge307XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZighbWFwW3N0ZXBOYW1lXVtncm91cE5hbWVdKSB7XHJcbiAgICAgICAgICAgIG1hcFtzdGVwTmFtZV1bZ3JvdXBOYW1lXSA9IFtdO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZmllbGRbJ2ZpZWxkU3RlcElkJ10gPSBmaWVsZEdyb3VwLmZpZWxkU3RlcElkO1xyXG4gICAgICAgICAgZmllbGRbJ2ZpZWxkR3JvdXBJZCddID0gZmllbGRHcm91cC5maWVsZEdyb3VwSWQ7XHJcblxyXG4gICAgICAgICAgY29uc3QgbmV3RmllbGQgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGZpZWxkKSk7XHJcbiAgICAgICAgICBtYXBbc3RlcE5hbWVdW2dyb3VwTmFtZV0ucHVzaChuZXdGaWVsZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gbWFwO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==