@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.
- package/dist/__tests__/e2e.test.d.ts +30 -0
- package/dist/__tests__/e2e.test.js +959 -63
- package/dist/api/mutations/badges.d.ts +116 -0
- package/dist/api/mutations/badges.js +177 -0
- package/dist/api/mutations/brands.d.ts +251 -0
- package/dist/api/mutations/brands.js +242 -0
- package/dist/api/mutations/creators.d.ts +131 -0
- package/dist/api/mutations/creators.js +129 -0
- package/dist/api/mutations/event-chat.d.ts +2 -2
- package/dist/api/mutations/event-chat.js +9 -9
- package/dist/api/mutations/index.d.ts +4 -0
- package/dist/api/mutations/index.js +5 -1
- package/dist/api/mutations/jack.d.ts +29 -0
- package/dist/api/mutations/jack.js +41 -1
- package/dist/api/mutations/products.d.ts +175 -0
- package/dist/api/mutations/products.js +226 -0
- package/dist/api/mutations/support.d.ts +20 -1
- package/dist/api/mutations/support.js +36 -1
- package/dist/api/queries/badges.d.ts +221 -0
- package/dist/api/queries/badges.js +290 -0
- package/dist/api/queries/bookings.d.ts +1 -1
- package/dist/api/queries/brands.d.ts +248 -0
- package/dist/api/queries/brands.js +226 -0
- package/dist/api/queries/businesses.d.ts +61 -1
- package/dist/api/queries/businesses.js +27 -1
- package/dist/api/queries/creators.d.ts +332 -0
- package/dist/api/queries/creators.js +249 -0
- package/dist/api/queries/event-chat.d.ts +1 -1
- package/dist/api/queries/event-chat.js +4 -4
- package/dist/api/queries/events.d.ts +45 -0
- package/dist/api/queries/index.d.ts +5 -0
- package/dist/api/queries/index.js +6 -1
- package/dist/api/queries/jack.d.ts +80 -0
- package/dist/api/queries/jack.js +98 -1
- package/dist/api/queries/library.d.ts +8 -0
- package/dist/api/queries/products.d.ts +185 -0
- package/dist/api/queries/products.js +203 -0
- package/dist/api/queries/support.d.ts +46 -1
- package/dist/api/queries/support.js +48 -1
- package/dist/api/queries/venues.d.ts +304 -0
- package/dist/api/queries/venues.js +211 -0
- package/dist/api/types.d.ts +245 -0
- package/dist/api/types.js +6 -1
- package/dist/api/utils/eventGrouping.d.ts +104 -0
- package/dist/api/utils/eventGrouping.js +155 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +5 -1
- package/package.json +5 -2
- package/src/__tests__/e2e.test.ts +996 -64
- package/src/api/mutations/badges.ts +228 -0
- package/src/api/mutations/brands.ts +376 -0
- package/src/api/mutations/creators.ts +171 -0
- package/src/api/mutations/event-chat.ts +8 -8
- package/src/api/mutations/index.ts +4 -0
- package/src/api/mutations/jack.ts +50 -1
- package/src/api/mutations/products.ts +336 -0
- package/src/api/mutations/support.ts +44 -0
- package/src/api/queries/badges.ts +385 -0
- package/src/api/queries/brands.ts +281 -0
- package/src/api/queries/businesses.ts +30 -1
- package/src/api/queries/creators.ts +308 -0
- package/src/api/queries/event-chat.ts +3 -3
- package/src/api/queries/index.ts +5 -0
- package/src/api/queries/jack.ts +139 -1
- package/src/api/queries/products.ts +312 -0
- package/src/api/queries/support.ts +54 -0
- package/src/api/queries/venues.ts +271 -0
- package/src/api/types.ts +317 -1
- package/src/api/utils/eventGrouping.ts +181 -0
- package/src/index.ts +6 -0
package/dist/api/types.d.ts
CHANGED
|
@@ -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