@growsober/sdk 1.0.5 → 1.0.8

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 (70) hide show
  1. package/dist/__tests__/e2e.test.d.ts +30 -0
  2. package/dist/__tests__/e2e.test.js +959 -63
  3. package/dist/api/mutations/badges.d.ts +116 -0
  4. package/dist/api/mutations/badges.js +177 -0
  5. package/dist/api/mutations/brands.d.ts +251 -0
  6. package/dist/api/mutations/brands.js +242 -0
  7. package/dist/api/mutations/creators.d.ts +131 -0
  8. package/dist/api/mutations/creators.js +129 -0
  9. package/dist/api/mutations/event-chat.d.ts +2 -2
  10. package/dist/api/mutations/event-chat.js +9 -9
  11. package/dist/api/mutations/index.d.ts +4 -0
  12. package/dist/api/mutations/index.js +5 -1
  13. package/dist/api/mutations/jack.d.ts +29 -0
  14. package/dist/api/mutations/jack.js +41 -1
  15. package/dist/api/mutations/products.d.ts +175 -0
  16. package/dist/api/mutations/products.js +226 -0
  17. package/dist/api/mutations/support.d.ts +20 -1
  18. package/dist/api/mutations/support.js +36 -1
  19. package/dist/api/queries/badges.d.ts +221 -0
  20. package/dist/api/queries/badges.js +290 -0
  21. package/dist/api/queries/bookings.d.ts +1 -1
  22. package/dist/api/queries/brands.d.ts +248 -0
  23. package/dist/api/queries/brands.js +226 -0
  24. package/dist/api/queries/businesses.d.ts +61 -1
  25. package/dist/api/queries/businesses.js +27 -1
  26. package/dist/api/queries/creators.d.ts +332 -0
  27. package/dist/api/queries/creators.js +249 -0
  28. package/dist/api/queries/event-chat.d.ts +1 -1
  29. package/dist/api/queries/event-chat.js +4 -4
  30. package/dist/api/queries/events.d.ts +45 -0
  31. package/dist/api/queries/index.d.ts +5 -0
  32. package/dist/api/queries/index.js +6 -1
  33. package/dist/api/queries/jack.d.ts +80 -0
  34. package/dist/api/queries/jack.js +98 -1
  35. package/dist/api/queries/library.d.ts +8 -0
  36. package/dist/api/queries/products.d.ts +185 -0
  37. package/dist/api/queries/products.js +203 -0
  38. package/dist/api/queries/support.d.ts +46 -1
  39. package/dist/api/queries/support.js +48 -1
  40. package/dist/api/queries/venues.d.ts +304 -0
  41. package/dist/api/queries/venues.js +211 -0
  42. package/dist/api/types.d.ts +245 -0
  43. package/dist/api/types.js +6 -1
  44. package/dist/api/utils/eventGrouping.d.ts +104 -0
  45. package/dist/api/utils/eventGrouping.js +155 -0
  46. package/dist/index.d.ts +1 -0
  47. package/dist/index.js +5 -1
  48. package/package.json +5 -2
  49. package/src/__tests__/e2e.test.ts +996 -64
  50. package/src/api/mutations/badges.ts +228 -0
  51. package/src/api/mutations/brands.ts +376 -0
  52. package/src/api/mutations/creators.ts +171 -0
  53. package/src/api/mutations/event-chat.ts +8 -8
  54. package/src/api/mutations/index.ts +4 -0
  55. package/src/api/mutations/jack.ts +50 -1
  56. package/src/api/mutations/products.ts +336 -0
  57. package/src/api/mutations/support.ts +44 -0
  58. package/src/api/queries/badges.ts +385 -0
  59. package/src/api/queries/brands.ts +281 -0
  60. package/src/api/queries/businesses.ts +30 -1
  61. package/src/api/queries/creators.ts +308 -0
  62. package/src/api/queries/event-chat.ts +3 -3
  63. package/src/api/queries/index.ts +5 -0
  64. package/src/api/queries/jack.ts +139 -1
  65. package/src/api/queries/products.ts +312 -0
  66. package/src/api/queries/support.ts +54 -0
  67. package/src/api/queries/venues.ts +271 -0
  68. package/src/api/types.ts +317 -1
  69. package/src/api/utils/eventGrouping.ts +181 -0
  70. package/src/index.ts +6 -0
@@ -3,6 +3,11 @@
3
3
  *
4
4
  * All types are derived from the @growsober/types package which is auto-generated
5
5
  * from the API OpenAPI specification. This ensures single source of truth from Prisma.
6
+ *
7
+ * To regenerate types:
8
+ * 1. Start the API: cd ../growsober-api && npm run start:dev
9
+ * 2. Generate types: cd ../growsober-types && npm run generate && npm run build
10
+ * 3. Rebuild SDK: npm run build
6
11
  */
7
12
  import type { paths, components } from '@growsober/types';
8
13
  /**
@@ -43,6 +48,18 @@ export type PathParams<Path extends keyof paths, Method extends keyof paths[Path
43
48
  path: infer P;
44
49
  };
45
50
  } ? P : Record<string, never>;
51
+ export type BusinessType = components['schemas']['BusinessResponseDto']['type'];
52
+ export type VenueOwnerRole = components['schemas']['VenueOwnerResponseDto']['role'];
53
+ export type BrandOwnerRole = components['schemas']['BrandOwnerResponseDto']['role'];
54
+ export type GatheringType = NonNullable<components['schemas']['EventResponseDto']['gatheringType']>;
55
+ export type EventVisibility = components['schemas']['EventResponseDto']['visibility'];
56
+ export type EventStatus = components['schemas']['EventResponseDto']['status'];
57
+ export type ChatMemberRole = components['schemas']['ChatMemberResponseDto']['role'];
58
+ export type ContentStatus = components['schemas']['LibraryContentResponseDto']['contentStatus'];
59
+ export type BadgeType = components['schemas']['BadgeResponseDto']['type'];
60
+ export type NotificationType = components['schemas']['NotificationResponseDto']['type'];
61
+ export type StreakType = components['schemas']['StreakResponseDto']['type'];
62
+ export type CravingTrigger = NonNullable<components['schemas']['CravingLogResponseDto']['triggerType']>;
46
63
  export type RegisterRequest = components['schemas']['RegisterDto'];
47
64
  export type AuthResponse = components['schemas']['AuthResponseDto'];
48
65
  export type LoginRequest = components['schemas']['LoginDto'];
@@ -67,9 +84,91 @@ export type CreateBookingRequest = components['schemas']['CreateBookingDto'];
67
84
  export type LibraryContentResponse = components['schemas']['LibraryContentResponseDto'];
68
85
  export type LibraryContentDetailResponse = components['schemas']['LibraryContentDetailResponseDto'];
69
86
  export type LibraryProgressResponse = components['schemas']['LibraryProgressResponseDto'];
87
+ export type ContentType = components['schemas']['LibraryContentResponseDto']['type'];
70
88
  export type BusinessResponse = components['schemas']['BusinessResponseDto'];
71
89
  export type OfferResponse = components['schemas']['OfferResponseDto'];
72
90
  export type RedeemOfferRequest = components['schemas']['RedeemOfferDto'];
91
+ export type VenueResponse = components['schemas']['VenueResponseDto'];
92
+ export type VenueOwnerResponse = components['schemas']['VenueOwnerResponseDto'];
93
+ export interface CreateVenueRequest {
94
+ name: string;
95
+ slug: string;
96
+ description?: string;
97
+ type: BusinessType;
98
+ hasAfDrinks?: boolean;
99
+ isAfVenue?: boolean;
100
+ afHighlights?: string[];
101
+ address?: string;
102
+ cityId?: string;
103
+ locationLat?: number;
104
+ locationLong?: number;
105
+ phone?: string;
106
+ email?: string;
107
+ website?: string;
108
+ instagram?: string;
109
+ profileImage?: string;
110
+ bannerImage?: string;
111
+ photos?: string[];
112
+ openingHours?: Record<string, string>;
113
+ }
114
+ export interface UpdateVenueRequest extends Partial<CreateVenueRequest> {
115
+ }
116
+ export interface AddVenueOwnerRequest {
117
+ userId: string;
118
+ role: VenueOwnerRole;
119
+ }
120
+ export type CreatorResponse = components['schemas']['CreatorResponseDto'];
121
+ export type CreatorAvailabilityResponse = components['schemas']['CreatorAvailabilityResponseDto'];
122
+ export interface CreateCreatorRequest {
123
+ slug: string;
124
+ displayName: string;
125
+ bio?: string;
126
+ avatarUrl?: string;
127
+ cityIds?: string[];
128
+ canFacilitate?: boolean;
129
+ canCreateContent?: boolean;
130
+ isInfluencer?: boolean;
131
+ specialties?: string[];
132
+ certifications?: string[];
133
+ sessionRate?: number;
134
+ }
135
+ export interface UpdateCreatorRequest extends Partial<CreateCreatorRequest> {
136
+ }
137
+ export interface CreateAvailabilityRequest {
138
+ dayOfWeek?: number;
139
+ startTime: string;
140
+ endTime: string;
141
+ timezone: string;
142
+ isRecurring?: boolean;
143
+ specificDate?: string;
144
+ }
145
+ export type BrandResponse = components['schemas']['BrandResponseDto'];
146
+ export type BrandOwnerResponse = components['schemas']['BrandOwnerResponseDto'];
147
+ export type BrandCreatorResponse = components['schemas']['BrandCreatorResponseDto'];
148
+ export interface CreateBrandRequest {
149
+ slug: string;
150
+ name: string;
151
+ description?: string;
152
+ logoUrl?: string;
153
+ bannerUrl?: string;
154
+ primaryColor?: string;
155
+ website?: string;
156
+ email?: string;
157
+ instagram?: string;
158
+ }
159
+ export interface UpdateBrandRequest extends Partial<CreateBrandRequest> {
160
+ }
161
+ export interface AddBrandOwnerRequest {
162
+ userId: string;
163
+ role: BrandOwnerRole;
164
+ }
165
+ export interface AddBrandCreatorRequest {
166
+ creatorId: string;
167
+ commissionRate?: number;
168
+ isActive?: boolean;
169
+ startDate?: string;
170
+ endDate?: string;
171
+ }
73
172
  export type SubscriptionResponse = components['schemas']['SubscriptionResponseDto'];
74
173
  export type CreateCheckoutRequest = components['schemas']['CreateCheckoutDto'];
75
174
  export type NotificationResponse = components['schemas']['NotificationResponseDto'];
@@ -97,6 +196,9 @@ export type HabitCompletionResponse = components['schemas']['HabitCompletionResp
97
196
  export type ReflectionResponse = components['schemas']['ReflectionResponseDto'];
98
197
  export type CreateReflectionRequest = components['schemas']['CreateReflectionDto'];
99
198
  export type UpdateReflectionRequest = components['schemas']['UpdateReflectionDto'];
199
+ export type CravingLogResponse = components['schemas']['CravingLogResponseDto'];
200
+ export type LogCravingRequest = components['schemas']['LogCravingDto'];
201
+ export type CravingStatsResponse = components['schemas']['CravingStatsDto'];
100
202
  export type MapMemberResponse = components['schemas']['MapMemberDto'];
101
203
  export type MapHubResponse = components['schemas']['MapHubDto'];
102
204
  export type MapEventResponse = components['schemas']['MapEventDto'];
@@ -131,4 +233,147 @@ export type AdminUpdateEventRequest = components['schemas']['AdminUpdateEventDto
131
233
  export type AdminCreateContentRequest = components['schemas']['AdminCreateContentDto'];
132
234
  export type AdminCreateBusinessRequest = components['schemas']['AdminCreateBusinessDto'];
133
235
  export type AdminOverviewStatsResponse = components['schemas']['AdminOverviewStatsDto'];
236
+ export type BadgeResponse = components['schemas']['BadgeResponseDto'];
237
+ export type UserBadgeResponse = components['schemas']['UserBadgeResponseDto'];
238
+ export type BadgeProgressResponse = components['schemas']['BadgeProgressDto'];
239
+ export interface BadgeWithProgress {
240
+ badge: BadgeResponse;
241
+ currentProgress: number;
242
+ requiredProgress: number;
243
+ percentComplete: number;
244
+ isEarned: boolean;
245
+ }
246
+ export type RedeemType = 'IN_PERSON' | 'ONLINE' | 'BOTH';
247
+ export interface RewardResponse {
248
+ id: string;
249
+ venueId: string | null;
250
+ brandId: string | null;
251
+ badgeId: string;
252
+ title: string;
253
+ description: string | null;
254
+ code: string | null;
255
+ redeemType: RedeemType;
256
+ maxRedemptions: number | null;
257
+ redemptionsUsed: number;
258
+ perUserLimit: number;
259
+ validFrom: string | null;
260
+ validUntil: string | null;
261
+ isActive: boolean;
262
+ createdAt: string;
263
+ badge: {
264
+ id: string;
265
+ name: string;
266
+ slug: string;
267
+ icon: string | null;
268
+ };
269
+ venue?: {
270
+ id: string;
271
+ name: string;
272
+ slug: string;
273
+ profileImage: string | null;
274
+ address: string | null;
275
+ } | null;
276
+ brand?: {
277
+ id: string;
278
+ name: string;
279
+ slug: string;
280
+ logoUrl: string | null;
281
+ } | null;
282
+ }
283
+ export interface RewardRedemptionResponse {
284
+ id: string;
285
+ userId: string;
286
+ rewardId: string;
287
+ redeemedAt: string;
288
+ verifiedAt: string | null;
289
+ verifiedBy: string | null;
290
+ codeUsed: string | null;
291
+ reward: RewardResponse;
292
+ }
293
+ export interface CreateRewardRequest {
294
+ badgeId: string;
295
+ title: string;
296
+ description?: string;
297
+ code?: string;
298
+ redeemType?: RedeemType;
299
+ maxRedemptions?: number;
300
+ perUserLimit?: number;
301
+ validFrom?: string;
302
+ validUntil?: string;
303
+ }
304
+ export interface UpdateRewardRequest {
305
+ title?: string;
306
+ description?: string;
307
+ code?: string;
308
+ redeemType?: RedeemType;
309
+ maxRedemptions?: number;
310
+ perUserLimit?: number;
311
+ validFrom?: string;
312
+ validUntil?: string;
313
+ isActive?: boolean;
314
+ }
315
+ export interface UserWalletResponse {
316
+ badges: Array<{
317
+ id: string;
318
+ badgeId: string;
319
+ userId: string;
320
+ awardedAt: string;
321
+ badge: BadgeResponse;
322
+ availableRewards: RewardResponse[];
323
+ redeemedRewards: Array<RewardRedemptionResponse & {
324
+ qrToken: string;
325
+ }>;
326
+ }>;
327
+ stats: {
328
+ totalBadges: number;
329
+ totalAvailableRewards: number;
330
+ totalRedeemedRewards: number;
331
+ };
332
+ }
333
+ /** @deprecated Use RewardResponse instead */
334
+ export interface PartnerRewardResponse {
335
+ id: string;
336
+ businessId: string;
337
+ badgeId: string;
338
+ title: string;
339
+ description: string | null;
340
+ code: string | null;
341
+ maxRedemptions: number | null;
342
+ redemptionsUsed: number;
343
+ perUserLimit: number;
344
+ validFrom: string;
345
+ validUntil: string | null;
346
+ isActive: boolean;
347
+ createdAt: string;
348
+ badge: {
349
+ id: string;
350
+ name: string;
351
+ slug: string;
352
+ icon: string | null;
353
+ };
354
+ business: {
355
+ id: string;
356
+ name: string;
357
+ profileImage: string | null;
358
+ };
359
+ }
360
+ /** @deprecated Use RewardRedemptionResponse instead */
361
+ export interface PartnerRewardRedemptionResponse {
362
+ id: string;
363
+ userId: string;
364
+ partnerRewardId: string;
365
+ redeemedAt: string;
366
+ verifiedAt: string | null;
367
+ partnerReward: PartnerRewardResponse;
368
+ }
369
+ /** @deprecated Use CreateRewardRequest instead */
370
+ export interface CreatePartnerRewardRequest {
371
+ badgeId: string;
372
+ title: string;
373
+ description?: string;
374
+ code?: string;
375
+ maxRedemptions?: number;
376
+ perUserLimit?: number;
377
+ validUntil?: string;
378
+ }
134
379
  export type { paths, components };
package/dist/api/types.js CHANGED
@@ -4,6 +4,11 @@
4
4
  *
5
5
  * All types are derived from the @growsober/types package which is auto-generated
6
6
  * from the API OpenAPI specification. This ensures single source of truth from Prisma.
7
+ *
8
+ * To regenerate types:
9
+ * 1. Start the API: cd ../growsober-api && npm run start:dev
10
+ * 2. Generate types: cd ../growsober-types && npm run generate && npm run build
11
+ * 3. Rebuild SDK: npm run build
7
12
  */
8
13
  Object.defineProperty(exports, "__esModule", { value: true });
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXBpL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7R0FLRyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR3Jvd1NvYmVyIFNESyBUeXBlc1xuICpcbiAqIEFsbCB0eXBlcyBhcmUgZGVyaXZlZCBmcm9tIHRoZSBAZ3Jvd3NvYmVyL3R5cGVzIHBhY2thZ2Ugd2hpY2ggaXMgYXV0by1nZW5lcmF0ZWRcbiAqIGZyb20gdGhlIEFQSSBPcGVuQVBJIHNwZWNpZmljYXRpb24uIFRoaXMgZW5zdXJlcyBzaW5nbGUgc291cmNlIG9mIHRydXRoIGZyb20gUHJpc21hLlxuICovXG5cbmltcG9ydCB0eXBlIHsgcGF0aHMsIGNvbXBvbmVudHMgfSBmcm9tICdAZ3Jvd3NvYmVyL3R5cGVzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVFlQRSBFWFRSQUNUSU9OIEhFTFBFUlNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBFeHRyYWN0IHJlcXVlc3QgYm9keSB0eXBlIGZvciBhIGdpdmVuIGVuZHBvaW50IGFuZCBtZXRob2RcbiAqL1xuZXhwb3J0IHR5cGUgUmVxdWVzdEJvZHk8XG4gIFBhdGggZXh0ZW5kcyBrZXlvZiBwYXRocyxcbiAgTWV0aG9kIGV4dGVuZHMga2V5b2YgcGF0aHNbUGF0aF1cbj4gPSBwYXRoc1tQYXRoXVtNZXRob2RdIGV4dGVuZHMgeyByZXF1ZXN0Qm9keTogeyBjb250ZW50OiB7ICdhcHBsaWNhdGlvbi9qc29uJzogaW5mZXIgVCB9IH0gfVxuICA/IFRcbiAgOiBuZXZlcjtcblxuLyoqXG4gKiBFeHRyYWN0IHJlc3BvbnNlIHR5cGUgZm9yIGEgZ2l2ZW4gZW5kcG9pbnQsIG1ldGhvZCwgYW5kIHN0YXR1cyBjb2RlXG4gKi9cbmV4cG9ydCB0eXBlIFJlc3BvbnNlQm9keTxcbiAgUGF0aCBleHRlbmRzIGtleW9mIHBhdGhzLFxuICBNZXRob2QgZXh0ZW5kcyBrZXlvZiBwYXRoc1tQYXRoXSxcbiAgU3RhdHVzIGV4dGVuZHMgbnVtYmVyID0gMjAwXG4+ID0gcGF0aHNbUGF0aF1bTWV0aG9kXSBleHRlbmRzIHsgcmVzcG9uc2VzOiB7IFtLIGluIFN0YXR1c106IHsgY29udGVudDogeyAnYXBwbGljYXRpb24vanNvbic6IGluZmVyIFQgfSB9IH0gfVxuICA/IFRcbiAgOiBuZXZlcjtcblxuLyoqXG4gKiBFeHRyYWN0IHF1ZXJ5IHBhcmFtZXRlcnMgdHlwZSBmb3IgYSBnaXZlbiBlbmRwb2ludCBhbmQgbWV0aG9kXG4gKi9cbmV4cG9ydCB0eXBlIFF1ZXJ5UGFyYW1zPFxuICBQYXRoIGV4dGVuZHMga2V5b2YgcGF0aHMsXG4gIE1ldGhvZCBleHRlbmRzIGtleW9mIHBhdGhzW1BhdGhdXG4+ID0gcGF0aHNbUGF0aF1bTWV0aG9kXSBleHRlbmRzIHsgcGFyYW1ldGVyczogeyBxdWVyeT86IGluZmVyIFEgfSB9XG4gID8gUVxuICA6IFJlY29yZDxzdHJpbmcsIG5ldmVyPjtcblxuLyoqXG4gKiBFeHRyYWN0IHBhdGggcGFyYW1ldGVycyB0eXBlIGZvciBhIGdpdmVuIGVuZHBvaW50IGFuZCBtZXRob2RcbiAqL1xuZXhwb3J0IHR5cGUgUGF0aFBhcmFtczxcbiAgUGF0aCBleHRlbmRzIGtleW9mIHBhdGhzLFxuICBNZXRob2QgZXh0ZW5kcyBrZXlvZiBwYXRoc1tQYXRoXVxuPiA9IHBhdGhzW1BhdGhdW01ldGhvZF0gZXh0ZW5kcyB7IHBhcmFtZXRlcnM6IHsgcGF0aDogaW5mZXIgUCB9IH1cbiAgPyBQXG4gIDogUmVjb3JkPHN0cmluZywgbmV2ZXI+O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBBVVRIIFRZUEVTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCB0eXBlIFJlZ2lzdGVyUmVxdWVzdCA9IGNvbXBvbmVudHNbJ3NjaGVtYXMnXVsnUmVnaXN0ZXJEdG8nXTtcbmV4cG9ydCB0eXBlIEF1dGhSZXNwb25zZSA9IGNvbXBvbmVudHNbJ3NjaGVtYXMnXVsnQXV0aFJlc3BvbnNlRHRvJ107XG5leHBvcnQgdHlwZSBMb2dpblJlcXVlc3QgPSBjb21wb25lbnRzWydzY2hlbWFzJ11bJ0xvZ2luRHRvJ107XG5leHBvcnQgdHlwZSBSZWZyZXNoVG9rZW5SZXF1ZXN0ID0gY29tcG9uZW50c1snc2NoZW1hcyddWydSZWZyZXNoVG9rZW5EdG8nXTtcbmV4cG9ydCB0eXBlIFRva2VuUmVzcG9uc2UgPSBjb21wb25lbnRzWydzY2hlbWFzJ11bJ1Rva2VuUmVzcG9uc2VEdG8nXTtcbmV4cG9ydCB0eXBlIEZpcmViYXNlQXV0aFJlcXVlc3QgPSBjb21wb25lbnRzWydzY2hlbWFzJ11bJ0ZpcmViYXNlQXV0aER0byddO1xuZXhwb3J0IHR5cGUgU2VuZE90cFJlcXVlc3QgPSBjb21wb25lbnRzWydzY2hlbWFzJ11bJ1NlbmRPdHBEdG8nXTtcbmV4cG9ydCB0eXBlIE90cFNlbnRSZXNwb25zZSA9IGNvbXBvbmVudHNbJ3NjaGVtYXMnXVsnT3RwU2VudFJlc3BvbnNlRHRvJ107XG5leHBvcnQgdHlwZSBWZXJpZnlPdHBSZXF1ZXN0ID0gY29tcG9uZW50c1snc2NoZW1hcyddWydWZXJpZnlPdHBEdG8nXTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVVNFUiBUWVBFU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgdHlwZSBVc2VyUmVzcG9uc2UgPSBjb21wb25lbnRzWydzY2hlbWFzJ11bJ1VzZXJSZXNwb25zZUR0byddO1xuZXhwb3J0IHR5cGUgVXNlclB1YmxpY1Jlc3BvbnNlID0gY29tcG9uZW50c1snc2NoZW1hcyddWydVc2VyUHVibGljUmVzcG9uc2VEdG8nXTtcbmV4cG9ydCB0eXBlIENyZWF0ZVVzZXJSZXF1ZXN0ID0gY29tcG9uZW50c1snc2NoZW1hcyddWydDcmVhdGVVc2VyRHRvJ107XG5leHBvcnQgdHlwZSBVcGRhdGVVc2VyUmVxdWVzdCA9IGNvbXBvbmVudHNbJ3NjaGVtYXMnXVsnVXBkYXRlVXNlckR0byddO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBIVUIgVFlQRVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IHR5cGUgSHViUmVzcG9uc2UgPSBjb21wb25lbnRzWydzY2hlbWFzJ11bJ0h1YlJlc3BvbnNlRHRvJ107XG5leHBvcnQgdHlwZSBDcmVhdGVIdWJSZXF1ZXN0ID0gY29tcG9uZW50c1snc2NoZW1hcyddWydDcmVhdGVIdWJEdG8nXTtcbmV4cG9ydCB0eXBlIFVwZGF0ZUh1YlJlcXVlc3QgPSBjb21wb25lbnRzWydzY2hlbWFzJ11bJ1VwZGF0ZUh1YkR0byddO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBFVkVOVCBUWVBFU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgdHlwZSBFdmVudFJlc3BvbnNlID0gY29tcG9uZW50c1snc2NoZW1hcyddWydFdmVudFJlc3BvbnNlRHRvJ107XG5leHBvcnQgdHlwZSBDcmVhdGVFdmVudFJlcXVlc3QgPSBjb21wb25lbnRzWydzY2hlbWFzJ11bJ0NyZWF0ZUV2ZW50RHRvJ107XG5leHBvcnQgdHlwZSBVcGRhdGVFdmVudFJlcXVlc3QgPSBjb21wb25lbnRzWydzY2hlbWFzJ11bJ1VwZGF0ZUV2ZW50RHRvJ107XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEJPT0tJTkcgVFlQRVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IHR5cGUgQm9va2luZ1Jlc3BvbnNlID0gY29tcG9uZW50c1snc2NoZW1hcyddWydCb29raW5nUmVzcG9uc2VEdG8nXTtcbmV4cG9ydCB0eXBlIENyZWF0ZUJvb2tpbmdSZXF1ZXN0ID0gY29tcG9uZW50c1snc2NoZW1hcyddWydDcmVhdGVCb29raW5nRHRvJ107XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIExJQlJBUlkgVFlQRVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IHR5cGUgTGlicmFyeUNvbnRlbnRSZXNwb25zZSA9IGNvbXBvbmVudHNbJ3NjaGVtYXMnXVsnTGlicmFyeUNvbnRlbnRSZXNwb25zZUR0byddO1xuZXhwb3J0IHR5cGUgTGlicmFyeUNvbnRlbnREZXRhaWxSZXNwb25zZSA9IGNvbXBvbmVudHNbJ3NjaGVtYXMnXVsnTGlicmFyeUNvbnRlbnREZXRhaWxSZXNwb25zZUR0byddO1xuZXhwb3J0IHR5cGUgTGlicmFyeVByb2dyZXNzUmVzcG9uc2UgPSBjb21wb25lbnRzWydzY2hlbWFzJ11bJ0xpYnJhcnlQcm9ncmVzc1Jlc3BvbnNlRHRvJ107XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEJVU0lORVNTICYgT0ZGRVIgVFlQRVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IHR5cGUgQnVzaW5lc3NSZXNwb25zZSA9IGNvbXBvbmVudHNbJ3NjaGVtYXMnXVsnQnVzaW5lc3NSZXNwb25zZUR0byddO1xuZXhwb3J0IHR5cGUgT2ZmZXJSZXNwb25zZSA9IGNvbXBvbmVudHNbJ3NjaGVtYXMnXVsnT2ZmZXJSZXNwb25zZUR0byddO1xuZXhwb3J0IHR5cGUgUmVkZWVtT2ZmZXJSZXF1ZXN0ID0gY29tcG9uZW50c1snc2NoZW1hcyddWydSZWRlZW1PZmZlckR0byddO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTVUJTQ1JJUFRJT04gVFlQRVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IHR5cGUgU3Vic2NyaXB0aW9uUmVzcG9uc2UgPSBjb21wb25lbnRzWydzY2hlbWFzJ11bJ1N1YnNjcmlwdGlvblJlc3BvbnNlRHRvJ107XG5leHBvcnQgdHlwZSBDcmVhdGVDaGVja291dFJlcXVlc3QgPSBjb21wb25lbnRzWydzY2hlbWFzJ11bJ0NyZWF0ZUNoZWNrb3V0RHRvJ107XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE5PVElGSUNBVElPTiBUWVBFU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgdHlwZSBOb3RpZmljYXRpb25SZXNwb25zZSA9IGNvbXBvbmVudHNbJ3NjaGVtYXMnXVsnTm90aWZpY2F0aW9uUmVzcG9uc2VEdG8nXTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gREVWSUNFIFRPS0VOIFRZUEVTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCB0eXBlIFJlZ2lzdGVyRGV2aWNlVG9rZW5SZXF1ZXN0ID0gY29tcG9uZW50c1snc2NoZW1hcyddWydSZWdpc3RlckRldmljZUR0byddO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTVVBQT1JUIFRZUEVTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIENoZWNrLWluc1xuZXhwb3J0IHR5cGUgQ2hlY2tJblJlc3BvbnNlID0gY29tcG9uZW50c1snc2NoZW1hcyddWydDaGVja0luUmVzcG9uc2VEdG8nXTtcbmV4cG9ydCB0eXBlIENyZWF0ZUNoZWNrSW5SZXF1ZXN0ID0gY29tcG9uZW50c1snc2NoZW1hcyddWydDcmVhdGVDaGVja0luRHRvJ107XG5leHBvcnQgdHlwZSBVcGRhdGVDaGVja0luUmVxdWVzdCA9IGNvbXBvbmVudHNbJ3NjaGVtYXMnXVsnVXBkYXRlQ2hlY2tJbkR0byddO1xuZXhwb3J0IHR5cGUgQ2hlY2tJblN0cmVha1Jlc3BvbnNlID0gY29tcG9uZW50c1snc2NoZW1hcyddWydDaGVja0luU3RyZWFrRHRvJ107XG5cbi8vIFdpbnNcbmV4cG9ydCB0eXBlIFdpblJlc3BvbnNlID0gY29tcG9uZW50c1snc2NoZW1hcyddWydXaW5SZXNwb25zZUR0byddO1xuZXhwb3J0IHR5cGUgQ3JlYXRlV2luUmVxdWVzdCA9IGNvbXBvbmVudHNbJ3NjaGVtYXMnXVsnQ3JlYXRlV2luRHRvJ107XG5leHBvcnQgdHlwZSBXaW5Db3VudFJlc3BvbnNlID0gY29tcG9uZW50c1snc2NoZW1hcyddWydXaW5Db3VudER0byddO1xuXG4vLyBKYWNrIEFJIENvbnZlcnNhdGlvbnNcbmV4cG9ydCB0eXBlIENvbnZlcnNhdGlvblJlc3BvbnNlID0gY29tcG9uZW50c1snc2NoZW1hcyddWydDb252ZXJzYXRpb25SZXNwb25zZUR0byddO1xuZXhwb3J0IHR5cGUgQ29udmVyc2F0aW9uV2l0aE1lc3NhZ2VzUmVzcG9uc2UgPSBjb21wb25lbnRzWydzY2hlbWFzJ11bJ0NvbnZlcnNhdGlvbldpdGhNZXNzYWdlc0R0byddO1xuZXhwb3J0IHR5cGUgQ3JlYXRlQ29udmVyc2F0aW9uUmVxdWVzdCA9IGNvbXBvbmVudHNbJ3NjaGVtYXMnXVsnQ3JlYXRlQ29udmVyc2F0aW9uRHRvJ107XG5leHBvcnQgdHlwZSBKYWNrTWVzc2FnZVJlc3BvbnNlID0gY29tcG9uZW50c1snc2NoZW1hcyddWydNZXNzYWdlUmVzcG9uc2VEdG8nXTtcbmV4cG9ydCB0eXBlIFNlbmRKYWNrTWVzc2FnZVJlcXVlc3QgPSBjb21wb25lbnRzWydzY2hlbWFzJ11bJ1NlbmRNZXNzYWdlRHRvJ107XG5cbi8vIE1vb2QgTG9nc1xuZXhwb3J0IHR5cGUgTW9vZExvZ1Jlc3BvbnNlID0gY29tcG9uZW50c1snc2NoZW1hcyddWydNb29kTG9nUmVzcG9uc2VEdG8nXTtcbmV4cG9ydCB0eXBlIExvZ01vb2RSZXF1ZXN0ID0gY29tcG9uZW50c1snc2NoZW1hcyddWydMb2dNb29kRHRvJ107XG5leHBvcnQgdHlwZSBNb29kU3RhdHNSZXNwb25zZSA9IGNvbXBvbmVudHNbJ3NjaGVtYXMnXVsnTW9vZFN0YXRzRHRvJ107XG5cbi8vIEhhYml0c1xuZXhwb3J0IHR5cGUgSGFiaXRSZXNwb25zZSA9IGNvbXBvbmVudHNbJ3NjaGVtYXMnXVsnSGFiaXRSZXNwb25zZUR0byddO1xuZXhwb3J0IHR5cGUgQ3JlYXRlSGFiaXRSZXF1ZXN0ID0gY29tcG9uZW50c1snc2NoZW1hcyddWydDcmVhdGVIYWJpdER0byddO1xuZXhwb3J0IHR5cGUgVXBkYXRlSGFiaXRSZXF1ZXN0ID0gY29tcG9uZW50c1snc2NoZW1hcyddWydVcGRhdGVIYWJpdER0byddO1xuZXhwb3J0IHR5cGUgQ29tcGxldGVIYWJpdFJlcXVlc3QgPSBjb21wb25lbnRzWydzY2hlbWFzJ11bJ0NvbXBsZXRlSGFiaXREdG8nXTtcbmV4cG9ydCB0eXBlIEhhYml0Q29tcGxldGlvblJlc3BvbnNlID0gY29tcG9uZW50c1snc2NoZW1hcyddWydIYWJpdENvbXBsZXRpb25SZXNwb25zZUR0byddO1xuXG4vLyBSZWZsZWN0aW9uc1xuZXhwb3J0IHR5cGUgUmVmbGVjdGlvblJlc3BvbnNlID0gY29tcG9uZW50c1snc2NoZW1hcyddWydSZWZsZWN0aW9uUmVzcG9uc2VEdG8nXTtcbmV4cG9ydCB0eXBlIENyZWF0ZVJlZmxlY3Rpb25SZXF1ZXN0ID0gY29tcG9uZW50c1snc2NoZW1hcyddWydDcmVhdGVSZWZsZWN0aW9uRHRvJ107XG5leHBvcnQgdHlwZSBVcGRhdGVSZWZsZWN0aW9uUmVxdWVzdCA9IGNvbXBvbmVudHNbJ3NjaGVtYXMnXVsnVXBkYXRlUmVmbGVjdGlvbkR0byddO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBNQVAgVFlQRVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IHR5cGUgTWFwTWVtYmVyUmVzcG9uc2UgPSBjb21wb25lbnRzWydzY2hlbWFzJ11bJ01hcE1lbWJlckR0byddO1xuZXhwb3J0IHR5cGUgTWFwSHViUmVzcG9uc2UgPSBjb21wb25lbnRzWydzY2hlbWFzJ11bJ01hcEh1YkR0byddO1xuZXhwb3J0IHR5cGUgTWFwRXZlbnRSZXNwb25zZSA9IGNvbXBvbmVudHNbJ3NjaGVtYXMnXVsnTWFwRXZlbnREdG8nXTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQU1CQVNTQURPUiBUWVBFU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgdHlwZSBBbWJhc3NhZG9yUmVzcG9uc2UgPSBjb21wb25lbnRzWydzY2hlbWFzJ11bJ0FtYmFzc2Fkb3JSZXNwb25zZUR0byddO1xuZXhwb3J0IHR5cGUgQXBwbHlBbWJhc3NhZG9yUmVxdWVzdCA9IGNvbXBvbmVudHNbJ3NjaGVtYXMnXVsnQXBwbHlBbWJhc3NhZG9yRHRvJ107XG5leHBvcnQgdHlwZSBVcGRhdGVBbWJhc3NhZG9yUmVxdWVzdCA9IGNvbXBvbmVudHNbJ3NjaGVtYXMnXVsnVXBkYXRlQW1iYXNzYWRvckR0byddO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBHUk9XOTAgVFlQRVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IHR5cGUgR3JvdzkwRW5yb2xsbWVudFJlc3BvbnNlID0gY29tcG9uZW50c1snc2NoZW1hcyddWydHcm93OTBFbnJvbGxtZW50UmVzcG9uc2VEdG8nXTtcbmV4cG9ydCB0eXBlIEdyb3c5MFByb2dyZXNzUmVzcG9uc2UgPSBjb21wb25lbnRzWydzY2hlbWFzJ11bJ0dyb3c5MFByb2dyZXNzUmVzcG9uc2VEdG8nXTtcbmV4cG9ydCB0eXBlIEdyb3c5MFRvZGF5UmVzcG9uc2UgPSBjb21wb25lbnRzWydzY2hlbWFzJ11bJ0dyb3c5MFRvZGF5UmVzcG9uc2VEdG8nXTtcbmV4cG9ydCB0eXBlIEdyb3c5MFN0YXRzUmVzcG9uc2UgPSBjb21wb25lbnRzWydzY2hlbWFzJ11bJ0dyb3c5MFN0YXRzUmVzcG9uc2VEdG8nXTtcbmV4cG9ydCB0eXBlIEVucm9sbEdyb3c5MFJlcXVlc3QgPSBjb21wb25lbnRzWydzY2hlbWFzJ11bJ0Vucm9sbEdyb3c5MER0byddO1xuZXhwb3J0IHR5cGUgVXBkYXRlR3JvdzkwUHJvZ3Jlc3NSZXF1ZXN0ID0gY29tcG9uZW50c1snc2NoZW1hcyddWydVcGRhdGVQcm9ncmVzc0R0byddO1xuZXhwb3J0IHR5cGUgVXBkYXRlR3JvdzkwU2V0dGluZ3NSZXF1ZXN0ID0gY29tcG9uZW50c1snc2NoZW1hcyddWydVcGRhdGVTZXR0aW5nc0R0byddO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBNQVRDSElORyBUWVBFU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgdHlwZSBDcmVhdGVNYXRjaFJlcXVlc3QgPSBjb21wb25lbnRzWydzY2hlbWFzJ11bJ0NyZWF0ZU1hdGNoRHRvJ107XG5leHBvcnQgdHlwZSBVcGRhdGVNYXRjaFJlcXVlc3QgPSBjb21wb25lbnRzWydzY2hlbWFzJ11bJ1VwZGF0ZU1hdGNoRHRvJ107XG5leHBvcnQgdHlwZSBDcmVhdGVCdWRkeVJlcXVlc3QgPSBjb21wb25lbnRzWydzY2hlbWFzJ11bJ0NyZWF0ZUJ1ZGR5UmVxdWVzdER0byddO1xuZXhwb3J0IHR5cGUgVXBkYXRlQnVkZHlSZXF1ZXN0ID0gY29tcG9uZW50c1snc2NoZW1hcyddWydVcGRhdGVCdWRkeUR0byddO1xuZXhwb3J0IHR5cGUgTG9nQnVkZHlBY3Rpdml0eVJlcXVlc3QgPSBjb21wb25lbnRzWydzY2hlbWFzJ11bJ0xvZ0J1ZGR5QWN0aXZpdHlEdG8nXTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRVZFTlQgQ0hBVCBUWVBFU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgdHlwZSBFdmVudENoYXRSZXNwb25zZSA9IGNvbXBvbmVudHNbJ3NjaGVtYXMnXVsnRXZlbnRDaGF0UmVzcG9uc2VEdG8nXTtcbmV4cG9ydCB0eXBlIENoYXRNZW1iZXJSZXNwb25zZSA9IGNvbXBvbmVudHNbJ3NjaGVtYXMnXVsnQ2hhdE1lbWJlclJlc3BvbnNlRHRvJ107XG5leHBvcnQgdHlwZSBDaGF0TWVzc2FnZVJlc3BvbnNlID0gY29tcG9uZW50c1snc2NoZW1hcyddWydNZXNzYWdlUmVzcG9uc2VEdG8nXTtcbmV4cG9ydCB0eXBlIFBhZ2luYXRlZE1lc3NhZ2VzUmVzcG9uc2UgPSBjb21wb25lbnRzWydzY2hlbWFzJ11bJ1BhZ2luYXRlZE1lc3NhZ2VzRHRvJ107XG5leHBvcnQgdHlwZSBTZW5kQ2hhdE1lc3NhZ2VSZXF1ZXN0ID0gY29tcG9uZW50c1snc2NoZW1hcyddWydTZW5kTWVzc2FnZUR0byddO1xuZXhwb3J0IHR5cGUgVXBkYXRlQ2hhdE1lc3NhZ2VSZXF1ZXN0ID0gY29tcG9uZW50c1snc2NoZW1hcyddWydVcGRhdGVNZXNzYWdlRHRvJ107XG5leHBvcnQgdHlwZSBVcGRhdGVDaGF0U2V0dGluZ3NSZXF1ZXN0ID0gY29tcG9uZW50c1snc2NoZW1hcyddWydVcGRhdGVDaGF0U2V0dGluZ3NEdG8nXTtcbmV4cG9ydCB0eXBlIFVwZGF0ZU1lbWJlclNldHRpbmdzUmVxdWVzdCA9IGNvbXBvbmVudHNbJ3NjaGVtYXMnXVsnVXBkYXRlTWVtYmVyU2V0dGluZ3NEdG8nXTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQURNSU4gVFlQRVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IHR5cGUgQWRtaW5Mb2dpblJlcXVlc3QgPSBjb21wb25lbnRzWydzY2hlbWFzJ11bJ0FkbWluTG9naW5EdG8nXTtcbmV4cG9ydCB0eXBlIEFkbWluVG9rZW5zUmVzcG9uc2UgPSBjb21wb25lbnRzWydzY2hlbWFzJ11bJ0FkbWluVG9rZW5zRHRvJ107XG5leHBvcnQgdHlwZSBBZG1pblVwZGF0ZVVzZXJSZXF1ZXN0ID0gY29tcG9uZW50c1snc2NoZW1hcyddWydBZG1pblVwZGF0ZVVzZXJEdG8nXTtcbmV4cG9ydCB0eXBlIEFkbWluQ3JlYXRlSHViUmVxdWVzdCA9IGNvbXBvbmVudHNbJ3NjaGVtYXMnXVsnQWRtaW5DcmVhdGVIdWJEdG8nXTtcbmV4cG9ydCB0eXBlIEFkbWluVXBkYXRlRXZlbnRSZXF1ZXN0ID0gY29tcG9uZW50c1snc2NoZW1hcyddWydBZG1pblVwZGF0ZUV2ZW50RHRvJ107XG5leHBvcnQgdHlwZSBBZG1pbkNyZWF0ZUNvbnRlbnRSZXF1ZXN0ID0gY29tcG9uZW50c1snc2NoZW1hcyddWydBZG1pbkNyZWF0ZUNvbnRlbnREdG8nXTtcbmV4cG9ydCB0eXBlIEFkbWluQ3JlYXRlQnVzaW5lc3NSZXF1ZXN0ID0gY29tcG9uZW50c1snc2NoZW1hcyddWydBZG1pbkNyZWF0ZUJ1c2luZXNzRHRvJ107XG5leHBvcnQgdHlwZSBBZG1pbk92ZXJ2aWV3U3RhdHNSZXNwb25zZSA9IGNvbXBvbmVudHNbJ3NjaGVtYXMnXVsnQWRtaW5PdmVydmlld1N0YXRzRHRvJ107XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFJFLUVYUE9SVFNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gUmUtZXhwb3J0IHBhdGhzIGFuZCBjb21wb25lbnRzIGZvciBhZHZhbmNlZCB1c2FnZVxuZXhwb3J0IHR5cGUgeyBwYXRocywgY29tcG9uZW50cyB9O1xuIl19
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXBpL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7OztHQVVHIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHcm93U29iZXIgU0RLIFR5cGVzXG4gKlxuICogQWxsIHR5cGVzIGFyZSBkZXJpdmVkIGZyb20gdGhlIEBncm93c29iZXIvdHlwZXMgcGFja2FnZSB3aGljaCBpcyBhdXRvLWdlbmVyYXRlZFxuICogZnJvbSB0aGUgQVBJIE9wZW5BUEkgc3BlY2lmaWNhdGlvbi4gVGhpcyBlbnN1cmVzIHNpbmdsZSBzb3VyY2Ugb2YgdHJ1dGggZnJvbSBQcmlzbWEuXG4gKlxuICogVG8gcmVnZW5lcmF0ZSB0eXBlczpcbiAqIDEuIFN0YXJ0IHRoZSBBUEk6IGNkIC4uL2dyb3dzb2Jlci1hcGkgJiYgbnBtIHJ1biBzdGFydDpkZXZcbiAqIDIuIEdlbmVyYXRlIHR5cGVzOiBjZCAuLi9ncm93c29iZXItdHlwZXMgJiYgbnBtIHJ1biBnZW5lcmF0ZSAmJiBucG0gcnVuIGJ1aWxkXG4gKiAzLiBSZWJ1aWxkIFNESzogbnBtIHJ1biBidWlsZFxuICovXG5cbmltcG9ydCB0eXBlIHsgcGF0aHMsIGNvbXBvbmVudHMgfSBmcm9tICdAZ3Jvd3NvYmVyL3R5cGVzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVFlQRSBFWFRSQUNUSU9OIEhFTFBFUlNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBFeHRyYWN0IHJlcXVlc3QgYm9keSB0eXBlIGZvciBhIGdpdmVuIGVuZHBvaW50IGFuZCBtZXRob2RcbiAqL1xuZXhwb3J0IHR5cGUgUmVxdWVzdEJvZHk8XG4gIFBhdGggZXh0ZW5kcyBrZXlvZiBwYXRocyxcbiAgTWV0aG9kIGV4dGVuZHMga2V5b2YgcGF0aHNbUGF0aF1cbj4gPSBwYXRoc1tQYXRoXVtNZXRob2RdIGV4dGVuZHMgeyByZXF1ZXN0Qm9keTogeyBjb250ZW50OiB7ICdhcHBsaWNhdGlvbi9qc29uJzogaW5mZXIgVCB9IH0gfVxuICA/IFRcbiAgOiBuZXZlcjtcblxuLyoqXG4gKiBFeHRyYWN0IHJlc3BvbnNlIHR5cGUgZm9yIGEgZ2l2ZW4gZW5kcG9pbnQsIG1ldGhvZCwgYW5kIHN0YXR1cyBjb2RlXG4gKi9cbmV4cG9ydCB0eXBlIFJlc3BvbnNlQm9keTxcbiAgUGF0aCBleHRlbmRzIGtleW9mIHBhdGhzLFxuICBNZXRob2QgZXh0ZW5kcyBrZXlvZiBwYXRoc1tQYXRoXSxcbiAgU3RhdHVzIGV4dGVuZHMgbnVtYmVyID0gMjAwXG4+ID0gcGF0aHNbUGF0aF1bTWV0aG9kXSBleHRlbmRzIHsgcmVzcG9uc2VzOiB7IFtLIGluIFN0YXR1c106IHsgY29udGVudDogeyAnYXBwbGljYXRpb24vanNvbic6IGluZmVyIFQgfSB9IH0gfVxuICA/IFRcbiAgOiBuZXZlcjtcblxuLyoqXG4gKiBFeHRyYWN0IHF1ZXJ5IHBhcmFtZXRlcnMgdHlwZSBmb3IgYSBnaXZlbiBlbmRwb2ludCBhbmQgbWV0aG9kXG4gKi9cbmV4cG9ydCB0eXBlIFF1ZXJ5UGFyYW1zPFxuICBQYXRoIGV4dGVuZHMga2V5b2YgcGF0aHMsXG4gIE1ldGhvZCBleHRlbmRzIGtleW9mIHBhdGhzW1BhdGhdXG4+ID0gcGF0aHNbUGF0aF1bTWV0aG9kXSBleHRlbmRzIHsgcGFyYW1ldGVyczogeyBxdWVyeT86IGluZmVyIFEgfSB9XG4gID8gUVxuICA6IFJlY29yZDxzdHJpbmcsIG5ldmVyPjtcblxuLyoqXG4gKiBFeHRyYWN0IHBhdGggcGFyYW1ldGVycyB0eXBlIGZvciBhIGdpdmVuIGVuZHBvaW50IGFuZCBtZXRob2RcbiAqL1xuZXhwb3J0IHR5cGUgUGF0aFBhcmFtczxcbiAgUGF0aCBleHRlbmRzIGtleW9mIHBhdGhzLFxuICBNZXRob2QgZXh0ZW5kcyBrZXlvZiBwYXRoc1tQYXRoXVxuPiA9IHBhdGhzW1BhdGhdW01ldGhvZF0gZXh0ZW5kcyB7IHBhcmFtZXRlcnM6IHsgcGF0aDogaW5mZXIgUCB9IH1cbiAgPyBQXG4gIDogUmVjb3JkPHN0cmluZywgbmV2ZXI+O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBFTlVNIFRZUEVTIChleHRyYWN0ZWQgZnJvbSBnZW5lcmF0ZWQgc2NoZW1hcyAtIHNpbmdsZSBzb3VyY2Ugb2YgdHJ1dGgpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIEJ1c2luZXNzL1ZlbnVlIHR5cGUgKHVzZWQgZm9yIGJvdGggQnVzaW5lc3MgYW5kIFZlbnVlIG1vZGVscylcbmV4cG9ydCB0eXBlIEJ1c2luZXNzVHlwZSA9IGNvbXBvbmVudHNbJ3NjaGVtYXMnXVsnQnVzaW5lc3NSZXNwb25zZUR0byddWyd0eXBlJ107XG5cbi8vIE93bmVyc2hpcCByb2xlc1xuZXhwb3J0IHR5cGUgVmVudWVPd25lclJvbGUgPSBjb21wb25lbnRzWydzY2hlbWFzJ11bJ1ZlbnVlT3duZXJSZXNwb25zZUR0byddWydyb2xlJ107XG5leHBvcnQgdHlwZSBCcmFuZE93bmVyUm9sZSA9IGNvbXBvbmVudHNbJ3NjaGVtYXMnXVsnQnJhbmRPd25lclJlc3BvbnNlRHRvJ11bJ3JvbGUnXTtcblxuLy8gRXZlbnQgdHlwZXNcbmV4cG9ydCB0eXBlIEdhdGhlcmluZ1R5cGUgPSBOb25OdWxsYWJsZTxjb21wb25lbnRzWydzY2hlbWFzJ11bJ0V2ZW50UmVzcG9uc2VEdG8nXVsnZ2F0aGVyaW5nVHlwZSddPjtcbmV4cG9ydCB0eXBlIEV2ZW50VmlzaWJpbGl0eSA9IGNvbXBvbmVudHNbJ3NjaGVtYXMnXVsnRXZlbnRSZXNwb25zZUR0byddWyd2aXNpYmlsaXR5J107XG5leHBvcnQgdHlwZSBFdmVudFN0YXR1cyA9IGNvbXBvbmVudHNbJ3NjaGVtYXMnXVsnRXZlbnRSZXNwb25zZUR0byddWydzdGF0dXMnXTtcblxuLy8gQ2hhdCByb2xlc1xuZXhwb3J0IHR5cGUgQ2hhdE1lbWJlclJvbGUgPSBjb21wb25lbnRzWydzY2hlbWFzJ11bJ0NoYXRNZW1iZXJSZXNwb25zZUR0byddWydyb2xlJ107XG5cbi8vIENvbnRlbnQgc3RhdHVzXG5leHBvcnQgdHlwZSBDb250ZW50U3RhdHVzID0gY29tcG9uZW50c1snc2NoZW1hcyddWydMaWJyYXJ5Q29udGVudFJlc3BvbnNlRHRvJ11bJ2NvbnRlbnRTdGF0dXMnXTtcblxuLy8gQmFkZ2UgdHlwZXNcbmV4cG9ydCB0eXBlIEJhZGdlVHlwZSA9IGNvbXBvbmVudHNbJ3NjaGVtYXMnXVsnQmFkZ2VSZXNwb25zZUR0byddWyd0eXBlJ107XG5cbi8vIE5vdGlmaWNhdGlvbiB0eXBlc1xuZXhwb3J0IHR5cGUgTm90aWZpY2F0aW9uVHlwZSA9IGNvbXBvbmVudHNbJ3NjaGVtYXMnXVsnTm90aWZpY2F0aW9uUmVzcG9uc2VEdG8nXVsndHlwZSddO1xuXG4vLyBTdHJlYWsgdHlwZXNcbmV4cG9ydCB0eXBlIFN0cmVha1R5cGUgPSBjb21wb25lbnRzWydzY2hlbWFzJ11bJ1N0cmVha1Jlc3BvbnNlRHRvJ11bJ3R5cGUnXTtcblxuLy8gQ3JhdmluZyB0cmlnZ2Vyc1xuZXhwb3J0IHR5cGUgQ3JhdmluZ1RyaWdnZXIgPSBOb25OdWxsYWJsZTxjb21wb25lbnRzWydzY2hlbWFzJ11bJ0NyYXZpbmdMb2dSZXNwb25zZUR0byddWyd0cmlnZ2VyVHlwZSddPjtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQVVUSCBUWVBFU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgdHlwZSBSZWdpc3RlclJlcXVlc3QgPSBjb21wb25lbnRzWydzY2hlbWFzJ11bJ1JlZ2lzdGVyRHRvJ107XG5leHBvcnQgdHlwZSBBdXRoUmVzcG9uc2UgPSBjb21wb25lbnRzWydzY2hlbWFzJ11bJ0F1dGhSZXNwb25zZUR0byddO1xuZXhwb3J0IHR5cGUgTG9naW5SZXF1ZXN0ID0gY29tcG9uZW50c1snc2NoZW1hcyddWydMb2dpbkR0byddO1xuZXhwb3J0IHR5cGUgUmVmcmVzaFRva2VuUmVxdWVzdCA9IGNvbXBvbmVudHNbJ3NjaGVtYXMnXVsnUmVmcmVzaFRva2VuRHRvJ107XG5leHBvcnQgdHlwZSBUb2tlblJlc3BvbnNlID0gY29tcG9uZW50c1snc2NoZW1hcyddWydUb2tlblJlc3BvbnNlRHRvJ107XG5leHBvcnQgdHlwZSBGaXJlYmFzZUF1dGhSZXF1ZXN0ID0gY29tcG9uZW50c1snc2NoZW1hcyddWydGaXJlYmFzZUF1dGhEdG8nXTtcbmV4cG9ydCB0eXBlIFNlbmRPdHBSZXF1ZXN0ID0gY29tcG9uZW50c1snc2NoZW1hcyddWydTZW5kT3RwRHRvJ107XG5leHBvcnQgdHlwZSBPdHBTZW50UmVzcG9uc2UgPSBjb21wb25lbnRzWydzY2hlbWFzJ11bJ090cFNlbnRSZXNwb25zZUR0byddO1xuZXhwb3J0IHR5cGUgVmVyaWZ5T3RwUmVxdWVzdCA9IGNvbXBvbmVudHNbJ3NjaGVtYXMnXVsnVmVyaWZ5T3RwRHRvJ107XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFVTRVIgVFlQRVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IHR5cGUgVXNlclJlc3BvbnNlID0gY29tcG9uZW50c1snc2NoZW1hcyddWydVc2VyUmVzcG9uc2VEdG8nXTtcbmV4cG9ydCB0eXBlIFVzZXJQdWJsaWNSZXNwb25zZSA9IGNvbXBvbmVudHNbJ3NjaGVtYXMnXVsnVXNlclB1YmxpY1Jlc3BvbnNlRHRvJ107XG5leHBvcnQgdHlwZSBDcmVhdGVVc2VyUmVxdWVzdCA9IGNvbXBvbmVudHNbJ3NjaGVtYXMnXVsnQ3JlYXRlVXNlckR0byddO1xuZXhwb3J0IHR5cGUgVXBkYXRlVXNlclJlcXVlc3QgPSBjb21wb25lbnRzWydzY2hlbWFzJ11bJ1VwZGF0ZVVzZXJEdG8nXTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gSFVCIFRZUEVTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCB0eXBlIEh1YlJlc3BvbnNlID0gY29tcG9uZW50c1snc2NoZW1hcyddWydIdWJSZXNwb25zZUR0byddO1xuZXhwb3J0IHR5cGUgQ3JlYXRlSHViUmVxdWVzdCA9IGNvbXBvbmVudHNbJ3NjaGVtYXMnXVsnQ3JlYXRlSHViRHRvJ107XG5leHBvcnQgdHlwZSBVcGRhdGVIdWJSZXF1ZXN0ID0gY29tcG9uZW50c1snc2NoZW1hcyddWydVcGRhdGVIdWJEdG8nXTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRVZFTlQgVFlQRVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IHR5cGUgRXZlbnRSZXNwb25zZSA9IGNvbXBvbmVudHNbJ3NjaGVtYXMnXVsnRXZlbnRSZXNwb25zZUR0byddO1xuZXhwb3J0IHR5cGUgQ3JlYXRlRXZlbnRSZXF1ZXN0ID0gY29tcG9uZW50c1snc2NoZW1hcyddWydDcmVhdGVFdmVudER0byddO1xuZXhwb3J0IHR5cGUgVXBkYXRlRXZlbnRSZXF1ZXN0ID0gY29tcG9uZW50c1snc2NoZW1hcyddWydVcGRhdGVFdmVudER0byddO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBCT09LSU5HIFRZUEVTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCB0eXBlIEJvb2tpbmdSZXNwb25zZSA9IGNvbXBvbmVudHNbJ3NjaGVtYXMnXVsnQm9va2luZ1Jlc3BvbnNlRHRvJ107XG5leHBvcnQgdHlwZSBDcmVhdGVCb29raW5nUmVxdWVzdCA9IGNvbXBvbmVudHNbJ3NjaGVtYXMnXVsnQ3JlYXRlQm9va2luZ0R0byddO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBMSUJSQVJZIFRZUEVTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCB0eXBlIExpYnJhcnlDb250ZW50UmVzcG9uc2UgPSBjb21wb25lbnRzWydzY2hlbWFzJ11bJ0xpYnJhcnlDb250ZW50UmVzcG9uc2VEdG8nXTtcbmV4cG9ydCB0eXBlIExpYnJhcnlDb250ZW50RGV0YWlsUmVzcG9uc2UgPSBjb21wb25lbnRzWydzY2hlbWFzJ11bJ0xpYnJhcnlDb250ZW50RGV0YWlsUmVzcG9uc2VEdG8nXTtcbmV4cG9ydCB0eXBlIExpYnJhcnlQcm9ncmVzc1Jlc3BvbnNlID0gY29tcG9uZW50c1snc2NoZW1hcyddWydMaWJyYXJ5UHJvZ3Jlc3NSZXNwb25zZUR0byddO1xuZXhwb3J0IHR5cGUgQ29udGVudFR5cGUgPSBjb21wb25lbnRzWydzY2hlbWFzJ11bJ0xpYnJhcnlDb250ZW50UmVzcG9uc2VEdG8nXVsndHlwZSddO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBCVVNJTkVTUyAmIE9GRkVSIFRZUEVTIChMZWdhY3kpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCB0eXBlIEJ1c2luZXNzUmVzcG9uc2UgPSBjb21wb25lbnRzWydzY2hlbWFzJ11bJ0J1c2luZXNzUmVzcG9uc2VEdG8nXTtcbmV4cG9ydCB0eXBlIE9mZmVyUmVzcG9uc2UgPSBjb21wb25lbnRzWydzY2hlbWFzJ11bJ09mZmVyUmVzcG9uc2VEdG8nXTtcbmV4cG9ydCB0eXBlIFJlZGVlbU9mZmVyUmVxdWVzdCA9IGNvbXBvbmVudHNbJ3NjaGVtYXMnXVsnUmVkZWVtT2ZmZXJEdG8nXTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVkVOVUUgVFlQRVMgKGZyb20gZ2VuZXJhdGVkIE9wZW5BUEkgdHlwZXMpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCB0eXBlIFZlbnVlUmVzcG9uc2UgPSBjb21wb25lbnRzWydzY2hlbWFzJ11bJ1ZlbnVlUmVzcG9uc2VEdG8nXTtcbmV4cG9ydCB0eXBlIFZlbnVlT3duZXJSZXNwb25zZSA9IGNvbXBvbmVudHNbJ3NjaGVtYXMnXVsnVmVudWVPd25lclJlc3BvbnNlRHRvJ107XG5cbi8vIFJlcXVlc3QgdHlwZXMgZm9yIHZlbnVlIG9wZXJhdGlvbnNcbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlVmVudWVSZXF1ZXN0IHtcbiAgbmFtZTogc3RyaW5nO1xuICBzbHVnOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICB0eXBlOiBCdXNpbmVzc1R5cGU7XG4gIGhhc0FmRHJpbmtzPzogYm9vbGVhbjtcbiAgaXNBZlZlbnVlPzogYm9vbGVhbjtcbiAgYWZIaWdobGlnaHRzPzogc3RyaW5nW107XG4gIGFkZHJlc3M/OiBzdHJpbmc7XG4gIGNpdHlJZD86IHN0cmluZztcbiAgbG9jYXRpb25MYXQ/OiBudW1iZXI7XG4gIGxvY2F0aW9uTG9uZz86IG51bWJlcjtcbiAgcGhvbmU/OiBzdHJpbmc7XG4gIGVtYWlsPzogc3RyaW5nO1xuICB3ZWJzaXRlPzogc3RyaW5nO1xuICBpbnN0YWdyYW0/OiBzdHJpbmc7XG4gIHByb2ZpbGVJbWFnZT86IHN0cmluZztcbiAgYmFubmVySW1hZ2U/OiBzdHJpbmc7XG4gIHBob3Rvcz86IHN0cmluZ1tdO1xuICBvcGVuaW5nSG91cnM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVwZGF0ZVZlbnVlUmVxdWVzdCBleHRlbmRzIFBhcnRpYWw8Q3JlYXRlVmVudWVSZXF1ZXN0PiB7fVxuXG5leHBvcnQgaW50ZXJmYWNlIEFkZFZlbnVlT3duZXJSZXF1ZXN0IHtcbiAgdXNlcklkOiBzdHJpbmc7XG4gIHJvbGU6IFZlbnVlT3duZXJSb2xlO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDUkVBVE9SIFRZUEVTIChmcm9tIGdlbmVyYXRlZCBPcGVuQVBJIHR5cGVzKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgdHlwZSBDcmVhdG9yUmVzcG9uc2UgPSBjb21wb25lbnRzWydzY2hlbWFzJ11bJ0NyZWF0b3JSZXNwb25zZUR0byddO1xuZXhwb3J0IHR5cGUgQ3JlYXRvckF2YWlsYWJpbGl0eVJlc3BvbnNlID0gY29tcG9uZW50c1snc2NoZW1hcyddWydDcmVhdG9yQXZhaWxhYmlsaXR5UmVzcG9uc2VEdG8nXTtcblxuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVDcmVhdG9yUmVxdWVzdCB7XG4gIHNsdWc6IHN0cmluZztcbiAgZGlzcGxheU5hbWU6IHN0cmluZztcbiAgYmlvPzogc3RyaW5nO1xuICBhdmF0YXJVcmw/OiBzdHJpbmc7XG4gIGNpdHlJZHM/OiBzdHJpbmdbXTtcbiAgY2FuRmFjaWxpdGF0ZT86IGJvb2xlYW47XG4gIGNhbkNyZWF0ZUNvbnRlbnQ/OiBib29sZWFuO1xuICBpc0luZmx1ZW5jZXI/OiBib29sZWFuO1xuICBzcGVjaWFsdGllcz86IHN0cmluZ1tdO1xuICBjZXJ0aWZpY2F0aW9ucz86IHN0cmluZ1tdO1xuICBzZXNzaW9uUmF0ZT86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVcGRhdGVDcmVhdG9yUmVxdWVzdCBleHRlbmRzIFBhcnRpYWw8Q3JlYXRlQ3JlYXRvclJlcXVlc3Q+IHt9XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlQXZhaWxhYmlsaXR5UmVxdWVzdCB7XG4gIGRheU9mV2Vlaz86IG51bWJlcjtcbiAgc3RhcnRUaW1lOiBzdHJpbmc7XG4gIGVuZFRpbWU6IHN0cmluZztcbiAgdGltZXpvbmU6IHN0cmluZztcbiAgaXNSZWN1cnJpbmc/OiBib29sZWFuO1xuICBzcGVjaWZpY0RhdGU/OiBzdHJpbmc7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEJSQU5EIFRZUEVTIChmcm9tIGdlbmVyYXRlZCBPcGVuQVBJIHR5cGVzKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgdHlwZSBCcmFuZFJlc3BvbnNlID0gY29tcG9uZW50c1snc2NoZW1hcyddWydCcmFuZFJlc3BvbnNlRHRvJ107XG5leHBvcnQgdHlwZSBCcmFuZE93bmVyUmVzcG9uc2UgPSBjb21wb25lbnRzWydzY2hlbWFzJ11bJ0JyYW5kT3duZXJSZXNwb25zZUR0byddO1xuZXhwb3J0IHR5cGUgQnJhbmRDcmVhdG9yUmVzcG9uc2UgPSBjb21wb25lbnRzWydzY2hlbWFzJ11bJ0JyYW5kQ3JlYXRvclJlc3BvbnNlRHRvJ107XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlQnJhbmRSZXF1ZXN0IHtcbiAgc2x1Zzogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBsb2dvVXJsPzogc3RyaW5nO1xuICBiYW5uZXJVcmw/OiBzdHJpbmc7XG4gIHByaW1hcnlDb2xvcj86IHN0cmluZztcbiAgd2Vic2l0ZT86IHN0cmluZztcbiAgZW1haWw/OiBzdHJpbmc7XG4gIGluc3RhZ3JhbT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVcGRhdGVCcmFuZFJlcXVlc3QgZXh0ZW5kcyBQYXJ0aWFsPENyZWF0ZUJyYW5kUmVxdWVzdD4ge31cblxuZXhwb3J0IGludGVyZmFjZSBBZGRCcmFuZE93bmVyUmVxdWVzdCB7XG4gIHVzZXJJZDogc3RyaW5nO1xuICByb2xlOiBCcmFuZE93bmVyUm9sZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBZGRCcmFuZENyZWF0b3JSZXF1ZXN0IHtcbiAgY3JlYXRvcklkOiBzdHJpbmc7XG4gIGNvbW1pc3Npb25SYXRlPzogbnVtYmVyO1xuICBpc0FjdGl2ZT86IGJvb2xlYW47XG4gIHN0YXJ0RGF0ZT86IHN0cmluZztcbiAgZW5kRGF0ZT86IHN0cmluZztcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU1VCU0NSSVBUSU9OIFRZUEVTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCB0eXBlIFN1YnNjcmlwdGlvblJlc3BvbnNlID0gY29tcG9uZW50c1snc2NoZW1hcyddWydTdWJzY3JpcHRpb25SZXNwb25zZUR0byddO1xuZXhwb3J0IHR5cGUgQ3JlYXRlQ2hlY2tvdXRSZXF1ZXN0ID0gY29tcG9uZW50c1snc2NoZW1hcyddWydDcmVhdGVDaGVja291dER0byddO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBOT1RJRklDQVRJT04gVFlQRVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IHR5cGUgTm90aWZpY2F0aW9uUmVzcG9uc2UgPSBjb21wb25lbnRzWydzY2hlbWFzJ11bJ05vdGlmaWNhdGlvblJlc3BvbnNlRHRvJ107XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIERFVklDRSBUT0tFTiBUWVBFU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgdHlwZSBSZWdpc3RlckRldmljZVRva2VuUmVxdWVzdCA9IGNvbXBvbmVudHNbJ3NjaGVtYXMnXVsnUmVnaXN0ZXJEZXZpY2VEdG8nXTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU1VQUE9SVCBUWVBFU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBDaGVjay1pbnNcbmV4cG9ydCB0eXBlIENoZWNrSW5SZXNwb25zZSA9IGNvbXBvbmVudHNbJ3NjaGVtYXMnXVsnQ2hlY2tJblJlc3BvbnNlRHRvJ107XG5leHBvcnQgdHlwZSBDcmVhdGVDaGVja0luUmVxdWVzdCA9IGNvbXBvbmVudHNbJ3NjaGVtYXMnXVsnQ3JlYXRlQ2hlY2tJbkR0byddO1xuZXhwb3J0IHR5cGUgVXBkYXRlQ2hlY2tJblJlcXVlc3QgPSBjb21wb25lbnRzWydzY2hlbWFzJ11bJ1VwZGF0ZUNoZWNrSW5EdG8nXTtcbmV4cG9ydCB0eXBlIENoZWNrSW5TdHJlYWtSZXNwb25zZSA9IGNvbXBvbmVudHNbJ3NjaGVtYXMnXVsnQ2hlY2tJblN0cmVha0R0byddO1xuXG4vLyBXaW5zXG5leHBvcnQgdHlwZSBXaW5SZXNwb25zZSA9IGNvbXBvbmVudHNbJ3NjaGVtYXMnXVsnV2luUmVzcG9uc2VEdG8nXTtcbmV4cG9ydCB0eXBlIENyZWF0ZVdpblJlcXVlc3QgPSBjb21wb25lbnRzWydzY2hlbWFzJ11bJ0NyZWF0ZVdpbkR0byddO1xuZXhwb3J0IHR5cGUgV2luQ291bnRSZXNwb25zZSA9IGNvbXBvbmVudHNbJ3NjaGVtYXMnXVsnV2luQ291bnREdG8nXTtcblxuLy8gSmFjayBBSSBDb252ZXJzYXRpb25zXG5leHBvcnQgdHlwZSBDb252ZXJzYXRpb25SZXNwb25zZSA9IGNvbXBvbmVudHNbJ3NjaGVtYXMnXVsnQ29udmVyc2F0aW9uUmVzcG9uc2VEdG8nXTtcbmV4cG9ydCB0eXBlIENvbnZlcnNhdGlvbldpdGhNZXNzYWdlc1Jlc3BvbnNlID0gY29tcG9uZW50c1snc2NoZW1hcyddWydDb252ZXJzYXRpb25XaXRoTWVzc2FnZXNEdG8nXTtcbmV4cG9ydCB0eXBlIENyZWF0ZUNvbnZlcnNhdGlvblJlcXVlc3QgPSBjb21wb25lbnRzWydzY2hlbWFzJ11bJ0NyZWF0ZUNvbnZlcnNhdGlvbkR0byddO1xuZXhwb3J0IHR5cGUgSmFja01lc3NhZ2VSZXNwb25zZSA9IGNvbXBvbmVudHNbJ3NjaGVtYXMnXVsnTWVzc2FnZVJlc3BvbnNlRHRvJ107XG5leHBvcnQgdHlwZSBTZW5kSmFja01lc3NhZ2VSZXF1ZXN0ID0gY29tcG9uZW50c1snc2NoZW1hcyddWydTZW5kTWVzc2FnZUR0byddO1xuXG4vLyBNb29kIExvZ3NcbmV4cG9ydCB0eXBlIE1vb2RMb2dSZXNwb25zZSA9IGNvbXBvbmVudHNbJ3NjaGVtYXMnXVsnTW9vZExvZ1Jlc3BvbnNlRHRvJ107XG5leHBvcnQgdHlwZSBMb2dNb29kUmVxdWVzdCA9IGNvbXBvbmVudHNbJ3NjaGVtYXMnXVsnTG9nTW9vZER0byddO1xuZXhwb3J0IHR5cGUgTW9vZFN0YXRzUmVzcG9uc2UgPSBjb21wb25lbnRzWydzY2hlbWFzJ11bJ01vb2RTdGF0c0R0byddO1xuXG4vLyBIYWJpdHNcbmV4cG9ydCB0eXBlIEhhYml0UmVzcG9uc2UgPSBjb21wb25lbnRzWydzY2hlbWFzJ11bJ0hhYml0UmVzcG9uc2VEdG8nXTtcbmV4cG9ydCB0eXBlIENyZWF0ZUhhYml0UmVxdWVzdCA9IGNvbXBvbmVudHNbJ3NjaGVtYXMnXVsnQ3JlYXRlSGFiaXREdG8nXTtcbmV4cG9ydCB0eXBlIFVwZGF0ZUhhYml0UmVxdWVzdCA9IGNvbXBvbmVudHNbJ3NjaGVtYXMnXVsnVXBkYXRlSGFiaXREdG8nXTtcbmV4cG9ydCB0eXBlIENvbXBsZXRlSGFiaXRSZXF1ZXN0ID0gY29tcG9uZW50c1snc2NoZW1hcyddWydDb21wbGV0ZUhhYml0RHRvJ107XG5leHBvcnQgdHlwZSBIYWJpdENvbXBsZXRpb25SZXNwb25zZSA9IGNvbXBvbmVudHNbJ3NjaGVtYXMnXVsnSGFiaXRDb21wbGV0aW9uUmVzcG9uc2VEdG8nXTtcblxuLy8gUmVmbGVjdGlvbnNcbmV4cG9ydCB0eXBlIFJlZmxlY3Rpb25SZXNwb25zZSA9IGNvbXBvbmVudHNbJ3NjaGVtYXMnXVsnUmVmbGVjdGlvblJlc3BvbnNlRHRvJ107XG5leHBvcnQgdHlwZSBDcmVhdGVSZWZsZWN0aW9uUmVxdWVzdCA9IGNvbXBvbmVudHNbJ3NjaGVtYXMnXVsnQ3JlYXRlUmVmbGVjdGlvbkR0byddO1xuZXhwb3J0IHR5cGUgVXBkYXRlUmVmbGVjdGlvblJlcXVlc3QgPSBjb21wb25lbnRzWydzY2hlbWFzJ11bJ1VwZGF0ZVJlZmxlY3Rpb25EdG8nXTtcblxuLy8gQ3JhdmluZ3NcbmV4cG9ydCB0eXBlIENyYXZpbmdMb2dSZXNwb25zZSA9IGNvbXBvbmVudHNbJ3NjaGVtYXMnXVsnQ3JhdmluZ0xvZ1Jlc3BvbnNlRHRvJ107XG5leHBvcnQgdHlwZSBMb2dDcmF2aW5nUmVxdWVzdCA9IGNvbXBvbmVudHNbJ3NjaGVtYXMnXVsnTG9nQ3JhdmluZ0R0byddO1xuZXhwb3J0IHR5cGUgQ3JhdmluZ1N0YXRzUmVzcG9uc2UgPSBjb21wb25lbnRzWydzY2hlbWFzJ11bJ0NyYXZpbmdTdGF0c0R0byddO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBNQVAgVFlQRVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IHR5cGUgTWFwTWVtYmVyUmVzcG9uc2UgPSBjb21wb25lbnRzWydzY2hlbWFzJ11bJ01hcE1lbWJlckR0byddO1xuZXhwb3J0IHR5cGUgTWFwSHViUmVzcG9uc2UgPSBjb21wb25lbnRzWydzY2hlbWFzJ11bJ01hcEh1YkR0byddO1xuZXhwb3J0IHR5cGUgTWFwRXZlbnRSZXNwb25zZSA9IGNvbXBvbmVudHNbJ3NjaGVtYXMnXVsnTWFwRXZlbnREdG8nXTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQU1CQVNTQURPUiBUWVBFU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgdHlwZSBBbWJhc3NhZG9yUmVzcG9uc2UgPSBjb21wb25lbnRzWydzY2hlbWFzJ11bJ0FtYmFzc2Fkb3JSZXNwb25zZUR0byddO1xuZXhwb3J0IHR5cGUgQXBwbHlBbWJhc3NhZG9yUmVxdWVzdCA9IGNvbXBvbmVudHNbJ3NjaGVtYXMnXVsnQXBwbHlBbWJhc3NhZG9yRHRvJ107XG5leHBvcnQgdHlwZSBVcGRhdGVBbWJhc3NhZG9yUmVxdWVzdCA9IGNvbXBvbmVudHNbJ3NjaGVtYXMnXVsnVXBkYXRlQW1iYXNzYWRvckR0byddO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBHUk9XOTAgVFlQRVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IHR5cGUgR3JvdzkwRW5yb2xsbWVudFJlc3BvbnNlID0gY29tcG9uZW50c1snc2NoZW1hcyddWydHcm93OTBFbnJvbGxtZW50UmVzcG9uc2VEdG8nXTtcbmV4cG9ydCB0eXBlIEdyb3c5MFByb2dyZXNzUmVzcG9uc2UgPSBjb21wb25lbnRzWydzY2hlbWFzJ11bJ0dyb3c5MFByb2dyZXNzUmVzcG9uc2VEdG8nXTtcbmV4cG9ydCB0eXBlIEdyb3c5MFRvZGF5UmVzcG9uc2UgPSBjb21wb25lbnRzWydzY2hlbWFzJ11bJ0dyb3c5MFRvZGF5UmVzcG9uc2VEdG8nXTtcbmV4cG9ydCB0eXBlIEdyb3c5MFN0YXRzUmVzcG9uc2UgPSBjb21wb25lbnRzWydzY2hlbWFzJ11bJ0dyb3c5MFN0YXRzUmVzcG9uc2VEdG8nXTtcbmV4cG9ydCB0eXBlIEVucm9sbEdyb3c5MFJlcXVlc3QgPSBjb21wb25lbnRzWydzY2hlbWFzJ11bJ0Vucm9sbEdyb3c5MER0byddO1xuZXhwb3J0IHR5cGUgVXBkYXRlR3JvdzkwUHJvZ3Jlc3NSZXF1ZXN0ID0gY29tcG9uZW50c1snc2NoZW1hcyddWydVcGRhdGVQcm9ncmVzc0R0byddO1xuZXhwb3J0IHR5cGUgVXBkYXRlR3JvdzkwU2V0dGluZ3NSZXF1ZXN0ID0gY29tcG9uZW50c1snc2NoZW1hcyddWydVcGRhdGVTZXR0aW5nc0R0byddO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBNQVRDSElORyBUWVBFU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgdHlwZSBDcmVhdGVNYXRjaFJlcXVlc3QgPSBjb21wb25lbnRzWydzY2hlbWFzJ11bJ0NyZWF0ZU1hdGNoRHRvJ107XG5leHBvcnQgdHlwZSBVcGRhdGVNYXRjaFJlcXVlc3QgPSBjb21wb25lbnRzWydzY2hlbWFzJ11bJ1VwZGF0ZU1hdGNoRHRvJ107XG5leHBvcnQgdHlwZSBDcmVhdGVCdWRkeVJlcXVlc3QgPSBjb21wb25lbnRzWydzY2hlbWFzJ11bJ0NyZWF0ZUJ1ZGR5UmVxdWVzdER0byddO1xuZXhwb3J0IHR5cGUgVXBkYXRlQnVkZHlSZXF1ZXN0ID0gY29tcG9uZW50c1snc2NoZW1hcyddWydVcGRhdGVCdWRkeUR0byddO1xuZXhwb3J0IHR5cGUgTG9nQnVkZHlBY3Rpdml0eVJlcXVlc3QgPSBjb21wb25lbnRzWydzY2hlbWFzJ11bJ0xvZ0J1ZGR5QWN0aXZpdHlEdG8nXTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRVZFTlQgQ0hBVCBUWVBFU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgdHlwZSBFdmVudENoYXRSZXNwb25zZSA9IGNvbXBvbmVudHNbJ3NjaGVtYXMnXVsnRXZlbnRDaGF0UmVzcG9uc2VEdG8nXTtcbmV4cG9ydCB0eXBlIENoYXRNZW1iZXJSZXNwb25zZSA9IGNvbXBvbmVudHNbJ3NjaGVtYXMnXVsnQ2hhdE1lbWJlclJlc3BvbnNlRHRvJ107XG5leHBvcnQgdHlwZSBDaGF0TWVzc2FnZVJlc3BvbnNlID0gY29tcG9uZW50c1snc2NoZW1hcyddWydNZXNzYWdlUmVzcG9uc2VEdG8nXTtcbmV4cG9ydCB0eXBlIFBhZ2luYXRlZE1lc3NhZ2VzUmVzcG9uc2UgPSBjb21wb25lbnRzWydzY2hlbWFzJ11bJ1BhZ2luYXRlZE1lc3NhZ2VzRHRvJ107XG5leHBvcnQgdHlwZSBTZW5kQ2hhdE1lc3NhZ2VSZXF1ZXN0ID0gY29tcG9uZW50c1snc2NoZW1hcyddWydTZW5kTWVzc2FnZUR0byddO1xuZXhwb3J0IHR5cGUgVXBkYXRlQ2hhdE1lc3NhZ2VSZXF1ZXN0ID0gY29tcG9uZW50c1snc2NoZW1hcyddWydVcGRhdGVNZXNzYWdlRHRvJ107XG5leHBvcnQgdHlwZSBVcGRhdGVDaGF0U2V0dGluZ3NSZXF1ZXN0ID0gY29tcG9uZW50c1snc2NoZW1hcyddWydVcGRhdGVDaGF0U2V0dGluZ3NEdG8nXTtcbmV4cG9ydCB0eXBlIFVwZGF0ZU1lbWJlclNldHRpbmdzUmVxdWVzdCA9IGNvbXBvbmVudHNbJ3NjaGVtYXMnXVsnVXBkYXRlTWVtYmVyU2V0dGluZ3NEdG8nXTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQURNSU4gVFlQRVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IHR5cGUgQWRtaW5Mb2dpblJlcXVlc3QgPSBjb21wb25lbnRzWydzY2hlbWFzJ11bJ0FkbWluTG9naW5EdG8nXTtcbmV4cG9ydCB0eXBlIEFkbWluVG9rZW5zUmVzcG9uc2UgPSBjb21wb25lbnRzWydzY2hlbWFzJ11bJ0FkbWluVG9rZW5zRHRvJ107XG5leHBvcnQgdHlwZSBBZG1pblVwZGF0ZVVzZXJSZXF1ZXN0ID0gY29tcG9uZW50c1snc2NoZW1hcyddWydBZG1pblVwZGF0ZVVzZXJEdG8nXTtcbmV4cG9ydCB0eXBlIEFkbWluQ3JlYXRlSHViUmVxdWVzdCA9IGNvbXBvbmVudHNbJ3NjaGVtYXMnXVsnQWRtaW5DcmVhdGVIdWJEdG8nXTtcbmV4cG9ydCB0eXBlIEFkbWluVXBkYXRlRXZlbnRSZXF1ZXN0ID0gY29tcG9uZW50c1snc2NoZW1hcyddWydBZG1pblVwZGF0ZUV2ZW50RHRvJ107XG5leHBvcnQgdHlwZSBBZG1pbkNyZWF0ZUNvbnRlbnRSZXF1ZXN0ID0gY29tcG9uZW50c1snc2NoZW1hcyddWydBZG1pbkNyZWF0ZUNvbnRlbnREdG8nXTtcbmV4cG9ydCB0eXBlIEFkbWluQ3JlYXRlQnVzaW5lc3NSZXF1ZXN0ID0gY29tcG9uZW50c1snc2NoZW1hcyddWydBZG1pbkNyZWF0ZUJ1c2luZXNzRHRvJ107XG5leHBvcnQgdHlwZSBBZG1pbk92ZXJ2aWV3U3RhdHNSZXNwb25zZSA9IGNvbXBvbmVudHNbJ3NjaGVtYXMnXVsnQWRtaW5PdmVydmlld1N0YXRzRHRvJ107XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEJBREdFIFRZUEVTIChmcm9tIGdlbmVyYXRlZCBPcGVuQVBJIHR5cGVzKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgdHlwZSBCYWRnZVJlc3BvbnNlID0gY29tcG9uZW50c1snc2NoZW1hcyddWydCYWRnZVJlc3BvbnNlRHRvJ107XG5leHBvcnQgdHlwZSBVc2VyQmFkZ2VSZXNwb25zZSA9IGNvbXBvbmVudHNbJ3NjaGVtYXMnXVsnVXNlckJhZGdlUmVzcG9uc2VEdG8nXTtcbmV4cG9ydCB0eXBlIEJhZGdlUHJvZ3Jlc3NSZXNwb25zZSA9IGNvbXBvbmVudHNbJ3NjaGVtYXMnXVsnQmFkZ2VQcm9ncmVzc0R0byddO1xuXG4vLyBBbGlhcyBmb3IgU0RLIGNvbnNpc3RlbmN5XG5leHBvcnQgaW50ZXJmYWNlIEJhZGdlV2l0aFByb2dyZXNzIHtcbiAgYmFkZ2U6IEJhZGdlUmVzcG9uc2U7XG4gIGN1cnJlbnRQcm9ncmVzczogbnVtYmVyO1xuICByZXF1aXJlZFByb2dyZXNzOiBudW1iZXI7XG4gIHBlcmNlbnRDb21wbGV0ZTogbnVtYmVyO1xuICBpc0Vhcm5lZDogYm9vbGVhbjtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVU5JRklFRCBSRVdBUkQgVFlQRVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gUmVkZWVtVHlwZSBlbnVtIC0gZXh0cmFjdGVkIGZyb20gUHJpc21hIHZpYSBBUElcbmV4cG9ydCB0eXBlIFJlZGVlbVR5cGUgPSAnSU5fUEVSU09OJyB8ICdPTkxJTkUnIHwgJ0JPVEgnO1xuXG4vLyBSZXdhcmQgcmVzcG9uc2Ugd2l0aCByZWxhdGlvbnNcbmV4cG9ydCBpbnRlcmZhY2UgUmV3YXJkUmVzcG9uc2Uge1xuICBpZDogc3RyaW5nO1xuICB2ZW51ZUlkOiBzdHJpbmcgfCBudWxsO1xuICBicmFuZElkOiBzdHJpbmcgfCBudWxsO1xuICBiYWRnZUlkOiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmcgfCBudWxsO1xuICBjb2RlOiBzdHJpbmcgfCBudWxsO1xuICByZWRlZW1UeXBlOiBSZWRlZW1UeXBlO1xuICBtYXhSZWRlbXB0aW9uczogbnVtYmVyIHwgbnVsbDtcbiAgcmVkZW1wdGlvbnNVc2VkOiBudW1iZXI7XG4gIHBlclVzZXJMaW1pdDogbnVtYmVyO1xuICB2YWxpZEZyb206IHN0cmluZyB8IG51bGw7XG4gIHZhbGlkVW50aWw6IHN0cmluZyB8IG51bGw7XG4gIGlzQWN0aXZlOiBib29sZWFuO1xuICBjcmVhdGVkQXQ6IHN0cmluZztcbiAgYmFkZ2U6IHtcbiAgICBpZDogc3RyaW5nO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBzbHVnOiBzdHJpbmc7XG4gICAgaWNvbjogc3RyaW5nIHwgbnVsbDtcbiAgfTtcbiAgdmVudWU/OiB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgc2x1Zzogc3RyaW5nO1xuICAgIHByb2ZpbGVJbWFnZTogc3RyaW5nIHwgbnVsbDtcbiAgICBhZGRyZXNzOiBzdHJpbmcgfCBudWxsO1xuICB9IHwgbnVsbDtcbiAgYnJhbmQ/OiB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgc2x1Zzogc3RyaW5nO1xuICAgIGxvZ29Vcmw6IHN0cmluZyB8IG51bGw7XG4gIH0gfCBudWxsO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJld2FyZFJlZGVtcHRpb25SZXNwb25zZSB7XG4gIGlkOiBzdHJpbmc7XG4gIHVzZXJJZDogc3RyaW5nO1xuICByZXdhcmRJZDogc3RyaW5nO1xuICByZWRlZW1lZEF0OiBzdHJpbmc7XG4gIHZlcmlmaWVkQXQ6IHN0cmluZyB8IG51bGw7XG4gIHZlcmlmaWVkQnk6IHN0cmluZyB8IG51bGw7XG4gIGNvZGVVc2VkOiBzdHJpbmcgfCBudWxsO1xuICByZXdhcmQ6IFJld2FyZFJlc3BvbnNlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZVJld2FyZFJlcXVlc3Qge1xuICBiYWRnZUlkOiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBjb2RlPzogc3RyaW5nO1xuICByZWRlZW1UeXBlPzogUmVkZWVtVHlwZTtcbiAgbWF4UmVkZW1wdGlvbnM/OiBudW1iZXI7XG4gIHBlclVzZXJMaW1pdD86IG51bWJlcjtcbiAgdmFsaWRGcm9tPzogc3RyaW5nO1xuICB2YWxpZFVudGlsPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVwZGF0ZVJld2FyZFJlcXVlc3Qge1xuICB0aXRsZT86IHN0cmluZztcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIGNvZGU/OiBzdHJpbmc7XG4gIHJlZGVlbVR5cGU/OiBSZWRlZW1UeXBlO1xuICBtYXhSZWRlbXB0aW9ucz86IG51bWJlcjtcbiAgcGVyVXNlckxpbWl0PzogbnVtYmVyO1xuICB2YWxpZEZyb20/OiBzdHJpbmc7XG4gIHZhbGlkVW50aWw/OiBzdHJpbmc7XG4gIGlzQWN0aXZlPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVc2VyV2FsbGV0UmVzcG9uc2Uge1xuICBiYWRnZXM6IEFycmF5PHtcbiAgICBpZDogc3RyaW5nO1xuICAgIGJhZGdlSWQ6IHN0cmluZztcbiAgICB1c2VySWQ6IHN0cmluZztcbiAgICBhd2FyZGVkQXQ6IHN0cmluZztcbiAgICBiYWRnZTogQmFkZ2VSZXNwb25zZTtcbiAgICBhdmFpbGFibGVSZXdhcmRzOiBSZXdhcmRSZXNwb25zZVtdO1xuICAgIHJlZGVlbWVkUmV3YXJkczogQXJyYXk8UmV3YXJkUmVkZW1wdGlvblJlc3BvbnNlICYgeyBxclRva2VuOiBzdHJpbmcgfT47XG4gIH0+O1xuICBzdGF0czoge1xuICAgIHRvdGFsQmFkZ2VzOiBudW1iZXI7XG4gICAgdG90YWxBdmFpbGFibGVSZXdhcmRzOiBudW1iZXI7XG4gICAgdG90YWxSZWRlZW1lZFJld2FyZHM6IG51bWJlcjtcbiAgfTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTEVHQUNZIFRZUEVTIChkZXByZWNhdGVkIC0gdXNlIHVuaWZpZWQgdHlwZXMpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKiBAZGVwcmVjYXRlZCBVc2UgUmV3YXJkUmVzcG9uc2UgaW5zdGVhZCAqL1xuZXhwb3J0IGludGVyZmFjZSBQYXJ0bmVyUmV3YXJkUmVzcG9uc2Uge1xuICBpZDogc3RyaW5nO1xuICBidXNpbmVzc0lkOiBzdHJpbmc7XG4gIGJhZGdlSWQ6IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbiAgZGVzY3JpcHRpb246IHN0cmluZyB8IG51bGw7XG4gIGNvZGU6IHN0cmluZyB8IG51bGw7XG4gIG1heFJlZGVtcHRpb25zOiBudW1iZXIgfCBudWxsO1xuICByZWRlbXB0aW9uc1VzZWQ6IG51bWJlcjtcbiAgcGVyVXNlckxpbWl0OiBudW1iZXI7XG4gIHZhbGlkRnJvbTogc3RyaW5nO1xuICB2YWxpZFVudGlsOiBzdHJpbmcgfCBudWxsO1xuICBpc0FjdGl2ZTogYm9vbGVhbjtcbiAgY3JlYXRlZEF0OiBzdHJpbmc7XG4gIGJhZGdlOiB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgc2x1Zzogc3RyaW5nO1xuICAgIGljb246IHN0cmluZyB8IG51bGw7XG4gIH07XG4gIGJ1c2luZXNzOiB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgcHJvZmlsZUltYWdlOiBzdHJpbmcgfCBudWxsO1xuICB9O1xufVxuXG4vKiogQGRlcHJlY2F0ZWQgVXNlIFJld2FyZFJlZGVtcHRpb25SZXNwb25zZSBpbnN0ZWFkICovXG5leHBvcnQgaW50ZXJmYWNlIFBhcnRuZXJSZXdhcmRSZWRlbXB0aW9uUmVzcG9uc2Uge1xuICBpZDogc3RyaW5nO1xuICB1c2VySWQ6IHN0cmluZztcbiAgcGFydG5lclJld2FyZElkOiBzdHJpbmc7XG4gIHJlZGVlbWVkQXQ6IHN0cmluZztcbiAgdmVyaWZpZWRBdDogc3RyaW5nIHwgbnVsbDtcbiAgcGFydG5lclJld2FyZDogUGFydG5lclJld2FyZFJlc3BvbnNlO1xufVxuXG4vKiogQGRlcHJlY2F0ZWQgVXNlIENyZWF0ZVJld2FyZFJlcXVlc3QgaW5zdGVhZCAqL1xuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVQYXJ0bmVyUmV3YXJkUmVxdWVzdCB7XG4gIGJhZGdlSWQ6IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIGNvZGU/OiBzdHJpbmc7XG4gIG1heFJlZGVtcHRpb25zPzogbnVtYmVyO1xuICBwZXJVc2VyTGltaXQ/OiBudW1iZXI7XG4gIHZhbGlkVW50aWw/OiBzdHJpbmc7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFJFLUVYUE9SVFNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gUmUtZXhwb3J0IHBhdGhzIGFuZCBjb21wb25lbnRzIGZvciBhZHZhbmNlZCB1c2FnZVxuZXhwb3J0IHR5cGUgeyBwYXRocywgY29tcG9uZW50cyB9O1xuIl19
@@ -0,0 +1,104 @@
1
+ /**
2
+ * Event Grouping Utilities
3
+ *
4
+ * Utilities for organizing events by time of day.
5
+ * Used in the Gatherings screen to show events grouped by
6
+ * Morning, Afternoon, and Evening.
7
+ *
8
+ * @module api/utils/eventGrouping
9
+ */
10
+ import { EventResponse } from '../types';
11
+ export type TimeOfDay = 'MORNING' | 'AFTERNOON' | 'EVENING';
12
+ export interface GroupedEvents {
13
+ morning: EventResponse[];
14
+ afternoon: EventResponse[];
15
+ evening: EventResponse[];
16
+ }
17
+ export interface TimeOfDayInfo {
18
+ key: TimeOfDay;
19
+ label: string;
20
+ emoji: string;
21
+ hours: {
22
+ start: number;
23
+ end: number;
24
+ };
25
+ }
26
+ export declare const TIME_OF_DAY_CONFIG: Record<TimeOfDay, TimeOfDayInfo>;
27
+ /**
28
+ * Get time of day for a given date
29
+ *
30
+ * @param date - Date string or Date object
31
+ * @returns TimeOfDay - MORNING, AFTERNOON, or EVENING
32
+ *
33
+ * @example
34
+ * ```tsx
35
+ * const timeOfDay = getTimeOfDay('2024-03-15T10:00:00Z');
36
+ * console.log(timeOfDay); // 'MORNING'
37
+ * ```
38
+ */
39
+ export declare function getTimeOfDay(date: Date | string): TimeOfDay;
40
+ /**
41
+ * Get label for time of day
42
+ *
43
+ * @param timeOfDay - TimeOfDay enum value
44
+ * @returns Human-readable label
45
+ *
46
+ * @example
47
+ * ```tsx
48
+ * const label = getTimeOfDayLabel('MORNING');
49
+ * console.log(label); // 'Morning'
50
+ * ```
51
+ */
52
+ export declare function getTimeOfDayLabel(timeOfDay: TimeOfDay): string;
53
+ /**
54
+ * Group events by time of day
55
+ *
56
+ * @param events - Array of events to group
57
+ * @returns GroupedEvents object with morning, afternoon, and evening arrays
58
+ *
59
+ * @example
60
+ * ```tsx
61
+ * import { useUpcomingEvents, groupEventsByTimeOfDay } from '@growsober/sdk';
62
+ *
63
+ * function GatheringsList() {
64
+ * const { data: events } = useUpcomingEvents(30);
65
+ * const grouped = useMemo(() => {
66
+ * if (!events) return null;
67
+ * return groupEventsByTimeOfDay(events);
68
+ * }, [events]);
69
+ *
70
+ * return (
71
+ * <SectionList
72
+ * sections={[
73
+ * { title: 'Morning', data: grouped?.morning || [] },
74
+ * { title: 'Afternoon', data: grouped?.afternoon || [] },
75
+ * { title: 'Evening', data: grouped?.evening || [] },
76
+ * ]}
77
+ * ...
78
+ * />
79
+ * );
80
+ * }
81
+ * ```
82
+ */
83
+ export declare function groupEventsByTimeOfDay(events: EventResponse[]): GroupedEvents;
84
+ /**
85
+ * Convert grouped events to section list data format
86
+ *
87
+ * @param events - Array of events to group
88
+ * @returns Array of sections with title and data
89
+ *
90
+ * @example
91
+ * ```tsx
92
+ * const sections = getEventSections(events);
93
+ * // [
94
+ * // { title: 'Morning', data: [...] },
95
+ * // { title: 'Afternoon', data: [...] },
96
+ * // { title: 'Evening', data: [...] },
97
+ * // ]
98
+ * ```
99
+ */
100
+ export declare function getEventSections(events: EventResponse[]): Array<{
101
+ title: string;
102
+ timeOfDay: TimeOfDay;
103
+ data: EventResponse[];
104
+ }>;
@@ -0,0 +1,155 @@
1
+ "use strict";
2
+ /**
3
+ * Event Grouping Utilities
4
+ *
5
+ * Utilities for organizing events by time of day.
6
+ * Used in the Gatherings screen to show events grouped by
7
+ * Morning, Afternoon, and Evening.
8
+ *
9
+ * @module api/utils/eventGrouping
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.TIME_OF_DAY_CONFIG = void 0;
13
+ exports.getTimeOfDay = getTimeOfDay;
14
+ exports.getTimeOfDayLabel = getTimeOfDayLabel;
15
+ exports.groupEventsByTimeOfDay = groupEventsByTimeOfDay;
16
+ exports.getEventSections = getEventSections;
17
+ // ============================================================================
18
+ // CONSTANTS
19
+ // ============================================================================
20
+ exports.TIME_OF_DAY_CONFIG = {
21
+ MORNING: {
22
+ key: 'MORNING',
23
+ label: 'Morning',
24
+ emoji: '',
25
+ hours: { start: 5, end: 11 }, // 5:00 AM - 11:59 AM
26
+ },
27
+ AFTERNOON: {
28
+ key: 'AFTERNOON',
29
+ label: 'Afternoon',
30
+ emoji: '',
31
+ hours: { start: 12, end: 16 }, // 12:00 PM - 4:59 PM
32
+ },
33
+ EVENING: {
34
+ key: 'EVENING',
35
+ label: 'Evening',
36
+ emoji: '',
37
+ hours: { start: 17, end: 4 }, // 5:00 PM - 4:59 AM (next day)
38
+ },
39
+ };
40
+ // ============================================================================
41
+ // FUNCTIONS
42
+ // ============================================================================
43
+ /**
44
+ * Get time of day for a given date
45
+ *
46
+ * @param date - Date string or Date object
47
+ * @returns TimeOfDay - MORNING, AFTERNOON, or EVENING
48
+ *
49
+ * @example
50
+ * ```tsx
51
+ * const timeOfDay = getTimeOfDay('2024-03-15T10:00:00Z');
52
+ * console.log(timeOfDay); // 'MORNING'
53
+ * ```
54
+ */
55
+ function getTimeOfDay(date) {
56
+ const d = typeof date === 'string' ? new Date(date) : date;
57
+ const hour = d.getHours();
58
+ if (hour >= 5 && hour < 12)
59
+ return 'MORNING';
60
+ if (hour >= 12 && hour < 17)
61
+ return 'AFTERNOON';
62
+ return 'EVENING';
63
+ }
64
+ /**
65
+ * Get label for time of day
66
+ *
67
+ * @param timeOfDay - TimeOfDay enum value
68
+ * @returns Human-readable label
69
+ *
70
+ * @example
71
+ * ```tsx
72
+ * const label = getTimeOfDayLabel('MORNING');
73
+ * console.log(label); // 'Morning'
74
+ * ```
75
+ */
76
+ function getTimeOfDayLabel(timeOfDay) {
77
+ return exports.TIME_OF_DAY_CONFIG[timeOfDay].label;
78
+ }
79
+ /**
80
+ * Group events by time of day
81
+ *
82
+ * @param events - Array of events to group
83
+ * @returns GroupedEvents object with morning, afternoon, and evening arrays
84
+ *
85
+ * @example
86
+ * ```tsx
87
+ * import { useUpcomingEvents, groupEventsByTimeOfDay } from '@growsober/sdk';
88
+ *
89
+ * function GatheringsList() {
90
+ * const { data: events } = useUpcomingEvents(30);
91
+ * const grouped = useMemo(() => {
92
+ * if (!events) return null;
93
+ * return groupEventsByTimeOfDay(events);
94
+ * }, [events]);
95
+ *
96
+ * return (
97
+ * <SectionList
98
+ * sections={[
99
+ * { title: 'Morning', data: grouped?.morning || [] },
100
+ * { title: 'Afternoon', data: grouped?.afternoon || [] },
101
+ * { title: 'Evening', data: grouped?.evening || [] },
102
+ * ]}
103
+ * ...
104
+ * />
105
+ * );
106
+ * }
107
+ * ```
108
+ */
109
+ function groupEventsByTimeOfDay(events) {
110
+ const grouped = {
111
+ morning: [],
112
+ afternoon: [],
113
+ evening: [],
114
+ };
115
+ for (const event of events) {
116
+ const timeOfDay = getTimeOfDay(event.startDate);
117
+ switch (timeOfDay) {
118
+ case 'MORNING':
119
+ grouped.morning.push(event);
120
+ break;
121
+ case 'AFTERNOON':
122
+ grouped.afternoon.push(event);
123
+ break;
124
+ case 'EVENING':
125
+ grouped.evening.push(event);
126
+ break;
127
+ }
128
+ }
129
+ return grouped;
130
+ }
131
+ /**
132
+ * Convert grouped events to section list data format
133
+ *
134
+ * @param events - Array of events to group
135
+ * @returns Array of sections with title and data
136
+ *
137
+ * @example
138
+ * ```tsx
139
+ * const sections = getEventSections(events);
140
+ * // [
141
+ * // { title: 'Morning', data: [...] },
142
+ * // { title: 'Afternoon', data: [...] },
143
+ * // { title: 'Evening', data: [...] },
144
+ * // ]
145
+ * ```
146
+ */
147
+ function getEventSections(events) {
148
+ const grouped = groupEventsByTimeOfDay(events);
149
+ return [
150
+ { title: 'Morning', timeOfDay: 'MORNING', data: grouped.morning },
151
+ { title: 'Afternoon', timeOfDay: 'AFTERNOON', data: grouped.afternoon },
152
+ { title: 'Evening', timeOfDay: 'EVENING', data: grouped.evening },
153
+ ].filter(section => section.data.length > 0);
154
+ }
155
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRHcm91cGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcGkvdXRpbHMvZXZlbnRHcm91cGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7O0dBUUc7OztBQWdFSCxvQ0FPQztBQWNELDhDQUVDO0FBZ0NELHdEQXVCQztBQWtCRCw0Q0FZQztBQXJKRCwrRUFBK0U7QUFDL0UsWUFBWTtBQUNaLCtFQUErRTtBQUVsRSxRQUFBLGtCQUFrQixHQUFxQztJQUNsRSxPQUFPLEVBQUU7UUFDUCxHQUFHLEVBQUUsU0FBUztRQUNkLEtBQUssRUFBRSxTQUFTO1FBQ2hCLEtBQUssRUFBRSxFQUFFO1FBQ1QsS0FBSyxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUscUJBQXFCO0tBQ3BEO0lBQ0QsU0FBUyxFQUFFO1FBQ1QsR0FBRyxFQUFFLFdBQVc7UUFDaEIsS0FBSyxFQUFFLFdBQVc7UUFDbEIsS0FBSyxFQUFFLEVBQUU7UUFDVCxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxxQkFBcUI7S0FDckQ7SUFDRCxPQUFPLEVBQUU7UUFDUCxHQUFHLEVBQUUsU0FBUztRQUNkLEtBQUssRUFBRSxTQUFTO1FBQ2hCLEtBQUssRUFBRSxFQUFFO1FBQ1QsS0FBSyxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsK0JBQStCO0tBQzlEO0NBQ0YsQ0FBQztBQUVGLCtFQUErRTtBQUMvRSxZQUFZO0FBQ1osK0VBQStFO0FBRS9FOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsU0FBZ0IsWUFBWSxDQUFDLElBQW1CO0lBQzlDLE1BQU0sQ0FBQyxHQUFHLE9BQU8sSUFBSSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUMzRCxNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7SUFFMUIsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksR0FBRyxFQUFFO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFDN0MsSUFBSSxJQUFJLElBQUksRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFO1FBQUUsT0FBTyxXQUFXLENBQUM7SUFDaEQsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQztBQUVEOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsU0FBZ0IsaUJBQWlCLENBQUMsU0FBb0I7SUFDcEQsT0FBTywwQkFBa0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLENBQUM7QUFDN0MsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTZCRztBQUNILFNBQWdCLHNCQUFzQixDQUFDLE1BQXVCO0lBQzVELE1BQU0sT0FBTyxHQUFrQjtRQUM3QixPQUFPLEVBQUUsRUFBRTtRQUNYLFNBQVMsRUFBRSxFQUFFO1FBQ2IsT0FBTyxFQUFFLEVBQUU7S0FDWixDQUFDO0lBRUYsS0FBSyxNQUFNLEtBQUssSUFBSSxNQUFNLEVBQUUsQ0FBQztRQUMzQixNQUFNLFNBQVMsR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2hELFFBQVEsU0FBUyxFQUFFLENBQUM7WUFDbEIsS0FBSyxTQUFTO2dCQUNaLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUM1QixNQUFNO1lBQ1IsS0FBSyxXQUFXO2dCQUNkLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUM5QixNQUFNO1lBQ1IsS0FBSyxTQUFTO2dCQUNaLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUM1QixNQUFNO1FBQ1YsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBQ0gsU0FBZ0IsZ0JBQWdCLENBQUMsTUFBdUI7SUFLdEQsTUFBTSxPQUFPLEdBQUcsc0JBQXNCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFL0MsT0FBTztRQUNMLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBc0IsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLE9BQU8sRUFBRTtRQUM5RSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFdBQXdCLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxTQUFTLEVBQUU7UUFDcEYsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFzQixFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsT0FBTyxFQUFFO0tBQy9FLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDL0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogRXZlbnQgR3JvdXBpbmcgVXRpbGl0aWVzXG4gKlxuICogVXRpbGl0aWVzIGZvciBvcmdhbml6aW5nIGV2ZW50cyBieSB0aW1lIG9mIGRheS5cbiAqIFVzZWQgaW4gdGhlIEdhdGhlcmluZ3Mgc2NyZWVuIHRvIHNob3cgZXZlbnRzIGdyb3VwZWQgYnlcbiAqIE1vcm5pbmcsIEFmdGVybm9vbiwgYW5kIEV2ZW5pbmcuXG4gKlxuICogQG1vZHVsZSBhcGkvdXRpbHMvZXZlbnRHcm91cGluZ1xuICovXG5cbmltcG9ydCB7IEV2ZW50UmVzcG9uc2UgfSBmcm9tICcuLi90eXBlcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFRZUEVTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCB0eXBlIFRpbWVPZkRheSA9ICdNT1JOSU5HJyB8ICdBRlRFUk5PT04nIHwgJ0VWRU5JTkcnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEdyb3VwZWRFdmVudHMge1xuICBtb3JuaW5nOiBFdmVudFJlc3BvbnNlW107XG4gIGFmdGVybm9vbjogRXZlbnRSZXNwb25zZVtdO1xuICBldmVuaW5nOiBFdmVudFJlc3BvbnNlW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGltZU9mRGF5SW5mbyB7XG4gIGtleTogVGltZU9mRGF5O1xuICBsYWJlbDogc3RyaW5nO1xuICBlbW9qaTogc3RyaW5nO1xuICBob3VyczogeyBzdGFydDogbnVtYmVyOyBlbmQ6IG51bWJlciB9O1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDT05TVEFOVFNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IGNvbnN0IFRJTUVfT0ZfREFZX0NPTkZJRzogUmVjb3JkPFRpbWVPZkRheSwgVGltZU9mRGF5SW5mbz4gPSB7XG4gIE1PUk5JTkc6IHtcbiAgICBrZXk6ICdNT1JOSU5HJyxcbiAgICBsYWJlbDogJ01vcm5pbmcnLFxuICAgIGVtb2ppOiAnJyxcbiAgICBob3VyczogeyBzdGFydDogNSwgZW5kOiAxMSB9LCAvLyA1OjAwIEFNIC0gMTE6NTkgQU1cbiAgfSxcbiAgQUZURVJOT09OOiB7XG4gICAga2V5OiAnQUZURVJOT09OJyxcbiAgICBsYWJlbDogJ0FmdGVybm9vbicsXG4gICAgZW1vamk6ICcnLFxuICAgIGhvdXJzOiB7IHN0YXJ0OiAxMiwgZW5kOiAxNiB9LCAvLyAxMjowMCBQTSAtIDQ6NTkgUE1cbiAgfSxcbiAgRVZFTklORzoge1xuICAgIGtleTogJ0VWRU5JTkcnLFxuICAgIGxhYmVsOiAnRXZlbmluZycsXG4gICAgZW1vamk6ICcnLFxuICAgIGhvdXJzOiB7IHN0YXJ0OiAxNywgZW5kOiA0IH0sIC8vIDU6MDAgUE0gLSA0OjU5IEFNIChuZXh0IGRheSlcbiAgfSxcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEZVTkNUSU9OU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIEdldCB0aW1lIG9mIGRheSBmb3IgYSBnaXZlbiBkYXRlXG4gKlxuICogQHBhcmFtIGRhdGUgLSBEYXRlIHN0cmluZyBvciBEYXRlIG9iamVjdFxuICogQHJldHVybnMgVGltZU9mRGF5IC0gTU9STklORywgQUZURVJOT09OLCBvciBFVkVOSU5HXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzeFxuICogY29uc3QgdGltZU9mRGF5ID0gZ2V0VGltZU9mRGF5KCcyMDI0LTAzLTE1VDEwOjAwOjAwWicpO1xuICogY29uc29sZS5sb2codGltZU9mRGF5KTsgLy8gJ01PUk5JTkcnXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRpbWVPZkRheShkYXRlOiBEYXRlIHwgc3RyaW5nKTogVGltZU9mRGF5IHtcbiAgY29uc3QgZCA9IHR5cGVvZiBkYXRlID09PSAnc3RyaW5nJyA/IG5ldyBEYXRlKGRhdGUpIDogZGF0ZTtcbiAgY29uc3QgaG91ciA9IGQuZ2V0SG91cnMoKTtcblxuICBpZiAoaG91ciA+PSA1ICYmIGhvdXIgPCAxMikgcmV0dXJuICdNT1JOSU5HJztcbiAgaWYgKGhvdXIgPj0gMTIgJiYgaG91ciA8IDE3KSByZXR1cm4gJ0FGVEVSTk9PTic7XG4gIHJldHVybiAnRVZFTklORyc7XG59XG5cbi8qKlxuICogR2V0IGxhYmVsIGZvciB0aW1lIG9mIGRheVxuICpcbiAqIEBwYXJhbSB0aW1lT2ZEYXkgLSBUaW1lT2ZEYXkgZW51bSB2YWx1ZVxuICogQHJldHVybnMgSHVtYW4tcmVhZGFibGUgbGFiZWxcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHN4XG4gKiBjb25zdCBsYWJlbCA9IGdldFRpbWVPZkRheUxhYmVsKCdNT1JOSU5HJyk7XG4gKiBjb25zb2xlLmxvZyhsYWJlbCk7IC8vICdNb3JuaW5nJ1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRUaW1lT2ZEYXlMYWJlbCh0aW1lT2ZEYXk6IFRpbWVPZkRheSk6IHN0cmluZyB7XG4gIHJldHVybiBUSU1FX09GX0RBWV9DT05GSUdbdGltZU9mRGF5XS5sYWJlbDtcbn1cblxuLyoqXG4gKiBHcm91cCBldmVudHMgYnkgdGltZSBvZiBkYXlcbiAqXG4gKiBAcGFyYW0gZXZlbnRzIC0gQXJyYXkgb2YgZXZlbnRzIHRvIGdyb3VwXG4gKiBAcmV0dXJucyBHcm91cGVkRXZlbnRzIG9iamVjdCB3aXRoIG1vcm5pbmcsIGFmdGVybm9vbiwgYW5kIGV2ZW5pbmcgYXJyYXlzXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzeFxuICogaW1wb3J0IHsgdXNlVXBjb21pbmdFdmVudHMsIGdyb3VwRXZlbnRzQnlUaW1lT2ZEYXkgfSBmcm9tICdAZ3Jvd3NvYmVyL3Nkayc7XG4gKlxuICogZnVuY3Rpb24gR2F0aGVyaW5nc0xpc3QoKSB7XG4gKiAgIGNvbnN0IHsgZGF0YTogZXZlbnRzIH0gPSB1c2VVcGNvbWluZ0V2ZW50cygzMCk7XG4gKiAgIGNvbnN0IGdyb3VwZWQgPSB1c2VNZW1vKCgpID0+IHtcbiAqICAgICBpZiAoIWV2ZW50cykgcmV0dXJuIG51bGw7XG4gKiAgICAgcmV0dXJuIGdyb3VwRXZlbnRzQnlUaW1lT2ZEYXkoZXZlbnRzKTtcbiAqICAgfSwgW2V2ZW50c10pO1xuICpcbiAqICAgcmV0dXJuIChcbiAqICAgICA8U2VjdGlvbkxpc3RcbiAqICAgICAgIHNlY3Rpb25zPXtbXG4gKiAgICAgICAgIHsgdGl0bGU6ICdNb3JuaW5nJywgZGF0YTogZ3JvdXBlZD8ubW9ybmluZyB8fCBbXSB9LFxuICogICAgICAgICB7IHRpdGxlOiAnQWZ0ZXJub29uJywgZGF0YTogZ3JvdXBlZD8uYWZ0ZXJub29uIHx8IFtdIH0sXG4gKiAgICAgICAgIHsgdGl0bGU6ICdFdmVuaW5nJywgZGF0YTogZ3JvdXBlZD8uZXZlbmluZyB8fCBbXSB9LFxuICogICAgICAgXX1cbiAqICAgICAgIC4uLlxuICogICAgIC8+XG4gKiAgICk7XG4gKiB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdyb3VwRXZlbnRzQnlUaW1lT2ZEYXkoZXZlbnRzOiBFdmVudFJlc3BvbnNlW10pOiBHcm91cGVkRXZlbnRzIHtcbiAgY29uc3QgZ3JvdXBlZDogR3JvdXBlZEV2ZW50cyA9IHtcbiAgICBtb3JuaW5nOiBbXSxcbiAgICBhZnRlcm5vb246IFtdLFxuICAgIGV2ZW5pbmc6IFtdLFxuICB9O1xuXG4gIGZvciAoY29uc3QgZXZlbnQgb2YgZXZlbnRzKSB7XG4gICAgY29uc3QgdGltZU9mRGF5ID0gZ2V0VGltZU9mRGF5KGV2ZW50LnN0YXJ0RGF0ZSk7XG4gICAgc3dpdGNoICh0aW1lT2ZEYXkpIHtcbiAgICAgIGNhc2UgJ01PUk5JTkcnOlxuICAgICAgICBncm91cGVkLm1vcm5pbmcucHVzaChldmVudCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnQUZURVJOT09OJzpcbiAgICAgICAgZ3JvdXBlZC5hZnRlcm5vb24ucHVzaChldmVudCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnRVZFTklORyc6XG4gICAgICAgIGdyb3VwZWQuZXZlbmluZy5wdXNoKGV2ZW50KTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGdyb3VwZWQ7XG59XG5cbi8qKlxuICogQ29udmVydCBncm91cGVkIGV2ZW50cyB0byBzZWN0aW9uIGxpc3QgZGF0YSBmb3JtYXRcbiAqXG4gKiBAcGFyYW0gZXZlbnRzIC0gQXJyYXkgb2YgZXZlbnRzIHRvIGdyb3VwXG4gKiBAcmV0dXJucyBBcnJheSBvZiBzZWN0aW9ucyB3aXRoIHRpdGxlIGFuZCBkYXRhXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzeFxuICogY29uc3Qgc2VjdGlvbnMgPSBnZXRFdmVudFNlY3Rpb25zKGV2ZW50cyk7XG4gKiAvLyBbXG4gKiAvLyAgIHsgdGl0bGU6ICdNb3JuaW5nJywgZGF0YTogWy4uLl0gfSxcbiAqIC8vICAgeyB0aXRsZTogJ0FmdGVybm9vbicsIGRhdGE6IFsuLi5dIH0sXG4gKiAvLyAgIHsgdGl0bGU6ICdFdmVuaW5nJywgZGF0YTogWy4uLl0gfSxcbiAqIC8vIF1cbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RXZlbnRTZWN0aW9ucyhldmVudHM6IEV2ZW50UmVzcG9uc2VbXSk6IEFycmF5PHtcbiAgdGl0bGU6IHN0cmluZztcbiAgdGltZU9mRGF5OiBUaW1lT2ZEYXk7XG4gIGRhdGE6IEV2ZW50UmVzcG9uc2VbXTtcbn0+IHtcbiAgY29uc3QgZ3JvdXBlZCA9IGdyb3VwRXZlbnRzQnlUaW1lT2ZEYXkoZXZlbnRzKTtcblxuICByZXR1cm4gW1xuICAgIHsgdGl0bGU6ICdNb3JuaW5nJywgdGltZU9mRGF5OiAnTU9STklORycgYXMgVGltZU9mRGF5LCBkYXRhOiBncm91cGVkLm1vcm5pbmcgfSxcbiAgICB7IHRpdGxlOiAnQWZ0ZXJub29uJywgdGltZU9mRGF5OiAnQUZURVJOT09OJyBhcyBUaW1lT2ZEYXksIGRhdGE6IGdyb3VwZWQuYWZ0ZXJub29uIH0sXG4gICAgeyB0aXRsZTogJ0V2ZW5pbmcnLCB0aW1lT2ZEYXk6ICdFVkVOSU5HJyBhcyBUaW1lT2ZEYXksIGRhdGE6IGdyb3VwZWQuZXZlbmluZyB9LFxuICBdLmZpbHRlcihzZWN0aW9uID0+IHNlY3Rpb24uZGF0YS5sZW5ndGggPiAwKTtcbn1cbiJdfQ==
package/dist/index.d.ts CHANGED
@@ -34,3 +34,4 @@ export type { SDKConfig } from './api/client';
34
34
  export * from './api/types';
35
35
  export * from './api/queries';
36
36
  export * from './api/mutations';
37
+ export * from './api/utils/eventGrouping';