ng-miam 9.2.2 → 9.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/bundles/ng-miam.umd.js +20 -60
  2. package/bundles/ng-miam.umd.js.map +1 -1
  3. package/bundles/ng-miam.umd.min.js +1 -1
  4. package/bundles/ng-miam.umd.min.js.map +1 -1
  5. package/esm2015/lib/_models/basket.js +2 -9
  6. package/esm2015/lib/_services/baskets.service.js +2 -22
  7. package/esm2015/lib/_services/context.service.js +3 -4
  8. package/esm2015/lib/_services/items.service.js +2 -2
  9. package/esm2015/lib/_services/recipes.service.js +3 -3
  10. package/esm2015/lib/_types/builded/mealz-interface.js +1 -1
  11. package/esm2015/lib/_types/builded/mealz-internal-interface.js +1 -1
  12. package/esm2015/lib/_web-components/meals-planner/meals-planner.component.js +2 -3
  13. package/esm2015/lib/_web-components/recipe-cards/recipe-card/recipe-card.component.js +4 -3
  14. package/esm2015/lib/_web-components/recipe-catalog/catalog-category/catalog-category.component.js +2 -2
  15. package/esm2015/lib/_web-components/recipe-catalog/catalog-list/catalog-list.component.js +2 -2
  16. package/esm2015/lib/_web-components/recipe-details/recipe-details.component.js +2 -2
  17. package/esm2015/lib/_web-components/recipe-pricing/recipe-pricing.component.js +6 -12
  18. package/esm2015/lib/environments/version.js +2 -2
  19. package/fesm2015/ng-miam.js +20 -54
  20. package/fesm2015/ng-miam.js.map +1 -1
  21. package/lib/_models/basket.d.ts +0 -3
  22. package/lib/_models/basket.d.ts.map +1 -1
  23. package/lib/_services/baskets.service.d.ts +0 -2
  24. package/lib/_services/baskets.service.d.ts.map +1 -1
  25. package/lib/_services/context.service.d.ts.map +1 -1
  26. package/lib/_services/recipes.service.d.ts +1 -1
  27. package/lib/_services/recipes.service.d.ts.map +1 -1
  28. package/lib/_types/builded/mealz-interface.d.ts +0 -6
  29. package/lib/_types/builded/mealz-interface.d.ts.map +1 -1
  30. package/lib/_types/builded/mealz-internal-interface.d.ts +1 -1
  31. package/lib/_types/builded/mealz-internal-interface.d.ts.map +1 -1
  32. package/lib/_web-components/meals-planner/meals-planner.component.d.ts +0 -1
  33. package/lib/_web-components/meals-planner/meals-planner.component.d.ts.map +1 -1
  34. package/lib/_web-components/recipe-pricing/recipe-pricing.component.d.ts +0 -1
  35. package/lib/_web-components/recipe-pricing/recipe-pricing.component.d.ts.map +1 -1
  36. package/lib/environments/version.d.ts +1 -1
  37. package/package.json +1 -1
@@ -111,7 +111,6 @@ export class ContextService {
111
111
  reset: () => {
112
112
  this.resetBasket();
113
113
  },
114
- updatePricebook: (pricebookName) => this.basketsService.updatePricebook(pricebookName),
115
114
  recipeCount: () => this.basketsService.waitForBasket.pipe(switchMap(() => this.basketsService.basketStats$), skipWhile(bs => !bs), map(bs => bs.recipesCount), distinctUntilChanged()),
116
115
  openPreview: (analyticsPath = '') => this.recipesService.openBasket(analyticsPath),
117
116
  overrideTransferUrl: (url) => {
@@ -399,11 +398,11 @@ export class ContextService {
399
398
  recipeLikeUpdated: () => this.recipeLikesService.recipeLikeUpdated$,
400
399
  guestsUpdated: () => this.guestsChanged,
401
400
  recipePriceUpdated: () => this.recipePriceChanged,
402
- fetchPricing: (recipeId, posId, pricebookKey, serves) => {
401
+ fetchPricing: (recipeId, posId, serves) => {
403
402
  if (!recipeId || !posId || !serves) {
404
403
  return of(null);
405
404
  }
406
- return this.recipesService.getPricing(recipeId, posId, pricebookKey, serves).pipe(skipWhile(result => result.price === 0));
405
+ return this.recipesService.getPricing(recipeId, posId, serves).pipe(skipWhile(result => result.price === 0));
407
406
  }
408
407
  },
409
408
  supplier: {
@@ -533,4 +532,4 @@ ContextService.ɵprov = i0.ɵɵdefineInjectable({ token: ContextService, factory
533
532
  providedIn: 'root'
534
533
  }]
535
534
  }], function () { return [{ type: i1.PointOfSalesService }, { type: i2.BasketsService }, { type: i3.UserService }, { type: i4.PreferencesService }, { type: i5.AnalyticsService }, { type: i6.RecipesService }, { type: i7.BasketRecipeCleanupService }, { type: i8.MediaMatcher }, { type: i9.SuppliersService }, { type: i8.BreakpointObserver }, { type: i10.BasketsSynchronizerService }, { type: i11.StoreLocatorService }, { type: i12.RecipeLikesService }, { type: i13.FakeRetailerCartService }, { type: i14.HistoryService }, { type: i15.ContextRegistryService }]; }, null); })();
536
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctbWlhbS9zcmMvbGliL19zZXJ2aWNlcy9jb250ZXh0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpELE9BQU8sRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqRSxPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXJHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBUWxGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzFELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLG1CQUFtQixF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RSxDQUFDLFNBQVMsRUFBRSxDQUFDO2FBQy9DO1lBRUQsTUFBTSxXQUFXLEdBQUcscUJBQXFCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO1lBQzlHLElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ2hELElBQUksV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0JBQzFCLFdBQVcsQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtvQkFDekUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDaEQsQ0FBQyxDQUFDLENBQUM7YUFDSjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7NEVBN2hCVSxjQUFjO3NEQUFkLGNBQWMsV0FBZCxjQUFjLG1CQUZiLE1BQU07dUZBRVAsY0FBYztjQUgxQixVQUFVO2VBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCcmVha3BvaW50T2JzZXJ2ZXIsIE1lZGlhTWF0Y2hlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9sYXlvdXQnO1xuaW1wb3J0IHsgRXZlbnRFbWl0dGVyLCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQbGF1c2libGVQcm9wcyB9IGZyb20gJ21lYWx6LXNoYXJlZC1hbmFseXRpY3MnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBmb3JrSm9pbiwgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCwgc2tpcFdoaWxlLCBzd2l0Y2hNYXAsIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBCYXNrZXRFbnRyeSwgUmVjaXBlLCBVc2VyIH0gZnJvbSAnLi4vX21vZGVscyc7XG5pbXBvcnQgeyBSZXNldEJhc2tldEFjdGlvbiB9IGZyb20gJy4uL19tb2RlbHMvYmFza2V0LWFjdGlvbnMvcmVzZXQtYmFza2V0LWFjdGlvbic7XG5pbXBvcnQgeyBSZWNpcGVQcmljaW5nIH0gZnJvbSAnLi4vX21vZGVscy9yZWNpcGUtcHJpY2luZyc7XG5pbXBvcnQgeyBDb21wYXJhYmxlUHJvZHVjdCB9IGZyb20gJy4uL190eXBlcy9idWlsZGVkL2NvbXBhcmFibGUtcHJvZHVjdCc7XG5pbXBvcnQgeyBNZWFsekludGVyZmFjZSB9IGZyb20gJy4uL190eXBlcy9idWlsZGVkL21lYWx6LWludGVyZmFjZSc7XG5pbXBvcnQgeyBNZWFsekludGVybmFsSW50ZXJmYWNlIH0gZnJvbSAnLi4vX3R5cGVzL2J1aWxkZWQvbWVhbHotaW50ZXJuYWwtaW50ZXJmYWNlJztcbmltcG9ydCB7IEV2ZW50Sm91cm5leSB9IGZyb20gJy4uL190eXBlcy9ldmVudC1qb3VybmV5LmVudW0nO1xuaW1wb3J0IHsgRXZlbnRUcmFjZSB9IGZyb20gJy4uL190eXBlcy9ldmVudC10cmFjZSc7XG5pbXBvcnQgeyBJY29uIH0gZnJvbSAnLi4vX3R5cGVzL2ljb24uZW51bSc7XG5pbXBvcnQgeyBkZWVwQ2xvbmVXaXRoQ2xhc3MgfSBmcm9tICcuLi9fdXRpbHMvbWV0aG9kcy9kZWVwQ2xvbmUnO1xuaW1wb3J0IHsgbWVhbHpEZWJ1ZywgbWVhbHpXYXJuIH0gZnJvbSAnLi4vX3V0aWxzL21ldGhvZHMvbG9nZ2luZyc7XG5pbXBvcnQgeyBlbnZpcm9ubWVudCB9IGZyb20gJy4uL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudCc7XG5pbXBvcnQgeyBBbmFseXRpY3NTZXJ2aWNlIH0gZnJvbSAnLi9hbmFseXRpY3Muc2VydmljZSc7XG5pbXBvcnQgeyBCYXNrZXRzU3luY2hyb25pemVyU2VydmljZSB9IGZyb20gJy4vYmFza2V0cy1zeW5jaHJvbml6aW5nJztcbmltcG9ydCB7IEJhc2tldHNTZXJ2aWNlIH0gZnJvbSAnLi9iYXNrZXRzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29udGV4dFJlZ2lzdHJ5U2VydmljZSB9IGZyb20gJy4vY29udGV4dC1yZWdpc3RyeS5zZXJ2aWNlJztcbmltcG9ydCB7IEZha2VSZXRhaWxlckNhcnRTZXJ2aWNlIH0gZnJvbSAnLi9mYWtlLXJldGFpbGVyLWNhcnQuc2VydmljZSc7XG5pbXBvcnQgeyBIaXN0b3J5U2VydmljZSB9IGZyb20gJy4vaGlzdG9yeS5zZXJ2aWNlJztcbmltcG9ydCB7IFBvaW50T2ZTYWxlc1NlcnZpY2UgfSBmcm9tICcuL3BvaW50LW9mLXNhbGVzLnNlcnZpY2UnO1xuaW1wb3J0IHsgUHJlZmVyZW5jZXNTZXJ2aWNlIH0gZnJvbSAnLi9wcmVmZXJlbmNlcy5zZXJ2aWNlJztcbmltcG9ydCB7IFJlY2lwZUxpa2VzU2VydmljZSB9IGZyb20gJy4vcmVjaXBlLWxpa2VzLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVjaXBlc1NlcnZpY2UgfSBmcm9tICcuL3JlY2lwZXMuc2VydmljZSc7XG5pbXBvcnQgeyBTdG9yZUxvY2F0b3JTZXJ2aWNlIH0gZnJvbSAnLi9zdG9yZS1sb2NhdG9yLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3VwcGxpZXJzU2VydmljZSB9IGZyb20gJy4vc3VwcGxpZXJzLnNlcnZpY2UnO1xuaW1wb3J0IHsgVXNlclNlcnZpY2UgfSBmcm9tICcuL3VzZXIuc2VydmljZSc7XG5pbXBvcnQgeyBCYXNrZXRSZWNpcGVDbGVhbnVwU2VydmljZSB9IGZyb20gJy4vYmFza2V0LXJlY2lwZS1jbGVhbnVwLnNlcnZpY2UnO1xuXG5jb25zdCBTTUFMTF9TQ1JFRU5fQlAgPSAnKG1pbi13aWR0aDogMTAyM3B4KSc7XG5cbmludGVyZmFjZSBJY29uT3ZlcnJpZGUge1xuICBpY29uOiBJY29uO1xuICB1cmw6IHN0cmluZztcbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQ29udGV4dFNlcnZpY2Uge1xuICB1c2VySW5mbzogVXNlcjtcbiAgaWNvbnM6IEljb25PdmVycmlkZVtdO1xuICB2aWRlb1JlY2lwZXNFbmFibGVkID0gZmFsc2U7XG4gIGFydGljbGVzSW5DYXRhbG9nRW5hYmxlZCA9IGZhbHNlO1xuICB0YWdzT25SZWNpcGVzRW5hYmxlZCA9IGZhbHNlO1xuICBzZW9FbmFibGVkID0gZmFsc2U7XG4gIGRlZmF1bHRJbmdyZWRpZW50UGljdHVyZSA9ICdodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vYXNzZXRzLm1pYW0udGVjaC9nZW5lcmljL2ltYWdlcy9kZWZhdWx0LWluZ3JlZGllbnQtcGljdHVyZS5zdmcnO1xuICBkZWZhdWx0UmVjaXBlUGljdHVyZSA9ICdodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vYXNzZXRzLm1pYW0udGVjaC9nZW5lcmljL2ltYWdlcy9wbGFjZWhvbGRlci5wbmcnO1xuICBnbG9iYWxTY3JvbGxhYmxlRWxlbWVudDogSFRNTEVsZW1lbnQgPSBkb2N1bWVudC5ib2R5O1xuICBpc1NtYWxsU2NyZWVuJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuICBvcmlnaW46IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KG51bGwpO1xuICBzdXBwbGllckhlYWRlckhlaWdodCQ6IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KDApO1xuICBsb2dMZXZlbCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KCdhbGwnKTtcbiAgY2F0YWxvZ1VybCA9ICcnO1xuICByZWNpcGVJbmZvVXJsID0gJyc7XG4gIHJldGFpbGVyQ2FydFVybCA9ICcnO1xuICBwcm9tb3Rpb25zVXJsID0gJyc7XG4gIG1lYWxzUGxhbm5lclVybCA9ICcnO1xuICBhbnRpSW5mbGF0aW9uID0gZmFsc2U7XG4gIGRpc3BsYXlJbmdyZWRpZW50UGljdHVyZXNPblJlY2lwZUNhcmRzID0gZmFsc2U7XG4gIGd1ZXN0c0lucHV0T25NeU1lYWxzID0gZmFsc2U7XG4gIGNvbGxhcHNlVW5hdmFpbGFibGVQcm9kdWN0cyA9IGZhbHNlO1xuICBub1N1cHBsaWVyID0gZmFsc2U7XG4gIGxvZ2dlZE9uU2Vzc2lvbiA9IGZhbHNlO1xuICBpc1ByZWZlcmVuY2VzU1NSID0gZmFsc2U7XG4gIG9yZGVySGlzdG9yeUVuYWJsZWQgPSBmYWxzZTtcbiAgdHJhbnNmZXJVcmxCYXNlT3ZlcnJpZGU6IHN0cmluZztcblxuICBlbmFibGVNZWFsc1BsYW5uZXIkID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG5cbiAgYWRkQWxsUHJvZHVjdHNXYXNDbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcjx7IGluZ3JlZGllbnRzQWRkZWQ6IG51bWJlcjsgaW5ncmVkaWVudHNUb3RhbDogbnVtYmVyIH0+KCk7XG4gIGd1ZXN0c0NoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHsgZ3Vlc3RzOiBudW1iZXI7IHJlY2lwZUlkOiBzdHJpbmcgfT4oKTtcbiAgcmVjaXBlUHJpY2VDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjx7IHJlbWFpbmluZzogbnVtYmVyOyBpbkJhc2tldDogbnVtYmVyOyByZWNpcGVJZDogc3RyaW5nIH0+KCk7XG4gIHByZWZlcmVuY2VzQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBwcml2YXRlIENPUlNJc3N1ZXM6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPjtcblxuICBtZWFsejogTWVhbHpJbnRlcmZhY2UgPSB7XG4gICAgcGF5bWVudFN0YXJ0ZWQ6IHRvdGFsUHJpY2UgPT4ge1xuICAgICAgbWVhbHpEZWJ1ZygnW01lYWx6XSBzZW5kIHBheW1lbnRTdGFydGVkIGV2ZW50Jyk7XG4gICAgICB0aGlzLm9uQmFza2V0QW5kUG9zU2VuZFBheW1lbnRTdGFydGVkRXZlbnQodG90YWxQcmljZSk7XG4gICAgfSxcbiAgICBhbmFseXRpY3M6IHtcbiAgICAgIGluaXQ6IChkb21haW46IHN0cmluZykgPT4ge1xuICAgICAgICB0aGlzLmFuYWx5dGljc1NlcnZpY2UuaW5pdChkb21haW4pO1xuICAgICAgfSxcbiAgICAgIGV2ZW50U2VudCQ6IHRoaXMuYW5hbHl0aWNzU2VydmljZS5ldmVudEVtaXR0ZXIsXG4gICAgICBzZXRBYlRlc3RLZXk6IGtleSA9PiB0aGlzLmFuYWx5dGljc1NlcnZpY2Uuc2V0QWJUZXN0S2V5KGtleSlcbiAgICB9LFxuICAgIGJhc2tldDoge1xuICAgICAgYmFza2V0SXNSZWFkeSQ6IHRoaXMuYmFza2V0c1NlcnZpY2UuYmFza2V0U3RhdHMkLnBpcGUoXG4gICAgICAgIHNraXBXaGlsZShzdGF0cyA9PiAhc3RhdHMpLFxuICAgICAgICB0YWtlKDEpLFxuICAgICAgICBtYXAoKCkgPT4gdHJ1ZSlcbiAgICAgICksXG4gICAgICBpbml0aWFsaXplOiAoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLm9yaWdpbi52YWx1ZSkge1xuICAgICAgICAgIHRoaXMuYmFza2V0c1NlcnZpY2UuaW5pdEJhc2tldCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IHN0YXJ0IE1lYWx6OiBvcmlnaW4gaGFzblxcJ3QgYmVlbiBzZXQnKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHJlc2V0OiAoKSA9PiB7XG4gICAgICAgIHRoaXMucmVzZXRCYXNrZXQoKTtcbiAgICAgIH0sXG4gICAgICB1cGRhdGVQcmljZWJvb2s6IChwcmljZWJvb2tOYW1lOiBzdHJpbmcpID0+IHRoaXMuYmFza2V0c1NlcnZpY2UudXBkYXRlUHJpY2Vib29rKHByaWNlYm9va05hbWUpLFxuICAgICAgcmVjaXBlQ291bnQ6ICgpID0+XG4gICAgICAgIHRoaXMuYmFza2V0c1NlcnZpY2Uud2FpdEZvckJhc2tldC5waXBlKFxuICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmJhc2tldHNTZXJ2aWNlLmJhc2tldFN0YXRzJCksXG4gICAgICAgICAgc2tpcFdoaWxlKGJzID0+ICFicyksXG4gICAgICAgICAgbWFwKGJzID0+IGJzLnJlY2lwZXNDb3VudCksXG4gICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxuICAgICAgICApLFxuICAgICAgb3BlblByZXZpZXc6IChhbmFseXRpY3NQYXRoOiBzdHJpbmcgPSAnJykgPT4gdGhpcy5yZWNpcGVzU2VydmljZS5vcGVuQmFza2V0KGFuYWx5dGljc1BhdGgpLFxuICAgICAgb3ZlcnJpZGVUcmFuc2ZlclVybDogKHVybDogc3RyaW5nKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLm5vU3VwcGxpZXIgJiYgdXJsKSB7XG4gICAgICAgICAgdGhpcy50cmFuc2ZlclVybEJhc2VPdmVycmlkZSA9IHVybDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgYmFza2V0U3luYzoge1xuICAgICAgZGVmaW5lUHVzaFByb2R1Y3RzVG9DYXJ0OiAocHVzaFByb2R1Y3RzVG9DYXJ0OiAoY29tcGFyYWJsZVByb2R1Y3RzOiBDb21wYXJhYmxlUHJvZHVjdFtdKSA9PiB2b2lkKSA9PiB7XG4gICAgICAgIHRoaXMuYmFza2V0SGFuZGxlci5wdXNoUHJvZHVjdHNUb1JldGFpbGVyQ2FydCA9IHB1c2hQcm9kdWN0c1RvQ2FydDtcbiAgICAgIH0sXG4gICAgICBkZWZpbmVBZGRQcm9kdWN0c1RvQ2FydDogKGFkZFByb2R1Y3RzVG9DYXJ0OiAoY29tcGFyYWJsZVByb2R1Y3RzOiBDb21wYXJhYmxlUHJvZHVjdFtdKSA9PiB2b2lkKSA9PiB7XG4gICAgICAgIHRoaXMuYmFza2V0SGFuZGxlci5hZGRQcm9kdWN0c1RvUmV0YWlsZXJDYXJ0ID0gYWRkUHJvZHVjdHNUb0NhcnQ7XG4gICAgICB9LFxuICAgICAgZGVmaW5lUmVtb3ZlUHJvZHVjdHNGcm9tQ2FydDogKHJlbW92ZVByb2R1Y3RzRnJvbUNhcnQ6IChjb21wYXJhYmxlUHJvZHVjdHM6IENvbXBhcmFibGVQcm9kdWN0W10pID0+IHZvaWQpID0+IHtcbiAgICAgICAgdGhpcy5iYXNrZXRIYW5kbGVyLnJlbW92ZVByb2R1Y3RzRnJvbVJldGFpbGVyQ2FydCA9IHJlbW92ZVByb2R1Y3RzRnJvbUNhcnQ7XG4gICAgICB9LFxuICAgICAgZGVmaW5lUHVzaEJhc2tldEVudHJpZXNUb0Jhc2tldDogKHB1c2hCYXNrZXRFbnRyaWVzVG9CYXNrZXQ6IChlbnRyaWVzOiBhbnlbXSkgPT4gdm9pZCkgPT4ge1xuICAgICAgICB0aGlzLmJhc2tldEhhbmRsZXIucHVzaEJhc2tldEVudHJpZXNUb0Jhc2tldCA9IHB1c2hCYXNrZXRFbnRyaWVzVG9CYXNrZXQ7XG4gICAgICB9LFxuICAgICAgcmV0YWlsZXJCYXNrZXRDaGFuZ2VkOiAoY29tcGFyYWJsZVByb2R1Y3RzOiBDb21wYXJhYmxlUHJvZHVjdFtdKTogdm9pZCA9PiB7XG4gICAgICAgIHRoaXMuYmFza2V0SGFuZGxlci5yZXRhaWxlckNhcnRDaGFuZ2VkKGNvbXBhcmFibGVQcm9kdWN0cyk7XG4gICAgICAgIHRoaXMuc3VwcGxpZXJzU2VydmljZS5sYXN0U3VwcGxpZXJDYXJ0ID0gY29tcGFyYWJsZVByb2R1Y3RzO1xuICAgICAgfSxcbiAgICAgIGhhbmRsZVBheW1lbnQ6ICh0b3RhbDogbnVtYmVyKTogdm9pZCA9PiB7XG4gICAgICAgIHRoaXMuYmFza2V0SGFuZGxlci5oYW5kbGVQYXltZW50KHRvdGFsKTtcbiAgICAgICAgdGhpcy5zdXBwbGllcnNTZXJ2aWNlLmxhc3RTdXBwbGllckNhcnQgPSBbXTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGNvbmZpZzoge1xuICAgICAgbWVhbHpMb2dzOiAocGFyYW06IHN0cmluZykgPT4ge1xuICAgICAgICB0aGlzLmxvZ0xldmVsJC5uZXh0KHBhcmFtKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGZlYXR1cmVzOiB7XG4gICAgICBlbmFibGVWaWRlb1JlY2lwZXM6ICgpID0+IHtcbiAgICAgICAgdGhpcy52aWRlb1JlY2lwZXNFbmFibGVkID0gdHJ1ZTtcbiAgICAgICAgLy8gSW5qZWN0IHlvdXR1YmUgc2NyaXB0XG4gICAgICAgIGNvbnN0IHRhZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuICAgICAgICB0YWcuc3JjID0gJ2h0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2lmcmFtZV9hcGknO1xuICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRhZyk7XG4gICAgICB9LFxuICAgICAgZW5hYmxlQXJ0aWNsZXNJbkNhdGFsb2c6ICgpID0+IHtcbiAgICAgICAgdGhpcy5hcnRpY2xlc0luQ2F0YWxvZ0VuYWJsZWQgPSB0cnVlO1xuICAgICAgfSxcbiAgICAgIGVuYWJsZVVzZXJQcmVmZXJlbmNlczogKCkgPT4ge1xuICAgICAgICB0aGlzLnVzZXJTZXJ2aWNlLnByZWZlcmVuY2VzQWN0aXZhdGVkJC5uZXh0KHRydWUpO1xuICAgICAgfSxcbiAgICAgIGVuYWJsZVRhZ3NPblJlY2lwZXM6ICgpID0+IHtcbiAgICAgICAgdGhpcy50YWdzT25SZWNpcGVzRW5hYmxlZCA9IHRydWU7XG4gICAgICB9LFxuICAgICAgZW5hYmxlTWVhbHNQbGFubmVyOiAodXJsOiBzdHJpbmcsIGFudGlJbmZsYXRpb24gPSBmYWxzZSkgPT4ge1xuICAgICAgICBpZiAoIXVybCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignWW91IG5lZWQgdG8gcHJvdmlkZSB0aGUgdXJsIGZvciB0aGUgbWVhbHMtcGxhbm5lciBwYWdlIHRvIGVuYWJsZSB0aGUgZmVhdHVyZScpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubWVhbHNQbGFubmVyVXJsID0gdXJsO1xuICAgICAgICB0aGlzLmFudGlJbmZsYXRpb24gPSBhbnRpSW5mbGF0aW9uO1xuICAgICAgICB0aGlzLmVuYWJsZU1lYWxzUGxhbm5lciQubmV4dCh0cnVlKTtcbiAgICAgIH0sXG4gICAgICBlbmFibGVTZW86ICgpID0+IHtcbiAgICAgICAgdGhpcy5zZW9FbmFibGVkID0gdHJ1ZTtcbiAgICAgIH0sXG4gICAgICBlbmFibGVHdWVzdHNJbnB1dE9uTXlNZWFsczogKCkgPT4ge1xuICAgICAgICB0aGlzLmd1ZXN0c0lucHV0T25NeU1lYWxzID0gdHJ1ZTtcbiAgICAgIH0sXG4gICAgICBjb2xsYXBzZVVuYXZhaWxhYmxlUHJvZHVjdHNCeURlZmF1bHQ6ICgpID0+IHtcbiAgICAgICAgdGhpcy5jb2xsYXBzZVVuYXZhaWxhYmxlUHJvZHVjdHMgPSB0cnVlO1xuICAgICAgfVxuICAgIH0sXG4gICAgaG9vazoge1xuICAgICAgc2V0SG9va0NhbGxiYWNrOiAoY2FsbGJhY2s6IChpc0xvZ2dlZCwgaXNQb3NWYWxpZCkgPT4gYm9vbGVhbikgPT4ge1xuICAgICAgICB0aGlzLmhvb2tDYWxsYmFjayA9IGNhbGxiYWNrO1xuICAgICAgfSxcbiAgICAgIHNldEZvcmNlUG9zQ2FsbGJhY2s6IChjYWxsYmFjazogKHBvc0V4dElkOiBzdHJpbmcpID0+IGJvb2xlYW4pID0+IHtcbiAgICAgICAgdGhpcy5mb3JjZVBvc0NhbGxiYWNrID0gY2FsbGJhY2s7XG4gICAgICB9XG4gICAgfSxcbiAgICBwb3M6IHtcbiAgICAgIGxvYWQ6IChleHRlcm5hbElkOiBzdHJpbmcpID0+IHtcbiAgICAgICAgaWYgKHRoaXMub3JpZ2luLnZhbHVlKSB7XG4gICAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ19taWFtL25vU3VwcGxpZXIvcG9zSWQnKTtcbiAgICAgICAgICB0aGlzLnBvc1NlcnZpY2UubG9hZFBvc1dpdGhFeHRJZChleHRlcm5hbElkKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBzdGFydCBNZWFsejogb3JpZ2luIGhhc25cXCd0IGJlZW4gc2V0Jyk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBnZXRCeUFkZHJlc3M6IHRoaXMucG9zU2VydmljZS5nZXRCeUFkZHJlc3MuYmluZCh0aGlzLnBvc1NlcnZpY2UpLFxuICAgICAgZ2V0QnlDb29yZGluYXRlczogdGhpcy5wb3NTZXJ2aWNlLmdldEJ5Q29vcmRpbmF0ZXMuYmluZCh0aGlzLnBvc1NlcnZpY2UpLFxuICAgICAgb3Blbk5vU3VwcGxpZXJPbmJvYXJkaW5nOiAoKSA9PiB0aGlzLnN0b3JlTG9jYXRvclNlcnZpY2Uuc2hvd05vU3VwcGxpZXJPbmJvYXJkaW5nLm5leHQodHJ1ZSlcbiAgICB9LFxuICAgIHJlY2lwZXM6IHtcbiAgICAgIGhpZGRlbjogdGhpcy5yZWNpcGVzU2VydmljZS5oaWRkZW4sXG4gICAgICBhZGRBbGxJbmdyZWRpZW50c0NUQVdhc0NsaWNrZWQ6IHRoaXMuYWRkQWxsUHJvZHVjdHNXYXNDbGlja2VkLFxuICAgICAgc2V0RGVmYXVsdEluZ3JlZGllbnRQaWN0dXJlOiAodXJsOiBzdHJpbmcpID0+IHRoaXMuZGVmYXVsdEluZ3JlZGllbnRQaWN0dXJlID0gdXJsLFxuICAgICAgc2V0RGVmYXVsdFJlY2lwZVBpY3R1cmU6ICh1cmw6IHN0cmluZykgPT4gdGhpcy5kZWZhdWx0UmVjaXBlUGljdHVyZSA9IHVybCxcbiAgICAgIC8vIFdlIGtlZXAgdGhvc2UganVzdCBpbiBjYXNlXG4gICAgICAvLyBzZXRSZWNpcGVzUHJpbWFyeUJ1dHRvbkFjdGlvbnM6IChkaXNwbGF5ID0gdHJ1ZSwgYWRkVG9CYXNrZXQgPSB0cnVlKSA9PiB7XG4gICAgICAvLyAgIHRoaXMucmVjaXBlc1NlcnZpY2Uuc2V0UmVjaXBlc1ByaW1hcnlCdXR0b25BY3Rpb25zKGRpc3BsYXksIGFkZFRvQmFza2V0KTtcbiAgICAgIC8vIH0sXG4gICAgICAvLyBzZXRTdWdnZXN0aW9uc1ByaW1hcnlCdXR0b25BY3Rpb25zOiAoZGlzcGxheSA9IHRydWUsIGFkZFRvQmFza2V0ID0gdHJ1ZSkgPT4ge1xuICAgICAgLy8gICB0aGlzLnJlY2lwZXNTZXJ2aWNlLnNldFN1Z2dlc3Rpb25zUHJpbWFyeUJ1dHRvbkFjdGlvbnMoZGlzcGxheSwgYWRkVG9CYXNrZXQpO1xuICAgICAgLy8gfSxcbiAgICAgIHNldERpZmZpY3VsdHlMZXZlbHM6IChsZXZlbHM6IHsgdmFsdWU6IG51bWJlcjsgbGFiZWw6IHN0cmluZyB9W10pID0+IHtcbiAgICAgICAgdGhpcy5yZWNpcGVzU2VydmljZS5kaWZmaWN1bHR5TGV2ZWxzID0gbGV2ZWxzO1xuICAgICAgfSxcbiAgICAgIHNob3dDb25maXJtYXRpb25Ub2FzdGVyOiAoKSA9PiB7XG4gICAgICAgIHRoaXMucmVjaXBlc1NlcnZpY2UuY29uZmlybWF0aW9uVG9hc3RlciA9IHRydWU7XG4gICAgICB9LFxuICAgICAgc2hvdWxkRGlzcGxheUluZ3JlZGllbnRQaWN0dXJlc09uUmVjaXBlQ2FyZHM6IChzaG91bGQ6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgdGhpcy5kaXNwbGF5SW5ncmVkaWVudFBpY3R1cmVzT25SZWNpcGVDYXJkcyA9IHNob3VsZDtcbiAgICAgIH1cbiAgICB9LFxuICAgIHJvdXRlcjoge1xuICAgICAgc2V0UmVjaXBlQ2F0YWxvZ1VybDogKHVybCA9ICcnKTogdm9pZCA9PiB7XG4gICAgICAgIHRoaXMuY2F0YWxvZ1VybCA9IHVybDtcbiAgICAgIH0sXG4gICAgICBzZXRSZWNpcGVJbmZvTGluazogKHVybCA9ICcnKTogdm9pZCA9PiB7XG4gICAgICAgIHRoaXMucmVjaXBlSW5mb1VybCA9IHVybDtcbiAgICAgIH0sXG4gICAgICBzZXRSZXRhaWxlckNhcnRVcmw6ICh1cmwgPSAnJyk6IHZvaWQgPT4ge1xuICAgICAgICB0aGlzLnJldGFpbGVyQ2FydFVybCA9IHVybDtcbiAgICAgIH0sXG4gICAgICBzZXRQcm9tb3Rpb25zVXJsOiAodXJsID0gJycpOiB2b2lkID0+IHtcbiAgICAgICAgdGhpcy5wcm9tb3Rpb25zVXJsID0gdXJsO1xuICAgICAgfVxuICAgIH0sXG4gICAgc3VwcGxpZXI6IHtcbiAgICAgIHNldE9yaWdpbjogKG9yaWdpbjogc3RyaW5nKSA9PiB7XG4gICAgICAgIGlmIChvcmlnaW4ubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHRoaXMuc2V0T3JpZ2luSWZOZWNlc3Nhcnkob3JpZ2luKTtcbiAgICAgICAgICB0aGlzLnJlY2lwZXNTZXJ2aWNlLmRpc3BsYXlSZWNpcGVJblVybCgpO1xuICAgICAgICAgIHRoaXMuaGlzdG9yeVNlcnZpY2UuZGlzcGxheUhpc3RvcnlEcmF3ZXIoKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGxvYWQ6IChzdXBwbGllcklkOiBudW1iZXIgfCBzdHJpbmcpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuc3VwcGxpZXJzU2VydmljZS5zdXBwbGllciQudmFsdWUpIHtcbiAgICAgICAgICB0aGlzLmJhc2tldEhhbmRsZXIucmVzZXRNZWFseigpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLm9yaWdpbi52YWx1ZSkge1xuICAgICAgICAgIHRoaXMuc3VwcGxpZXJzU2VydmljZS5sb2FkU3VwcGxpZXIoc3VwcGxpZXJJZC50b1N0cmluZygpKS5zdWJzY3JpYmUoKTtcbiAgICAgICAgICBpZiAoIXRoaXMubG9nZ2VkT25TZXNzaW9uKSB7XG4gICAgICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnX21pYW0vdXNlcklkJyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuZ2VuZXJhdGVBdXRobGVzc0lkSWZOZWNlc3NhcnkoKS5zdWJzY3JpYmUoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBzdGFydCBNZWFsejogb3JpZ2luIGhhc25cXCd0IGJlZW4gc2V0Jyk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBzZXR1cFdpdGhUb2tlbjogKHRva2VuOiBzdHJpbmcpID0+IHtcbiAgICAgICAgdGhpcy5zdXBwbGllcnNTZXJ2aWNlLnRva2VuID0gdG9rZW47XG4gICAgICAgIGNvbnN0IHBhcnNlZFRva2VuID0gSlNPTi5wYXJzZShhdG9iKHRva2VuKSkgYXNcbiAgICAgICAgICB7IG5vU3VwcGxpZXI/OiBib29sZWFuOyBzdXBwbGllcklkOiBzdHJpbmc7IG9yaWdpbjogc3RyaW5nOyBkb21haW46IHN0cmluZzsgb3JkZXJIaXN0b3J5PzogYm9vbGVhbiwgZGlzYWJsZUFuYWx5dGljcz86IGJvb2xlYW4gfTtcbiAgICAgICAgaWYgKCFwYXJzZWRUb2tlbi5vcmlnaW4gfHwgIXBhcnNlZFRva2VuLmRvbWFpbiB8fCAoIXBhcnNlZFRva2VuLnN1cHBsaWVySWQgJiYgIXBhcnNlZFRva2VuLm5vU3VwcGxpZXIpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCd0aGUgdG9rZW4gZG9lcyBub3QgaGF2ZSB0aGUgY29ycmVjdCBmb3JtYXQnKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm1lYWx6LnN1cHBsaWVyLnNldE9yaWdpbihwYXJzZWRUb2tlbi5vcmlnaW4pO1xuICAgICAgICB0aGlzLm1lYWx6LmFuYWx5dGljcy5pbml0KHBhcnNlZFRva2VuLmRvbWFpbik7XG4gICAgICAgIHRoaXMuY29udGV4dFJlZ2lzdHJ5U2VydmljZS5kaXNhYmxlZEFuYWx5dGljcyA9ICEhcGFyc2VkVG9rZW4uZGlzYWJsZUFuYWx5dGljcztcbiAgICAgICAgaWYgKHBhcnNlZFRva2VuLm9yZGVySGlzdG9yeSkge1xuICAgICAgICAgIHRoaXMub3JkZXJIaXN0b3J5RW5hYmxlZCA9IHBhcnNlZFRva2VuLm9yZGVySGlzdG9yeTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGFyc2VkVG9rZW4ubm9TdXBwbGllcikge1xuICAgICAgICAgIHRoaXMubG9hZFN0b3JlTG9jYXRvclBhY2thZ2UoKTtcbiAgICAgICAgICB0aGlzLm5vU3VwcGxpZXIgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuZmFrZUNhcnRTZXJ2aWNlLm1hdGNoTWVhbHpCYXNrZXQoKTtcbiAgICAgICAgICB0aGlzLm1lYWx6LnVzZXIucmVzZXQoKTtcbiAgICAgICAgICB0aGlzLnBvc1NlcnZpY2UucG9zRnJvbVN0b3JhZ2UoKTtcbiAgICAgICAgICB0aGlzLm1lYWx6LmJhc2tldFN5bmMuZGVmaW5lUHVzaFByb2R1Y3RzVG9DYXJ0KHByb2R1Y3RzID0+IHtcbiAgICAgICAgICAgIHRoaXMuZmFrZUNhcnRTZXJ2aWNlLnB1c2hUb0Zha2VDYXJ0KHByb2R1Y3RzKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLmJhc2tldEhhbmRsZXIubm9TdXBwbGllciQubmV4dCh0cnVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnX21pYW0vbm9TdXBwbGllci9wb3NJZCcpO1xuICAgICAgICAgIHRoaXMubWVhbHouc3VwcGxpZXIubG9hZChwYXJzZWRUb2tlbi5zdXBwbGllcklkKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGdldEFmZmlsaWF0ZVN1cHBsaWVyczogKCkgPT4gdGhpcy5zdXBwbGllcnNTZXJ2aWNlLmdldEFmZmlsaWF0ZVN1cHBsaWVycygpXG4gICAgfSxcbiAgICB1c2VyOiB7XG4gICAgICBsb2FkV2l0aEF1dGhsZXNzSWQ6IChpZCwgZm9yYmlkUHJvZmlsaW5nID0gZmFsc2UpID0+IHtcbiAgICAgICAgdGhpcy5jb250ZXh0UmVnaXN0cnlTZXJ2aWNlLmZvcmJpZFByb2ZpbGluZyA9IGZvcmJpZFByb2ZpbGluZztcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ19taWFtL2F1dGhsZXNzSWQnLCBpZCk7XG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdfbWlhbS9hdXRobGVzcy1mb3JiaWQtcHJvZmlsaW5nJywgJycgKyBmb3JiaWRQcm9maWxpbmcpO1xuICAgICAgfSxcbiAgICAgIGxvYWRXaXRoRXh0ZXJuYWxJZDogKGlkLCBmb3JiaWRQcm9maWxpbmcgPSBmYWxzZSwgaW5pdEJhc2tldCA9IGZhbHNlKSA9PiB7XG4gICAgICAgIHRoaXMuY29udGV4dFJlZ2lzdHJ5U2VydmljZS5mb3JiaWRQcm9maWxpbmcgPSBmb3JiaWRQcm9maWxpbmc7XG4gICAgICAgIHRoaXMubG9nZ2VkT25TZXNzaW9uID0gdHJ1ZTtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ19taWFtL3VzZXJJZCcsIGlkKTtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ19taWFtL3VzZXJUb2tlbicpO1xuICAgICAgICB0aGlzLmJhc2tldEhhbmRsZXIucmVzZXRNZWFseigpO1xuICAgICAgICByZXR1cm4gdGhpcy5sb2dVc2VyKGlkLCBmb3JiaWRQcm9maWxpbmcsIGluaXRCYXNrZXQpO1xuICAgICAgfSxcbiAgICAgIHJlc2V0OiAoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmxvZ2dlZE9uU2Vzc2lvbikge1xuICAgICAgICAgIHRoaXMuYmFza2V0SGFuZGxlci5yZXNldE1lYWx6KCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5sb2dnZWRPblNlc3Npb24gPSBmYWxzZTtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ19taWFtL3VzZXJUb2tlbicpO1xuICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnX21pYW0vdXNlcklkJyk7XG4gICAgICAgIHRoaXMudXNlclNlcnZpY2UudG9nZ2xlSXNMb2dnZWQoZmFsc2UpO1xuICAgICAgICB0aGlzLmdlbmVyYXRlQXV0aGxlc3NJZElmTmVjZXNzYXJ5KCkucGlwZShcbiAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgIHN3aXRjaE1hcChpZCA9PiB7XG4gICAgICAgICAgICBpZiAoaWQpIHtcbiAgICAgICAgICAgICAgdGhpcy51c2VyU2VydmljZS5yZXNldFVzZXJJbmZvKCk7XG4gICAgICAgICAgICAgIG1lYWx6RGVidWcoJ1tNZWFsel0gd2lsbCByZWZyZXNoIGJhc2tldCBhZnRlciByZXNldCcpO1xuICAgICAgICAgICAgICByZXR1cm4gdGhpcy5iYXNrZXRzU2VydmljZS5yZWZyZXNoQ3VycmVudEJhc2tldCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgICAgICAgIH0pXG4gICAgICAgICkuc3Vic2NyaWJlKCk7XG4gICAgICB9LFxuICAgICAgc2V0TGFuZ3VhZ2U6IChsYW5nOiBzdHJpbmcpID0+IHtcbiAgICAgICAgdGhpcy51c2VyU2VydmljZS5sYW5ndWFnZSA9IGxhbmc7XG4gICAgICB9LFxuICAgICAgc2V0RmF2b3JpdGVJdGVtczogZmF2b3JpdGVQcm9kdWN0SWRzID0+IHRoaXMudXNlclNlcnZpY2Uuc2V0RmF2b3JpdGVJdGVtcyhmYXZvcml0ZVByb2R1Y3RJZHMpLFxuICAgICAgc2V0TG9jYXRpb246IChjb29yZHM6IEdlb2xvY2F0aW9uUG9zaXRpb24pID0+IHRoaXMudXNlclNlcnZpY2UudXNlckNvb3JkaW5hdGVzJC5uZXh0KGNvb3JkcyB8fCBudWxsKSxcbiAgICAgIHVwZGF0ZUZvcmJpZFByb2ZpbGluZzogKGZvcmJpZFByb2ZpbGluZzogYm9vbGVhbiwgdXNlcklkOiBzdHJpbmcsIGlzQXV0aGxlc3MgPSBmYWxzZSkgPT4ge1xuICAgICAgICBpZiAoaXNBdXRobGVzcykge1xuICAgICAgICAgIHRoaXMubWVhbHoudXNlci5sb2FkV2l0aEF1dGhsZXNzSWQodXNlcklkLCBmb3JiaWRQcm9maWxpbmcpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIHRoaXMubG9nVXNlcih1c2VySWQsIGZvcmJpZFByb2ZpbGluZywgZmFsc2UpLnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBldmVudHM6IHtcbiAgICAgIHN0b3JlTG9jYXRvck9wZW5lZDogKCkgPT4gdGhpcy5zdG9yZUxvY2F0b3JTZXJ2aWNlLnN0b3JlTG9jYXRvck9wZW5lZCQucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKVxuICAgIH0sXG4gICAgc2V0U3RpY2t5SGVhZGVySGVpZ2h0OiAoaGVpZ2h0OiBudW1iZXIpOiB2b2lkID0+IHtcbiAgICAgIGlmICh0aGlzLnN1cHBsaWVySGVhZGVySGVpZ2h0JC52YWx1ZSAhPT0gaGVpZ2h0KSB7XG4gICAgICAgIHRoaXMuc3VwcGxpZXJIZWFkZXJIZWlnaHQkLm5leHQoaGVpZ2h0KTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogT3ZlcnJpZGUgdHdvIHRpbWVzICdsbCBub3QgYmUgY29uc2lkZXJlZFxuICAgICAqIEBwYXJhbSBpY29uIGhhdmUgdG8gYmUgYSBrbm93ZWQgaWNvbiBuYW1lIHNlZSBzZWN0aW9uICdDdXN0b20gaWNvbnMnIGluIHJlYWQgbWVcbiAgICAgKiBAcGFyYW0gdXJsIG9mIHRoZSBuZXcgaWNvblxuICAgICAqL1xuICAgIG92ZXJyaWRlSWNvbjogKGljb24sIHVybCkgPT4geyAvLyBUT0RPOiBNT1ZFIFRPIGNvbnRlbnRcbiAgICAgIGlmICghdGhpcy5pY29ucykge1xuICAgICAgICB0aGlzLmljb25zID0gW107XG4gICAgICB9XG4gICAgICBjb25zdCBpY29uSW5kZXggPSB0aGlzLmljb25zLmZpbmRJbmRleCgoaTogSWNvbk92ZXJyaWRlKSA9PiBpLmljb24gPT09IGljb24pO1xuICAgICAgaWYgKGljb25JbmRleCA+IC0xKSB7XG4gICAgICAgIHRoaXMuaWNvbnNbaWNvbkluZGV4XSA9IHsgaWNvbiwgdXJsIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmljb25zLnB1c2goeyBpY29uLCB1cmwgfSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBzZXREZWZhdWx0U2Nyb2xsRWxlbWVudEdldHRlcjogKGNhbGxiYWNrOiAoKSA9PiBIVE1MRWxlbWVudCkgPT4gdGhpcy5kZWZhdWx0U2Nyb2xsRWxlbWVudEdldHRlciA9IGNhbGxiYWNrXG4gIH07XG5cbiAgbWVhbHpJbnRlcm5hbDogTWVhbHpJbnRlcm5hbEludGVyZmFjZSA9IHtcbiAgICBhbmFseXRpY3M6IHtcbiAgICAgIHNlbmRFdmVudDogKG5hbWU6IHN0cmluZywgcGF0aDogc3RyaW5nLCBwcm9wczogUGxhdXNpYmxlUHJvcHMpID0+XG4gICAgICAgIHRoaXMuYW5hbHl0aWNzU2VydmljZS5zZW5kRXZlbnQobmFtZSwgcGF0aCwgcHJvcHMpLFxuICAgICAgc2V0SXNNZWFselBhZ2U6IChpc01lYWx6UGFnZTogYm9vbGVhbikgPT4ge1xuICAgICAgICB0aGlzLmFuYWx5dGljc1NlcnZpY2UuaXNNZWFselBhZ2UgPSBpc01lYWx6UGFnZTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGJhc2tldDoge1xuICAgICAgcmVjaXBlUHJpY2VzSW5CYXNrZXQkOiAoKSA9PiB0aGlzLmJhc2tldHNTZXJ2aWNlLnJlY2lwZXNJbkJhc2tldCQoKSxcbiAgICAgIHJlY2lwZXNBZGRlZFRvQmFza2V0JDogKCkgPT4gdGhpcy5iYXNrZXRzU2VydmljZS5yZWNpcGVzQWRkZWQsXG4gICAgICB3YWl0Rm9yQmFza2V0RW50cmllczogKCkgPT4gdGhpcy5iYXNrZXRzU2VydmljZS53YWl0Rm9yQmFza2V0LnBpcGUoc3dpdGNoTWFwKCgpID0+IHRoaXMuYmFza2V0c1NlcnZpY2Uud2FpdEZvckJhc2tldEVudHJpZXMpKVxuICAgIH0sXG4gICAgY2F0YWxvZzoge1xuICAgICAgb3BlblByZWZlcmVuY2VzOiAoKTogdm9pZCA9PiB7XG4gICAgICAgIHRoaXMuaXNQcmVmZXJlbmNlc1NTUiA9IHRydWU7XG4gICAgICAgIHRoaXMucHJlZmVyZW5jZXNTZXJ2aWNlLmlzT3BlbmVkJC5uZXh0KHRydWUpO1xuICAgICAgfSxcbiAgICAgIHByZWZlcmVuY2VzTW9kYWxDaGFuZ2VkOiAoKSA9PiB0aGlzLnByZWZlcmVuY2VzQ2hhbmdlZCxcbiAgICAgIHByZWZlcmVuY2VzQ291bnQ6ICgpOiBPYnNlcnZhYmxlPG51bWJlcj4gPT4gdGhpcy5wcmVmZXJlbmNlc1NlcnZpY2UuY3VycmVudFByZWZlcmVuY2VzTnVtYmVyLFxuICAgICAgbG9hZE1vcmVSZWNpcGVzOiAocGFja2FnZUlkLCBwYWdlLCBwYWdlU2l6ZSwgZ3Vlc3RzKTogT2JzZXJ2YWJsZTxSZWNpcGVbXT4gPT5cbiAgICAgICAgdGhpcy5yZWNpcGVzU2VydmljZS5sb2FkUmVjaXBlc0Zyb21QYWNrYWdlSWQocGFja2FnZUlkLCBwYWdlLCBwYWdlU2l6ZSwgZ3Vlc3RzKVxuICAgIH0sXG4gICAgY29uZmlnOiB7XG4gICAgICBsb2dMZXZlbDogdGhpcy5sb2dMZXZlbCRcbiAgICB9LFxuICAgIHJlY2lwZXM6IHtcbiAgICAgIG9wZW5EZXRhaWxzOiAocmVjaXBlSWQ6IHN0cmluZywgZ3Vlc3RzOiBudW1iZXIsIGluaXRpYWxUYWJJbmRleDogbnVtYmVyLCBwYXRoOiBzdHJpbmcgPSAnJywgY2F0ZWdvcnlJZDogc3RyaW5nID0gbnVsbCkgPT5cbiAgICAgICAgdGhpcy5yZWNpcGVzU2VydmljZS5vcGVuUmVjaXBlRGV0YWlscyhyZWNpcGVJZCwgZ3Vlc3RzLCBpbml0aWFsVGFiSW5kZXgsIHBhdGgsIGNhdGVnb3J5SWQpLFxuICAgICAgdXBkYXRlUmVjaXBlTGlrZTogKHJlY2lwZUxpa2VJZDogc3RyaW5nLCByZWNpcGVJZDogc3RyaW5nLCBpc1Bhc3Q6IGJvb2xlYW4sIHBhdGg6IHN0cmluZyA9ICcnKSA9PiB7XG4gICAgICAgIGNvbnN0IGV2ZW50VHJhY2U6IEV2ZW50VHJhY2UgPSB7IG9yaWdpblBhdGg6IHBhdGgsIHByb3BzOiB7IHJlY2lwZV9pZDogcmVjaXBlSWQgfSB9O1xuICAgICAgICBjb25zdCByZWNpcGVMaWtlID0gdGhpcy5yZWNpcGVMaWtlc1NlcnZpY2UucHJlcGFyZVJlY2lwZUxpa2VGb3JVcGRhdGUocmVjaXBlSWQsIHJlY2lwZUxpa2VJZCwgaXNQYXN0KTtcblxuICAgICAgICB0aGlzLnJlY2lwZUxpa2VzU2VydmljZS51cGRhdGVMaWtlKHJlY2lwZUlkLCByZWNpcGVMaWtlLCBldmVudFRyYWNlKTtcbiAgICAgIH0sXG4gICAgICByZWNpcGVMaWtlVXBkYXRlZDogKCkgPT4gdGhpcy5yZWNpcGVMaWtlc1NlcnZpY2UucmVjaXBlTGlrZVVwZGF0ZWQkLFxuICAgICAgZ3Vlc3RzVXBkYXRlZDogKCkgPT4gdGhpcy5ndWVzdHNDaGFuZ2VkLFxuICAgICAgcmVjaXBlUHJpY2VVcGRhdGVkOiAoKSA9PiB0aGlzLnJlY2lwZVByaWNlQ2hhbmdlZCxcbiAgICAgIGZldGNoUHJpY2luZzogKHJlY2lwZUlkOiBzdHJpbmcsIHBvc0lkOiBzdHJpbmcsIHByaWNlYm9va0tleTogc3RyaW5nLCBzZXJ2ZXM6IG51bWJlcikgPT4ge1xuICAgICAgICBpZiAoIXJlY2lwZUlkIHx8ICFwb3NJZCB8fCAhc2VydmVzKSB7XG4gICAgICAgICAgcmV0dXJuIChvZihudWxsKSBhcyBPYnNlcnZhYmxlPFJlY2lwZVByaWNpbmc+KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5yZWNpcGVzU2VydmljZS5nZXRQcmljaW5nKHJlY2lwZUlkLCBwb3NJZCwgcHJpY2Vib29rS2V5LCBzZXJ2ZXMpLnBpcGUoXG4gICAgICAgICAgc2tpcFdoaWxlKHJlc3VsdCA9PiByZXN1bHQucHJpY2UgPT09IDApXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSxcbiAgICBzdXBwbGllcjoge1xuICAgICAgZ2V0VG9rZW46ICgpID0+IHRoaXMuc3VwcGxpZXJzU2VydmljZS50b2tlblxuICAgIH0sXG4gICAgdXNlcjoge1xuICAgICAgZ2V0TGFuZ3VhZ2U6ICgpID0+IHRoaXMudXNlclNlcnZpY2UubGFuZ3VhZ2UsXG4gICAgICBpc0F1dGhlbnRpY2F0ZWQ6ICgpID0+IHRoaXMudXNlclNlcnZpY2UuaXNMb2dnZWQkLFxuICAgICAgc2V0U2Vzc2lvbklkOiAoc2Vzc2lvbklkOiBzdHJpbmcpID0+IHtcbiAgICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgnX21pYW0vc2Vzc2lvbklkJywgc2Vzc2lvbklkKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGdldFN0aWNreUhlYWRlckhlaWdodDogKCkgPT4gdGhpcy5zdXBwbGllckhlYWRlckhlaWdodCRcbiAgfTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHBvc1NlcnZpY2U6IFBvaW50T2ZTYWxlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBiYXNrZXRzU2VydmljZTogQmFza2V0c1NlcnZpY2UsXG4gICAgcHJpdmF0ZSB1c2VyU2VydmljZTogVXNlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwcmVmZXJlbmNlc1NlcnZpY2U6IFByZWZlcmVuY2VzU2VydmljZSxcbiAgICBwcml2YXRlIGFuYWx5dGljc1NlcnZpY2U6IEFuYWx5dGljc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWNpcGVzU2VydmljZTogUmVjaXBlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBiYXNrZXRSZWNpcGVDbGVhbnVwU2VydmljZTogQmFza2V0UmVjaXBlQ2xlYW51cFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBtZWRpYU1hdGNoZXI6IE1lZGlhTWF0Y2hlcixcbiAgICBwcml2YXRlIHN1cHBsaWVyc1NlcnZpY2U6IFN1cHBsaWVyc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBicmVha3BvaW50T2JzZXJ2ZXI6IEJyZWFrcG9pbnRPYnNlcnZlcixcbiAgICAvLyBwcml2YXRlIGJhc2tldEhhbmRsZXI6IExlZ2FjeUJhc2tldHNTeW5jaHJvbml6ZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgYmFza2V0SGFuZGxlcjogQmFza2V0c1N5bmNocm9uaXplclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzdG9yZUxvY2F0b3JTZXJ2aWNlOiBTdG9yZUxvY2F0b3JTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVjaXBlTGlrZXNTZXJ2aWNlOiBSZWNpcGVMaWtlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBmYWtlQ2FydFNlcnZpY2U6IEZha2VSZXRhaWxlckNhcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgaGlzdG9yeVNlcnZpY2U6IEhpc3RvcnlTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29udGV4dFJlZ2lzdHJ5U2VydmljZTogQ29udGV4dFJlZ2lzdHJ5U2VydmljZVxuICApIHtcbiAgICB0aGlzLmlzU21hbGxTY3JlZW4kLm5leHQoIXRoaXMubWVkaWFNYXRjaGVyLm1hdGNoTWVkaWEoU01BTExfU0NSRUVOX0JQKS5tYXRjaGVzKTtcbiAgICB0aGlzLmJyZWFrcG9pbnRPYnNlcnZlci5vYnNlcnZlKFNNQUxMX1NDUkVFTl9CUCkuc3Vic2NyaWJlKEJQQ2hhbmdlID0+IHRoaXMuaXNTbWFsbFNjcmVlbiQubmV4dCghQlBDaGFuZ2UubWF0Y2hlcykpO1xuICAgIHRoaXMuaWNvbnMgPSBbXTtcbiAgICB0aGlzLkNPUlNJc3N1ZXMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcbiAgICBPYmplY3QuYXNzaWduKHdpbmRvdywge1xuICAgICAgbWVhbHo6IHRoaXMubWVhbHosXG4gICAgICBtZWFsekludGVybmFsOiB0aGlzLm1lYWx6SW50ZXJuYWxcbiAgICB9KTtcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgaG9va0NhbGxiYWNrOiAoaXNMb2dnZWQsIGlzUG9zVmFsaWQpID0+IGJvb2xlYW4gPSAoaXNMb2dnZWQsIGlzUG9zVmFsaWQpID0+IHtcbiAgICBtZWFseldhcm4oJ1tNZWFsel0gaG9va0NhbGxiYWNrICh1c2VkIHRvIGZvcmNlIHVzZXIgbG9naW4pIG5vdCBzZXQnKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH07XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICBmb3JjZVBvc0NhbGxiYWNrOiAocG9zRXh0SWQ6IHN0cmluZykgPT4gYm9vbGVhbiA9IChwb3NFeHRJZDogc3RyaW5nKSA9PiB7XG4gICAgbWVhbHpXYXJuKCdbTWVhbHpdIGZvcmNlUG9zQ2FsbGJhY2sgKHVzZWQgdG8gZm9yY2Ugc2VsZWN0ZWQgc2hvcCkgbm90IHNldCcpO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfTtcblxuICBkZWZhdWx0U2Nyb2xsRWxlbWVudEdldHRlcjogKCkgPT4gSFRNTEVsZW1lbnQgPSAoKSA9PiBkb2N1bWVudC5ib2R5O1xuXG4gIHNldENPUlNJc3N1ZVN0YXRlKHZhbHVlOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5DT1JTSXNzdWVzLm5leHQodmFsdWUpO1xuICB9XG5cbiAgZ2V0Q09SU0lzc3Vlc1N0YXRlKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLkNPUlNJc3N1ZXMuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBnZXRPdmVycmlkZUljb25VcmwoaWNvbjogSWNvbik6IHN0cmluZyB7XG4gICAgY29uc3QgZmluZGljb24gPSB0aGlzLmljb25zLmZpbmQoZWwgPT4gZWwuaWNvbiA9PT0gaWNvbik7XG4gICAgcmV0dXJuIGZpbmRpY29uID8gZmluZGljb24udXJsIDogJyc7XG4gIH1cblxuICBwcml2YXRlIHNldE9yaWdpbklmTmVjZXNzYXJ5KG9yaWdpbjogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKG9yaWdpbiAmJiB0aGlzLm9yaWdpbi52YWx1ZSAhPT0gb3JpZ2luKSB7XG4gICAgICB0aGlzLm9yaWdpbi5uZXh0KG9yaWdpbik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBvbkJhc2tldEFuZFBvc1NlbmRQYXltZW50U3RhcnRlZEV2ZW50KHRvdGFsUHJpY2U6IG51bWJlcik6IHZvaWQge1xuICAgIGZvcmtKb2luKFtcbiAgICAgIHRoaXMuYmFza2V0c1NlcnZpY2Uud2FpdEZvckJhc2tldCxcbiAgICAgIHRoaXMucG9zU2VydmljZS53YWl0Rm9yUG9zLnBpcGUodGFrZSgxKSlcbiAgICBdKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgIGNvbnN0IGJhc2tldCA9IHJlc1swXTtcbiAgICAgIGNvbnN0IHBvcyA9IHJlc1sxXTtcbiAgICAgIGlmIChiYXNrZXQudG90YWxQcmljZSA+IDApIHtcbiAgICAgICAgdGhpcy5hbmFseXRpY3NTZXJ2aWNlLnNlbmRFdmVudChcbiAgICAgICAgICAncGF5bWVudC5zdGFydGVkJyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiYXNrZXRfaWQ6IGJhc2tldC5pZCxcbiAgICAgICAgICAgIG1pYW1fYW1vdW50OiBiYXNrZXQudG90YWxQcmljZS50b1N0cmluZygpLFxuICAgICAgICAgICAgdG90YWxfYW1vdW50OiB0b3RhbFByaWNlLnRvU3RyaW5nKCksXG4gICAgICAgICAgICBwb3NfaWQ6IHRoaXMucG9zU2VydmljZS5wb3MkLmdldFZhbHVlKCkuaWQsXG4gICAgICAgICAgICBwb3NfbmFtZTogdGhpcy5wb3NTZXJ2aWNlLnBvcyQuZ2V0VmFsdWUoKS5hdHRyaWJ1dGVzLm5hbWUsXG4gICAgICAgICAgICBzdXBwbGllcl9pZDogdGhpcy5wb3NTZXJ2aWNlLnBvcyQuZ2V0VmFsdWUoKS5yZWxhdGlvbnNoaXBzLnN1cHBsaWVyLmRhdGEuaWQsXG4gICAgICAgICAgICByZWNpcGVfY291bnQ6IGJhc2tldC5yZWNpcGVJbmZvcy5sZW5ndGgudG9TdHJpbmcoKSxcbiAgICAgICAgICAgIG1pYW1fcHJvZHVjdHM6IGJhc2tldC5lbnRyaWVzLmxlbmd0aC50b1N0cmluZygpXG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2dVc2VyKHRva2VuT3JJZDogc3RyaW5nLCBmb3JiaWRQcm9maWxpbmc6IGJvb2xlYW4sIGluaXRCYXNrZXQ6IGJvb2xlYW4pOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGlmICh0b2tlbk9ySWQpIHtcbiAgICAgIHRoaXMudXNlclNlcnZpY2UudG9nZ2xlSXNMb2dnZWQodHJ1ZSk7XG4gICAgfVxuICAgIC8vIGlmIGluaXRCYXNrZXQgaXMgc2V0IHRvIGZhbHNlLCB0aGUgYmFza2V0ICYgbGlzdCB3aWxsIG5vdCBiZSBpbml0aWFsaXNlZCB1bnRpbCB0aGUgZmlyc3QgdGltZSB0aGV5IGFyZSBuZWVkZWRcbiAgICBpZiAoaW5pdEJhc2tldCkge1xuICAgICAgdGhpcy5iYXNrZXRzU2VydmljZS5pbml0QmFza2V0KCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnVzZXJTZXJ2aWNlLmdlbmVyYXRpbmdBdXRobGVzc0lkJC5waXBlKFxuICAgICAgc2tpcFdoaWxlKGdlbmVyYXRpbmcgPT4gZ2VuZXJhdGluZyksXG4gICAgICB0YWtlKDEpLFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHtcbiAgICAgICAgaWYgKCEhbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ19taWFtL2F1dGhsZXNzSWQnKSkge1xuICAgICAgICAgIHJldHVybiB0aGlzLmJhc2tldHNTZXJ2aWNlLnJlbG9hZEJhc2tldCgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICAgIH0pLFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMudXNlclNlcnZpY2Uuc2V0VXNlckluZm8oZm9yYmlkUHJvZmlsaW5nKVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGxvYWRTdG9yZUxvY2F0b3JQYWNrYWdlKCk6IHZvaWQge1xuICAgIGNvbnN0IHN0b3JlTG9jYXRvclNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuICAgIHN0b3JlTG9jYXRvclNjcmlwdC5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCAnbW9kdWxlJyk7XG4gICAgc3RvcmVMb2NhdG9yU2NyaXB0LnNldEF0dHJpYnV0ZSgnc3JjJywgYCR7ZW52aXJvbm1lbnQubWVhbHpDb21wb25lbnRzfS9zdG9yZS1sb2NhdG9yL3N0b3JlLWxvY2F0b3IubWluLmpzYCk7XG4gICAgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChzdG9yZUxvY2F0b3JTY3JpcHQpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZW5lcmF0ZUF1dGhsZXNzSWRJZk5lY2Vzc2FyeSgpOiBPYnNlcnZhYmxlPHN0cmluZyB8IHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy51c2VyU2VydmljZS5nZW5lcmF0aW5nQXV0aGxlc3NJZCQucGlwZShcbiAgICAgIGRlYm91bmNlVGltZSg4MDApLFxuICAgICAgdGFrZSgxKSxcbiAgICAgIHN3aXRjaE1hcChpc0dlbmVyYXRpbmcgPT4ge1xuICAgICAgICBpZiAoaXNHZW5lcmF0aW5nIHx8IHRoaXMubG9nZ2VkT25TZXNzaW9uIHx8ICEhbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ19taWFtL2F1dGhsZXNzSWQnKSkge1xuICAgICAgICAgIHJldHVybiBvZjx2b2lkPihudWxsKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy51c2VyU2VydmljZS5nZW5lcmF0ZUFub255bW91c1VzZXJJZCgpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNldEJhc2tldCgpIHtcbiAgICB0aGlzLmJhc2tldHNTZXJ2aWNlLndhaXRGb3JCYXNrZXRFbnRyaWVzXG4gICAgICAucGlwZShtYXAoKGVudHJpZXM6IEJhc2tldEVudHJ5W10pID0+XG4gICAgICAgIGVudHJpZXNcbiAgICAgICAgICAuZmlsdGVyKGVudHJ5ID0+IGVudHJ5LnN0YXR1cyA9PT0gJ2FjdGl2ZScpXG4gICAgICAgICAgLm1hcChlbnRyeSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjbG9uZWRFbnRyeSA9IGRlZXBDbG9uZVdpdGhDbGFzcyhlbnRyeSkgYXMgQmFza2V0RW50cnk7XG4gICAgICAgICAgICBjbG9uZWRFbnRyeS5xdWFudGl0eSA9IDA7XG4gICAgICAgICAgICByZXR1cm4gY2xvbmVkRW50cnk7XG4gICAgICAgICAgfSlcbiAgICAgICkpLnN1YnNjcmliZSgoY2xvbmVkRW50cmllc1RvUmVtb3ZlOiBCYXNrZXRFbnRyeVtdKSA9PiB7XG4gICAgICAgIGlmIChjbG9uZWRFbnRyaWVzVG9SZW1vdmUubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgdGhpcy5iYXNrZXRzU2VydmljZS5yZXNldEJhc2tldCgpLnN1YnNjcmliZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVzZXRCYXNrZXQgPSBjbG9uZWRFbnRyaWVzVG9SZW1vdmUubWFwKGVudHJ5ID0+IG5ldyBSZXNldEJhc2tldEFjdGlvbihlbnRyeSwge30sIHRoaXMuYmFza2V0c1NlcnZpY2UpKTtcbiAgICAgICAgdGhpcy5iYXNrZXRIYW5kbGVyLmFkZFRvQWN0aW9uTGlzdChyZXNldEJhc2tldCk7XG4gICAgICAgIGlmIChyZXNldEJhc2tldC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgcmVzZXRCYXNrZXRbcmVzZXRCYXNrZXQubGVuZ3RoIC0gMV0ub25TdWNjZXNzLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuYmFza2V0c1NlcnZpY2UucmVzZXRCYXNrZXQoKS5zdWJzY3JpYmUoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cbn1cbiJdfQ==
535
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctbWlhbS9zcmMvbGliL19zZXJ2aWNlcy9jb250ZXh0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpELE9BQU8sRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqRSxPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXJHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBUWxGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzFELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLG1CQUFtQixF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QUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztZQUM5RyxJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUNoRCxJQUFJLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUMxQixXQUFXLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7b0JBQ3pFLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ2hELENBQUMsQ0FBQyxDQUFDO2FBQ0o7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7OzRFQTVoQlUsY0FBYztzREFBZCxjQUFjLFdBQWQsY0FBYyxtQkFGYixNQUFNO3VGQUVQLGNBQWM7Y0FIMUIsVUFBVTtlQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQnJlYWtwb2ludE9ic2VydmVyLCBNZWRpYU1hdGNoZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvbGF5b3V0JztcbmltcG9ydCB7IEV2ZW50RW1pdHRlciwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUGxhdXNpYmxlUHJvcHMgfSBmcm9tICdtZWFsei1zaGFyZWQtYW5hbHl0aWNzJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZm9ya0pvaW4sIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAsIHNraXBXaGlsZSwgc3dpdGNoTWFwLCB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQmFza2V0RW50cnksIFJlY2lwZSwgVXNlciB9IGZyb20gJy4uL19tb2RlbHMnO1xuaW1wb3J0IHsgUmVzZXRCYXNrZXRBY3Rpb24gfSBmcm9tICcuLi9fbW9kZWxzL2Jhc2tldC1hY3Rpb25zL3Jlc2V0LWJhc2tldC1hY3Rpb24nO1xuaW1wb3J0IHsgUmVjaXBlUHJpY2luZyB9IGZyb20gJy4uL19tb2RlbHMvcmVjaXBlLXByaWNpbmcnO1xuaW1wb3J0IHsgQ29tcGFyYWJsZVByb2R1Y3QgfSBmcm9tICcuLi9fdHlwZXMvYnVpbGRlZC9jb21wYXJhYmxlLXByb2R1Y3QnO1xuaW1wb3J0IHsgTWVhbHpJbnRlcmZhY2UgfSBmcm9tICcuLi9fdHlwZXMvYnVpbGRlZC9tZWFsei1pbnRlcmZhY2UnO1xuaW1wb3J0IHsgTWVhbHpJbnRlcm5hbEludGVyZmFjZSB9IGZyb20gJy4uL190eXBlcy9idWlsZGVkL21lYWx6LWludGVybmFsLWludGVyZmFjZSc7XG5pbXBvcnQgeyBFdmVudEpvdXJuZXkgfSBmcm9tICcuLi9fdHlwZXMvZXZlbnQtam91cm5leS5lbnVtJztcbmltcG9ydCB7IEV2ZW50VHJhY2UgfSBmcm9tICcuLi9fdHlwZXMvZXZlbnQtdHJhY2UnO1xuaW1wb3J0IHsgSWNvbiB9IGZyb20gJy4uL190eXBlcy9pY29uLmVudW0nO1xuaW1wb3J0IHsgZGVlcENsb25lV2l0aENsYXNzIH0gZnJvbSAnLi4vX3V0aWxzL21ldGhvZHMvZGVlcENsb25lJztcbmltcG9ydCB7IG1lYWx6RGVidWcsIG1lYWx6V2FybiB9IGZyb20gJy4uL191dGlscy9tZXRob2RzL2xvZ2dpbmcnO1xuaW1wb3J0IHsgZW52aXJvbm1lbnQgfSBmcm9tICcuLi9lbnZpcm9ubWVudHMvZW52aXJvbm1lbnQnO1xuaW1wb3J0IHsgQW5hbHl0aWNzU2VydmljZSB9IGZyb20gJy4vYW5hbHl0aWNzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQmFza2V0c1N5bmNocm9uaXplclNlcnZpY2UgfSBmcm9tICcuL2Jhc2tldHMtc3luY2hyb25pemluZyc7XG5pbXBvcnQgeyBCYXNrZXRzU2VydmljZSB9IGZyb20gJy4vYmFza2V0cy5zZXJ2aWNlJztcbmltcG9ydCB7IENvbnRleHRSZWdpc3RyeVNlcnZpY2UgfSBmcm9tICcuL2NvbnRleHQtcmVnaXN0cnkuc2VydmljZSc7XG5pbXBvcnQgeyBGYWtlUmV0YWlsZXJDYXJ0U2VydmljZSB9IGZyb20gJy4vZmFrZS1yZXRhaWxlci1jYXJ0LnNlcnZpY2UnO1xuaW1wb3J0IHsgSGlzdG9yeVNlcnZpY2UgfSBmcm9tICcuL2hpc3Rvcnkuc2VydmljZSc7XG5pbXBvcnQgeyBQb2ludE9mU2FsZXNTZXJ2aWNlIH0gZnJvbSAnLi9wb2ludC1vZi1zYWxlcy5zZXJ2aWNlJztcbmltcG9ydCB7IFByZWZlcmVuY2VzU2VydmljZSB9IGZyb20gJy4vcHJlZmVyZW5jZXMuc2VydmljZSc7XG5pbXBvcnQgeyBSZWNpcGVMaWtlc1NlcnZpY2UgfSBmcm9tICcuL3JlY2lwZS1saWtlcy5zZXJ2aWNlJztcbmltcG9ydCB7IFJlY2lwZXNTZXJ2aWNlIH0gZnJvbSAnLi9yZWNpcGVzLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3RvcmVMb2NhdG9yU2VydmljZSB9IGZyb20gJy4vc3RvcmUtbG9jYXRvci5zZXJ2aWNlJztcbmltcG9ydCB7IFN1cHBsaWVyc1NlcnZpY2UgfSBmcm9tICcuL3N1cHBsaWVycy5zZXJ2aWNlJztcbmltcG9ydCB7IFVzZXJTZXJ2aWNlIH0gZnJvbSAnLi91c2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQmFza2V0UmVjaXBlQ2xlYW51cFNlcnZpY2UgfSBmcm9tICcuL2Jhc2tldC1yZWNpcGUtY2xlYW51cC5zZXJ2aWNlJztcblxuY29uc3QgU01BTExfU0NSRUVOX0JQID0gJyhtaW4td2lkdGg6IDEwMjNweCknO1xuXG5pbnRlcmZhY2UgSWNvbk92ZXJyaWRlIHtcbiAgaWNvbjogSWNvbjtcbiAgdXJsOiBzdHJpbmc7XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIENvbnRleHRTZXJ2aWNlIHtcbiAgdXNlckluZm86IFVzZXI7XG4gIGljb25zOiBJY29uT3ZlcnJpZGVbXTtcbiAgdmlkZW9SZWNpcGVzRW5hYmxlZCA9IGZhbHNlO1xuICBhcnRpY2xlc0luQ2F0YWxvZ0VuYWJsZWQgPSBmYWxzZTtcbiAgdGFnc09uUmVjaXBlc0VuYWJsZWQgPSBmYWxzZTtcbiAgc2VvRW5hYmxlZCA9IGZhbHNlO1xuICBkZWZhdWx0SW5ncmVkaWVudFBpY3R1cmUgPSAnaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Fzc2V0cy5taWFtLnRlY2gvZ2VuZXJpYy9pbWFnZXMvZGVmYXVsdC1pbmdyZWRpZW50LXBpY3R1cmUuc3ZnJztcbiAgZGVmYXVsdFJlY2lwZVBpY3R1cmUgPSAnaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Fzc2V0cy5taWFtLnRlY2gvZ2VuZXJpYy9pbWFnZXMvcGxhY2Vob2xkZXIucG5nJztcbiAgZ2xvYmFsU2Nyb2xsYWJsZUVsZW1lbnQ6IEhUTUxFbGVtZW50ID0gZG9jdW1lbnQuYm9keTtcbiAgaXNTbWFsbFNjcmVlbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcbiAgb3JpZ2luOiBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPihudWxsKTtcbiAgc3VwcGxpZXJIZWFkZXJIZWlnaHQkOiBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigwKTtcbiAgbG9nTGV2ZWwkID0gbmV3IEJlaGF2aW9yU3ViamVjdCgnYWxsJyk7XG4gIGNhdGFsb2dVcmwgPSAnJztcbiAgcmVjaXBlSW5mb1VybCA9ICcnO1xuICByZXRhaWxlckNhcnRVcmwgPSAnJztcbiAgcHJvbW90aW9uc1VybCA9ICcnO1xuICBtZWFsc1BsYW5uZXJVcmwgPSAnJztcbiAgYW50aUluZmxhdGlvbiA9IGZhbHNlO1xuICBkaXNwbGF5SW5ncmVkaWVudFBpY3R1cmVzT25SZWNpcGVDYXJkcyA9IGZhbHNlO1xuICBndWVzdHNJbnB1dE9uTXlNZWFscyA9IGZhbHNlO1xuICBjb2xsYXBzZVVuYXZhaWxhYmxlUHJvZHVjdHMgPSBmYWxzZTtcbiAgbm9TdXBwbGllciA9IGZhbHNlO1xuICBsb2dnZWRPblNlc3Npb24gPSBmYWxzZTtcbiAgaXNQcmVmZXJlbmNlc1NTUiA9IGZhbHNlO1xuICBvcmRlckhpc3RvcnlFbmFibGVkID0gZmFsc2U7XG4gIHRyYW5zZmVyVXJsQmFzZU92ZXJyaWRlOiBzdHJpbmc7XG5cbiAgZW5hYmxlTWVhbHNQbGFubmVyJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuXG4gIGFkZEFsbFByb2R1Y3RzV2FzQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8eyBpbmdyZWRpZW50c0FkZGVkOiBudW1iZXI7IGluZ3JlZGllbnRzVG90YWw6IG51bWJlciB9PigpO1xuICBndWVzdHNDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjx7IGd1ZXN0czogbnVtYmVyOyByZWNpcGVJZDogc3RyaW5nIH0+KCk7XG4gIHJlY2lwZVByaWNlQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8eyByZW1haW5pbmc6IG51bWJlcjsgaW5CYXNrZXQ6IG51bWJlcjsgcmVjaXBlSWQ6IHN0cmluZyB9PigpO1xuICBwcmVmZXJlbmNlc0NoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgcHJpdmF0ZSBDT1JTSXNzdWVzOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj47XG5cbiAgbWVhbHo6IE1lYWx6SW50ZXJmYWNlID0ge1xuICAgIHBheW1lbnRTdGFydGVkOiB0b3RhbFByaWNlID0+IHtcbiAgICAgIG1lYWx6RGVidWcoJ1tNZWFsel0gc2VuZCBwYXltZW50U3RhcnRlZCBldmVudCcpO1xuICAgICAgdGhpcy5vbkJhc2tldEFuZFBvc1NlbmRQYXltZW50U3RhcnRlZEV2ZW50KHRvdGFsUHJpY2UpO1xuICAgIH0sXG4gICAgYW5hbHl0aWNzOiB7XG4gICAgICBpbml0OiAoZG9tYWluOiBzdHJpbmcpID0+IHtcbiAgICAgICAgdGhpcy5hbmFseXRpY3NTZXJ2aWNlLmluaXQoZG9tYWluKTtcbiAgICAgIH0sXG4gICAgICBldmVudFNlbnQkOiB0aGlzLmFuYWx5dGljc1NlcnZpY2UuZXZlbnRFbWl0dGVyLFxuICAgICAgc2V0QWJUZXN0S2V5OiBrZXkgPT4gdGhpcy5hbmFseXRpY3NTZXJ2aWNlLnNldEFiVGVzdEtleShrZXkpXG4gICAgfSxcbiAgICBiYXNrZXQ6IHtcbiAgICAgIGJhc2tldElzUmVhZHkkOiB0aGlzLmJhc2tldHNTZXJ2aWNlLmJhc2tldFN0YXRzJC5waXBlKFxuICAgICAgICBza2lwV2hpbGUoc3RhdHMgPT4gIXN0YXRzKSxcbiAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgbWFwKCgpID0+IHRydWUpXG4gICAgICApLFxuICAgICAgaW5pdGlhbGl6ZTogKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5vcmlnaW4udmFsdWUpIHtcbiAgICAgICAgICB0aGlzLmJhc2tldHNTZXJ2aWNlLmluaXRCYXNrZXQoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBzdGFydCBNZWFsejogb3JpZ2luIGhhc25cXCd0IGJlZW4gc2V0Jyk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICByZXNldDogKCkgPT4ge1xuICAgICAgICB0aGlzLnJlc2V0QmFza2V0KCk7XG4gICAgICB9LFxuICAgICAgcmVjaXBlQ291bnQ6ICgpID0+XG4gICAgICAgIHRoaXMuYmFza2V0c1NlcnZpY2Uud2FpdEZvckJhc2tldC5waXBlKFxuICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmJhc2tldHNTZXJ2aWNlLmJhc2tldFN0YXRzJCksXG4gICAgICAgICAgc2tpcFdoaWxlKGJzID0+ICFicyksXG4gICAgICAgICAgbWFwKGJzID0+IGJzLnJlY2lwZXNDb3VudCksXG4gICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxuICAgICAgICApLFxuICAgICAgb3BlblByZXZpZXc6IChhbmFseXRpY3NQYXRoOiBzdHJpbmcgPSAnJykgPT4gdGhpcy5yZWNpcGVzU2VydmljZS5vcGVuQmFza2V0KGFuYWx5dGljc1BhdGgpLFxuICAgICAgb3ZlcnJpZGVUcmFuc2ZlclVybDogKHVybDogc3RyaW5nKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLm5vU3VwcGxpZXIgJiYgdXJsKSB7XG4gICAgICAgICAgdGhpcy50cmFuc2ZlclVybEJhc2VPdmVycmlkZSA9IHVybDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgYmFza2V0U3luYzoge1xuICAgICAgZGVmaW5lUHVzaFByb2R1Y3RzVG9DYXJ0OiAocHVzaFByb2R1Y3RzVG9DYXJ0OiAoY29tcGFyYWJsZVByb2R1Y3RzOiBDb21wYXJhYmxlUHJvZHVjdFtdKSA9PiB2b2lkKSA9PiB7XG4gICAgICAgIHRoaXMuYmFza2V0SGFuZGxlci5wdXNoUHJvZHVjdHNUb1JldGFpbGVyQ2FydCA9IHB1c2hQcm9kdWN0c1RvQ2FydDtcbiAgICAgIH0sXG4gICAgICBkZWZpbmVBZGRQcm9kdWN0c1RvQ2FydDogKGFkZFByb2R1Y3RzVG9DYXJ0OiAoY29tcGFyYWJsZVByb2R1Y3RzOiBDb21wYXJhYmxlUHJvZHVjdFtdKSA9PiB2b2lkKSA9PiB7XG4gICAgICAgIHRoaXMuYmFza2V0SGFuZGxlci5hZGRQcm9kdWN0c1RvUmV0YWlsZXJDYXJ0ID0gYWRkUHJvZHVjdHNUb0NhcnQ7XG4gICAgICB9LFxuICAgICAgZGVmaW5lUmVtb3ZlUHJvZHVjdHNGcm9tQ2FydDogKHJlbW92ZVByb2R1Y3RzRnJvbUNhcnQ6IChjb21wYXJhYmxlUHJvZHVjdHM6IENvbXBhcmFibGVQcm9kdWN0W10pID0+IHZvaWQpID0+IHtcbiAgICAgICAgdGhpcy5iYXNrZXRIYW5kbGVyLnJlbW92ZVByb2R1Y3RzRnJvbVJldGFpbGVyQ2FydCA9IHJlbW92ZVByb2R1Y3RzRnJvbUNhcnQ7XG4gICAgICB9LFxuICAgICAgZGVmaW5lUHVzaEJhc2tldEVudHJpZXNUb0Jhc2tldDogKHB1c2hCYXNrZXRFbnRyaWVzVG9CYXNrZXQ6IChlbnRyaWVzOiBhbnlbXSkgPT4gdm9pZCkgPT4ge1xuICAgICAgICB0aGlzLmJhc2tldEhhbmRsZXIucHVzaEJhc2tldEVudHJpZXNUb0Jhc2tldCA9IHB1c2hCYXNrZXRFbnRyaWVzVG9CYXNrZXQ7XG4gICAgICB9LFxuICAgICAgcmV0YWlsZXJCYXNrZXRDaGFuZ2VkOiAoY29tcGFyYWJsZVByb2R1Y3RzOiBDb21wYXJhYmxlUHJvZHVjdFtdKTogdm9pZCA9PiB7XG4gICAgICAgIHRoaXMuYmFza2V0SGFuZGxlci5yZXRhaWxlckNhcnRDaGFuZ2VkKGNvbXBhcmFibGVQcm9kdWN0cyk7XG4gICAgICAgIHRoaXMuc3VwcGxpZXJzU2VydmljZS5sYXN0U3VwcGxpZXJDYXJ0ID0gY29tcGFyYWJsZVByb2R1Y3RzO1xuICAgICAgfSxcbiAgICAgIGhhbmRsZVBheW1lbnQ6ICh0b3RhbDogbnVtYmVyKTogdm9pZCA9PiB7XG4gICAgICAgIHRoaXMuYmFza2V0SGFuZGxlci5oYW5kbGVQYXltZW50KHRvdGFsKTtcbiAgICAgICAgdGhpcy5zdXBwbGllcnNTZXJ2aWNlLmxhc3RTdXBwbGllckNhcnQgPSBbXTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGNvbmZpZzoge1xuICAgICAgbWVhbHpMb2dzOiAocGFyYW06IHN0cmluZykgPT4ge1xuICAgICAgICB0aGlzLmxvZ0xldmVsJC5uZXh0KHBhcmFtKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGZlYXR1cmVzOiB7XG4gICAgICBlbmFibGVWaWRlb1JlY2lwZXM6ICgpID0+IHtcbiAgICAgICAgdGhpcy52aWRlb1JlY2lwZXNFbmFibGVkID0gdHJ1ZTtcbiAgICAgICAgLy8gSW5qZWN0IHlvdXR1YmUgc2NyaXB0XG4gICAgICAgIGNvbnN0IHRhZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuICAgICAgICB0YWcuc3JjID0gJ2h0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2lmcmFtZV9hcGknO1xuICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRhZyk7XG4gICAgICB9LFxuICAgICAgZW5hYmxlQXJ0aWNsZXNJbkNhdGFsb2c6ICgpID0+IHtcbiAgICAgICAgdGhpcy5hcnRpY2xlc0luQ2F0YWxvZ0VuYWJsZWQgPSB0cnVlO1xuICAgICAgfSxcbiAgICAgIGVuYWJsZVVzZXJQcmVmZXJlbmNlczogKCkgPT4ge1xuICAgICAgICB0aGlzLnVzZXJTZXJ2aWNlLnByZWZlcmVuY2VzQWN0aXZhdGVkJC5uZXh0KHRydWUpO1xuICAgICAgfSxcbiAgICAgIGVuYWJsZVRhZ3NPblJlY2lwZXM6ICgpID0+IHtcbiAgICAgICAgdGhpcy50YWdzT25SZWNpcGVzRW5hYmxlZCA9IHRydWU7XG4gICAgICB9LFxuICAgICAgZW5hYmxlTWVhbHNQbGFubmVyOiAodXJsOiBzdHJpbmcsIGFudGlJbmZsYXRpb24gPSBmYWxzZSkgPT4ge1xuICAgICAgICBpZiAoIXVybCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignWW91IG5lZWQgdG8gcHJvdmlkZSB0aGUgdXJsIGZvciB0aGUgbWVhbHMtcGxhbm5lciBwYWdlIHRvIGVuYWJsZSB0aGUgZmVhdHVyZScpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubWVhbHNQbGFubmVyVXJsID0gdXJsO1xuICAgICAgICB0aGlzLmFudGlJbmZsYXRpb24gPSBhbnRpSW5mbGF0aW9uO1xuICAgICAgICB0aGlzLmVuYWJsZU1lYWxzUGxhbm5lciQubmV4dCh0cnVlKTtcbiAgICAgIH0sXG4gICAgICBlbmFibGVTZW86ICgpID0+IHtcbiAgICAgICAgdGhpcy5zZW9FbmFibGVkID0gdHJ1ZTtcbiAgICAgIH0sXG4gICAgICBlbmFibGVHdWVzdHNJbnB1dE9uTXlNZWFsczogKCkgPT4ge1xuICAgICAgICB0aGlzLmd1ZXN0c0lucHV0T25NeU1lYWxzID0gdHJ1ZTtcbiAgICAgIH0sXG4gICAgICBjb2xsYXBzZVVuYXZhaWxhYmxlUHJvZHVjdHNCeURlZmF1bHQ6ICgpID0+IHtcbiAgICAgICAgdGhpcy5jb2xsYXBzZVVuYXZhaWxhYmxlUHJvZHVjdHMgPSB0cnVlO1xuICAgICAgfVxuICAgIH0sXG4gICAgaG9vazoge1xuICAgICAgc2V0SG9va0NhbGxiYWNrOiAoY2FsbGJhY2s6IChpc0xvZ2dlZCwgaXNQb3NWYWxpZCkgPT4gYm9vbGVhbikgPT4ge1xuICAgICAgICB0aGlzLmhvb2tDYWxsYmFjayA9IGNhbGxiYWNrO1xuICAgICAgfSxcbiAgICAgIHNldEZvcmNlUG9zQ2FsbGJhY2s6IChjYWxsYmFjazogKHBvc0V4dElkOiBzdHJpbmcpID0+IGJvb2xlYW4pID0+IHtcbiAgICAgICAgdGhpcy5mb3JjZVBvc0NhbGxiYWNrID0gY2FsbGJhY2s7XG4gICAgICB9XG4gICAgfSxcbiAgICBwb3M6IHtcbiAgICAgIGxvYWQ6IChleHRlcm5hbElkOiBzdHJpbmcpID0+IHtcbiAgICAgICAgaWYgKHRoaXMub3JpZ2luLnZhbHVlKSB7XG4gICAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ19taWFtL25vU3VwcGxpZXIvcG9zSWQnKTtcbiAgICAgICAgICB0aGlzLnBvc1NlcnZpY2UubG9hZFBvc1dpdGhFeHRJZChleHRlcm5hbElkKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBzdGFydCBNZWFsejogb3JpZ2luIGhhc25cXCd0IGJlZW4gc2V0Jyk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBnZXRCeUFkZHJlc3M6IHRoaXMucG9zU2VydmljZS5nZXRCeUFkZHJlc3MuYmluZCh0aGlzLnBvc1NlcnZpY2UpLFxuICAgICAgZ2V0QnlDb29yZGluYXRlczogdGhpcy5wb3NTZXJ2aWNlLmdldEJ5Q29vcmRpbmF0ZXMuYmluZCh0aGlzLnBvc1NlcnZpY2UpLFxuICAgICAgb3Blbk5vU3VwcGxpZXJPbmJvYXJkaW5nOiAoKSA9PiB0aGlzLnN0b3JlTG9jYXRvclNlcnZpY2Uuc2hvd05vU3VwcGxpZXJPbmJvYXJkaW5nLm5leHQodHJ1ZSlcbiAgICB9LFxuICAgIHJlY2lwZXM6IHtcbiAgICAgIGhpZGRlbjogdGhpcy5yZWNpcGVzU2VydmljZS5oaWRkZW4sXG4gICAgICBhZGRBbGxJbmdyZWRpZW50c0NUQVdhc0NsaWNrZWQ6IHRoaXMuYWRkQWxsUHJvZHVjdHNXYXNDbGlja2VkLFxuICAgICAgc2V0RGVmYXVsdEluZ3JlZGllbnRQaWN0dXJlOiAodXJsOiBzdHJpbmcpID0+IHRoaXMuZGVmYXVsdEluZ3JlZGllbnRQaWN0dXJlID0gdXJsLFxuICAgICAgc2V0RGVmYXVsdFJlY2lwZVBpY3R1cmU6ICh1cmw6IHN0cmluZykgPT4gdGhpcy5kZWZhdWx0UmVjaXBlUGljdHVyZSA9IHVybCxcbiAgICAgIC8vIFdlIGtlZXAgdGhvc2UganVzdCBpbiBjYXNlXG4gICAgICAvLyBzZXRSZWNpcGVzUHJpbWFyeUJ1dHRvbkFjdGlvbnM6IChkaXNwbGF5ID0gdHJ1ZSwgYWRkVG9CYXNrZXQgPSB0cnVlKSA9PiB7XG4gICAgICAvLyAgIHRoaXMucmVjaXBlc1NlcnZpY2Uuc2V0UmVjaXBlc1ByaW1hcnlCdXR0b25BY3Rpb25zKGRpc3BsYXksIGFkZFRvQmFza2V0KTtcbiAgICAgIC8vIH0sXG4gICAgICAvLyBzZXRTdWdnZXN0aW9uc1ByaW1hcnlCdXR0b25BY3Rpb25zOiAoZGlzcGxheSA9IHRydWUsIGFkZFRvQmFza2V0ID0gdHJ1ZSkgPT4ge1xuICAgICAgLy8gICB0aGlzLnJlY2lwZXNTZXJ2aWNlLnNldFN1Z2dlc3Rpb25zUHJpbWFyeUJ1dHRvbkFjdGlvbnMoZGlzcGxheSwgYWRkVG9CYXNrZXQpO1xuICAgICAgLy8gfSxcbiAgICAgIHNldERpZmZpY3VsdHlMZXZlbHM6IChsZXZlbHM6IHsgdmFsdWU6IG51bWJlcjsgbGFiZWw6IHN0cmluZyB9W10pID0+IHtcbiAgICAgICAgdGhpcy5yZWNpcGVzU2VydmljZS5kaWZmaWN1bHR5TGV2ZWxzID0gbGV2ZWxzO1xuICAgICAgfSxcbiAgICAgIHNob3dDb25maXJtYXRpb25Ub2FzdGVyOiAoKSA9PiB7XG4gICAgICAgIHRoaXMucmVjaXBlc1NlcnZpY2UuY29uZmlybWF0aW9uVG9hc3RlciA9IHRydWU7XG4gICAgICB9LFxuICAgICAgc2hvdWxkRGlzcGxheUluZ3JlZGllbnRQaWN0dXJlc09uUmVjaXBlQ2FyZHM6IChzaG91bGQ6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgdGhpcy5kaXNwbGF5SW5ncmVkaWVudFBpY3R1cmVzT25SZWNpcGVDYXJkcyA9IHNob3VsZDtcbiAgICAgIH1cbiAgICB9LFxuICAgIHJvdXRlcjoge1xuICAgICAgc2V0UmVjaXBlQ2F0YWxvZ1VybDogKHVybCA9ICcnKTogdm9pZCA9PiB7XG4gICAgICAgIHRoaXMuY2F0YWxvZ1VybCA9IHVybDtcbiAgICAgIH0sXG4gICAgICBzZXRSZWNpcGVJbmZvTGluazogKHVybCA9ICcnKTogdm9pZCA9PiB7XG4gICAgICAgIHRoaXMucmVjaXBlSW5mb1VybCA9IHVybDtcbiAgICAgIH0sXG4gICAgICBzZXRSZXRhaWxlckNhcnRVcmw6ICh1cmwgPSAnJyk6IHZvaWQgPT4ge1xuICAgICAgICB0aGlzLnJldGFpbGVyQ2FydFVybCA9IHVybDtcbiAgICAgIH0sXG4gICAgICBzZXRQcm9tb3Rpb25zVXJsOiAodXJsID0gJycpOiB2b2lkID0+IHtcbiAgICAgICAgdGhpcy5wcm9tb3Rpb25zVXJsID0gdXJsO1xuICAgICAgfVxuICAgIH0sXG4gICAgc3VwcGxpZXI6IHtcbiAgICAgIHNldE9yaWdpbjogKG9yaWdpbjogc3RyaW5nKSA9PiB7XG4gICAgICAgIGlmIChvcmlnaW4ubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHRoaXMuc2V0T3JpZ2luSWZOZWNlc3Nhcnkob3JpZ2luKTtcbiAgICAgICAgICB0aGlzLnJlY2lwZXNTZXJ2aWNlLmRpc3BsYXlSZWNpcGVJblVybCgpO1xuICAgICAgICAgIHRoaXMuaGlzdG9yeVNlcnZpY2UuZGlzcGxheUhpc3RvcnlEcmF3ZXIoKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGxvYWQ6IChzdXBwbGllcklkOiBudW1iZXIgfCBzdHJpbmcpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuc3VwcGxpZXJzU2VydmljZS5zdXBwbGllciQudmFsdWUpIHtcbiAgICAgICAgICB0aGlzLmJhc2tldEhhbmRsZXIucmVzZXRNZWFseigpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLm9yaWdpbi52YWx1ZSkge1xuICAgICAgICAgIHRoaXMuc3VwcGxpZXJzU2VydmljZS5sb2FkU3VwcGxpZXIoc3VwcGxpZXJJZC50b1N0cmluZygpKS5zdWJzY3JpYmUoKTtcbiAgICAgICAgICBpZiAoIXRoaXMubG9nZ2VkT25TZXNzaW9uKSB7XG4gICAgICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnX21pYW0vdXNlcklkJyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuZ2VuZXJhdGVBdXRobGVzc0lkSWZOZWNlc3NhcnkoKS5zdWJzY3JpYmUoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBzdGFydCBNZWFsejogb3JpZ2luIGhhc25cXCd0IGJlZW4gc2V0Jyk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBzZXR1cFdpdGhUb2tlbjogKHRva2VuOiBzdHJpbmcpID0+IHtcbiAgICAgICAgdGhpcy5zdXBwbGllcnNTZXJ2aWNlLnRva2VuID0gdG9rZW47XG4gICAgICAgIGNvbnN0IHBhcnNlZFRva2VuID0gSlNPTi5wYXJzZShhdG9iKHRva2VuKSkgYXNcbiAgICAgICAgICB7IG5vU3VwcGxpZXI/OiBib29sZWFuOyBzdXBwbGllcklkOiBzdHJpbmc7IG9yaWdpbjogc3RyaW5nOyBkb21haW46IHN0cmluZzsgb3JkZXJIaXN0b3J5PzogYm9vbGVhbiwgZGlzYWJsZUFuYWx5dGljcz86IGJvb2xlYW4gfTtcbiAgICAgICAgaWYgKCFwYXJzZWRUb2tlbi5vcmlnaW4gfHwgIXBhcnNlZFRva2VuLmRvbWFpbiB8fCAoIXBhcnNlZFRva2VuLnN1cHBsaWVySWQgJiYgIXBhcnNlZFRva2VuLm5vU3VwcGxpZXIpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCd0aGUgdG9rZW4gZG9lcyBub3QgaGF2ZSB0aGUgY29ycmVjdCBmb3JtYXQnKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm1lYWx6LnN1cHBsaWVyLnNldE9yaWdpbihwYXJzZWRUb2tlbi5vcmlnaW4pO1xuICAgICAgICB0aGlzLm1lYWx6LmFuYWx5dGljcy5pbml0KHBhcnNlZFRva2VuLmRvbWFpbik7XG4gICAgICAgIHRoaXMuY29udGV4dFJlZ2lzdHJ5U2VydmljZS5kaXNhYmxlZEFuYWx5dGljcyA9ICEhcGFyc2VkVG9rZW4uZGlzYWJsZUFuYWx5dGljcztcbiAgICAgICAgaWYgKHBhcnNlZFRva2VuLm9yZGVySGlzdG9yeSkge1xuICAgICAgICAgIHRoaXMub3JkZXJIaXN0b3J5RW5hYmxlZCA9IHBhcnNlZFRva2VuLm9yZGVySGlzdG9yeTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGFyc2VkVG9rZW4ubm9TdXBwbGllcikge1xuICAgICAgICAgIHRoaXMubG9hZFN0b3JlTG9jYXRvclBhY2thZ2UoKTtcbiAgICAgICAgICB0aGlzLm5vU3VwcGxpZXIgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuZmFrZUNhcnRTZXJ2aWNlLm1hdGNoTWVhbHpCYXNrZXQoKTtcbiAgICAgICAgICB0aGlzLm1lYWx6LnVzZXIucmVzZXQoKTtcbiAgICAgICAgICB0aGlzLnBvc1NlcnZpY2UucG9zRnJvbVN0b3JhZ2UoKTtcbiAgICAgICAgICB0aGlzLm1lYWx6LmJhc2tldFN5bmMuZGVmaW5lUHVzaFByb2R1Y3RzVG9DYXJ0KHByb2R1Y3RzID0+IHtcbiAgICAgICAgICAgIHRoaXMuZmFrZUNhcnRTZXJ2aWNlLnB1c2hUb0Zha2VDYXJ0KHByb2R1Y3RzKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLmJhc2tldEhhbmRsZXIubm9TdXBwbGllciQubmV4dCh0cnVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnX21pYW0vbm9TdXBwbGllci9wb3NJZCcpO1xuICAgICAgICAgIHRoaXMubWVhbHouc3VwcGxpZXIubG9hZChwYXJzZWRUb2tlbi5zdXBwbGllcklkKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGdldEFmZmlsaWF0ZVN1cHBsaWVyczogKCkgPT4gdGhpcy5zdXBwbGllcnNTZXJ2aWNlLmdldEFmZmlsaWF0ZVN1cHBsaWVycygpXG4gICAgfSxcbiAgICB1c2VyOiB7XG4gICAgICBsb2FkV2l0aEF1dGhsZXNzSWQ6IChpZCwgZm9yYmlkUHJvZmlsaW5nID0gZmFsc2UpID0+IHtcbiAgICAgICAgdGhpcy5jb250ZXh0UmVnaXN0cnlTZXJ2aWNlLmZvcmJpZFByb2ZpbGluZyA9IGZvcmJpZFByb2ZpbGluZztcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ19taWFtL2F1dGhsZXNzSWQnLCBpZCk7XG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdfbWlhbS9hdXRobGVzcy1mb3JiaWQtcHJvZmlsaW5nJywgJycgKyBmb3JiaWRQcm9maWxpbmcpO1xuICAgICAgfSxcbiAgICAgIGxvYWRXaXRoRXh0ZXJuYWxJZDogKGlkLCBmb3JiaWRQcm9maWxpbmcgPSBmYWxzZSwgaW5pdEJhc2tldCA9IGZhbHNlKSA9PiB7XG4gICAgICAgIHRoaXMuY29udGV4dFJlZ2lzdHJ5U2VydmljZS5mb3JiaWRQcm9maWxpbmcgPSBmb3JiaWRQcm9maWxpbmc7XG4gICAgICAgIHRoaXMubG9nZ2VkT25TZXNzaW9uID0gdHJ1ZTtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ19taWFtL3VzZXJJZCcsIGlkKTtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ19taWFtL3VzZXJUb2tlbicpO1xuICAgICAgICB0aGlzLmJhc2tldEhhbmRsZXIucmVzZXRNZWFseigpO1xuICAgICAgICByZXR1cm4gdGhpcy5sb2dVc2VyKGlkLCBmb3JiaWRQcm9maWxpbmcsIGluaXRCYXNrZXQpO1xuICAgICAgfSxcbiAgICAgIHJlc2V0OiAoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmxvZ2dlZE9uU2Vzc2lvbikge1xuICAgICAgICAgIHRoaXMuYmFza2V0SGFuZGxlci5yZXNldE1lYWx6KCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5sb2dnZWRPblNlc3Npb24gPSBmYWxzZTtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ19taWFtL3VzZXJUb2tlbicpO1xuICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnX21pYW0vdXNlcklkJyk7XG4gICAgICAgIHRoaXMudXNlclNlcnZpY2UudG9nZ2xlSXNMb2dnZWQoZmFsc2UpO1xuICAgICAgICB0aGlzLmdlbmVyYXRlQXV0aGxlc3NJZElmTmVjZXNzYXJ5KCkucGlwZShcbiAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgIHN3aXRjaE1hcChpZCA9PiB7XG4gICAgICAgICAgICBpZiAoaWQpIHtcbiAgICAgICAgICAgICAgdGhpcy51c2VyU2VydmljZS5yZXNldFVzZXJJbmZvKCk7XG4gICAgICAgICAgICAgIG1lYWx6RGVidWcoJ1tNZWFsel0gd2lsbCByZWZyZXNoIGJhc2tldCBhZnRlciByZXNldCcpO1xuICAgICAgICAgICAgICByZXR1cm4gdGhpcy5iYXNrZXRzU2VydmljZS5yZWZyZXNoQ3VycmVudEJhc2tldCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgICAgICAgIH0pXG4gICAgICAgICkuc3Vic2NyaWJlKCk7XG4gICAgICB9LFxuICAgICAgc2V0TGFuZ3VhZ2U6IChsYW5nOiBzdHJpbmcpID0+IHtcbiAgICAgICAgdGhpcy51c2VyU2VydmljZS5sYW5ndWFnZSA9IGxhbmc7XG4gICAgICB9LFxuICAgICAgc2V0RmF2b3JpdGVJdGVtczogZmF2b3JpdGVQcm9kdWN0SWRzID0+IHRoaXMudXNlclNlcnZpY2Uuc2V0RmF2b3JpdGVJdGVtcyhmYXZvcml0ZVByb2R1Y3RJZHMpLFxuICAgICAgc2V0TG9jYXRpb246IChjb29yZHM6IEdlb2xvY2F0aW9uUG9zaXRpb24pID0+IHRoaXMudXNlclNlcnZpY2UudXNlckNvb3JkaW5hdGVzJC5uZXh0KGNvb3JkcyB8fCBudWxsKSxcbiAgICAgIHVwZGF0ZUZvcmJpZFByb2ZpbGluZzogKGZvcmJpZFByb2ZpbGluZzogYm9vbGVhbiwgdXNlcklkOiBzdHJpbmcsIGlzQXV0aGxlc3MgPSBmYWxzZSkgPT4ge1xuICAgICAgICBpZiAoaXNBdXRobGVzcykge1xuICAgICAgICAgIHRoaXMubWVhbHoudXNlci5sb2FkV2l0aEF1dGhsZXNzSWQodXNlcklkLCBmb3JiaWRQcm9maWxpbmcpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIHRoaXMubG9nVXNlcih1c2VySWQsIGZvcmJpZFByb2ZpbGluZywgZmFsc2UpLnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBldmVudHM6IHtcbiAgICAgIHN0b3JlTG9jYXRvck9wZW5lZDogKCkgPT4gdGhpcy5zdG9yZUxvY2F0b3JTZXJ2aWNlLnN0b3JlTG9jYXRvck9wZW5lZCQucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKVxuICAgIH0sXG4gICAgc2V0U3RpY2t5SGVhZGVySGVpZ2h0OiAoaGVpZ2h0OiBudW1iZXIpOiB2b2lkID0+IHtcbiAgICAgIGlmICh0aGlzLnN1cHBsaWVySGVhZGVySGVpZ2h0JC52YWx1ZSAhPT0gaGVpZ2h0KSB7XG4gICAgICAgIHRoaXMuc3VwcGxpZXJIZWFkZXJIZWlnaHQkLm5leHQoaGVpZ2h0KTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogT3ZlcnJpZGUgdHdvIHRpbWVzICdsbCBub3QgYmUgY29uc2lkZXJlZFxuICAgICAqIEBwYXJhbSBpY29uIGhhdmUgdG8gYmUgYSBrbm93ZWQgaWNvbiBuYW1lIHNlZSBzZWN0aW9uICdDdXN0b20gaWNvbnMnIGluIHJlYWQgbWVcbiAgICAgKiBAcGFyYW0gdXJsIG9mIHRoZSBuZXcgaWNvblxuICAgICAqL1xuICAgIG92ZXJyaWRlSWNvbjogKGljb24sIHVybCkgPT4geyAvLyBUT0RPOiBNT1ZFIFRPIGNvbnRlbnRcbiAgICAgIGlmICghdGhpcy5pY29ucykge1xuICAgICAgICB0aGlzLmljb25zID0gW107XG4gICAgICB9XG4gICAgICBjb25zdCBpY29uSW5kZXggPSB0aGlzLmljb25zLmZpbmRJbmRleCgoaTogSWNvbk92ZXJyaWRlKSA9PiBpLmljb24gPT09IGljb24pO1xuICAgICAgaWYgKGljb25JbmRleCA+IC0xKSB7XG4gICAgICAgIHRoaXMuaWNvbnNbaWNvbkluZGV4XSA9IHsgaWNvbiwgdXJsIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmljb25zLnB1c2goeyBpY29uLCB1cmwgfSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBzZXREZWZhdWx0U2Nyb2xsRWxlbWVudEdldHRlcjogKGNhbGxiYWNrOiAoKSA9PiBIVE1MRWxlbWVudCkgPT4gdGhpcy5kZWZhdWx0U2Nyb2xsRWxlbWVudEdldHRlciA9IGNhbGxiYWNrXG4gIH07XG5cbiAgbWVhbHpJbnRlcm5hbDogTWVhbHpJbnRlcm5hbEludGVyZmFjZSA9IHtcbiAgICBhbmFseXRpY3M6IHtcbiAgICAgIHNlbmRFdmVudDogKG5hbWU6IHN0cmluZywgcGF0aDogc3RyaW5nLCBwcm9wczogUGxhdXNpYmxlUHJvcHMpID0+XG4gICAgICAgIHRoaXMuYW5hbHl0aWNzU2VydmljZS5zZW5kRXZlbnQobmFtZSwgcGF0aCwgcHJvcHMpLFxuICAgICAgc2V0SXNNZWFselBhZ2U6IChpc01lYWx6UGFnZTogYm9vbGVhbikgPT4ge1xuICAgICAgICB0aGlzLmFuYWx5dGljc1NlcnZpY2UuaXNNZWFselBhZ2UgPSBpc01lYWx6UGFnZTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGJhc2tldDoge1xuICAgICAgcmVjaXBlUHJpY2VzSW5CYXNrZXQkOiAoKSA9PiB0aGlzLmJhc2tldHNTZXJ2aWNlLnJlY2lwZXNJbkJhc2tldCQoKSxcbiAgICAgIHJlY2lwZXNBZGRlZFRvQmFza2V0JDogKCkgPT4gdGhpcy5iYXNrZXRzU2VydmljZS5yZWNpcGVzQWRkZWQsXG4gICAgICB3YWl0Rm9yQmFza2V0RW50cmllczogKCkgPT4gdGhpcy5iYXNrZXRzU2VydmljZS53YWl0Rm9yQmFza2V0LnBpcGUoc3dpdGNoTWFwKCgpID0+IHRoaXMuYmFza2V0c1NlcnZpY2Uud2FpdEZvckJhc2tldEVudHJpZXMpKVxuICAgIH0sXG4gICAgY2F0YWxvZzoge1xuICAgICAgb3BlblByZWZlcmVuY2VzOiAoKTogdm9pZCA9PiB7XG4gICAgICAgIHRoaXMuaXNQcmVmZXJlbmNlc1NTUiA9IHRydWU7XG4gICAgICAgIHRoaXMucHJlZmVyZW5jZXNTZXJ2aWNlLmlzT3BlbmVkJC5uZXh0KHRydWUpO1xuICAgICAgfSxcbiAgICAgIHByZWZlcmVuY2VzTW9kYWxDaGFuZ2VkOiAoKSA9PiB0aGlzLnByZWZlcmVuY2VzQ2hhbmdlZCxcbiAgICAgIHByZWZlcmVuY2VzQ291bnQ6ICgpOiBPYnNlcnZhYmxlPG51bWJlcj4gPT4gdGhpcy5wcmVmZXJlbmNlc1NlcnZpY2UuY3VycmVudFByZWZlcmVuY2VzTnVtYmVyLFxuICAgICAgbG9hZE1vcmVSZWNpcGVzOiAocGFja2FnZUlkLCBwYWdlLCBwYWdlU2l6ZSwgZ3Vlc3RzKTogT2JzZXJ2YWJsZTxSZWNpcGVbXT4gPT5cbiAgICAgICAgdGhpcy5yZWNpcGVzU2VydmljZS5sb2FkUmVjaXBlc0Zyb21QYWNrYWdlSWQocGFja2FnZUlkLCBwYWdlLCBwYWdlU2l6ZSwgZ3Vlc3RzKVxuICAgIH0sXG4gICAgY29uZmlnOiB7XG4gICAgICBsb2dMZXZlbDogdGhpcy5sb2dMZXZlbCRcbiAgICB9LFxuICAgIHJlY2lwZXM6IHtcbiAgICAgIG9wZW5EZXRhaWxzOiAocmVjaXBlSWQ6IHN0cmluZywgZ3Vlc3RzOiBudW1iZXIsIGluaXRpYWxUYWJJbmRleDogbnVtYmVyLCBwYXRoOiBzdHJpbmcgPSAnJywgY2F0ZWdvcnlJZDogc3RyaW5nID0gbnVsbCkgPT5cbiAgICAgICAgdGhpcy5yZWNpcGVzU2VydmljZS5vcGVuUmVjaXBlRGV0YWlscyhyZWNpcGVJZCwgZ3Vlc3RzLCBpbml0aWFsVGFiSW5kZXgsIHBhdGgsIGNhdGVnb3J5SWQpLFxuICAgICAgdXBkYXRlUmVjaXBlTGlrZTogKHJlY2lwZUxpa2VJZDogc3RyaW5nLCByZWNpcGVJZDogc3RyaW5nLCBpc1Bhc3Q6IGJvb2xlYW4sIHBhdGg6IHN0cmluZyA9ICcnKSA9PiB7XG4gICAgICAgIGNvbnN0IGV2ZW50VHJhY2U6IEV2ZW50VHJhY2UgPSB7IG9yaWdpblBhdGg6IHBhdGgsIHByb3BzOiB7IHJlY2lwZV9pZDogcmVjaXBlSWQgfSB9O1xuICAgICAgICBjb25zdCByZWNpcGVMaWtlID0gdGhpcy5yZWNpcGVMaWtlc1NlcnZpY2UucHJlcGFyZVJlY2lwZUxpa2VGb3JVcGRhdGUocmVjaXBlSWQsIHJlY2lwZUxpa2VJZCwgaXNQYXN0KTtcblxuICAgICAgICB0aGlzLnJlY2lwZUxpa2VzU2VydmljZS51cGRhdGVMaWtlKHJlY2lwZUlkLCByZWNpcGVMaWtlLCBldmVudFRyYWNlKTtcbiAgICAgIH0sXG4gICAgICByZWNpcGVMaWtlVXBkYXRlZDogKCkgPT4gdGhpcy5yZWNpcGVMaWtlc1NlcnZpY2UucmVjaXBlTGlrZVVwZGF0ZWQkLFxuICAgICAgZ3Vlc3RzVXBkYXRlZDogKCkgPT4gdGhpcy5ndWVzdHNDaGFuZ2VkLFxuICAgICAgcmVjaXBlUHJpY2VVcGRhdGVkOiAoKSA9PiB0aGlzLnJlY2lwZVByaWNlQ2hhbmdlZCxcbiAgICAgIGZldGNoUHJpY2luZzogKHJlY2lwZUlkOiBzdHJpbmcsIHBvc0lkOiBzdHJpbmcsIHNlcnZlczogbnVtYmVyKSA9PiB7XG4gICAgICAgIGlmICghcmVjaXBlSWQgfHwgIXBvc0lkIHx8ICFzZXJ2ZXMpIHtcbiAgICAgICAgICByZXR1cm4gKG9mKG51bGwpIGFzIE9ic2VydmFibGU8UmVjaXBlUHJpY2luZz4pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnJlY2lwZXNTZXJ2aWNlLmdldFByaWNpbmcocmVjaXBlSWQsIHBvc0lkLCBzZXJ2ZXMpLnBpcGUoXG4gICAgICAgICAgc2tpcFdoaWxlKHJlc3VsdCA9PiByZXN1bHQucHJpY2UgPT09IDApXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSxcbiAgICBzdXBwbGllcjoge1xuICAgICAgZ2V0VG9rZW46ICgpID0+IHRoaXMuc3VwcGxpZXJzU2VydmljZS50b2tlblxuICAgIH0sXG4gICAgdXNlcjoge1xuICAgICAgZ2V0TGFuZ3VhZ2U6ICgpID0+IHRoaXMudXNlclNlcnZpY2UubGFuZ3VhZ2UsXG4gICAgICBpc0F1dGhlbnRpY2F0ZWQ6ICgpID0+IHRoaXMudXNlclNlcnZpY2UuaXNMb2dnZWQkLFxuICAgICAgc2V0U2Vzc2lvbklkOiAoc2Vzc2lvbklkOiBzdHJpbmcpID0+IHtcbiAgICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgnX21pYW0vc2Vzc2lvbklkJywgc2Vzc2lvbklkKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGdldFN0aWNreUhlYWRlckhlaWdodDogKCkgPT4gdGhpcy5zdXBwbGllckhlYWRlckhlaWdodCRcbiAgfTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHBvc1NlcnZpY2U6IFBvaW50T2ZTYWxlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBiYXNrZXRzU2VydmljZTogQmFza2V0c1NlcnZpY2UsXG4gICAgcHJpdmF0ZSB1c2VyU2VydmljZTogVXNlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwcmVmZXJlbmNlc1NlcnZpY2U6IFByZWZlcmVuY2VzU2VydmljZSxcbiAgICBwcml2YXRlIGFuYWx5dGljc1NlcnZpY2U6IEFuYWx5dGljc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWNpcGVzU2VydmljZTogUmVjaXBlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBiYXNrZXRSZWNpcGVDbGVhbnVwU2VydmljZTogQmFza2V0UmVjaXBlQ2xlYW51cFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBtZWRpYU1hdGNoZXI6IE1lZGlhTWF0Y2hlcixcbiAgICBwcml2YXRlIHN1cHBsaWVyc1NlcnZpY2U6IFN1cHBsaWVyc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBicmVha3BvaW50T2JzZXJ2ZXI6IEJyZWFrcG9pbnRPYnNlcnZlcixcbiAgICAvLyBwcml2YXRlIGJhc2tldEhhbmRsZXI6IExlZ2FjeUJhc2tldHNTeW5jaHJvbml6ZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgYmFza2V0SGFuZGxlcjogQmFza2V0c1N5bmNocm9uaXplclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzdG9yZUxvY2F0b3JTZXJ2aWNlOiBTdG9yZUxvY2F0b3JTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVjaXBlTGlrZXNTZXJ2aWNlOiBSZWNpcGVMaWtlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBmYWtlQ2FydFNlcnZpY2U6IEZha2VSZXRhaWxlckNhcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgaGlzdG9yeVNlcnZpY2U6IEhpc3RvcnlTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29udGV4dFJlZ2lzdHJ5U2VydmljZTogQ29udGV4dFJlZ2lzdHJ5U2VydmljZVxuICApIHtcbiAgICB0aGlzLmlzU21hbGxTY3JlZW4kLm5leHQoIXRoaXMubWVkaWFNYXRjaGVyLm1hdGNoTWVkaWEoU01BTExfU0NSRUVOX0JQKS5tYXRjaGVzKTtcbiAgICB0aGlzLmJyZWFrcG9pbnRPYnNlcnZlci5vYnNlcnZlKFNNQUxMX1NDUkVFTl9CUCkuc3Vic2NyaWJlKEJQQ2hhbmdlID0+IHRoaXMuaXNTbWFsbFNjcmVlbiQubmV4dCghQlBDaGFuZ2UubWF0Y2hlcykpO1xuICAgIHRoaXMuaWNvbnMgPSBbXTtcbiAgICB0aGlzLkNPUlNJc3N1ZXMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcbiAgICBPYmplY3QuYXNzaWduKHdpbmRvdywge1xuICAgICAgbWVhbHo6IHRoaXMubWVhbHosXG4gICAgICBtZWFsekludGVybmFsOiB0aGlzLm1lYWx6SW50ZXJuYWxcbiAgICB9KTtcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgaG9va0NhbGxiYWNrOiAoaXNMb2dnZWQsIGlzUG9zVmFsaWQpID0+IGJvb2xlYW4gPSAoaXNMb2dnZWQsIGlzUG9zVmFsaWQpID0+IHtcbiAgICBtZWFseldhcm4oJ1tNZWFsel0gaG9va0NhbGxiYWNrICh1c2VkIHRvIGZvcmNlIHVzZXIgbG9naW4pIG5vdCBzZXQnKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH07XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICBmb3JjZVBvc0NhbGxiYWNrOiAocG9zRXh0SWQ6IHN0cmluZykgPT4gYm9vbGVhbiA9IChwb3NFeHRJZDogc3RyaW5nKSA9PiB7XG4gICAgbWVhbHpXYXJuKCdbTWVhbHpdIGZvcmNlUG9zQ2FsbGJhY2sgKHVzZWQgdG8gZm9yY2Ugc2VsZWN0ZWQgc2hvcCkgbm90IHNldCcpO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfTtcblxuICBkZWZhdWx0U2Nyb2xsRWxlbWVudEdldHRlcjogKCkgPT4gSFRNTEVsZW1lbnQgPSAoKSA9PiBkb2N1bWVudC5ib2R5O1xuXG4gIHNldENPUlNJc3N1ZVN0YXRlKHZhbHVlOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5DT1JTSXNzdWVzLm5leHQodmFsdWUpO1xuICB9XG5cbiAgZ2V0Q09SU0lzc3Vlc1N0YXRlKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLkNPUlNJc3N1ZXMuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBnZXRPdmVycmlkZUljb25VcmwoaWNvbjogSWNvbik6IHN0cmluZyB7XG4gICAgY29uc3QgZmluZGljb24gPSB0aGlzLmljb25zLmZpbmQoZWwgPT4gZWwuaWNvbiA9PT0gaWNvbik7XG4gICAgcmV0dXJuIGZpbmRpY29uID8gZmluZGljb24udXJsIDogJyc7XG4gIH1cblxuICBwcml2YXRlIHNldE9yaWdpbklmTmVjZXNzYXJ5KG9yaWdpbjogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKG9yaWdpbiAmJiB0aGlzLm9yaWdpbi52YWx1ZSAhPT0gb3JpZ2luKSB7XG4gICAgICB0aGlzLm9yaWdpbi5uZXh0KG9yaWdpbik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBvbkJhc2tldEFuZFBvc1NlbmRQYXltZW50U3RhcnRlZEV2ZW50KHRvdGFsUHJpY2U6IG51bWJlcik6IHZvaWQge1xuICAgIGZvcmtKb2luKFtcbiAgICAgIHRoaXMuYmFza2V0c1NlcnZpY2Uud2FpdEZvckJhc2tldCxcbiAgICAgIHRoaXMucG9zU2VydmljZS53YWl0Rm9yUG9zLnBpcGUodGFrZSgxKSlcbiAgICBdKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgIGNvbnN0IGJhc2tldCA9IHJlc1swXTtcbiAgICAgIGNvbnN0IHBvcyA9IHJlc1sxXTtcbiAgICAgIGlmIChiYXNrZXQudG90YWxQcmljZSA+IDApIHtcbiAgICAgICAgdGhpcy5hbmFseXRpY3NTZXJ2aWNlLnNlbmRFdmVudChcbiAgICAgICAgICAncGF5bWVudC5zdGFydGVkJyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiYXNrZXRfaWQ6IGJhc2tldC5pZCxcbiAgICAgICAgICAgIG1pYW1fYW1vdW50OiBiYXNrZXQudG90YWxQcmljZS50b1N0cmluZygpLFxuICAgICAgICAgICAgdG90YWxfYW1vdW50OiB0b3RhbFByaWNlLnRvU3RyaW5nKCksXG4gICAgICAgICAgICBwb3NfaWQ6IHRoaXMucG9zU2VydmljZS5wb3MkLmdldFZhbHVlKCkuaWQsXG4gICAgICAgICAgICBwb3NfbmFtZTogdGhpcy5wb3NTZXJ2aWNlLnBvcyQuZ2V0VmFsdWUoKS5hdHRyaWJ1dGVzLm5hbWUsXG4gICAgICAgICAgICBzdXBwbGllcl9pZDogdGhpcy5wb3NTZXJ2aWNlLnBvcyQuZ2V0VmFsdWUoKS5yZWxhdGlvbnNoaXBzLnN1cHBsaWVyLmRhdGEuaWQsXG4gICAgICAgICAgICByZWNpcGVfY291bnQ6IGJhc2tldC5yZWNpcGVJbmZvcy5sZW5ndGgudG9TdHJpbmcoKSxcbiAgICAgICAgICAgIG1pYW1fcHJvZHVjdHM6IGJhc2tldC5lbnRyaWVzLmxlbmd0aC50b1N0cmluZygpXG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2dVc2VyKHRva2VuT3JJZDogc3RyaW5nLCBmb3JiaWRQcm9maWxpbmc6IGJvb2xlYW4sIGluaXRCYXNrZXQ6IGJvb2xlYW4pOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGlmICh0b2tlbk9ySWQpIHtcbiAgICAgIHRoaXMudXNlclNlcnZpY2UudG9nZ2xlSXNMb2dnZWQodHJ1ZSk7XG4gICAgfVxuICAgIC8vIGlmIGluaXRCYXNrZXQgaXMgc2V0IHRvIGZhbHNlLCB0aGUgYmFza2V0ICYgbGlzdCB3aWxsIG5vdCBiZSBpbml0aWFsaXNlZCB1bnRpbCB0aGUgZmlyc3QgdGltZSB0aGV5IGFyZSBuZWVkZWRcbiAgICBpZiAoaW5pdEJhc2tldCkge1xuICAgICAgdGhpcy5iYXNrZXRzU2VydmljZS5pbml0QmFza2V0KCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnVzZXJTZXJ2aWNlLmdlbmVyYXRpbmdBdXRobGVzc0lkJC5waXBlKFxuICAgICAgc2tpcFdoaWxlKGdlbmVyYXRpbmcgPT4gZ2VuZXJhdGluZyksXG4gICAgICB0YWtlKDEpLFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHtcbiAgICAgICAgaWYgKCEhbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ19taWFtL2F1dGhsZXNzSWQnKSkge1xuICAgICAgICAgIHJldHVybiB0aGlzLmJhc2tldHNTZXJ2aWNlLnJlbG9hZEJhc2tldCgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICAgIH0pLFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMudXNlclNlcnZpY2Uuc2V0VXNlckluZm8oZm9yYmlkUHJvZmlsaW5nKVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGxvYWRTdG9yZUxvY2F0b3JQYWNrYWdlKCk6IHZvaWQge1xuICAgIGNvbnN0IHN0b3JlTG9jYXRvclNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuICAgIHN0b3JlTG9jYXRvclNjcmlwdC5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCAnbW9kdWxlJyk7XG4gICAgc3RvcmVMb2NhdG9yU2NyaXB0LnNldEF0dHJpYnV0ZSgnc3JjJywgYCR7ZW52aXJvbm1lbnQubWVhbHpDb21wb25lbnRzfS9zdG9yZS1sb2NhdG9yL3N0b3JlLWxvY2F0b3IubWluLmpzYCk7XG4gICAgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChzdG9yZUxvY2F0b3JTY3JpcHQpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZW5lcmF0ZUF1dGhsZXNzSWRJZk5lY2Vzc2FyeSgpOiBPYnNlcnZhYmxlPHN0cmluZyB8IHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy51c2VyU2VydmljZS5nZW5lcmF0aW5nQXV0aGxlc3NJZCQucGlwZShcbiAgICAgIGRlYm91bmNlVGltZSg4MDApLFxuICAgICAgdGFrZSgxKSxcbiAgICAgIHN3aXRjaE1hcChpc0dlbmVyYXRpbmcgPT4ge1xuICAgICAgICBpZiAoaXNHZW5lcmF0aW5nIHx8IHRoaXMubG9nZ2VkT25TZXNzaW9uIHx8ICEhbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ19taWFtL2F1dGhsZXNzSWQnKSkge1xuICAgICAgICAgIHJldHVybiBvZjx2b2lkPihudWxsKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy51c2VyU2VydmljZS5nZW5lcmF0ZUFub255bW91c1VzZXJJZCgpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNldEJhc2tldCgpIHtcbiAgICB0aGlzLmJhc2tldHNTZXJ2aWNlLndhaXRGb3JCYXNrZXRFbnRyaWVzXG4gICAgICAucGlwZShtYXAoKGVudHJpZXM6IEJhc2tldEVudHJ5W10pID0+XG4gICAgICAgIGVudHJpZXNcbiAgICAgICAgICAuZmlsdGVyKGVudHJ5ID0+IGVudHJ5LnN0YXR1cyA9PT0gJ2FjdGl2ZScpXG4gICAgICAgICAgLm1hcChlbnRyeSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjbG9uZWRFbnRyeSA9IGRlZXBDbG9uZVdpdGhDbGFzcyhlbnRyeSkgYXMgQmFza2V0RW50cnk7XG4gICAgICAgICAgICBjbG9uZWRFbnRyeS5xdWFudGl0eSA9IDA7XG4gICAgICAgICAgICByZXR1cm4gY2xvbmVkRW50cnk7XG4gICAgICAgICAgfSlcbiAgICAgICkpLnN1YnNjcmliZSgoY2xvbmVkRW50cmllc1RvUmVtb3ZlOiBCYXNrZXRFbnRyeVtdKSA9PiB7XG4gICAgICAgIGlmIChjbG9uZWRFbnRyaWVzVG9SZW1vdmUubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgdGhpcy5iYXNrZXRzU2VydmljZS5yZXNldEJhc2tldCgpLnN1YnNjcmliZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVzZXRCYXNrZXQgPSBjbG9uZWRFbnRyaWVzVG9SZW1vdmUubWFwKGVudHJ5ID0+IG5ldyBSZXNldEJhc2tldEFjdGlvbihlbnRyeSwge30sIHRoaXMuYmFza2V0c1NlcnZpY2UpKTtcbiAgICAgICAgdGhpcy5iYXNrZXRIYW5kbGVyLmFkZFRvQWN0aW9uTGlzdChyZXNldEJhc2tldCk7XG4gICAgICAgIGlmIChyZXNldEJhc2tldC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgcmVzZXRCYXNrZXRbcmVzZXRCYXNrZXQubGVuZ3RoIC0gMV0ub25TdWNjZXNzLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuYmFza2V0c1NlcnZpY2UucmVzZXRCYXNrZXQoKS5zdWJzY3JpYmUoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -28,7 +28,7 @@ export class ItemsService extends Service {
28
28
  }
29
29
  getPriceForItem(selectedItemId) {
30
30
  return this.posService.waitForPos.pipe(take(1), switchMap(pos => {
31
- const url = `${e.miamAPI}/api/v1/items/${selectedItemId}/price?pricebook_key=DEFAULT&point_of_sale_id=${pos.id}`;
31
+ const url = `${e.miamAPI}/api/v1/items/${selectedItemId}/price?point_of_sale_id=${pos.id}`;
32
32
  return this.http.get(url);
33
33
  }), map((price) => ({
34
34
  unit: price.price,
@@ -48,4 +48,4 @@ ItemsService.ɵprov = i0.ɵɵdefineInjectable({ token: ItemsService, factory: It
48
48
  providedIn: 'root'
49
49
  }]
50
50
  }], function () { return [{ type: i1.HttpClient }, { type: i2.PointOfSalesService }]; }, null); })();
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRlbXMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLW1pYW0vc3JjL2xpYi9fc2VydmljZXMvaXRlbXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQXNCLE9BQU8sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUUzRCxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxXQUFXLElBQUksQ0FBQyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7QUFPL0QsTUFBTSxPQUFPLFlBQWEsU0FBUSxPQUFhO0lBSTdDLFlBQ1UsSUFBZ0IsRUFDaEIsVUFBK0I7UUFFdkMsS0FBSyxFQUFFLENBQUM7UUFIQSxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLGVBQVUsR0FBVixVQUFVLENBQXFCO1FBTHpDLGFBQVEsR0FBRyxJQUFJLENBQUM7UUFDaEIsU0FBSSxHQUFHLE9BQU8sQ0FBQztRQU9iLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBRUQsbUJBQW1CLENBQUMsWUFBcUIsRUFBRSxZQUFxQixFQUFFLE1BQWU7UUFDL0UsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQ3BDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFDUCxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDZCxJQUFJLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxPQUFPLHdCQUF3QixZQUFZLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixZQUFZLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsVUFBVSxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxvQkFBb0IsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ25LLElBQUksWUFBWSxFQUFFO2dCQUNoQixHQUFHLElBQUksU0FBUyxZQUFZLEVBQUUsQ0FBQzthQUNoQztZQUNELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUF5QyxDQUFDO1FBQ3RGLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRUQsZUFBZSxDQUFDLGNBQXNCO1FBQ3BDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUNwQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQ1AsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ2QsTUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUMsT0FBTyxpQkFBaUIsY0FBYyxpREFBaUQsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ2pILE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUEwQixDQUFDO1FBQ3JELENBQUMsQ0FBQyxFQUNGLEdBQUcsQ0FBQyxDQUFDLEtBQWdCLEVBQUUsRUFBRSxDQUFDLENBQ3hCO1lBQ0UsSUFBSSxFQUFFLEtBQUssQ0FBQyxLQUFLO1lBQ2pCLFlBQVksRUFBRSxLQUFLLENBQUMsZ0JBQWdCLENBQUM7WUFDckMsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLHFCQUFxQixDQUFDO1lBQy9DLGNBQWMsRUFBRSxLQUFLLENBQUMsaUJBQWlCLENBQUM7WUFDeEMsWUFBWSxFQUFFLEtBQUssQ0FBQyxlQUFlLENBQUM7WUFDcEMsZUFBZSxFQUFFLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQztTQUMxQixDQUFBLENBQ25CLENBQ0YsQ0FBQztJQUNKLENBQUM7O3dFQTNDVSxZQUFZO29EQUFaLFlBQVksV0FBWixZQUFZLG1CQUhYLE1BQU07dUZBR1AsWUFBWTtjQUp4QixVQUFVO2VBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9jdW1lbnRDb2xsZWN0aW9uLCBTZXJ2aWNlIH0gZnJvbSAnbWlhbS1qc29uYXBpJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgc3dpdGNoTWFwLCB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgSXRlbSB9IGZyb20gJy4uL19tb2RlbHMnO1xuaW1wb3J0IHsgZW52aXJvbm1lbnQgYXMgZSB9IGZyb20gJy4uL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudCc7XG5pbXBvcnQgeyBQb2ludE9mU2FsZXNTZXJ2aWNlIH0gZnJvbSAnLi9wb2ludC1vZi1zYWxlcy5zZXJ2aWNlJztcbmltcG9ydCB7IEl0ZW1QcmljZSwgUHJvZHVjdFByaWNlIH0gZnJvbSAnLi9wcmljZS5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5cbmV4cG9ydCBjbGFzcyBJdGVtc1NlcnZpY2UgZXh0ZW5kcyBTZXJ2aWNlPEl0ZW0+IHtcbiAgcmVzb3VyY2UgPSBJdGVtO1xuICB0eXBlID0gJ2l0ZW1zJztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgcHJpdmF0ZSBwb3NTZXJ2aWNlOiBQb2ludE9mU2FsZXNTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5yZWdpc3RlcigpO1xuICB9XG5cbiAgc2VhcmNoRm9ySW5ncmVkaWVudChzZWFyY2hTdHJpbmc/OiBzdHJpbmcsIGluZ3JlZGllbnRJZD86IHN0cmluZywgZ3Vlc3RzPzogbnVtYmVyKTogT2JzZXJ2YWJsZTxEb2N1bWVudENvbGxlY3Rpb248SXRlbT4+IHtcbiAgICByZXR1cm4gdGhpcy5wb3NTZXJ2aWNlLndhaXRGb3JQb3MucGlwZShcbiAgICAgIHRha2UoMSksXG4gICAgICBzd2l0Y2hNYXAocG9zID0+IHtcbiAgICAgICAgbGV0IHVybCA9IGAke2UubWlhbUFQSX0vYXBpL3YxL2l0ZW1zL3NlYXJjaD8ke2luZ3JlZGllbnRJZCA/IGBpbmdyZWRpZW50X2lkPSR7aW5ncmVkaWVudElkfSZgIDogJyd9JHtndWVzdHMgPyBgZ3Vlc3RzPSR7Z3Vlc3RzfSZgIDogJyd9cG9pbnRfb2Zfc2FsZV9pZD0ke3Bvcy5pZH1gO1xuICAgICAgICBpZiAoc2VhcmNoU3RyaW5nKSB7XG4gICAgICAgICAgdXJsICs9IGAmbmFtZT0ke3NlYXJjaFN0cmluZ31gO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGVuY29kZVVSSSh1cmwudHJpbSgpKSkgYXMgT2JzZXJ2YWJsZTxEb2N1bWVudENvbGxlY3Rpb248SXRlbT4+O1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgZ2V0UHJpY2VGb3JJdGVtKHNlbGVjdGVkSXRlbUlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFByb2R1Y3RQcmljZT4ge1xuICAgIHJldHVybiB0aGlzLnBvc1NlcnZpY2Uud2FpdEZvclBvcy5waXBlKFxuICAgICAgdGFrZSgxKSxcbiAgICAgIHN3aXRjaE1hcChwb3MgPT4ge1xuICAgICAgICBjb25zdCB1cmwgPSBgJHtlLm1pYW1BUEl9L2FwaS92MS9pdGVtcy8ke3NlbGVjdGVkSXRlbUlkfS9wcmljZT9wcmljZWJvb2tfa2V5PURFRkFVTFQmcG9pbnRfb2Zfc2FsZV9pZD0ke3Bvcy5pZH1gO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldCh1cmwpIGFzIE9ic2VydmFibGU8SXRlbVByaWNlPjtcbiAgICAgIH0pLFxuICAgICAgbWFwKChwcmljZTogSXRlbVByaWNlKSA9PiAoXG4gICAgICAgIHtcbiAgICAgICAgICB1bml0OiBwcmljZS5wcmljZSxcbiAgICAgICAgICBwcmljZVBlclVuaXQ6IHByaWNlWydwcmljZS1wZXItdW5pdCddLFxuICAgICAgICAgIHVuaXRPZk1lYXN1cmVtZW50OiBwcmljZVsndW5pdC1vZi1tZWFzdXJlbWVudCddLFxuICAgICAgICAgIGRpc2NvdW50QW1vdW50OiBwcmljZVsnZGlzY291bnQtYW1vdW50J10sXG4gICAgICAgICAgZGlzY291bnRUeXBlOiBwcmljZVsnZGlzY291bnQtdHlwZSddLFxuICAgICAgICAgIGRpc2NvdW50ZWRQcmljZTogcHJpY2VbJ2Rpc2NvdW50ZWQtcHJpY2UnXVxuICAgICAgICB9IGFzIFByb2R1Y3RQcmljZSlcbiAgICAgIClcbiAgICApO1xuICB9XG59XG4iXX0=
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRlbXMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLW1pYW0vc3JjL2xpYi9fc2VydmljZXMvaXRlbXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQXNCLE9BQU8sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUUzRCxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxXQUFXLElBQUksQ0FBQyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7QUFPL0QsTUFBTSxPQUFPLFlBQWEsU0FBUSxPQUFhO0lBSTdDLFlBQ1UsSUFBZ0IsRUFDaEIsVUFBK0I7UUFFdkMsS0FBSyxFQUFFLENBQUM7UUFIQSxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLGVBQVUsR0FBVixVQUFVLENBQXFCO1FBTHpDLGFBQVEsR0FBRyxJQUFJLENBQUM7UUFDaEIsU0FBSSxHQUFHLE9BQU8sQ0FBQztRQU9iLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBRUQsbUJBQW1CLENBQUMsWUFBcUIsRUFBRSxZQUFxQixFQUFFLE1BQWU7UUFDL0UsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQ3BDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFDUCxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDZCxJQUFJLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxPQUFPLHdCQUF3QixZQUFZLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixZQUFZLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsVUFBVSxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxvQkFBb0IsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ25LLElBQUksWUFBWSxFQUFFO2dCQUNoQixHQUFHLElBQUksU0FBUyxZQUFZLEVBQUUsQ0FBQzthQUNoQztZQUNELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUF5QyxDQUFDO1FBQ3RGLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRUQsZUFBZSxDQUFDLGNBQXNCO1FBQ3BDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUNwQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQ1AsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ2QsTUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUMsT0FBTyxpQkFBaUIsY0FBYywyQkFBMkIsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQzNGLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUEwQixDQUFDO1FBQ3JELENBQUMsQ0FBQyxFQUNGLEdBQUcsQ0FBQyxDQUFDLEtBQWdCLEVBQUUsRUFBRSxDQUFDLENBQ3hCO1lBQ0UsSUFBSSxFQUFFLEtBQUssQ0FBQyxLQUFLO1lBQ2pCLFlBQVksRUFBRSxLQUFLLENBQUMsZ0JBQWdCLENBQUM7WUFDckMsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLHFCQUFxQixDQUFDO1lBQy9DLGNBQWMsRUFBRSxLQUFLLENBQUMsaUJBQWlCLENBQUM7WUFDeEMsWUFBWSxFQUFFLEtBQUssQ0FBQyxlQUFlLENBQUM7WUFDcEMsZUFBZSxFQUFFLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQztTQUMxQixDQUFBLENBQ25CLENBQ0YsQ0FBQztJQUNKLENBQUM7O3dFQTNDVSxZQUFZO29EQUFaLFlBQVksV0FBWixZQUFZLG1CQUhYLE1BQU07dUZBR1AsWUFBWTtjQUp4QixVQUFVO2VBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9jdW1lbnRDb2xsZWN0aW9uLCBTZXJ2aWNlIH0gZnJvbSAnbWlhbS1qc29uYXBpJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgc3dpdGNoTWFwLCB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgSXRlbSB9IGZyb20gJy4uL19tb2RlbHMnO1xuaW1wb3J0IHsgZW52aXJvbm1lbnQgYXMgZSB9IGZyb20gJy4uL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudCc7XG5pbXBvcnQgeyBQb2ludE9mU2FsZXNTZXJ2aWNlIH0gZnJvbSAnLi9wb2ludC1vZi1zYWxlcy5zZXJ2aWNlJztcbmltcG9ydCB7IEl0ZW1QcmljZSwgUHJvZHVjdFByaWNlIH0gZnJvbSAnLi9wcmljZS5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5cbmV4cG9ydCBjbGFzcyBJdGVtc1NlcnZpY2UgZXh0ZW5kcyBTZXJ2aWNlPEl0ZW0+IHtcbiAgcmVzb3VyY2UgPSBJdGVtO1xuICB0eXBlID0gJ2l0ZW1zJztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgcHJpdmF0ZSBwb3NTZXJ2aWNlOiBQb2ludE9mU2FsZXNTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5yZWdpc3RlcigpO1xuICB9XG5cbiAgc2VhcmNoRm9ySW5ncmVkaWVudChzZWFyY2hTdHJpbmc/OiBzdHJpbmcsIGluZ3JlZGllbnRJZD86IHN0cmluZywgZ3Vlc3RzPzogbnVtYmVyKTogT2JzZXJ2YWJsZTxEb2N1bWVudENvbGxlY3Rpb248SXRlbT4+IHtcbiAgICByZXR1cm4gdGhpcy5wb3NTZXJ2aWNlLndhaXRGb3JQb3MucGlwZShcbiAgICAgIHRha2UoMSksXG4gICAgICBzd2l0Y2hNYXAocG9zID0+IHtcbiAgICAgICAgbGV0IHVybCA9IGAke2UubWlhbUFQSX0vYXBpL3YxL2l0ZW1zL3NlYXJjaD8ke2luZ3JlZGllbnRJZCA/IGBpbmdyZWRpZW50X2lkPSR7aW5ncmVkaWVudElkfSZgIDogJyd9JHtndWVzdHMgPyBgZ3Vlc3RzPSR7Z3Vlc3RzfSZgIDogJyd9cG9pbnRfb2Zfc2FsZV9pZD0ke3Bvcy5pZH1gO1xuICAgICAgICBpZiAoc2VhcmNoU3RyaW5nKSB7XG4gICAgICAgICAgdXJsICs9IGAmbmFtZT0ke3NlYXJjaFN0cmluZ31gO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGVuY29kZVVSSSh1cmwudHJpbSgpKSkgYXMgT2JzZXJ2YWJsZTxEb2N1bWVudENvbGxlY3Rpb248SXRlbT4+O1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgZ2V0UHJpY2VGb3JJdGVtKHNlbGVjdGVkSXRlbUlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFByb2R1Y3RQcmljZT4ge1xuICAgIHJldHVybiB0aGlzLnBvc1NlcnZpY2Uud2FpdEZvclBvcy5waXBlKFxuICAgICAgdGFrZSgxKSxcbiAgICAgIHN3aXRjaE1hcChwb3MgPT4ge1xuICAgICAgICBjb25zdCB1cmwgPSBgJHtlLm1pYW1BUEl9L2FwaS92MS9pdGVtcy8ke3NlbGVjdGVkSXRlbUlkfS9wcmljZT9wb2ludF9vZl9zYWxlX2lkPSR7cG9zLmlkfWA7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHVybCkgYXMgT2JzZXJ2YWJsZTxJdGVtUHJpY2U+O1xuICAgICAgfSksXG4gICAgICBtYXAoKHByaWNlOiBJdGVtUHJpY2UpID0+IChcbiAgICAgICAge1xuICAgICAgICAgIHVuaXQ6IHByaWNlLnByaWNlLFxuICAgICAgICAgIHByaWNlUGVyVW5pdDogcHJpY2VbJ3ByaWNlLXBlci11bml0J10sXG4gICAgICAgICAgdW5pdE9mTWVhc3VyZW1lbnQ6IHByaWNlWyd1bml0LW9mLW1lYXN1cmVtZW50J10sXG4gICAgICAgICAgZGlzY291bnRBbW91bnQ6IHByaWNlWydkaXNjb3VudC1hbW91bnQnXSxcbiAgICAgICAgICBkaXNjb3VudFR5cGU6IHByaWNlWydkaXNjb3VudC10eXBlJ10sXG4gICAgICAgICAgZGlzY291bnRlZFByaWNlOiBwcmljZVsnZGlzY291bnRlZC1wcmljZSddXG4gICAgICAgIH0gYXMgUHJvZHVjdFByaWNlKVxuICAgICAgKVxuICAgICk7XG4gIH1cbn1cbiJdfQ==