@infrab4a/connect-angular 4.0.0-beta.35 → 4.0.0-beta.37

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 (94) hide show
  1. package/angular-connect.module.d.ts +21 -21
  2. package/angular-elastic-search.module.d.ts +9 -9
  3. package/angular-firebase-auth.module.d.ts +12 -12
  4. package/angular-firestore.module.d.ts +18 -18
  5. package/angular-hasura-graphql.module.d.ts +16 -16
  6. package/consts/backend-url.const.d.ts +1 -1
  7. package/consts/category-structure.d.ts +1 -1
  8. package/consts/default-shop.const.d.ts +1 -1
  9. package/consts/es-config.const.d.ts +1 -1
  10. package/consts/firebase-const.d.ts +3 -3
  11. package/consts/hasura-options.const.d.ts +1 -1
  12. package/consts/index.d.ts +6 -6
  13. package/esm2020/angular-connect.module.mjs +63 -63
  14. package/esm2020/angular-elastic-search.module.mjs +34 -34
  15. package/esm2020/angular-firebase-auth.module.mjs +130 -130
  16. package/esm2020/angular-firestore.module.mjs +447 -447
  17. package/esm2020/angular-hasura-graphql.module.mjs +219 -219
  18. package/esm2020/consts/backend-url.const.mjs +1 -1
  19. package/esm2020/consts/category-structure.mjs +2 -2
  20. package/esm2020/consts/default-shop.const.mjs +2 -2
  21. package/esm2020/consts/es-config.const.mjs +2 -2
  22. package/esm2020/consts/firebase-const.mjs +4 -4
  23. package/esm2020/consts/hasura-options.const.mjs +2 -2
  24. package/esm2020/consts/index.mjs +7 -7
  25. package/esm2020/index.mjs +6 -6
  26. package/esm2020/infrab4a-connect-angular.mjs +4 -4
  27. package/esm2020/services/auth.service.mjs +37 -37
  28. package/esm2020/services/cart.service.mjs +281 -281
  29. package/esm2020/services/catalog/adapters/category-structure.adapter.mjs +2 -2
  30. package/esm2020/services/catalog/adapters/index.mjs +4 -4
  31. package/esm2020/services/catalog/adapters/new-category-structure.adapter.mjs +42 -42
  32. package/esm2020/services/catalog/adapters/old-category-structure.adapter.mjs +23 -23
  33. package/esm2020/services/catalog/catalog.service.mjs +96 -96
  34. package/esm2020/services/catalog/category.service.mjs +56 -56
  35. package/esm2020/services/catalog/enums/index.mjs +2 -2
  36. package/esm2020/services/catalog/enums/product-sorts.enum.mjs +11 -11
  37. package/esm2020/services/catalog/index.mjs +6 -6
  38. package/esm2020/services/catalog/models/category-with-tree.model.mjs +10 -10
  39. package/esm2020/services/catalog/models/index.mjs +2 -2
  40. package/esm2020/services/catalog/types/index.mjs +2 -2
  41. package/esm2020/services/catalog/types/product-sort.type.mjs +2 -2
  42. package/esm2020/services/checkout-subscription.service.mjs +53 -53
  43. package/esm2020/services/checkout.service.mjs +71 -73
  44. package/esm2020/services/coupon.service.mjs +214 -210
  45. package/esm2020/services/home-shop.service.mjs +114 -114
  46. package/esm2020/services/index.mjs +10 -10
  47. package/esm2020/services/order.service.mjs +30 -30
  48. package/esm2020/services/shipping.service.mjs +96 -96
  49. package/esm2020/services/types/index.mjs +3 -3
  50. package/esm2020/services/types/required-checkout-data.type.mjs +2 -2
  51. package/esm2020/services/types/required-checkout-subscription-data.type.mjs +2 -2
  52. package/esm2020/services/types/shipping-methods.type.mjs +2 -2
  53. package/esm2020/types/firebase-app-config.type.mjs +2 -2
  54. package/esm2020/types/index.mjs +2 -2
  55. package/fesm2015/infrab4a-connect-angular.mjs +1926 -1932
  56. package/fesm2015/infrab4a-connect-angular.mjs.map +1 -1
  57. package/fesm2020/infrab4a-connect-angular.mjs +1868 -1879
  58. package/fesm2020/infrab4a-connect-angular.mjs.map +1 -1
  59. package/index.d.ts +5 -5
  60. package/package.json +2 -2
  61. package/services/auth.service.d.ts +18 -18
  62. package/services/cart.service.d.ts +42 -42
  63. package/services/catalog/adapters/category-structure.adapter.d.ts +4 -4
  64. package/services/catalog/adapters/index.d.ts +3 -3
  65. package/services/catalog/adapters/new-category-structure.adapter.d.ts +14 -14
  66. package/services/catalog/adapters/old-category-structure.adapter.d.ts +10 -10
  67. package/services/catalog/catalog.service.d.ts +54 -54
  68. package/services/catalog/category.service.d.ts +15 -15
  69. package/services/catalog/enums/index.d.ts +1 -1
  70. package/services/catalog/enums/product-sorts.enum.d.ts +9 -9
  71. package/services/catalog/index.d.ts +5 -5
  72. package/services/catalog/models/category-with-tree.model.d.ts +4 -4
  73. package/services/catalog/models/index.d.ts +1 -1
  74. package/services/catalog/types/index.d.ts +1 -1
  75. package/services/catalog/types/product-sort.type.d.ts +2 -2
  76. package/services/checkout-subscription.service.d.ts +18 -18
  77. package/services/checkout.service.d.ts +23 -23
  78. package/services/coupon.service.d.ts +28 -24
  79. package/services/home-shop.service.d.ts +25 -25
  80. package/services/index.d.ts +9 -9
  81. package/services/order.service.d.ts +13 -13
  82. package/services/shipping.service.d.ts +19 -19
  83. package/services/types/index.d.ts +2 -2
  84. package/services/types/required-checkout-data.type.d.ts +2 -2
  85. package/services/types/required-checkout-subscription-data.type.d.ts +2 -2
  86. package/services/types/shipping-methods.type.d.ts +12 -12
  87. package/types/firebase-app-config.type.d.ts +1 -1
  88. package/types/index.d.ts +1 -1
  89. package/esm2020/services/errors/group-invalid-coupon.error.mjs +0 -8
  90. package/esm2020/services/errors/index.mjs +0 -3
  91. package/esm2020/services/errors/invalid-coupon.error.mjs +0 -7
  92. package/services/errors/group-invalid-coupon.error.d.ts +0 -6
  93. package/services/errors/index.d.ts +0 -2
  94. package/services/errors/invalid-coupon.error.d.ts +0 -4
@@ -1,37 +1,37 @@
1
- import { Inject, Injectable } from '@angular/core';
2
- import { Auth, authState, getIdToken } from '@angular/fire/auth';
3
- import { combineLatest, from, of } from 'rxjs';
4
- import { catchError, map, mergeMap } from 'rxjs/operators';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "@angular/fire/auth";
7
- export class AuthService {
8
- constructor(angularFireAuth, userRepository) {
9
- this.angularFireAuth = angularFireAuth;
10
- this.userRepository = userRepository;
11
- }
12
- getAuthstate() {
13
- const observables = [this.getFireUser(), this.getUser()];
14
- return combineLatest(observables).pipe(map(([fireUser, user]) => ({
15
- user,
16
- isAnonymous: fireUser?.isAnonymous,
17
- })));
18
- }
19
- getUser() {
20
- return this.getFireUser().pipe(map((user) => user?.uid), mergeMap((id) => (id ? from(this.userRepository.get({ id })).pipe(catchError(() => of(null))) : of(null))));
21
- }
22
- getTokenId() {
23
- return from(getIdToken(this.angularFireAuth.currentUser));
24
- }
25
- getFireUser() {
26
- return authState(this.angularFireAuth).pipe(catchError(() => of(null)));
27
- }
28
- }
29
- AuthService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: AuthService, deps: [{ token: i1.Auth }, { token: 'UserRepository' }], target: i0.ɵɵFactoryTarget.Injectable });
30
- AuthService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: AuthService });
31
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: AuthService, decorators: [{
32
- type: Injectable
33
- }], ctorParameters: function () { return [{ type: i1.Auth }, { type: undefined, decorators: [{
34
- type: Inject,
35
- args: ['UserRepository']
36
- }] }]; } });
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29ubmVjdC1hbmd1bGFyL3NyYy9zZXJ2aWNlcy9hdXRoLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDbEQsT0FBTyxFQUFFLElBQUksRUFBd0IsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBRXRGLE9BQU8sRUFBYyxhQUFhLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUMxRCxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTs7O0FBRzFELE1BQU0sT0FBTyxXQUFXO0lBQ3RCLFlBQ21CLGVBQXFCLEVBQ0ssY0FBOEI7UUFEeEQsb0JBQWUsR0FBZixlQUFlLENBQU07UUFDSyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7SUFDeEUsQ0FBQztJQUVKLFlBQVk7UUFDVixNQUFNLFdBQVcsR0FBaUQsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUE7UUFFdEcsT0FBTyxhQUFhLENBQUMsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUNwQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUN6QixJQUFJO1lBQ0osV0FBVyxFQUFFLFFBQVEsRUFBRSxXQUFXO1NBQ25DLENBQUMsQ0FBQyxDQUNKLENBQUE7SUFDSCxDQUFDO0lBRUQsT0FBTztRQUNMLE9BQU8sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLElBQUksQ0FDNUIsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQ3hCLFFBQVEsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQzNHLENBQUE7SUFDSCxDQUFDO0lBRUQsVUFBVTtRQUNSLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUE7SUFDM0QsQ0FBQztJQUVELFdBQVc7UUFDVCxPQUFPLFNBQVMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ3pFLENBQUM7O3dHQTlCVSxXQUFXLHNDQUdaLGdCQUFnQjs0R0FIZixXQUFXOzJGQUFYLFdBQVc7a0JBRHZCLFVBQVU7OzBCQUlOLE1BQU07MkJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IEF1dGgsIFVzZXIgYXMgRmlyZWJhc2VVc2VyLCBhdXRoU3RhdGUsIGdldElkVG9rZW4gfSBmcm9tICdAYW5ndWxhci9maXJlL2F1dGgnXG5pbXBvcnQgeyBVc2VyLCBVc2VyUmVwb3NpdG9yeSB9IGZyb20gJ0BpbmZyYWI0YS9jb25uZWN0J1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgY29tYmluZUxhdGVzdCwgZnJvbSwgb2YgfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwLCBtZXJnZU1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQXV0aFNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFuZ3VsYXJGaXJlQXV0aDogQXV0aCxcbiAgICBASW5qZWN0KCdVc2VyUmVwb3NpdG9yeScpIHByaXZhdGUgcmVhZG9ubHkgdXNlclJlcG9zaXRvcnk6IFVzZXJSZXBvc2l0b3J5LFxuICApIHt9XG5cbiAgZ2V0QXV0aHN0YXRlKCk6IE9ic2VydmFibGU8eyB1c2VyOiBVc2VyOyBpc0Fub255bW91czogYm9vbGVhbiB9PiB7XG4gICAgY29uc3Qgb2JzZXJ2YWJsZXM6IFtPYnNlcnZhYmxlPEZpcmViYXNlVXNlcj4sIE9ic2VydmFibGU8VXNlcj5dID0gW3RoaXMuZ2V0RmlyZVVzZXIoKSwgdGhpcy5nZXRVc2VyKCldXG5cbiAgICByZXR1cm4gY29tYmluZUxhdGVzdChvYnNlcnZhYmxlcykucGlwZShcbiAgICAgIG1hcCgoW2ZpcmVVc2VyLCB1c2VyXSkgPT4gKHtcbiAgICAgICAgdXNlcixcbiAgICAgICAgaXNBbm9ueW1vdXM6IGZpcmVVc2VyPy5pc0Fub255bW91cyxcbiAgICAgIH0pKSxcbiAgICApXG4gIH1cblxuICBnZXRVc2VyKCk6IE9ic2VydmFibGU8VXNlcj4ge1xuICAgIHJldHVybiB0aGlzLmdldEZpcmVVc2VyKCkucGlwZShcbiAgICAgIG1hcCgodXNlcikgPT4gdXNlcj8udWlkKSxcbiAgICAgIG1lcmdlTWFwKChpZCkgPT4gKGlkID8gZnJvbSh0aGlzLnVzZXJSZXBvc2l0b3J5LmdldCh7IGlkIH0pKS5waXBlKGNhdGNoRXJyb3IoKCkgPT4gb2YobnVsbCkpKSA6IG9mKG51bGwpKSksXG4gICAgKVxuICB9XG5cbiAgZ2V0VG9rZW5JZCgpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIHJldHVybiBmcm9tKGdldElkVG9rZW4odGhpcy5hbmd1bGFyRmlyZUF1dGguY3VycmVudFVzZXIpKVxuICB9XG5cbiAgZ2V0RmlyZVVzZXIoKTogT2JzZXJ2YWJsZTxGaXJlYmFzZVVzZXI+IHtcbiAgICByZXR1cm4gYXV0aFN0YXRlKHRoaXMuYW5ndWxhckZpcmVBdXRoKS5waXBlKGNhdGNoRXJyb3IoKCkgPT4gb2YobnVsbCkpKVxuICB9XG59XG4iXX0=
1
+ import { Inject, Injectable } from '@angular/core';
2
+ import { Auth, authState, getIdToken } from '@angular/fire/auth';
3
+ import { combineLatest, from, of } from 'rxjs';
4
+ import { catchError, map, mergeMap } from 'rxjs/operators';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/fire/auth";
7
+ export class AuthService {
8
+ constructor(angularFireAuth, userRepository) {
9
+ this.angularFireAuth = angularFireAuth;
10
+ this.userRepository = userRepository;
11
+ }
12
+ getAuthstate() {
13
+ const observables = [this.getFireUser(), this.getUser()];
14
+ return combineLatest(observables).pipe(map(([fireUser, user]) => ({
15
+ user,
16
+ isAnonymous: fireUser?.isAnonymous,
17
+ })));
18
+ }
19
+ getUser() {
20
+ return this.getFireUser().pipe(map((user) => user?.uid), mergeMap((id) => (id ? from(this.userRepository.get({ id })).pipe(catchError(() => of(null))) : of(null))));
21
+ }
22
+ getTokenId() {
23
+ return from(getIdToken(this.angularFireAuth.currentUser));
24
+ }
25
+ getFireUser() {
26
+ return authState(this.angularFireAuth).pipe(catchError(() => of(null)));
27
+ }
28
+ }
29
+ AuthService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: AuthService, deps: [{ token: i1.Auth }, { token: 'UserRepository' }], target: i0.ɵɵFactoryTarget.Injectable });
30
+ AuthService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: AuthService });
31
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: AuthService, decorators: [{
32
+ type: Injectable
33
+ }], ctorParameters: function () { return [{ type: i1.Auth }, { type: undefined, decorators: [{
34
+ type: Inject,
35
+ args: ['UserRepository']
36
+ }] }]; } });
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29ubmVjdC1hbmd1bGFyL3NyYy9zZXJ2aWNlcy9hdXRoLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDbEQsT0FBTyxFQUFFLElBQUksRUFBd0IsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBRXRGLE9BQU8sRUFBYyxhQUFhLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUMxRCxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTs7O0FBRzFELE1BQU0sT0FBTyxXQUFXO0lBQ3RCLFlBQ21CLGVBQXFCLEVBQ0ssY0FBOEI7UUFEeEQsb0JBQWUsR0FBZixlQUFlLENBQU07UUFDSyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7SUFDeEUsQ0FBQztJQUVKLFlBQVk7UUFDVixNQUFNLFdBQVcsR0FBaUQsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUE7UUFFdEcsT0FBTyxhQUFhLENBQUMsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUNwQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUN6QixJQUFJO1lBQ0osV0FBVyxFQUFFLFFBQVEsRUFBRSxXQUFXO1NBQ25DLENBQUMsQ0FBQyxDQUNKLENBQUE7SUFDSCxDQUFDO0lBRUQsT0FBTztRQUNMLE9BQU8sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLElBQUksQ0FDNUIsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQ3hCLFFBQVEsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQzNHLENBQUE7SUFDSCxDQUFDO0lBRUQsVUFBVTtRQUNSLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUE7SUFDM0QsQ0FBQztJQUVELFdBQVc7UUFDVCxPQUFPLFNBQVMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ3pFLENBQUM7O3dHQTlCVSxXQUFXLHNDQUdaLGdCQUFnQjs0R0FIZixXQUFXOzJGQUFYLFdBQVc7a0JBRHZCLFVBQVU7OzBCQUlOLE1BQU07MkJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcclxuaW1wb3J0IHsgQXV0aCwgVXNlciBhcyBGaXJlYmFzZVVzZXIsIGF1dGhTdGF0ZSwgZ2V0SWRUb2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2ZpcmUvYXV0aCdcclxuaW1wb3J0IHsgVXNlciwgVXNlclJlcG9zaXRvcnkgfSBmcm9tICdAaW5mcmFiNGEvY29ubmVjdCdcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgY29tYmluZUxhdGVzdCwgZnJvbSwgb2YgfSBmcm9tICdyeGpzJ1xyXG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAsIG1lcmdlTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBBdXRoU2VydmljZSB7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFuZ3VsYXJGaXJlQXV0aDogQXV0aCxcclxuICAgIEBJbmplY3QoJ1VzZXJSZXBvc2l0b3J5JykgcHJpdmF0ZSByZWFkb25seSB1c2VyUmVwb3NpdG9yeTogVXNlclJlcG9zaXRvcnksXHJcbiAgKSB7fVxyXG5cclxuICBnZXRBdXRoc3RhdGUoKTogT2JzZXJ2YWJsZTx7IHVzZXI6IFVzZXI7IGlzQW5vbnltb3VzOiBib29sZWFuIH0+IHtcclxuICAgIGNvbnN0IG9ic2VydmFibGVzOiBbT2JzZXJ2YWJsZTxGaXJlYmFzZVVzZXI+LCBPYnNlcnZhYmxlPFVzZXI+XSA9IFt0aGlzLmdldEZpcmVVc2VyKCksIHRoaXMuZ2V0VXNlcigpXVxyXG5cclxuICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KG9ic2VydmFibGVzKS5waXBlKFxyXG4gICAgICBtYXAoKFtmaXJlVXNlciwgdXNlcl0pID0+ICh7XHJcbiAgICAgICAgdXNlcixcclxuICAgICAgICBpc0Fub255bW91czogZmlyZVVzZXI/LmlzQW5vbnltb3VzLFxyXG4gICAgICB9KSksXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBnZXRVc2VyKCk6IE9ic2VydmFibGU8VXNlcj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0RmlyZVVzZXIoKS5waXBlKFxyXG4gICAgICBtYXAoKHVzZXIpID0+IHVzZXI/LnVpZCksXHJcbiAgICAgIG1lcmdlTWFwKChpZCkgPT4gKGlkID8gZnJvbSh0aGlzLnVzZXJSZXBvc2l0b3J5LmdldCh7IGlkIH0pKS5waXBlKGNhdGNoRXJyb3IoKCkgPT4gb2YobnVsbCkpKSA6IG9mKG51bGwpKSksXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBnZXRUb2tlbklkKCk6IE9ic2VydmFibGU8c3RyaW5nPiB7XHJcbiAgICByZXR1cm4gZnJvbShnZXRJZFRva2VuKHRoaXMuYW5ndWxhckZpcmVBdXRoLmN1cnJlbnRVc2VyKSlcclxuICB9XHJcblxyXG4gIGdldEZpcmVVc2VyKCk6IE9ic2VydmFibGU8RmlyZWJhc2VVc2VyPiB7XHJcbiAgICByZXR1cm4gYXV0aFN0YXRlKHRoaXMuYW5ndWxhckZpcmVBdXRoKS5waXBlKGNhdGNoRXJyb3IoKCkgPT4gb2YobnVsbCkpKVxyXG4gIH1cclxufVxyXG4iXX0=