@infrab4a/connect-angular 0.13.0-beta.9 → 0.13.1

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 (65) hide show
  1. package/bundles/infrab4a-connect-angular.umd.js +1390 -1269
  2. package/bundles/infrab4a-connect-angular.umd.js.map +1 -1
  3. package/esm2015/infrab4a-connect-angular.js +4 -4
  4. package/esm2015/lib/angular-connect.module.js +46 -47
  5. package/esm2015/lib/angular-firebase-auth.module.js +113 -103
  6. package/esm2015/lib/angular-firestore.module.js +337 -343
  7. package/esm2015/lib/consts/default-shop.const.js +2 -2
  8. package/esm2015/lib/consts/index.js +2 -2
  9. package/esm2015/lib/index.js +5 -7
  10. package/esm2015/lib/services/auth.service.js +42 -45
  11. package/esm2015/lib/services/cart.service.js +166 -162
  12. package/esm2015/lib/services/checkout-subscription.service.js +68 -37
  13. package/esm2015/lib/services/checkout.service.js +79 -79
  14. package/esm2015/lib/services/coupon.service.js +70 -51
  15. package/esm2015/lib/services/errors/group-invalid-coupon.error.js +7 -0
  16. package/esm2015/lib/services/errors/index.js +3 -2
  17. package/esm2015/lib/services/errors/invalid-coupon.error.js +7 -7
  18. package/esm2015/lib/services/home-shop.service.js +107 -0
  19. package/esm2015/lib/services/index.js +8 -7
  20. package/esm2015/lib/services/order.service.js +32 -30
  21. package/esm2015/lib/services/types/index.js +3 -3
  22. package/esm2015/lib/services/types/required-checkout-data.type.js +2 -2
  23. package/esm2015/lib/services/types/required-checkout-subscription-data.type.js +2 -2
  24. package/esm2015/public-api.js +2 -2
  25. package/fesm2015/infrab4a-connect-angular.js +986 -878
  26. package/fesm2015/infrab4a-connect-angular.js.map +1 -1
  27. package/infrab4a-connect-angular.d.ts +5 -5
  28. package/lib/angular-connect.module.d.ts +12 -12
  29. package/lib/angular-firebase-auth.module.d.ts +10 -10
  30. package/lib/angular-firestore.module.d.ts +10 -9
  31. package/lib/consts/default-shop.const.d.ts +1 -1
  32. package/lib/consts/index.d.ts +1 -1
  33. package/lib/index.d.ts +4 -6
  34. package/lib/services/auth.service.d.ts +19 -21
  35. package/lib/services/cart.service.d.ts +41 -41
  36. package/lib/services/checkout-subscription.service.d.ts +18 -13
  37. package/lib/services/checkout.service.d.ts +22 -22
  38. package/lib/services/coupon.service.d.ts +14 -13
  39. package/lib/services/errors/group-invalid-coupon.error.d.ts +5 -0
  40. package/lib/services/errors/index.d.ts +2 -1
  41. package/lib/services/errors/invalid-coupon.error.d.ts +4 -4
  42. package/lib/services/home-shop.service.d.ts +24 -0
  43. package/lib/services/index.d.ts +7 -6
  44. package/lib/services/order.service.d.ts +13 -13
  45. package/lib/services/types/index.d.ts +2 -2
  46. package/lib/services/types/required-checkout-data.type.d.ts +2 -2
  47. package/lib/services/types/required-checkout-subscription-data.type.d.ts +2 -2
  48. package/package.json +4 -3
  49. package/public-api.d.ts +1 -1
  50. package/esm2015/lib/factories/firebase-app.factory.js +0 -18
  51. package/esm2015/lib/factories/firebase-auth.factory.js +0 -2
  52. package/esm2015/lib/factories/firebase-firestore.factory.js +0 -2
  53. package/esm2015/lib/factories/index.js +0 -4
  54. package/esm2015/lib/providers/firebase-app.provider.js +0 -12
  55. package/esm2015/lib/providers/firebase-auth.provider.js +0 -15
  56. package/esm2015/lib/providers/firebase-firestore.provider.js +0 -14
  57. package/esm2015/lib/providers/index.js +0 -4
  58. package/lib/factories/firebase-app.factory.d.ts +0 -4
  59. package/lib/factories/firebase-auth.factory.d.ts +0 -2
  60. package/lib/factories/firebase-firestore.factory.d.ts +0 -2
  61. package/lib/factories/index.d.ts +0 -3
  62. package/lib/providers/firebase-app.provider.d.ts +0 -17
  63. package/lib/providers/firebase-auth.provider.d.ts +0 -11
  64. package/lib/providers/firebase-firestore.provider.d.ts +0 -10
  65. package/lib/providers/index.d.ts +0 -3
@@ -1,343 +1,337 @@
1
- import { NgModule } from '@angular/core';
2
- import { Buy2WinFirestoreRepository, CategoryFirestoreRepository, CheckoutFirestoreRepository, CheckoutSubscriptionFirestoreRepository, CouponFirestoreRepository, HomeFirestoreRepository, LeadFirestoreRepository, LegacyOrderFirestoreRepository, ShopMenuFirestoreRepository, OrderFirestoreRepository, PaymentFirestoreRepository, ProductFirestoreRepository, SubscriptionEditionFirestoreRepository, SubscriptionFirestoreRepository, SubscriptionPaymentFirestoreRepository, SubscriptionPlanFirestoreRepository, SubscriptionProductFirestoreRepository, UserAddressFirestoreRepository, UserBeautyProfileFirestoreRepository, UserFirestoreRepository, ProductVariantFirestoreRepository, UserPaymentMethodFirestoreRepository, } from '@infrab4a/connect';
3
- import { ConnectAngularFirebaseFirestore, FIREBASE_APP_NAME, FIREBASE_OPTIONS, FirebaseAppProvider, FirebaseFirestoreProvider, } from './providers';
4
- import * as i0 from "@angular/core";
5
- export class AngularFirestoreModule {
6
- static initializeApp(options, nameOrConfig) {
7
- return {
8
- ngModule: AngularFirestoreModule,
9
- providers: [
10
- { provide: FIREBASE_OPTIONS, useValue: options },
11
- { provide: FIREBASE_APP_NAME, useValue: nameOrConfig },
12
- ],
13
- };
14
- }
15
- }
16
- AngularFirestoreModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: AngularFirestoreModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
17
- AngularFirestoreModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: AngularFirestoreModule });
18
- AngularFirestoreModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: AngularFirestoreModule, providers: [
19
- FirebaseAppProvider,
20
- FirebaseFirestoreProvider,
21
- {
22
- provide: 'BeautyProfileRepository',
23
- useFactory: (firestore, userRepository) => {
24
- return new UserBeautyProfileFirestoreRepository(firestore, userRepository);
25
- },
26
- deps: [ConnectAngularFirebaseFirestore, 'UserRepository'],
27
- },
28
- {
29
- provide: 'Buy2WinRepository',
30
- useFactory: (firestore) => {
31
- return new Buy2WinFirestoreRepository(firestore);
32
- },
33
- deps: [ConnectAngularFirebaseFirestore],
34
- },
35
- {
36
- provide: 'CategoryRepository',
37
- useFactory: (firestore) => {
38
- return new CategoryFirestoreRepository(firestore);
39
- },
40
- deps: [ConnectAngularFirebaseFirestore],
41
- },
42
- {
43
- provide: 'CheckoutRepository',
44
- useFactory: (firestore) => {
45
- return new CheckoutFirestoreRepository(firestore);
46
- },
47
- deps: [ConnectAngularFirebaseFirestore],
48
- },
49
- {
50
- provide: 'CheckoutSubscriptionRepository',
51
- useFactory: (firestore) => {
52
- return new CheckoutSubscriptionFirestoreRepository(firestore);
53
- },
54
- deps: [ConnectAngularFirebaseFirestore],
55
- },
56
- {
57
- provide: 'CouponRepository',
58
- useFactory: (firestore) => {
59
- return new CouponFirestoreRepository(firestore);
60
- },
61
- deps: [ConnectAngularFirebaseFirestore],
62
- },
63
- {
64
- provide: 'EditionRepository',
65
- useFactory: (firestore, subscriptionRepository) => {
66
- return new SubscriptionEditionFirestoreRepository(firestore, subscriptionRepository);
67
- },
68
- deps: [ConnectAngularFirebaseFirestore, 'SubscriptionRepository'],
69
- },
70
- {
71
- provide: 'HomeRepository',
72
- useFactory: (firestore) => {
73
- return new HomeFirestoreRepository(firestore);
74
- },
75
- deps: [ConnectAngularFirebaseFirestore],
76
- },
77
- {
78
- provide: 'LeadRepository',
79
- useFactory: (firestore) => {
80
- return new LeadFirestoreRepository(firestore);
81
- },
82
- deps: [ConnectAngularFirebaseFirestore],
83
- },
84
- {
85
- provide: 'LegacyOrderRepository',
86
- useFactory: (firestore) => {
87
- return new LegacyOrderFirestoreRepository(firestore);
88
- },
89
- deps: [ConnectAngularFirebaseFirestore],
90
- },
91
- {
92
- provide: 'ShopMenuRepository',
93
- useFactory: (firestore) => {
94
- return new ShopMenuFirestoreRepository(firestore);
95
- },
96
- deps: [ConnectAngularFirebaseFirestore],
97
- },
98
- {
99
- provide: 'OrderRepository',
100
- useFactory: (firestore) => {
101
- return new OrderFirestoreRepository(firestore);
102
- },
103
- deps: [ConnectAngularFirebaseFirestore],
104
- },
105
- {
106
- provide: 'PaymentRepository',
107
- useFactory: (firestore) => {
108
- return new PaymentFirestoreRepository(firestore);
109
- },
110
- deps: [ConnectAngularFirebaseFirestore],
111
- },
112
- {
113
- provide: 'ProductRepository',
114
- useFactory: (firestore) => {
115
- return new ProductFirestoreRepository(firestore);
116
- },
117
- deps: [ConnectAngularFirebaseFirestore],
118
- },
119
- {
120
- provide: 'SubscriptionPaymentRepository',
121
- useFactory: (firestore, subscriptionRepository) => {
122
- return new SubscriptionPaymentFirestoreRepository(firestore, subscriptionRepository);
123
- },
124
- deps: [ConnectAngularFirebaseFirestore, 'SubscriptionRepository'],
125
- },
126
- {
127
- provide: 'SubscriptionPlanRepository',
128
- useFactory: (firestore) => {
129
- return new SubscriptionPlanFirestoreRepository(firestore);
130
- },
131
- deps: [ConnectAngularFirebaseFirestore],
132
- },
133
- {
134
- provide: 'SubscriptionProductRepository',
135
- useFactory: (firestore) => {
136
- return new SubscriptionProductFirestoreRepository(firestore);
137
- },
138
- deps: [ConnectAngularFirebaseFirestore],
139
- },
140
- {
141
- provide: 'SubscriptionRepository',
142
- useFactory: (firestore) => {
143
- return new SubscriptionFirestoreRepository(firestore);
144
- },
145
- deps: [ConnectAngularFirebaseFirestore],
146
- },
147
- {
148
- provide: 'UserRepository',
149
- useFactory: (firestore) => {
150
- console.log('teste');
151
- console.log(firestore);
152
- return new UserFirestoreRepository(firestore);
153
- },
154
- deps: [ConnectAngularFirebaseFirestore],
155
- },
156
- {
157
- provide: 'UserAddressRepository',
158
- useFactory: (firestore, userRepository) => {
159
- return new UserAddressFirestoreRepository(firestore, userRepository);
160
- },
161
- deps: [ConnectAngularFirebaseFirestore, 'UserRepository'],
162
- },
163
- {
164
- provide: 'UserPaymentMethodRepository',
165
- useFactory: (firestore, userRepository) => {
166
- return new UserPaymentMethodFirestoreRepository(firestore, userRepository);
167
- },
168
- deps: [ConnectAngularFirebaseFirestore, 'UserRepository'],
169
- },
170
- {
171
- provide: 'VariantRepository',
172
- useFactory: (firestore, productRepository) => {
173
- return new ProductVariantFirestoreRepository(firestore, productRepository);
174
- },
175
- deps: [ConnectAngularFirebaseFirestore, 'ProductRepository'],
176
- },
177
- ] });
178
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: AngularFirestoreModule, decorators: [{
179
- type: NgModule,
180
- args: [{
181
- providers: [
182
- FirebaseAppProvider,
183
- FirebaseFirestoreProvider,
184
- {
185
- provide: 'BeautyProfileRepository',
186
- useFactory: (firestore, userRepository) => {
187
- return new UserBeautyProfileFirestoreRepository(firestore, userRepository);
188
- },
189
- deps: [ConnectAngularFirebaseFirestore, 'UserRepository'],
190
- },
191
- {
192
- provide: 'Buy2WinRepository',
193
- useFactory: (firestore) => {
194
- return new Buy2WinFirestoreRepository(firestore);
195
- },
196
- deps: [ConnectAngularFirebaseFirestore],
197
- },
198
- {
199
- provide: 'CategoryRepository',
200
- useFactory: (firestore) => {
201
- return new CategoryFirestoreRepository(firestore);
202
- },
203
- deps: [ConnectAngularFirebaseFirestore],
204
- },
205
- {
206
- provide: 'CheckoutRepository',
207
- useFactory: (firestore) => {
208
- return new CheckoutFirestoreRepository(firestore);
209
- },
210
- deps: [ConnectAngularFirebaseFirestore],
211
- },
212
- {
213
- provide: 'CheckoutSubscriptionRepository',
214
- useFactory: (firestore) => {
215
- return new CheckoutSubscriptionFirestoreRepository(firestore);
216
- },
217
- deps: [ConnectAngularFirebaseFirestore],
218
- },
219
- {
220
- provide: 'CouponRepository',
221
- useFactory: (firestore) => {
222
- return new CouponFirestoreRepository(firestore);
223
- },
224
- deps: [ConnectAngularFirebaseFirestore],
225
- },
226
- {
227
- provide: 'EditionRepository',
228
- useFactory: (firestore, subscriptionRepository) => {
229
- return new SubscriptionEditionFirestoreRepository(firestore, subscriptionRepository);
230
- },
231
- deps: [ConnectAngularFirebaseFirestore, 'SubscriptionRepository'],
232
- },
233
- {
234
- provide: 'HomeRepository',
235
- useFactory: (firestore) => {
236
- return new HomeFirestoreRepository(firestore);
237
- },
238
- deps: [ConnectAngularFirebaseFirestore],
239
- },
240
- {
241
- provide: 'LeadRepository',
242
- useFactory: (firestore) => {
243
- return new LeadFirestoreRepository(firestore);
244
- },
245
- deps: [ConnectAngularFirebaseFirestore],
246
- },
247
- {
248
- provide: 'LegacyOrderRepository',
249
- useFactory: (firestore) => {
250
- return new LegacyOrderFirestoreRepository(firestore);
251
- },
252
- deps: [ConnectAngularFirebaseFirestore],
253
- },
254
- {
255
- provide: 'ShopMenuRepository',
256
- useFactory: (firestore) => {
257
- return new ShopMenuFirestoreRepository(firestore);
258
- },
259
- deps: [ConnectAngularFirebaseFirestore],
260
- },
261
- {
262
- provide: 'OrderRepository',
263
- useFactory: (firestore) => {
264
- return new OrderFirestoreRepository(firestore);
265
- },
266
- deps: [ConnectAngularFirebaseFirestore],
267
- },
268
- {
269
- provide: 'PaymentRepository',
270
- useFactory: (firestore) => {
271
- return new PaymentFirestoreRepository(firestore);
272
- },
273
- deps: [ConnectAngularFirebaseFirestore],
274
- },
275
- {
276
- provide: 'ProductRepository',
277
- useFactory: (firestore) => {
278
- return new ProductFirestoreRepository(firestore);
279
- },
280
- deps: [ConnectAngularFirebaseFirestore],
281
- },
282
- {
283
- provide: 'SubscriptionPaymentRepository',
284
- useFactory: (firestore, subscriptionRepository) => {
285
- return new SubscriptionPaymentFirestoreRepository(firestore, subscriptionRepository);
286
- },
287
- deps: [ConnectAngularFirebaseFirestore, 'SubscriptionRepository'],
288
- },
289
- {
290
- provide: 'SubscriptionPlanRepository',
291
- useFactory: (firestore) => {
292
- return new SubscriptionPlanFirestoreRepository(firestore);
293
- },
294
- deps: [ConnectAngularFirebaseFirestore],
295
- },
296
- {
297
- provide: 'SubscriptionProductRepository',
298
- useFactory: (firestore) => {
299
- return new SubscriptionProductFirestoreRepository(firestore);
300
- },
301
- deps: [ConnectAngularFirebaseFirestore],
302
- },
303
- {
304
- provide: 'SubscriptionRepository',
305
- useFactory: (firestore) => {
306
- return new SubscriptionFirestoreRepository(firestore);
307
- },
308
- deps: [ConnectAngularFirebaseFirestore],
309
- },
310
- {
311
- provide: 'UserRepository',
312
- useFactory: (firestore) => {
313
- console.log('teste');
314
- console.log(firestore);
315
- return new UserFirestoreRepository(firestore);
316
- },
317
- deps: [ConnectAngularFirebaseFirestore],
318
- },
319
- {
320
- provide: 'UserAddressRepository',
321
- useFactory: (firestore, userRepository) => {
322
- return new UserAddressFirestoreRepository(firestore, userRepository);
323
- },
324
- deps: [ConnectAngularFirebaseFirestore, 'UserRepository'],
325
- },
326
- {
327
- provide: 'UserPaymentMethodRepository',
328
- useFactory: (firestore, userRepository) => {
329
- return new UserPaymentMethodFirestoreRepository(firestore, userRepository);
330
- },
331
- deps: [ConnectAngularFirebaseFirestore, 'UserRepository'],
332
- },
333
- {
334
- provide: 'VariantRepository',
335
- useFactory: (firestore, productRepository) => {
336
- return new ProductVariantFirestoreRepository(firestore, productRepository);
337
- },
338
- deps: [ConnectAngularFirebaseFirestore, 'ProductRepository'],
339
- },
340
- ],
341
- }]
342
- }] });
343
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1maXJlc3RvcmUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29ubmVjdC1hbmd1bGFyL3NyYy9saWIvYW5ndWxhci1maXJlc3RvcmUubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBdUIsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBRTdELE9BQU8sRUFFTCwwQkFBMEIsRUFHMUIsMkJBQTJCLEVBRTNCLDJCQUEyQixFQUMzQix1Q0FBdUMsRUFHdkMseUJBQXlCLEVBRXpCLHVCQUF1QixFQUd2Qix1QkFBdUIsRUFFdkIsOEJBQThCLEVBQzlCLDJCQUEyQixFQUczQix3QkFBd0IsRUFFeEIsMEJBQTBCLEVBRTFCLDBCQUEwQixFQUMxQixzQ0FBc0MsRUFDdEMsK0JBQStCLEVBQy9CLHNDQUFzQyxFQUV0QyxtQ0FBbUMsRUFFbkMsc0NBQXNDLEVBSXRDLDhCQUE4QixFQUM5QixvQ0FBb0MsRUFDcEMsdUJBQXVCLEVBR3ZCLGlDQUFpQyxFQUVqQyxvQ0FBb0MsR0FDckMsTUFBTSxtQkFBbUIsQ0FBQTtBQUUxQixPQUFPLEVBQ0wsK0JBQStCLEVBQy9CLGlCQUFpQixFQUNqQixnQkFBZ0IsRUFDaEIsbUJBQW1CLEVBQ25CLHlCQUF5QixHQUMxQixNQUFNLGFBQWEsQ0FBQTs7QUF1THBCLE1BQU0sT0FBTyxzQkFBc0I7SUFDakMsTUFBTSxDQUFDLGFBQWEsQ0FDbEIsT0FBd0IsRUFDeEIsWUFBeUM7UUFFekMsT0FBTztZQUNMLFFBQVEsRUFBRSxzQkFBc0I7WUFDaEMsU0FBUyxFQUFFO2dCQUNULEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUU7Z0JBQ2hELEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUU7YUFDdkQ7U0FDRixDQUFBO0lBQ0gsQ0FBQzs7b0hBWlUsc0JBQXNCO3FI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QyxDQUFBOzRCQUN0RCxDQUFDOzRCQUNELElBQUksRUFBRSxDQUFDLCtCQUErQixDQUFDO3lCQUN4Qzt3QkFDRDs0QkFDRSxPQUFPLEVBQUUsdUJBQXVCOzRCQUNoQyxVQUFVLEVBQUUsQ0FDVixTQUEwQyxFQUMxQyxjQUF1QyxFQUNoQixFQUFFO2dDQUN6QixPQUFPLElBQUksOEJBQThCLENBQUMsU0FBZ0IsRUFBRSxjQUFjLENBQUMsQ0FBQTs0QkFDN0UsQ0FBQzs0QkFDRCxJQUFJLEVBQUUsQ0FBQywrQkFBK0IsRUFBRSxnQkFBZ0IsQ0FBQzt5QkFDMUQ7d0JBQ0Q7NEJBQ0UsT0FBTyxFQUFFLDZCQUE2Qjs0QkFDdEMsVUFBVSxFQUFFLENBQ1YsU0FBMEMsRUFDMUMsY0FBdUMsRUFDVixFQUFFO2dDQUMvQixPQUFPLElBQUksb0NBQW9DLENBQUMsU0FBZ0IsRUFBRSxjQUFjLENBQUMsQ0FBQTs0QkFDbkYsQ0FBQzs0QkFDRCxJQUFJLEVBQUUsQ0FBQywrQkFBK0IsRUFBRSxnQkFBZ0IsQ0FBQzt5QkFDMUQ7d0JBQ0Q7NEJBQ0UsT0FBTyxFQUFFLG1CQUFtQjs0QkFDNUIsVUFBVSxFQUFFLENBQ1YsU0FBMEMsRUFDMUMsaUJBQTZDLEVBQzFCLEVBQUU7Z0NBQ3JCLE9BQU8sSUFBSSxpQ0FBaUMsQ0FBQyxTQUFnQixFQUFFLGlCQUFpQixDQUFDLENBQUE7NEJBQ25GLENBQUM7NEJBQ0QsSUFBSSxFQUFFLENBQUMsK0JBQStCLEVBQUUsbUJBQW1CLENBQUM7eUJBQzdEO3FCQUNGO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgRmlyZWJhc2VBcHBDb25maWcsIEZpcmViYXNlT3B0aW9ucyB9IGZyb20gJ0BmaXJlYmFzZS9hcHAtdHlwZXMnXG5pbXBvcnQge1xuICBCZWF1dHlQcm9maWxlUmVwb3NpdG9yeSxcbiAgQnV5MldpbkZpcmVzdG9yZVJlcG9zaXRvcnksXG4gIEJ1eTJXaW5SZXBvc2l0b3J5LFxuICBDYXRlZ29yeVJlcG9zaXRvcnksXG4gIENhdGVnb3J5RmlyZXN0b3JlUmVwb3NpdG9yeSxcbiAgQ2hlY2tvdXRSZXBvc2l0b3J5LFxuICBDaGVja291dEZpcmVzdG9yZVJlcG9zaXRvcnksXG4gIENoZWNrb3V0U3Vic2NyaXB0aW9uRmlyZXN0b3JlUmVwb3NpdG9yeSxcbiAgQ2hlY2tvdXRTdWJzY3JpcHRpb25SZXBvc2l0b3J5LFxuICBDb3Vwb25SZXBvc2l0b3J5LFxuICBDb3Vwb25GaXJlc3RvcmVSZXBvc2l0b3J5LFxuICBFZGl0aW9uUmVwb3NpdG9yeSxcbiAgSG9tZUZpcmVzdG9yZVJlcG9zaXRvcnksXG4gIEhvbWVSZXBvc2l0b3J5LFxuICBMZWFkUmVwb3NpdG9yeSxcbiAgTGVhZEZpcmVzdG9yZVJlcG9zaXRvcnksXG4gIExlZ2FjeU9yZGVyUmVwb3NpdG9yeSxcbiAgTGVnYWN5T3JkZXJGaXJlc3RvcmVSZXBvc2l0b3J5LFxuICBTaG9wTWVudUZpcmVzdG9yZVJlcG9zaXRvcnksXG4gIFNob3BNZW51UmVwb3NpdG9yeSxcbiAgT3JkZXJSZXBvc2l0b3J5LFxuICBPcmRlckZpcmVzdG9yZVJlcG9zaXRvcnksXG4gIFBheW1lbnRSZXBvc2l0b3J5LFxuICBQYXltZW50RmlyZXN0b3JlUmVwb3NpdG9yeSxcbiAgUHJvZHVjdFJlcG9zaXRvcnksXG4gIFByb2R1Y3RGaXJlc3RvcmVSZXBvc2l0b3J5LFxuICBTdWJzY3JpcHRpb25FZGl0aW9uRmlyZXN0b3JlUmVwb3NpdG9yeSxcbiAgU3Vic2NyaXB0aW9uRmlyZXN0b3JlUmVwb3NpdG9yeSxcbiAgU3Vic2NyaXB0aW9uUGF5bWVudEZpcmVzdG9yZVJlcG9zaXRvcnksXG4gIFN1YnNjcmlwdGlvblBheW1lbnRSZXBvc2l0b3J5LFxuICBTdWJzY3JpcHRpb25QbGFuRmlyZXN0b3JlUmVwb3NpdG9yeSxcbiAgU3Vic2NyaXB0aW9uUGxhblJlcG9zaXRvcnksXG4gIFN1YnNjcmlwdGlvblByb2R1Y3RGaXJlc3RvcmVSZXBvc2l0b3J5LFxuICBTdWJzY3JpcHRpb25Qcm9kdWN0UmVwb3NpdG9yeSxcbiAgU3Vic2NyaXB0aW9uUmVwb3NpdG9yeSxcbiAgVXNlckFkZHJlc3NSZXBvc2l0b3J5LFxuICBVc2VyQWRkcmVzc0ZpcmVzdG9yZVJlcG9zaXRvcnksXG4gIFVzZXJCZWF1dHlQcm9maWxlRmlyZXN0b3JlUmVwb3NpdG9yeSxcbiAgVXNlckZpcmVzdG9yZVJlcG9zaXRvcnksXG4gIFVzZXJSZXBvc2l0b3J5LFxuICBWYXJpYW50UmVwb3NpdG9yeSxcbiAgUHJvZHVjdFZhcmlhbnRGaXJlc3RvcmVSZXBvc2l0b3J5LFxuICBVc2VyUGF5bWVudE1ldGhvZFJlcG9zaXRvcnksXG4gIFVzZXJQYXltZW50TWV0aG9kRmlyZXN0b3JlUmVwb3NpdG9yeSxcbn0gZnJvbSAnQGluZnJhYjRhL2Nvbm5lY3QnXG5cbmltcG9ydCB7XG4gIENvbm5lY3RBbmd1bGFyRmlyZWJhc2VGaXJlc3RvcmUsXG4gIEZJUkVCQVNFX0FQUF9OQU1FLFxuICBGSVJFQkFTRV9PUFRJT05TLFxuICBGaXJlYmFzZUFwcFByb3ZpZGVyLFxuICBGaXJlYmFzZUZpcmVzdG9yZVByb3ZpZGVyLFxufSBmcm9tICcuL3Byb3ZpZGVycydcblxuQE5nTW9kdWxlKHtcbiAgcHJvdmlkZXJzOiBbXG4gICAgRmlyZWJhc2VBcHBQcm92aWRlcixcbiAgICBGaXJlYmFzZUZpcmVzdG9yZVByb3ZpZGVyLFxuICAgIHtcbiAgICAgIHByb3ZpZGU6ICdCZWF1dHlQcm9maWxlUmVwb3NpdG9yeScsXG4gICAgICB1c2VGYWN0b3J5OiAoXG4gICAgICAgIGZpcmVzdG9yZTogQ29ubmVjdEFuZ3VsYXJGaXJlYmFzZUZpcmVzdG9yZSxcbiAgICAgICAgdXNlclJlcG9zaXRvcnk6IFVzZXJGaXJlc3RvcmVSZXBvc2l0b3J5LFxuICAgICAgKTogQmVhdXR5UHJvZmlsZVJlcG9zaXRvcnkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IFVzZXJCZWF1dHlQcm9maWxlRmlyZXN0b3JlUmVwb3NpdG9yeShmaXJlc3RvcmUgYXMgYW55LCB1c2VyUmVwb3NpdG9yeSlcbiAgICAgIH0sXG4gICAgICBkZXBzOiBbQ29ubmVjdEFuZ3VsYXJGaXJlYmFzZUZpcmVzdG9yZSwgJ1VzZXJSZXBvc2l0b3J5J10sXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiAnQnV5MldpblJlcG9zaXRvcnknLFxuICAgICAgdXNlRmFjdG9yeTogKGZpcmVzdG9yZTogQ29ubmVjdEFuZ3VsYXJGaXJlYmFzZUZpcmVzdG9yZSk6IEJ1eTJXaW5SZXBvc2l0b3J5ID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBCdXkyV2luRmlyZXN0b3JlUmVwb3NpdG9yeShmaXJlc3RvcmUgYXMgYW55KVxuICAgICAgfSxcbiAgICAgIGRlcHM6IFtDb25uZWN0QW5ndWxhckZpcmViYXNlRmlyZXN0b3JlXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6ICdDYXRlZ29yeVJlcG9zaXRvcnknLFxuICAgICAgdXNlRmFjdG9yeTogKGZpcmVzdG9yZTogQ29ubmVjdEFuZ3VsYXJGaXJlYmFzZUZpcmVzdG9yZSk6IENhdGVnb3J5UmVwb3NpdG9yeSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgQ2F0ZWdvcnlGaXJlc3RvcmVSZXBvc2l0b3J5KGZpcmVzdG9yZSBhcyBhbnkpXG4gICAgICB9LFxuICAgICAgZGVwczogW0Nvbm5lY3RBbmd1bGFyRmlyZWJhc2VGaXJlc3RvcmVdLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogJ0NoZWNrb3V0UmVwb3NpdG9yeScsXG4gICAgICB1c2VGYWN0b3J5OiAoZmlyZXN0b3JlOiBDb25uZWN0QW5ndWxhckZpcmViYXNlRmlyZXN0b3JlKTogQ2hlY2tvdXRSZXBvc2l0b3J5ID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBDaGVja291dEZpcmVzdG9yZVJlcG9zaXRvcnkoZmlyZXN0b3JlIGFzIGFueSlcbiAgICAgIH0sXG4gICAgICBkZXBzOiBbQ29ubmVjdEFuZ3VsYXJGaXJlYmFzZUZpcmVzdG9yZV0sXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiAnQ2hlY2tvdXRTdWJzY3JpcHRpb25SZXBvc2l0b3J5JyxcbiAgICAgIHVzZUZhY3Rvcnk6IChmaXJlc3RvcmU6IENvbm5lY3RBbmd1bGFyRmlyZWJhc2VGaXJlc3RvcmUpOiBDaGVja291dFN1YnNjcmlwdGlvblJlcG9zaXRvcnkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IENoZWNrb3V0U3Vic2NyaXB0aW9uRmlyZXN0b3JlUmVwb3NpdG9yeShmaXJlc3RvcmUgYXMgYW55KVxuICAgICAgfSxcbiAgICAgIGRlcHM6IFtDb25uZWN0QW5ndWxhckZpcmViYXNlRmlyZXN0b3JlXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6ICdDb3Vwb25SZXBvc2l0b3J5JyxcbiAgICAgIHVzZUZhY3Rvcnk6IChmaXJlc3RvcmU6IENvbm5lY3RBbmd1bGFyRmlyZWJhc2VGaXJlc3RvcmUpOiBDb3Vwb25SZXBvc2l0b3J5ID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBDb3Vwb25GaXJlc3RvcmVSZXBvc2l0b3J5KGZpcmVzdG9yZSBhcyBhbnkpXG4gICAgICB9LFxuICAgICAgZGVwczogW0Nvbm5lY3RBbmd1bGFyRmlyZWJhc2VGaXJlc3RvcmVdLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogJ0VkaXRpb25SZXBvc2l0b3J5JyxcbiAgICAgIHVzZUZhY3Rvcnk6IChcbiAgICAgICAgZmlyZXN0b3JlOiBDb25uZWN0QW5ndWxhckZpcmViYXNlRmlyZXN0b3JlLFxuICAgICAgICBzdWJzY3JpcHRpb25SZXBvc2l0b3J5OiBTdWJzY3JpcHRpb25GaXJlc3RvcmVSZXBvc2l0b3J5LFxuICAgICAgKTogRWRpdGlvblJlcG9zaXRvcnkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IFN1YnNjcmlwdGlvbkVkaXRpb25GaXJlc3RvcmVSZXBvc2l0b3J5KGZpcmVzdG9yZSBhcyBhbnksIHN1YnNjcmlwdGlvblJlcG9zaXRvcnkpXG4gICAgICB9LFxuICAgICAgZGVwczogW0Nvbm5lY3RBbmd1bGFyRmlyZWJhc2VGaXJlc3RvcmUsICdTdWJzY3JpcHRpb25SZXBvc2l0b3J5J10sXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiAnSG9tZVJlcG9zaXRvcnknLFxuICAgICAgdXNlRmFjdG9yeTogKGZpcmVzdG9yZTogQ29ubmVjdEFuZ3VsYXJGaXJlYmFzZUZpcmVzdG9yZSk6IEhvbWVSZXBvc2l0b3J5ID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBIb21lRmlyZXN0b3JlUmVwb3NpdG9yeShmaXJlc3RvcmUgYXMgYW55KVxuICAgICAgfSxcbiAgICAgIGRlcHM6IFtDb25uZWN0QW5ndWxhckZpcmViYXNlRmlyZXN0b3JlXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6ICdMZWFkUmVwb3NpdG9yeScsXG4gICAgICB1c2VGYWN0b3J5OiAoZmlyZXN0b3JlOiBDb25uZWN0QW5ndWxhckZpcmViYXNlRmlyZXN0b3JlKTogTGVhZFJlcG9zaXRvcnkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IExlYWRGaXJlc3RvcmVSZXBvc2l0b3J5KGZpcmVzdG9yZSBhcyBhbnkpXG4gICAgICB9LFxuICAgICAgZGVwczogW0Nvbm5lY3RBbmd1bGFyRmlyZWJhc2VGaXJlc3RvcmVdLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogJ0xlZ2FjeU9yZGVyUmVwb3NpdG9yeScsXG4gICAgICB1c2VGYWN0b3J5OiAoZmlyZXN0b3JlOiBDb25uZWN0QW5ndWxhckZpcmViYXNlRmlyZXN0b3JlKTogTGVnYWN5T3JkZXJSZXBvc2l0b3J5ID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBMZWdhY3lPcmRlckZpcmVzdG9yZVJlcG9zaXRvcnkoZmlyZXN0b3JlIGFzIGFueSlcbiAgICAgIH0sXG4gICAgICBkZXBzOiBbQ29ubmVjdEFuZ3VsYXJGaXJlYmFzZUZpcmVzdG9yZV0sXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiAnU2hvcE1lbnVSZXBvc2l0b3J5JyxcbiAgICAgIHVzZUZhY3Rvcnk6IChmaXJlc3RvcmU6IENvbm5lY3RBbmd1bGFyRmlyZWJhc2VGaXJlc3RvcmUpOiBTaG9wTWVudVJlcG9zaXRvcnkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IFNob3BNZW51RmlyZXN0b3JlUmVwb3NpdG9yeShmaXJlc3RvcmUgYXMgYW55KVxuICAgICAgfSxcbiAgICAgIGRlcHM6IFtDb25uZWN0QW5ndWxhckZpcmViYXNlRmlyZXN0b3JlXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6ICdPcmRlclJlcG9zaXRvcnknLFxuICAgICAgdXNlRmFjdG9yeTogKGZpcmVzdG9yZTogQ29ubmVjdEFuZ3VsYXJGaXJlYmFzZUZpcmVzdG9yZSk6IE9yZGVyUmVwb3NpdG9yeSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgT3JkZXJGaXJlc3RvcmVSZXBvc2l0b3J5KGZpcmVzdG9yZSBhcyBhbnkpXG4gICAgICB9LFxuICAgICAgZGVwczogW0Nvbm5lY3RBbmd1bGFyRmlyZWJhc2VGaXJlc3RvcmVdLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogJ1BheW1lbnRSZXBvc2l0b3J5JyxcbiAgICAgIHVzZUZhY3Rvcnk6IChmaXJlc3RvcmU6IENvbm5lY3RBbmd1bGFyRmlyZWJhc2VGaXJlc3RvcmUpOiBQYXltZW50UmVwb3NpdG9yeSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgUGF5bWVudEZpcmVzdG9yZVJlcG9zaXRvcnkoZmlyZXN0b3JlIGFzIGFueSlcbiAgICAgIH0sXG4gICAgICBkZXBzOiBbQ29ubmVjdEFuZ3VsYXJGaXJlYmFzZUZpcmVzdG9yZV0sXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiAnUHJvZHVjdFJlcG9zaXRvcnknLFxuICAgICAgdXNlRmFjdG9yeTogKGZpcmVzdG9yZTogQ29ubmVjdEFuZ3VsYXJGaXJlYmFzZUZpcmVzdG9yZSk6IFByb2R1Y3RSZXBvc2l0b3J5ID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9kdWN0RmlyZXN0b3JlUmVwb3NpdG9yeShmaXJlc3RvcmUgYXMgYW55KVxuICAgICAgfSxcbiAgICAgIGRlcHM6IFtDb25uZWN0QW5ndWxhckZpcmViYXNlRmlyZXN0b3JlXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6ICdTdWJzY3JpcHRpb25QYXltZW50UmVwb3NpdG9yeScsXG4gICAgICB1c2VGYWN0b3J5OiAoXG4gICAgICAgIGZpcmVzdG9yZTogQ29ubmVjdEFuZ3VsYXJGaXJlYmFzZUZpcmVzdG9yZSxcbiAgICAgICAgc3Vic2NyaXB0aW9uUmVwb3NpdG9yeTogU3Vic2NyaXB0aW9uRmlyZXN0b3JlUmVwb3NpdG9yeSxcbiAgICAgICk6IFN1YnNjcmlwdGlvblBheW1lbnRSZXBvc2l0b3J5ID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBTdWJzY3JpcHRpb25QYXltZW50RmlyZXN0b3JlUmVwb3NpdG9yeShmaXJlc3RvcmUgYXMgYW55LCBzdWJzY3JpcHRpb25SZXBvc2l0b3J5KVxuICAgICAgfSxcbiAgICAgIGRlcHM6IFtDb25uZWN0QW5ndWxhckZpcmViYXNlRmlyZXN0b3JlLCAnU3Vic2NyaXB0aW9uUmVwb3NpdG9yeSddLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogJ1N1YnNjcmlwdGlvblBsYW5SZXBvc2l0b3J5JyxcbiAgICAgIHVzZUZhY3Rvcnk6IChmaXJlc3RvcmU6IENvbm5lY3RBbmd1bGFyRmlyZWJhc2VGaXJlc3RvcmUpOiBTdWJzY3JpcHRpb25QbGFuUmVwb3NpdG9yeSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgU3Vic2NyaXB0aW9uUGxhbkZpcmVzdG9yZVJlcG9zaXRvcnkoZmlyZXN0b3JlIGFzIGFueSlcbiAgICAgIH0sXG4gICAgICBkZXBzOiBbQ29ubmVjdEFuZ3VsYXJGaXJlYmFzZUZpcmVzdG9yZV0sXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiAnU3Vic2NyaXB0aW9uUHJvZHVjdFJlcG9zaXRvcnknLFxuICAgICAgdXNlRmFjdG9yeTogKGZpcmVzdG9yZTogQ29ubmVjdEFuZ3VsYXJGaXJlYmFzZUZpcmVzdG9yZSk6IFN1YnNjcmlwdGlvblByb2R1Y3RSZXBvc2l0b3J5ID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBTdWJzY3JpcHRpb25Qcm9kdWN0RmlyZXN0b3JlUmVwb3NpdG9yeShmaXJlc3RvcmUgYXMgYW55KVxuICAgICAgfSxcbiAgICAgIGRlcHM6IFtDb25uZWN0QW5ndWxhckZpcmViYXNlRmlyZXN0b3JlXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6ICdTdWJzY3JpcHRpb25SZXBvc2l0b3J5JyxcbiAgICAgIHVzZUZhY3Rvcnk6IChmaXJlc3RvcmU6IENvbm5lY3RBbmd1bGFyRmlyZWJhc2VGaXJlc3RvcmUpOiBTdWJzY3JpcHRpb25SZXBvc2l0b3J5ID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBTdWJzY3JpcHRpb25GaXJlc3RvcmVSZXBvc2l0b3J5KGZpcmVzdG9yZSBhcyBhbnkpXG4gICAgICB9LFxuICAgICAgZGVwczogW0Nvbm5lY3RBbmd1bGFyRmlyZWJhc2VGaXJlc3RvcmVdLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogJ1VzZXJSZXBvc2l0b3J5JyxcbiAgICAgIHVzZUZhY3Rvcnk6IChmaXJlc3RvcmU6IENvbm5lY3RBbmd1bGFyRmlyZWJhc2VGaXJlc3RvcmUpOiBVc2VyUmVwb3NpdG9yeSA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKCd0ZXN0ZScpXG4gICAgICAgIGNvbnNvbGUubG9nKGZpcmVzdG9yZSlcblxuICAgICAgICByZXR1cm4gbmV3IFVzZXJGaXJlc3RvcmVSZXBvc2l0b3J5KGZpcmVzdG9yZSBhcyBhbnkpXG4gICAgICB9LFxuICAgICAgZGVwczogW0Nvbm5lY3RBbmd1bGFyRmlyZWJhc2VGaXJlc3RvcmVdLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogJ1VzZXJBZGRyZXNzUmVwb3NpdG9yeScsXG4gICAgICB1c2VGYWN0b3J5OiAoXG4gICAgICAgIGZpcmVzdG9yZTogQ29ubmVjdEFuZ3VsYXJGaXJlYmFzZUZpcmVzdG9yZSxcbiAgICAgICAgdXNlclJlcG9zaXRvcnk6IFVzZXJGaXJlc3RvcmVSZXBvc2l0b3J5LFxuICAgICAgKTogVXNlckFkZHJlc3NSZXBvc2l0b3J5ID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBVc2VyQWRkcmVzc0ZpcmVzdG9yZVJlcG9zaXRvcnkoZmlyZXN0b3JlIGFzIGFueSwgdXNlclJlcG9zaXRvcnkpXG4gICAgICB9LFxuICAgICAgZGVwczogW0Nvbm5lY3RBbmd1bGFyRmlyZWJhc2VGaXJlc3RvcmUsICdVc2VyUmVwb3NpdG9yeSddLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogJ1VzZXJQYXltZW50TWV0aG9kUmVwb3NpdG9yeScsXG4gICAgICB1c2VGYWN0b3J5OiAoXG4gICAgICAgIGZpcmVzdG9yZTogQ29ubmVjdEFuZ3VsYXJGaXJlYmFzZUZpcmVzdG9yZSxcbiAgICAgICAgdXNlclJlcG9zaXRvcnk6IFVzZXJGaXJlc3RvcmVSZXBvc2l0b3J5LFxuICAgICAgKTogVXNlclBheW1lbnRNZXRob2RSZXBvc2l0b3J5ID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBVc2VyUGF5bWVudE1ldGhvZEZpcmVzdG9yZVJlcG9zaXRvcnkoZmlyZXN0b3JlIGFzIGFueSwgdXNlclJlcG9zaXRvcnkpXG4gICAgICB9LFxuICAgICAgZGVwczogW0Nvbm5lY3RBbmd1bGFyRmlyZWJhc2VGaXJlc3RvcmUsICdVc2VyUmVwb3NpdG9yeSddLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogJ1ZhcmlhbnRSZXBvc2l0b3J5JyxcbiAgICAgIHVzZUZhY3Rvcnk6IChcbiAgICAgICAgZmlyZXN0b3JlOiBDb25uZWN0QW5ndWxhckZpcmViYXNlRmlyZXN0b3JlLFxuICAgICAgICBwcm9kdWN0UmVwb3NpdG9yeTogUHJvZHVjdEZpcmVzdG9yZVJlcG9zaXRvcnksXG4gICAgICApOiBWYXJpYW50UmVwb3NpdG9yeSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvZHVjdFZhcmlhbnRGaXJlc3RvcmVSZXBvc2l0b3J5KGZpcmVzdG9yZSBhcyBhbnksIHByb2R1Y3RSZXBvc2l0b3J5KVxuICAgICAgfSxcbiAgICAgIGRlcHM6IFtDb25uZWN0QW5ndWxhckZpcmViYXNlRmlyZXN0b3JlLCAnUHJvZHVjdFJlcG9zaXRvcnknXSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBBbmd1bGFyRmlyZXN0b3JlTW9kdWxlIHtcbiAgc3RhdGljIGluaXRpYWxpemVBcHAoXG4gICAgb3B0aW9uczogRmlyZWJhc2VPcHRpb25zLFxuICAgIG5hbWVPckNvbmZpZz86IHN0cmluZyB8IEZpcmViYXNlQXBwQ29uZmlnLFxuICApOiBNb2R1bGVXaXRoUHJvdmlkZXJzPEFuZ3VsYXJGaXJlc3RvcmVNb2R1bGU+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IEFuZ3VsYXJGaXJlc3RvcmVNb2R1bGUsXG4gICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgeyBwcm92aWRlOiBGSVJFQkFTRV9PUFRJT05TLCB1c2VWYWx1ZTogb3B0aW9ucyB9LFxuICAgICAgICB7IHByb3ZpZGU6IEZJUkVCQVNFX0FQUF9OQU1FLCB1c2VWYWx1ZTogbmFtZU9yQ29uZmlnIH0sXG4gICAgICBdLFxuICAgIH1cbiAgfVxufVxuIl19
1
+ import { NgModule } from '@angular/core';
2
+ import { AngularFireModule, FIREBASE_APP_NAME, FIREBASE_OPTIONS, } from '@angular/fire';
3
+ import { AngularFirestore } from '@angular/fire/firestore';
4
+ import { Buy2WinFirestoreRepository, CategoryFirestoreRepository, CheckoutFirestoreRepository, CheckoutSubscriptionFirestoreRepository, CouponFirestoreRepository, HomeFirestoreRepository, LeadFirestoreRepository, LegacyOrderFirestoreRepository, ShopMenuFirestoreRepository, OrderFirestoreRepository, PaymentFirestoreRepository, ProductFirestoreRepository, SubscriptionEditionFirestoreRepository, SubscriptionFirestoreRepository, SubscriptionPaymentFirestoreRepository, SubscriptionPlanFirestoreRepository, SubscriptionProductFirestoreRepository, UserAddressFirestoreRepository, UserBeautyProfileFirestoreRepository, UserFirestoreRepository, ProductVariantFirestoreRepository, UserPaymentMethodFirestoreRepository, } from '@infrab4a/connect';
5
+ import * as i0 from "@angular/core";
6
+ export class AngularFirestoreModule {
7
+ static initializeApp(options, nameOrConfig) {
8
+ return {
9
+ ngModule: AngularFirestoreModule,
10
+ providers: [
11
+ { provide: FIREBASE_OPTIONS, useValue: options },
12
+ { provide: FIREBASE_APP_NAME, useValue: nameOrConfig },
13
+ ],
14
+ };
15
+ }
16
+ }
17
+ AngularFirestoreModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: AngularFirestoreModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
18
+ AngularFirestoreModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: AngularFirestoreModule, imports: [AngularFireModule] });
19
+ AngularFirestoreModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: AngularFirestoreModule, providers: [
20
+ {
21
+ provide: 'BeautyProfileRepository',
22
+ useFactory: (firestore, userRepository) => {
23
+ return new UserBeautyProfileFirestoreRepository(firestore.firestore, userRepository);
24
+ },
25
+ deps: [AngularFirestore, 'UserRepository'],
26
+ },
27
+ {
28
+ provide: 'Buy2WinRepository',
29
+ useFactory: (firestore) => {
30
+ return new Buy2WinFirestoreRepository(firestore.firestore);
31
+ },
32
+ deps: [AngularFirestore],
33
+ },
34
+ {
35
+ provide: 'CategoryRepository',
36
+ useFactory: (firestore) => {
37
+ return new CategoryFirestoreRepository(firestore.firestore);
38
+ },
39
+ deps: [AngularFirestore],
40
+ },
41
+ {
42
+ provide: 'CheckoutRepository',
43
+ useFactory: (firestore) => {
44
+ return new CheckoutFirestoreRepository(firestore.firestore);
45
+ },
46
+ deps: [AngularFirestore],
47
+ },
48
+ {
49
+ provide: 'CheckoutSubscriptionRepository',
50
+ useFactory: (firestore) => {
51
+ return new CheckoutSubscriptionFirestoreRepository(firestore.firestore);
52
+ },
53
+ deps: [AngularFirestore],
54
+ },
55
+ {
56
+ provide: 'CouponRepository',
57
+ useFactory: (firestore) => {
58
+ return new CouponFirestoreRepository(firestore.firestore);
59
+ },
60
+ deps: [AngularFirestore],
61
+ },
62
+ {
63
+ provide: 'EditionRepository',
64
+ useFactory: (firestore, subscriptionRepository) => {
65
+ return new SubscriptionEditionFirestoreRepository(firestore.firestore, subscriptionRepository);
66
+ },
67
+ deps: [AngularFirestore, 'SubscriptionRepository'],
68
+ },
69
+ {
70
+ provide: 'HomeRepository',
71
+ useFactory: (firestore) => {
72
+ return new HomeFirestoreRepository(firestore.firestore);
73
+ },
74
+ deps: [AngularFirestore],
75
+ },
76
+ {
77
+ provide: 'LeadRepository',
78
+ useFactory: (firestore) => {
79
+ return new LeadFirestoreRepository(firestore.firestore);
80
+ },
81
+ deps: [AngularFirestore],
82
+ },
83
+ {
84
+ provide: 'LegacyOrderRepository',
85
+ useFactory: (firestore) => {
86
+ return new LegacyOrderFirestoreRepository(firestore.firestore);
87
+ },
88
+ deps: [AngularFirestore],
89
+ },
90
+ {
91
+ provide: 'ShopMenuRepository',
92
+ useFactory: (firestore) => {
93
+ return new ShopMenuFirestoreRepository(firestore.firestore);
94
+ },
95
+ deps: [AngularFirestore],
96
+ },
97
+ {
98
+ provide: 'OrderRepository',
99
+ useFactory: (firestore) => {
100
+ return new OrderFirestoreRepository(firestore.firestore);
101
+ },
102
+ deps: [AngularFirestore],
103
+ },
104
+ {
105
+ provide: 'PaymentRepository',
106
+ useFactory: (firestore) => {
107
+ return new PaymentFirestoreRepository(firestore.firestore);
108
+ },
109
+ deps: [AngularFirestore],
110
+ },
111
+ {
112
+ provide: 'ProductRepository',
113
+ useFactory: (firestore) => {
114
+ return new ProductFirestoreRepository(firestore.firestore);
115
+ },
116
+ deps: [AngularFirestore],
117
+ },
118
+ {
119
+ provide: 'SubscriptionPaymentRepository',
120
+ useFactory: (firestore, subscriptionRepository) => {
121
+ return new SubscriptionPaymentFirestoreRepository(firestore.firestore, subscriptionRepository);
122
+ },
123
+ deps: [AngularFirestore, 'SubscriptionRepository'],
124
+ },
125
+ {
126
+ provide: 'SubscriptionPlanRepository',
127
+ useFactory: (firestore) => {
128
+ return new SubscriptionPlanFirestoreRepository(firestore.firestore);
129
+ },
130
+ deps: [AngularFirestore],
131
+ },
132
+ {
133
+ provide: 'SubscriptionProductRepository',
134
+ useFactory: (firestore) => {
135
+ return new SubscriptionProductFirestoreRepository(firestore.firestore);
136
+ },
137
+ deps: [AngularFirestore],
138
+ },
139
+ {
140
+ provide: 'SubscriptionRepository',
141
+ useFactory: (firestore) => {
142
+ return new SubscriptionFirestoreRepository(firestore.firestore);
143
+ },
144
+ deps: [AngularFirestore],
145
+ },
146
+ {
147
+ provide: 'UserRepository',
148
+ useFactory: (firestore) => {
149
+ return new UserFirestoreRepository(firestore.firestore);
150
+ },
151
+ deps: [AngularFirestore],
152
+ },
153
+ {
154
+ provide: 'UserAddressRepository',
155
+ useFactory: (firestore, userRepository) => {
156
+ return new UserAddressFirestoreRepository(firestore.firestore, userRepository);
157
+ },
158
+ deps: [AngularFirestore, 'UserRepository'],
159
+ },
160
+ {
161
+ provide: 'UserPaymentMethodRepository',
162
+ useFactory: (firestore, userRepository) => {
163
+ return new UserPaymentMethodFirestoreRepository(firestore.firestore, userRepository);
164
+ },
165
+ deps: [AngularFirestore, 'UserRepository'],
166
+ },
167
+ {
168
+ provide: 'VariantRepository',
169
+ useFactory: (firestore, productRepository) => {
170
+ return new ProductVariantFirestoreRepository(firestore.firestore, productRepository);
171
+ },
172
+ deps: [AngularFirestore, 'ProductRepository'],
173
+ },
174
+ ], imports: [[AngularFireModule]] });
175
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: AngularFirestoreModule, decorators: [{
176
+ type: NgModule,
177
+ args: [{
178
+ imports: [AngularFireModule],
179
+ providers: [
180
+ {
181
+ provide: 'BeautyProfileRepository',
182
+ useFactory: (firestore, userRepository) => {
183
+ return new UserBeautyProfileFirestoreRepository(firestore.firestore, userRepository);
184
+ },
185
+ deps: [AngularFirestore, 'UserRepository'],
186
+ },
187
+ {
188
+ provide: 'Buy2WinRepository',
189
+ useFactory: (firestore) => {
190
+ return new Buy2WinFirestoreRepository(firestore.firestore);
191
+ },
192
+ deps: [AngularFirestore],
193
+ },
194
+ {
195
+ provide: 'CategoryRepository',
196
+ useFactory: (firestore) => {
197
+ return new CategoryFirestoreRepository(firestore.firestore);
198
+ },
199
+ deps: [AngularFirestore],
200
+ },
201
+ {
202
+ provide: 'CheckoutRepository',
203
+ useFactory: (firestore) => {
204
+ return new CheckoutFirestoreRepository(firestore.firestore);
205
+ },
206
+ deps: [AngularFirestore],
207
+ },
208
+ {
209
+ provide: 'CheckoutSubscriptionRepository',
210
+ useFactory: (firestore) => {
211
+ return new CheckoutSubscriptionFirestoreRepository(firestore.firestore);
212
+ },
213
+ deps: [AngularFirestore],
214
+ },
215
+ {
216
+ provide: 'CouponRepository',
217
+ useFactory: (firestore) => {
218
+ return new CouponFirestoreRepository(firestore.firestore);
219
+ },
220
+ deps: [AngularFirestore],
221
+ },
222
+ {
223
+ provide: 'EditionRepository',
224
+ useFactory: (firestore, subscriptionRepository) => {
225
+ return new SubscriptionEditionFirestoreRepository(firestore.firestore, subscriptionRepository);
226
+ },
227
+ deps: [AngularFirestore, 'SubscriptionRepository'],
228
+ },
229
+ {
230
+ provide: 'HomeRepository',
231
+ useFactory: (firestore) => {
232
+ return new HomeFirestoreRepository(firestore.firestore);
233
+ },
234
+ deps: [AngularFirestore],
235
+ },
236
+ {
237
+ provide: 'LeadRepository',
238
+ useFactory: (firestore) => {
239
+ return new LeadFirestoreRepository(firestore.firestore);
240
+ },
241
+ deps: [AngularFirestore],
242
+ },
243
+ {
244
+ provide: 'LegacyOrderRepository',
245
+ useFactory: (firestore) => {
246
+ return new LegacyOrderFirestoreRepository(firestore.firestore);
247
+ },
248
+ deps: [AngularFirestore],
249
+ },
250
+ {
251
+ provide: 'ShopMenuRepository',
252
+ useFactory: (firestore) => {
253
+ return new ShopMenuFirestoreRepository(firestore.firestore);
254
+ },
255
+ deps: [AngularFirestore],
256
+ },
257
+ {
258
+ provide: 'OrderRepository',
259
+ useFactory: (firestore) => {
260
+ return new OrderFirestoreRepository(firestore.firestore);
261
+ },
262
+ deps: [AngularFirestore],
263
+ },
264
+ {
265
+ provide: 'PaymentRepository',
266
+ useFactory: (firestore) => {
267
+ return new PaymentFirestoreRepository(firestore.firestore);
268
+ },
269
+ deps: [AngularFirestore],
270
+ },
271
+ {
272
+ provide: 'ProductRepository',
273
+ useFactory: (firestore) => {
274
+ return new ProductFirestoreRepository(firestore.firestore);
275
+ },
276
+ deps: [AngularFirestore],
277
+ },
278
+ {
279
+ provide: 'SubscriptionPaymentRepository',
280
+ useFactory: (firestore, subscriptionRepository) => {
281
+ return new SubscriptionPaymentFirestoreRepository(firestore.firestore, subscriptionRepository);
282
+ },
283
+ deps: [AngularFirestore, 'SubscriptionRepository'],
284
+ },
285
+ {
286
+ provide: 'SubscriptionPlanRepository',
287
+ useFactory: (firestore) => {
288
+ return new SubscriptionPlanFirestoreRepository(firestore.firestore);
289
+ },
290
+ deps: [AngularFirestore],
291
+ },
292
+ {
293
+ provide: 'SubscriptionProductRepository',
294
+ useFactory: (firestore) => {
295
+ return new SubscriptionProductFirestoreRepository(firestore.firestore);
296
+ },
297
+ deps: [AngularFirestore],
298
+ },
299
+ {
300
+ provide: 'SubscriptionRepository',
301
+ useFactory: (firestore) => {
302
+ return new SubscriptionFirestoreRepository(firestore.firestore);
303
+ },
304
+ deps: [AngularFirestore],
305
+ },
306
+ {
307
+ provide: 'UserRepository',
308
+ useFactory: (firestore) => {
309
+ return new UserFirestoreRepository(firestore.firestore);
310
+ },
311
+ deps: [AngularFirestore],
312
+ },
313
+ {
314
+ provide: 'UserAddressRepository',
315
+ useFactory: (firestore, userRepository) => {
316
+ return new UserAddressFirestoreRepository(firestore.firestore, userRepository);
317
+ },
318
+ deps: [AngularFirestore, 'UserRepository'],
319
+ },
320
+ {
321
+ provide: 'UserPaymentMethodRepository',
322
+ useFactory: (firestore, userRepository) => {
323
+ return new UserPaymentMethodFirestoreRepository(firestore.firestore, userRepository);
324
+ },
325
+ deps: [AngularFirestore, 'UserRepository'],
326
+ },
327
+ {
328
+ provide: 'VariantRepository',
329
+ useFactory: (firestore, productRepository) => {
330
+ return new ProductVariantFirestoreRepository(firestore.firestore, productRepository);
331
+ },
332
+ deps: [AngularFirestore, 'ProductRepository'],
333
+ },
334
+ ],
335
+ }]
336
+ }] });
337
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1maXJlc3RvcmUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29ubmVjdC1hbmd1bGFyL3NyYy9saWIvYW5ndWxhci1maXJlc3RvcmUubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBdUIsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzdELE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsaUJBQWlCLEVBQ2pCLGdCQUFnQixHQUdqQixNQUFNLGVBQWUsQ0FBQTtBQUN0QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQTtBQUMxRCxPQUFPLEVBRUwsMEJBQTBCLEVBRzFCLDJCQUEyQixFQUUzQiwyQkFBMkIsRUFDM0IsdUNBQXVDLEVBR3ZDLHlCQUF5QixFQUV6Qix1QkFBdUIsRUFHdkIsdUJBQXVCLEVBRXZCLDhCQUE4QixFQUM5QiwyQkFBMkIsRUFHM0Isd0JBQXdCLEVBRXhCLDBCQUEwQixFQUUxQiwwQkFBMEIsRUFDMUIsc0NBQXNDLEVBQ3RDLCtCQUErQixFQUMvQixzQ0FBc0MsRUFFdEMsbUNBQW1DLEVBRW5DLHNDQUFzQyxFQUl0Qyw4QkFBOEIsRUFDOUIsb0NBQW9DLEVBQ3BDLHVCQUF1QixFQUd2QixpQ0FBaUMsRUFFakMsb0NBQW9DLEdBQ3JDLE1BQU0sbUJBQW1CLENBQUE7O0FBMEsxQixNQUFNLE9BQU8sc0JBQXNCO0lBQ2pDLE1BQU0sQ0FBQyxhQUFhLENBQ2xCLE9BQXdCLEVBQ3hCLFlBQXlDO1FBRXpDLE9BQU87WUFDTCxRQUFRLEVBQUUsc0JBQXNCO1lBQ2hDLFNBQVMsRUFBRTtnQkFDVCxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFO2dCQUNoRCxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFO2FBQ3ZEO1NBQ0YsQ0FBQTtJQUNILENB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RSxtQkFBbUIsQ0FBQzt5QkFDOUM7cUJBQ0Y7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXHJcbmltcG9ydCB7XHJcbiAgQW5ndWxhckZpcmVNb2R1bGUsXHJcbiAgRklSRUJBU0VfQVBQX05BTUUsXHJcbiAgRklSRUJBU0VfT1BUSU9OUyxcclxuICBGaXJlYmFzZUFwcENvbmZpZyxcclxuICBGaXJlYmFzZU9wdGlvbnMsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvZmlyZSdcclxuaW1wb3J0IHsgQW5ndWxhckZpcmVzdG9yZSB9IGZyb20gJ0Bhbmd1bGFyL2ZpcmUvZmlyZXN0b3JlJ1xyXG5pbXBvcnQge1xyXG4gIEJlYXV0eVByb2ZpbGVSZXBvc2l0b3J5LFxyXG4gIEJ1eTJXaW5GaXJlc3RvcmVSZXBvc2l0b3J5LFxyXG4gIEJ1eTJXaW5SZXBvc2l0b3J5LFxyXG4gIENhdGVnb3J5UmVwb3NpdG9yeSxcclxuICBDYXRlZ29yeUZpcmVzdG9yZVJlcG9zaXRvcnksXHJcbiAgQ2hlY2tvdXRSZXBvc2l0b3J5LFxyXG4gIENoZWNrb3V0RmlyZXN0b3JlUmVwb3NpdG9yeSxcclxuICBDaGVja291dFN1YnNjcmlwdGlvbkZpcmVzdG9yZVJlcG9zaXRvcnksXHJcbiAgQ2hlY2tvdXRTdWJzY3JpcHRpb25SZXBvc2l0b3J5LFxyXG4gIENvdXBvblJlcG9zaXRvcnksXHJcbiAgQ291cG9uRmlyZXN0b3JlUmVwb3NpdG9yeSxcclxuICBFZGl0aW9uUmVwb3NpdG9yeSxcclxuICBIb21lRmlyZXN0b3JlUmVwb3NpdG9yeSxcclxuICBIb21lUmVwb3NpdG9yeSxcclxuICBMZWFkUmVwb3NpdG9yeSxcclxuICBMZWFkRmlyZXN0b3JlUmVwb3NpdG9yeSxcclxuICBMZWdhY3lPcmRlclJlcG9zaXRvcnksXHJcbiAgTGVnYWN5T3JkZXJGaXJlc3RvcmVSZXBvc2l0b3J5LFxyXG4gIFNob3BNZW51RmlyZXN0b3JlUmVwb3NpdG9yeSxcclxuICBTaG9wTWVudVJlcG9zaXRvcnksXHJcbiAgT3JkZXJSZXBvc2l0b3J5LFxyXG4gIE9yZGVyRmlyZXN0b3JlUmVwb3NpdG9yeSxcclxuICBQYXltZW50UmVwb3NpdG9yeSxcclxuICBQYXltZW50RmlyZXN0b3JlUmVwb3NpdG9yeSxcclxuICBQcm9kdWN0UmVwb3NpdG9yeSxcclxuICBQcm9kdWN0RmlyZXN0b3JlUmVwb3NpdG9yeSxcclxuICBTdWJzY3JpcHRpb25FZGl0aW9uRmlyZXN0b3JlUmVwb3NpdG9yeSxcclxuICBTdWJzY3JpcHRpb25GaXJlc3RvcmVSZXBvc2l0b3J5LFxyXG4gIFN1YnNjcmlwdGlvblBheW1lbnRGaXJlc3RvcmVSZXBvc2l0b3J5LFxyXG4gIFN1YnNjcmlwdGlvblBheW1lbnRSZXBvc2l0b3J5LFxyXG4gIFN1YnNjcmlwdGlvblBsYW5GaXJlc3RvcmVSZXBvc2l0b3J5LFxyXG4gIFN1YnNjcmlwdGlvblBsYW5SZXBvc2l0b3J5LFxyXG4gIFN1YnNjcmlwdGlvblByb2R1Y3RGaXJlc3RvcmVSZXBvc2l0b3J5LFxyXG4gIFN1YnNjcmlwdGlvblByb2R1Y3RSZXBvc2l0b3J5LFxyXG4gIFN1YnNjcmlwdGlvblJlcG9zaXRvcnksXHJcbiAgVXNlckFkZHJlc3NSZXBvc2l0b3J5LFxyXG4gIFVzZXJBZGRyZXNzRmlyZXN0b3JlUmVwb3NpdG9yeSxcclxuICBVc2VyQmVhdXR5UHJvZmlsZUZpcmVzdG9yZVJlcG9zaXRvcnksXHJcbiAgVXNlckZpcmVzdG9yZVJlcG9zaXRvcnksXHJcbiAgVXNlclJlcG9zaXRvcnksXHJcbiAgVmFyaWFudFJlcG9zaXRvcnksXHJcbiAgUHJvZHVjdFZhcmlhbnRGaXJlc3RvcmVSZXBvc2l0b3J5LFxyXG4gIFVzZXJQYXltZW50TWV0aG9kUmVwb3NpdG9yeSxcclxuICBVc2VyUGF5bWVudE1ldGhvZEZpcmVzdG9yZVJlcG9zaXRvcnksXHJcbn0gZnJvbSAnQGluZnJhYjRhL2Nvbm5lY3QnXHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGltcG9ydHM6IFtBbmd1bGFyRmlyZU1vZHVsZV0sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6ICdCZWF1dHlQcm9maWxlUmVwb3NpdG9yeScsXHJcbiAgICAgIHVzZUZhY3Rvcnk6IChmaXJlc3RvcmU6IEFuZ3VsYXJGaXJlc3RvcmUsIHVzZXJSZXBvc2l0b3J5OiBVc2VyRmlyZXN0b3JlUmVwb3NpdG9yeSk6IEJlYXV0eVByb2ZpbGVSZXBvc2l0b3J5ID0+IHtcclxuICAgICAgICByZXR1cm4gbmV3IFVzZXJCZWF1dHlQcm9maWxlRmlyZXN0b3JlUmVwb3NpdG9yeShmaXJlc3RvcmUuZmlyZXN0b3JlLCB1c2VyUmVwb3NpdG9yeSlcclxuICAgICAgfSxcclxuICAgICAgZGVwczogW0FuZ3VsYXJGaXJlc3RvcmUsICdVc2VyUmVwb3NpdG9yeSddLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogJ0J1eTJXaW5SZXBvc2l0b3J5JyxcclxuICAgICAgdXNlRmFjdG9yeTogKGZpcmVzdG9yZTogQW5ndWxhckZpcmVzdG9yZSk6IEJ1eTJXaW5SZXBvc2l0b3J5ID0+IHtcclxuICAgICAgICByZXR1cm4gbmV3IEJ1eTJXaW5GaXJlc3RvcmVSZXBvc2l0b3J5KGZpcmVzdG9yZS5maXJlc3RvcmUpXHJcbiAgICAgIH0sXHJcbiAgICAgIGRlcHM6IFtBbmd1bGFyRmlyZXN0b3JlXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6ICdDYXRlZ29yeVJlcG9zaXRvcnknLFxyXG4gICAgICB1c2VGYWN0b3J5OiAoZmlyZXN0b3JlOiBBbmd1bGFyRmlyZXN0b3JlKTogQ2F0ZWdvcnlSZXBvc2l0b3J5ID0+IHtcclxuICAgICAgICByZXR1cm4gbmV3IENhdGVnb3J5RmlyZXN0b3JlUmVwb3NpdG9yeShmaXJlc3RvcmUuZmlyZXN0b3JlKVxyXG4gICAgICB9LFxyXG4gICAgICBkZXBzOiBbQW5ndWxhckZpcmVzdG9yZV0sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiAnQ2hlY2tvdXRSZXBvc2l0b3J5JyxcclxuICAgICAgdXNlRmFjdG9yeTogKGZpcmVzdG9yZTogQW5ndWxhckZpcmVzdG9yZSk6IENoZWNrb3V0UmVwb3NpdG9yeSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBDaGVja291dEZpcmVzdG9yZVJlcG9zaXRvcnkoZmlyZXN0b3JlLmZpcmVzdG9yZSlcclxuICAgICAgfSxcclxuICAgICAgZGVwczogW0FuZ3VsYXJGaXJlc3RvcmVdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogJ0NoZWNrb3V0U3Vic2NyaXB0aW9uUmVwb3NpdG9yeScsXHJcbiAgICAgIHVzZUZhY3Rvcnk6IChmaXJlc3RvcmU6IEFuZ3VsYXJGaXJlc3RvcmUpOiBDaGVja291dFN1YnNjcmlwdGlvblJlcG9zaXRvcnkgPT4ge1xyXG4gICAgICAgIHJldHVybiBuZXcgQ2hlY2tvdXRTdWJzY3JpcHRpb25GaXJlc3RvcmVSZXBvc2l0b3J5KGZpcmVzdG9yZS5maXJlc3RvcmUpXHJcbiAgICAgIH0sXHJcbiAgICAgIGRlcHM6IFtBbmd1bGFyRmlyZXN0b3JlXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6ICdDb3Vwb25SZXBvc2l0b3J5JyxcclxuICAgICAgdXNlRmFjdG9yeTogKGZpcmVzdG9yZTogQW5ndWxhckZpcmVzdG9yZSk6IENvdXBvblJlcG9zaXRvcnkgPT4ge1xyXG4gICAgICAgIHJldHVybiBuZXcgQ291cG9uRmlyZXN0b3JlUmVwb3NpdG9yeShmaXJlc3RvcmUuZmlyZXN0b3JlKVxyXG4gICAgICB9LFxyXG4gICAgICBkZXBzOiBbQW5ndWxhckZpcmVzdG9yZV0sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiAnRWRpdGlvblJlcG9zaXRvcnknLFxyXG4gICAgICB1c2VGYWN0b3J5OiAoXHJcbiAgICAgICAgZmlyZXN0b3JlOiBBbmd1bGFyRmlyZXN0b3JlLFxyXG4gICAgICAgIHN1YnNjcmlwdGlvblJlcG9zaXRvcnk6IFN1YnNjcmlwdGlvbkZpcmVzdG9yZVJlcG9zaXRvcnksXHJcbiAgICAgICk6IEVkaXRpb25SZXBvc2l0b3J5ID0+IHtcclxuICAgICAgICByZXR1cm4gbmV3IFN1YnNjcmlwdGlvbkVkaXRpb25GaXJlc3RvcmVSZXBvc2l0b3J5KGZpcmVzdG9yZS5maXJlc3RvcmUsIHN1YnNjcmlwdGlvblJlcG9zaXRvcnkpXHJcbiAgICAgIH0sXHJcbiAgICAgIGRlcHM6IFtBbmd1bGFyRmlyZXN0b3JlLCAnU3Vic2NyaXB0aW9uUmVwb3NpdG9yeSddLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogJ0hvbWVSZXBvc2l0b3J5JyxcclxuICAgICAgdXNlRmFjdG9yeTogKGZpcmVzdG9yZTogQW5ndWxhckZpcmVzdG9yZSk6IEhvbWVSZXBvc2l0b3J5ID0+IHtcclxuICAgICAgICByZXR1cm4gbmV3IEhvbWVGaXJlc3RvcmVSZXBvc2l0b3J5KGZpcmVzdG9yZS5maXJlc3RvcmUpXHJcbiAgICAgIH0sXHJcbiAgICAgIGRlcHM6IFtBbmd1bGFyRmlyZXN0b3JlXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6ICdMZWFkUmVwb3NpdG9yeScsXHJcbiAgICAgIHVzZUZhY3Rvcnk6IChmaXJlc3RvcmU6IEFuZ3VsYXJGaXJlc3RvcmUpOiBMZWFkUmVwb3NpdG9yeSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBMZWFkRmlyZXN0b3JlUmVwb3NpdG9yeShmaXJlc3RvcmUuZmlyZXN0b3JlKVxyXG4gICAgICB9LFxyXG4gICAgICBkZXBzOiBbQW5ndWxhckZpcmVzdG9yZV0sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiAnTGVnYWN5T3JkZXJSZXBvc2l0b3J5JyxcclxuICAgICAgdXNlRmFjdG9yeTogKGZpcmVzdG9yZTogQW5ndWxhckZpcmVzdG9yZSk6IExlZ2FjeU9yZGVyUmVwb3NpdG9yeSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBMZWdhY3lPcmRlckZpcmVzdG9yZVJlcG9zaXRvcnkoZmlyZXN0b3JlLmZpcmVzdG9yZSlcclxuICAgICAgfSxcclxuICAgICAgZGVwczogW0FuZ3VsYXJGaXJlc3RvcmVdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogJ1Nob3BNZW51UmVwb3NpdG9yeScsXHJcbiAgICAgIHVzZUZhY3Rvcnk6IChmaXJlc3RvcmU6IEFuZ3VsYXJGaXJlc3RvcmUpOiBTaG9wTWVudVJlcG9zaXRvcnkgPT4ge1xyXG4gICAgICAgIHJldHVybiBuZXcgU2hvcE1lbnVGaXJlc3RvcmVSZXBvc2l0b3J5KGZpcmVzdG9yZS5maXJlc3RvcmUpXHJcbiAgICAgIH0sXHJcbiAgICAgIGRlcHM6IFtBbmd1bGFyRmlyZXN0b3JlXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6ICdPcmRlclJlcG9zaXRvcnknLFxyXG4gICAgICB1c2VGYWN0b3J5OiAoZmlyZXN0b3JlOiBBbmd1bGFyRmlyZXN0b3JlKTogT3JkZXJSZXBvc2l0b3J5ID0+IHtcclxuICAgICAgICByZXR1cm4gbmV3IE9yZGVyRmlyZXN0b3JlUmVwb3NpdG9yeShmaXJlc3RvcmUuZmlyZXN0b3JlKVxyXG4gICAgICB9LFxyXG4gICAgICBkZXBzOiBbQW5ndWxhckZpcmVzdG9yZV0sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiAnUGF5bWVudFJlcG9zaXRvcnknLFxyXG4gICAgICB1c2VGYWN0b3J5OiAoZmlyZXN0b3JlOiBBbmd1bGFyRmlyZXN0b3JlKTogUGF5bWVudFJlcG9zaXRvcnkgPT4ge1xyXG4gICAgICAgIHJldHVybiBuZXcgUGF5bWVudEZpcmVzdG9yZVJlcG9zaXRvcnkoZmlyZXN0b3JlLmZpcmVzdG9yZSlcclxuICAgICAgfSxcclxuICAgICAgZGVwczogW0FuZ3VsYXJGaXJlc3RvcmVdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogJ1Byb2R1Y3RSZXBvc2l0b3J5JyxcclxuICAgICAgdXNlRmFjdG9yeTogKGZpcmVzdG9yZTogQW5ndWxhckZpcmVzdG9yZSk6IFByb2R1Y3RSZXBvc2l0b3J5ID0+IHtcclxuICAgICAgICByZXR1cm4gbmV3IFByb2R1Y3RGaXJlc3RvcmVSZXBvc2l0b3J5KGZpcmVzdG9yZS5maXJlc3RvcmUpXHJcbiAgICAgIH0sXHJcbiAgICAgIGRlcHM6IFtBbmd1bGFyRmlyZXN0b3JlXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6ICdTdWJzY3JpcHRpb25QYXltZW50UmVwb3NpdG9yeScsXHJcbiAgICAgIHVzZUZhY3Rvcnk6IChcclxuICAgICAgICBmaXJlc3RvcmU6IEFuZ3VsYXJGaXJlc3RvcmUsXHJcbiAgICAgICAgc3Vic2NyaXB0aW9uUmVwb3NpdG9yeTogU3Vic2NyaXB0aW9uRmlyZXN0b3JlUmVwb3NpdG9yeSxcclxuICAgICAgKTogU3Vic2NyaXB0aW9uUGF5bWVudFJlcG9zaXRvcnkgPT4ge1xyXG4gICAgICAgIHJldHVybiBuZXcgU3Vic2NyaXB0aW9uUGF5bWVudEZpcmVzdG9yZVJlcG9zaXRvcnkoZmlyZXN0b3JlLmZpcmVzdG9yZSwgc3Vic2NyaXB0aW9uUmVwb3NpdG9yeSlcclxuICAgICAgfSxcclxuICAgICAgZGVwczogW0FuZ3VsYXJGaXJlc3RvcmUsICdTdWJzY3JpcHRpb25SZXBvc2l0b3J5J10sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiAnU3Vic2NyaXB0aW9uUGxhblJlcG9zaXRvcnknLFxyXG4gICAgICB1c2VGYWN0b3J5OiAoZmlyZXN0b3JlOiBBbmd1bGFyRmlyZXN0b3JlKTogU3Vic2NyaXB0aW9uUGxhblJlcG9zaXRvcnkgPT4ge1xyXG4gICAgICAgIHJldHVybiBuZXcgU3Vic2NyaXB0aW9uUGxhbkZpcmVzdG9yZVJlcG9zaXRvcnkoZmlyZXN0b3JlLmZpcmVzdG9yZSlcclxuICAgICAgfSxcclxuICAgICAgZGVwczogW0FuZ3VsYXJGaXJlc3RvcmVdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogJ1N1YnNjcmlwdGlvblByb2R1Y3RSZXBvc2l0b3J5JyxcclxuICAgICAgdXNlRmFjdG9yeTogKGZpcmVzdG9yZTogQW5ndWxhckZpcmVzdG9yZSk6IFN1YnNjcmlwdGlvblByb2R1Y3RSZXBvc2l0b3J5ID0+IHtcclxuICAgICAgICByZXR1cm4gbmV3IFN1YnNjcmlwdGlvblByb2R1Y3RGaXJlc3RvcmVSZXBvc2l0b3J5KGZpcmVzdG9yZS5maXJlc3RvcmUpXHJcbiAgICAgIH0sXHJcbiAgICAgIGRlcHM6IFtBbmd1bGFyRmlyZXN0b3JlXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6ICdTdWJzY3JpcHRpb25SZXBvc2l0b3J5JyxcclxuICAgICAgdXNlRmFjdG9yeTogKGZpcmVzdG9yZTogQW5ndWxhckZpcmVzdG9yZSk6IFN1YnNjcmlwdGlvblJlcG9zaXRvcnkgPT4ge1xyXG4gICAgICAgIHJldHVybiBuZXcgU3Vic2NyaXB0aW9uRmlyZXN0b3JlUmVwb3NpdG9yeShmaXJlc3RvcmUuZmlyZXN0b3JlKVxyXG4gICAgICB9LFxyXG4gICAgICBkZXBzOiBbQW5ndWxhckZpcmVzdG9yZV0sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiAnVXNlclJlcG9zaXRvcnknLFxyXG4gICAgICB1c2VGYWN0b3J5OiAoZmlyZXN0b3JlOiBBbmd1bGFyRmlyZXN0b3JlKTogVXNlclJlcG9zaXRvcnkgPT4ge1xyXG4gICAgICAgIHJldHVybiBuZXcgVXNlckZpcmVzdG9yZVJlcG9zaXRvcnkoZmlyZXN0b3JlLmZpcmVzdG9yZSlcclxuICAgICAgfSxcclxuICAgICAgZGVwczogW0FuZ3VsYXJGaXJlc3RvcmVdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogJ1VzZXJBZGRyZXNzUmVwb3NpdG9yeScsXHJcbiAgICAgIHVzZUZhY3Rvcnk6IChmaXJlc3RvcmU6IEFuZ3VsYXJGaXJlc3RvcmUsIHVzZXJSZXBvc2l0b3J5OiBVc2VyRmlyZXN0b3JlUmVwb3NpdG9yeSk6IFVzZXJBZGRyZXNzUmVwb3NpdG9yeSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBVc2VyQWRkcmVzc0ZpcmVzdG9yZVJlcG9zaXRvcnkoZmlyZXN0b3JlLmZpcmVzdG9yZSwgdXNlclJlcG9zaXRvcnkpXHJcbiAgICAgIH0sXHJcbiAgICAgIGRlcHM6IFtBbmd1bGFyRmlyZXN0b3JlLCAnVXNlclJlcG9zaXRvcnknXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6ICdVc2VyUGF5bWVudE1ldGhvZFJlcG9zaXRvcnknLFxyXG4gICAgICB1c2VGYWN0b3J5OiAoXHJcbiAgICAgICAgZmlyZXN0b3JlOiBBbmd1bGFyRmlyZXN0b3JlLFxyXG4gICAgICAgIHVzZXJSZXBvc2l0b3J5OiBVc2VyRmlyZXN0b3JlUmVwb3NpdG9yeSxcclxuICAgICAgKTogVXNlclBheW1lbnRNZXRob2RSZXBvc2l0b3J5ID0+IHtcclxuICAgICAgICByZXR1cm4gbmV3IFVzZXJQYXltZW50TWV0aG9kRmlyZXN0b3JlUmVwb3NpdG9yeShmaXJlc3RvcmUuZmlyZXN0b3JlLCB1c2VyUmVwb3NpdG9yeSlcclxuICAgICAgfSxcclxuICAgICAgZGVwczogW0FuZ3VsYXJGaXJlc3RvcmUsICdVc2VyUmVwb3NpdG9yeSddLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogJ1ZhcmlhbnRSZXBvc2l0b3J5JyxcclxuICAgICAgdXNlRmFjdG9yeTogKGZpcmVzdG9yZTogQW5ndWxhckZpcmVzdG9yZSwgcHJvZHVjdFJlcG9zaXRvcnk6IFByb2R1Y3RGaXJlc3RvcmVSZXBvc2l0b3J5KTogVmFyaWFudFJlcG9zaXRvcnkgPT4ge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvZHVjdFZhcmlhbnRGaXJlc3RvcmVSZXBvc2l0b3J5KGZpcmVzdG9yZS5maXJlc3RvcmUsIHByb2R1Y3RSZXBvc2l0b3J5KVxyXG4gICAgICB9LFxyXG4gICAgICBkZXBzOiBbQW5ndWxhckZpcmVzdG9yZSwgJ1Byb2R1Y3RSZXBvc2l0b3J5J10sXHJcbiAgICB9LFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBbmd1bGFyRmlyZXN0b3JlTW9kdWxlIHtcclxuICBzdGF0aWMgaW5pdGlhbGl6ZUFwcChcclxuICAgIG9wdGlvbnM6IEZpcmViYXNlT3B0aW9ucyxcclxuICAgIG5hbWVPckNvbmZpZz86IHN0cmluZyB8IEZpcmViYXNlQXBwQ29uZmlnLFxyXG4gICk6IE1vZHVsZVdpdGhQcm92aWRlcnM8QW5ndWxhckZpcmVNb2R1bGU+IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIG5nTW9kdWxlOiBBbmd1bGFyRmlyZXN0b3JlTW9kdWxlLFxyXG4gICAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICB7IHByb3ZpZGU6IEZJUkVCQVNFX09QVElPTlMsIHVzZVZhbHVlOiBvcHRpb25zIH0sXHJcbiAgICAgICAgeyBwcm92aWRlOiBGSVJFQkFTRV9BUFBfTkFNRSwgdXNlVmFsdWU6IG5hbWVPckNvbmZpZyB9LFxyXG4gICAgICBdLFxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=