ng-easycommerce-v18 0.0.3 → 0.0.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 (40) hide show
  1. package/esm2022/lib/classes/filters/PriceRangeFilter.mjs +48 -0
  2. package/esm2022/lib/ec-components/account-ec/order-ec/order-ec.component.mjs +75 -6
  3. package/esm2022/lib/ec-components/account-ec/orders-list-ec/orders-list-ec.component.mjs +3 -3
  4. package/esm2022/lib/ec-components/blocks-ec/block-products-ec/block-products-ec.component.mjs +1 -1
  5. package/esm2022/lib/ec-components/cart-ec/cart-item-ec/cart-item-ec.component.mjs +53 -3
  6. package/esm2022/lib/ec-components/filters-ec/filters-ec.component.mjs +95 -4
  7. package/esm2022/lib/ec-components/index.mjs +5 -1
  8. package/esm2022/lib/ec-components/product-detail-ec/product-detail-ec.component.mjs +25 -1
  9. package/esm2022/lib/ec-components/product-ec/product-ec.component.mjs +20 -3
  10. package/esm2022/lib/ec-components/sidebar-ec/sidebar-ec.component.mjs +60 -0
  11. package/esm2022/lib/ec-components/widgets-ec/index.mjs +2 -1
  12. package/esm2022/lib/ec-services/auth.service.mjs +17 -6
  13. package/esm2022/lib/ec-services/cart.service.mjs +19 -2
  14. package/esm2022/lib/ec-services/filters.service.mjs +3 -2
  15. package/esm2022/lib/ec-services/ngx-local-storage.service.mjs +7 -7
  16. package/esm2022/lib/ec-services/orders.service.mjs +28 -1
  17. package/esm2022/lib/ec-services/pagination.service.mjs +8 -1
  18. package/esm2022/lib/ec-services/product-detail.service.mjs +1 -1
  19. package/esm2022/lib/ec-services/products.service.mjs +29 -1
  20. package/esm2022/lib/interfaces/filter.mjs +1 -1
  21. package/esm2022/lib/interfaces/product.mjs +1 -1
  22. package/esm2022/public-api.mjs +3 -1
  23. package/fesm2022/ng-easycommerce-v18.mjs +455 -28
  24. package/fesm2022/ng-easycommerce-v18.mjs.map +1 -1
  25. package/lib/classes/filters/PriceRangeFilter.d.ts +23 -0
  26. package/lib/ec-components/account-ec/order-ec/order-ec.component.d.ts +23 -1
  27. package/lib/ec-components/cart-ec/cart-item-ec/cart-item-ec.component.d.ts +4 -1
  28. package/lib/ec-components/filters-ec/filters-ec.component.d.ts +20 -1
  29. package/lib/ec-components/index.d.ts +1 -0
  30. package/lib/ec-components/product-detail-ec/product-detail-ec.component.d.ts +9 -0
  31. package/lib/ec-components/product-ec/product-ec.component.d.ts +5 -1
  32. package/lib/ec-components/sidebar-ec/sidebar-ec.component.d.ts +29 -0
  33. package/lib/ec-services/auth.service.d.ts +3 -1
  34. package/lib/ec-services/cart.service.d.ts +10 -1
  35. package/lib/ec-services/orders.service.d.ts +6 -0
  36. package/lib/ec-services/pagination.service.d.ts +5 -0
  37. package/lib/ec-services/products.service.d.ts +14 -0
  38. package/lib/interfaces/filter.d.ts +2 -2
  39. package/lib/interfaces/product.d.ts +2 -0
  40. package/package.json +1 -1
@@ -31,6 +31,8 @@ export class CartService {
31
31
  showMax: false,
32
32
  showPrice: false,
33
33
  remainingCredits: 0,
34
+ applyMaxOrders: false,
35
+ maxOrders: Infinity
34
36
  });
35
37
  CART_KEY = 'cart';
36
38
  CART_TOKEN_KEY = 'cart_token';
@@ -44,6 +46,13 @@ export class CartService {
44
46
  cart$ = this._cartSubject.asObservable();
45
47
  loading$ = this._requestInProcess.asObservable();
46
48
  _haveToUpdate = true;
49
+ balanceCustomer$ = this._balanceCustomerSubject.asObservable();
50
+ allowAnyPaymentMethod$ = this.balanceCustomer$.pipe(map(data => data.allowAnyPaymentMethod));
51
+ allowExceedBalance$ = this.balanceCustomer$.pipe(map(data => data.allowExceedBalance));
52
+ creditAmount$ = this.balanceCustomer$.pipe(map(data => data.creditAmount));
53
+ showMax$ = this.balanceCustomer$.pipe(map(data => data.showMax));
54
+ showPrice$ = this.balanceCustomer$.pipe(map(data => data.showPrice));
55
+ promotions$ = this._promotionsSubject.asObservable();
47
56
  //API URL
48
57
  _cartBaseUrl = `${this._apiConsts.SHOP_API_URL}${this._apiConsts.CHANNEL}/carts`;
49
58
  updateItemQuantityApi(item_id) { return this._cartBaseUrl + '/' + this.cartToken + '/items/' + item_id + '?locale=' + this._apiConsts.LOCALE; }
@@ -114,7 +123,11 @@ export class CartService {
114
123
  * @returns
115
124
  */
116
125
  addToCart(product, quantity, variantId) {
117
- //console.log(product);
126
+ const balance = this._balanceCustomerSubject.value;
127
+ if (balance.applyMaxOrders && (balance.maxOrders && (balance.maxOrders <= 0 || balance.maxOrders === null))) {
128
+ this._toastService.show('max-orders-reached');
129
+ return;
130
+ }
118
131
  if (!this._authService.isAbleToBuy()) {
119
132
  this._toastService.show('must-select-customer');
120
133
  return;
@@ -437,6 +450,8 @@ export class CartService {
437
450
  remainingCredits: cartData?.creditAmount && cartData?.creditAmount >= cartData?.totals.total
438
451
  ? cartData?.creditAmount - cartData?.totals.total
439
452
  : 0,
453
+ applyMaxOrders: cartData?.applyMaxOrders ?? false,
454
+ maxOrders: cartData?.maxOrders ?? Infinity
440
455
  };
441
456
  this._balanceCustomerSubject.next(balanceData);
442
457
  console.log(balanceData);
@@ -453,6 +468,8 @@ export class CartService {
453
468
  error: (err) => this.handleError(err)
454
469
  });
455
470
  }
471
+ getCreditAmount = () => this._balanceCustomerSubject.pipe(map((balanceCustomer) => balanceCustomer?.creditAmount ?? null));
472
+ getRemainingCredits = () => this._balanceCustomerSubject.pipe(map((balanceCustomer) => balanceCustomer?.remainingCredits));
456
473
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: CartService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
457
474
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: CartService, providedIn: 'root' });
458
475
  }
@@ -462,4 +479,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
462
479
  providedIn: 'root'
463
480
  }]
464
481
  }], ctorParameters: () => [] });
465
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FydC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLXNlcnZpY2VzL2NhcnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUMzQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDekUsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLEdBQUcsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUN2RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDL0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDOztBQUlyRSxNQUFNLE9BQU8sV0FBVztJQUNmLFlBQVksR0FBZ0IsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2hELGFBQWEsR0FBaUIsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ25ELFdBQVcsR0FBc0IsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDM0QsVUFBVSxHQUF3QixNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUM5RCxpQkFBaUIsR0FBcUIsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDL0QsYUFB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LFFBQVEsRUFBRSxDQUFDO2FBQ2ppQixTQUFTLENBQUM7WUFDbkIsSUFBSSxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQztZQUNyQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDO1NBQ3JDLENBQUMsQ0FBQztJQUNGLENBQUM7dUdBNWRRLFdBQVc7MkdBQVgsV0FBVyxjQUZYLE1BQU07OzJGQUVOLFdBQVc7a0JBSHZCLFVBQVU7bUJBQUM7b0JBQ1gsVUFBVSxFQUFFLE1BQU07aUJBQ2xCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJhbGFuY2VDdXN0b21lciwgQ2FydEl0ZW0sIElDb3Vwb24sIFByb2R1Y3QgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuL2F1dGguc2VydmljZSc7XHJcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJy4vdG9hc3Quc2VydmljZSc7XHJcbmltcG9ydCB7IENvbm5lY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vYXBpJztcclxuaW1wb3J0IHsgQXBpQ29uc3RhbnRzU2VydmljZSwgQ29yZUNvbnN0YW50c1NlcnZpY2UgfSBmcm9tICcuLi9jb25zdGFudHMnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIGZpcnN0VmFsdWVGcm9tLCBtYXAsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQW5hbHl0aWNzU2VydmljZSB9IGZyb20gJy4vYW5hbHl0aWNzJztcclxuaW1wb3J0IHsgTG9jYWxTdG9yYWdlU2VydmljZSB9IGZyb20gJy4vbG9jYWwtc3RvcmFnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ2hhbm5lbFNlcnZpY2UgfSBmcm9tICcuL2NoYW5uZWwuc2VydmljZSc7XHJcbmltcG9ydCB7IE5neExvY2FsU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuL25neC1sb2NhbC1zdG9yYWdlLnNlcnZpY2UnO1xyXG5ASW5qZWN0YWJsZSh7XHJcblx0cHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDYXJ0U2VydmljZSB7XHJcblx0cHJpdmF0ZSBfYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlID0gaW5qZWN0KEF1dGhTZXJ2aWNlKTtcclxuXHRwcml2YXRlIF90b2FzdFNlcnZpY2U6IFRvYXN0U2VydmljZSA9IGluamVjdChUb2FzdFNlcnZpY2UpO1xyXG5cdHByaXZhdGUgX2Nvbm5lY3Rpb246IENvbm5lY3Rpb25TZXJ2aWNlID0gaW5qZWN0KENvbm5lY3Rpb25TZXJ2aWNlKTtcclxuXHRwcml2YXRlIF9hcGlDb25zdHM6IEFwaUNvbnN0YW50c1NlcnZpY2UgPSBpbmplY3QoQXBpQ29uc3RhbnRzU2VydmljZSk7XHJcblx0cHJpdmF0ZSBfYW5hbHl0aWNzU2VydmljZTogQW5hbHl0aWNzU2VydmljZSA9IGluamVjdChBbmFseXRpY3NTZXJ2aWNlKTtcclxuXHRwcml2YXRlIF9sb2NhbFN0b3JhZ2U6IExvY2FsU3RvcmFnZVNlcnZpY2UgPSBpbmplY3QoTG9jYWxTdG9yYWdlU2VydmljZSk7XHJcblx0cHJpdmF0ZSBfY2hhbm5lbFNlcnZpY2U6IENoYW5uZWxTZXJ2aWNlID0gaW5qZWN0KENoYW5uZWxTZXJ2aWNlKTtcclxuXHRwcml2YXRlIF9jb25zdHM6IENvcmVDb25zdGFudHNTZXJ2aWNlID0gaW5qZWN0KENvcmVDb25zdGFudHNTZXJ2aWNlKTtcclxuXHRwcml2YXRlIF9zdG9yYWdlOiBOZ3hMb2NhbFN0b3JhZ2VTZXJ2aWNlID0gaW5qZWN0KE5neExvY2FsU3RvcmFnZVNlcnZpY2UpO1xyXG5cclxuXHRwcml2YXRlIF9jYXJ0U3ViamVjdDogQmVoYXZpb3JTdWJqZWN0PGFueT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KG51bGwpO1xyXG5cdHByaXZhdGUgX3Byb21vdGlvbnNTdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8YW55PiA9IG5ldyBCZWhhdmlvclN1YmplY3QoW10pO1xyXG5cdHByaXZhdGUgX2NvdXBvblN1YmplY3Q6IEJlaGF2aW9yU3ViamVjdDxhbnk+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChudWxsKTtcclxuXHRwcml2YXRlIF9jYXJ0SXRlbXNTdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8Q2FydEl0ZW1bXT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PENhcnRJdGVtW10+KFtdKVxyXG5cdHByaXZhdGUgX3JlcXVlc3RJblByb2Nlc3M6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xyXG5cdHByaXZhdGUgX2JhbGFuY2VDdXN0b21lclN1YmplY3Q6IEJlaGF2aW9yU3ViamVjdDxCYWxhbmNlQ3VzdG9tZXI+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxCYWxhbmNlQ3VzdG9tZXI+KHtcclxuICAgICAgICBhbGxvd0FueVBheW1lbnRNZXRob2Q6IGZhbHNlLFxyXG4gICAgICAgIGFsbG93RXhjZWVkQmFsYW5jZTogZmFsc2UsXHJcbiAgICAgICAgY3JlZGl0QW1vdW50OiAwLFxyXG4gICAgICAgIHNob3dNYXg6IGZhbHNlLFxyXG4gICAgICAgIHNob3dQcmljZTogZmFsc2UsXHJcbiAgICAgICAgcmVtYWluaW5nQ3JlZGl0czogMCxcclxuICAgIH0pO1xyXG5cclxuXHRwcml2YXRlIHJlYWRvbmx5IENBUlRfS0VZOiBzdHJpbmcgPSAnY2FydCc7XHJcblx0cHJpdmF0ZSByZWFkb25seSBDQVJUX1RPS0VOX0tFWTogc3RyaW5nID0gJ2NhcnRfdG9rZW4nO1xyXG5cclxuXHRwcml2YXRlIF9pdGVtczogYW55W10gPSBbXTtcclxuXHRwcml2YXRlIF9jb3VudDogbnVtYmVyID0gMDtcclxuXHRwdWJsaWMgY2FydFRva2VuOiBzdHJpbmcgfCBudWxsID0gJyc7XHJcblx0cHVibGljIGNoYW5uZWxDb25maWc6IGFueSA9IHt9O1xyXG5cdHByaXZhdGUgX2xvY2FsZSA9IFwiXCI7XHJcblx0cHVibGljIGNhcnRJdGVtcyQgPSB0aGlzLl9jYXJ0SXRlbXNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpLnBpcGUobWFwKGl0ZW1zID0+IHRoaXMuc3dpdGNoUHJpY2VJbkNhcnRJdGVtKGl0ZW1zKSkpXHJcblx0cHVibGljIGNvdXBvbiQ6IE9ic2VydmFibGU8YW55PiA9IHRoaXMuX2NvdXBvblN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XHJcblx0cHVibGljIGNhcnQkOiBPYnNlcnZhYmxlPGFueT4gPSB0aGlzLl9jYXJ0U3ViamVjdC5hc09ic2VydmFibGUoKTtcclxuXHRwdWJsaWMgbG9hZGluZyQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLl9yZXF1ZXN0SW5Qcm9jZXNzLmFzT2JzZXJ2YWJsZSgpO1xyXG5cdHByaXZhdGUgX2hhdmVUb1VwZGF0ZSA9IHRydWU7XHJcblxyXG5cdC8vQVBJIFVSTFxyXG5cdHByaXZhdGUgX2NhcnRCYXNlVXJsOiBzdHJpbmcgPSBgJHt0aGlzLl9hcGlDb25zdHMuU0hPUF9BUElfVVJMfSR7dGhpcy5fYXBpQ29uc3RzLkNIQU5ORUx9L2NhcnRzYDtcclxuXHJcblx0cHVibGljIHVwZGF0ZUl0ZW1RdWFudGl0eUFwaShpdGVtX2lkOiBhbnkpIHsgcmV0dXJuIHRoaXMuX2NhcnRCYXNlVXJsICsgJy8nICsgdGhpcy5jYXJ0VG9rZW4gKyAnL2l0ZW1zLycgKyBpdGVtX2lkICsgJz9sb2NhbGU9JyArIHRoaXMuX2FwaUNvbnN0cy5MT0NBTEU7IH1cclxuXHRwdWJsaWMgYWRkSXRlbUFwaSgpOiBzdHJpbmcgeyByZXR1cm4gdGhpcy5fY2FydEJhc2VVcmwgKyAnLycgKyB0aGlzLmNhcnRUb2tlbiArICcvaXRlbXM/bG9jYWxlPScgKyB0aGlzLl9hcGlDb25zdHMuTE9DQUxFIH1cclxuXHRwdWJsaWMgY2FydEl0ZW1zQXBpKCk6IHN0cmluZyB7IHJldHVybiB0aGlzLl9jYXJ0QmFzZVVybCArICc/bG9jYWxlPScgKyB0aGlzLl9hcGlDb25zdHMuTE9DQUxFIH1cclxuXHRwdWJsaWMgZGVsZXRlSXRlbUFwaShpdGVtX2lkOiBzdHJpbmcpIHsgcmV0dXJuIHRoaXMuX2NhcnRCYXNlVXJsICsgJy8nICsgdGhpcy5jYXJ0VG9rZW4gKyAnL2l0ZW1zLycgKyBpdGVtX2lkICsgJz9sb2NhbGU9JyArIHRoaXMuX2FwaUNvbnN0cy5MT0NBTEU7IH1cclxuXHRwdWJsaWMgY291cG9uQXBpKCkgeyByZXR1cm4gdGhpcy5fY2FydEJhc2VVcmwgKyAnLycgKyB0aGlzLmNhcnRUb2tlbiArICcvY291cG9uJyB9O1xyXG5cclxuXHRjb25zdHJ1Y3RvcigpIHtcclxuXHRcdHRoaXMuX3JlcXVlc3RJblByb2Nlc3MubmV4dCh0cnVlKTtcclxuXHRcdHRoaXMuY2FydFRva2VuID0gdGhpcy5fbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5DQVJUX1RPS0VOX0tFWSkgfHwgbnVsbDtcclxuXHRcdHRoaXMuaW5pdGlhbGl6ZURhdGFDYXJ0KCk7XHJcblx0XHR0aGlzLl9jaGFubmVsU2VydmljZS5jaGFubmVsJC5zdWJzY3JpYmUocmVzID0+IHRoaXMuY2hhbm5lbENvbmZpZyA9IHJlcylcclxuXHR9XHJcblx0LyoqXHJcblx0ICogSW5pY2lhbGl6YSBlbCBjYXJyaXRvIGNvbiBsb3MgZGF0b3MgZGVsIGxvY2FsIHN0b3JhZ2UgZW4gY2FzbyBkZSBxdWUgZXhpc3RhbiBvIG5vLlxyXG5cdCAqL1xyXG5cdHByaXZhdGUgaW5pdGlhbGl6ZURhdGFDYXJ0KCkge1xyXG5cdFx0Y29tYmluZUxhdGVzdChbdGhpcy5fYXV0aFNlcnZpY2UubG9nZ2VkSW4kLCB0aGlzLl9zdG9yYWdlLmdldEl0ZW0odGhpcy5DQVJUX0tFWSldKS5zdWJzY3JpYmUoe1xyXG5cdFx0XHRuZXh0OiAoW2xvZ2dlZEluLCB0b2tlbl0pID0+IHtcclxuXHRcdFx0XHQvL2NvbnNvbGUubG9nKGxvZ2dlZEluLCB0b2tlbik7XHJcblx0XHRcdFx0dGhpcy5faXRlbXMgPSB0b2tlbiB8fCBbXTtcclxuXHRcdFx0XHR0aGlzLmdldENhcnQoKVxyXG5cdFx0XHR9XHJcblx0XHR9KVxyXG5cdH1cclxuXHQvKipcclxuXHQgKiBPYnRpZW5lIGVsIGNhcnJpdG8gZGVzZGUgZWwgYmFja2VuZCB5IGxvIGluaWNpYWxpemEuIFxyXG5cdCAqIFNpIGV4aXN0ZSBlbCBjYXJ0VG9rZW4geSBoYXkgaXRlbXMgZW4gZWwgY2Fycml0bywgZW52w61hIGVsIHRva2VuIGNvbW8gcGFyw6FtZXRyby5cclxuXHQgKi9cclxuXHRwcml2YXRlIGdldENhcnQoKSB7XHJcblx0XHQvL2NvbnNvbGUud2Fybih0aGlzLl9pdGVtcywgdGhpcy5faXRlbXMubGVuZ3RoLCB0aGlzLmNhcnRUb2tlbilcclxuXHRcdGZpcnN0VmFsdWVGcm9tKFxyXG5cdFx0XHR0aGlzLl9jb25uZWN0aW9uLnBvc3QodGhpcy5jYXJ0SXRlbXNBcGkoKSwgKCh0aGlzLmNhcnRUb2tlbiAmJiB0aGlzLl9pdGVtcy5sZW5ndGggPj0gMSkgJiYgeyB0b2tlbjogdGhpcy5jYXJ0VG9rZW4gfSkpXHJcblx0XHQpLnRoZW4oKHJlczogYW55KSA9PiB7XHJcblx0XHRcdC8vY29uc29sZS5sb2cocmVzKVx0XHJcblx0XHRcdHRoaXMuaW5pdGlhbGl6ZUNhcnQocmVzKVxyXG5cdFx0fSlcclxuXHR9XHJcblx0LyoqXHJcblx0ICogQ29uZmlndXJhIGVsIGNhcnJpdG8gY29uIGxvcyBwYXJhbWV0cm9zIGluaWNpYWxlcy5cclxuXHQgKiBAcGFyYW0gcmVzcG9uc2UgXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0aW5pdGlhbGl6ZUNhcnQocmVzcG9uc2U6IGFueSk6IGFueSB7XHJcblx0XHR0aGlzLmNhcnRUb2tlbiA9IHJlc3BvbnNlLnRva2VuVmFsdWU7XHJcblx0XHR0aGlzLl9sb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLkNBUlRfVE9LRU5fS0VZLCB0aGlzLmNhcnRUb2tlbik7XHJcblx0XHR0aGlzLl9sb2NhbGUgPSByZXNwb25zZS5sb2NhbGU7XHJcblxyXG5cdFx0dGhpcy51cGRhdGVDYXJ0T2JqKHJlc3BvbnNlLCBmYWxzZSk7XHJcblx0XHR0aGlzLnVwZGF0ZUNhcnRJdGVtcyh0aGlzLnRyYW5zZm9ybUl0ZW1zKHJlc3BvbnNlLml0ZW1zKSk7XHJcblx0XHR0aGlzLl9yZXF1ZXN0SW5Qcm9jZXNzLm5leHQoZmFsc2UpO1xyXG5cdFx0cmV0dXJuIHRydWU7XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIEFjdHVhbGl6YSBsb3MgaXRlbXMgZGVsIGNhcnJpdG8uXHJcblx0ICogQHBhcmFtIGl0ZW1zIFxyXG5cdCAqL1xyXG5cdHVwZGF0ZUNhcnRJdGVtcyhpdGVtczogYW55W10pIHtcclxuXHRcdHRoaXMuX2l0ZW1zID0gaXRlbXM7XHJcblx0XHR0aGlzLl9jb3VudCA9IGl0ZW1zLmxlbmd0aDtcclxuXHRcdHRoaXMuX2NhcnRJdGVtc1N1YmplY3QubmV4dCh0aGlzLl9pdGVtcyk7XHJcblx0XHR0aGlzLnVwZGF0ZUxvY2FsQ2FydCgpO1xyXG5cdFx0dGhpcy5fcmVxdWVzdEluUHJvY2Vzcy5uZXh0KGZhbHNlKTtcclxuXHR9XHJcblx0LyoqXHJcblx0ICogQWdyZWdhIHVuIHByb2R1Y3RvIGFsIGNhcnJpdG8gY29uIGxhIGNhbnRpZGFkIGRlc2VhZGEuIFxyXG5cdCAqIEBwYXJhbSBwcm9kdWN0IFByb2R1Y3RvIGEgYWdyZWdhclxyXG5cdCAqIEBwYXJhbSBxdWFudGl0eSBDYW50aWRhZCBcclxuXHQgKiBAcGFyYW0gdmFyaWFudElkIElkIGRlIGxhIHZhcmlhbnRlXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0YWRkVG9DYXJ0KHByb2R1Y3Q6IFByb2R1Y3QsIHF1YW50aXR5OiBudW1iZXIsIHZhcmlhbnRJZDogc3RyaW5nKSB7XHJcblx0XHQvL2NvbnNvbGUubG9nKHByb2R1Y3QpO1xyXG5cdFx0aWYgKCF0aGlzLl9hdXRoU2VydmljZS5pc0FibGVUb0J1eSgpKSB7XHJcblx0XHRcdHRoaXMuX3RvYXN0U2VydmljZS5zaG93KCdtdXN0LXNlbGVjdC1jdXN0b21lcicpXHJcblx0XHRcdHJldHVyblxyXG5cdFx0fVxyXG5cdFx0dGhpcy5fcmVxdWVzdEluUHJvY2Vzcy5uZXh0KHRydWUpO1xyXG5cdFx0bGV0IGFkZGVkID0gdGhpcy5hZGRJZkFsbHJlYWR5RXhpc3RzKHByb2R1Y3QsIHZhcmlhbnRJZCwgcXVhbnRpdHkpO1xyXG5cclxuXHRcdGlmICghYWRkZWQpIHtcclxuXHRcdFx0Zmlyc3RWYWx1ZUZyb20oXHJcblx0XHRcdFx0dGhpcy5fY29ubmVjdGlvbi5wb3N0KHRoaXMuYWRkSXRlbUFwaSgpLCB7IHByb2R1Y3RDb2RlOiBwcm9kdWN0LmlkLCBxdWFudGl0eTogcXVhbnRpdHksIHZhcmlhbnRDb2RlOiB2YXJpYW50SWQgfSkpXHJcblx0XHRcdFx0LnRoZW4oXHJcblx0XHRcdFx0XHRyZXMgPT4ge1xyXG5cdFx0XHRcdFx0XHQvLyBNYW5lamFyIGxhIHJlc3B1ZXN0YSBIVFRQIGV4aXRvc2EgKGPDs2RpZ28gMjAwKVxyXG5cdFx0XHRcdFx0XHR0aGlzLmFwcGVuZFRvQ2FydChyZXMpO1xyXG5cdFx0XHRcdFx0XHR0aGlzLl90b2FzdFNlcnZpY2Uuc2hvdygncHJvZHVjdC1hZGRlZCcpO1xyXG5cdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdGVyciA9PiB7XHJcblx0XHRcdFx0XHRcdC8vIE1hbmVqYXIgZWwgZXJyb3IgZGUgbGEgbGxhbWFkYSBIVFRQIChjw7NkaWdvIDUwMCB1IG90cm8gZXJyb3IpXHJcblx0XHRcdFx0XHRcdGlmIChlcnIuc3RhdHVzID09PSA1MDApIHtcclxuXHRcdFx0XHRcdFx0XHQvLyBDw7NkaWdvIGRlIGVycm9yIDUwMCAodGltZW91dClcclxuXHRcdFx0XHRcdFx0XHR0aGlzLmhhbmRsZUVycm9yKGVycik7XHJcblx0XHRcdFx0XHRcdFx0dGhpcy5fdG9hc3RTZXJ2aWNlLnNob3coJ2NhcnQtZXJyb3InKTtcclxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHQvLyBPdHJvIGPDs2RpZ28gZGUgZXJyb3JcclxuXHRcdFx0XHRcdFx0XHR0aGlzLmhhbmRsZUVycm9yKGVycik7XHJcblx0XHRcdFx0XHRcdFx0dGhpcy5fdG9hc3RTZXJ2aWNlLnNob3coJ2Vycm9yLXNlcnZlcicpO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0KTtcclxuXHRcdH1cclxuXHR9XHJcblx0LyoqXHJcblx0ICogQWN0dWFsaXphIGVsIGNhcnJpdG8gYWdyZWdhbmRvIGxvcyBudWV2b3MgaXRlbXMuXHJcblx0ICogQHBhcmFtIGNhcnQgXHJcblx0ICovXHJcblx0YXBwZW5kVG9DYXJ0KGNhcnQ6IGFueSkge1xyXG5cdFx0dGhpcy51cGRhdGVDYXJ0T2JqKGNhcnQpO1xyXG5cdFx0dGhpcy5faXRlbXMgPSB0aGlzLnRyYW5zZm9ybUl0ZW1zKGNhcnQuaXRlbXMpO1xyXG5cdFx0dGhpcy5fY291bnQgPSB0aGlzLl9pdGVtcy5sZW5ndGg7XHJcblx0XHR0aGlzLl9yZXF1ZXN0SW5Qcm9jZXNzLm5leHQoZmFsc2UpO1xyXG5cdFx0dGhpcy51cGRhdGVMb2NhbENhcnQoKTtcclxuXHRcdHRoaXMuX2NhcnRJdGVtc1N1YmplY3QubmV4dCh0aGlzLl9pdGVtcyk7XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIE1hcGVhIGxvcyBpdGVtcyBkZWwgY2Fycml0byBwYXJhIGRhcmxlIHVuIG1lam9yIGZvcm1hdG8gc2ltaWxhciBhIGxhIGludGVyZmF6IGBDYXJ0SXRlbWAuXHJcblx0ICogQHBhcmFtIGl0ZW1zIFxyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdHRyYW5zZm9ybUl0ZW1zKGl0ZW1zOiBhbnkpOiBhbnlbXSB7XHJcblx0XHRyZXR1cm4gaXRlbXMubWFwKChpdGVtOiBhbnkpID0+IHtcclxuXHRcdFx0cmV0dXJuIHtcclxuXHRcdFx0XHRwcm9kdWN0OiBpdGVtLnByb2R1Y3QsXHJcblx0XHRcdFx0dmFyaWFudF9pZDogaXRlbS5wcm9kdWN0LnZhcmlhbnRzWzBdLmNvZGUsXHJcblx0XHRcdFx0bG90OiBpdGVtLm9yZGVySXRlbUxvdCxcclxuXHRcdFx0XHRxdWFudGl0eTogaXRlbS5xdWFudGl0eSxcclxuXHRcdFx0XHRpdGVtX2lkOiBpdGVtLmlkLFxyXG5cdFx0XHRcdHRvdGFsOiBpdGVtLnRvdGFsXHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBDaGVxdWVhIHNpIGVsIHByb2R1Y3RvIHlhIGV4aXN0ZSBlbiBlbCBjYXJyaXRvIGRlIGNvbXByYXMuXHJcblx0ICogQHBhcmFtIHByb2R1Y3QgXHJcblx0ICogQHBhcmFtIHZhcmlhbnRJZCBcclxuXHQgKiBAcGFyYW0gcXVhbnRpdHlBZGQgQ2FudGlkYWQgYSBhZ3JlZ2FyLiBQb3IgZGVmZWN0byBlcyAxLlxyXG5cdCAqL1xyXG5cdGFkZElmQWxscmVhZHlFeGlzdHMocHJvZHVjdDogUHJvZHVjdCwgdmFyaWFudElkOiBzdHJpbmcsIHF1YW50aXR5QWRkOiBudW1iZXIgPSAxKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5faXRlbXMuZmluZCgoaXRlbTogYW55LCBpbmRleCkgPT4ge1xyXG5cdFx0XHRpZiAoaXRlbS5wcm9kdWN0LmlkID09IHByb2R1Y3QuaWQgJiYgaXRlbS52YXJpYW50X2lkID09IHZhcmlhbnRJZCkge1xyXG5cdFx0XHRcdHRoaXMudXBkYXRlSXRlbVF1YW50aXR5KGl0ZW0sIHRoaXMuZmluZEl0ZW0ocHJvZHVjdC5pZCkucXVhbnRpdHkgKyBxdWFudGl0eUFkZCk7XHJcblx0XHRcdFx0cmV0dXJuIHRydWU7XHJcblx0XHRcdH1cclxuXHRcdFx0cmV0dXJuIGZhbHNlO1xyXG5cdFx0fSlcclxuXHR9XHJcblx0LyoqXHJcblx0ICogT2J0aWVuZSBsYSBjYW50aWRhZCBkZSB1biBwcm9kdWN0byBkZWwgaXRlbSBkZWwgY2Fycml0byBcclxuXHQgKiBAcGFyYW0gY29kZVZhcmlhbnQgY29kaWdvIGRlIGxhIHZhcmlhbnRlLlxyXG5cdCAqIEByZXR1cm5zIGxhIGNhbnRpZGFkIG8gYDBgIGVuIHN1IGRlZmVjdG8uXHJcblx0ICovXHJcblx0Z2V0Q291bnRGcm9tSXRlbUluQ2FydChjb2RlVmFyaWFudDogYW55KTogbnVtYmVyIHtcclxuXHRcdHJldHVybiB0aGlzLl9pdGVtcy5maW5kKGl0ZW0gPT4gaXRlbS52YXJpYW50X2lkID09IGNvZGVWYXJpYW50KT8ucXVhbnRpdHkgfHwgMDtcclxuXHR9XHJcblx0LyoqXHJcblx0ICogT2J0aWVuZSB1biBvYnNlcnZhYmxlIGNvbiBsYSBjYW50aWRhZCBkZSBpdGVtcyBlbiBlbCBjYXJyaXRvLlxyXG5cdCAqL1xyXG5cdGdldENvdW50Q2FydEl0ZW1zKCk6IE9ic2VydmFibGU8bnVtYmVyPiB7XHJcblx0XHRyZXR1cm4gdGhpcy5jYXJ0SXRlbXMkLnBpcGUobWFwKChjYXJ0SXRlbXMpID0+IGNhcnRJdGVtcz8ubGVuZ3RoKSk7XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIE1hcGVhIGxvcyBwcm9kdWN0b3MgZW4gZWwgY2Fycml0byBwYXJhIGNhbWJpYXIgZWwgcHJlY2lvIG9idGVuaWVuZG8gZGUgbGEgdmFyaWFudGUgeSBzZWxlY2Npb25hbmRvIHNpIGVzXHJcblx0ICogcHJlY2lvIGRlIG9mZXJ0YSBvIGVsIHByZWNpbyBub3JtYWwuXHJcblx0ICogQHBhcmFtIGl0ZW1zIFxyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdHByaXZhdGUgc3dpdGNoUHJpY2VJbkNhcnRJdGVtID0gKGl0ZW1zOiBhbnlbXSkgPT4ge1xyXG5cdFx0cmV0dXJuIGl0ZW1zLm1hcChcclxuXHRcdFx0aXRlbSA9PiB7XHJcblx0XHRcdFx0aWYgKGl0ZW0ucHJvZHVjdCkge1xyXG5cdFx0XHRcdFx0aXRlbS5wcm9kdWN0LnByaWNlID0gaXRlbS5wcm9kdWN0LnZhcmlhbnRzWzBdLnNhbGVwcmljZSA/IGl0ZW0ucHJvZHVjdC52YXJpYW50c1swXS5zYWxlcHJpY2UgOiBpdGVtLnByb2R1Y3QudmFyaWFudHNbMF0ucHJpY2U7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdHJldHVybiBpdGVtXHJcblx0XHRcdH1cclxuXHRcdClcclxuXHR9XHJcblx0LyoqXHJcblx0ICogQWN0dWFsaXphIGxhIGNhbnRpZGFkIGRlIHVuIHByb2R1Y3RvIGV4aXN0ZW50ZSBlbiBlbCBjYXJyaXRvLlxyXG5cdCAqIEBwYXJhbSBpdGVtIGVsIGl0ZW0gYSBhY3R1YWxpemFyLlxyXG5cdCAqIEBwYXJhbSBxdWFudGl0eSBsYSBjYW50aWRhZCBudWV2YS5cclxuXHQgKi9cclxuXHR1cGRhdGVJdGVtUXVhbnRpdHkoaXRlbTogQ2FydEl0ZW0sIHF1YW50aXR5OiBudW1iZXIpIHtcclxuXHRcdGlmICh0aGlzLnZhbGlkYXRlUXVhbnRpdHkoaXRlbSwgcXVhbnRpdHkpKSB7XHJcblx0XHRcdGZpcnN0VmFsdWVGcm9tKFxyXG5cdFx0XHRcdHRoaXMuX2Nvbm5lY3Rpb24ucHV0KHRoaXMudXBkYXRlSXRlbVF1YW50aXR5QXBpKHRoaXMuZmluZEl0ZW1CeUlkVmFyaWFudChpdGVtLnZhcmlhbnRfaWQpKSwgeyAncXVhbnRpdHknOiBOdW1iZXIocXVhbnRpdHkpIH0pKS50aGVuKFxyXG5cdFx0XHRcdFx0cmVzID0+IHRoaXMudXBkYXRlQ2FydE9iaihyZXMpICYmIHRoaXMudXBkYXRlQ2FydEl0ZW1RdWFudGl0eShpdGVtLnZhcmlhbnRfaWQsIE51bWJlcihxdWFudGl0eSkpLFxyXG5cdFx0XHRcdFx0ZXJyID0+IHRoaXMuaGFuZGxlRXJyb3IoZXJyKVxyXG5cdFx0XHRcdClcclxuXHRcdH1cclxuXHR9XHJcblx0LyoqXHJcblx0ICogTWFuZWphIGVsIGVycm9yIGVuIGNhc28gZGUgcXVlIG5vIHNlIHB1ZWRhIGFncmVnYXIgYWwgY2Fycml0byBlbCBwcm9kdWN0by5cclxuXHQgKiBAcGFyYW0gZXJyIFxyXG5cdCAqL1xyXG5cdGhhbmRsZUVycm9yKGVycjogYW55KTogdm9pZCB7XHJcblx0XHR0aGlzLl90b2FzdFNlcnZpY2Uuc2hvdygnb3BlcmF0aW9uLWVycm9yLXBhcmFtJyk7XHJcblx0XHR0aGlzLl9yZXF1ZXN0SW5Qcm9jZXNzLm5leHQoZmFsc2UpO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBBY3R1YWxpemEgbGEgY2FudGlkYWQgZGVsIGl0ZW0gZGVsIHByb2R1Y3RvIGRlbCBjYXJyaXRvLlxyXG5cdCAqIEBwYXJhbSB2YXJpYW50SWQgSUQgZGUgbGEgdmFyaWFudGUgcGFyYSBidXNjYXIgZWwgaXRlbS5cclxuXHQgKiBAcGFyYW0gcXVhbnRpdHkgTnVldmEgY2FudGlkYWQuIFxyXG5cdCAqL1xyXG5cdHVwZGF0ZUNhcnRJdGVtUXVhbnRpdHkodmFyaWFudElkOiBhbnksIHF1YW50aXR5OiBudW1iZXIpOiB2b2lkIHtcclxuXHRcdC8vY29uc29sZS5sb2coXCJ1cGRhdGVDYXJ0SXRlbVF1YW50aXR5XCIsIHRoaXMuX2l0ZW1zLCB2YXJpYW50SWQpXHJcblx0XHRsZXQgbmV3UXVhbnRpdHkgPSB0aGlzLl9pdGVtcy5maW5kKGl0ZW0gPT4gaXRlbS52YXJpYW50X2lkID09IHZhcmlhbnRJZCkucXVhbnRpdHkgPSBxdWFudGl0eTtcclxuXHRcdHRoaXMuX2NhcnRJdGVtc1N1YmplY3QubmV4dCh0aGlzLl9pdGVtcyk7XHJcblx0XHR0aGlzLl9yZXF1ZXN0SW5Qcm9jZXNzLm5leHQoZmFsc2UpO1xyXG5cdFx0dGhpcy51cGRhdGVMb2NhbENhcnQoKTtcclxuXHRcdHRoaXMuX3RvYXN0U2VydmljZS5zaG93KCdwcm9kdWN0LXVwZGF0ZWQnLCB7IHF1YW50aXR5OiBuZXdRdWFudGl0eSB9KTtcclxuXHR9XHJcblx0LyoqXHJcblx0ICogQWN0dWFsaXphIGxvcyBkYXRvcyBkZWwgY2Fycml0byBlbiBlbCBsb2NhbFN0b3JhZ2UuIFxyXG5cdCAqL1xyXG5cdHVwZGF0ZUxvY2FsQ2FydCgpIHtcclxuXHRcdHRoaXMuX3N0b3JhZ2Uuc2V0SXRlbSh0aGlzLkNBUlRfS0VZLCB0aGlzLl9pdGVtcylcclxuXHR9XHJcblx0LyoqXHJcblx0ICogQWN0dWFsaXphIGVsIGNhcnJpdG8uIEVtaXRlIGV2ZW50byBkZSBhbmFsaXRpY3MuIFxyXG5cdCAqIEFjdHVhbGl6YSB0b2RvIGxvIHJlbGFjaW9uYWRvIGFsIGN1cMOzbi5cclxuXHQgKiBAcGFyYW0gY2FydCBSZXNwdWVzdGEgcHJvZHVjaWRhIHBvciBlbCBlbnBvaW50IGNvbiBpbmZvcm1hY2nDs24gZGVsIGNhcnJpdG8uXHJcblx0ICogQHBhcmFtIGVtaXRFdmVudCBcclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHR1cGRhdGVDYXJ0T2JqKGNhcnQ6IGFueSwgZW1pdEV2ZW50ID0gdHJ1ZSk6IGJvb2xlYW4ge1xyXG5cdFx0dGhpcy5fY2FydFN1YmplY3QubmV4dChjYXJ0KTtcclxuXHRcdGVtaXRFdmVudCAmJiB0aGlzLl9hbmFseXRpY3NTZXJ2aWNlLmNhbGxFdmVudCgnYWRkX3RvX2NhcnQnLCBjYXJ0KTtcclxuXHRcdC8vdGhpcy5fcHJvbW90aW9uc1N1YmplY3QubmV4dCh0aGlzLm9yZGVyVXRpbHMuZ2V0UHJvbW90aW9ucyhjYXJ0LCB0cnVlKSk7XHJcblxyXG5cdFx0Y2FydC5jb3Vwb25Db2RlXHJcblx0XHRcdD8gdGhpcy5mb3JtYXRDb3Vwb24oY2FydClcclxuXHRcdFx0OiB0aGlzLl9jb3Vwb25TdWJqZWN0Lm5leHQobnVsbCk7XHJcblx0XHRyZXR1cm4gdHJ1ZTtcclxuXHR9XHJcblx0LyoqXHJcblx0ICogQXBsaWNhciB1biBtZWpvciBmb3JtYXRvIGEgbG9zIGRhdG9zIGRlIGxvcyBjdXBvbmVzIGFwbGljYWRvcy5cclxuXHQgKiBAcGFyYW0gY2FydCBcclxuXHQgKi9cclxuXHRmb3JtYXRDb3Vwb24oY2FydDogYW55KSB7XHJcblx0XHRsZXQgY3VycmVudF9jb3Vwb24gPSB0aGlzLl9jb3Vwb25TdWJqZWN0LnZhbHVlO1xyXG5cdFx0bGV0IGNvdXBvbjogSUNvdXBvbiA9IHsgY29kZTogY2FydC5jb3Vwb25Db2RlIH07XHJcblx0XHR0cnkge1xyXG5cdFx0XHRjb25zdCBrZXkgPSBPYmplY3Qua2V5cyhjYXJ0LmNhcnREaXNjb3VudHMpWzBdO1xyXG5cdFx0XHRjb3Vwb24gPSB7XHJcblx0XHRcdFx0Li4uY291cG9uLFxyXG5cdFx0XHRcdGFtb3VudDogKGNhcnQuY2FydERpc2NvdW50cyAmJiBjYXJ0LmNhcnREaXNjb3VudHNba2V5XS5hbW91bnQuY3VycmVudCkgfHwgMCxcclxuXHRcdFx0XHRuYW1lOiAoY2FydC5jYXJ0RGlzY291bnRzICYmIGNhcnQuY2FydERpc2NvdW50c1trZXldLm5hbWUpIHx8ICduby1uYW1lJ1xyXG5cdFx0XHR9O1xyXG5cdFx0fSBjYXRjaCAoZSkgeyB9XHJcblx0XHQoY291cG9uICE9IGN1cnJlbnRfY291cG9uKSAmJiB0aGlzLl9jb3Vwb25TdWJqZWN0Lm5leHQoY291cG9uKTtcclxuXHRcdC8vY29uc29sZS5sb2coY291cG9uKTtcclxuXHR9XHJcblx0LyoqXHJcblx0ICogUmV0b3JuYSBlbCBJRCBkZWwgaXRlbSBkZWwgY2Fycml0by5cclxuXHQgKiBAcGFyYW0gdmFyaWFudF9pZCBJZCBkZSBsYSB2YXJpYW50ZSB1dGlsaXphZGEgcGFyYSBidXNjYXIgZWwgaXRlbS5cclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRmaW5kSXRlbUJ5SWRWYXJpYW50KHZhcmlhbnRfaWQ6IGFueSk6IGFueSB7XHJcblx0XHRyZXR1cm4gdGhpcy5faXRlbXMuZmluZChpdGVtID0+IGl0ZW0udmFyaWFudF9pZCA9PSB2YXJpYW50X2lkKSEuaXRlbV9pZFxyXG5cdH1cclxuXHQvKipcclxuXHQgKiBWYWxpZGEgbGEgY2FudGlkYWQgcGFyYSBzYWJlciBzaSBzZSBwdWVkZSBhY3R1YWxpemFyIG8gbm8uXHJcblx0ICogQHBhcmFtIGl0ZW0gaXRlbSBkZWwgY2Fycml0b1xyXG5cdCAqIEBwYXJhbSBxdWFudGl0eSBjYW50aWRhZCBhIGFncmVnYXJcclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHR2YWxpZGF0ZVF1YW50aXR5KGl0ZW06IGFueSwgcXVhbnRpdHk6IGFueSkge1xyXG5cdFx0aWYgKCh0aGlzLmdldENvdW50RnJvbUl0ZW1JbkNhcnQoaXRlbS5wcm9kdWN0Q29kZSkgKyBxdWFudGl0eSkgPiBpdGVtLnByb2R1Y3QudmFyaWFudHNbMF0ubWF4aW11bUl0ZW1zUXVhbnRpdHkpIHtcclxuXHRcdFx0dGhpcy5fdG9hc3RTZXJ2aWNlLnNob3coJ21heGltdW0taXRlbXMtcXVhbnRpdHknLCB7IHF1YW50aXR5OiBpdGVtLnByb2R1Y3QudmFyaWFudHNbMF0ubWF4aW11bUl0ZW1zUXVhbnRpdHkgfSlcclxuXHRcdFx0cmV0dXJuIGZhbHNlXHJcblx0XHR9XHJcblx0XHRpZiAoKHRoaXMuZ2V0Q291bnRGcm9tSXRlbUluQ2FydChpdGVtLnByb2R1Y3RDb2RlKSArIHF1YW50aXR5KSA8IGl0ZW0ucHJvZHVjdC52YXJpYW50c1swXS5taW5pbXVtSXRlbXNRdWFudGl0eSkge1xyXG5cdFx0XHR0aGlzLl90b2FzdFNlcnZpY2Uuc2hvdygnbWluaW11bS1pdGVtcy1xdWFudGl0eScsIHsgcXVhbnRpdHk6IGl0ZW0ucHJvZHVjdC52YXJpYW50c1swXS5taW5pbXVtSXRlbXNRdWFudGl0eSB9KVxyXG5cdFx0XHRyZXR1cm4gZmFsc2VcclxuXHRcdH1cclxuXHRcdHJldHVybiB0cnVlXHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIEJ1c2NhIHVuIHByb2R1Y3RvIGEgdHJhdsOpcyBkZSBzdSBJRCBlbiBsb3MgaXRlbXMgZGVsIGNhcnJpdG8uXHJcblx0ICogQHBhcmFtIHByb2R1Y3RfaWQgXHJcblx0ICogQHJldHVybnNcclxuXHQgKi9cclxuXHRmaW5kSXRlbShwcm9kdWN0X2lkOiBhbnkpOiBhbnkgeyByZXR1cm4gdGhpcy5faXRlbXMuZmluZCgoaXRlbTogYW55KSA9PiBpdGVtLnByb2R1Y3QuaWQgPT0gcHJvZHVjdF9pZCkgfVxyXG5cdC8qKlxyXG5cdCAqIEVsaW1pbmEgdW4gaXRlbSBkZWwgY2Fycml0byBlbiBlbCBiYWNrZW5kLlxyXG5cdCAqIEBwYXJhbSBpdGVtIGl0ZW0gYSBlbGltaW5hclxyXG5cdCAqIEBwYXJhbSB0b2FzdCBpbmRpY2Egc2kgc2UgZGlzcGFyYSB1biB0b2FzdCAgbyBuby4gUG9yIGRlZmVjdG8gZW4gYHRydWVgLlxyXG5cdCAqL1xyXG5cdGRlbGV0ZUNhcnRJdGVtKGl0ZW06IGFueSwgdG9hc3Q6IGJvb2xlYW4gPSB0cnVlKSB7XHJcblx0XHRsZXQgaWRJdGVtU2VhcmNoZWQgPSB0aGlzLmZpbmRJdGVtQnlJZFZhcmlhbnQoaXRlbS52YXJpYW50X2lkKVxyXG5cdFx0Ly9jb25zb2xlLmxvZyhpZEl0ZW1TZWFyY2hlZClcclxuXHRcdHRoaXMuX3JlcXVlc3RJblByb2Nlc3MubmV4dCh0cnVlKTtcclxuXHRcdGZpcnN0VmFsdWVGcm9tKHRoaXMuX2Nvbm5lY3Rpb24uZGVsZXRlKHRoaXMuZGVsZXRlSXRlbUFwaShpZEl0ZW1TZWFyY2hlZCkpKS50aGVuKFxyXG5cdFx0XHRyZXMgPT4ge1xyXG5cdFx0XHRcdHRoaXMucmVtb3ZlQ2FydEl0ZW0ocmVzLCBpdGVtLCB0b2FzdCk7XHJcblx0XHRcdFx0dGhpcy5fcmVxdWVzdEluUHJvY2Vzcy5uZXh0KGZhbHNlKTtcclxuXHRcdFx0fSxcclxuXHRcdFx0ZXJyID0+IHtcclxuXHRcdFx0XHR0aGlzLmhhbmRsZUVycm9yKGVycik7XHJcblx0XHRcdFx0dGhpcy5fcmVxdWVzdEluUHJvY2Vzcy5uZXh0KGZhbHNlKTtcclxuXHRcdFx0fVxyXG5cdFx0KVxyXG5cdH1cclxuXHQvKipcclxuXHQgKiBFbGltaW5hIHVuIGl0ZW0gZW4gY2Fycml0byBkZSBmb3JtYSBsb2NhbC4gXHJcblx0ICogQHBhcmFtIGNhcnQgQ2Fycml0bywgZXMgZGVjaXIsIHJlc3B1ZXN0YSBkZWwgYmFja2VuZC5cclxuXHQgKiBAcGFyYW0gcHJvZHVjdCBwcm9kdWN0byBhIGVsaW1pbmFyXHJcblx0ICogQHBhcmFtIHRvYXN0IHtib29sZWFufSBwYXJhIGluZGljYXIgc2kgc2UgZGlzcGFyYSB1biB0b2FzdCBvIG5vLiBcclxuXHQgKi9cclxuXHRyZW1vdmVDYXJ0SXRlbShjYXJ0OiBhbnksIHByb2R1Y3Q6IGFueSwgdG9hc3Q6IGJvb2xlYW4pIHtcclxuXHRcdHRoaXMudXBkYXRlQ2FydE9iaihjYXJ0LCBmYWxzZSk7XHJcblx0XHR0aGlzLl9pdGVtcy5zcGxpY2UodGhpcy5faXRlbXMuZmluZEluZGV4KHZhbHVlID0+IHZhbHVlLml0ZW1faWQgPT09IHByb2R1Y3QuaXRlbV9pZCksIDEpO1xyXG5cdFx0dGhpcy5fY2FydEl0ZW1zU3ViamVjdC5uZXh0KHRoaXMuX2l0ZW1zKTtcclxuXHRcdHRvYXN0ICYmIHRoaXMuX3JlcXVlc3RJblByb2Nlc3MubmV4dChmYWxzZSk7XHJcblx0XHR0b2FzdCAmJiB0aGlzLl90b2FzdFNlcnZpY2Uuc2hvdygncHJvZHVjdC1yZW1vdmVkJyk7XHJcblx0XHR0aGlzLnVwZGF0ZUxvY2FsQ2FydCgpO1xyXG5cdFx0dGhpcy5fYW5hbHl0aWNzU2VydmljZS5jYWxsRXZlbnQoJ3JlbW92ZV9mcm9tX2NhcnQnLCB7IC4uLnByb2R1Y3QsIGN1cnJlbmN5OiB0aGlzLl9jb25zdHMuY3VycmVuY3kuY29kZSB9KVxyXG5cdH1cclxuXHQvKipcclxuXHQgKiBBZ3JlZ2EgdW4gY3Vwb24gYWwgY2Fycml0by5cclxuXHQgKiBAcGFyYW0gdmFsdWUgQ29kaWdvIGRlbCBjdXDDs24uXHJcblx0ICovXHJcblx0YWRkQ291cG9uKHZhbHVlOiBzdHJpbmcpIHtcclxuXHRcdGZpcnN0VmFsdWVGcm9tKHRoaXMuX2Nvbm5lY3Rpb24ucHV0KHRoaXMuY291cG9uQXBpKCksIHsgY291cG9uOiB2YWx1ZSB9KSkudGhlbihcclxuXHRcdFx0cmVzID0+IHtcclxuXHRcdFx0XHQvL2NvbnNvbGUubG9nKHJlcylcclxuXHRcdFx0XHR0aGlzLnVwZGF0ZUNhcnRPYmoocmVzKVxyXG5cdFx0XHRcdHRoaXMuX3RvYXN0U2VydmljZS5zaG93KCdDdXBvbiBhcGxpY2FkbycpXHJcblx0XHRcdH0sXHJcblx0XHRcdGVyciA9PiB7XHJcblx0XHRcdFx0Ly9jb25zb2xlLmVycm9yKGVycikgXHJcblx0XHRcdFx0dGhpcy5fdG9hc3RTZXJ2aWNlLnNob3coJ2ludmFsaWQtY291cG9uJylcclxuXHRcdFx0fVxyXG5cdFx0KVxyXG5cdH1cclxuXHQvKipcclxuXHQgKiBFbGltaW5hIHVuIGN1cMOzbiBkZWwgY2Fycml0by4gXHJcblx0ICovXHJcblx0cmVtb3ZlQ291cG9uKCkge1xyXG5cdFx0Zmlyc3RWYWx1ZUZyb20odGhpcy5fY29ubmVjdGlvbi5kZWxldGUodGhpcy5jb3Vwb25BcGkoKSkpLnRoZW4oXHJcblx0XHRcdHJlcyA9PiB7XHJcblx0XHRcdFx0Ly9jb25zb2xlLmxvZyhyZXMpXHJcblx0XHRcdFx0dGhpcy51cGRhdGVDYXJ0T2JqKHJlcylcclxuXHRcdFx0fVxyXG5cdFx0KVxyXG5cdH1cclxuXHQvKipcclxuXHQgKiBSZXRvcm5hIHVuIG9ic2VydmFibGUgY29uIGVsIHN1YnRvdGFsIGRlbCBjYXJyaXRvLlxyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdGdldFN1YlRvdGFsQW1vdW50KCk6IE9ic2VydmFibGU8bnVtYmVyPiB7XHJcblx0XHRyZXR1cm4gdGhpcy5jYXJ0JC5waXBlKG1hcCgoY2FydCkgPT4gY2FydD8udG90YWxzPy5pdGVtcykpO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBSZXRvcm5hIHVuIG9ic2VydmFibGUgY29uIGVsIHRvdGFsIGRlbCBtb250byBkZSBsYXMgcHJvbW9jaW9uZXMgYXBsaWNhZGFzLlxyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdGdldFRvdGFsUHJvbW90aW9uQW1vdW50KCk6IE9ic2VydmFibGU8bnVtYmVyPiB7XHJcblx0XHRyZXR1cm4gdGhpcy5jYXJ0JC5waXBlKG1hcCgoY2FydCkgPT4gY2FydD8udG90YWxzPy5wcm9tb3Rpb24pKTtcclxuXHR9XHJcblx0LyoqXHJcblx0ICogUmV0b3JuYSB1biBvYnNlcnZhYmxlIGNvbiBlbCBtb250byBkZSBsb3MgaW1wdWVzdG9zIGFwbGljYWRvcy5cclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRnZXRUYXhlc0Ftb3VudCgpOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xyXG5cdFx0cmV0dXJuIHRoaXMuY2FydCQucGlwZShtYXAoKGNhcnQpID0+IGNhcnQ/LnRvdGFscz8udGF4ZXMgPiAwID8gY2FydD8udG90YWxzPy50YXhlcyA6IDApKTtcclxuXHR9XHJcblx0LyoqXHJcblx0ICogUmV0b3JuYSB1biBvYnNlcnZhYmxlIGNvbiBlbCBtb250byB0b3RhbCBkZWwgY2Fycml0by5cclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRnZXRUb3RhbEFtb3VudCgpIHtcclxuXHRcdHJldHVybiB0aGlzLmNhcnQkLnBpcGUobWFwKChjYXJ0KSA9PiBjYXJ0Py50b3RhbHM/LnRvdGFsKSk7XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIFJldG9ybmEgZWwgdG9rZW4gZGVsIGNhcnJpdG8uXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0Z2V0Q2FydFRva2VuKCkge1xyXG5cdFx0cmV0dXJuIHRoaXMuY2FydFRva2VuO1xyXG5cdH1cclxuXHRjaGFuZ2VIYXZlVG9VcGRhdGUgPSAodmFsdWU6IGFueSkgPT4gdGhpcy5faGF2ZVRvVXBkYXRlID0gdmFsdWU7XHJcblx0Y2xlYXJBbmRSZXNldEN1c3RvbWVyQ2FydCgpIHtcclxuXHRcdGNvbnNvbGUubG9nKFwiQ2xlYXJpbmcgYW5kIHJlc2V0aW5nLi4uXCIpXHJcblx0XHR0aGlzLnJlc2V0Q2FydCh0aGlzLmdldENhcnRCeUN1c3RvbWVyKVxyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBnZXRDYXJ0QnlDdXN0b21lciA9IGFzeW5jICgpID0+XHJcblx0XHR0aGlzLl9jb25uZWN0aW9uLnBvc3QodGhpcy5jYXJ0SXRlbXNBcGkoKSkuc3Vic2NyaWJlKFxyXG5cdFx0XHRyZXMgPT4gdGhpcy5pbml0aWFsaXplQ2FydChyZXMpXHJcblx0XHQpXHJcblx0cHJpdmF0ZSByZXNldENhcnQgPSAoZm4/OiBhbnkpID0+IHtcclxuXHRcdHRoaXMuX2l0ZW1zID0gW107XHJcblx0XHR0aGlzLl9jYXJ0U3ViamVjdC5uZXh0KG51bGwpO1xyXG5cdFx0dGhpcy51cGRhdGVCYWxhbmNlQXR0cmlidXRlcyhudWxsKTtcclxuXHRcdHRoaXMuY2FydFRva2VuID0gbnVsbDtcclxuXHRcdHRoaXMuX2NhcnRJdGVtc1N1YmplY3QubmV4dChbXSk7XHJcblx0XHR0aGlzLl9jb3VudCA9IDA7XHJcblx0XHR0aGlzLl9sb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLkNBUlRfS0VZLCBcIltdXCIpO1xyXG5cdFx0dGhpcy5fbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0odGhpcy5DQVJUX1RPS0VOX0tFWSk7XHJcblx0XHRmbiAmJiBmbigpO1xyXG5cdH1cclxuXHRjbGVhckFuZFJlc2V0Q2FydCgpIHtcclxuICAgICAgICB0aGlzLnJlc2V0Q2FydCgoKSA9PiB0aGlzLmdldENhcnQpO1xyXG4gICAgfVxyXG5cclxuXHRwdWJsaWMgdXBkYXRlQmFsYW5jZUF0dHJpYnV0ZXMoY2FydERhdGE6IGFueSkge1xyXG4gICAgICAgIGNvbnN0IGJhbGFuY2VEYXRhID0ge1xyXG4gICAgICAgICAgICBhbGxvd0FueVBheW1lbnRNZXRob2Q6IGNhcnREYXRhPy5hbGxvd0FueVBheW1lbnRNZXRob2QgPz8gZmFsc2UsXHJcbiAgICAgICAgICAgIGFsbG93RXhjZWVkQmFsYW5jZTogY2FydERhdGE/LmFsbG93RXhjZWVkQmFsYW5jZSA/PyBmYWxzZSxcclxuICAgICAgICAgICAgY3JlZGl0QW1vdW50OiBjYXJ0RGF0YT8uY3JlZGl0QW1vdW50ID8/IG51bGwsXHJcbiAgICAgICAgICAgIHNob3dNYXg6IGNhcnREYXRhPy5zaG93TWF4ID8/IGZhbHNlLFxyXG4gICAgICAgICAgICBzaG93UHJpY2U6IGNhcnREYXRhPy5zaG93UHJpY2UgPz8gZmFsc2UsXHJcbiAgICAgICAgICAgIHJlbWFpbmluZ0NyZWRpdHM6IGNhcnREYXRhPy5jcmVkaXRBbW91bnQgJiYgY2FydERhdGE/LmNyZWRpdEFtb3VudCA+PSBjYXJ0RGF0YT8udG90YWxzLnRvdGFsXHJcbiAgICAgICAgICAgICAgICA/IGNhcnREYXRhPy5jcmVkaXRBbW91bnQgLSBjYXJ0RGF0YT8udG90YWxzLnRvdGFsXHJcbiAgICAgICAgICAgICAgICA6IDAsXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgdGhpcy5fYmFsYW5jZUN1c3RvbWVyU3ViamVjdC5uZXh0KGJhbGFuY2VEYXRhKTtcclxuXHRcdGNvbnNvbGUubG9nKGJhbGFuY2VEYXRhKVxyXG4gICAgfVxyXG5cdGFkZFRvTG90KHByb2R1Y3Q6IFByb2R1Y3QsIHF1YW50aXR5OiBudW1iZXIsIHZhcmlhbnRfaWQ6IGFueSwgaWQ/OiBudW1iZXIsIG9yZGVyX2l0ZW1faWQ/OiBhbnksIGxvdF9xdWFudGl0eT86IGFueSwgdW5pdF9wcmljZT86IGFueSwgdW5pdF90b3RhbD86IGFueSwgYWp1c3RlbWVudF90b3RhbD86IGFueSwgdG90YWxfbG90PzogbnVtYmVyLCBsb3Rfc3RhdHVzPzogc3RyaW5nLCBkYXRlX3JlcXVlc3Q/OiBzdHJpbmcsIG5vdGVzPzogc3RyaW5nLCBzaGlwcGluZ19hZGRyZXNzX2lkPzogbnVtYmVyLCBzaGlwcGluZ19hZGRyZXNzX25hbWU/OiBzdHJpbmcsIGFjdGlvbj86IHN0cmluZyl7XHJcbiAgICAgICAgaWYgKCF0aGlzLl9hdXRoU2VydmljZS5pc0FibGVUb0J1eSgpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3RvYXN0U2VydmljZS5zaG93KCdtdXN0LXNlbGVjdC1jdXN0b21lcicpXHJcbiAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IGFkZGVkID0gJyc7XHJcbiAgICAgICAgIWFkZGVkICYmIHRoaXMuX2Nvbm5lY3Rpb24ucG9zdCh0aGlzLmFkZEl0ZW1BcGkoKSwgeyBwcm9kdWN0Q29kZTogcHJvZHVjdC5pZCwgcXVhbnRpdHk6IHF1YW50aXR5LCB2YXJpYW50Q29kZTogdmFyaWFudF9pZCwgaWQ6IGlkIHx8ICcnLCBvcmRlcl9pdGVtX2lkOiBvcmRlcl9pdGVtX2lkIHx8ICcnLCBsb3RfcXVhbnRpdHk6IGxvdF9xdWFudGl0eSB8fCAnJywgdW5pdF9wcmljZTogdW5pdF9wcmljZSB8fCAnJywgdW5pdF90b3RhbDogdW5pdF90b3RhbCB8fCAnJywgYWp1c3RlbWVudF90b3RhbDogYWp1c3RlbWVudF90b3RhbCB8fCAnJywgdG90YWxfbG90OiB0b3RhbF9sb3QgfHwgJycsIGxvdF9zdGF0dXM6IGxvdF9zdGF0dXMgfHwgJycsIGRhdGVfcmVxdWVzdDogZGF0ZV9yZXF1ZXN0IHx8ICcnLCBub3Rlczogbm90ZXMgfHwgJycsIHNoaXBwaW5nX2FkZHJlc3NfaWQ6IHNoaXBwaW5nX2FkZHJlc3NfaWQgfHwgJycsIHNoaXBwaW5nX2FkZHJlc3NfbmFtZTogc2hpcHBpbmdfYWRkcmVzc19uYW1lIHx8ICcnLCBhY3Rpb246IGFjdGlvbiB8fCAnbmV3bG90JyB9KVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHtcclxuXHRcdFx0XHRuZXh0OiAocmVzKSA9PiB0aGlzLmFwcGVuZFRvQ2FydChyZXMpLFxyXG5cdFx0XHRcdGVycm9yOiAoZXJyKSA9PiB0aGlzLmhhbmRsZUVycm9yKGVycilcclxuXHRcdFx0fSk7XHJcbiAgICB9XHJcbn1cclxuIl19
482
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FydC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLXNlcnZpY2VzL2NhcnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUMzQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDekUsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLEdBQUcsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUN2RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDL0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDOztBQUlyRSxNQUFNLE9BQU8sV0FBVztJQUNmLFlBQVksR0FBZ0IsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2hELGFBQWEsR0FBaUIsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ25ELFdBQVcsR0FBc0IsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDM0QsVUFBVSxHQUF3QixNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUM5RCxpQkFBaUIsR0FBcUIsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDL0QsYUFB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SSxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsbUJBQW1CLEVBQUUsbUJBQW1CLElBQUksRUFBRSxFQUFFLHFCQUFxQixFQUFFLHFCQUFxQixJQUFJLEVBQUUsRUFBRSxNQUFNLEVBQUUsTUFBTSxJQUFJLFFBQVEsRUFBRSxDQUFDO2FBQ2ppQixTQUFTLENBQUM7WUFDbkIsSUFBSSxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQztZQUNyQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDO1NBQ3JDLENBQUMsQ0FBQztJQUNGLENBQUM7SUFHRCxlQUFlLEdBQUcsR0FBOEIsRUFBRSxDQUM5QyxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUM3QixHQUFHLENBQUMsQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDLGVBQWUsRUFBRSxZQUFZLElBQUksSUFBSSxDQUFDLENBQ2xFLENBQUM7SUFHTixtQkFBbUIsR0FBRyxHQUFtQyxFQUFFLENBQ3ZELElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQyxlQUFlLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO3VHQXJmMUYsV0FBVzsyR0FBWCxXQUFXLGNBRlgsTUFBTTs7MkZBRU4sV0FBVztrQkFIdkIsVUFBVTttQkFBQztvQkFDWCxVQUFVLEVBQUUsTUFBTTtpQkFDbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQmFsYW5jZUN1c3RvbWVyLCBDYXJ0SXRlbSwgSUNvdXBvbiwgUHJvZHVjdCB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4vYXV0aC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi90b2FzdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29ubmVjdGlvblNlcnZpY2UgfSBmcm9tICcuLi9hcGknO1xyXG5pbXBvcnQgeyBBcGlDb25zdGFudHNTZXJ2aWNlLCBDb3JlQ29uc3RhbnRzU2VydmljZSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgZmlyc3RWYWx1ZUZyb20sIG1hcCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBBbmFseXRpY3NTZXJ2aWNlIH0gZnJvbSAnLi9hbmFseXRpY3MnO1xyXG5pbXBvcnQgeyBMb2NhbFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi9sb2NhbC1zdG9yYWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDaGFubmVsU2VydmljZSB9IGZyb20gJy4vY2hhbm5lbC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTmd4TG9jYWxTdG9yYWdlU2VydmljZSB9IGZyb20gJy4vbmd4LWxvY2FsLXN0b3JhZ2Uuc2VydmljZSc7XHJcbkBJbmplY3RhYmxlKHtcclxuXHRwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIENhcnRTZXJ2aWNlIHtcclxuXHRwcml2YXRlIF9hdXRoU2VydmljZTogQXV0aFNlcnZpY2UgPSBpbmplY3QoQXV0aFNlcnZpY2UpO1xyXG5cdHByaXZhdGUgX3RvYXN0U2VydmljZTogVG9hc3RTZXJ2aWNlID0gaW5qZWN0KFRvYXN0U2VydmljZSk7XHJcblx0cHJpdmF0ZSBfY29ubmVjdGlvbjogQ29ubmVjdGlvblNlcnZpY2UgPSBpbmplY3QoQ29ubmVjdGlvblNlcnZpY2UpO1xyXG5cdHByaXZhdGUgX2FwaUNvbnN0czogQXBpQ29uc3RhbnRzU2VydmljZSA9IGluamVjdChBcGlDb25zdGFudHNTZXJ2aWNlKTtcclxuXHRwcml2YXRlIF9hbmFseXRpY3NTZXJ2aWNlOiBBbmFseXRpY3NTZXJ2aWNlID0gaW5qZWN0KEFuYWx5dGljc1NlcnZpY2UpO1xyXG5cdHByaXZhdGUgX2xvY2FsU3RvcmFnZTogTG9jYWxTdG9yYWdlU2VydmljZSA9IGluamVjdChMb2NhbFN0b3JhZ2VTZXJ2aWNlKTtcclxuXHRwcml2YXRlIF9jaGFubmVsU2VydmljZTogQ2hhbm5lbFNlcnZpY2UgPSBpbmplY3QoQ2hhbm5lbFNlcnZpY2UpO1xyXG5cdHByaXZhdGUgX2NvbnN0czogQ29yZUNvbnN0YW50c1NlcnZpY2UgPSBpbmplY3QoQ29yZUNvbnN0YW50c1NlcnZpY2UpO1xyXG5cdHByaXZhdGUgX3N0b3JhZ2U6IE5neExvY2FsU3RvcmFnZVNlcnZpY2UgPSBpbmplY3QoTmd4TG9jYWxTdG9yYWdlU2VydmljZSk7XHJcblxyXG5cdHByaXZhdGUgX2NhcnRTdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8YW55PiA9IG5ldyBCZWhhdmlvclN1YmplY3QobnVsbCk7XHJcblx0cHJpdmF0ZSBfcHJvbW90aW9uc1N1YmplY3Q6IEJlaGF2aW9yU3ViamVjdDxhbnk+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChbXSk7XHJcblx0cHJpdmF0ZSBfY291cG9uU3ViamVjdDogQmVoYXZpb3JTdWJqZWN0PGFueT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KG51bGwpO1xyXG5cdHByaXZhdGUgX2NhcnRJdGVtc1N1YmplY3Q6IEJlaGF2aW9yU3ViamVjdDxDYXJ0SXRlbVtdPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Q2FydEl0ZW1bXT4oW10pXHJcblx0cHJpdmF0ZSBfcmVxdWVzdEluUHJvY2VzczogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XHJcblx0cHJpdmF0ZSBfYmFsYW5jZUN1c3RvbWVyU3ViamVjdDogQmVoYXZpb3JTdWJqZWN0PEJhbGFuY2VDdXN0b21lcj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEJhbGFuY2VDdXN0b21lcj4oe1xyXG4gICAgICAgIGFsbG93QW55UGF5bWVudE1ldGhvZDogZmFsc2UsXHJcbiAgICAgICAgYWxsb3dFeGNlZWRCYWxhbmNlOiBmYWxzZSxcclxuICAgICAgICBjcmVkaXRBbW91bnQ6IDAsXHJcbiAgICAgICAgc2hvd01heDogZmFsc2UsXHJcbiAgICAgICAgc2hvd1ByaWNlOiBmYWxzZSxcclxuICAgICAgICByZW1haW5pbmdDcmVkaXRzOiAwLFxyXG5cdFx0YXBwbHlNYXhPcmRlcnM6IGZhbHNlLFxyXG4gICAgICAgIG1heE9yZGVyczogSW5maW5pdHlcclxuICAgIH0pO1xyXG5cclxuXHRwcml2YXRlIHJlYWRvbmx5IENBUlRfS0VZOiBzdHJpbmcgPSAnY2FydCc7XHJcblx0cHJpdmF0ZSByZWFkb25seSBDQVJUX1RPS0VOX0tFWTogc3RyaW5nID0gJ2NhcnRfdG9rZW4nO1xyXG5cclxuXHRwcml2YXRlIF9pdGVtczogYW55W10gPSBbXTtcclxuXHRwcml2YXRlIF9jb3VudDogbnVtYmVyID0gMDtcclxuXHRwdWJsaWMgY2FydFRva2VuOiBzdHJpbmcgfCBudWxsID0gJyc7XHJcblx0cHVibGljIGNoYW5uZWxDb25maWc6IGFueSA9IHt9O1xyXG5cdHByaXZhdGUgX2xvY2FsZSA9IFwiXCI7XHJcblx0cHVibGljIGNhcnRJdGVtcyQgPSB0aGlzLl9jYXJ0SXRlbXNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpLnBpcGUobWFwKGl0ZW1zID0+IHRoaXMuc3dpdGNoUHJpY2VJbkNhcnRJdGVtKGl0ZW1zKSkpXHJcblx0cHVibGljIGNvdXBvbiQ6IE9ic2VydmFibGU8YW55PiA9IHRoaXMuX2NvdXBvblN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XHJcblx0cHVibGljIGNhcnQkOiBPYnNlcnZhYmxlPGFueT4gPSB0aGlzLl9jYXJ0U3ViamVjdC5hc09ic2VydmFibGUoKTtcclxuXHRwdWJsaWMgbG9hZGluZyQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLl9yZXF1ZXN0SW5Qcm9jZXNzLmFzT2JzZXJ2YWJsZSgpO1xyXG5cdHByaXZhdGUgX2hhdmVUb1VwZGF0ZSA9IHRydWU7XHJcblx0cHVibGljIGJhbGFuY2VDdXN0b21lciQgPSB0aGlzLl9iYWxhbmNlQ3VzdG9tZXJTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgcHVibGljIGFsbG93QW55UGF5bWVudE1ldGhvZCQgPSB0aGlzLmJhbGFuY2VDdXN0b21lciQucGlwZShtYXAoZGF0YSA9PiBkYXRhLmFsbG93QW55UGF5bWVudE1ldGhvZCkpO1xyXG4gICAgcHVibGljIGFsbG93RXhjZWVkQmFsYW5jZSQgPSB0aGlzLmJhbGFuY2VDdXN0b21lciQucGlwZShtYXAoZGF0YSA9PiBkYXRhLmFsbG93RXhjZWVkQmFsYW5jZSkpO1xyXG4gICAgcHVibGljIGNyZWRpdEFtb3VudCQgPSB0aGlzLmJhbGFuY2VDdXN0b21lciQucGlwZShtYXAoZGF0YSA9PiBkYXRhLmNyZWRpdEFtb3VudCkpO1xyXG4gICAgcHVibGljIHNob3dNYXgkID0gdGhpcy5iYWxhbmNlQ3VzdG9tZXIkLnBpcGUobWFwKGRhdGEgPT4gZGF0YS5zaG93TWF4KSk7XHJcbiAgICBwdWJsaWMgc2hvd1ByaWNlJCA9IHRoaXMuYmFsYW5jZUN1c3RvbWVyJC5waXBlKG1hcChkYXRhID0+IGRhdGEuc2hvd1ByaWNlKSk7XHJcblx0cHVibGljIHByb21vdGlvbnMkID0gdGhpcy5fcHJvbW90aW9uc1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XHJcblx0Ly9BUEkgVVJMXHJcblx0cHJpdmF0ZSBfY2FydEJhc2VVcmw6IHN0cmluZyA9IGAke3RoaXMuX2FwaUNvbnN0cy5TSE9QX0FQSV9VUkx9JHt0aGlzLl9hcGlDb25zdHMuQ0hBTk5FTH0vY2FydHNgO1xyXG5cclxuXHRwdWJsaWMgdXBkYXRlSXRlbVF1YW50aXR5QXBpKGl0ZW1faWQ6IGFueSkgeyByZXR1cm4gdGhpcy5fY2FydEJhc2VVcmwgKyAnLycgKyB0aGlzLmNhcnRUb2tlbiArICcvaXRlbXMvJyArIGl0ZW1faWQgKyAnP2xvY2FsZT0nICsgdGhpcy5fYXBpQ29uc3RzLkxPQ0FMRTsgfVxyXG5cdHB1YmxpYyBhZGRJdGVtQXBpKCk6IHN0cmluZyB7IHJldHVybiB0aGlzLl9jYXJ0QmFzZVVybCArICcvJyArIHRoaXMuY2FydFRva2VuICsgJy9pdGVtcz9sb2NhbGU9JyArIHRoaXMuX2FwaUNvbnN0cy5MT0NBTEUgfVxyXG5cdHB1YmxpYyBjYXJ0SXRlbXNBcGkoKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMuX2NhcnRCYXNlVXJsICsgJz9sb2NhbGU9JyArIHRoaXMuX2FwaUNvbnN0cy5MT0NBTEUgfVxyXG5cdHB1YmxpYyBkZWxldGVJdGVtQXBpKGl0ZW1faWQ6IHN0cmluZykgeyByZXR1cm4gdGhpcy5fY2FydEJhc2VVcmwgKyAnLycgKyB0aGlzLmNhcnRUb2tlbiArICcvaXRlbXMvJyArIGl0ZW1faWQgKyAnP2xvY2FsZT0nICsgdGhpcy5fYXBpQ29uc3RzLkxPQ0FMRTsgfVxyXG5cdHB1YmxpYyBjb3Vwb25BcGkoKSB7IHJldHVybiB0aGlzLl9jYXJ0QmFzZVVybCArICcvJyArIHRoaXMuY2FydFRva2VuICsgJy9jb3Vwb24nIH07XHJcblxyXG5cdGNvbnN0cnVjdG9yKCkge1xyXG5cdFx0dGhpcy5fcmVxdWVzdEluUHJvY2Vzcy5uZXh0KHRydWUpO1xyXG5cdFx0dGhpcy5jYXJ0VG9rZW4gPSB0aGlzLl9sb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLkNBUlRfVE9LRU5fS0VZKSB8fCBudWxsO1xyXG5cdFx0dGhpcy5pbml0aWFsaXplRGF0YUNhcnQoKTtcclxuXHRcdHRoaXMuX2NoYW5uZWxTZXJ2aWNlLmNoYW5uZWwkLnN1YnNjcmliZShyZXMgPT4gdGhpcy5jaGFubmVsQ29uZmlnID0gcmVzKVxyXG5cdH1cclxuXHQvKipcclxuXHQgKiBJbmljaWFsaXphIGVsIGNhcnJpdG8gY29uIGxvcyBkYXRvcyBkZWwgbG9jYWwgc3RvcmFnZSBlbiBjYXNvIGRlIHF1ZSBleGlzdGFuIG8gbm8uXHJcblx0ICovXHJcblx0cHJpdmF0ZSBpbml0aWFsaXplRGF0YUNhcnQoKSB7XHJcblx0XHRjb21iaW5lTGF0ZXN0KFt0aGlzLl9hdXRoU2VydmljZS5sb2dnZWRJbiQsIHRoaXMuX3N0b3JhZ2UuZ2V0SXRlbSh0aGlzLkNBUlRfS0VZKV0pLnN1YnNjcmliZSh7XHJcblx0XHRcdG5leHQ6IChbbG9nZ2VkSW4sIHRva2VuXSkgPT4ge1xyXG5cdFx0XHRcdC8vY29uc29sZS5sb2cobG9nZ2VkSW4sIHRva2VuKTtcclxuXHRcdFx0XHR0aGlzLl9pdGVtcyA9IHRva2VuIHx8IFtdO1xyXG5cdFx0XHRcdHRoaXMuZ2V0Q2FydCgpXHJcblx0XHRcdH1cclxuXHRcdH0pXHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIE9idGllbmUgZWwgY2Fycml0byBkZXNkZSBlbCBiYWNrZW5kIHkgbG8gaW5pY2lhbGl6YS4gXHJcblx0ICogU2kgZXhpc3RlIGVsIGNhcnRUb2tlbiB5IGhheSBpdGVtcyBlbiBlbCBjYXJyaXRvLCBlbnbDrWEgZWwgdG9rZW4gY29tbyBwYXLDoW1ldHJvLlxyXG5cdCAqL1xyXG5cdHByaXZhdGUgZ2V0Q2FydCgpIHtcclxuXHRcdC8vY29uc29sZS53YXJuKHRoaXMuX2l0ZW1zLCB0aGlzLl9pdGVtcy5sZW5ndGgsIHRoaXMuY2FydFRva2VuKVxyXG5cdFx0Zmlyc3RWYWx1ZUZyb20oXHJcblx0XHRcdHRoaXMuX2Nvbm5lY3Rpb24ucG9zdCh0aGlzLmNhcnRJdGVtc0FwaSgpLCAoKHRoaXMuY2FydFRva2VuICYmIHRoaXMuX2l0ZW1zLmxlbmd0aCA+PSAxKSAmJiB7IHRva2VuOiB0aGlzLmNhcnRUb2tlbiB9KSlcclxuXHRcdCkudGhlbigocmVzOiBhbnkpID0+IHtcclxuXHRcdFx0Ly9jb25zb2xlLmxvZyhyZXMpXHRcclxuXHRcdFx0dGhpcy5pbml0aWFsaXplQ2FydChyZXMpXHJcblx0XHR9KVxyXG5cdH1cclxuXHQvKipcclxuXHQgKiBDb25maWd1cmEgZWwgY2Fycml0byBjb24gbG9zIHBhcmFtZXRyb3MgaW5pY2lhbGVzLlxyXG5cdCAqIEBwYXJhbSByZXNwb25zZSBcclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRpbml0aWFsaXplQ2FydChyZXNwb25zZTogYW55KTogYW55IHtcclxuXHRcdHRoaXMuY2FydFRva2VuID0gcmVzcG9uc2UudG9rZW5WYWx1ZTtcclxuXHRcdHRoaXMuX2xvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuQ0FSVF9UT0tFTl9LRVksIHRoaXMuY2FydFRva2VuKTtcclxuXHRcdHRoaXMuX2xvY2FsZSA9IHJlc3BvbnNlLmxvY2FsZTtcclxuXHJcblx0XHR0aGlzLnVwZGF0ZUNhcnRPYmoocmVzcG9uc2UsIGZhbHNlKTtcclxuXHRcdHRoaXMudXBkYXRlQ2FydEl0ZW1zKHRoaXMudHJhbnNmb3JtSXRlbXMocmVzcG9uc2UuaXRlbXMpKTtcclxuXHRcdHRoaXMuX3JlcXVlc3RJblByb2Nlc3MubmV4dChmYWxzZSk7XHJcblx0XHRyZXR1cm4gdHJ1ZTtcclxuXHR9XHJcblx0LyoqXHJcblx0ICogQWN0dWFsaXphIGxvcyBpdGVtcyBkZWwgY2Fycml0by5cclxuXHQgKiBAcGFyYW0gaXRlbXMgXHJcblx0ICovXHJcblx0dXBkYXRlQ2FydEl0ZW1zKGl0ZW1zOiBhbnlbXSkge1xyXG5cdFx0dGhpcy5faXRlbXMgPSBpdGVtcztcclxuXHRcdHRoaXMuX2NvdW50ID0gaXRlbXMubGVuZ3RoO1xyXG5cdFx0dGhpcy5fY2FydEl0ZW1zU3ViamVjdC5uZXh0KHRoaXMuX2l0ZW1zKTtcclxuXHRcdHRoaXMudXBkYXRlTG9jYWxDYXJ0KCk7XHJcblx0XHR0aGlzLl9yZXF1ZXN0SW5Qcm9jZXNzLm5leHQoZmFsc2UpO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBBZ3JlZ2EgdW4gcHJvZHVjdG8gYWwgY2Fycml0byBjb24gbGEgY2FudGlkYWQgZGVzZWFkYS4gXHJcblx0ICogQHBhcmFtIHByb2R1Y3QgUHJvZHVjdG8gYSBhZ3JlZ2FyXHJcblx0ICogQHBhcmFtIHF1YW50aXR5IENhbnRpZGFkIFxyXG5cdCAqIEBwYXJhbSB2YXJpYW50SWQgSWQgZGUgbGEgdmFyaWFudGVcclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRhZGRUb0NhcnQocHJvZHVjdDogUHJvZHVjdCwgcXVhbnRpdHk6IG51bWJlciwgdmFyaWFudElkOiBzdHJpbmcpIHtcclxuXHRcdGNvbnN0IGJhbGFuY2U6QmFsYW5jZUN1c3RvbWVyID0gdGhpcy5fYmFsYW5jZUN1c3RvbWVyU3ViamVjdC52YWx1ZTtcclxuXHJcbiAgICAgICAgaWYgKGJhbGFuY2UuYXBwbHlNYXhPcmRlcnMgJiYgKCBiYWxhbmNlLm1heE9yZGVycyAmJiAoYmFsYW5jZS5tYXhPcmRlcnMgPD0gMCB8fCBiYWxhbmNlLm1heE9yZGVycyA9PT0gbnVsbCkpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3RvYXN0U2VydmljZS5zaG93KCdtYXgtb3JkZXJzLXJlYWNoZWQnKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHRcdGlmICghdGhpcy5fYXV0aFNlcnZpY2UuaXNBYmxlVG9CdXkoKSkge1xyXG5cdFx0XHR0aGlzLl90b2FzdFNlcnZpY2Uuc2hvdygnbXVzdC1zZWxlY3QtY3VzdG9tZXInKVxyXG5cdFx0XHRyZXR1cm5cclxuXHRcdCB9XHJcblx0XHR0aGlzLl9yZXF1ZXN0SW5Qcm9jZXNzLm5leHQodHJ1ZSk7XHJcblx0XHRsZXQgYWRkZWQgPSB0aGlzLmFkZElmQWxscmVhZHlFeGlzdHMocHJvZHVjdCwgdmFyaWFudElkLCBxdWFudGl0eSk7XHJcblxyXG5cdFx0aWYgKCFhZGRlZCkge1xyXG5cdFx0XHRmaXJzdFZhbHVlRnJvbShcclxuXHRcdFx0XHR0aGlzLl9jb25uZWN0aW9uLnBvc3QodGhpcy5hZGRJdGVtQXBpKCksIHsgcHJvZHVjdENvZGU6IHByb2R1Y3QuaWQsIHF1YW50aXR5OiBxdWFudGl0eSwgdmFyaWFudENvZGU6IHZhcmlhbnRJZCB9KSlcclxuXHRcdFx0XHQudGhlbihcclxuXHRcdFx0XHRcdHJlcyA9PiB7XHJcblx0XHRcdFx0XHRcdC8vIE1hbmVqYXIgbGEgcmVzcHVlc3RhIEhUVFAgZXhpdG9zYSAoY8OzZGlnbyAyMDApXHJcblx0XHRcdFx0XHRcdHRoaXMuYXBwZW5kVG9DYXJ0KHJlcyk7XHJcblx0XHRcdFx0XHRcdHRoaXMuX3RvYXN0U2VydmljZS5zaG93KCdwcm9kdWN0LWFkZGVkJyk7XHJcblx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0ZXJyID0+IHtcclxuXHRcdFx0XHRcdFx0Ly8gTWFuZWphciBlbCBlcnJvciBkZSBsYSBsbGFtYWRhIEhUVFAgKGPDs2RpZ28gNTAwIHUgb3RybyBlcnJvcilcclxuXHRcdFx0XHRcdFx0aWYgKGVyci5zdGF0dXMgPT09IDUwMCkge1xyXG5cdFx0XHRcdFx0XHRcdC8vIEPDs2RpZ28gZGUgZXJyb3IgNTAwICh0aW1lb3V0KVxyXG5cdFx0XHRcdFx0XHRcdHRoaXMuaGFuZGxlRXJyb3IoZXJyKTtcclxuXHRcdFx0XHRcdFx0XHR0aGlzLl90b2FzdFNlcnZpY2Uuc2hvdygnY2FydC1lcnJvcicpO1xyXG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdC8vIE90cm8gY8OzZGlnbyBkZSBlcnJvclxyXG5cdFx0XHRcdFx0XHRcdHRoaXMuaGFuZGxlRXJyb3IoZXJyKTtcclxuXHRcdFx0XHRcdFx0XHR0aGlzLl90b2FzdFNlcnZpY2Uuc2hvdygnZXJyb3Itc2VydmVyJyk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHQpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHQvKipcclxuXHQgKiBBY3R1YWxpemEgZWwgY2Fycml0byBhZ3JlZ2FuZG8gbG9zIG51ZXZvcyBpdGVtcy5cclxuXHQgKiBAcGFyYW0gY2FydCBcclxuXHQgKi9cclxuXHRhcHBlbmRUb0NhcnQoY2FydDogYW55KSB7XHJcblx0XHR0aGlzLnVwZGF0ZUNhcnRPYmooY2FydCk7XHJcblx0XHR0aGlzLl9pdGVtcyA9IHRoaXMudHJhbnNmb3JtSXRlbXMoY2FydC5pdGVtcyk7XHJcblx0XHR0aGlzLl9jb3VudCA9IHRoaXMuX2l0ZW1zLmxlbmd0aDtcclxuXHRcdHRoaXMuX3JlcXVlc3RJblByb2Nlc3MubmV4dChmYWxzZSk7XHJcblx0XHR0aGlzLnVwZGF0ZUxvY2FsQ2FydCgpO1xyXG5cdFx0dGhpcy5fY2FydEl0ZW1zU3ViamVjdC5uZXh0KHRoaXMuX2l0ZW1zKTtcclxuXHR9XHJcblx0LyoqXHJcblx0ICogTWFwZWEgbG9zIGl0ZW1zIGRlbCBjYXJyaXRvIHBhcmEgZGFybGUgdW4gbWVqb3IgZm9ybWF0byBzaW1pbGFyIGEgbGEgaW50ZXJmYXogYENhcnRJdGVtYC5cclxuXHQgKiBAcGFyYW0gaXRlbXMgXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0dHJhbnNmb3JtSXRlbXMoaXRlbXM6IGFueSk6IGFueVtdIHtcclxuXHRcdHJldHVybiBpdGVtcy5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG5cdFx0XHRyZXR1cm4ge1xyXG5cdFx0XHRcdHByb2R1Y3Q6IGl0ZW0ucHJvZHVjdCxcclxuXHRcdFx0XHR2YXJpYW50X2lkOiBpdGVtLnByb2R1Y3QudmFyaWFudHNbMF0uY29kZSxcclxuXHRcdFx0XHRsb3Q6IGl0ZW0ub3JkZXJJdGVtTG90LFxyXG5cdFx0XHRcdHF1YW50aXR5OiBpdGVtLnF1YW50aXR5LFxyXG5cdFx0XHRcdGl0ZW1faWQ6IGl0ZW0uaWQsXHJcblx0XHRcdFx0dG90YWw6IGl0ZW0udG90YWxcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIENoZXF1ZWEgc2kgZWwgcHJvZHVjdG8geWEgZXhpc3RlIGVuIGVsIGNhcnJpdG8gZGUgY29tcHJhcy5cclxuXHQgKiBAcGFyYW0gcHJvZHVjdCBcclxuXHQgKiBAcGFyYW0gdmFyaWFudElkIFxyXG5cdCAqIEBwYXJhbSBxdWFudGl0eUFkZCBDYW50aWRhZCBhIGFncmVnYXIuIFBvciBkZWZlY3RvIGVzIDEuXHJcblx0ICovXHJcblx0YWRkSWZBbGxyZWFkeUV4aXN0cyhwcm9kdWN0OiBQcm9kdWN0LCB2YXJpYW50SWQ6IHN0cmluZywgcXVhbnRpdHlBZGQ6IG51bWJlciA9IDEpIHtcclxuXHRcdHJldHVybiB0aGlzLl9pdGVtcy5maW5kKChpdGVtOiBhbnksIGluZGV4KSA9PiB7XHJcblx0XHRcdGlmIChpdGVtLnByb2R1Y3QuaWQgPT0gcHJvZHVjdC5pZCAmJiBpdGVtLnZhcmlhbnRfaWQgPT0gdmFyaWFudElkKSB7XHJcblx0XHRcdFx0dGhpcy51cGRhdGVJdGVtUXVhbnRpdHkoaXRlbSwgdGhpcy5maW5kSXRlbShwcm9kdWN0LmlkKS5xdWFudGl0eSArIHF1YW50aXR5QWRkKTtcclxuXHRcdFx0XHRyZXR1cm4gdHJ1ZTtcclxuXHRcdFx0fVxyXG5cdFx0XHRyZXR1cm4gZmFsc2U7XHJcblx0XHR9KVxyXG5cdH1cclxuXHQvKipcclxuXHQgKiBPYnRpZW5lIGxhIGNhbnRpZGFkIGRlIHVuIHByb2R1Y3RvIGRlbCBpdGVtIGRlbCBjYXJyaXRvIFxyXG5cdCAqIEBwYXJhbSBjb2RlVmFyaWFudCBjb2RpZ28gZGUgbGEgdmFyaWFudGUuXHJcblx0ICogQHJldHVybnMgbGEgY2FudGlkYWQgbyBgMGAgZW4gc3UgZGVmZWN0by5cclxuXHQgKi9cclxuXHRnZXRDb3VudEZyb21JdGVtSW5DYXJ0KGNvZGVWYXJpYW50OiBhbnkpOiBudW1iZXIge1xyXG5cdFx0cmV0dXJuIHRoaXMuX2l0ZW1zLmZpbmQoaXRlbSA9PiBpdGVtLnZhcmlhbnRfaWQgPT0gY29kZVZhcmlhbnQpPy5xdWFudGl0eSB8fCAwO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBPYnRpZW5lIHVuIG9ic2VydmFibGUgY29uIGxhIGNhbnRpZGFkIGRlIGl0ZW1zIGVuIGVsIGNhcnJpdG8uXHJcblx0ICovXHJcblx0Z2V0Q291bnRDYXJ0SXRlbXMoKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcclxuXHRcdHJldHVybiB0aGlzLmNhcnRJdGVtcyQucGlwZShtYXAoKGNhcnRJdGVtcykgPT4gY2FydEl0ZW1zPy5sZW5ndGgpKTtcclxuXHR9XHJcblx0LyoqXHJcblx0ICogTWFwZWEgbG9zIHByb2R1Y3RvcyBlbiBlbCBjYXJyaXRvIHBhcmEgY2FtYmlhciBlbCBwcmVjaW8gb2J0ZW5pZW5kbyBkZSBsYSB2YXJpYW50ZSB5IHNlbGVjY2lvbmFuZG8gc2kgZXNcclxuXHQgKiBwcmVjaW8gZGUgb2ZlcnRhIG8gZWwgcHJlY2lvIG5vcm1hbC5cclxuXHQgKiBAcGFyYW0gaXRlbXMgXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0cHJpdmF0ZSBzd2l0Y2hQcmljZUluQ2FydEl0ZW0gPSAoaXRlbXM6IGFueVtdKSA9PiB7XHJcblx0XHRyZXR1cm4gaXRlbXMubWFwKFxyXG5cdFx0XHRpdGVtID0+IHtcclxuXHRcdFx0XHRpZiAoaXRlbS5wcm9kdWN0KSB7XHJcblx0XHRcdFx0XHRpdGVtLnByb2R1Y3QucHJpY2UgPSBpdGVtLnByb2R1Y3QudmFyaWFudHNbMF0uc2FsZXByaWNlID8gaXRlbS5wcm9kdWN0LnZhcmlhbnRzWzBdLnNhbGVwcmljZSA6IGl0ZW0ucHJvZHVjdC52YXJpYW50c1swXS5wcmljZTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0cmV0dXJuIGl0ZW1cclxuXHRcdFx0fVxyXG5cdFx0KVxyXG5cdH1cclxuXHQvKipcclxuXHQgKiBBY3R1YWxpemEgbGEgY2FudGlkYWQgZGUgdW4gcHJvZHVjdG8gZXhpc3RlbnRlIGVuIGVsIGNhcnJpdG8uXHJcblx0ICogQHBhcmFtIGl0ZW0gZWwgaXRlbSBhIGFjdHVhbGl6YXIuXHJcblx0ICogQHBhcmFtIHF1YW50aXR5IGxhIGNhbnRpZGFkIG51ZXZhLlxyXG5cdCAqL1xyXG5cdHVwZGF0ZUl0ZW1RdWFudGl0eShpdGVtOiBDYXJ0SXRlbSwgcXVhbnRpdHk6IG51bWJlcikge1xyXG5cdFx0aWYgKHRoaXMudmFsaWRhdGVRdWFudGl0eShpdGVtLCBxdWFudGl0eSkpIHtcclxuXHRcdFx0Zmlyc3RWYWx1ZUZyb20oXHJcblx0XHRcdFx0dGhpcy5fY29ubmVjdGlvbi5wdXQodGhpcy51cGRhdGVJdGVtUXVhbnRpdHlBcGkodGhpcy5maW5kSXRlbUJ5SWRWYXJpYW50KGl0ZW0udmFyaWFudF9pZCkpLCB7ICdxdWFudGl0eSc6IE51bWJlcihxdWFudGl0eSkgfSkpLnRoZW4oXHJcblx0XHRcdFx0XHRyZXMgPT4gdGhpcy51cGRhdGVDYXJ0T2JqKHJlcykgJiYgdGhpcy51cGRhdGVDYXJ0SXRlbVF1YW50aXR5KGl0ZW0udmFyaWFudF9pZCwgTnVtYmVyKHF1YW50aXR5KSksXHJcblx0XHRcdFx0XHRlcnIgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnIpXHJcblx0XHRcdFx0KVxyXG5cdFx0fVxyXG5cdH1cclxuXHQvKipcclxuXHQgKiBNYW5lamEgZWwgZXJyb3IgZW4gY2FzbyBkZSBxdWUgbm8gc2UgcHVlZGEgYWdyZWdhciBhbCBjYXJyaXRvIGVsIHByb2R1Y3RvLlxyXG5cdCAqIEBwYXJhbSBlcnIgXHJcblx0ICovXHJcblx0aGFuZGxlRXJyb3IoZXJyOiBhbnkpOiB2b2lkIHtcclxuXHRcdHRoaXMuX3RvYXN0U2VydmljZS5zaG93KCdvcGVyYXRpb24tZXJyb3ItcGFyYW0nKTtcclxuXHRcdHRoaXMuX3JlcXVlc3RJblByb2Nlc3MubmV4dChmYWxzZSk7XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIEFjdHVhbGl6YSBsYSBjYW50aWRhZCBkZWwgaXRlbSBkZWwgcHJvZHVjdG8gZGVsIGNhcnJpdG8uXHJcblx0ICogQHBhcmFtIHZhcmlhbnRJZCBJRCBkZSBsYSB2YXJpYW50ZSBwYXJhIGJ1c2NhciBlbCBpdGVtLlxyXG5cdCAqIEBwYXJhbSBxdWFudGl0eSBOdWV2YSBjYW50aWRhZC4gXHJcblx0ICovXHJcblx0dXBkYXRlQ2FydEl0ZW1RdWFudGl0eSh2YXJpYW50SWQ6IGFueSwgcXVhbnRpdHk6IG51bWJlcik6IHZvaWQge1xyXG5cdFx0Ly9jb25zb2xlLmxvZyhcInVwZGF0ZUNhcnRJdGVtUXVhbnRpdHlcIiwgdGhpcy5faXRlbXMsIHZhcmlhbnRJZClcclxuXHRcdGxldCBuZXdRdWFudGl0eSA9IHRoaXMuX2l0ZW1zLmZpbmQoaXRlbSA9PiBpdGVtLnZhcmlhbnRfaWQgPT0gdmFyaWFudElkKS5xdWFudGl0eSA9IHF1YW50aXR5O1xyXG5cdFx0dGhpcy5fY2FydEl0ZW1zU3ViamVjdC5uZXh0KHRoaXMuX2l0ZW1zKTtcclxuXHRcdHRoaXMuX3JlcXVlc3RJblByb2Nlc3MubmV4dChmYWxzZSk7XHJcblx0XHR0aGlzLnVwZGF0ZUxvY2FsQ2FydCgpO1xyXG5cdFx0dGhpcy5fdG9hc3RTZXJ2aWNlLnNob3coJ3Byb2R1Y3QtdXBkYXRlZCcsIHsgcXVhbnRpdHk6IG5ld1F1YW50aXR5IH0pO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBBY3R1YWxpemEgbG9zIGRhdG9zIGRlbCBjYXJyaXRvIGVuIGVsIGxvY2FsU3RvcmFnZS4gXHJcblx0ICovXHJcblx0dXBkYXRlTG9jYWxDYXJ0KCkge1xyXG5cdFx0dGhpcy5fc3RvcmFnZS5zZXRJdGVtKHRoaXMuQ0FSVF9LRVksIHRoaXMuX2l0ZW1zKVxyXG5cdH1cclxuXHQvKipcclxuXHQgKiBBY3R1YWxpemEgZWwgY2Fycml0by4gRW1pdGUgZXZlbnRvIGRlIGFuYWxpdGljcy4gXHJcblx0ICogQWN0dWFsaXphIHRvZG8gbG8gcmVsYWNpb25hZG8gYWwgY3Vww7NuLlxyXG5cdCAqIEBwYXJhbSBjYXJ0IFJlc3B1ZXN0YSBwcm9kdWNpZGEgcG9yIGVsIGVucG9pbnQgY29uIGluZm9ybWFjacOzbiBkZWwgY2Fycml0by5cclxuXHQgKiBAcGFyYW0gZW1pdEV2ZW50IFxyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdHVwZGF0ZUNhcnRPYmooY2FydDogYW55LCBlbWl0RXZlbnQgPSB0cnVlKTogYm9vbGVhbiB7XHJcblx0XHR0aGlzLl9jYXJ0U3ViamVjdC5uZXh0KGNhcnQpO1xyXG5cdFx0ZW1pdEV2ZW50ICYmIHRoaXMuX2FuYWx5dGljc1NlcnZpY2UuY2FsbEV2ZW50KCdhZGRfdG9fY2FydCcsIGNhcnQpO1xyXG5cdFx0Ly90aGlzLl9wcm9tb3Rpb25zU3ViamVjdC5uZXh0KHRoaXMub3JkZXJVdGlscy5nZXRQcm9tb3Rpb25zKGNhcnQsIHRydWUpKTtcclxuXHJcblx0XHRjYXJ0LmNvdXBvbkNvZGVcclxuXHRcdFx0PyB0aGlzLmZvcm1hdENvdXBvbihjYXJ0KVxyXG5cdFx0XHQ6IHRoaXMuX2NvdXBvblN1YmplY3QubmV4dChudWxsKTtcclxuXHRcdHJldHVybiB0cnVlO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBBcGxpY2FyIHVuIG1lam9yIGZvcm1hdG8gYSBsb3MgZGF0b3MgZGUgbG9zIGN1cG9uZXMgYXBsaWNhZG9zLlxyXG5cdCAqIEBwYXJhbSBjYXJ0IFxyXG5cdCAqL1xyXG5cdGZvcm1hdENvdXBvbihjYXJ0OiBhbnkpIHtcclxuXHRcdGxldCBjdXJyZW50X2NvdXBvbiA9IHRoaXMuX2NvdXBvblN1YmplY3QudmFsdWU7XHJcblx0XHRsZXQgY291cG9uOiBJQ291cG9uID0geyBjb2RlOiBjYXJ0LmNvdXBvbkNvZGUgfTtcclxuXHRcdHRyeSB7XHJcblx0XHRcdGNvbnN0IGtleSA9IE9iamVjdC5rZXlzKGNhcnQuY2FydERpc2NvdW50cylbMF07XHJcblx0XHRcdGNvdXBvbiA9IHtcclxuXHRcdFx0XHQuLi5jb3Vwb24sXHJcblx0XHRcdFx0YW1vdW50OiAoY2FydC5jYXJ0RGlzY291bnRzICYmIGNhcnQuY2FydERpc2NvdW50c1trZXldLmFtb3VudC5jdXJyZW50KSB8fCAwLFxyXG5cdFx0XHRcdG5hbWU6IChjYXJ0LmNhcnREaXNjb3VudHMgJiYgY2FydC5jYXJ0RGlzY291bnRzW2tleV0ubmFtZSkgfHwgJ25vLW5hbWUnXHJcblx0XHRcdH07XHJcblx0XHR9IGNhdGNoIChlKSB7IH1cclxuXHRcdChjb3Vwb24gIT0gY3VycmVudF9jb3Vwb24pICYmIHRoaXMuX2NvdXBvblN1YmplY3QubmV4dChjb3Vwb24pO1xyXG5cdFx0Ly9jb25zb2xlLmxvZyhjb3Vwb24pO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBSZXRvcm5hIGVsIElEIGRlbCBpdGVtIGRlbCBjYXJyaXRvLlxyXG5cdCAqIEBwYXJhbSB2YXJpYW50X2lkIElkIGRlIGxhIHZhcmlhbnRlIHV0aWxpemFkYSBwYXJhIGJ1c2NhciBlbCBpdGVtLlxyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdGZpbmRJdGVtQnlJZFZhcmlhbnQodmFyaWFudF9pZDogYW55KTogYW55IHtcclxuXHRcdHJldHVybiB0aGlzLl9pdGVtcy5maW5kKGl0ZW0gPT4gaXRlbS52YXJpYW50X2lkID09IHZhcmlhbnRfaWQpIS5pdGVtX2lkXHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIFZhbGlkYSBsYSBjYW50aWRhZCBwYXJhIHNhYmVyIHNpIHNlIHB1ZWRlIGFjdHVhbGl6YXIgbyBuby5cclxuXHQgKiBAcGFyYW0gaXRlbSBpdGVtIGRlbCBjYXJyaXRvXHJcblx0ICogQHBhcmFtIHF1YW50aXR5IGNhbnRpZGFkIGEgYWdyZWdhclxyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdHZhbGlkYXRlUXVhbnRpdHkoaXRlbTogYW55LCBxdWFudGl0eTogYW55KSB7XHJcblx0XHRpZiAoKHRoaXMuZ2V0Q291bnRGcm9tSXRlbUluQ2FydChpdGVtLnByb2R1Y3RDb2RlKSArIHF1YW50aXR5KSA+IGl0ZW0ucHJvZHVjdC52YXJpYW50c1swXS5tYXhpbXVtSXRlbXNRdWFudGl0eSkge1xyXG5cdFx0XHR0aGlzLl90b2FzdFNlcnZpY2Uuc2hvdygnbWF4aW11bS1pdGVtcy1xdWFudGl0eScsIHsgcXVhbnRpdHk6IGl0ZW0ucHJvZHVjdC52YXJpYW50c1swXS5tYXhpbXVtSXRlbXNRdWFudGl0eSB9KVxyXG5cdFx0XHRyZXR1cm4gZmFsc2VcclxuXHRcdH1cclxuXHRcdGlmICgodGhpcy5nZXRDb3VudEZyb21JdGVtSW5DYXJ0KGl0ZW0ucHJvZHVjdENvZGUpICsgcXVhbnRpdHkpIDwgaXRlbS5wcm9kdWN0LnZhcmlhbnRzWzBdLm1pbmltdW1JdGVtc1F1YW50aXR5KSB7XHJcblx0XHRcdHRoaXMuX3RvYXN0U2VydmljZS5zaG93KCdtaW5pbXVtLWl0ZW1zLXF1YW50aXR5JywgeyBxdWFudGl0eTogaXRlbS5wcm9kdWN0LnZhcmlhbnRzWzBdLm1pbmltdW1JdGVtc1F1YW50aXR5IH0pXHJcblx0XHRcdHJldHVybiBmYWxzZVxyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIHRydWVcclxuXHR9XHJcblx0LyoqXHJcblx0ICogQnVzY2EgdW4gcHJvZHVjdG8gYSB0cmF2w6lzIGRlIHN1IElEIGVuIGxvcyBpdGVtcyBkZWwgY2Fycml0by5cclxuXHQgKiBAcGFyYW0gcHJvZHVjdF9pZCBcclxuXHQgKiBAcmV0dXJuc1xyXG5cdCAqL1xyXG5cdGZpbmRJdGVtKHByb2R1Y3RfaWQ6IGFueSk6IGFueSB7IHJldHVybiB0aGlzLl9pdGVtcy5maW5kKChpdGVtOiBhbnkpID0+IGl0ZW0ucHJvZHVjdC5pZCA9PSBwcm9kdWN0X2lkKSB9XHJcblx0LyoqXHJcblx0ICogRWxpbWluYSB1biBpdGVtIGRlbCBjYXJyaXRvIGVuIGVsIGJhY2tlbmQuXHJcblx0ICogQHBhcmFtIGl0ZW0gaXRlbSBhIGVsaW1pbmFyXHJcblx0ICogQHBhcmFtIHRvYXN0IGluZGljYSBzaSBzZSBkaXNwYXJhIHVuIHRvYXN0ICBvIG5vLiBQb3IgZGVmZWN0byBlbiBgdHJ1ZWAuXHJcblx0ICovXHJcblx0ZGVsZXRlQ2FydEl0ZW0oaXRlbTogYW55LCB0b2FzdDogYm9vbGVhbiA9IHRydWUpIHtcclxuXHRcdGxldCBpZEl0ZW1TZWFyY2hlZCA9IHRoaXMuZmluZEl0ZW1CeUlkVmFyaWFudChpdGVtLnZhcmlhbnRfaWQpXHJcblx0XHQvL2NvbnNvbGUubG9nKGlkSXRlbVNlYXJjaGVkKVxyXG5cdFx0dGhpcy5fcmVxdWVzdEluUHJvY2Vzcy5uZXh0KHRydWUpO1xyXG5cdFx0Zmlyc3RWYWx1ZUZyb20odGhpcy5fY29ubmVjdGlvbi5kZWxldGUodGhpcy5kZWxldGVJdGVtQXBpKGlkSXRlbVNlYXJjaGVkKSkpLnRoZW4oXHJcblx0XHRcdHJlcyA9PiB7XHJcblx0XHRcdFx0dGhpcy5yZW1vdmVDYXJ0SXRlbShyZXMsIGl0ZW0sIHRvYXN0KTtcclxuXHRcdFx0XHR0aGlzLl9yZXF1ZXN0SW5Qcm9jZXNzLm5leHQoZmFsc2UpO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRlcnIgPT4ge1xyXG5cdFx0XHRcdHRoaXMuaGFuZGxlRXJyb3IoZXJyKTtcclxuXHRcdFx0XHR0aGlzLl9yZXF1ZXN0SW5Qcm9jZXNzLm5leHQoZmFsc2UpO1xyXG5cdFx0XHR9XHJcblx0XHQpXHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIEVsaW1pbmEgdW4gaXRlbSBlbiBjYXJyaXRvIGRlIGZvcm1hIGxvY2FsLiBcclxuXHQgKiBAcGFyYW0gY2FydCBDYXJyaXRvLCBlcyBkZWNpciwgcmVzcHVlc3RhIGRlbCBiYWNrZW5kLlxyXG5cdCAqIEBwYXJhbSBwcm9kdWN0IHByb2R1Y3RvIGEgZWxpbWluYXJcclxuXHQgKiBAcGFyYW0gdG9hc3Qge2Jvb2xlYW59IHBhcmEgaW5kaWNhciBzaSBzZSBkaXNwYXJhIHVuIHRvYXN0IG8gbm8uIFxyXG5cdCAqL1xyXG5cdHJlbW92ZUNhcnRJdGVtKGNhcnQ6IGFueSwgcHJvZHVjdDogYW55LCB0b2FzdDogYm9vbGVhbikge1xyXG5cdFx0dGhpcy51cGRhdGVDYXJ0T2JqKGNhcnQsIGZhbHNlKTtcclxuXHRcdHRoaXMuX2l0ZW1zLnNwbGljZSh0aGlzLl9pdGVtcy5maW5kSW5kZXgodmFsdWUgPT4gdmFsdWUuaXRlbV9pZCA9PT0gcHJvZHVjdC5pdGVtX2lkKSwgMSk7XHJcblx0XHR0aGlzLl9jYXJ0SXRlbXNTdWJqZWN0Lm5leHQodGhpcy5faXRlbXMpO1xyXG5cdFx0dG9hc3QgJiYgdGhpcy5fcmVxdWVzdEluUHJvY2Vzcy5uZXh0KGZhbHNlKTtcclxuXHRcdHRvYXN0ICYmIHRoaXMuX3RvYXN0U2VydmljZS5zaG93KCdwcm9kdWN0LXJlbW92ZWQnKTtcclxuXHRcdHRoaXMudXBkYXRlTG9jYWxDYXJ0KCk7XHJcblx0XHR0aGlzLl9hbmFseXRpY3NTZXJ2aWNlLmNhbGxFdmVudCgncmVtb3ZlX2Zyb21fY2FydCcsIHsgLi4ucHJvZHVjdCwgY3VycmVuY3k6IHRoaXMuX2NvbnN0cy5jdXJyZW5jeS5jb2RlIH0pXHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIEFncmVnYSB1biBjdXBvbiBhbCBjYXJyaXRvLlxyXG5cdCAqIEBwYXJhbSB2YWx1ZSBDb2RpZ28gZGVsIGN1cMOzbi5cclxuXHQgKi9cclxuXHRhZGRDb3Vwb24odmFsdWU6IHN0cmluZykge1xyXG5cdFx0Zmlyc3RWYWx1ZUZyb20odGhpcy5fY29ubmVjdGlvbi5wdXQodGhpcy5jb3Vwb25BcGkoKSwgeyBjb3Vwb246IHZhbHVlIH0pKS50aGVuKFxyXG5cdFx0XHRyZXMgPT4ge1xyXG5cdFx0XHRcdC8vY29uc29sZS5sb2cocmVzKVxyXG5cdFx0XHRcdHRoaXMudXBkYXRlQ2FydE9iaihyZXMpXHJcblx0XHRcdFx0dGhpcy5fdG9hc3RTZXJ2aWNlLnNob3coJ0N1cG9uIGFwbGljYWRvJylcclxuXHRcdFx0fSxcclxuXHRcdFx0ZXJyID0+IHtcclxuXHRcdFx0XHQvL2NvbnNvbGUuZXJyb3IoZXJyKSBcclxuXHRcdFx0XHR0aGlzLl90b2FzdFNlcnZpY2Uuc2hvdygnaW52YWxpZC1jb3Vwb24nKVxyXG5cdFx0XHR9XHJcblx0XHQpXHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIEVsaW1pbmEgdW4gY3Vww7NuIGRlbCBjYXJyaXRvLiBcclxuXHQgKi9cclxuXHRyZW1vdmVDb3Vwb24oKSB7XHJcblx0XHRmaXJzdFZhbHVlRnJvbSh0aGlzLl9jb25uZWN0aW9uLmRlbGV0ZSh0aGlzLmNvdXBvbkFwaSgpKSkudGhlbihcclxuXHRcdFx0cmVzID0+IHtcclxuXHRcdFx0XHQvL2NvbnNvbGUubG9nKHJlcylcclxuXHRcdFx0XHR0aGlzLnVwZGF0ZUNhcnRPYmoocmVzKVxyXG5cdFx0XHR9XHJcblx0XHQpXHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIFJldG9ybmEgdW4gb2JzZXJ2YWJsZSBjb24gZWwgc3VidG90YWwgZGVsIGNhcnJpdG8uXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0Z2V0U3ViVG90YWxBbW91bnQoKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcclxuXHRcdHJldHVybiB0aGlzLmNhcnQkLnBpcGUobWFwKChjYXJ0KSA9PiBjYXJ0Py50b3RhbHM/Lml0ZW1zKSk7XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIFJldG9ybmEgdW4gb2JzZXJ2YWJsZSBjb24gZWwgdG90YWwgZGVsIG1vbnRvIGRlIGxhcyBwcm9tb2Npb25lcyBhcGxpY2FkYXMuXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0Z2V0VG90YWxQcm9tb3Rpb25BbW91bnQoKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcclxuXHRcdHJldHVybiB0aGlzLmNhcnQkLnBpcGUobWFwKChjYXJ0KSA9PiBjYXJ0Py50b3RhbHM/LnByb21vdGlvbikpO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBSZXRvcm5hIHVuIG9ic2VydmFibGUgY29uIGVsIG1vbnRvIGRlIGxvcyBpbXB1ZXN0b3MgYXBsaWNhZG9zLlxyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdGdldFRheGVzQW1vdW50KCk6IE9ic2VydmFibGU8bnVtYmVyPiB7XHJcblx0XHRyZXR1cm4gdGhpcy5jYXJ0JC5waXBlKG1hcCgoY2FydCkgPT4gY2FydD8udG90YWxzPy50YXhlcyA+IDAgPyBjYXJ0Py50b3RhbHM/LnRheGVzIDogMCkpO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBSZXRvcm5hIHVuIG9ic2VydmFibGUgY29uIGVsIG1vbnRvIHRvdGFsIGRlbCBjYXJyaXRvLlxyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdGdldFRvdGFsQW1vdW50KCkge1xyXG5cdFx0cmV0dXJuIHRoaXMuY2FydCQucGlwZShtYXAoKGNhcnQpID0+IGNhcnQ/LnRvdGFscz8udG90YWwpKTtcclxuXHR9XHJcblx0LyoqXHJcblx0ICogUmV0b3JuYSBlbCB0b2tlbiBkZWwgY2Fycml0by5cclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRnZXRDYXJ0VG9rZW4oKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5jYXJ0VG9rZW47XHJcblx0fVxyXG5cdGNoYW5nZUhhdmVUb1VwZGF0ZSA9ICh2YWx1ZTogYW55KSA9PiB0aGlzLl9oYXZlVG9VcGRhdGUgPSB2YWx1ZTtcclxuXHRjbGVhckFuZFJlc2V0Q3VzdG9tZXJDYXJ0KCkge1xyXG5cdFx0Y29uc29sZS5sb2coXCJDbGVhcmluZyBhbmQgcmVzZXRpbmcuLi5cIilcclxuXHRcdHRoaXMucmVzZXRDYXJ0KHRoaXMuZ2V0Q2FydEJ5Q3VzdG9tZXIpXHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGdldENhcnRCeUN1c3RvbWVyID0gYXN5bmMgKCkgPT5cclxuXHRcdHRoaXMuX2Nvbm5lY3Rpb24ucG9zdCh0aGlzLmNhcnRJdGVtc0FwaSgpKS5zdWJzY3JpYmUoXHJcblx0XHRcdHJlcyA9PiB0aGlzLmluaXRpYWxpemVDYXJ0KHJlcylcclxuXHRcdClcclxuXHRwcml2YXRlIHJlc2V0Q2FydCA9IChmbj86IGFueSkgPT4ge1xyXG5cdFx0dGhpcy5faXRlbXMgPSBbXTtcclxuXHRcdHRoaXMuX2NhcnRTdWJqZWN0Lm5leHQobnVsbCk7XHJcblx0XHR0aGlzLnVwZGF0ZUJhbGFuY2VBdHRyaWJ1dGVzKG51bGwpO1xyXG5cdFx0dGhpcy5jYXJ0VG9rZW4gPSBudWxsO1xyXG5cdFx0dGhpcy5fY2FydEl0ZW1zU3ViamVjdC5uZXh0KFtdKTtcclxuXHRcdHRoaXMuX2NvdW50ID0gMDtcclxuXHRcdHRoaXMuX2xvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuQ0FSVF9LRVksIFwiW11cIik7XHJcblx0XHR0aGlzLl9sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLkNBUlRfVE9LRU5fS0VZKTtcclxuXHRcdGZuICYmIGZuKCk7XHJcblx0fVxyXG5cdGNsZWFyQW5kUmVzZXRDYXJ0KCkge1xyXG4gICAgICAgIHRoaXMucmVzZXRDYXJ0KCgpID0+IHRoaXMuZ2V0Q2FydCk7XHJcbiAgICB9XHJcblxyXG5cdHB1YmxpYyB1cGRhdGVCYWxhbmNlQXR0cmlidXRlcyhjYXJ0RGF0YTogYW55KSB7XHJcbiAgICAgICAgY29uc3QgYmFsYW5jZURhdGEgPSB7XHJcbiAgICAgICAgICAgIGFsbG93QW55UGF5bWVudE1ldGhvZDogY2FydERhdGE/LmFsbG93QW55UGF5bWVudE1ldGhvZCA/PyBmYWxzZSxcclxuICAgICAgICAgICAgYWxsb3dFeGNlZWRCYWxhbmNlOiBjYXJ0RGF0YT8uYWxsb3dFeGNlZWRCYWxhbmNlID8/IGZhbHNlLFxyXG4gICAgICAgICAgICBjcmVkaXRBbW91bnQ6IGNhcnREYXRhPy5jcmVkaXRBbW91bnQgPz8gbnVsbCxcclxuICAgICAgICAgICAgc2hvd01heDogY2FydERhdGE/LnNob3dNYXggPz8gZmFsc2UsXHJcbiAgICAgICAgICAgIHNob3dQcmljZTogY2FydERhdGE/LnNob3dQcmljZSA/PyBmYWxzZSxcclxuICAgICAgICAgICAgcmVtYWluaW5nQ3JlZGl0czogY2FydERhdGE/LmNyZWRpdEFtb3VudCAmJiBjYXJ0RGF0YT8uY3JlZGl0QW1vdW50ID49IGNhcnREYXRhPy50b3RhbHMudG90YWxcclxuICAgICAgICAgICAgICAgID8gY2FydERhdGE/LmNyZWRpdEFtb3VudCAtIGNhcnREYXRhPy50b3RhbHMudG90YWxcclxuICAgICAgICAgICAgICAgIDogMCxcclxuXHRcdFx0XHRhcHBseU1heE9yZGVyczogY2FydERhdGE/LmFwcGx5TWF4T3JkZXJzID8/IGZhbHNlLFxyXG5cdFx0XHRcdG1heE9yZGVyczogY2FydERhdGE/Lm1heE9yZGVycyA/PyBJbmZpbml0eVxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHRoaXMuX2JhbGFuY2VDdXN0b21lclN1YmplY3QubmV4dChiYWxhbmNlRGF0YSk7XHJcblx0XHRjb25zb2xlLmxvZyhiYWxhbmNlRGF0YSlcclxuICAgIH1cclxuXHRhZGRUb0xvdChwcm9kdWN0OiBQcm9kdWN0LCBxdWFudGl0eTogbnVtYmVyLCB2YXJpYW50X2lkOiBhbnksIGlkPzogbnVtYmVyLCBvcmRlcl9pdGVtX2lkPzogYW55LCBsb3RfcXVhbnRpdHk/OiBhbnksIHVuaXRfcHJpY2U/OiBhbnksIHVuaXRfdG90YWw/OiBhbnksIGFqdXN0ZW1lbnRfdG90YWw/OiBhbnksIHRvdGFsX2xvdD86IG51bWJlciwgbG90X3N0YXR1cz86IHN0cmluZywgZGF0ZV9yZXF1ZXN0Pzogc3RyaW5nLCBub3Rlcz86IHN0cmluZywgc2hpcHBpbmdfYWRkcmVzc19pZD86IG51bWJlciwgc2hpcHBpbmdfYWRkcmVzc19uYW1lPzogc3RyaW5nLCBhY3Rpb24/OiBzdHJpbmcpe1xyXG4gICAgICAgIGlmICghdGhpcy5fYXV0aFNlcnZpY2UuaXNBYmxlVG9CdXkoKSkge1xyXG4gICAgICAgICAgICB0aGlzLl90b2FzdFNlcnZpY2Uuc2hvdygnbXVzdC1zZWxlY3QtY3VzdG9tZXInKVxyXG4gICAgICAgICAgICByZXR1cm5cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBhZGRlZCA9ICcnO1xyXG4gICAgICAgICFhZGRlZCAmJiB0aGlzLl9jb25uZWN0aW9uLnBvc3QodGhpcy5hZGRJdGVtQXBpKCksIHsgcHJvZHVjdENvZGU6IHByb2R1Y3QuaWQsIHF1YW50aXR5OiBxdWFudGl0eSwgdmFyaWFudENvZGU6IHZhcmlhbnRfaWQsIGlkOiBpZCB8fCAnJywgb3JkZXJfaXRlbV9pZDogb3JkZXJfaXRlbV9pZCB8fCAnJywgbG90X3F1YW50aXR5OiBsb3RfcXVhbnRpdHkgfHwgJycsIHVuaXRfcHJpY2U6IHVuaXRfcHJpY2UgfHwgJycsIHVuaXRfdG90YWw6IHVuaXRfdG90YWwgfHwgJycsIGFqdXN0ZW1lbnRfdG90YWw6IGFqdXN0ZW1lbnRfdG90YWwgfHwgJycsIHRvdGFsX2xvdDogdG90YWxfbG90IHx8ICcnLCBsb3Rfc3RhdHVzOiBsb3Rfc3RhdHVzIHx8ICcnLCBkYXRlX3JlcXVlc3Q6IGRhdGVfcmVxdWVzdCB8fCAnJywgbm90ZXM6IG5vdGVzIHx8ICcnLCBzaGlwcGluZ19hZGRyZXNzX2lkOiBzaGlwcGluZ19hZGRyZXNzX2lkIHx8ICcnLCBzaGlwcGluZ19hZGRyZXNzX25hbWU6IHNoaXBwaW5nX2FkZHJlc3NfbmFtZSB8fCAnJywgYWN0aW9uOiBhY3Rpb24gfHwgJ25ld2xvdCcgfSlcclxuICAgICAgICAgICAgLnN1YnNjcmliZSh7XHJcblx0XHRcdFx0bmV4dDogKHJlcykgPT4gdGhpcy5hcHBlbmRUb0NhcnQocmVzKSxcclxuXHRcdFx0XHRlcnJvcjogKGVycikgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnIpXHJcblx0XHRcdH0pO1xyXG4gICAgfVxyXG5cclxuXHRcclxuICAgIGdldENyZWRpdEFtb3VudCA9ICgpOiBPYnNlcnZhYmxlPG51bWJlciB8IG51bGw+ID0+XHJcbiAgICAgICAgdGhpcy5fYmFsYW5jZUN1c3RvbWVyU3ViamVjdC5waXBlKFxyXG4gICAgICAgICAgICBtYXAoKGJhbGFuY2VDdXN0b21lcikgPT4gYmFsYW5jZUN1c3RvbWVyPy5jcmVkaXRBbW91bnQgPz8gbnVsbClcclxuICAgICAgICApO1xyXG5cclxuXHJcbiAgICBnZXRSZW1haW5pbmdDcmVkaXRzID0gKCk6IE9ic2VydmFibGU8bnVtYmVyIHwgdW5kZWZpbmVkPiA9PlxyXG4gICAgICAgIHRoaXMuX2JhbGFuY2VDdXN0b21lclN1YmplY3QucGlwZShtYXAoKGJhbGFuY2VDdXN0b21lcikgPT4gYmFsYW5jZUN1c3RvbWVyPy5yZW1haW5pbmdDcmVkaXRzKSk7XHJcblxyXG59XHJcbiJdfQ==
@@ -67,7 +67,7 @@ export class FiltersService {
67
67
  setFilters(paginationSettings) {
68
68
  let final_filters = [];
69
69
  if (this._optionsFilters?.includes('all'))
70
- this._optionsFilters = ['attributes', 'categories', 'dynamics', 'sort'];
70
+ this._optionsFilters = ['attributes', 'categories', 'dynamics', 'sort', 'price_range'];
71
71
  runInInjectionContext(this.environmentInjector, () => {
72
72
  const filterFactory = new FilterFactory();
73
73
  this._optionsFilters?.forEach(filter => final_filters.push(filterFactory.create(filter, paginationSettings)));
@@ -77,6 +77,7 @@ export class FiltersService {
77
77
  filter && filterDefault.codes.forEach(value => filter.setSelected(value));
78
78
  });
79
79
  this._filtersSubject.next(final_filters);
80
+ // case 'price_range': instance = new PriceRangeFilter(); break; COMO ADAPTO ESTE CODIGO A LA NUEVA ESTRUCTURA DE FILTROS
80
81
  }
81
82
  /**
82
83
  * Obtengo filtros especificos según el tipo.
@@ -131,4 +132,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
131
132
  providedIn: 'root'
132
133
  }]
133
134
  }], ctorParameters: () => [] });
134
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVycy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLXNlcnZpY2VzL2ZpbHRlcnMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRixPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ25ELE9BQU8sRUFBVSxhQUFhLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFbkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sY0FBYyxDQUFDOztBQUt6RSxNQUFNLE9BQU8sY0FBYztJQUNmLFVBQVUsR0FBd0IsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDOUQsT0FBTyxHQUF5QixNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUM3RCxlQUFlLEdBQThCLElBQUksZUFBZSxDQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQ2hGLFFBQVEsR0FBeUIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUVwRSxjQUFjLEdBQTRCLElBQUksZUFBZSxDQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQzNFLE9BQU8sR0FBdUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUVoRSxhQUFhLEdBQTZCLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBQy9FLE1BQU0sR0FBd0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUUvRCxtQkFBbUIsR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQTtJQUVqRCxlQUFlLEdBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDeEMsZUFBZSxHQUFvQixFQUFFLENB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QU0sYUFBYSxHQUFHLElBQUksYUFBYSxFQUFFLENBQUM7WUFDMUMsTUFBTSxNQUFNLEdBQVksRUFBRSxDQUFBO1lBQzFCOzs7Ozs7aUJBTUs7WUFDRCxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFTLEVBQUUsRUFBRTtnQkFDN0MsSUFBRyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksWUFBWSxFQUFFLENBQUM7b0JBQzlCLGtCQUFrQjtnQkFDdEIsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFBO1FBQ04sQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDO3VHQTFIUSxjQUFjOzJHQUFkLGNBQWMsY0FGWCxNQUFNOzsyRkFFVCxjQUFjO2tCQUgxQixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVudmlyb25tZW50SW5qZWN0b3IsIGluamVjdCwgSW5qZWN0YWJsZSwgcnVuSW5JbmplY3Rpb25Db250ZXh0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBGaWx0ZXIsIEZpbHRlckZhY3RvcnkgfSBmcm9tICcuLi9jbGFzc2VzJztcclxuaW1wb3J0IHsgRGVmYXVsdEZpbHRlciwgRmlsdGVyRWxlbWVudCwgRmlsdGVyVHlwZSwgUGFnaW5hdGlvblNldHRpbmdzIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IEFwaUNvbnN0YW50c1NlcnZpY2UsIENvcmVDb25zdGFudHNTZXJ2aWNlIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgRmlsdGVyc1NlcnZpY2Uge1xyXG4gICAgcHJpdmF0ZSBfYXBpQ29uc3RzOiBBcGlDb25zdGFudHNTZXJ2aWNlID0gaW5qZWN0KEFwaUNvbnN0YW50c1NlcnZpY2UpO1xyXG4gICAgcHJpdmF0ZSBfY29uc3RzOiBDb3JlQ29uc3RhbnRzU2VydmljZSA9IGluamVjdChDb3JlQ29uc3RhbnRzU2VydmljZSk7XHJcbiAgICBwcml2YXRlIF9maWx0ZXJzU3ViamVjdDogQmVoYXZpb3JTdWJqZWN0PEZpbHRlcltdPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RmlsdGVyW10+KFtdKTtcclxuICAgIHB1YmxpYyBmaWx0ZXJzJDogT2JzZXJ2YWJsZTxGaWx0ZXJbXT4gPSB0aGlzLl9maWx0ZXJzU3ViamVjdC5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgICBwcml2YXRlIF9hcGlVcmxTdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignJyk7XHJcbiAgICBwdWJsaWMgYXBpVXJsJDogT2JzZXJ2YWJsZTxzdHJpbmc+ID0gdGhpcy5fYXBpVXJsU3ViamVjdC5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgICBwcml2YXRlIF9yZWFkeVN1YmplY3Q6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gICAgcHVibGljIHJlYWR5JDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuX3JlYWR5U3ViamVjdC5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgICBwcml2YXRlIGVudmlyb25tZW50SW5qZWN0b3IgPSBpbmplY3QoRW52aXJvbm1lbnRJbmplY3RvcilcclxuXHJcbiAgICBwcml2YXRlIF9vcHRpb25zRmlsdGVyczogRmlsdGVyVHlwZVtdID0gWydhbGwnXTtcclxuICAgIHByaXZhdGUgX2RlZmF1bHRGaWx0ZXJzOiBEZWZhdWx0RmlsdGVyW10gPSBbXTtcclxuXHJcbiAgICBwcml2YXRlIF9wYWdpbmF0aW9uU2V0dGluZ3M6IFBhZ2luYXRpb25TZXR0aW5ncyA9IHtcclxuICAgICAgICB2YWx1ZTonJyxcclxuICAgICAgICB0eXBlOicnLFxyXG4gICAgICAgIGxpbWl0OjBcclxuICAgIH07XHJcblxyXG4gICAgY29uc3RydWN0b3IoKXtcclxuICAgICAgICAvL3RoaXMuX2RlZmF1bHRGaWx0ZXJzID0gdGhpcy5fY29uc3RzLmdldERlZmF1bHRGaWx0ZXJzKClcclxuICAgIH1cclxuXHJcbiAgICAvL0FQSSBVUkxcclxuICAgIC8qKlxyXG4gICAgICogUmV0b3JuYSBsYSB1cmwgcGFyYSBlbCBmaWx0cmFkb1xyXG4gICAgICogQHBhcmFtIGZpbHRlcnMgXHJcbiAgICAgKiBAcmV0dXJucyBcclxuICAgICAqL1xyXG4gICAgcHJvZHVjdHNGaWx0ZXJBcGkoZmlsdGVycyA9ICcnKSB7IHJldHVybiAnc2hvcC1hcGkvJyArIHRoaXMuX2FwaUNvbnN0cy5DSEFOTkVMICsgJy9wcm9kdWN0LXNlYXJjaC8nICsgJz9sb2NhbGU9JyArIHRoaXMuX2FwaUNvbnN0cy5MT0NBTEUgKyBmaWx0ZXJzIH07XHJcbiAgICAvKipcclxuICAgICAqIEFybWEgbG9zIGZpbHRyb3MgeSByZXRvcm5hIGxhIHVybCBjb21wbGV0YSBjb24gbG9zIGZpbHRyb3MgYXBsaWNhZG9zLlxyXG4gICAgICogQHBhcmFtIHNlYXJjaF92YWx1ZSB2YWxvciBhIGJ1c2NhclxyXG4gICAgICogQHJldHVybnMgXHJcbiAgICAgKi9cclxuICAgIGdlbmVyYXRlRmluYWxBcGkoc2VhcmNoX3ZhbHVlPzogc3RyaW5nKSB7XHJcbiAgICAgICAgbGV0IGV4dHJhX3BhcmFtcyA9ICcnO1xyXG4gICAgICAgIHRoaXMuX2ZpbHRlcnNTdWJqZWN0LnZhbHVlLmZvckVhY2goZmlsdGVyID0+IHtcclxuICAgICAgICAgICAgY29uc3QgZXh0cmEgPSBmaWx0ZXIudG9VcmxQYXJhbXMoKTtcclxuICAgICAgICAgICAgZXh0cmEuc3BsaXQoJz0nKVsxXSAhPSAnJyA/IGV4dHJhX3BhcmFtcyArPSBleHRyYSA6IG51bGw7XHJcbiAgICAgICAgfSlcclxuICAgICAgICBpZiAoc2VhcmNoX3ZhbHVlKSBleHRyYV9wYXJhbXMgKz0gKCcmY3JpdGVyaWFbc2VhcmNoXVt0eXBlXT1jb250YWlucyZjcml0ZXJpYVtzZWFyY2hdW3ZhbHVlXT0nICsgc2VhcmNoX3ZhbHVlKTtcclxuICAgICAgIFxyXG4gICAgICAgIC8vY29uc29sZS5sb2coXCJleHRyYV9wYXJhbXNcIixleHRyYV9wYXJhbXMpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnByb2R1Y3RzRmlsdGVyQXBpKGV4dHJhX3BhcmFtcyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBpc1VwZGF0ZWQocGFnaW5hdGlvblNldHRpbmdzOiBQYWdpbmF0aW9uU2V0dGluZ3Mpe1xyXG4gICAgICAgIGNvbnN0IGtleXM6c3RyaW5nW10gPSBPYmplY3Qua2V5cyhwYWdpbmF0aW9uU2V0dGluZ3MpO1xyXG4gICAgICAgIGxldCBjaGFuZ2U6Ym9vbGVhbiA9IGZhbHNlO1xyXG4gICAgICAgIGtleXMuZm9yRWFjaCgoa2V5OnN0cmluZykgPT4geyAgIFxyXG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IChwYWdpbmF0aW9uU2V0dGluZ3MgYXMgUmVjb3JkPHN0cmluZywgYW55Pilba2V5XTsgXHJcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlMiA9ICh0aGlzLl9wYWdpbmF0aW9uU2V0dGluZ3MgYXMgUmVjb3JkPHN0cmluZywgYW55Pilba2V5XTtcclxuICAgICAgICAgICAgaWYgKHZhbHVlICE9IHZhbHVlMikgY2hhbmdlID0gdHJ1ZTsgXHJcbiAgICAgICAgfSlcclxuICAgICAgICBpZiAoY2hhbmdlKSB0aGlzLl9wYWdpbmF0aW9uU2V0dGluZ3MgPSBwYWdpbmF0aW9uU2V0dGluZ3M7XHJcbiAgICAgICAgcmV0dXJuIGNoYW5nZTtcclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogQ29uZmlndXJhIGxvcyBmaWx0cm9zIHF1ZSBzZXJhbiBhcGxpY2Fkb3MgZW4gZWwgZnJvbnRlbmQuXHJcbiAgICAgKiBAcGFyYW0gcGFnaW5hdGlvblNldHRpbmdzIFxyXG4gICAgICovXHJcbiAgICBzZXRGaWx0ZXJzKHBhZ2luYXRpb25TZXR0aW5nczogUGFnaW5hdGlvblNldHRpbmdzKSB7XHJcbiAgICAgICAgICAgIGxldCBmaW5hbF9maWx0ZXJzOiBGaWx0ZXJbXSA9IFtdO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5fb3B0aW9uc0ZpbHRlcnM/LmluY2x1ZGVzKCdhbGwnKSkgdGhpcy5fb3B0aW9uc0ZpbHRlcnMgPSBbJ2F0dHJpYnV0ZXMnLCAnY2F0ZWdvcmllcycsICdkeW5hbWljcycsICdzb3J0J107XHJcbiAgICAgICAgICAgIHJ1bkluSW5qZWN0aW9uQ29udGV4dCh0aGlzLmVudmlyb25tZW50SW5qZWN0b3IsICgpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlckZhY3RvcnkgPSBuZXcgRmlsdGVyRmFjdG9yeSgpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fb3B0aW9uc0ZpbHRlcnM/LmZvckVhY2goZmlsdGVyID0+IGZpbmFsX2ZpbHRlcnMucHVzaChmaWx0ZXJGYWN0b3J5LmNyZWF0ZShmaWx0ZXIsIHBhZ2luYXRpb25TZXR0aW5ncykpKTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgdGhpcy5fZGVmYXVsdEZpbHRlcnM/LmZvckVhY2goZmlsdGVyRGVmYXVsdCA9PiB7XHJcbiAgICAgICAgICAgICAgICBsZXQgZmlsdGVyID0gZmluYWxfZmlsdGVycy5maW5kKGZpbHRlciA9PiBmaWx0ZXIudHlwZSgpID09IGZpbHRlckRlZmF1bHQuZmlsdGVyX3R5cGUpO1xyXG4gICAgICAgICAgICAgICAgZmlsdGVyICYmIGZpbHRlckRlZmF1bHQuY29kZXMuZm9yRWFjaCh2YWx1ZSA9PiBmaWx0ZXIuc2V0U2VsZWN0ZWQodmFsdWUpKTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgdGhpcy5fZmlsdGVyc1N1YmplY3QubmV4dChmaW5hbF9maWx0ZXJzKTtcclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogT2J0ZW5nbyBmaWx0cm9zIGVzcGVjaWZpY29zIHNlZ8O6biBlbCB0aXBvLlxyXG4gICAgICogQHBhcmFtIHR5cGVzIFxyXG4gICAgICogQHJldHVybnMgXHJcbiAgICAgKi9cclxuICAgIGdldFNwZWNpZmljRmlsdGVycyh0eXBlczogRmlsdGVyVHlwZVtdKTogRmlsdGVyW10ge1xyXG4gICAgICAgIGNvbnN0IGZpbHRlcnM6IEZpbHRlcltdID0gdGhpcy5fZmlsdGVyc1N1YmplY3QudmFsdWUuZmlsdGVyKGZpbHRlciA9PiB0eXBlcy5pbmNsdWRlcyhmaWx0ZXIudHlwZSgpKSlcclxuICAgICAgICByZXR1cm4gZmlsdGVycztcclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogQXBsaWNhIHVuIGZpbHRyby5cclxuICAgICAqIEBwYXJhbSBmaWx0ZXJPYmogXHJcbiAgICAgKiBAcGFyYW0gZmlsdGVyRWxlbSBcclxuICAgICAqL1xyXG4gICAgc2V0RmlsdGVyU2VsZWN0ZWQoZmlsdGVyT2JqOiBGaWx0ZXIsIGZpbHRlckVsZW06IEZpbHRlckVsZW1lbnQpIHtcclxuICAgICAgICBsZXQgZmluYWxfZmlsdGVyczogRmlsdGVyW10gPSB0aGlzLl9maWx0ZXJzU3ViamVjdC52YWx1ZTtcclxuICAgICAgICBsZXQgaW5kZXggPSBmaW5hbF9maWx0ZXJzLmZpbmRJbmRleChmaWx0ZXIgPT4gZmlsdGVyLnR5cGUoKSA9PSBmaWx0ZXJPYmoudHlwZSgpKTtcclxuICAgICAgICBmaW5hbF9maWx0ZXJzW2luZGV4XS5zZXRTZWxlY3RlZChmaWx0ZXJFbGVtLCBmaWx0ZXJFbGVtLnZhbHVlIHx8IGZpbHRlckVsZW0uY29kZSk7XHJcbiAgICAgICAgLy9jb25zb2xlLmxvZyhpbmRleCwgZmluYWxfZmlsdGVycylcclxuICAgICAgICB0aGlzLl9maWx0ZXJzU3ViamVjdC5uZXh0KGZpbmFsX2ZpbHRlcnMpO1xyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBBY3R1YWxpemEgbG9zIGZpbHRyb3MuXHJcbiAgICAgKiBAcGFyYW0gcGFnaW5hdGlvbkZpbHRlcnMgXHJcbiAgICAgKi9cclxuICAgIHVwZGF0ZUZpbHRlcnMocGFnaW5hdGlvbkZpbHRlcnM6IGFueSk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGNsYXZlcyA9IE9iamVjdC5rZXlzKHBhZ2luYXRpb25GaWx0ZXJzKVxyXG4gICAgICAgIHJ1bkluSW5qZWN0aW9uQ29udGV4dCh0aGlzLmVudmlyb25tZW50SW5qZWN0b3IsICgpID0+IHtcclxuICAgICAgICBjb25zdCBmaWx0ZXJGYWN0b3J5ID0gbmV3IEZpbHRlckZhY3RvcnkoKTtcclxuICAgICAgICBjb25zdCBmaWx0ZXI6RmlsdGVyW10gPSBbXVxyXG4gICAgICAgIC8qIGNsYXZlcy5mb3JFYWNoKChrZXk6YW55KSA9PiB7XHJcbiAgICAgICAgICAgIGZpbHRlci5wdXNoKGZpbHRlckZhY3RvcnkuY3JlYXRlKGtleSkpXHJcbiAgICAgICAgICAgIHBhZ2luYXRpb25GaWx0ZXJzW2tleV0uZm9yRWFjaCgodmFsdWU6YW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coZmlsdGVyWzBdLmNyZWF0ZUVsZW1lbnQodmFsdWUscGFnaW5hdGlvbkZpbHRlcnNba2V5XSkpO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgIFxyXG4gICAgICAgIH0pICovXHJcbiAgICAgICAgICAgIHRoaXMuX2ZpbHRlcnNTdWJqZWN0LnZhbHVlLmZvckVhY2goKHZhbHVlOmFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYodmFsdWUudHlwZSgpID09IFwiYXR0cmlidXRlc1wiKSB7IFxyXG4gICAgICAgICAgICAgICAgICAgIC8vdmFsdWUuZGF0YSA9IFtdO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcbn1cclxuIl19
135
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVycy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLXNlcnZpY2VzL2ZpbHRlcnMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRixPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ25ELE9BQU8sRUFBVSxhQUFhLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFbkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sY0FBYyxDQUFDOztBQU16RSxNQUFNLE9BQU8sY0FBYztJQUNmLFVBQVUsR0FBd0IsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDOUQsT0FBTyxHQUF5QixNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUM3RCxlQUFlLEdBQThCLElBQUksZUFBZSxDQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQ2hGLFFBQVEsR0FBeUIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUVwRSxjQUFjLEdBQTRCLElBQUksZUFBZSxDQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQzNFLE9BQU8sR0FBdUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUVoRSxhQUFhLEdBQTZCLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBQy9FLE1BQU0sR0FBd0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUUvRCxtQkFBbUIsR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQTtJQUVqRCxlQUFlLEdBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDeEMsZUFBZSxHQUFvQixFQUFFLENB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RUFBRSxHQUFHLEVBQUU7WUFDckQsTUFBTSxhQUFhLEdBQUcsSUFBSSxhQUFhLEVBQUUsQ0FBQztZQUMxQyxNQUFNLE1BQU0sR0FBWSxFQUFFLENBQUE7WUFDMUI7Ozs7OztpQkFNSztZQUNELElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQVMsRUFBRSxFQUFFO2dCQUM3QyxJQUFHLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxZQUFZLEVBQUUsQ0FBQztvQkFDOUIsa0JBQWtCO2dCQUN0QixDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUE7UUFDTixDQUFDLENBQUMsQ0FBQTtJQUNOLENBQUM7dUdBNUhRLGNBQWM7MkdBQWQsY0FBYyxjQUZYLE1BQU07OzJGQUVULGNBQWM7a0JBSDFCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRW52aXJvbm1lbnRJbmplY3RvciwgaW5qZWN0LCBJbmplY3RhYmxlLCBydW5JbkluamVjdGlvbkNvbnRleHQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEZpbHRlciwgRmlsdGVyRmFjdG9yeSB9IGZyb20gJy4uL2NsYXNzZXMnO1xyXG5pbXBvcnQgeyBEZWZhdWx0RmlsdGVyLCBGaWx0ZXJFbGVtZW50LCBGaWx0ZXJUeXBlLCBQYWdpbmF0aW9uU2V0dGluZ3MgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgQXBpQ29uc3RhbnRzU2VydmljZSwgQ29yZUNvbnN0YW50c1NlcnZpY2UgfSBmcm9tICcuLi9jb25zdGFudHMnO1xyXG5pbXBvcnQgeyBQcmljZVJhbmdlRmlsdGVyIH0gZnJvbSAnLi4vY2xhc3Nlcy9maWx0ZXJzL1ByaWNlUmFuZ2VGaWx0ZXInO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGaWx0ZXJzU2VydmljZSB7XHJcbiAgICBwcml2YXRlIF9hcGlDb25zdHM6IEFwaUNvbnN0YW50c1NlcnZpY2UgPSBpbmplY3QoQXBpQ29uc3RhbnRzU2VydmljZSk7XHJcbiAgICBwcml2YXRlIF9jb25zdHM6IENvcmVDb25zdGFudHNTZXJ2aWNlID0gaW5qZWN0KENvcmVDb25zdGFudHNTZXJ2aWNlKTtcclxuICAgIHByaXZhdGUgX2ZpbHRlcnNTdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8RmlsdGVyW10+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxGaWx0ZXJbXT4oW10pO1xyXG4gICAgcHVibGljIGZpbHRlcnMkOiBPYnNlcnZhYmxlPEZpbHRlcltdPiA9IHRoaXMuX2ZpbHRlcnNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICAgIHByaXZhdGUgX2FwaVVybFN1YmplY3Q6IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKTtcclxuICAgIHB1YmxpYyBhcGlVcmwkOiBPYnNlcnZhYmxlPHN0cmluZz4gPSB0aGlzLl9hcGlVcmxTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICAgIHByaXZhdGUgX3JlYWR5U3ViamVjdDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcbiAgICBwdWJsaWMgcmVhZHkkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5fcmVhZHlTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICAgIHByaXZhdGUgZW52aXJvbm1lbnRJbmplY3RvciA9IGluamVjdChFbnZpcm9ubWVudEluamVjdG9yKVxyXG5cclxuICAgIHByaXZhdGUgX29wdGlvbnNGaWx0ZXJzOiBGaWx0ZXJUeXBlW10gPSBbJ2FsbCddO1xyXG4gICAgcHJpdmF0ZSBfZGVmYXVsdEZpbHRlcnM6IERlZmF1bHRGaWx0ZXJbXSA9IFtdO1xyXG5cclxuICAgIHByaXZhdGUgX3BhZ2luYXRpb25TZXR0aW5nczogUGFnaW5hdGlvblNldHRpbmdzID0ge1xyXG4gICAgICAgIHZhbHVlOicnLFxyXG4gICAgICAgIHR5cGU6JycsXHJcbiAgICAgICAgbGltaXQ6MFxyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcigpe1xyXG4gICAgICAgIC8vdGhpcy5fZGVmYXVsdEZpbHRlcnMgPSB0aGlzLl9jb25zdHMuZ2V0RGVmYXVsdEZpbHRlcnMoKVxyXG4gICAgfVxyXG5cclxuICAgIC8vQVBJIFVSTFxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXRvcm5hIGxhIHVybCBwYXJhIGVsIGZpbHRyYWRvXHJcbiAgICAgKiBAcGFyYW0gZmlsdGVycyBcclxuICAgICAqIEByZXR1cm5zIFxyXG4gICAgICovXHJcbiAgICBwcm9kdWN0c0ZpbHRlckFwaShmaWx0ZXJzID0gJycpIHsgcmV0dXJuICdzaG9wLWFwaS8nICsgdGhpcy5fYXBpQ29uc3RzLkNIQU5ORUwgKyAnL3Byb2R1Y3Qtc2VhcmNoLycgKyAnP2xvY2FsZT0nICsgdGhpcy5fYXBpQ29uc3RzLkxPQ0FMRSArIGZpbHRlcnMgfTtcclxuICAgIC8qKlxyXG4gICAgICogQXJtYSBsb3MgZmlsdHJvcyB5IHJldG9ybmEgbGEgdXJsIGNvbXBsZXRhIGNvbiBsb3MgZmlsdHJvcyBhcGxpY2Fkb3MuXHJcbiAgICAgKiBAcGFyYW0gc2VhcmNoX3ZhbHVlIHZhbG9yIGEgYnVzY2FyXHJcbiAgICAgKiBAcmV0dXJucyBcclxuICAgICAqL1xyXG4gICAgZ2VuZXJhdGVGaW5hbEFwaShzZWFyY2hfdmFsdWU/OiBzdHJpbmcpIHtcclxuICAgICAgICBsZXQgZXh0cmFfcGFyYW1zID0gJyc7XHJcbiAgICAgICAgdGhpcy5fZmlsdGVyc1N1YmplY3QudmFsdWUuZm9yRWFjaChmaWx0ZXIgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBleHRyYSA9IGZpbHRlci50b1VybFBhcmFtcygpO1xyXG4gICAgICAgICAgICBleHRyYS5zcGxpdCgnPScpWzFdICE9ICcnID8gZXh0cmFfcGFyYW1zICs9IGV4dHJhIDogbnVsbDtcclxuICAgICAgICB9KVxyXG4gICAgICAgIGlmIChzZWFyY2hfdmFsdWUpIGV4dHJhX3BhcmFtcyArPSAoJyZjcml0ZXJpYVtzZWFyY2hdW3R5cGVdPWNvbnRhaW5zJmNyaXRlcmlhW3NlYXJjaF1bdmFsdWVdPScgKyBzZWFyY2hfdmFsdWUpO1xyXG4gICAgICAgXHJcbiAgICAgICAgLy9jb25zb2xlLmxvZyhcImV4dHJhX3BhcmFtc1wiLGV4dHJhX3BhcmFtcyk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvZHVjdHNGaWx0ZXJBcGkoZXh0cmFfcGFyYW1zKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGlzVXBkYXRlZChwYWdpbmF0aW9uU2V0dGluZ3M6IFBhZ2luYXRpb25TZXR0aW5ncyl7XHJcbiAgICAgICAgY29uc3Qga2V5czpzdHJpbmdbXSA9IE9iamVjdC5rZXlzKHBhZ2luYXRpb25TZXR0aW5ncyk7XHJcbiAgICAgICAgbGV0IGNoYW5nZTpib29sZWFuID0gZmFsc2U7XHJcbiAgICAgICAga2V5cy5mb3JFYWNoKChrZXk6c3RyaW5nKSA9PiB7ICAgXHJcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gKHBhZ2luYXRpb25TZXR0aW5ncyBhcyBSZWNvcmQ8c3RyaW5nLCBhbnk+KVtrZXldOyBcclxuICAgICAgICAgICAgY29uc3QgdmFsdWUyID0gKHRoaXMuX3BhZ2luYXRpb25TZXR0aW5ncyBhcyBSZWNvcmQ8c3RyaW5nLCBhbnk+KVtrZXldO1xyXG4gICAgICAgICAgICBpZiAodmFsdWUgIT0gdmFsdWUyKSBjaGFuZ2UgPSB0cnVlOyBcclxuICAgICAgICB9KVxyXG4gICAgICAgIGlmIChjaGFuZ2UpIHRoaXMuX3BhZ2luYXRpb25TZXR0aW5ncyA9IHBhZ2luYXRpb25TZXR0aW5ncztcclxuICAgICAgICByZXR1cm4gY2hhbmdlO1xyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBDb25maWd1cmEgbG9zIGZpbHRyb3MgcXVlIHNlcmFuIGFwbGljYWRvcyBlbiBlbCBmcm9udGVuZC5cclxuICAgICAqIEBwYXJhbSBwYWdpbmF0aW9uU2V0dGluZ3MgXHJcbiAgICAgKi9cclxuICAgIHNldEZpbHRlcnMocGFnaW5hdGlvblNldHRpbmdzOiBQYWdpbmF0aW9uU2V0dGluZ3MpIHtcclxuICAgICAgICAgICAgbGV0IGZpbmFsX2ZpbHRlcnM6IEZpbHRlcltdID0gW107XHJcbiAgICAgICAgICAgIGlmICh0aGlzLl9vcHRpb25zRmlsdGVycz8uaW5jbHVkZXMoJ2FsbCcpKSB0aGlzLl9vcHRpb25zRmlsdGVycyA9IFsnYXR0cmlidXRlcycsICdjYXRlZ29yaWVzJywgJ2R5bmFtaWNzJywgJ3NvcnQnLCAncHJpY2VfcmFuZ2UnXTtcclxuICAgICAgICAgICAgcnVuSW5JbmplY3Rpb25Db250ZXh0KHRoaXMuZW52aXJvbm1lbnRJbmplY3RvciwgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZmlsdGVyRmFjdG9yeSA9IG5ldyBGaWx0ZXJGYWN0b3J5KCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9vcHRpb25zRmlsdGVycz8uZm9yRWFjaChmaWx0ZXIgPT4gZmluYWxfZmlsdGVycy5wdXNoKGZpbHRlckZhY3RvcnkuY3JlYXRlKGZpbHRlciwgcGFnaW5hdGlvblNldHRpbmdzKSkpO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB0aGlzLl9kZWZhdWx0RmlsdGVycz8uZm9yRWFjaChmaWx0ZXJEZWZhdWx0ID0+IHtcclxuICAgICAgICAgICAgICAgIGxldCBmaWx0ZXIgPSBmaW5hbF9maWx0ZXJzLmZpbmQoZmlsdGVyID0+IGZpbHRlci50eXBlKCkgPT0gZmlsdGVyRGVmYXVsdC5maWx0ZXJfdHlwZSk7XHJcbiAgICAgICAgICAgICAgICBmaWx0ZXIgJiYgZmlsdGVyRGVmYXVsdC5jb2Rlcy5mb3JFYWNoKHZhbHVlID0+IGZpbHRlci5zZXRTZWxlY3RlZCh2YWx1ZSkpO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB0aGlzLl9maWx0ZXJzU3ViamVjdC5uZXh0KGZpbmFsX2ZpbHRlcnMpO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAvLyBjYXNlICdwcmljZV9yYW5nZSc6IGluc3RhbmNlID0gbmV3IFByaWNlUmFuZ2VGaWx0ZXIoKTsgYnJlYWs7IENPTU8gQURBUFRPIEVTVEUgQ09ESUdPIEEgTEEgTlVFVkEgRVNUUlVDVFVSQSBERSBGSUxUUk9TXHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIE9idGVuZ28gZmlsdHJvcyBlc3BlY2lmaWNvcyBzZWfDum4gZWwgdGlwby5cclxuICAgICAqIEBwYXJhbSB0eXBlcyBcclxuICAgICAqIEByZXR1cm5zIFxyXG4gICAgICovXHJcbiAgICBnZXRTcGVjaWZpY0ZpbHRlcnModHlwZXM6IEZpbHRlclR5cGVbXSk6IEZpbHRlcltdIHtcclxuICAgICAgICBjb25zdCBmaWx0ZXJzOiBGaWx0ZXJbXSA9IHRoaXMuX2ZpbHRlcnNTdWJqZWN0LnZhbHVlLmZpbHRlcihmaWx0ZXIgPT4gdHlwZXMuaW5jbHVkZXMoZmlsdGVyLnR5cGUoKSkpXHJcbiAgICAgICAgcmV0dXJuIGZpbHRlcnM7XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIEFwbGljYSB1biBmaWx0cm8uXHJcbiAgICAgKiBAcGFyYW0gZmlsdGVyT2JqIFxyXG4gICAgICogQHBhcmFtIGZpbHRlckVsZW0gXHJcbiAgICAgKi9cclxuICAgIHNldEZpbHRlclNlbGVjdGVkKGZpbHRlck9iajogRmlsdGVyLCBmaWx0ZXJFbGVtOiBGaWx0ZXJFbGVtZW50KSB7XHJcbiAgICAgICAgbGV0IGZpbmFsX2ZpbHRlcnM6IEZpbHRlcltdID0gdGhpcy5fZmlsdGVyc1N1YmplY3QudmFsdWU7XHJcbiAgICAgICAgbGV0IGluZGV4ID0gZmluYWxfZmlsdGVycy5maW5kSW5kZXgoZmlsdGVyID0+IGZpbHRlci50eXBlKCkgPT0gZmlsdGVyT2JqLnR5cGUoKSk7XHJcbiAgICAgICAgZmluYWxfZmlsdGVyc1tpbmRleF0uc2V0U2VsZWN0ZWQoZmlsdGVyRWxlbSwgZmlsdGVyRWxlbS52YWx1ZSB8fCBmaWx0ZXJFbGVtLmNvZGUpO1xyXG4gICAgICAgIC8vY29uc29sZS5sb2coaW5kZXgsIGZpbmFsX2ZpbHRlcnMpXHJcbiAgICAgICAgdGhpcy5fZmlsdGVyc1N1YmplY3QubmV4dChmaW5hbF9maWx0ZXJzKTtcclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogQWN0dWFsaXphIGxvcyBmaWx0cm9zLlxyXG4gICAgICogQHBhcmFtIHBhZ2luYXRpb25GaWx0ZXJzIFxyXG4gICAgICovXHJcbiAgICB1cGRhdGVGaWx0ZXJzKHBhZ2luYXRpb25GaWx0ZXJzOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBjbGF2ZXMgPSBPYmplY3Qua2V5cyhwYWdpbmF0aW9uRmlsdGVycylcclxuICAgICAgICBydW5JbkluamVjdGlvbkNvbnRleHQodGhpcy5lbnZpcm9ubWVudEluamVjdG9yLCAoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgZmlsdGVyRmFjdG9yeSA9IG5ldyBGaWx0ZXJGYWN0b3J5KCk7XHJcbiAgICAgICAgY29uc3QgZmlsdGVyOkZpbHRlcltdID0gW11cclxuICAgICAgICAvKiBjbGF2ZXMuZm9yRWFjaCgoa2V5OmFueSkgPT4ge1xyXG4gICAgICAgICAgICBmaWx0ZXIucHVzaChmaWx0ZXJGYWN0b3J5LmNyZWF0ZShrZXkpKVxyXG4gICAgICAgICAgICBwYWdpbmF0aW9uRmlsdGVyc1trZXldLmZvckVhY2goKHZhbHVlOmFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGZpbHRlclswXS5jcmVhdGVFbGVtZW50KHZhbHVlLHBhZ2luYXRpb25GaWx0ZXJzW2tleV0pKTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICBcclxuICAgICAgICB9KSAqL1xyXG4gICAgICAgICAgICB0aGlzLl9maWx0ZXJzU3ViamVjdC52YWx1ZS5mb3JFYWNoKCh2YWx1ZTphbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmKHZhbHVlLnR5cGUoKSA9PSBcImF0dHJpYnV0ZXNcIikgeyBcclxuICAgICAgICAgICAgICAgICAgICAvL3ZhbHVlLmRhdGEgPSBbXTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICB9KVxyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -1,5 +1,5 @@
1
1
  import { inject, Injectable } from '@angular/core';
2
- import { LocalStorage } from '@ngx-pwa/local-storage';
2
+ import { StorageMap } from '@ngx-pwa/local-storage';
3
3
  import * as i0 from "@angular/core";
4
4
  /**
5
5
  * Adapter usado para storagear los datos.
@@ -10,11 +10,11 @@ export class NgxLocalStorageService {
10
10
  /**
11
11
  * Servicio usado para guardar los datos en el localstorage.
12
12
  */
13
- _storage = inject(LocalStorage);
13
+ _storage = inject(StorageMap);
14
14
  constructor() { }
15
15
  getItemPromise(key) {
16
16
  return new Promise((resolve, reject) => {
17
- this._storage.getItem(key).subscribe({
17
+ this._storage.get(key).subscribe({
18
18
  next: (data) => resolve(data),
19
19
  error: (err) => reject(err),
20
20
  });
@@ -26,7 +26,7 @@ export class NgxLocalStorageService {
26
26
  * @returns
27
27
  */
28
28
  getItem(key) {
29
- return this._storage.getItem(key);
29
+ return this._storage.get(key);
30
30
  }
31
31
  /**
32
32
  * Guarda un dato en el storage.
@@ -35,7 +35,7 @@ export class NgxLocalStorageService {
35
35
  * @param metadata Opciones extra que puede necesitar el servicio.
36
36
  */
37
37
  setItem(key, value, metadata = { path: '/' }) {
38
- this._storage.setItem(key, value).subscribe(() => { });
38
+ this._storage.set(key, value).subscribe(() => { });
39
39
  }
40
40
  /**
41
41
  * Remueve el item del storage.
@@ -43,7 +43,7 @@ export class NgxLocalStorageService {
43
43
  * @param metadata Opciones extra que puede necesitar el servicio.
44
44
  */
45
45
  removeItem(key, metadata) {
46
- this._storage.removeItem(key).subscribe(() => { });
46
+ this._storage.delete(key).subscribe(() => { });
47
47
  }
48
48
  /**
49
49
  * Limpia el Storage.
@@ -63,4 +63,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
63
63
  providedIn: 'root'
64
64
  }]
65
65
  }], ctorParameters: () => [] });
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWxvY2FsLXN0b3JhZ2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVhc3ljb21tZXJjZS12MTgvc3JjL2xpYi9lYy1zZXJ2aWNlcy9uZ3gtbG9jYWwtc3RvcmFnZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR25ELE9BQU8sRUFBYyxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7QUFFbEU7Ozs7R0FJRztBQUlILE1BQU0sT0FBTyxzQkFBc0I7SUFDbEM7O09BRUc7SUFDSyxRQUFRLEdBQWlCLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUV0RCxnQkFBZ0IsQ0FBQztJQUVULGNBQWMsQ0FBQyxHQUFRO1FBQzlCLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDdEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDO2dCQUNwQyxJQUFJLEVBQUUsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7Z0JBQ2xDLEtBQUssRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQzthQUMzQixDQUFDLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsT0FBTyxDQUFDLEdBQVc7UUFDbEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBQ0Q7Ozs7O09BS0c7SUFDSCxPQUFPLENBQUMsR0FBVyxFQUFFLEtBQVUsRUFBRSxXQUFnQixFQUFFLElBQUksRUFBRSxHQUFHLEVBQUU7UUFDN0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBQ0Q7Ozs7T0FJRztJQUNILFVBQVUsQ0FBQyxHQUFXLEVBQUUsUUFBYztRQUNyQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUNEOztPQUVHO0lBQ0gsS0FBSztRQUNKLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFDRCxHQUFHLENBQUMsS0FBYTtRQUNoQixNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDNUMsQ0FBQzt1R0FsRFcsc0JBQXNCOzJHQUF0QixzQkFBc0IsY0FGdEIsTUFBTTs7MkZBRU4sc0JBQXNCO2tCQUhsQyxVQUFVO21CQUFDO29CQUNYLFVBQVUsRUFBRSxNQUFNO2lCQUNsQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb29raWVTZXJ2aWNlIH0gZnJvbSAnbmd4LWNvb2tpZS1zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3RvcmFnZSB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBTdG9yYWdlTWFwLCBMb2NhbFN0b3JhZ2UgfSBmcm9tICdAbmd4LXB3YS9sb2NhbC1zdG9yYWdlJztcclxuaW1wb3J0IHsgbWFwLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbi8qKlxyXG4gKiBBZGFwdGVyIHVzYWRvIHBhcmEgc3RvcmFnZWFyIGxvcyBkYXRvcy5cclxuICogQGNsYXNzIE5neExvY2FsU3RvcmFnZVNlcnZpY2VcclxuICogQGltcGxlbWVudHMge1N0b3JhZ2V9XHJcbiAqL1xyXG5ASW5qZWN0YWJsZSh7XHJcblx0cHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZ3hMb2NhbFN0b3JhZ2VTZXJ2aWNlIGltcGxlbWVudHMgU3RvcmFnZSB7XHJcblx0LyoqXHJcblx0ICogU2VydmljaW8gdXNhZG8gcGFyYSBndWFyZGFyIGxvcyBkYXRvcyBlbiBlbCBsb2NhbHN0b3JhZ2UuXHJcblx0ICovXHJcblx0cHJpdmF0ZSBfc3RvcmFnZTogTG9jYWxTdG9yYWdlID0gaW5qZWN0KExvY2FsU3RvcmFnZSk7XHJcblxyXG5cdGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG5cdHByaXZhdGUgZ2V0SXRlbVByb21pc2Uoa2V5OiBhbnkpOiBQcm9taXNlPHN0cmluZyB8IG51bGw+IHtcclxuXHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcblx0XHRcdHRoaXMuX3N0b3JhZ2UuZ2V0SXRlbShrZXkpLnN1YnNjcmliZSh7XHJcblx0XHRcdFx0bmV4dDogKGRhdGE6IGFueSkgPT4gcmVzb2x2ZShkYXRhKSxcclxuXHRcdFx0XHRlcnJvcjogKGVycikgPT4gcmVqZWN0KGVyciksXHJcblx0XHRcdH0pO1xyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBPYnRpZW5lIGVsIGl0ZW0gZGVsIFN0b3JhZ2VcclxuXHQgKiBAcGFyYW0ga2V5IENsYXZlIHBhcmEgYWNjZWRlciBhbCB2YWxvclxyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdGdldEl0ZW0oa2V5OiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cdFx0cmV0dXJuIHRoaXMuX3N0b3JhZ2UuZ2V0SXRlbShrZXkpO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBHdWFyZGEgdW4gZGF0byBlbiBlbCBzdG9yYWdlLlxyXG5cdCAqIEBwYXJhbSBrZXkgQ2xhdmUgcXVlIHNlIGFzb2NpYSBhbCB2YWxvclxyXG5cdCAqIEBwYXJhbSB2YWx1ZSBWYWxvciBhIGd1YXJkYXJcclxuXHQgKiBAcGFyYW0gbWV0YWRhdGEgT3BjaW9uZXMgZXh0cmEgcXVlIHB1ZWRlIG5lY2VzaXRhciBlbCBzZXJ2aWNpby5cclxuXHQgKi9cclxuXHRzZXRJdGVtKGtleTogc3RyaW5nLCB2YWx1ZTogYW55LCBtZXRhZGF0YTogYW55ID0geyBwYXRoOiAnLycgfSkge1xyXG5cdFx0dGhpcy5fc3RvcmFnZS5zZXRJdGVtKGtleSwgdmFsdWUpLnN1YnNjcmliZSgoKSA9PiB7IH0pO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBSZW11ZXZlIGVsIGl0ZW0gZGVsIHN0b3JhZ2UuXHJcblx0ICogQHBhcmFtIGtleSBDbGF2ZSBkZWwgaXRlbSBkZWwgc3RvcmFnZSBhIGVsaW1pbmFyLlxyXG5cdCAqIEBwYXJhbSBtZXRhZGF0YSBPcGNpb25lcyBleHRyYSBxdWUgcHVlZGUgbmVjZXNpdGFyIGVsIHNlcnZpY2lvLlxyXG5cdCAqL1xyXG5cdHJlbW92ZUl0ZW0oa2V5OiBzdHJpbmcsIG1ldGFkYXRhPzogYW55KTogdm9pZCB7XHJcblx0XHR0aGlzLl9zdG9yYWdlLnJlbW92ZUl0ZW0oa2V5KS5zdWJzY3JpYmUoKCkgPT4geyB9KTtcclxuXHR9XHJcblx0LyoqXHJcblx0ICogTGltcGlhIGVsIFN0b3JhZ2UuXHJcblx0ICovXHJcblx0Y2xlYXIoKTogdm9pZCB7XHJcblx0XHR0aGlzLl9zdG9yYWdlLmNsZWFyKCkuc3Vic2NyaWJlKCgpID0+IHsgfSk7XHJcblx0fVxyXG5cdGtleShpbmRleDogbnVtYmVyKTogc3RyaW5nIHwgbnVsbCB7XHJcblx0XHR0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XHJcblx0fVxyXG5cclxufVxyXG4iXX0=
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWxvY2FsLXN0b3JhZ2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVhc3ljb21tZXJjZS12MTgvc3JjL2xpYi9lYy1zZXJ2aWNlcy9uZ3gtbG9jYWwtc3RvcmFnZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7QUFFcEQ7Ozs7R0FJRztBQUlILE1BQU0sT0FBTyxzQkFBc0I7SUFDbEM7O09BRUc7SUFDSyxRQUFRLEdBQWUsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRWxELGdCQUFpQixDQUFDO0lBRVYsY0FBYyxDQUFDLEdBQVE7UUFDOUIsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUN0QyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUM7Z0JBQ2hDLElBQUksRUFBRSxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztnQkFDbEMsS0FBSyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO2FBQzNCLENBQUMsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxPQUFPLENBQUMsR0FBVztRQUNsQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFDRDs7Ozs7T0FLRztJQUNILE9BQU8sQ0FBQyxHQUFXLEVBQUUsS0FBVSxFQUFFLFdBQWdCLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRTtRQUM3RCxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFDRDs7OztPQUlHO0lBQ0gsVUFBVSxDQUFDLEdBQVcsRUFBRSxRQUFjO1FBQ3JDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBQ0Q7O09BRUc7SUFDSCxLQUFLO1FBQ0osSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUNELEdBQUcsQ0FBQyxLQUFhO1FBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUM1QyxDQUFDO3VHQWxEVyxzQkFBc0I7MkdBQXRCLHNCQUFzQixjQUZ0QixNQUFNOzsyRkFFTixzQkFBc0I7a0JBSGxDLFVBQVU7bUJBQUM7b0JBQ1gsVUFBVSxFQUFFLE1BQU07aUJBQ2xCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvb2tpZVNlcnZpY2UgfSBmcm9tICduZ3gtY29va2llLXNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTdG9yYWdlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IFN0b3JhZ2VNYXAgfSBmcm9tICdAbmd4LXB3YS9sb2NhbC1zdG9yYWdlJztcclxuaW1wb3J0IHsgbWFwLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbi8qKlxyXG4gKiBBZGFwdGVyIHVzYWRvIHBhcmEgc3RvcmFnZWFyIGxvcyBkYXRvcy5cclxuICogQGNsYXNzIE5neExvY2FsU3RvcmFnZVNlcnZpY2VcclxuICogQGltcGxlbWVudHMge1N0b3JhZ2V9XHJcbiAqL1xyXG5ASW5qZWN0YWJsZSh7XHJcblx0cHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZ3hMb2NhbFN0b3JhZ2VTZXJ2aWNlIGltcGxlbWVudHMgU3RvcmFnZSB7XHJcblx0LyoqXHJcblx0ICogU2VydmljaW8gdXNhZG8gcGFyYSBndWFyZGFyIGxvcyBkYXRvcyBlbiBlbCBsb2NhbHN0b3JhZ2UuXHJcblx0ICovXHJcblx0cHJpdmF0ZSBfc3RvcmFnZTogU3RvcmFnZU1hcCA9IGluamVjdChTdG9yYWdlTWFwKTtcclxuXHJcblx0Y29uc3RydWN0b3IoKSB7ICB9XHJcblxyXG5cdHByaXZhdGUgZ2V0SXRlbVByb21pc2Uoa2V5OiBhbnkpOiBQcm9taXNlPHN0cmluZyB8IG51bGw+IHtcclxuXHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcblx0XHRcdHRoaXMuX3N0b3JhZ2UuZ2V0KGtleSkuc3Vic2NyaWJlKHtcclxuXHRcdFx0XHRuZXh0OiAoZGF0YTogYW55KSA9PiByZXNvbHZlKGRhdGEpLFxyXG5cdFx0XHRcdGVycm9yOiAoZXJyKSA9PiByZWplY3QoZXJyKSxcclxuXHRcdFx0fSk7XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIE9idGllbmUgZWwgaXRlbSBkZWwgU3RvcmFnZVxyXG5cdCAqIEBwYXJhbSBrZXkgQ2xhdmUgcGFyYSBhY2NlZGVyIGFsIHZhbG9yXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0Z2V0SXRlbShrZXk6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHRyZXR1cm4gdGhpcy5fc3RvcmFnZS5nZXQoa2V5KTtcclxuXHR9XHJcblx0LyoqXHJcblx0ICogR3VhcmRhIHVuIGRhdG8gZW4gZWwgc3RvcmFnZS5cclxuXHQgKiBAcGFyYW0ga2V5IENsYXZlIHF1ZSBzZSBhc29jaWEgYWwgdmFsb3JcclxuXHQgKiBAcGFyYW0gdmFsdWUgVmFsb3IgYSBndWFyZGFyXHJcblx0ICogQHBhcmFtIG1ldGFkYXRhIE9wY2lvbmVzIGV4dHJhIHF1ZSBwdWVkZSBuZWNlc2l0YXIgZWwgc2VydmljaW8uXHJcblx0ICovXHJcblx0c2V0SXRlbShrZXk6IHN0cmluZywgdmFsdWU6IGFueSwgbWV0YWRhdGE6IGFueSA9IHsgcGF0aDogJy8nIH0pIHtcclxuXHRcdHRoaXMuX3N0b3JhZ2Uuc2V0KGtleSwgdmFsdWUpLnN1YnNjcmliZSgoKSA9PiB7IH0pO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBSZW11ZXZlIGVsIGl0ZW0gZGVsIHN0b3JhZ2UuXHJcblx0ICogQHBhcmFtIGtleSBDbGF2ZSBkZWwgaXRlbSBkZWwgc3RvcmFnZSBhIGVsaW1pbmFyLlxyXG5cdCAqIEBwYXJhbSBtZXRhZGF0YSBPcGNpb25lcyBleHRyYSBxdWUgcHVlZGUgbmVjZXNpdGFyIGVsIHNlcnZpY2lvLlxyXG5cdCAqL1xyXG5cdHJlbW92ZUl0ZW0oa2V5OiBzdHJpbmcsIG1ldGFkYXRhPzogYW55KTogdm9pZCB7XHJcblx0XHR0aGlzLl9zdG9yYWdlLmRlbGV0ZShrZXkpLnN1YnNjcmliZSgoKSA9PiB7IH0pO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBMaW1waWEgZWwgU3RvcmFnZS5cclxuXHQgKi9cclxuXHRjbGVhcigpOiB2b2lkIHtcclxuXHRcdHRoaXMuX3N0b3JhZ2UuY2xlYXIoKS5zdWJzY3JpYmUoKCkgPT4geyB9KTtcclxuXHR9XHJcblx0a2V5KGluZGV4OiBudW1iZXIpOiBzdHJpbmcgfCBudWxsIHtcclxuXHRcdHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcclxuXHR9XHJcblxyXG59XHJcbiJdfQ==
@@ -2,14 +2,19 @@ import { inject, Injectable } from '@angular/core';
2
2
  import { ConnectionService } from '../api';
3
3
  import { BehaviorSubject, map } from 'rxjs';
4
4
  import { ApiConstantsService } from '../constants';
5
+ import { CartService } from './cart.service';
5
6
  import * as i0 from "@angular/core";
6
7
  export class OrdersService {
7
8
  _connection = inject(ConnectionService);
8
9
  _apiConsts = inject(ApiConstantsService);
10
+ _cartService = inject(CartService);
9
11
  _ordersSubject = new BehaviorSubject(null);
10
12
  _errorSubject = new BehaviorSubject(null);
13
+ _selectedOrderSubject = new BehaviorSubject(null);
11
14
  orders$ = this._ordersSubject.asObservable();
15
+ selectedOrder$ = this._selectedOrderSubject.asObservable();
12
16
  loading = false;
17
+ channelConfig = {};
13
18
  //API URL
14
19
  ordersListapi() { return `shop-api/${this._apiConsts.CHANNEL}/orders`; }
15
20
  ;
@@ -36,6 +41,28 @@ export class OrdersService {
36
41
  return order;
37
42
  });
38
43
  }
44
+ setSelectedOrder(order) {
45
+ this._selectedOrderSubject.next(order);
46
+ this.channelConfig = (this._cartService.channelConfig);
47
+ }
48
+ getOrderByNumber(number) {
49
+ this.loading = true;
50
+ this._connection.get(this.ordersListapi())
51
+ .pipe(map(res => {
52
+ let orders = this.mapOrdersAndAddInfo(res);
53
+ const order = orders.find((order) => order.number == number);
54
+ return order;
55
+ }))
56
+ .subscribe({
57
+ next: (response) => {
58
+ this._selectedOrderSubject.next(response);
59
+ this.loading = false;
60
+ },
61
+ error: (e) => {
62
+ this._errorSubject.next({ message: 'unable-get-orders' });
63
+ }
64
+ });
65
+ }
39
66
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: OrdersService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
40
67
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: OrdersService, providedIn: 'root' });
41
68
  }
@@ -45,4 +72,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
45
72
  providedIn: 'root'
46
73
  }]
47
74
  }] });
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JkZXJzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvZWMtc2VydmljZXMvb3JkZXJzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7QUFLbkQsTUFBTSxPQUFPLGFBQWE7SUFDakIsV0FBVyxHQUFxQixNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUMxRCxVQUFVLEdBQXVCLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBRTdELGNBQWMsR0FBeUIsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakUsYUFBYSxHQUF5QixJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUVqRSxPQUFPLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUU3QyxPQUFPLEdBQVcsS0FBSyxDQUFDO0lBRS9CLFNBQVM7SUFDVCxhQUFhLEtBQUksT0FBTyxZQUFZLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxTQUFTLENBQUEsQ0FBQSxDQUFDO0lBQUEsQ0FBQztJQUV0RSxZQUFZO1FBQ1gsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDZCxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7YUFDckMsSUFBSSxDQUNELEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNOLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMzQyxPQUFPLE1BQU0sQ0FBQztRQUNsQixDQUFDLENBQUMsQ0FDTDthQUNBLFNBQVMsQ0FBQztZQUNQLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRSxFQUFFO2dCQUNmLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUNuQyxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztZQUN6QixDQUFDO1lBQ0QsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7Z0JBQ1QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDO1lBQzlELENBQUM7U0FDYixDQUFDLENBQUE7SUFFSixDQUFDO0lBQ0QsbUJBQW1CLENBQUMsTUFBVTtRQUN2QixPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFTLEVBQUUsRUFBRTtZQUM1QixLQUFLLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBSyxFQUFFLENBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzlFLE9BQU8sS0FBSyxDQUFDO1FBQ2pCLENBQUMsQ0FBQyxDQUFBO0lBQ1QsQ0FBQzt1R0F2Q1csYUFBYTsyR0FBYixhQUFhLGNBRmIsTUFBTTs7MkZBRU4sYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDWCxVQUFVLEVBQUUsTUFBTTtpQkFDbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29ubmVjdGlvblNlcnZpY2UgfSBmcm9tICcuLi9hcGknO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIG1hcCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBBcGlDb25zdGFudHNTZXJ2aWNlIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuXHRwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIE9yZGVyc1NlcnZpY2Uge1xyXG5cdHByaXZhdGUgX2Nvbm5lY3Rpb246Q29ubmVjdGlvblNlcnZpY2UgPSBpbmplY3QoQ29ubmVjdGlvblNlcnZpY2UpO1xyXG5cdHByaXZhdGUgX2FwaUNvbnN0czpBcGlDb25zdGFudHNTZXJ2aWNlID0gaW5qZWN0KEFwaUNvbnN0YW50c1NlcnZpY2UpO1xyXG5cclxuXHRwcml2YXRlIF9vcmRlcnNTdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8YW55PiA9IG5ldyBCZWhhdmlvclN1YmplY3QobnVsbCk7XHJcblx0cHJpdmF0ZSBfZXJyb3JTdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8YW55PiA9IG5ldyBCZWhhdmlvclN1YmplY3QobnVsbCk7XHJcblxyXG5cdHB1YmxpYyBvcmRlcnMkID0gdGhpcy5fb3JkZXJzU3ViamVjdC5hc09ic2VydmFibGUoKTtcclxuXHJcblx0cHVibGljIGxvYWRpbmc6Ym9vbGVhbiA9IGZhbHNlO1xyXG5cclxuXHQvL0FQSSBVUkxcclxuXHRvcmRlcnNMaXN0YXBpKCl7IHJldHVybiBgc2hvcC1hcGkvJHt0aGlzLl9hcGlDb25zdHMuQ0hBTk5FTH0vb3JkZXJzYH07XHJcblxyXG5cdHVwZGF0ZU9yZGVycygpIHtcclxuXHRcdHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5fY29ubmVjdGlvbi5nZXQodGhpcy5vcmRlcnNMaXN0YXBpKCkpXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgbWFwKHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IG9yZGVycyA9IHRoaXMubWFwT3JkZXJzQW5kQWRkSW5mbyhyZXMpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvcmRlcnM7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICAgICAgbmV4dDogKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3JkZXJzU3ViamVjdC5uZXh0KHJlc3BvbnNlKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBlcnJvcjogKGUpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9lcnJvclN1YmplY3QubmV4dCh7IG1lc3NhZ2U6ICd1bmFibGUtZ2V0LW9yZGVycycgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblx0XHRcdH0pXHJcblxyXG5cdH1cclxuXHRtYXBPcmRlcnNBbmRBZGRJbmZvKG9yZGVyczphbnkpe1xyXG4gICAgICAgIHJldHVybiBvcmRlcnMubWFwKChvcmRlcjphbnkpID0+IHtcclxuICAgICAgICAgICAgb3JkZXIudG90YWwgPSBvcmRlci5wYXltZW50cy5yZWR1Y2UoKGE6YW55LCBiOmFueSkgPT4gYSArIGIucHJpY2UuY3VycmVudCwgMCk7XHJcbiAgICAgICAgICAgIHJldHVybiBvcmRlcjtcclxuICAgICAgICB9KVxyXG5cdH1cclxuXHJcbn1cclxuIl19
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JkZXJzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvZWMtc2VydmljZXMvb3JkZXJzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNuRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBSzdDLE1BQU0sT0FBTyxhQUFhO0lBQ2pCLFdBQVcsR0FBcUIsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDMUQsVUFBVSxHQUF1QixNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUMxRCxZQUFZLEdBQWUsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBRWxELGNBQWMsR0FBeUIsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakUsYUFBYSxHQUF5QixJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3RCxxQkFBcUIsR0FBeUIsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFNUUsT0FBTyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDMUMsY0FBYyxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUU5RCxPQUFPLEdBQVcsS0FBSyxDQUFDO0lBQ3JCLGFBQWEsR0FBUSxFQUFFLENBQUM7SUFHbEMsU0FBUztJQUNULGFBQWEsS0FBSSxPQUFPLFlBQVksSUFBSSxDQUFD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ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb25uZWN0aW9uU2VydmljZSB9IGZyb20gJy4uL2FwaSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgbWFwIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEFwaUNvbnN0YW50c1NlcnZpY2UgfSBmcm9tICcuLi9jb25zdGFudHMnO1xyXG5pbXBvcnQgeyBDYXJ0U2VydmljZSB9IGZyb20gJy4vY2FydC5zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuXHRwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIE9yZGVyc1NlcnZpY2Uge1xyXG5cdHByaXZhdGUgX2Nvbm5lY3Rpb246Q29ubmVjdGlvblNlcnZpY2UgPSBpbmplY3QoQ29ubmVjdGlvblNlcnZpY2UpO1xyXG5cdHByaXZhdGUgX2FwaUNvbnN0czpBcGlDb25zdGFudHNTZXJ2aWNlID0gaW5qZWN0KEFwaUNvbnN0YW50c1NlcnZpY2UpO1xyXG4gICAgcHJpdmF0ZSBfY2FydFNlcnZpY2U6Q2FydFNlcnZpY2UgPSBpbmplY3QoQ2FydFNlcnZpY2UpO1xyXG5cclxuXHRwcml2YXRlIF9vcmRlcnNTdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8YW55PiA9IG5ldyBCZWhhdmlvclN1YmplY3QobnVsbCk7XHJcblx0cHJpdmF0ZSBfZXJyb3JTdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8YW55PiA9IG5ldyBCZWhhdmlvclN1YmplY3QobnVsbCk7XHJcbiAgICBwcml2YXRlIF9zZWxlY3RlZE9yZGVyU3ViamVjdDogQmVoYXZpb3JTdWJqZWN0PGFueT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KG51bGwpO1xyXG5cclxuXHRwdWJsaWMgb3JkZXJzJCA9IHRoaXMuX29yZGVyc1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XHJcbiAgICBwdWJsaWMgc2VsZWN0ZWRPcmRlciQgPSB0aGlzLl9zZWxlY3RlZE9yZGVyU3ViamVjdC5hc09ic2VydmFibGUoKTtcclxuXHJcblx0cHVibGljIGxvYWRpbmc6Ym9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHVibGljIGNoYW5uZWxDb25maWc6IGFueSA9IHt9O1xyXG5cclxuXHJcblx0Ly9BUEkgVVJMXHJcblx0b3JkZXJzTGlzdGFwaSgpeyByZXR1cm4gYHNob3AtYXBpLyR7dGhpcy5fYXBpQ29uc3RzLkNIQU5ORUx9L29yZGVyc2B9O1xyXG5cclxuXHR1cGRhdGVPcmRlcnMoKSB7XHJcblx0XHR0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuX2Nvbm5lY3Rpb24uZ2V0KHRoaXMub3JkZXJzTGlzdGFwaSgpKVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIG1hcChyZXMgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBvcmRlcnMgPSB0aGlzLm1hcE9yZGVyc0FuZEFkZEluZm8ocmVzKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3JkZXJzO1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgICAgIG5leHQ6IChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29yZGVyc1N1YmplY3QubmV4dChyZXNwb25zZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgZXJyb3I6IChlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZXJyb3JTdWJqZWN0Lm5leHQoeyBtZXNzYWdlOiAndW5hYmxlLWdldC1vcmRlcnMnIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cdFx0XHR9KVxyXG5cclxuXHR9XHJcblx0bWFwT3JkZXJzQW5kQWRkSW5mbyhvcmRlcnM6YW55KXtcclxuICAgICAgICByZXR1cm4gb3JkZXJzLm1hcCgob3JkZXI6YW55KSA9PiB7XHJcbiAgICAgICAgICAgIG9yZGVyLnRvdGFsID0gb3JkZXIucGF5bWVudHMucmVkdWNlKChhOmFueSwgYjphbnkpID0+IGEgKyBiLnByaWNlLmN1cnJlbnQsIDApO1xyXG4gICAgICAgICAgICByZXR1cm4gb3JkZXI7XHJcbiAgICAgICAgfSlcclxuXHR9XHJcblxyXG4gICAgc2V0U2VsZWN0ZWRPcmRlcihvcmRlcjogYW55KSB7XHJcblx0XHR0aGlzLl9zZWxlY3RlZE9yZGVyU3ViamVjdC5uZXh0KG9yZGVyKTtcclxuICAgICAgICB0aGlzLmNoYW5uZWxDb25maWcgPSAodGhpcy5fY2FydFNlcnZpY2UuY2hhbm5lbENvbmZpZyk7XHJcblx0fVxyXG4gICAgZ2V0T3JkZXJCeU51bWJlcihudW1iZXI6IGFueSkge1xyXG4gICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICAgICAgXHJcblx0XHR0aGlzLl9jb25uZWN0aW9uLmdldCh0aGlzLm9yZGVyc0xpc3RhcGkoKSlcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBtYXAocmVzID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgb3JkZXJzID0gdGhpcy5tYXBPcmRlcnNBbmRBZGRJbmZvKHJlcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgb3JkZXIgPSBvcmRlcnMuZmluZCgob3JkZXI6YW55KSA9PiBvcmRlci5udW1iZXIgPT0gbnVtYmVyKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3JkZXI7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICAgICAgbmV4dDogKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRPcmRlclN1YmplY3QubmV4dChyZXNwb25zZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgZXJyb3I6IChlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZXJyb3JTdWJqZWN0Lm5leHQoeyBtZXNzYWdlOiAndW5hYmxlLWdldC1vcmRlcnMnIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cdFx0XHR9KVxyXG5cdH1cclxuICAgIC8qIGZpbmRPcmRlciA9IChvcmRlcl9udW1iZXI6YW55KSA9PlxyXG4gICAgICAgIHRoaXMuX29yZGVyc1N1YmplY3QudmFsdWUgPyB0aGlzLmdldE9yZGVyQnlOdW1iZXIob3JkZXJfbnVtYmVyKSA6IHRoaXMud2FpdFVudGlsT3JkZXJzKG9yZGVyX251bWJlciwgdGhpcy5nZXRPcmRlckJ5TnVtYmVyKTsgKi8gICAgXHJcbn1cclxuIl19
@@ -34,6 +34,8 @@ export class PaginationService {
34
34
  nextProducts$ = this._nextProductsSubject.asObservable();
35
35
  _resetSubject = new BehaviorSubject(false);
36
36
  reset$ = this._resetSubject.asObservable();
37
+ priceRangeSubject = new BehaviorSubject({ price_min: 0, price_max: 0 });
38
+ priceRange$ = this.priceRangeSubject.asObservable();
37
39
  constructor() { }
38
40
  /**
39
41
  * Inicializa la configuración para el Servicio de Paginación.
@@ -79,6 +81,11 @@ export class PaginationService {
79
81
  this._dataPagination.set({ ...response, called: true });
80
82
  this._finished = (response.page == response.pages);
81
83
  this._waiting = false;
84
+ // Emitir los valores de price_min y price_max a través de priceRangeSubject
85
+ // this.priceRangeSubject.next({
86
+ // price_min: response.price_min,
87
+ // price_max: response.price_max
88
+ // });
82
89
  }
83
90
  /**
84
91
  * Marca el final de las paginas, es decir cuando ya no queda mas elementos que mostrar.
@@ -160,4 +167,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
160
167
  providedIn: 'root'
161
168
  }]
162
169
  }], ctorParameters: () => [] });
163
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLXNlcnZpY2VzL3BhZ2luYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsR0FBRyxFQUFjLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFaEYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDOztBQUVuRDs7O0dBR0c7QUFJSCxNQUFNLE9BQU8saUJBQWlCO0lBRXJCLGtCQUFrQixHQUFzQixNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUNsRSxlQUFlLEdBQW1CLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQTtJQUN6RCxlQUFlLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUMxRCxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQ2QsU0FBUyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7UUFDckIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNuQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBQyxHQUFHLENBQUMsQ0FBQztRQUN2QixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDMUIsQ0FBQyxDQUFDLENBQ0YsQ0FBQTtJQUVPLGVBQWUsR0FBUSxNQUFNLENBQWE7UUFDakQsVUFBVSxFQUFFLEVBQUU7UUFDZCxRQUFRLEVBQUUsRUFBRTtRQUNaLE9BQU8sRUFBRSxFQUFF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QUFDLGdCQUFnQixFQUFFLENBQUM7SUFDaEQsQ0FBQztJQUNEOzs7O09BSUc7SUFDSSxPQUFPLENBQUMsR0FBVztRQUN6QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQzVELEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNULGtCQUFrQjtZQUNsQixJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMxQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBQ3hELENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7UUFFakIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzNCLENBQUM7dUdBNUpXLGlCQUFpQjsyR0FBakIsaUJBQWlCLGNBRmpCLE1BQU07OzJGQUVOLGlCQUFpQjtrQkFIN0IsVUFBVTttQkFBQztvQkFDWCxVQUFVLEVBQUUsTUFBTTtpQkFDbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb25uZWN0aW9uU2VydmljZSB9IGZyb20gJy4uL2FwaSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgbWFwLCBPYnNlcnZhYmxlLCBzaGFyZVJlcGxheSwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFBhZ2luYXRpb24sIFByb2R1Y3QgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgRmlsdGVyc1NlcnZpY2UgfSBmcm9tICcuL2ZpbHRlcnMuc2VydmljZSc7XHJcbmltcG9ydCB7IEZpbHRlciB9IGZyb20gJy4uL2NsYXNzZXMnO1xyXG4vKipcclxuICogU2VydmljaW8gcGFyYSBtYW5lamFyIGxhIHBhZ2luYWNpw7NuIGRlIGxvcyBwcm9kdWN0b3MuXHJcbiAqIEBjbGFzcyBQYWdpbmF0aW9uU2VydmljZVxyXG4gKi9cclxuQEluamVjdGFibGUoe1xyXG5cdHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgUGFnaW5hdGlvblNlcnZpY2Uge1xyXG5cclxuXHRwcml2YXRlIF9jb25uZWN0aW9uU2VydmljZTogQ29ubmVjdGlvblNlcnZpY2UgPSBpbmplY3QoQ29ubmVjdGlvblNlcnZpY2UpO1xyXG5cdHByaXZhdGUgX2ZpbHRlcnNTZXJ2aWNlOiBGaWx0ZXJzU2VydmljZSA9IGluamVjdChGaWx0ZXJzU2VydmljZSlcclxuXHRwdWJsaWMgcGFnaW5hdGlvbkRhdGEkID0gdGhpcy5fZmlsdGVyc1NlcnZpY2UuZmlsdGVycyQucGlwZShcclxuXHRcdHNoYXJlUmVwbGF5KDEpLFxyXG5cdFx0c3dpdGNoTWFwKChmaWx0ZXJzKSA9PiB7XHJcblx0XHRcdGNvbnN0IHVybCA9IHRoaXMuYnVpbGRVcmwoZmlsdGVycyk7XHJcblx0XHRcdGNvbnNvbGUubG9nKFwicGFnXCIsdXJsKTtcclxuXHRcdFx0cmV0dXJuIHRoaXMuZ2V0RGF0YSh1cmwpO1xyXG5cdFx0fSlcclxuXHQpXHJcblxyXG5cdHByaXZhdGUgX2RhdGFQYWdpbmF0aW9uOiBhbnkgPSBzaWduYWw8UGFnaW5hdGlvbj4oe1xyXG5cdFx0YXR0cmlidXRlczogW10sXHJcblx0XHRjYXRlZ29yeTogW10sXHJcblx0XHRvcHRpb25zOiBbXSxcclxuXHRcdGxpbWl0OiAwLFxyXG5cdFx0cGFnZTogMCxcclxuXHRcdHBhZ2VzOiAwLFxyXG5cdFx0dG90YWw6IDAsXHJcblx0XHRpdGVtczogW10sXHJcblx0XHRjYWxsZWQ6IGZhbHNlXHJcblx0fSk7XHJcblxyXG5cdHByaXZhdGUgX3dhaXRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRwcml2YXRlIF9maW5pc2hlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cdHByaXZhdGUgX2FwaVVybDogc3RyaW5nID0gJyc7XHJcblx0cHJpdmF0ZSBfc3RhcnQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcblx0cHJpdmF0ZSBfbmV4dFByb2R1Y3RzU3ViamVjdDogQmVoYXZpb3JTdWJqZWN0PFByb2R1Y3RbXT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFByb2R1Y3RbXT4oW10pO1xyXG5cdHB1YmxpYyBuZXh0UHJvZHVjdHMkID0gdGhpcy5fbmV4dFByb2R1Y3RzU3ViamVjdC5hc09ic2VydmFibGUoKTtcclxuXHJcblx0cHJpdmF0ZSBfcmVzZXRTdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuXHRwdWJsaWMgcmVzZXQkID0gdGhpcy5fcmVzZXRTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xyXG5cdGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEluaWNpYWxpemEgbGEgY29uZmlndXJhY2nDs24gcGFyYSBlbCBTZXJ2aWNpbyBkZSBQYWdpbmFjacOzbi5cclxuXHQgKiBAcGFyYW0gYXBpVXJsIFVybCBjb24gbG9zIGZpbHRyb3MgYXBsaWNhZG9zLiBcclxuXHQgKiBAcGFyYW0gbGltaXQgbGltaXRlIGRlIHByb2R1Y3RvcyBlbiBjYWRhIHBldGljacOzbi5cclxuXHQgKi9cclxuXHRpbml0aWFsaXplKGFwaVVybDogc3RyaW5nLCBsaW1pdD86IG51bWJlcikge1xyXG5cdFx0Ly9jb25zb2xlLmxvZyhhcGlVcmwpXHJcblx0XHR0aGlzLl9hcGlVcmwgPSBhcGlVcmw7XHJcblx0XHR0aGlzLl9kYXRhUGFnaW5hdGlvbigpLmxpbWl0ID0gbGltaXQgfHwgdGhpcy5fZGF0YVBhZ2luYXRpb24oKS5saW1pdCB8fCAxMDtcclxuXHRcdHRoaXMuX2ZpbmlzaGVkID0gZmFsc2U7XHJcblx0XHR0aGlzLl9zdGFydCA9IHRydWU7XHJcblx0XHR0aGlzLl9uZXh0UHJvZHVjdHNTdWJqZWN0Lm5leHQoW10pO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBPYnRlbmdvIGxvcyBkYXRvcyBkZSBsYSBzaWd1aWVudGUgcMOhZ2luYS5cclxuXHQgKiBAcGFyYW0gbmV4dCBcclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRnZXROZXh0KG5leHQ/OiBhbnkpOiBib29sZWFuIHtcclxuXHRcdHRoaXMuX3dhaXRpbmcgPSB0cnVlO1xyXG5cdFx0dGhpcy5fbmV4dFByb2R1Y3RzU3ViamVjdC5uZXh0KFtdKTtcclxuXHRcdHRoaXMuX2FwaVVybCA9IHRoaXMuX2FwaVVybC5yZXBsYWNlKCclMjAnLCAnICcpOy8vIG1hcyBwYXJhIGN1YW5kbyBlcyB1biBzZWFyY2ggdmFsdWUuXHJcblx0XHRsZXQgbmV4dFByb2R1Y3RzO1xyXG5cdFx0aWYgKHRoaXMuX3N0YXJ0KSB7XHJcblx0XHRcdG5leHRQcm9kdWN0cyA9IHRoaXMuX2Nvbm5lY3Rpb25TZXJ2aWNlLmdldCh0aGlzLl9hcGlVcmwsIHsgbGltaXQ6IHRoaXMuX2RhdGFQYWdpbmF0aW9uKCkubGltaXQsIHBhZ2U6IDEgfSlcclxuXHRcdFx0dGhpcy5fc3RhcnQgPSBmYWxzZVxyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0bmV4dFByb2R1Y3RzID0gdGhpcy5fY29ubmVjdGlvblNlcnZpY2UuZ2V0KHRoaXMuX2RhdGFQYWdpbmF0aW9uKCkubGlua3MubmV4dC5zbGljZSgxKSk7XHJcblx0XHR9XHJcblxyXG5cdFx0IXRoaXMuX2ZpbmlzaGVkICYmIG5leHRQcm9kdWN0cy5zdWJzY3JpYmUoXHJcblx0XHRcdChyZXNwb25zZTogUGFnaW5hdGlvbikgPT4ge1xyXG5cdFx0XHRcdHJlc3BvbnNlLmxpbmtzID8gdGhpcy51cGRhdGVQYWdlRGF0YShyZXNwb25zZSkgOiB0aGlzLmZpbmlzaChyZXNwb25zZSlcclxuXHRcdFx0XHR0aGlzLl9uZXh0UHJvZHVjdHNTdWJqZWN0Lm5leHQocmVzcG9uc2UuaXRlbXMpO1xyXG5cdFx0XHR9XHJcblx0XHQpXHJcblx0XHRyZXR1cm4gdHJ1ZTtcclxuXHR9XHJcblx0LyoqXHJcblx0ICogQWN0dWFsaXphIGxvcyBkYXRvcyBkZSBsYSBwYWdpbmEuXHJcblx0ICogQHBhcmFtIHJlc3BvbnNlIHJlc3B1ZXN0YSBkZWwgYmFja2VuZCBvIG9iamVjdG8gZGVsIHRpcG8gYFBhZ2luYXRpb25gLlxyXG5cdCAqL1xyXG5cdHVwZGF0ZVBhZ2VEYXRhKHJlc3BvbnNlOiBQYWdpbmF0aW9uKTogdm9pZCB7XHJcblx0XHR0aGlzLl9kYXRhUGFnaW5hdGlvbi5zZXQoeyAuLi5yZXNwb25zZSwgY2FsbGVkOiB0cnVlIH0pXHJcblx0XHR0aGlzLl9maW5pc2hlZCA9IChyZXNwb25zZS5wYWdlID09IHJlc3BvbnNlLnBhZ2VzKVxyXG5cdFx0dGhpcy5fd2FpdGluZyA9IGZhbHNlO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBNYXJjYSBlbCBmaW5hbCBkZSBsYXMgcGFnaW5hcywgZXMgZGVjaXIgY3VhbmRvIHlhIG5vIHF1ZWRhIG1hcyBlbGVtZW50b3MgcXVlIG1vc3RyYXIuXHJcblx0ICogQHBhcmFtIHJlc3BvbnNlIFxyXG5cdCAqL1xyXG5cdGZpbmlzaChyZXNwb25zZTogUGFnaW5hdGlvbik6IHZvaWQge1xyXG5cdFx0dGhpcy5fZmluaXNoZWQgPSB0cnVlO1xyXG5cdFx0dGhpcy5fd2FpdGluZyA9IGZhbHNlO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBPYnRlbmdvIGxvcyBwcm9kdWN0b3MgZGUgbGEgcGFnaW5hIGNhcmdhZGEgYWN0dWFsLiBcclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRwdWJsaWMgZ2V0TmV4dFByb2R1Y3RzKCk6IFByb2R1Y3RbXSB7XHJcblx0XHRyZXR1cm4gdGhpcy5fbmV4dFByb2R1Y3RzU3ViamVjdC52YWx1ZTtcclxuXHR9XHJcblx0LyoqXHJcblx0ICogRGV2dWVsdmUgc2kgZXN0YSBlc3BlcmFuZG8gbyBubyBsYSBwZXRpY2nDs24gYWwgYmFja2VuZC5cclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRwdWJsaWMgZ2V0V2FpdGluZygpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuX3dhaXRpbmc7IH1cclxuXHQvKipcclxuXHQgKiBTZXRlYSBsYSB2YXJpYWJsZSB3YWl0aW5nLlxyXG5cdCAqIEBwYXJhbSB2YWx1ZSBcclxuXHQgKi9cclxuXHRwdWJsaWMgc2V0V2FpdGluZyh2YWx1ZTogYm9vbGVhbik6IHZvaWQgeyB0aGlzLl93YWl0aW5nID0gdmFsdWUgfVxyXG5cdC8qKlxyXG5cdCAqIEdldHRlciBwYXJhIGxhIHZhcmlhYmxlIGBfZmluaXNoZWRgLlxyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBnZXRGaW5pc2hlZCgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuX2ZpbmlzaGVkOyB9XHJcblx0LyoqXHJcblx0ICogRGV2dWVsdmUgZWwgdG90YWwgZGUgSXRlbXMuXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0cHVibGljIGdldFRvdGFsSXRlbXMoKTogbnVtYmVyIHtcclxuXHRcdHJldHVybiB0aGlzLl9kYXRhUGFnaW5hdGlvbigpLmxpbWl0ICogdGhpcy5fZGF0YVBhZ2luYXRpb24oKS5wYWdlO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBPYnRlbmdvIHVuIG9iamVjdG8gY29uIGxvcyBkYXRvcyBkZSBsb3MgZmlsdHJvcyByZXN1bHRhbnRlcy5cclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRwdWJsaWMgZ2V0RmlsdGVyc1BhZ2luYXRpb24oKTogYW55IHtcclxuXHRcdHJldHVybiB7XHJcblx0XHRcdFwiY2F0ZWdvcmllc1wiOiB0aGlzLl9kYXRhUGFnaW5hdGlvbigpLmNhdGVnb3J5LFxyXG5cdFx0XHRcImF0dHJpYnV0ZXNcIjogdGhpcy5fZGF0YVBhZ2luYXRpb24oKS5hdHRyaWJ1dGVzLFxyXG5cdFx0XHRcIm9wdGlvbnNcIjogdGhpcy5fZGF0YVBhZ2luYXRpb24oKS5vcHRpb25zXHJcblx0XHR9XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIFBhcmEgY29udHJ1aXN0ZSBsYSB1cmwgZW4gYmFzZSBhIGxvcyBmaWx0cm9zIGFwbGljYWRvcy5cclxuXHQgKiBAcGFyYW0gZmlsdGVycyBcclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRwdWJsaWMgYnVpbGRVcmwoZmlsdGVyczogRmlsdGVyW10pIHtcclxuXHRcdHJldHVybiB0aGlzLl9maWx0ZXJzU2VydmljZS5nZW5lcmF0ZUZpbmFsQXBpKCk7XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIERldnVlbHZlIHVuIG9ic2VydmFibGUgZGUgbG9zIHByb2R1Y3RvcyBxdWUgZGV2b2x2aW8gbGEgw7psdGltYSBww6FnaW5hIG9idGVuaWRhLlxyXG5cdCAqIEBwYXJhbSB1cmwgXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0cHVibGljIGdldERhdGEodXJsOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cdFx0dGhpcy5fcmVzZXRTdWJqZWN0Lm5leHQodHJ1ZSk7XHJcblx0XHR0aGlzLl9uZXh0UHJvZHVjdHNTdWJqZWN0Lm5leHQoW10pO1xyXG5cdFx0dGhpcy5fY29ubmVjdGlvblNlcnZpY2UuZ2V0KHVybCwgeyBsaW1pdDogMTAsIHBhZ2U6IDEgfSkucGlwZShcclxuXHRcdFx0bWFwKHJlcyA9PnsgXHJcblx0XHRcdFx0Ly9jb25zb2xlLmxvZyhyZXMpXHJcblx0XHRcdFx0dGhpcy5fbmV4dFByb2R1Y3RzU3ViamVjdC5uZXh0KHJlcy5pdGVtcyk7XHJcblx0XHRcdFx0cmVzLmxpbmtzID8gdGhpcy51cGRhdGVQYWdlRGF0YShyZXMpIDogdGhpcy5maW5pc2gocmVzKVxyXG5cdFx0XHR9KSkuc3Vic2NyaWJlKCk7XHJcblxyXG5cdFx0cmV0dXJuIHRoaXMubmV4dFByb2R1Y3RzJDtcclxuXHR9XHJcbn1cclxuXHJcbiJdfQ==
170
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLXNlcnZpY2VzL3BhZ2luYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsR0FBRyxFQUFjLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFaEYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDOztBQUVuRDs7O0dBR0c7QUFJSCxNQUFNLE9BQU8saUJBQWlCO0lBRXJCLGtCQUFrQixHQUFzQixNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUNsRSxlQUFlLEdBQW1CLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQTtJQUN6RCxlQUFlLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUMxRCxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQ2QsU0FBUyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7UUFDckIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNuQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBQyxHQUFHLENBQUMsQ0FBQztRQUN2QixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDMUIsQ0FBQyxDQUFDLENBQ0YsQ0FBQTtJQUVPLGVBQWUsR0FBUSxNQUFNLENBQWE7UUFDakQsVUFBVSxFQUFFLEVBQUU7UUFDZCxRQUFRLEVBQUUsRUFBRTtRQUNaLE9BQU8sRUFBRSxFQUFF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dCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb25uZWN0aW9uU2VydmljZSB9IGZyb20gJy4uL2FwaSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgbWFwLCBPYnNlcnZhYmxlLCBzaGFyZVJlcGxheSwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFBhZ2luYXRpb24sIFByb2R1Y3QgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgRmlsdGVyc1NlcnZpY2UgfSBmcm9tICcuL2ZpbHRlcnMuc2VydmljZSc7XHJcbmltcG9ydCB7IEZpbHRlciB9IGZyb20gJy4uL2NsYXNzZXMnO1xyXG4vKipcclxuICogU2VydmljaW8gcGFyYSBtYW5lamFyIGxhIHBhZ2luYWNpw7NuIGRlIGxvcyBwcm9kdWN0b3MuXHJcbiAqIEBjbGFzcyBQYWdpbmF0aW9uU2VydmljZVxyXG4gKi9cclxuQEluamVjdGFibGUoe1xyXG5cdHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgUGFnaW5hdGlvblNlcnZpY2Uge1xyXG5cclxuXHRwcml2YXRlIF9jb25uZWN0aW9uU2VydmljZTogQ29ubmVjdGlvblNlcnZpY2UgPSBpbmplY3QoQ29ubmVjdGlvblNlcnZpY2UpO1xyXG5cdHByaXZhdGUgX2ZpbHRlcnNTZXJ2aWNlOiBGaWx0ZXJzU2VydmljZSA9IGluamVjdChGaWx0ZXJzU2VydmljZSlcclxuXHRwdWJsaWMgcGFnaW5hdGlvbkRhdGEkID0gdGhpcy5fZmlsdGVyc1NlcnZpY2UuZmlsdGVycyQucGlwZShcclxuXHRcdHNoYXJlUmVwbGF5KDEpLFxyXG5cdFx0c3dpdGNoTWFwKChmaWx0ZXJzKSA9PiB7XHJcblx0XHRcdGNvbnN0IHVybCA9IHRoaXMuYnVpbGRVcmwoZmlsdGVycyk7XHJcblx0XHRcdGNvbnNvbGUubG9nKFwicGFnXCIsdXJsKTtcclxuXHRcdFx0cmV0dXJuIHRoaXMuZ2V0RGF0YSh1cmwpO1xyXG5cdFx0fSlcclxuXHQpXHJcblxyXG5cdHByaXZhdGUgX2RhdGFQYWdpbmF0aW9uOiBhbnkgPSBzaWduYWw8UGFnaW5hdGlvbj4oe1xyXG5cdFx0YXR0cmlidXRlczogW10sXHJcblx0XHRjYXRlZ29yeTogW10sXHJcblx0XHRvcHRpb25zOiBbXSxcclxuXHRcdGxpbWl0OiAwLFxyXG5cdFx0cGFnZTogMCxcclxuXHRcdHBhZ2VzOiAwLFxyXG5cdFx0dG90YWw6IDAsXHJcblx0XHRpdGVtczogW10sXHJcblx0XHRjYWxsZWQ6IGZhbHNlXHJcblx0fSk7XHJcblxyXG5cdHByaXZhdGUgX3dhaXRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRwcml2YXRlIF9maW5pc2hlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cdHByaXZhdGUgX2FwaVVybDogc3RyaW5nID0gJyc7XHJcblx0cHJpdmF0ZSBfc3RhcnQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcblx0cHJpdmF0ZSBfbmV4dFByb2R1Y3RzU3ViamVjdDogQmVoYXZpb3JTdWJqZWN0PFByb2R1Y3RbXT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFByb2R1Y3RbXT4oW10pO1xyXG5cdHB1YmxpYyBuZXh0UHJvZHVjdHMkID0gdGhpcy5fbmV4dFByb2R1Y3RzU3ViamVjdC5hc09ic2VydmFibGUoKTtcclxuXHJcblx0cHJpdmF0ZSBfcmVzZXRTdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuXHRwdWJsaWMgcmVzZXQkID0gdGhpcy5fcmVzZXRTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuXHRwcml2YXRlIHByaWNlUmFuZ2VTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDx7IHByaWNlX21pbjogbnVtYmVyLCBwcmljZV9tYXg6IG51bWJlciB9Pih7IHByaWNlX21pbjogMCwgcHJpY2VfbWF4OiAwIH0pO1xyXG5cdHB1YmxpYyBwcmljZVJhbmdlJCA9IHRoaXMucHJpY2VSYW5nZVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XHJcblx0XHJcblx0Y29uc3RydWN0b3IoKSB7IH1cclxuXHJcblx0LyoqXHJcblx0ICogSW5pY2lhbGl6YSBsYSBjb25maWd1cmFjacOzbiBwYXJhIGVsIFNlcnZpY2lvIGRlIFBhZ2luYWNpw7NuLlxyXG5cdCAqIEBwYXJhbSBhcGlVcmwgVXJsIGNvbiBsb3MgZmlsdHJvcyBhcGxpY2Fkb3MuIFxyXG5cdCAqIEBwYXJhbSBsaW1pdCBsaW1pdGUgZGUgcHJvZHVjdG9zIGVuIGNhZGEgcGV0aWNpw7NuLlxyXG5cdCAqL1xyXG5cdGluaXRpYWxpemUoYXBpVXJsOiBzdHJpbmcsIGxpbWl0PzogbnVtYmVyKSB7XHJcblx0XHQvL2NvbnNvbGUubG9nKGFwaVVybClcclxuXHRcdHRoaXMuX2FwaVVybCA9IGFwaVVybDtcclxuXHRcdHRoaXMuX2RhdGFQYWdpbmF0aW9uKCkubGltaXQgPSBsaW1pdCB8fCB0aGlzLl9kYXRhUGFnaW5hdGlvbigpLmxpbWl0IHx8IDEwO1xyXG5cdFx0dGhpcy5fZmluaXNoZWQgPSBmYWxzZTtcclxuXHRcdHRoaXMuX3N0YXJ0ID0gdHJ1ZTtcclxuXHRcdHRoaXMuX25leHRQcm9kdWN0c1N1YmplY3QubmV4dChbXSk7XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIE9idGVuZ28gbG9zIGRhdG9zIGRlIGxhIHNpZ3VpZW50ZSBww6FnaW5hLlxyXG5cdCAqIEBwYXJhbSBuZXh0IFxyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdGdldE5leHQobmV4dD86IGFueSk6IGJvb2xlYW4ge1xyXG5cdFx0dGhpcy5fd2FpdGluZyA9IHRydWU7XHJcblx0XHR0aGlzLl9uZXh0UHJvZHVjdHNTdWJqZWN0Lm5leHQoW10pO1xyXG5cdFx0dGhpcy5fYXBpVXJsID0gdGhpcy5fYXBpVXJsLnJlcGxhY2UoJyUyMCcsICcgJyk7Ly8gbWFzIHBhcmEgY3VhbmRvIGVzIHVuIHNlYXJjaCB2YWx1ZS5cclxuXHRcdGxldCBuZXh0UHJvZHVjdHM7XHJcblx0XHRpZiAodGhpcy5fc3RhcnQpIHtcclxuXHRcdFx0bmV4dFByb2R1Y3RzID0gdGhpcy5fY29ubmVjdGlvblNlcnZpY2UuZ2V0KHRoaXMuX2FwaVVybCwgeyBsaW1pdDogdGhpcy5fZGF0YVBhZ2luYXRpb24oKS5saW1pdCwgcGFnZTogMSB9KVxyXG5cdFx0XHR0aGlzLl9zdGFydCA9IGZhbHNlXHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRuZXh0UHJvZHVjdHMgPSB0aGlzLl9jb25uZWN0aW9uU2VydmljZS5nZXQodGhpcy5fZGF0YVBhZ2luYXRpb24oKS5saW5rcy5uZXh0LnNsaWNlKDEpKTtcclxuXHRcdH1cclxuXHJcblx0XHQhdGhpcy5fZmluaXNoZWQgJiYgbmV4dFByb2R1Y3RzLnN1YnNjcmliZShcclxuXHRcdFx0KHJlc3BvbnNlOiBQYWdpbmF0aW9uKSA9PiB7XHJcblx0XHRcdFx0cmVzcG9uc2UubGlua3MgPyB0aGlzLnVwZGF0ZVBhZ2VEYXRhKHJlc3BvbnNlKSA6IHRoaXMuZmluaXNoKHJlc3BvbnNlKVxyXG5cdFx0XHRcdHRoaXMuX25leHRQcm9kdWN0c1N1YmplY3QubmV4dChyZXNwb25zZS5pdGVtcyk7XHJcblx0XHRcdH1cclxuXHRcdClcclxuXHRcdHJldHVybiB0cnVlO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBBY3R1YWxpemEgbG9zIGRhdG9zIGRlIGxhIHBhZ2luYS5cclxuXHQgKiBAcGFyYW0gcmVzcG9uc2UgcmVzcHVlc3RhIGRlbCBiYWNrZW5kIG8gb2JqZWN0byBkZWwgdGlwbyBgUGFnaW5hdGlvbmAuXHJcblx0ICovXHJcblx0dXBkYXRlUGFnZURhdGEocmVzcG9uc2U6IFBhZ2luYXRpb24pOiB2b2lkIHtcclxuXHRcdHRoaXMuX2RhdGFQYWdpbmF0aW9uLnNldCh7IC4uLnJlc3BvbnNlLCBjYWxsZWQ6IHRydWUgfSlcclxuXHRcdHRoaXMuX2ZpbmlzaGVkID0gKHJlc3BvbnNlLnBhZ2UgPT0gcmVzcG9uc2UucGFnZXMpXHJcblx0XHR0aGlzLl93YWl0aW5nID0gZmFsc2U7XHJcblx0XHQgLy8gRW1pdGlyIGxvcyB2YWxvcmVzIGRlIHByaWNlX21pbiB5IHByaWNlX21heCBhIHRyYXbDqXMgZGUgcHJpY2VSYW5nZVN1YmplY3RcclxuICAgICAgICAvLyB0aGlzLnByaWNlUmFuZ2VTdWJqZWN0Lm5leHQoe1xyXG4gICAgICAgIC8vICAgICBwcmljZV9taW46IHJlc3BvbnNlLnByaWNlX21pbixcclxuICAgICAgICAvLyAgICAgcHJpY2VfbWF4OiByZXNwb25zZS5wcmljZV9tYXhcclxuICAgICAgICAvLyB9KTtcclxuXHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIE1hcmNhIGVsIGZpbmFsIGRlIGxhcyBwYWdpbmFzLCBlcyBkZWNpciBjdWFuZG8geWEgbm8gcXVlZGEgbWFzIGVsZW1lbnRvcyBxdWUgbW9zdHJhci5cclxuXHQgKiBAcGFyYW0gcmVzcG9uc2UgXHJcblx0ICovXHJcblx0ZmluaXNoKHJlc3BvbnNlOiBQYWdpbmF0aW9uKTogdm9pZCB7XHJcblx0XHR0aGlzLl9maW5pc2hlZCA9IHRydWU7XHJcblx0XHR0aGlzLl93YWl0aW5nID0gZmFsc2U7XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIE9idGVuZ28gbG9zIHByb2R1Y3RvcyBkZSBsYSBwYWdpbmEgY2FyZ2FkYSBhY3R1YWwuIFxyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBnZXROZXh0UHJvZHVjdHMoKTogUHJvZHVjdFtdIHtcclxuXHRcdHJldHVybiB0aGlzLl9uZXh0UHJvZHVjdHNTdWJqZWN0LnZhbHVlO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBEZXZ1ZWx2ZSBzaSBlc3RhIGVzcGVyYW5kbyBvIG5vIGxhIHBldGljacOzbiBhbCBiYWNrZW5kLlxyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBnZXRXYWl0aW5nKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5fd2FpdGluZzsgfVxyXG5cdC8qKlxyXG5cdCAqIFNldGVhIGxhIHZhcmlhYmxlIHdhaXRpbmcuXHJcblx0ICogQHBhcmFtIHZhbHVlIFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBzZXRXYWl0aW5nKHZhbHVlOiBib29sZWFuKTogdm9pZCB7IHRoaXMuX3dhaXRpbmcgPSB2YWx1ZSB9XHJcblx0LyoqXHJcblx0ICogR2V0dGVyIHBhcmEgbGEgdmFyaWFibGUgYF9maW5pc2hlZGAuXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0cHVibGljIGdldEZpbmlzaGVkKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5fZmluaXNoZWQ7IH1cclxuXHQvKipcclxuXHQgKiBEZXZ1ZWx2ZSBlbCB0b3RhbCBkZSBJdGVtcy5cclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRwdWJsaWMgZ2V0VG90YWxJdGVtcygpOiBudW1iZXIge1xyXG5cdFx0cmV0dXJuIHRoaXMuX2RhdGFQYWdpbmF0aW9uKCkubGltaXQgKiB0aGlzLl9kYXRhUGFnaW5hdGlvbigpLnBhZ2U7XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIE9idGVuZ28gdW4gb2JqZWN0byBjb24gbG9zIGRhdG9zIGRlIGxvcyBmaWx0cm9zIHJlc3VsdGFudGVzLlxyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBnZXRGaWx0ZXJzUGFnaW5hdGlvbigpOiBhbnkge1xyXG5cdFx0cmV0dXJuIHtcclxuXHRcdFx0XCJjYXRlZ29yaWVzXCI6IHRoaXMuX2RhdGFQYWdpbmF0aW9uKCkuY2F0ZWdvcnksXHJcblx0XHRcdFwiYXR0cmlidXRlc1wiOiB0aGlzLl9kYXRhUGFnaW5hdGlvbigpLmF0dHJpYnV0ZXMsXHJcblx0XHRcdFwib3B0aW9uc1wiOiB0aGlzLl9kYXRhUGFnaW5hdGlvbigpLm9wdGlvbnNcclxuXHRcdH1cclxuXHR9XHJcblx0LyoqXHJcblx0ICogUGFyYSBjb250cnVpc3RlIGxhIHVybCBlbiBiYXNlIGEgbG9zIGZpbHRyb3MgYXBsaWNhZG9zLlxyXG5cdCAqIEBwYXJhbSBmaWx0ZXJzIFxyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBidWlsZFVybChmaWx0ZXJzOiBGaWx0ZXJbXSkge1xyXG5cdFx0cmV0dXJuIHRoaXMuX2ZpbHRlcnNTZXJ2aWNlLmdlbmVyYXRlRmluYWxBcGkoKTtcclxuXHR9XHJcblx0LyoqXHJcblx0ICogRGV2dWVsdmUgdW4gb2JzZXJ2YWJsZSBkZSBsb3MgcHJvZHVjdG9zIHF1ZSBkZXZvbHZpbyBsYSDDumx0aW1hIHDDoWdpbmEgb2J0ZW5pZGEuXHJcblx0ICogQHBhcmFtIHVybCBcclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRwdWJsaWMgZ2V0RGF0YSh1cmw6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHR0aGlzLl9yZXNldFN1YmplY3QubmV4dCh0cnVlKTtcclxuXHRcdHRoaXMuX25leHRQcm9kdWN0c1N1YmplY3QubmV4dChbXSk7XHJcblx0XHR0aGlzLl9jb25uZWN0aW9uU2VydmljZS5nZXQodXJsLCB7IGxpbWl0OiAxMCwgcGFnZTogMSB9KS5waXBlKFxyXG5cdFx0XHRtYXAocmVzID0+eyBcclxuXHRcdFx0XHQvL2NvbnNvbGUubG9nKHJlcylcclxuXHRcdFx0XHR0aGlzLl9uZXh0UHJvZHVjdHNTdWJqZWN0Lm5leHQocmVzLml0ZW1zKTtcclxuXHRcdFx0XHRyZXMubGlua3MgPyB0aGlzLnVwZGF0ZVBhZ2VEYXRhKHJlcykgOiB0aGlzLmZpbmlzaChyZXMpXHJcblx0XHRcdH0pKS5zdWJzY3JpYmUoKTtcclxuXHJcblx0XHRyZXR1cm4gdGhpcy5uZXh0UHJvZHVjdHMkO1xyXG5cdH1cclxufVxyXG5cclxuIl19