@envive-ai/react-hooks 0.2.7-arthur-1 → 0.2.7

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 (83) hide show
  1. package/dist/{TrackComponentVisibleEvent-CXhKOwKQ.js → TrackComponentVisibleEvent-qNE0dIL1.js} +2 -2
  2. package/dist/{TrackComponentVisibleEvent-CgxCqrIt.cjs → TrackComponentVisibleEvent-tDRnrJi3.cjs} +2 -2
  3. package/dist/amplitudeContext-C6LHpqP_.cjs +290 -0
  4. package/dist/amplitudeContext-rEjGf57q.js +268 -0
  5. package/dist/application/utils/index.cjs +2 -2
  6. package/dist/application/utils/index.js +2 -2
  7. package/dist/atoms/app/index.d.cts +7 -7
  8. package/dist/atoms/app/index.d.ts +1 -1
  9. package/dist/atoms/chat/index.cjs +3 -3
  10. package/dist/atoms/chat/index.d.cts +26 -26
  11. package/dist/atoms/chat/index.d.ts +1 -1
  12. package/dist/atoms/chat/index.js +3 -3
  13. package/dist/atoms/globalSearch/index.d.cts +6 -6
  14. package/dist/atoms/globalSearch/index.d.ts +5 -5
  15. package/dist/atoms/org/index.d.cts +16 -16
  16. package/dist/atoms/org/index.d.ts +16 -16
  17. package/dist/atoms/search/index.cjs +5 -5
  18. package/dist/atoms/search/index.js +5 -5
  19. package/dist/atoms/search/utils.d.ts +1 -1
  20. package/dist/{cdnContext-CtrIlAqX.js → cdnContext-B8zWuGGT.js} +1 -1
  21. package/dist/{cdnContext-CaDyQ_5p.cjs → cdnContext-DzifgoNo.cjs} +1 -1
  22. package/dist/{chat-BjhQCyW_.js → chat-DChvXHjz.js} +3 -3
  23. package/dist/{chat-BkPax29G.cjs → chat-L_N0qaqs.cjs} +3 -3
  24. package/dist/{chatSearch-C3N3iIxu.cjs → chatSearch-B5whqPLW.cjs} +3 -3
  25. package/dist/{chatSearch-BsYlFvpv.js → chatSearch-so-qeiEL.js} +3 -3
  26. package/dist/{chatState-CJ52Ag_7.cjs → chatState-D9_aA1_h.cjs} +2 -2
  27. package/dist/{chatState-CXA1vF16.js → chatState-Dl5lyuKC.js} +2 -2
  28. package/dist/{commerce-api-rgj30eEp.js → commerce-api-DEFd5HUH.js} +2 -2
  29. package/dist/{commerce-api-DA1QGGMK.cjs → commerce-api-DqVD4NH8.cjs} +2 -2
  30. package/dist/contexts/amplitudeContext/index.cjs +2 -2
  31. package/dist/contexts/amplitudeContext/index.js +2 -2
  32. package/dist/contexts/cdnContext/index.cjs +1 -1
  33. package/dist/contexts/cdnContext/index.js +1 -1
  34. package/dist/contexts/chatContext/index.cjs +7 -7
  35. package/dist/contexts/chatContext/index.d.ts +4 -4
  36. package/dist/contexts/chatContext/index.js +7 -7
  37. package/dist/contexts/systemSettingsContext/index.d.cts +2 -2
  38. package/dist/contexts/systemSettingsContext/index.d.ts +4 -4
  39. package/dist/contexts/userIdentityContext/index.cjs +4 -4
  40. package/dist/contexts/userIdentityContext/index.js +4 -4
  41. package/dist/frontendConfig-Cawh5iqv.d.ts +1 -1
  42. package/dist/frontendConfig-iZipB5FG.d.cts +1 -1
  43. package/dist/hooks/AmplitudeOperations/index.cjs +3 -3
  44. package/dist/hooks/AmplitudeOperations/index.js +3 -3
  45. package/dist/hooks/CdnOperations/index.cjs +1 -1
  46. package/dist/hooks/CdnOperations/index.js +1 -1
  47. package/dist/hooks/ChatToggle/index.cjs +3 -3
  48. package/dist/hooks/ChatToggle/index.js +3 -3
  49. package/dist/hooks/ChatToggleAnalytics/index.cjs +4 -4
  50. package/dist/hooks/ChatToggleAnalytics/index.js +4 -4
  51. package/dist/hooks/GrabAndScroll/index.d.cts +2 -2
  52. package/dist/hooks/IdentifyUser/index.cjs +4 -4
  53. package/dist/hooks/IdentifyUser/index.js +4 -4
  54. package/dist/hooks/Search/index.cjs +19 -1157
  55. package/dist/hooks/Search/index.js +17 -1156
  56. package/dist/hooks/SystemSettingsContext/index.d.ts +2 -2
  57. package/dist/hooks/TrackComponentVisibleEvent/index.cjs +2 -2
  58. package/dist/hooks/TrackComponentVisibleEvent/index.js +2 -2
  59. package/dist/hooks/UpdateAnalyticsProps/index.cjs +1 -1
  60. package/dist/hooks/UpdateAnalyticsProps/index.js +1 -1
  61. package/dist/{search-Csh2n66W.cjs → search-CneZkauD.cjs} +2 -2
  62. package/dist/{search-DkiqkogN.js → search-DbZeJYdg.js} +2 -2
  63. package/dist/{useAmplitudeOperations-zIRSqmMW.js → useAmplitudeOperations-B9HjVe6G.js} +2 -2
  64. package/dist/{useAmplitudeOperations-Bo6YNbTV.cjs → useAmplitudeOperations-BdvxAzuI.cjs} +2 -2
  65. package/dist/userIdentityContext-CPztaX6-.js +126 -0
  66. package/dist/userIdentityContext-DdySlQBz.cjs +143 -0
  67. package/dist/{utils-C1ErYSoW.js → utils-B4PvsKVY.js} +2 -2
  68. package/dist/{utils-mqfncrhI.cjs → utils-BRVP7Mnu.cjs} +2 -2
  69. package/dist/utils-CBD4g2Nc.d.cts +1 -1
  70. package/dist/utils-QKFAbPT6.d.ts +1 -1
  71. package/package.json +3 -2
  72. package/src/contexts/amplitudeContext/__tests__/amplitudeContext.test.tsx +525 -0
  73. package/src/contexts/amplitudeContext/amplitudeContext.tsx +6 -2
  74. package/src/contexts/userIdentityContext/__tests__/userIdentityContext.test.tsx +0 -162
  75. package/src/contexts/userIdentityContext/userIdentityContext.tsx +13 -4
  76. package/dist/amplitudeContext-C8tT74Mi.cjs +0 -286
  77. package/dist/amplitudeContext-DCk6Va-j.js +0 -264
  78. package/dist/userIdentityContext-BqbNu7xu.cjs +0 -132
  79. package/dist/userIdentityContext-BxFH9FNQ.js +0 -115
  80. /package/dist/{AmplitudeOperations-ChZWcSsc.js → AmplitudeOperations-C-ieCm9m.js} +0 -0
  81. /package/dist/{AmplitudeOperations-JggIc1zD.cjs → AmplitudeOperations-p7APchq9.cjs} +0 -0
  82. /package/dist/{amplitudeContext-BItT9HmT.js → amplitudeContext-DbicJUzl.js} +0 -0
  83. /package/dist/{amplitudeContext-DPtyVv3Q.cjs → amplitudeContext-q3mggFSE.cjs} +0 -0
@@ -0,0 +1,268 @@
1
+ import { EventsDispatcher, SpiffyEvent } from "./events-DyUix-Bn.js";
2
+ import { OrgShortName } from "./models-CWOgrLCm.js";
3
+ import { FeatureGates } from "./featureGates-KEwAL8p_.js";
4
+ import { logger_default } from "./logger-W3lqg-4b.js";
5
+ import { LocalStorageKeys, useLocalStorage } from "./localStorageContext-BPZ82q-G.js";
6
+ import { amplitudeApiKeyAtom, contextSourceAtom, dataResidencyAtom, envAtom, identifyingPrefixAtom } from "./enviveConfig-DZBohDpc.js";
7
+ import { orgAnalyticsGoogleAnalyticsConfigAtom } from "./orgAnalyticsConfig-CpBmga08.js";
8
+ import { userIdAtom } from "./app-CflxT_xI.js";
9
+ import { useEnviveConfig } from "./enviveConfigContext-DrDjCems.js";
10
+ import { useFeatureFlagService } from "./featureFlagServiceContext-FBM6DdMJ.js";
11
+ import React, { createContext, useCallback, useContext, useEffect, useMemo } from "react";
12
+ import { useAtomValue } from "jotai";
13
+ import { createInstance } from "@amplitude/analytics-browser";
14
+ import { jsx } from "react/jsx-runtime";
15
+
16
+ //#region src/contexts/amplitudeContext/amplitudeContext.tsx
17
+ let SpiffyMetricsEventName = /* @__PURE__ */ function(SpiffyMetricsEventName$1) {
18
+ SpiffyMetricsEventName$1["BundleLoaded"] = "Bundle Loaded";
19
+ SpiffyMetricsEventName$1["ChatLiveAgentBtnClick"] = "Chat Live Agent Btn Click";
20
+ SpiffyMetricsEventName$1["ChatFloatingButtonVisible"] = "Chat Floating Button Visible";
21
+ SpiffyMetricsEventName$1["ChatComponentVisible"] = "Chat Component Visible";
22
+ SpiffyMetricsEventName$1["ChatComponentExpanded"] = "Chat Component Expanded";
23
+ SpiffyMetricsEventName$1["ChatComponentCollapsed"] = "Chat Component Collapsed";
24
+ SpiffyMetricsEventName$1["ChatUserMessageInput"] = "Chat User Message Input";
25
+ SpiffyMetricsEventName$1["ChatSuggestionClicked"] = "Chat Suggestion Clicked";
26
+ SpiffyMetricsEventName$1["ChatAssistantResponse"] = "Chat Assistant Response";
27
+ SpiffyMetricsEventName$1["ProductCardClicked"] = "Product Card Clicked";
28
+ SpiffyMetricsEventName$1["ProductReviewCardClicked"] = "Product Review Card Clicked";
29
+ SpiffyMetricsEventName$1["AddToCartClicked"] = "Add to Cart Clicked";
30
+ SpiffyMetricsEventName$1["PromptCardClicked"] = "Prompt Card Clicked";
31
+ SpiffyMetricsEventName$1["SupportedEvent"] = "Supported Event";
32
+ SpiffyMetricsEventName$1["SearchBackToResponseClicked"] = "Search Back to Response Clicked";
33
+ SpiffyMetricsEventName$1["PerformanceMetrics"] = "Performance Metrics";
34
+ SpiffyMetricsEventName$1["SearchBarClicked"] = "Search Bar Clicked";
35
+ SpiffyMetricsEventName$1["OrderLookupStarted"] = "Order Lookup Started";
36
+ SpiffyMetricsEventName$1["OrderLookupFormSubmitted"] = "Order Lookup Form Submitted";
37
+ SpiffyMetricsEventName$1["SearchComponentVisible"] = "Search Component Visible";
38
+ SpiffyMetricsEventName$1["SearchZeroStateSuggestionClicked"] = "Search Zero State Suggestion Clicked";
39
+ SpiffyMetricsEventName$1["SearchInputStarted"] = "Search Input Started";
40
+ SpiffyMetricsEventName$1["SearchQuerySubmitted"] = "Search Query Submitted";
41
+ SpiffyMetricsEventName$1["SearchResultsViewed"] = "Search Results Viewed";
42
+ SpiffyMetricsEventName$1["SearchTimeToFirstClick"] = "Search Time to First Click";
43
+ SpiffyMetricsEventName$1["SearchZeroResultsRate"] = "Search Zero Results Rate";
44
+ SpiffyMetricsEventName$1["SearchFilterClicked"] = "Search Filter Clicked";
45
+ SpiffyMetricsEventName$1["SearchSortClicked"] = "Search Sort Clicked";
46
+ return SpiffyMetricsEventName$1;
47
+ }({});
48
+ const AmplitudeContext = createContext(null);
49
+ const AmplitudeProvider = ({ children }) => {
50
+ const userId = useAtomValue(userIdAtom);
51
+ const amplitudeApiKey = useAtomValue(amplitudeApiKeyAtom);
52
+ const dataResidency = useAtomValue(dataResidencyAtom);
53
+ const orgGaConfig = useAtomValue(orgAnalyticsGoogleAnalyticsConfigAtom);
54
+ const env = useAtomValue(envAtom);
55
+ const contextSource = useAtomValue(contextSourceAtom);
56
+ useAtomValue(identifyingPrefixAtom);
57
+ const { getItem } = useLocalStorage();
58
+ const { publicKey, featureOverrides, variantUrlOverride, variantInfoOverride, show, orgShortName, featureGates } = useEnviveConfig();
59
+ const { featureFlagService } = useFeatureFlagService();
60
+ const [amplitudeClient, setAmplitudeClient] = React.useState(void 0);
61
+ const [internalEventTrackingEnrichment, setInternalEventTrackingEnrichment] = React.useState(void 0);
62
+ const [supplementalDefaultProps, setSupplementalDefaultProps] = React.useState({});
63
+ const isReady = Boolean(userId && featureFlagService && amplitudeApiKey);
64
+ const getDefaultTrackingProps = useCallback(() => {
65
+ const gatesProps = featureGates ? featureGates.reduce((acc, curr) => {
66
+ if (curr.name && curr.value != null) return {
67
+ ...acc,
68
+ [`feature_gate.${curr.name}`]: curr.value
69
+ };
70
+ return acc;
71
+ }, {}) : {};
72
+ const experimentProps = {};
73
+ return {
74
+ ...gatesProps,
75
+ ...experimentProps,
76
+ ...supplementalDefaultProps,
77
+ app_id: "commerce-chat-react-component",
78
+ chat_id: getItem(LocalStorageKeys.ChatId),
79
+ env: env || "unknown",
80
+ app_source: contextSource,
81
+ "org.short_name": orgShortName,
82
+ "user.id": userId,
83
+ "cdp.user_id": null,
84
+ "cdp.provider": null,
85
+ "event.source": "web-browser",
86
+ "event.type": "user-activity",
87
+ "event.id": null,
88
+ "event.channel": "web",
89
+ "event.timestamp": null
90
+ };
91
+ }, [
92
+ featureGates,
93
+ supplementalDefaultProps,
94
+ env,
95
+ contextSource,
96
+ orgShortName,
97
+ userId
98
+ ]);
99
+ const eventPropsToPrefixedEventProps = useCallback((eventName, eventProps) => {
100
+ const prefix = eventName.toLowerCase().replace(/\s+/g, "_");
101
+ return Object.entries(eventProps).reduce((acc, [key, value$1]) => {
102
+ acc[`${prefix}.${key}`] = value$1;
103
+ return acc;
104
+ }, {});
105
+ }, []);
106
+ const amplitudeSessionReplayInit = useCallback(() => {
107
+ const isEnabled = Boolean(orgShortName === OrgShortName.UniqueVintage && featureFlagService?.isClientSessionEnabled() && featureFlagService?.isFeatureGateEnabled(FeatureGates.IsNewFeatureEnabled));
108
+ const sampleRate = 1;
109
+ try {
110
+ logger_default.logDebug(`[spiffy-ai] amplitude session-replay initializing isEnabled=${isEnabled} sampleRate=${sampleRate}`);
111
+ if (!isEnabled) return isEnabled;
112
+ return isEnabled;
113
+ } catch (e) {
114
+ logger_default.logError("[spiffy-ai] Error initializing amplitude session-replay", e);
115
+ return false;
116
+ }
117
+ }, [orgShortName, featureFlagService]);
118
+ const getEventTrackingEnrichment = useCallback(() => {
119
+ if (internalEventTrackingEnrichment !== void 0) return internalEventTrackingEnrichment;
120
+ const enrichment = {
121
+ name: "page-view-tracking-enrichment",
122
+ type: "enrichment",
123
+ setup: async () => void 0,
124
+ execute: async (event) => {
125
+ let enrichedEvent;
126
+ if (["[Amplitude] Page Viewed", `[Spiffy] ${SpiffyMetricsEventName.BundleLoaded}`].includes(event.event_type)) {
127
+ const globalProperties = {};
128
+ if (publicKey) globalProperties["globalProperties.publicKey"] = publicKey;
129
+ if (featureOverrides) Object.entries(featureOverrides).forEach(([key, value$1]) => {
130
+ globalProperties[`globalProperties.featureOverrides.${key}`] = String(value$1);
131
+ });
132
+ if (variantUrlOverride) globalProperties["globalProperties.variantUrlOverride"] = variantUrlOverride;
133
+ if (variantInfoOverride) globalProperties["globalProperties.variantInfoOverride"] = JSON.stringify(variantInfoOverride);
134
+ if (show != null) globalProperties["globalProperties.show"] = String(show);
135
+ const enabledFeatures = featureFlagService.getFeatureFlags();
136
+ const enabledFeaturesProperties = Object.entries(enabledFeatures).reduce((acc, [key, value$1]) => ({
137
+ ...acc,
138
+ [`enabledFeatures.${key}`]: `${value$1}`
139
+ }), {});
140
+ const timingProperties = { "timing.enriched_at_ms": window.performance?.now() };
141
+ enrichedEvent = {
142
+ ...event,
143
+ event_properties: {
144
+ ...event.event_properties,
145
+ ...getDefaultTrackingProps(),
146
+ ...globalProperties,
147
+ ...enabledFeaturesProperties,
148
+ ...timingProperties
149
+ }
150
+ };
151
+ } else enrichedEvent = event;
152
+ EventsDispatcher.dispatch(SpiffyEvent.AMPLITUDE_EVENT, enrichedEvent);
153
+ return enrichedEvent;
154
+ }
155
+ };
156
+ setInternalEventTrackingEnrichment(enrichment);
157
+ return enrichment;
158
+ }, [
159
+ internalEventTrackingEnrichment,
160
+ getDefaultTrackingProps,
161
+ featureFlagService,
162
+ publicKey,
163
+ featureOverrides,
164
+ variantUrlOverride,
165
+ variantInfoOverride,
166
+ show
167
+ ]);
168
+ useEffect(() => {
169
+ if (isReady && !amplitudeClient) {
170
+ const currentAmplitudeInstance = createInstance();
171
+ const isSessionsEnabled = amplitudeSessionReplayInit();
172
+ currentAmplitudeInstance.add(getEventTrackingEnrichment());
173
+ currentAmplitudeInstance.init(amplitudeApiKey, userId, {
174
+ serverZone: dataResidency,
175
+ trackingOptions: { ipAddress: true },
176
+ autocapture: {
177
+ attribution: true,
178
+ pageViews: { trackHistoryChanges: "pathOnly" },
179
+ sessions: isSessionsEnabled,
180
+ formInteractions: false,
181
+ fileDownloads: false
182
+ }
183
+ });
184
+ setAmplitudeClient(currentAmplitudeInstance);
185
+ }
186
+ }, [
187
+ isReady,
188
+ amplitudeClient,
189
+ amplitudeApiKey,
190
+ userId,
191
+ dataResidency,
192
+ amplitudeSessionReplayInit,
193
+ getEventTrackingEnrichment
194
+ ]);
195
+ const trackEvent = useCallback(async ({ eventName, eventProps, eventGroups, alsoSendToGoogleAnalytics = false }) => {
196
+ logger_default.logDebug("Submitting event", eventName);
197
+ try {
198
+ const decoratedEventName = `[Spiffy] ${eventName}`;
199
+ if (!amplitudeClient) {
200
+ logger_default.logWarn("amplitude client undefined", void 0, { event_name: decoratedEventName });
201
+ return;
202
+ }
203
+ const eventData = JSON.stringify({
204
+ eventName,
205
+ eventProps,
206
+ created_at: (/* @__PURE__ */ new Date()).toISOString()
207
+ });
208
+ const data = new TextEncoder().encode(eventData);
209
+ const hashBuffer = await crypto.subtle.digest("SHA-256", data);
210
+ const currentInsertId = Array.from(new Uint8Array(hashBuffer)).map((b) => b.toString(16).padStart(2, "0")).join("");
211
+ logger_default.logDebug(`amplitude tracking ${decoratedEventName}`, null, {
212
+ event_name: decoratedEventName,
213
+ props: eventProps
214
+ });
215
+ amplitudeClient.track(decoratedEventName, {
216
+ ...getDefaultTrackingProps(),
217
+ ...eventProps,
218
+ ...eventProps ? eventPropsToPrefixedEventProps(eventName, eventProps) : {}
219
+ }, {
220
+ ...eventGroups,
221
+ insert_id: currentInsertId
222
+ });
223
+ if (alsoSendToGoogleAnalytics && orgGaConfig) {
224
+ logger_default.logDebug("[spiffy-ai] GA tracking", decoratedEventName);
225
+ if (window.dataLayer) window.dataLayer.push({
226
+ event: decoratedEventName,
227
+ eventProps
228
+ });
229
+ }
230
+ } catch (err) {
231
+ logger_default.logError("[spiffy-ai] Error tracking event", err, {
232
+ eventName,
233
+ eventProps
234
+ });
235
+ }
236
+ }, [
237
+ amplitudeClient,
238
+ getDefaultTrackingProps,
239
+ eventPropsToPrefixedEventProps,
240
+ orgGaConfig
241
+ ]);
242
+ const value = useMemo(() => ({
243
+ trackEvent,
244
+ isReady,
245
+ setSupplementalDefaultProps: (props) => setSupplementalDefaultProps(props)
246
+ }), [
247
+ trackEvent,
248
+ isReady,
249
+ setSupplementalDefaultProps
250
+ ]);
251
+ if (!isReady) {
252
+ console.log("AmplitudeProvider is not ready", isReady, userId, featureFlagService, amplitudeApiKey);
253
+ return null;
254
+ }
255
+ return /* @__PURE__ */ jsx(AmplitudeContext.Provider, {
256
+ value,
257
+ children
258
+ });
259
+ };
260
+ const useAmplitude = () => {
261
+ const context = useContext(AmplitudeContext);
262
+ if (!context) throw new Error("useAmplitude must be used within AmplitudeProvider");
263
+ return context;
264
+ };
265
+
266
+ //#endregion
267
+ export { AmplitudeProvider, SpiffyMetricsEventName, useAmplitude };
268
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW1wbGl0dWRlQ29udGV4dC1yRWpHZjU3cS5qcyIsIm5hbWVzIjpbIkFtcGxpdHVkZVByb3ZpZGVyOiBSZWFjdC5GQzx7IGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGUgfT4iLCJ2YWx1ZSIsImVucmljaG1lbnQ6IEVucmljaG1lbnRQbHVnaW4iLCJlbnJpY2hlZEV2ZW50OiBFdmVudCIsImdsb2JhbFByb3BlcnRpZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4iLCJjdXJyZW50QW1wbGl0dWRlSW5zdGFuY2U6IEJyb3dzZXJDbGllbnQiXSwic291cmNlcyI6WyIuLi9zcmMvY29udGV4dHMvYW1wbGl0dWRlQ29udGV4dC9hbXBsaXR1ZGVDb250ZXh0LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHtcbiAgY3JlYXRlQ29udGV4dCxcbiAgdXNlQ29udGV4dCxcbiAgdXNlQ2FsbGJhY2ssXG4gIHVzZU1lbW8sXG4gIHVzZUVmZmVjdCxcbn0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VBdG9tVmFsdWUgfSBmcm9tIFwiam90YWlcIjtcbmltcG9ydCB7IGNyZWF0ZUluc3RhbmNlIH0gZnJvbSBcIkBhbXBsaXR1ZGUvYW5hbHl0aWNzLWJyb3dzZXJcIjtcbmltcG9ydCB7IEZlYXR1cmVHYXRlcyB9IGZyb20gXCJzcmMvYXBwbGljYXRpb24vbW9kZWxzL2ZlYXR1cmVHYXRlc1wiO1xuaW1wb3J0IHsgT3JnU2hvcnROYW1lIH0gZnJvbSBcInNyYy9hcHBsaWNhdGlvbi9tb2RlbHNcIjtcbmltcG9ydCB7IEV2ZW50c0Rpc3BhdGNoZXIsIFNwaWZmeUV2ZW50IH0gZnJvbSBcInNyYy9ldmVudHNcIjtcbmltcG9ydCB7XG4gIGFtcGxpdHVkZUFwaUtleUF0b20sXG4gIGNvbnRleHRTb3VyY2VBdG9tLFxuICBkYXRhUmVzaWRlbmN5QXRvbSxcbiAgaWRlbnRpZnlpbmdQcmVmaXhBdG9tLFxufSBmcm9tIFwic3JjL2F0b21zL2Vudml2ZS9lbnZpdmVDb25maWdcIjtcbmltcG9ydCB7XG4gIExvY2FsU3RvcmFnZUtleXMsXG4gIHVzZUxvY2FsU3RvcmFnZSxcbn0gZnJvbSBcInNyYy9jb250ZXh0cy9sb2NhbFN0b3JhZ2VDb250ZXh0XCI7XG5pbXBvcnQgeyBvcmdBbmFseXRpY3NHb29nbGVBbmFseXRpY3NDb25maWdBdG9tIH0gZnJvbSBcInNyYy9hdG9tcy9vcmcvb3JnQW5hbHl0aWNzQ29uZmlnXCI7XG5pbXBvcnQgeyB1c2VySWRBdG9tIH0gZnJvbSBcInNyYy9hdG9tcy9hcHBcIjtcbmltcG9ydCB7IGVudkF0b20gfSBmcm9tIFwic3JjL2F0b21zL2Vudml2ZS9lbnZpdmVDb25maWdcIjtcbmltcG9ydCBMb2dnZXIgZnJvbSBcInNyYy9hcHBsaWNhdGlvbi9sb2dnaW5nL2xvZ2dlclwiO1xuaW1wb3J0IHR5cGUge1xuICBCcm93c2VyQ2xpZW50LFxuICBFbnJpY2htZW50UGx1Z2luLFxuICBFdmVudCxcbiAgU2VydmVyWm9uZVR5cGUsXG59IGZyb20gXCJAYW1wbGl0dWRlL2FuYWx5dGljcy10eXBlc1wiO1xuaW1wb3J0IHsgdXNlRW52aXZlQ29uZmlnIH0gZnJvbSBcInNyYy9jb250ZXh0cy9lbnZpdmVDb25maWdDb250ZXh0L2Vudml2ZUNvbmZpZ0NvbnRleHRcIjtcbmltcG9ydCB7XG4gIHVzZUZlYXR1cmVGbGFnU2VydmljZSxcbn0gZnJvbSBcInNyYy9jb250ZXh0cy9mZWF0dXJlRmxhZ1NlcnZpY2VDb250ZXh0L2ZlYXR1cmVGbGFnU2VydmljZUNvbnRleHRcIjtcblxuZXhwb3J0IGVudW0gU3BpZmZ5TWV0cmljc0V2ZW50TmFtZSB7XG4gIEJ1bmRsZUxvYWRlZCA9IFwiQnVuZGxlIExvYWRlZFwiLFxuICBDaGF0TGl2ZUFnZW50QnRuQ2xpY2sgPSBcIkNoYXQgTGl2ZSBBZ2VudCBCdG4gQ2xpY2tcIixcbiAgQ2hhdEZsb2F0aW5nQnV0dG9uVmlzaWJsZSA9IFwiQ2hhdCBGbG9hdGluZyBCdXR0b24gVmlzaWJsZVwiLFxuICBDaGF0Q29tcG9uZW50VmlzaWJsZSA9IFwiQ2hhdCBDb21wb25lbnQgVmlzaWJsZVwiLFxuICBDaGF0Q29tcG9uZW50RXhwYW5kZWQgPSBcIkNoYXQgQ29tcG9uZW50IEV4cGFuZGVkXCIsXG4gIENoYXRDb21wb25lbnRDb2xsYXBzZWQgPSBcIkNoYXQgQ29tcG9uZW50IENvbGxhcHNlZFwiLFxuICBDaGF0VXNlck1lc3NhZ2VJbnB1dCA9IFwiQ2hhdCBVc2VyIE1lc3NhZ2UgSW5wdXRcIixcbiAgQ2hhdFN1Z2dlc3Rpb25DbGlja2VkID0gXCJDaGF0IFN1Z2dlc3Rpb24gQ2xpY2tlZFwiLFxuICBDaGF0QXNzaXN0YW50UmVzcG9uc2UgPSBcIkNoYXQgQXNzaXN0YW50IFJlc3BvbnNlXCIsXG4gIFByb2R1Y3RDYXJkQ2xpY2tlZCA9IFwiUHJvZHVjdCBDYXJkIENsaWNrZWRcIixcbiAgUHJvZHVjdFJldmlld0NhcmRDbGlja2VkID0gXCJQcm9kdWN0IFJldmlldyBDYXJkIENsaWNrZWRcIixcbiAgQWRkVG9DYXJ0Q2xpY2tlZCA9IFwiQWRkIHRvIENhcnQgQ2xpY2tlZFwiLFxuICBQcm9tcHRDYXJkQ2xpY2tlZCA9IFwiUHJvbXB0IENhcmQgQ2xpY2tlZFwiLFxuICBTdXBwb3J0ZWRFdmVudCA9IFwiU3VwcG9ydGVkIEV2ZW50XCIsXG4gIFNlYXJjaEJhY2tUb1Jlc3BvbnNlQ2xpY2tlZCA9IFwiU2VhcmNoIEJhY2sgdG8gUmVzcG9uc2UgQ2xpY2tlZFwiLFxuICBQZXJmb3JtYW5jZU1ldHJpY3MgPSBcIlBlcmZvcm1hbmNlIE1ldHJpY3NcIixcbiAgU2VhcmNoQmFyQ2xpY2tlZCA9IFwiU2VhcmNoIEJhciBDbGlja2VkXCIsXG4gIE9yZGVyTG9va3VwU3RhcnRlZCA9IFwiT3JkZXIgTG9va3VwIFN0YXJ0ZWRcIixcbiAgT3JkZXJMb29rdXBGb3JtU3VibWl0dGVkID0gXCJPcmRlciBMb29rdXAgRm9ybSBTdWJtaXR0ZWRcIixcbiAgU2VhcmNoQ29tcG9uZW50VmlzaWJsZSA9IFwiU2VhcmNoIENvbXBvbmVudCBWaXNpYmxlXCIsXG4gIFNlYXJjaFplcm9TdGF0ZVN1Z2dlc3Rpb25DbGlja2VkID0gXCJTZWFyY2ggWmVybyBTdGF0ZSBTdWdnZXN0aW9uIENsaWNrZWRcIiwgLy8gVGhpcyBpcyB0aGUgc2Nyb2xsaW5nIGxpc3Qgb2Ygc3VnZ2VzdGlvbiBidXR0b25zIGluIGdsb2JhbCBzZWFyY2hcbiAgU2VhcmNoSW5wdXRTdGFydGVkID0gXCJTZWFyY2ggSW5wdXQgU3RhcnRlZFwiLFxuICBTZWFyY2hRdWVyeVN1Ym1pdHRlZCA9IFwiU2VhcmNoIFF1ZXJ5IFN1Ym1pdHRlZFwiLFxuICAvLyBTZWFyY2hBdXRvY29tcGxldGVWaWV3ZWQgPSAnU2VhcmNoIEF1dG9jb21wbGV0ZSBWaWV3ZWQnLCAvLyBUT0RPOiBhZGQgdGhpcyB3aGVuIGF1dG9jb21wbGV0ZSBpcyBhZGRlZFxuICAvLyBTZWFyY2hBdXRvY29tcGxldGVDbGlja2VkID0gJ1NlYXJjaCBBdXRvY29tcGxldGUgQ2xpY2tlZCcsIC8vIFRPRE86IGFkZCB0aGlzIHdoZW4gYXV0b2NvbXBsZXRlIGlzIGFkZGVkXG4gIFNlYXJjaFJlc3VsdHNWaWV3ZWQgPSBcIlNlYXJjaCBSZXN1bHRzIFZpZXdlZFwiLFxuICBTZWFyY2hUaW1lVG9GaXJzdENsaWNrID0gXCJTZWFyY2ggVGltZSB0byBGaXJzdCBDbGlja1wiLFxuICBTZWFyY2haZXJvUmVzdWx0c1JhdGUgPSBcIlNlYXJjaCBaZXJvIFJlc3VsdHMgUmF0ZVwiLFxuICBTZWFyY2hGaWx0ZXJDbGlja2VkID0gXCJTZWFyY2ggRmlsdGVyIENsaWNrZWRcIixcbiAgU2VhcmNoU29ydENsaWNrZWQgPSBcIlNlYXJjaCBTb3J0IENsaWNrZWRcIixcbn1cblxuaW50ZXJmYWNlIFRyYWNrRXZlbnRQYXJhbXMge1xuICBldmVudE5hbWU6IFNwaWZmeU1ldHJpY3NFdmVudE5hbWU7XG4gIGV2ZW50UHJvcHM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgZXZlbnRHcm91cHM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgYWxzb1NlbmRUb0dvb2dsZUFuYWx5dGljcz86IGJvb2xlYW47XG59XG5cbmludGVyZmFjZSBBbXBsaXR1ZGVDb250ZXh0VHlwZSB7XG4gIHRyYWNrRXZlbnQ6IChwYXJhbXM6IFRyYWNrRXZlbnRQYXJhbXMpID0+IFByb21pc2U8dm9pZD47XG4gIGlzUmVhZHk6IGJvb2xlYW47XG4gIHNldFN1cHBsZW1lbnRhbERlZmF1bHRQcm9wczogKHByb3BzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgPT4gdm9pZDtcbn1cblxuY29uc3QgQW1wbGl0dWRlQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQ8QW1wbGl0dWRlQ29udGV4dFR5cGUgfCBudWxsPihudWxsKTtcblxuZXhwb3J0IGNvbnN0IEFtcGxpdHVkZVByb3ZpZGVyOiBSZWFjdC5GQzx7IGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGUgfT4gPSAoe1xuICBjaGlsZHJlbixcbn0pID0+IHtcbiAgY29uc3QgdXNlcklkID0gdXNlQXRvbVZhbHVlKHVzZXJJZEF0b20pO1xuICBjb25zdCBhbXBsaXR1ZGVBcGlLZXkgPSB1c2VBdG9tVmFsdWUoYW1wbGl0dWRlQXBpS2V5QXRvbSk7XG4gIGNvbnN0IGRhdGFSZXNpZGVuY3kgPSB1c2VBdG9tVmFsdWUoZGF0YVJlc2lkZW5jeUF0b20pO1xuICBjb25zdCBvcmdHYUNvbmZpZyA9IHVzZUF0b21WYWx1ZShvcmdBbmFseXRpY3NHb29nbGVBbmFseXRpY3NDb25maWdBdG9tKTtcbiAgY29uc3QgZW52ID0gdXNlQXRvbVZhbHVlKGVudkF0b20pO1xuICBjb25zdCBjb250ZXh0U291cmNlID0gdXNlQXRvbVZhbHVlKGNvbnRleHRTb3VyY2VBdG9tKTtcbiAgY29uc3QgaWRlbnRpZnlpbmdQcmVmaXggPSB1c2VBdG9tVmFsdWUoaWRlbnRpZnlpbmdQcmVmaXhBdG9tKTtcbiAgY29uc3QgeyBnZXRJdGVtIH0gPSB1c2VMb2NhbFN0b3JhZ2UoKTtcbiAgY29uc3Qge1xuICAgIHB1YmxpY0tleSxcbiAgICBmZWF0dXJlT3ZlcnJpZGVzLFxuICAgIHZhcmlhbnRVcmxPdmVycmlkZSxcbiAgICB2YXJpYW50SW5mb092ZXJyaWRlLFxuICAgIHNob3csXG4gICAgb3JnU2hvcnROYW1lLFxuICAgIGZlYXR1cmVHYXRlcyxcbiAgfSA9IHVzZUVudml2ZUNvbmZpZygpO1xuXG4gIGNvbnN0IHsgZmVhdHVyZUZsYWdTZXJ2aWNlIH0gPSB1c2VGZWF0dXJlRmxhZ1NlcnZpY2UoKTtcblxuICBjb25zdCBbYW1wbGl0dWRlQ2xpZW50LCBzZXRBbXBsaXR1ZGVDbGllbnRdID0gUmVhY3QudXNlU3RhdGU8XG4gICAgQnJvd3NlckNsaWVudCB8IHVuZGVmaW5lZFxuICA+KHVuZGVmaW5lZCk7XG4gIGNvbnN0IFtpbnRlcm5hbEV2ZW50VHJhY2tpbmdFbnJpY2htZW50LCBzZXRJbnRlcm5hbEV2ZW50VHJhY2tpbmdFbnJpY2htZW50XSA9XG4gICAgUmVhY3QudXNlU3RhdGU8RW5yaWNobWVudFBsdWdpbiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgY29uc3QgW3N1cHBsZW1lbnRhbERlZmF1bHRQcm9wcywgc2V0U3VwcGxlbWVudGFsRGVmYXVsdFByb3BzXSA9XG4gICAgUmVhY3QudXNlU3RhdGU8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+KHt9KTtcblxuICBjb25zdCBpc1JlYWR5ID0gQm9vbGVhbihcbiAgICB1c2VySWQgJiYgZmVhdHVyZUZsYWdTZXJ2aWNlICYmIGFtcGxpdHVkZUFwaUtleVxuICApO1xuXG4gIGNvbnN0IGdldERlZmF1bHRUcmFja2luZ1Byb3BzID0gdXNlQ2FsbGJhY2soKCk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0+IHtcbiAgICBjb25zdCBnYXRlc1Byb3BzID0gZmVhdHVyZUdhdGVzXG4gICAgICA/IGZlYXR1cmVHYXRlcy5yZWR1Y2U8UmVjb3JkPHN0cmluZywgYm9vbGVhbj4+KChhY2MsIGN1cnIpID0+IHtcbiAgICAgICAgICBpZiAoY3Vyci5uYW1lICYmIGN1cnIudmFsdWUgIT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIHsgLi4uYWNjLCBbYGZlYXR1cmVfZ2F0ZS4ke2N1cnIubmFtZX1gXTogY3Vyci52YWx1ZSB9O1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICB9LCB7fSlcbiAgICAgIDoge307XG4gICAgY29uc3QgZXhwZXJpbWVudFByb3BzID0ge307IC8vIE5vIGRpcmVjdCBlcXVpdmFsZW50IGZvciBleHBlcmltZW50cyBpbiBFbnZpdmVDb25maWcgeWV0XG5cbiAgICBjb25zdCBvcmdMZXZlbEFtcGxpdHVkZVRyYWNraW5nUHJvcHMgPSB7XG4gICAgICAuLi5nYXRlc1Byb3BzLFxuICAgICAgLi4uZXhwZXJpbWVudFByb3BzLFxuICAgIH07XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4ub3JnTGV2ZWxBbXBsaXR1ZGVUcmFja2luZ1Byb3BzLFxuICAgICAgLi4uc3VwcGxlbWVudGFsRGVmYXVsdFByb3BzLFxuICAgICAgLy8gVE9ETzogb3JnX2lkIGlzIG5vdCBkaXJlY3RseSBhdmFpbGFibGUgaW4gRW52aXZlQ29uZmlnLiBOZWVkIHRvIGZpbmQgYSBuZXcgc291cmNlIG9yIGRlcml2ZSBpdC5cbiAgICAgIC8vIG9yZ19pZDogb3JnQ29uZmlnPy5vcmc/Lm9yZz8uaWQsXG4gICAgICBhcHBfaWQ6IFwiY29tbWVyY2UtY2hhdC1yZWFjdC1jb21wb25lbnRcIixcbiAgICAgIGNoYXRfaWQ6IGdldEl0ZW0oTG9jYWxTdG9yYWdlS2V5cy5DaGF0SWQpLFxuICAgICAgZW52OiBlbnYgfHwgXCJ1bmtub3duXCIsXG4gICAgICBhcHBfc291cmNlOiBjb250ZXh0U291cmNlLFxuICAgICAgXCJvcmcuc2hvcnRfbmFtZVwiOiBvcmdTaG9ydE5hbWUsXG4gICAgICBcInVzZXIuaWRcIjogdXNlcklkLFxuICAgICAgXCJjZHAudXNlcl9pZFwiOiBudWxsLFxuICAgICAgXCJjZHAucHJvdmlkZXJcIjogbnVsbCxcbiAgICAgIFwiZXZlbnQuc291cmNlXCI6IFwid2ViLWJyb3dzZXJcIixcbiAgICAgIFwiZXZlbnQudHlwZVwiOiBcInVzZXItYWN0aXZpdHlcIixcbiAgICAgIFwiZXZlbnQuaWRcIjogbnVsbCxcbiAgICAgIFwiZXZlbnQuY2hhbm5lbFwiOiBcIndlYlwiLFxuICAgICAgXCJldmVudC50aW1lc3RhbXBcIjogbnVsbCxcbiAgICB9O1xuICB9LCBbXG4gICAgZmVhdHVyZUdhdGVzLFxuICAgIHN1cHBsZW1lbnRhbERlZmF1bHRQcm9wcyxcbiAgICBlbnYsXG4gICAgY29udGV4dFNvdXJjZSxcbiAgICBvcmdTaG9ydE5hbWUsXG4gICAgdXNlcklkLFxuICBdKTtcblxuICBjb25zdCBldmVudFByb3BzVG9QcmVmaXhlZEV2ZW50UHJvcHMgPSB1c2VDYWxsYmFjayhcbiAgICAoXG4gICAgICBldmVudE5hbWU6IFNwaWZmeU1ldHJpY3NFdmVudE5hbWUsXG4gICAgICBldmVudFByb3BzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgICk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0+IHtcbiAgICAgIGNvbnN0IHByZWZpeCA9IGV2ZW50TmFtZS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1xccysvZywgXCJfXCIpO1xuICAgICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKGV2ZW50UHJvcHMpLnJlZHVjZSgoYWNjLCBba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgYWNjW2Ake3ByZWZpeH0uJHtrZXl9YF0gPSB2YWx1ZTtcbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH0sIHt9IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KTtcbiAgICB9LFxuICAgIFtdXG4gICk7XG5cbiAgY29uc3QgYW1wbGl0dWRlU2Vzc2lvblJlcGxheUluaXQgPSB1c2VDYWxsYmFjaygoKTogYm9vbGVhbiA9PiB7XG4gICAgY29uc3QgaXNFbmFibGVkID0gQm9vbGVhbihcbiAgICAgIG9yZ1Nob3J0TmFtZSA9PT0gT3JnU2hvcnROYW1lLlVuaXF1ZVZpbnRhZ2UgJiZcbiAgICAgICAgZmVhdHVyZUZsYWdTZXJ2aWNlPy5pc0NsaWVudFNlc3Npb25FbmFibGVkKCkgJiZcbiAgICAgICAgZmVhdHVyZUZsYWdTZXJ2aWNlPy5pc0ZlYXR1cmVHYXRlRW5hYmxlZChcbiAgICAgICAgICBGZWF0dXJlR2F0ZXMuSXNOZXdGZWF0dXJlRW5hYmxlZFxuICAgICAgICApXG4gICAgKTtcbiAgICBjb25zdCBzYW1wbGVSYXRlID0gMTtcblxuICAgIHRyeSB7XG4gICAgICBMb2dnZXIubG9nRGVidWcoXG4gICAgICAgIGBbc3BpZmZ5LWFpXSBhbXBsaXR1ZGUgc2Vzc2lvbi1yZXBsYXkgaW5pdGlhbGl6aW5nIGlzRW5hYmxlZD0ke2lzRW5hYmxlZH0gc2FtcGxlUmF0ZT0ke3NhbXBsZVJhdGV9YFxuICAgICAgKTtcblxuICAgICAgaWYgKCFpc0VuYWJsZWQpIHtcbiAgICAgICAgcmV0dXJuIGlzRW5hYmxlZDtcbiAgICAgIH1cblxuICAgICAgLy8gYW1wbGl0dWRlSW5zdGFuY2UuYWRkKHNlc3Npb25SZXBsYXlQbHVnaW4oeyBzYW1wbGVSYXRlIH0pKTtcblxuICAgICAgcmV0dXJuIGlzRW5hYmxlZDtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBMb2dnZXIubG9nRXJyb3IoXG4gICAgICAgIFwiW3NwaWZmeS1haV0gRXJyb3IgaW5pdGlhbGl6aW5nIGFtcGxpdHVkZSBzZXNzaW9uLXJlcGxheVwiLFxuICAgICAgICBlXG4gICAgICApO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfSwgW29yZ1Nob3J0TmFtZSwgZmVhdHVyZUZsYWdTZXJ2aWNlXSk7XG5cbiAgY29uc3QgZ2V0RXZlbnRUcmFja2luZ0VucmljaG1lbnQgPSB1c2VDYWxsYmFjaygoKTogRW5yaWNobWVudFBsdWdpbiA9PiB7XG4gICAgaWYgKGludGVybmFsRXZlbnRUcmFja2luZ0VucmljaG1lbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGludGVybmFsRXZlbnRUcmFja2luZ0VucmljaG1lbnQ7XG4gICAgfVxuXG4gICAgY29uc3QgZW5yaWNobWVudDogRW5yaWNobWVudFBsdWdpbiA9IHtcbiAgICAgIG5hbWU6IFwicGFnZS12aWV3LXRyYWNraW5nLWVucmljaG1lbnRcIixcbiAgICAgIHR5cGU6IFwiZW5yaWNobWVudFwiLFxuICAgICAgc2V0dXA6IGFzeW5jICgpID0+IHVuZGVmaW5lZCxcbiAgICAgIGV4ZWN1dGU6IGFzeW5jIChldmVudDogRXZlbnQpOiBQcm9taXNlPEV2ZW50PiA9PiB7XG4gICAgICAgIGxldCBlbnJpY2hlZEV2ZW50OiBFdmVudDtcblxuICAgICAgICBjb25zdCBldmVudHNUb0VucmljaCA9IFtcbiAgICAgICAgICBcIltBbXBsaXR1ZGVdIFBhZ2UgVmlld2VkXCIsXG4gICAgICAgICAgYFtTcGlmZnldICR7U3BpZmZ5TWV0cmljc0V2ZW50TmFtZS5CdW5kbGVMb2FkZWR9YCxcbiAgICAgICAgXTtcblxuICAgICAgICBpZiAoZXZlbnRzVG9FbnJpY2guaW5jbHVkZXMoZXZlbnQuZXZlbnRfdHlwZSkpIHtcbiAgICAgICAgICBjb25zdCBnbG9iYWxQcm9wZXJ0aWVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbiAgICAgICAgICBpZiAocHVibGljS2V5KSB7XG4gICAgICAgICAgICBnbG9iYWxQcm9wZXJ0aWVzW1wiZ2xvYmFsUHJvcGVydGllcy5wdWJsaWNLZXlcIl0gPSBwdWJsaWNLZXk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChmZWF0dXJlT3ZlcnJpZGVzKSB7XG4gICAgICAgICAgICBPYmplY3QuZW50cmllcyhmZWF0dXJlT3ZlcnJpZGVzKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgICAgICAgZ2xvYmFsUHJvcGVydGllc1tgZ2xvYmFsUHJvcGVydGllcy5mZWF0dXJlT3ZlcnJpZGVzLiR7a2V5fWBdID1cbiAgICAgICAgICAgICAgICBTdHJpbmcodmFsdWUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh2YXJpYW50VXJsT3ZlcnJpZGUpIHtcbiAgICAgICAgICAgIGdsb2JhbFByb3BlcnRpZXNbXCJnbG9iYWxQcm9wZXJ0aWVzLnZhcmlhbnRVcmxPdmVycmlkZVwiXSA9XG4gICAgICAgICAgICAgIHZhcmlhbnRVcmxPdmVycmlkZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHZhcmlhbnRJbmZvT3ZlcnJpZGUpIHtcbiAgICAgICAgICAgIGdsb2JhbFByb3BlcnRpZXNbXCJnbG9iYWxQcm9wZXJ0aWVzLnZhcmlhbnRJbmZvT3ZlcnJpZGVcIl0gPVxuICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeSh2YXJpYW50SW5mb092ZXJyaWRlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHNob3cgIT0gbnVsbCkge1xuICAgICAgICAgICAgZ2xvYmFsUHJvcGVydGllc1tcImdsb2JhbFByb3BlcnRpZXMuc2hvd1wiXSA9IFN0cmluZyhzaG93KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBlbmFibGVkRmVhdHVyZXMgPSBmZWF0dXJlRmxhZ1NlcnZpY2UhLmdldEZlYXR1cmVGbGFncygpO1xuICAgICAgICAgIGNvbnN0IGVuYWJsZWRGZWF0dXJlc1Byb3BlcnRpZXMgPSBPYmplY3QuZW50cmllcyhcbiAgICAgICAgICAgIGVuYWJsZWRGZWF0dXJlc1xuICAgICAgICAgICkucmVkdWNlPFJlY29yZDxzdHJpbmcsIHN0cmluZz4+KFxuICAgICAgICAgICAgKGFjYywgW2tleSwgdmFsdWVdKSA9PiAoe1xuICAgICAgICAgICAgICAuLi5hY2MsXG4gICAgICAgICAgICAgIFtgZW5hYmxlZEZlYXR1cmVzLiR7a2V5fWBdOiBgJHt2YWx1ZX1gLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB7fVxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBjb25zdCB0aW1pbmdQcm9wZXJ0aWVzID0ge1xuICAgICAgICAgICAgXCJ0aW1pbmcuZW5yaWNoZWRfYXRfbXNcIjogd2luZG93LnBlcmZvcm1hbmNlPy5ub3coKSxcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgZW5yaWNoZWRFdmVudCA9IHtcbiAgICAgICAgICAgIC4uLmV2ZW50LFxuICAgICAgICAgICAgZXZlbnRfcHJvcGVydGllczoge1xuICAgICAgICAgICAgICAuLi5ldmVudC5ldmVudF9wcm9wZXJ0aWVzLFxuICAgICAgICAgICAgICAuLi5nZXREZWZhdWx0VHJhY2tpbmdQcm9wcygpLFxuICAgICAgICAgICAgICAuLi5nbG9iYWxQcm9wZXJ0aWVzLFxuICAgICAgICAgICAgICAuLi5lbmFibGVkRmVhdHVyZXNQcm9wZXJ0aWVzLFxuICAgICAgICAgICAgICAuLi50aW1pbmdQcm9wZXJ0aWVzLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGVucmljaGVkRXZlbnQgPSBldmVudDtcbiAgICAgICAgfVxuXG4gICAgICAgIEV2ZW50c0Rpc3BhdGNoZXIuZGlzcGF0Y2goU3BpZmZ5RXZlbnQuQU1QTElUVURFX0VWRU5ULCBlbnJpY2hlZEV2ZW50KTtcblxuICAgICAgICByZXR1cm4gZW5yaWNoZWRFdmVudDtcbiAgICAgIH0sXG4gICAgfTtcbiAgICBzZXRJbnRlcm5hbEV2ZW50VHJhY2tpbmdFbnJpY2htZW50KGVucmljaG1lbnQpO1xuICAgIHJldHVybiBlbnJpY2htZW50O1xuICB9LCBbXG4gICAgaW50ZXJuYWxFdmVudFRyYWNraW5nRW5yaWNobWVudCxcbiAgICBnZXREZWZhdWx0VHJhY2tpbmdQcm9wcyxcbiAgICBmZWF0dXJlRmxhZ1NlcnZpY2UsXG4gICAgcHVibGljS2V5LFxuICAgIGZlYXR1cmVPdmVycmlkZXMsXG4gICAgdmFyaWFudFVybE92ZXJyaWRlLFxuICAgIHZhcmlhbnRJbmZvT3ZlcnJpZGUsXG4gICAgc2hvdyxcbiAgXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNSZWFkeSAmJiAhYW1wbGl0dWRlQ2xpZW50KSB7XG4gICAgICBjb25zdCBjdXJyZW50QW1wbGl0dWRlSW5zdGFuY2U6IEJyb3dzZXJDbGllbnQgPSBjcmVhdGVJbnN0YW5jZSgpO1xuICAgICAgY29uc3QgaXNTZXNzaW9uc0VuYWJsZWQgPSBhbXBsaXR1ZGVTZXNzaW9uUmVwbGF5SW5pdCgpO1xuICAgICAgY3VycmVudEFtcGxpdHVkZUluc3RhbmNlLmFkZChnZXRFdmVudFRyYWNraW5nRW5yaWNobWVudCgpKTtcbiAgICAgIGN1cnJlbnRBbXBsaXR1ZGVJbnN0YW5jZS5pbml0KGFtcGxpdHVkZUFwaUtleSEsIHVzZXJJZCEsIHtcbiAgICAgICAgc2VydmVyWm9uZTogZGF0YVJlc2lkZW5jeSBhcyBTZXJ2ZXJab25lVHlwZSxcbiAgICAgICAgdHJhY2tpbmdPcHRpb25zOiB7XG4gICAgICAgICAgaXBBZGRyZXNzOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBhdXRvY2FwdHVyZToge1xuICAgICAgICAgIGF0dHJpYnV0aW9uOiB0cnVlLFxuICAgICAgICAgIHBhZ2VWaWV3czoge1xuICAgICAgICAgICAgdHJhY2tIaXN0b3J5Q2hhbmdlczogXCJwYXRoT25seVwiLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgc2Vzc2lvbnM6IGlzU2Vzc2lvbnNFbmFibGVkLFxuICAgICAgICAgIGZvcm1JbnRlcmFjdGlvbnM6IGZhbHNlLFxuICAgICAgICAgIGZpbGVEb3dubG9hZHM6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgICBzZXRBbXBsaXR1ZGVDbGllbnQoY3VycmVudEFtcGxpdHVkZUluc3RhbmNlKTtcbiAgICB9XG4gIH0sIFtcbiAgICBpc1JlYWR5LFxuICAgIGFtcGxpdHVkZUNsaWVudCxcbiAgICBhbXBsaXR1ZGVBcGlLZXksXG4gICAgdXNlcklkLFxuICAgIGRhdGFSZXNpZGVuY3ksXG4gICAgYW1wbGl0dWRlU2Vzc2lvblJlcGxheUluaXQsXG4gICAgZ2V0RXZlbnRUcmFja2luZ0VucmljaG1lbnQsXG4gIF0pO1xuXG4gIGNvbnN0IHRyYWNrRXZlbnQgPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAoe1xuICAgICAgZXZlbnROYW1lLFxuICAgICAgZXZlbnRQcm9wcyxcbiAgICAgIGV2ZW50R3JvdXBzLFxuICAgICAgYWxzb1NlbmRUb0dvb2dsZUFuYWx5dGljcyA9IGZhbHNlLFxuICAgIH06IFRyYWNrRXZlbnRQYXJhbXMpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgIExvZ2dlci5sb2dEZWJ1ZyhcIlN1Ym1pdHRpbmcgZXZlbnRcIiwgZXZlbnROYW1lKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGRlY29yYXRlZEV2ZW50TmFtZSA9IGBbU3BpZmZ5XSAke2V2ZW50TmFtZX1gO1xuXG4gICAgICAgIGlmICghYW1wbGl0dWRlQ2xpZW50KSB7XG4gICAgICAgICAgTG9nZ2VyLmxvZ1dhcm4oXCJhbXBsaXR1ZGUgY2xpZW50IHVuZGVmaW5lZFwiLCB1bmRlZmluZWQsIHtcbiAgICAgICAgICAgIGV2ZW50X25hbWU6IGRlY29yYXRlZEV2ZW50TmFtZSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBldmVudERhdGEgPSBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgZXZlbnROYW1lLFxuICAgICAgICAgIGV2ZW50UHJvcHMsXG4gICAgICAgICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgZW5jb2RlciA9IG5ldyBUZXh0RW5jb2RlcigpO1xuICAgICAgICBjb25zdCBkYXRhID0gZW5jb2Rlci5lbmNvZGUoZXZlbnREYXRhKTtcbiAgICAgICAgIC8vIGNhbGN1bGF0ZSBhIGhhc2ggb2YgdGhlIGV2ZW50IHByb3BlcnRpZXMgdG8gdXNlIGFzIHRoZSBpbnNlcnRfaWQgc28gdGhhdCBkdXBsaWNhdGUgZXZlbnRzXG4gICAgICAgIC8vIGFyZSBhdXRvbWF0aWNhbGx5IGRyb3BwZWQgYnkgQW1wbGl0dWRlXG4gICAgICAgIGNvbnN0IGhhc2hCdWZmZXIgPSBhd2FpdCBjcnlwdG8uc3VidGxlLmRpZ2VzdChcIlNIQS0yNTZcIiwgZGF0YSk7XG4gICAgICAgIGNvbnN0IGhhc2hBcnJheSA9IEFycmF5LmZyb20obmV3IFVpbnQ4QXJyYXkoaGFzaEJ1ZmZlcikpO1xuICAgICAgICBjb25zdCBjdXJyZW50SW5zZXJ0SWQgPSBoYXNoQXJyYXlcbiAgICAgICAgICAubWFwKChiKSA9PiBiLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCBcIjBcIikpXG4gICAgICAgICAgLmpvaW4oXCJcIik7XG5cbiAgICAgICAgTG9nZ2VyLmxvZ0RlYnVnKGBhbXBsaXR1ZGUgdHJhY2tpbmcgJHtkZWNvcmF0ZWRFdmVudE5hbWV9YCwgbnVsbCwge1xuICAgICAgICAgIGV2ZW50X25hbWU6IGRlY29yYXRlZEV2ZW50TmFtZSxcbiAgICAgICAgICBwcm9wczogZXZlbnRQcm9wcyxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgYW1wbGl0dWRlQ2xpZW50LnRyYWNrKFxuICAgICAgICAgIGRlY29yYXRlZEV2ZW50TmFtZSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICAuLi5nZXREZWZhdWx0VHJhY2tpbmdQcm9wcygpLFxuICAgICAgICAgICAgLi4uZXZlbnRQcm9wcyxcbiAgICAgICAgICAgIC4uLihldmVudFByb3BzXG4gICAgICAgICAgICAgID8gZXZlbnRQcm9wc1RvUHJlZml4ZWRFdmVudFByb3BzKGV2ZW50TmFtZSwgZXZlbnRQcm9wcylcbiAgICAgICAgICAgICAgOiB7fSksXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICAuLi5ldmVudEdyb3VwcyxcbiAgICAgICAgICAgIGluc2VydF9pZDogY3VycmVudEluc2VydElkLFxuICAgICAgICAgIH1cbiAgICAgICAgKTtcblxuICAgICAgICBpZiAoYWxzb1NlbmRUb0dvb2dsZUFuYWx5dGljcyAmJiBvcmdHYUNvbmZpZykge1xuICAgICAgICAgIC8vIFRPRE86IEFkZCBpbiB3aW5kb3dEYXRhTGF5ZXJTZXJ2aWNlIG9yIGNvbnRleHQgYWx0ZXJuYXRpdmUgYW5kIGhvb2sgaXQgdXAgaGVyZVxuICAgICAgICAgIExvZ2dlci5sb2dEZWJ1ZyhcIltzcGlmZnktYWldIEdBIHRyYWNraW5nXCIsIGRlY29yYXRlZEV2ZW50TmFtZSk7XG4gICAgICAgICAgaWYgKHdpbmRvdy5kYXRhTGF5ZXIpIHtcbiAgICAgICAgICAgICh3aW5kb3cuZGF0YUxheWVyIGFzIGFueVtdKS5wdXNoKHtcbiAgICAgICAgICAgICAgZXZlbnQ6IGRlY29yYXRlZEV2ZW50TmFtZSxcbiAgICAgICAgICAgICAgZXZlbnRQcm9wczogZXZlbnRQcm9wcyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIExvZ2dlci5sb2dFcnJvcihcIltzcGlmZnktYWldIEVycm9yIHRyYWNraW5nIGV2ZW50XCIsIGVyciwge1xuICAgICAgICAgIGV2ZW50TmFtZSxcbiAgICAgICAgICBldmVudFByb3BzLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFtcbiAgICAgIGFtcGxpdHVkZUNsaWVudCxcbiAgICAgIGdldERlZmF1bHRUcmFja2luZ1Byb3BzLFxuICAgICAgZXZlbnRQcm9wc1RvUHJlZml4ZWRFdmVudFByb3BzLFxuICAgICAgb3JnR2FDb25maWcsXG4gICAgXVxuICApO1xuXG4gIGNvbnN0IHZhbHVlID0gdXNlTWVtbyhcbiAgICAoKSA9PiAoe1xuICAgICAgdHJhY2tFdmVudCxcbiAgICAgIGlzUmVhZHksXG4gICAgICBzZXRTdXBwbGVtZW50YWxEZWZhdWx0UHJvcHM6IChwcm9wczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pID0+XG4gICAgICAgIHNldFN1cHBsZW1lbnRhbERlZmF1bHRQcm9wcyhwcm9wcyksXG4gICAgfSksXG4gICAgW3RyYWNrRXZlbnQsIGlzUmVhZHksIHNldFN1cHBsZW1lbnRhbERlZmF1bHRQcm9wc11cbiAgKTtcblxuICBpZiAoIWlzUmVhZHkpIHtcbiAgICBjb25zb2xlLmxvZyhcIkFtcGxpdHVkZVByb3ZpZGVyIGlzIG5vdCByZWFkeVwiLCBpc1JlYWR5LCB1c2VySWQsIGZlYXR1cmVGbGFnU2VydmljZSwgYW1wbGl0dWRlQXBpS2V5KTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPEFtcGxpdHVkZUNvbnRleHQuUHJvdmlkZXIgdmFsdWU9e3ZhbHVlfT5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L0FtcGxpdHVkZUNvbnRleHQuUHJvdmlkZXI+XG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgdXNlQW1wbGl0dWRlID0gKCkgPT4ge1xuICBjb25zdCBjb250ZXh0ID0gdXNlQ29udGV4dChBbXBsaXR1ZGVDb250ZXh0KTtcbiAgaWYgKCFjb250ZXh0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwidXNlQW1wbGl0dWRlIG11c3QgYmUgdXNlZCB3aXRoaW4gQW1wbGl0dWRlUHJvdmlkZXJcIik7XG4gIH1cbiAgcmV0dXJuIGNvbnRleHQ7XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBcUNBLElBQVksNEVBQUw7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBZ0JGLE1BQU0sbUJBQW1CLGNBQTJDLEtBQUs7QUFFekUsTUFBYUEscUJBQThELEVBQ3pFLGVBQ0k7Q0FDSixNQUFNLFNBQVMsYUFBYSxXQUFXO0NBQ3ZDLE1BQU0sa0JBQWtCLGFBQWEsb0JBQW9CO0NBQ3pELE1BQU0sZ0JBQWdCLGFBQWEsa0JBQWtCO0NBQ3JELE1BQU0sY0FBYyxhQUFhLHNDQUFzQztDQUN2RSxNQUFNLE1BQU0sYUFBYSxRQUFRO0NBQ2pDLE1BQU0sZ0JBQWdCLGFBQWEsa0JBQWtCO0FBQzNCLGNBQWEsc0JBQXNCO0NBQzdELE1BQU0sRUFBRSxZQUFZLGlCQUFpQjtDQUNyQyxNQUFNLEVBQ0osV0FDQSxrQkFDQSxvQkFDQSxxQkFDQSxNQUNBLGNBQ0EsaUJBQ0UsaUJBQWlCO0NBRXJCLE1BQU0sRUFBRSx1QkFBdUIsdUJBQXVCO0NBRXRELE1BQU0sQ0FBQyxpQkFBaUIsc0JBQXNCLE1BQU0sU0FFbEQsT0FBVTtDQUNaLE1BQU0sQ0FBQyxpQ0FBaUMsc0NBQ3RDLE1BQU0sU0FBdUMsT0FBVTtDQUN6RCxNQUFNLENBQUMsMEJBQTBCLCtCQUMvQixNQUFNLFNBQWtDLEVBQUUsQ0FBQztDQUU3QyxNQUFNLFVBQVUsUUFDZCxVQUFVLHNCQUFzQixnQkFDakM7Q0FFRCxNQUFNLDBCQUEwQixrQkFBMkM7RUFDekUsTUFBTSxhQUFhLGVBQ2YsYUFBYSxRQUFpQyxLQUFLLFNBQVM7QUFDMUQsT0FBSSxLQUFLLFFBQVEsS0FBSyxTQUFTLEtBQzdCLFFBQU87SUFBRSxHQUFHO0tBQU0sZ0JBQWdCLEtBQUssU0FBUyxLQUFLO0lBQU87QUFFOUQsVUFBTztLQUNOLEVBQUUsQ0FBQyxHQUNOLEVBQUU7RUFDTixNQUFNLGtCQUFrQixFQUFFO0FBTzFCLFNBQU87R0FKTCxHQUFHO0dBQ0gsR0FBRztHQUtILEdBQUc7R0FHSCxRQUFRO0dBQ1IsU0FBUyxRQUFRLGlCQUFpQixPQUFPO0dBQ3pDLEtBQUssT0FBTztHQUNaLFlBQVk7R0FDWixrQkFBa0I7R0FDbEIsV0FBVztHQUNYLGVBQWU7R0FDZixnQkFBZ0I7R0FDaEIsZ0JBQWdCO0dBQ2hCLGNBQWM7R0FDZCxZQUFZO0dBQ1osaUJBQWlCO0dBQ2pCLG1CQUFtQjtHQUNwQjtJQUNBO0VBQ0Q7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0QsQ0FBQztDQUVGLE1BQU0saUNBQWlDLGFBRW5DLFdBQ0EsZUFDNEI7RUFDNUIsTUFBTSxTQUFTLFVBQVUsYUFBYSxDQUFDLFFBQVEsUUFBUSxJQUFJO0FBQzNELFNBQU8sT0FBTyxRQUFRLFdBQVcsQ0FBQyxRQUFRLEtBQUssQ0FBQyxLQUFLQyxhQUFXO0FBQzlELE9BQUksR0FBRyxPQUFPLEdBQUcsU0FBU0E7QUFDMUIsVUFBTztLQUNOLEVBQUUsQ0FBNEI7SUFFbkMsRUFBRSxDQUNIO0NBRUQsTUFBTSw2QkFBNkIsa0JBQTJCO0VBQzVELE1BQU0sWUFBWSxRQUNoQixpQkFBaUIsYUFBYSxpQkFDNUIsb0JBQW9CLHdCQUF3QixJQUM1QyxvQkFBb0IscUJBQ2xCLGFBQWEsb0JBQ2QsQ0FDSjtFQUNELE1BQU0sYUFBYTtBQUVuQixNQUFJO0FBQ0Ysa0JBQU8sU0FDTCwrREFBK0QsVUFBVSxjQUFjLGFBQ3hGO0FBRUQsT0FBSSxDQUFDLFVBQ0gsUUFBTztBQUtULFVBQU87V0FDQSxHQUFHO0FBQ1Ysa0JBQU8sU0FDTCwyREFDQSxFQUNEO0FBQ0QsVUFBTzs7SUFFUixDQUFDLGNBQWMsbUJBQW1CLENBQUM7Q0FFdEMsTUFBTSw2QkFBNkIsa0JBQW9DO0FBQ3JFLE1BQUksb0NBQW9DLE9BQ3RDLFFBQU87RUFHVCxNQUFNQyxhQUErQjtHQUNuQyxNQUFNO0dBQ04sTUFBTTtHQUNOLE9BQU8sWUFBWTtHQUNuQixTQUFTLE9BQU8sVUFBaUM7SUFDL0MsSUFBSUM7QUFPSixRQUx1QixDQUNyQiwyQkFDQSxZQUFZLHVCQUF1QixlQUNwQyxDQUVrQixTQUFTLE1BQU0sV0FBVyxFQUFFO0tBQzdDLE1BQU1DLG1CQUEyQyxFQUFFO0FBRW5ELFNBQUksVUFDRixrQkFBaUIsZ0NBQWdDO0FBRW5ELFNBQUksaUJBQ0YsUUFBTyxRQUFRLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxLQUFLSCxhQUFXO0FBQ3pELHVCQUFpQixxQ0FBcUMsU0FDcEQsT0FBT0EsUUFBTTtPQUNmO0FBRUosU0FBSSxtQkFDRixrQkFBaUIseUNBQ2Y7QUFFSixTQUFJLG9CQUNGLGtCQUFpQiwwQ0FDZixLQUFLLFVBQVUsb0JBQW9CO0FBRXZDLFNBQUksUUFBUSxLQUNWLGtCQUFpQiwyQkFBMkIsT0FBTyxLQUFLO0tBRzFELE1BQU0sa0JBQWtCLG1CQUFvQixpQkFBaUI7S0FDN0QsTUFBTSw0QkFBNEIsT0FBTyxRQUN2QyxnQkFDRCxDQUFDLFFBQ0MsS0FBSyxDQUFDLEtBQUtBLGNBQVk7TUFDdEIsR0FBRztPQUNGLG1CQUFtQixRQUFRLEdBQUdBO01BQ2hDLEdBQ0QsRUFBRSxDQUNIO0tBRUQsTUFBTSxtQkFBbUIsRUFDdkIseUJBQXlCLE9BQU8sYUFBYSxLQUFLLEVBQ25EO0FBRUQscUJBQWdCO01BQ2QsR0FBRztNQUNILGtCQUFrQjtPQUNoQixHQUFHLE1BQU07T0FDVCxHQUFHLHlCQUF5QjtPQUM1QixHQUFHO09BQ0gsR0FBRztPQUNILEdBQUc7T0FDSjtNQUNGO1VBRUQsaUJBQWdCO0FBR2xCLHFCQUFpQixTQUFTLFlBQVksaUJBQWlCLGNBQWM7QUFFckUsV0FBTzs7R0FFVjtBQUNELHFDQUFtQyxXQUFXO0FBQzlDLFNBQU87SUFDTjtFQUNEO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDRCxDQUFDO0FBRUYsaUJBQWdCO0FBQ2QsTUFBSSxXQUFXLENBQUMsaUJBQWlCO0dBQy9CLE1BQU1JLDJCQUEwQyxnQkFBZ0I7R0FDaEUsTUFBTSxvQkFBb0IsNEJBQTRCO0FBQ3RELDRCQUF5QixJQUFJLDRCQUE0QixDQUFDO0FBQzFELDRCQUF5QixLQUFLLGlCQUFrQixRQUFTO0lBQ3ZELFlBQVk7SUFDWixpQkFBaUIsRUFDZixXQUFXLE1BQ1o7SUFDRCxhQUFhO0tBQ1gsYUFBYTtLQUNiLFdBQVcsRUFDVCxxQkFBcUIsWUFDdEI7S0FDRCxVQUFVO0tBQ1Ysa0JBQWtCO0tBQ2xCLGVBQWU7S0FDaEI7SUFDRixDQUFDO0FBQ0Ysc0JBQW1CLHlCQUF5Qjs7SUFFN0M7RUFDRDtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNELENBQUM7Q0FFRixNQUFNLGFBQWEsWUFDakIsT0FBTyxFQUNMLFdBQ0EsWUFDQSxhQUNBLDRCQUE0QixZQUNTO0FBQ3JDLGlCQUFPLFNBQVMsb0JBQW9CLFVBQVU7QUFDOUMsTUFBSTtHQUNGLE1BQU0scUJBQXFCLFlBQVk7QUFFdkMsT0FBSSxDQUFDLGlCQUFpQjtBQUNwQixtQkFBTyxRQUFRLDhCQUE4QixRQUFXLEVBQ3RELFlBQVksb0JBQ2IsQ0FBQztBQUNGOztHQUdGLE1BQU0sWUFBWSxLQUFLLFVBQVU7SUFDL0I7SUFDQTtJQUNBLDZCQUFZLElBQUksTUFBTSxFQUFDLGFBQWE7SUFDckMsQ0FBQztHQUVGLE1BQU0sT0FEVSxJQUFJLGFBQWEsQ0FDWixPQUFPLFVBQVU7R0FHdEMsTUFBTSxhQUFhLE1BQU0sT0FBTyxPQUFPLE9BQU8sV0FBVyxLQUFLO0dBRTlELE1BQU0sa0JBRFksTUFBTSxLQUFLLElBQUksV0FBVyxXQUFXLENBQUMsQ0FFckQsS0FBSyxNQUFNLEVBQUUsU0FBUyxHQUFHLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxDQUMzQyxLQUFLLEdBQUc7QUFFWCxrQkFBTyxTQUFTLHNCQUFzQixzQkFBc0IsTUFBTTtJQUNoRSxZQUFZO0lBQ1osT0FBTztJQUNSLENBQUM7QUFFRixtQkFBZ0IsTUFDZCxvQkFDQTtJQUNFLEdBQUcseUJBQXlCO0lBQzVCLEdBQUc7SUFDSCxHQUFJLGFBQ0EsK0JBQStCLFdBQVcsV0FBVyxHQUNyRCxFQUFFO0lBQ1AsRUFDRDtJQUNFLEdBQUc7SUFDSCxXQUFXO0lBQ1osQ0FDRjtBQUVELE9BQUksNkJBQTZCLGFBQWE7QUFFNUMsbUJBQU8sU0FBUywyQkFBMkIsbUJBQW1CO0FBQzlELFFBQUksT0FBTyxVQUNULENBQUMsT0FBTyxVQUFvQixLQUFLO0tBQy9CLE9BQU87S0FDSztLQUNiLENBQUM7O1dBR0MsS0FBSztBQUNaLGtCQUFPLFNBQVMsb0NBQW9DLEtBQUs7SUFDdkQ7SUFDQTtJQUNELENBQUM7O0lBR047RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNELENBQ0Y7Q0FFRCxNQUFNLFFBQVEsZUFDTDtFQUNMO0VBQ0E7RUFDQSw4QkFBOEIsVUFDNUIsNEJBQTRCLE1BQU07RUFDckMsR0FDRDtFQUFDO0VBQVk7RUFBUztFQUE0QixDQUNuRDtBQUVELEtBQUksQ0FBQyxTQUFTO0FBQ1osVUFBUSxJQUFJLGtDQUFrQyxTQUFTLFFBQVEsb0JBQW9CLGdCQUFnQjtBQUNuRyxTQUFPOztBQUdULFFBQ0Usb0JBQUMsaUJBQWlCO0VBQWdCO0VBQy9CO0dBQ3lCOztBQUloQyxNQUFhLHFCQUFxQjtDQUNoQyxNQUFNLFVBQVUsV0FBVyxpQkFBaUI7QUFDNUMsS0FBSSxDQUFDLFFBQ0gsT0FBTSxJQUFJLE1BQU0scURBQXFEO0FBRXZFLFFBQU8ifQ==
@@ -16,8 +16,8 @@ require('../../atomStore-CmZbgQHc.cjs');
16
16
  require('../../app-BbPSHefQ.cjs');
17
17
  require('../../enviveConfigContext-D2OELZDR.cjs');
18
18
  require('../../featureFlagServiceContext-CJyYItqu.cjs');
19
- require('../../amplitudeContext-C8tT74Mi.cjs');
20
- const require_utils$1 = require('../../utils-mqfncrhI.cjs');
19
+ require('../../amplitudeContext-C6LHpqP_.cjs');
20
+ const require_utils$1 = require('../../utils-BRVP7Mnu.cjs');
21
21
  const require_domObserver = require('../../domObserver-COKvTfZV.cjs');
22
22
 
23
23
  exports.DOMObserver = require_domObserver.DOMObserver;
@@ -16,8 +16,8 @@ import "../../atomStore-DEcDhiLp.js";
16
16
  import "../../app-CflxT_xI.js";
17
17
  import "../../enviveConfigContext-DrDjCems.js";
18
18
  import "../../featureFlagServiceContext-FBM6DdMJ.js";
19
- import "../../amplitudeContext-DCk6Va-j.js";
20
- import { NodeSelector, SelectorFactory, StringUtils, applyOverrides, coreContextToApiContext, coreSupportedEventRequestToApiRequest, coreUserEventToApiUserEvent, divideArray, getRecentProductImageUrls, initAmplitude, initDataLayerWrapper, messageFromFormSubmittedEvent, messageFromQueryEvent, messageFromResponse, messageFromSuggestionEvent, messageRequestToCommerceMessageRequest, prepareMerchantPage, validateEmail } from "../../utils-C1ErYSoW.js";
19
+ import "../../amplitudeContext-rEjGf57q.js";
20
+ import { NodeSelector, SelectorFactory, StringUtils, applyOverrides, coreContextToApiContext, coreSupportedEventRequestToApiRequest, coreUserEventToApiUserEvent, divideArray, getRecentProductImageUrls, initAmplitude, initDataLayerWrapper, messageFromFormSubmittedEvent, messageFromQueryEvent, messageFromResponse, messageFromSuggestionEvent, messageRequestToCommerceMessageRequest, prepareMerchantPage, validateEmail } from "../../utils-B4PvsKVY.js";
21
21
  import { DOMObserver, ElementObserver, MutationHelper } from "../../domObserver-DEiUh0qg.js";
22
22
 
23
23
  export { DOMObserver, ElementObserver, MutationHelper, NodeSelector, SelectorFactory, StringUtils, applyOverrides, buildSearchHash, buildSearchStartHash, coreContextToApiContext, coreSupportedEventRequestToApiRequest, coreUserEventToApiUserEvent, createUrlWithQueryParams, divideArray, getQueryParam, getRecentProductImageUrls, initAmplitude, initDataLayerWrapper, messageFromFormSubmittedEvent, messageFromQueryEvent, messageFromResponse, messageFromSuggestionEvent, messageRequestToCommerceMessageRequest, parseHref, parseSearchHash, prepareMerchantPage, validateEmail };
@@ -12,12 +12,12 @@ import "../../search-6RrxBXD6.cjs";
12
12
  import { VariantInfo } from "../../index-OkKEOL6H.cjs";
13
13
  import { UserIdentityContextType } from "../../userIdentityContext-kU1PIo8K.cjs";
14
14
  import { ContextEnvEnum, ContextSourceEnum, PageVisitCategory } from "@spiffy-ai/commerce-api-client";
15
- import * as jotai22 from "jotai";
15
+ import * as jotai8 from "jotai";
16
16
  import * as jotai_utils0 from "jotai/utils";
17
17
 
18
18
  //#region src/atoms/app/variant.d.ts
19
19
 
20
- declare const variantInfoAtom: jotai22.WritableAtom<VariantInfo, [newVariant: VariantInfo], void>;
20
+ declare const variantInfoAtom: jotai8.WritableAtom<VariantInfo, [newVariant: VariantInfo], void>;
21
21
  //#endregion
22
22
  //#region src/atoms/app/index.d.ts
23
23
  interface AppDetails {
@@ -29,12 +29,12 @@ interface AppDetails {
29
29
  env: ContextEnvEnum;
30
30
  variantInfo: VariantInfo;
31
31
  }
32
- declare const userIdAtom: jotai22.WritableAtom<string, [value: string | undefined], void>;
33
- declare const userIdentityAtom: jotai22.PrimitiveAtom<UserIdentityContextType | undefined> & {
32
+ declare const userIdAtom: jotai8.WritableAtom<string, [value: string | undefined], void>;
33
+ declare const userIdentityAtom: jotai8.PrimitiveAtom<UserIdentityContextType | undefined> & {
34
34
  init: UserIdentityContextType | undefined;
35
35
  };
36
- declare const appSourceAtom: jotai22.Atom<ContextSourceEnum>;
37
- declare const chatIdAtom: jotai22.WritableAtom<string, [string | typeof jotai_utils0.RESET | ((prev: string) => string | typeof jotai_utils0.RESET)], void>;
36
+ declare const appSourceAtom: jotai8.Atom<ContextSourceEnum>;
37
+ declare const chatIdAtom: jotai8.WritableAtom<string, [string | typeof jotai_utils0.RESET | ((prev: string) => string | typeof jotai_utils0.RESET)], void>;
38
38
  //#endregion
39
39
  export { AppDetails, appSourceAtom, chatIdAtom, userIdAtom, userIdentityAtom, variantInfoAtom };
40
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC5jdHMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F0b21zL2FwcC92YXJpYW50LmQudHMiLCIuLi8uLi8uLi9zcmMvYXRvbXMvYXBwL2luZGV4LmQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3VwcG9ydGVkRXZlbnRSZXNwb25zZSwgUGFnZVZpc2l0Q2F0ZWdvcnkgfSBmcm9tICdAc3BpZmZ5LWFpL2NvbW1lcmNlLWFwaS1jbGllbnQnO1xuaW1wb3J0IHsgVmFyaWFudEluZm8gfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzJztcbmV4cG9ydCBpbnRlcmZhY2UgU3VwcG9ydGVkRXZlbnQgZXh0ZW5kcyBQaWNrPFN1cHBvcnRlZEV2ZW50UmVzcG9uc2UsICdzdXBwb3J0ZWQnIHwgJ3JlYWR5JyB8ICdjYXRlZ29yeScgfCAnY29sbGVjdGlvbnMnIHwgJ3RvcF9jYXRlZ29yeSc+IHtcbiAgICBudW1iZXJPZlJldmlld3M6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICBtZXJjaGFudF90YWdzPzogc3RyaW5nW107XG59XG5pbnRlcmZhY2UgUERQQXR0cmlidXRlcyB7XG4gICAgcHJvZHVjdF9pZD86IHN0cmluZztcbn1cbmludGVyZmFjZSBQTFBBdHRyaWJ1dGVzIHtcbiAgICBhdHRyaWJ1dGVzPzoge1xuICAgICAgICBpZD86IHN0cmluZztcbiAgICB9O1xufVxuZXhwb3J0IGludGVyZmFjZSBVcmxSZXNvbHZpbmdQRFBDb25maWcge1xuICAgIHBkcF9hdHRyaWJ1dGVzOiBQRFBBdHRyaWJ1dGVzO1xuICAgIG51bWJlcl9vZl9yZXZpZXdzPzogbnVtYmVyO1xuICAgIGNvbGxlY3Rpb25zPzogc3RyaW5nW107XG4gICAgbWVyY2hhbnRfdGFncz86IHN0cmluZ1tdO1xufVxuZXhwb3J0IGludGVyZmFjZSBVcmxSZXNvbHZpbmdQTFBDb25maWcge1xuICAgIHBscF9hdHRyaWJ1dGVzOiBQTFBBdHRyaWJ1dGVzO1xuICAgIHRvcF9jYXRlZ29yeT86IHN0cmluZztcbn1cbmludGVyZmFjZSBVcmxSZXNvbHZpbmdHZW5lcmljQ29uZmlnIHtcbiAgICBkZXRhaWxzPzogc3RyaW5nO1xufVxuZXhwb3J0IHR5cGUgUGFnZVZhcmlhbnRDaGVja0NvbmZpZyA9IHtcbiAgICBjaGVja190eXBlOiBzdHJpbmc7XG4gICAgZmVhdHVyZV9nYXRlPzogc3RyaW5nO1xuICAgIGV4dHJhY3Rvcj86IHtcbiAgICAgICAgdHlwZTogc3RyaW5nO1xuICAgICAgICBtYXA/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT47XG4gICAgICAgIHZhbHVlPzogc3RyaW5nO1xuICAgIH07XG4gICAgcHJvZHVjdF9pZF9leHRyYWN0b3I/OiBzdHJpbmc7XG4gICAgcHJvZHVjdF9pZHM/OiBzdHJpbmdbXTtcbiAgICBwbHBfaWRfZXh0cmFjdG9yPzogc3RyaW5nO1xuICAgIHBscF9pZHM/OiBzdHJpbmdbXTtcbiAgICBjb2xsZWN0aW9ucz86IHN0cmluZ1tdO1xuICAgIHF1ZXJ5X3BhcmFtPzogc3RyaW5nO1xuICAgIGNhdGVnb3J5Pzogc3RyaW5nO1xuICAgIHRvcF9jYXRlZ29yeT86IHN0cmluZ1tdO1xuICAgIHJldmlld19taW5pbXVtPzogbnVtYmVyO1xuICAgIG1lcmNoYW50X3RhZ3M/OiBzdHJpbmdbXTtcbn07XG5leHBvcnQgdHlwZSBCYWNrZW5kV2lkZ2V0TW91bnRpbmdDb25maWcgPSB7XG4gICAgbW91bnRpbmdfY29uZmlnX2lkOiBzdHJpbmc7XG4gICAgd2lkZ2V0X2NvbmZpZ19pZD86IHN0cmluZztcbiAgICBtb3VudGluZ19wb2ludF93aWRnZXRzPzogQXJyYXk8e1xuICAgICAgICBjaGVja3M6IFBhZ2VWYXJpYW50Q2hlY2tDb25maWdbXTtcbiAgICAgICAgd2lkZ2V0X2NvbmZpZ19pZDogc3RyaW5nO1xuICAgIH0+O1xufTtcbmV4cG9ydCB0eXBlIEJhY2tlbmRQYWdlVmFyaWFudENvbmZpZyA9IHtcbiAgICB2YXJpYW50X2lkOiBzdHJpbmc7XG4gICAgdmFyaWFudF90eXBlOiBzdHJpbmc7XG4gICAgdmFyaWFudF9jaGVja3M6IFBhZ2VWYXJpYW50Q2hlY2tDb25maWdbXTtcbiAgICB3aWRnZXRfbW91bnRpbmc6IEJhY2tlbmRXaWRnZXRNb3VudGluZ0NvbmZpZ1tdO1xuICAgIHBscF9pZF9leHRyYWN0b3I/OiBzdHJpbmc7XG4gICAgcHJvZHVjdF9pZF9leHRyYWN0b3I/OiBzdHJpbmc7XG4gICAgcGFyZW50X3Byb2R1Y3RfaWRfZXh0cmFjdG9yPzogc3RyaW5nO1xufTtcbmV4cG9ydCBpbnRlcmZhY2UgVXJsUmVzb2x2ZXJSZXNwb25zZSB7XG4gICAgdmFyaWFudF90eXBlOiBzdHJpbmc7XG4gICAgc3BlY2lmaWNfZGV0YWlsczogVXJsUmVzb2x2aW5nUERQQ29uZmlnIHwgVXJsUmVzb2x2aW5nUExQQ29uZmlnIHwgVXJsUmVzb2x2aW5nR2VuZXJpY0NvbmZpZztcbiAgICByZWFkeTogYm9vbGVhbjtcbiAgICB1c2VyX2V2ZW50Pzoge1xuICAgICAgICBldmVudF9pZD86IHN0cmluZztcbiAgICAgICAgYXR0cmlidXRlcz86IFBEUEF0dHJpYnV0ZXMgfCBQTFBBdHRyaWJ1dGVzO1xuICAgICAgICBjYXRlZ29yeT86IHN0cmluZztcbiAgICAgICAgY3JlYXRlZF9hdD86IHN0cmluZztcbiAgICB9O1xuICAgIHBhZ2VfdmFyaWFudD86IEJhY2tlbmRQYWdlVmFyaWFudENvbmZpZztcbn1cbmV4cG9ydCB0eXBlIFVybFJlc29sdmVyQ2FjaGUgPSBSZWNvcmQ8c3RyaW5nLCBVcmxSZXNvbHZlclJlc3BvbnNlIHwgdW5kZWZpbmVkPjtcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IHVybFJlc29sdmVyQXRvbTogaW1wb3J0KFwiam90YWlcIikuV3JpdGFibGVBdG9tPFVybFJlc29sdmVyQ2FjaGUsIFt2YWx1ZToge1xuICAgIHVybDogc3RyaW5nO1xuICAgIHJlc3BvbnNlOiBVcmxSZXNvbHZlclJlc3BvbnNlIHwgdW5kZWZpbmVkO1xufV0sIHZvaWQ+O1xuZXhwb3J0IGRlY2xhcmUgY29uc3Qgc3VwcG9ydGVkRXZlbnRBdG9tOiBpbXBvcnQoXCJqb3RhaVwiKS5Xcml0YWJsZUF0b208U3VwcG9ydGVkRXZlbnQgfCB1bmRlZmluZWQsIFt2YWx1ZTogU3VwcG9ydGVkRXZlbnQgfCB1bmRlZmluZWRdLCB2b2lkPjtcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IHZhcmlhbnRJZEF0b206IGltcG9ydChcImpvdGFpXCIpLkF0b208c3RyaW5nIHwgdW5kZWZpbmVkPjtcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IHByb2R1Y3RJZEF0b206IGltcG9ydChcImpvdGFpXCIpLkF0b208c3RyaW5nIHwgdW5kZWZpbmVkPjtcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IHBhcmVudFByb2R1Y3RJZEF0b206IGltcG9ydChcImpvdGFpXCIpLkF0b208c3RyaW5nIHwgdW5kZWZpbmVkPjtcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IHByb2R1Y3RVcmxBdG9tOiBpbXBvcnQoXCJqb3RhaVwiKS5BdG9tPHN0cmluZyB8IHVuZGVmaW5lZD47XG5leHBvcnQgZGVjbGFyZSBjb25zdCBwbHBJZEF0b206IGltcG9ydChcImpvdGFpXCIpLkF0b208c3RyaW5nIHwgdW5kZWZpbmVkPjtcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IHVybEF0b206IGltcG9ydChcImpvdGFpXCIpLkF0b208c3RyaW5nIHwgdW5kZWZpbmVkPjtcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IHBhZ2VWaXNpdENhdGVnb3J5QXRvbTogaW1wb3J0KFwiam90YWlcIikuQXRvbTxQYWdlVmlzaXRDYXRlZ29yeSB8IHVuZGVmaW5lZD47XG5leHBvcnQgZGVjbGFyZSBjb25zdCB2YXJpYW50QXRvbTogaW1wb3J0KFwiam90YWlcIikuQXRvbTxcInNlYXJjaFwiIHwgXCJwZHBcIiB8IFwicGxwXCIgfCBcInBhZ2VfdmlzaXRcIj47XG5leHBvcnQgZGVjbGFyZSBjb25zdCBoYXNQYXJzZWRWYXJpYW50SW5mb0F0b206IGltcG9ydChcImpvdGFpXCIpLlByaW1pdGl2ZUF0b208Ym9vbGVhbj4gJiB7XG4gICAgaW5pdDogYm9vbGVhbjtcbn07XG5leHBvcnQgZGVjbGFyZSBjb25zdCB2YXJpYW50SW5mb0F0b206IGltcG9ydChcImpvdGFpXCIpLldyaXRhYmxlQXRvbTxWYXJpYW50SW5mbywgW25ld1ZhcmlhbnQ6IFZhcmlhbnRJbmZvXSwgdm9pZD47XG5leHBvcnQge307XG4iLCJpbXBvcnQgeyBDb250ZXh0RW52RW51bSwgQ29udGV4dFNvdXJjZUVudW0gfSBmcm9tIFwiQHNwaWZmeS1haS9jb21tZXJjZS1hcGktY2xpZW50XCI7XG5pbXBvcnQgeyBWYXJpYW50SW5mbyB9IGZyb20gXCJzcmMvYXBwbGljYXRpb24vbW9kZWxzXCI7XG5pbXBvcnQgeyBVc2VySWRlbnRpdHlDb250ZXh0VHlwZSB9IGZyb20gXCJzcmMvY29udGV4dHMvdXNlcklkZW50aXR5Q29udGV4dC91c2VySWRlbnRpdHlDb250ZXh0XCI7XG5leHBvcnQgaW50ZXJmYWNlIEFwcERldGFpbHMge1xuICAgIG9yZ0lkOiBzdHJpbmc7XG4gICAgb3JnU2hvcnROYW1lOiBzdHJpbmc7XG4gICAgY2hhdElkOiBzdHJpbmc7XG4gICAgdXNlcklkOiBzdHJpbmc7XG4gICAgc291cmNlOiBDb250ZXh0U291cmNlRW51bTtcbiAgICBlbnY6IENvbnRleHRFbnZFbnVtO1xuICAgIHZhcmlhbnRJbmZvOiBWYXJpYW50SW5mbztcbn1cbmV4cG9ydCB7IHZhcmlhbnRJbmZvQXRvbSB9IGZyb20gXCIuL3ZhcmlhbnRcIjtcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IHVzZXJJZEF0b206IGltcG9ydChcImpvdGFpXCIpLldyaXRhYmxlQXRvbTxzdHJpbmcsIFt2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkXSwgdm9pZD47XG5leHBvcnQgZGVjbGFyZSBjb25zdCB1c2VySWRlbnRpdHlBdG9tOiBpbXBvcnQoXCJqb3RhaVwiKS5QcmltaXRpdmVBdG9tPFVzZXJJZGVudGl0eUNvbnRleHRUeXBlIHwgdW5kZWZpbmVkPiAmIHtcbiAgICBpbml0OiBVc2VySWRlbnRpdHlDb250ZXh0VHlwZSB8IHVuZGVmaW5lZDtcbn07XG5leHBvcnQgZGVjbGFyZSBjb25zdCBhcHBTb3VyY2VBdG9tOiBpbXBvcnQoXCJqb3RhaVwiKS5BdG9tPENvbnRleHRTb3VyY2VFbnVtPjtcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IGNoYXRJZEF0b206IGltcG9ydChcImpvdGFpXCIpLldyaXRhYmxlQXRvbTxzdHJpbmcsIFtzdHJpbmcgfCB0eXBlb2YgaW1wb3J0KFwiam90YWkvdXRpbHNcIikuUkVTRVQgfCAoKHByZXY6IHN0cmluZykgPT4gc3RyaW5nIHwgdHlwZW9mIGltcG9ydChcImpvdGFpL3V0aWxzXCIpLlJFU0VUKV0sIHZvaWQ+O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF5QkEsSUFBVyxrQkFBUztDQUFBO09BQUE7T0FBQTtPQUFBLFFBQUE7Q0FBQTs7OztBQ3BCcEIsSUFBVyxhQUFhO0NBQUE7T0FBQTtPQUFBO09BQUE7Q0FBQTtBQUV4QixJQUFXLGFBQU8sQ0FBQSxXQUFBLFFBQUEsYUFBQTtBQUNsQixJQUFXLG1CQUFrQjtDQUFBO09BQUE7T0FBQSxRQUFBO09BQUE7Q0FBQTtBQUM3QixJQUFXLGdCQUFZO0NBQUE7T0FBQTtPQUFBLFFBQUE7Q0FBQTtBQUN2QixJQUFXLGFBQWE7Q0FBQztPQUFHLGFBQUE7T0FBQSxhQUFBO09BQUEsUUFBQTtDQUFBIn0=
40
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC5jdHMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F0b21zL2FwcC92YXJpYW50LmQudHMiLCIuLi8uLi8uLi9zcmMvYXRvbXMvYXBwL2luZGV4LmQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3VwcG9ydGVkRXZlbnRSZXNwb25zZSwgUGFnZVZpc2l0Q2F0ZWdvcnkgfSBmcm9tICdAc3BpZmZ5LWFpL2NvbW1lcmNlLWFwaS1jbGllbnQnO1xuaW1wb3J0IHsgVmFyaWFudEluZm8gfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzJztcbmV4cG9ydCBpbnRlcmZhY2UgU3VwcG9ydGVkRXZlbnQgZXh0ZW5kcyBQaWNrPFN1cHBvcnRlZEV2ZW50UmVzcG9uc2UsICdzdXBwb3J0ZWQnIHwgJ3JlYWR5JyB8ICdjYXRlZ29yeScgfCAnY29sbGVjdGlvbnMnIHwgJ3RvcF9jYXRlZ29yeSc+IHtcbiAgICBudW1iZXJPZlJldmlld3M6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICBtZXJjaGFudF90YWdzPzogc3RyaW5nW107XG59XG5pbnRlcmZhY2UgUERQQXR0cmlidXRlcyB7XG4gICAgcHJvZHVjdF9pZD86IHN0cmluZztcbn1cbmludGVyZmFjZSBQTFBBdHRyaWJ1dGVzIHtcbiAgICBhdHRyaWJ1dGVzPzoge1xuICAgICAgICBpZD86IHN0cmluZztcbiAgICB9O1xufVxuZXhwb3J0IGludGVyZmFjZSBVcmxSZXNvbHZpbmdQRFBDb25maWcge1xuICAgIHBkcF9hdHRyaWJ1dGVzOiBQRFBBdHRyaWJ1dGVzO1xuICAgIG51bWJlcl9vZl9yZXZpZXdzPzogbnVtYmVyO1xuICAgIGNvbGxlY3Rpb25zPzogc3RyaW5nW107XG4gICAgbWVyY2hhbnRfdGFncz86IHN0cmluZ1tdO1xufVxuZXhwb3J0IGludGVyZmFjZSBVcmxSZXNvbHZpbmdQTFBDb25maWcge1xuICAgIHBscF9hdHRyaWJ1dGVzOiBQTFBBdHRyaWJ1dGVzO1xuICAgIHRvcF9jYXRlZ29yeT86IHN0cmluZztcbn1cbmludGVyZmFjZSBVcmxSZXNvbHZpbmdHZW5lcmljQ29uZmlnIHtcbiAgICBkZXRhaWxzPzogc3RyaW5nO1xufVxuZXhwb3J0IHR5cGUgUGFnZVZhcmlhbnRDaGVja0NvbmZpZyA9IHtcbiAgICBjaGVja190eXBlOiBzdHJpbmc7XG4gICAgZmVhdHVyZV9nYXRlPzogc3RyaW5nO1xuICAgIGV4dHJhY3Rvcj86IHtcbiAgICAgICAgdHlwZTogc3RyaW5nO1xuICAgICAgICBtYXA/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT47XG4gICAgICAgIHZhbHVlPzogc3RyaW5nO1xuICAgIH07XG4gICAgcHJvZHVjdF9pZF9leHRyYWN0b3I/OiBzdHJpbmc7XG4gICAgcHJvZHVjdF9pZHM/OiBzdHJpbmdbXTtcbiAgICBwbHBfaWRfZXh0cmFjdG9yPzogc3RyaW5nO1xuICAgIHBscF9pZHM/OiBzdHJpbmdbXTtcbiAgICBjb2xsZWN0aW9ucz86IHN0cmluZ1tdO1xuICAgIHF1ZXJ5X3BhcmFtPzogc3RyaW5nO1xuICAgIGNhdGVnb3J5Pzogc3RyaW5nO1xuICAgIHRvcF9jYXRlZ29yeT86IHN0cmluZ1tdO1xuICAgIHJldmlld19taW5pbXVtPzogbnVtYmVyO1xuICAgIG1lcmNoYW50X3RhZ3M/OiBzdHJpbmdbXTtcbn07XG5leHBvcnQgdHlwZSBCYWNrZW5kV2lkZ2V0TW91bnRpbmdDb25maWcgPSB7XG4gICAgbW91bnRpbmdfY29uZmlnX2lkOiBzdHJpbmc7XG4gICAgd2lkZ2V0X2NvbmZpZ19pZD86IHN0cmluZztcbiAgICBtb3VudGluZ19wb2ludF93aWRnZXRzPzogQXJyYXk8e1xuICAgICAgICBjaGVja3M6IFBhZ2VWYXJpYW50Q2hlY2tDb25maWdbXTtcbiAgICAgICAgd2lkZ2V0X2NvbmZpZ19pZDogc3RyaW5nO1xuICAgIH0+O1xufTtcbmV4cG9ydCB0eXBlIEJhY2tlbmRQYWdlVmFyaWFudENvbmZpZyA9IHtcbiAgICB2YXJpYW50X2lkOiBzdHJpbmc7XG4gICAgdmFyaWFudF90eXBlOiBzdHJpbmc7XG4gICAgdmFyaWFudF9jaGVja3M6IFBhZ2VWYXJpYW50Q2hlY2tDb25maWdbXTtcbiAgICB3aWRnZXRfbW91bnRpbmc6IEJhY2tlbmRXaWRnZXRNb3VudGluZ0NvbmZpZ1tdO1xuICAgIHBscF9pZF9leHRyYWN0b3I/OiBzdHJpbmc7XG4gICAgcHJvZHVjdF9pZF9leHRyYWN0b3I/OiBzdHJpbmc7XG4gICAgcGFyZW50X3Byb2R1Y3RfaWRfZXh0cmFjdG9yPzogc3RyaW5nO1xufTtcbmV4cG9ydCBpbnRlcmZhY2UgVXJsUmVzb2x2ZXJSZXNwb25zZSB7XG4gICAgdmFyaWFudF90eXBlOiBzdHJpbmc7XG4gICAgc3BlY2lmaWNfZGV0YWlsczogVXJsUmVzb2x2aW5nUERQQ29uZmlnIHwgVXJsUmVzb2x2aW5nUExQQ29uZmlnIHwgVXJsUmVzb2x2aW5nR2VuZXJpY0NvbmZpZztcbiAgICByZWFkeTogYm9vbGVhbjtcbiAgICB1c2VyX2V2ZW50Pzoge1xuICAgICAgICBldmVudF9pZD86IHN0cmluZztcbiAgICAgICAgYXR0cmlidXRlcz86IFBEUEF0dHJpYnV0ZXMgfCBQTFBBdHRyaWJ1dGVzO1xuICAgICAgICBjYXRlZ29yeT86IHN0cmluZztcbiAgICAgICAgY3JlYXRlZF9hdD86IHN0cmluZztcbiAgICB9O1xuICAgIHBhZ2VfdmFyaWFudD86IEJhY2tlbmRQYWdlVmFyaWFudENvbmZpZztcbn1cbmV4cG9ydCB0eXBlIFVybFJlc29sdmVyQ2FjaGUgPSBSZWNvcmQ8c3RyaW5nLCBVcmxSZXNvbHZlclJlc3BvbnNlIHwgdW5kZWZpbmVkPjtcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IHVybFJlc29sdmVyQXRvbTogaW1wb3J0KFwiam90YWlcIikuV3JpdGFibGVBdG9tPFVybFJlc29sdmVyQ2FjaGUsIFt2YWx1ZToge1xuICAgIHVybDogc3RyaW5nO1xuICAgIHJlc3BvbnNlOiBVcmxSZXNvbHZlclJlc3BvbnNlIHwgdW5kZWZpbmVkO1xufV0sIHZvaWQ+O1xuZXhwb3J0IGRlY2xhcmUgY29uc3Qgc3VwcG9ydGVkRXZlbnRBdG9tOiBpbXBvcnQoXCJqb3RhaVwiKS5Xcml0YWJsZUF0b208U3VwcG9ydGVkRXZlbnQgfCB1bmRlZmluZWQsIFt2YWx1ZTogU3VwcG9ydGVkRXZlbnQgfCB1bmRlZmluZWRdLCB2b2lkPjtcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IHZhcmlhbnRJZEF0b206IGltcG9ydChcImpvdGFpXCIpLkF0b208c3RyaW5nIHwgdW5kZWZpbmVkPjtcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IHByb2R1Y3RJZEF0b206IGltcG9ydChcImpvdGFpXCIpLkF0b208c3RyaW5nIHwgdW5kZWZpbmVkPjtcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IHBhcmVudFByb2R1Y3RJZEF0b206IGltcG9ydChcImpvdGFpXCIpLkF0b208c3RyaW5nIHwgdW5kZWZpbmVkPjtcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IHByb2R1Y3RVcmxBdG9tOiBpbXBvcnQoXCJqb3RhaVwiKS5BdG9tPHN0cmluZyB8IHVuZGVmaW5lZD47XG5leHBvcnQgZGVjbGFyZSBjb25zdCBwbHBJZEF0b206IGltcG9ydChcImpvdGFpXCIpLkF0b208c3RyaW5nIHwgdW5kZWZpbmVkPjtcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IHVybEF0b206IGltcG9ydChcImpvdGFpXCIpLkF0b208c3RyaW5nIHwgdW5kZWZpbmVkPjtcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IHBhZ2VWaXNpdENhdGVnb3J5QXRvbTogaW1wb3J0KFwiam90YWlcIikuQXRvbTxQYWdlVmlzaXRDYXRlZ29yeSB8IHVuZGVmaW5lZD47XG5leHBvcnQgZGVjbGFyZSBjb25zdCB2YXJpYW50QXRvbTogaW1wb3J0KFwiam90YWlcIikuQXRvbTxcInNlYXJjaFwiIHwgXCJwZHBcIiB8IFwicGxwXCIgfCBcInBhZ2VfdmlzaXRcIj47XG5leHBvcnQgZGVjbGFyZSBjb25zdCBoYXNQYXJzZWRWYXJpYW50SW5mb0F0b206IGltcG9ydChcImpvdGFpXCIpLlByaW1pdGl2ZUF0b208Ym9vbGVhbj4gJiB7XG4gICAgaW5pdDogYm9vbGVhbjtcbn07XG5leHBvcnQgZGVjbGFyZSBjb25zdCB2YXJpYW50SW5mb0F0b206IGltcG9ydChcImpvdGFpXCIpLldyaXRhYmxlQXRvbTxWYXJpYW50SW5mbywgW25ld1ZhcmlhbnQ6IFZhcmlhbnRJbmZvXSwgdm9pZD47XG5leHBvcnQge307XG4iLCJpbXBvcnQgeyBDb250ZXh0RW52RW51bSwgQ29udGV4dFNvdXJjZUVudW0gfSBmcm9tIFwiQHNwaWZmeS1haS9jb21tZXJjZS1hcGktY2xpZW50XCI7XG5pbXBvcnQgeyBWYXJpYW50SW5mbyB9IGZyb20gXCJzcmMvYXBwbGljYXRpb24vbW9kZWxzXCI7XG5pbXBvcnQgeyBVc2VySWRlbnRpdHlDb250ZXh0VHlwZSB9IGZyb20gXCJzcmMvY29udGV4dHMvdXNlcklkZW50aXR5Q29udGV4dC91c2VySWRlbnRpdHlDb250ZXh0XCI7XG5leHBvcnQgaW50ZXJmYWNlIEFwcERldGFpbHMge1xuICAgIG9yZ0lkOiBzdHJpbmc7XG4gICAgb3JnU2hvcnROYW1lOiBzdHJpbmc7XG4gICAgY2hhdElkOiBzdHJpbmc7XG4gICAgdXNlcklkOiBzdHJpbmc7XG4gICAgc291cmNlOiBDb250ZXh0U291cmNlRW51bTtcbiAgICBlbnY6IENvbnRleHRFbnZFbnVtO1xuICAgIHZhcmlhbnRJbmZvOiBWYXJpYW50SW5mbztcbn1cbmV4cG9ydCB7IHZhcmlhbnRJbmZvQXRvbSB9IGZyb20gXCIuL3ZhcmlhbnRcIjtcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IHVzZXJJZEF0b206IGltcG9ydChcImpvdGFpXCIpLldyaXRhYmxlQXRvbTxzdHJpbmcsIFt2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkXSwgdm9pZD47XG5leHBvcnQgZGVjbGFyZSBjb25zdCB1c2VySWRlbnRpdHlBdG9tOiBpbXBvcnQoXCJqb3RhaVwiKS5QcmltaXRpdmVBdG9tPFVzZXJJZGVudGl0eUNvbnRleHRUeXBlIHwgdW5kZWZpbmVkPiAmIHtcbiAgICBpbml0OiBVc2VySWRlbnRpdHlDb250ZXh0VHlwZSB8IHVuZGVmaW5lZDtcbn07XG5leHBvcnQgZGVjbGFyZSBjb25zdCBhcHBTb3VyY2VBdG9tOiBpbXBvcnQoXCJqb3RhaVwiKS5BdG9tPENvbnRleHRTb3VyY2VFbnVtPjtcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IGNoYXRJZEF0b206IGltcG9ydChcImpvdGFpXCIpLldyaXRhYmxlQXRvbTxzdHJpbmcsIFtzdHJpbmcgfCB0eXBlb2YgaW1wb3J0KFwiam90YWkvdXRpbHNcIikuUkVTRVQgfCAoKHByZXY6IHN0cmluZykgPT4gc3RyaW5nIHwgdHlwZW9mIGltcG9ydChcImpvdGFpL3V0aWxzXCIpLlJFU0VUKV0sIHZvaWQ+O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF5QkEsSUFBVyxrQkFBUztDQUFBO09BQUE7T0FBQTtPQUFBLE9BQUE7Q0FBQTs7OztBQ3BCcEIsSUFBVyxhQUFhO0NBQUE7T0FBQTtPQUFBO09BQUE7Q0FBQTtBQUV4QixJQUFXLGFBQU8sQ0FBQSxXQUFBLE9BQUEsYUFBQTtBQUNsQixJQUFXLG1CQUFrQjtDQUFBO09BQUE7T0FBQSxPQUFBO09BQUE7Q0FBQTtBQUM3QixJQUFXLGdCQUFZO0NBQUE7T0FBQTtPQUFBLE9BQUE7Q0FBQTtBQUN2QixJQUFXLGFBQWE7Q0FBQztPQUFHLGFBQUE7T0FBQSxhQUFBO09BQUEsT0FBQTtDQUFBIn0=
@@ -37,4 +37,4 @@ declare const appSourceAtom: jotai74.Atom<ContextSourceEnum>;
37
37
  declare const chatIdAtom: jotai74.WritableAtom<string, [string | typeof jotai_utils0.RESET | ((prev: string) => string | typeof jotai_utils0.RESET)], void>;
38
38
  //#endregion
39
39
  export { AppDetails, appSourceAtom, chatIdAtom, userIdAtom, userIdentityAtom, variantInfoAtom };
40
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXRvbXMvYXBwL3ZhcmlhbnQuZC50cyIsIi4uLy4uLy4uL3NyYy9hdG9tcy9hcHAvaW5kZXguZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdXBwb3J0ZWRFdmVudFJlc3BvbnNlLCBQYWdlVmlzaXRDYXRlZ29yeSB9IGZyb20gJ0BzcGlmZnktYWkvY29tbWVyY2UtYXBpLWNsaWVudCc7XG5pbXBvcnQgeyBWYXJpYW50SW5mbyB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMnO1xuZXhwb3J0IGludGVyZmFjZSBTdXBwb3J0ZWRFdmVudCBleHRlbmRzIFBpY2s8U3VwcG9ydGVkRXZlbnRSZXNwb25zZSwgJ3N1cHBvcnRlZCcgfCAncmVhZHknIHwgJ2NhdGVnb3J5JyB8ICdjb2xsZWN0aW9ucycgfCAndG9wX2NhdGVnb3J5Jz4ge1xuICAgIG51bWJlck9mUmV2aWV3czogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIG1lcmNoYW50X3RhZ3M/OiBzdHJpbmdbXTtcbn1cbmludGVyZmFjZSBQRFBBdHRyaWJ1dGVzIHtcbiAgICBwcm9kdWN0X2lkPzogc3RyaW5nO1xufVxuaW50ZXJmYWNlIFBMUEF0dHJpYnV0ZXMge1xuICAgIGF0dHJpYnV0ZXM/OiB7XG4gICAgICAgIGlkPzogc3RyaW5nO1xuICAgIH07XG59XG5leHBvcnQgaW50ZXJmYWNlIFVybFJlc29sdmluZ1BEUENvbmZpZyB7XG4gICAgcGRwX2F0dHJpYnV0ZXM6IFBEUEF0dHJpYnV0ZXM7XG4gICAgbnVtYmVyX29mX3Jldmlld3M/OiBudW1iZXI7XG4gICAgY29sbGVjdGlvbnM/OiBzdHJpbmdbXTtcbiAgICBtZXJjaGFudF90YWdzPzogc3RyaW5nW107XG59XG5leHBvcnQgaW50ZXJmYWNlIFVybFJlc29sdmluZ1BMUENvbmZpZyB7XG4gICAgcGxwX2F0dHJpYnV0ZXM6IFBMUEF0dHJpYnV0ZXM7XG4gICAgdG9wX2NhdGVnb3J5Pzogc3RyaW5nO1xufVxuaW50ZXJmYWNlIFVybFJlc29sdmluZ0dlbmVyaWNDb25maWcge1xuICAgIGRldGFpbHM/OiBzdHJpbmc7XG59XG5leHBvcnQgdHlwZSBQYWdlVmFyaWFudENoZWNrQ29uZmlnID0ge1xuICAgIGNoZWNrX3R5cGU6IHN0cmluZztcbiAgICBmZWF0dXJlX2dhdGU/OiBzdHJpbmc7XG4gICAgZXh0cmFjdG9yPzoge1xuICAgICAgICB0eXBlOiBzdHJpbmc7XG4gICAgICAgIG1hcD86IFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPjtcbiAgICAgICAgdmFsdWU/OiBzdHJpbmc7XG4gICAgfTtcbiAgICBwcm9kdWN0X2lkX2V4dHJhY3Rvcj86IHN0cmluZztcbiAgICBwcm9kdWN0X2lkcz86IHN0cmluZ1tdO1xuICAgIHBscF9pZF9leHRyYWN0b3I/OiBzdHJpbmc7XG4gICAgcGxwX2lkcz86IHN0cmluZ1tdO1xuICAgIGNvbGxlY3Rpb25zPzogc3RyaW5nW107XG4gICAgcXVlcnlfcGFyYW0/OiBzdHJpbmc7XG4gICAgY2F0ZWdvcnk/OiBzdHJpbmc7XG4gICAgdG9wX2NhdGVnb3J5Pzogc3RyaW5nW107XG4gICAgcmV2aWV3X21pbmltdW0/OiBudW1iZXI7XG4gICAgbWVyY2hhbnRfdGFncz86IHN0cmluZ1tdO1xufTtcbmV4cG9ydCB0eXBlIEJhY2tlbmRXaWRnZXRNb3VudGluZ0NvbmZpZyA9IHtcbiAgICBtb3VudGluZ19jb25maWdfaWQ6IHN0cmluZztcbiAgICB3aWRnZXRfY29uZmlnX2lkPzogc3RyaW5nO1xuICAgIG1vdW50aW5nX3BvaW50X3dpZGdldHM/OiBBcnJheTx7XG4gICAgICAgIGNoZWNrczogUGFnZVZhcmlhbnRDaGVja0NvbmZpZ1tdO1xuICAgICAgICB3aWRnZXRfY29uZmlnX2lkOiBzdHJpbmc7XG4gICAgfT47XG59O1xuZXhwb3J0IHR5cGUgQmFja2VuZFBhZ2VWYXJpYW50Q29uZmlnID0ge1xuICAgIHZhcmlhbnRfaWQ6IHN0cmluZztcbiAgICB2YXJpYW50X3R5cGU6IHN0cmluZztcbiAgICB2YXJpYW50X2NoZWNrczogUGFnZVZhcmlhbnRDaGVja0NvbmZpZ1tdO1xuICAgIHdpZGdldF9tb3VudGluZzogQmFja2VuZFdpZGdldE1vdW50aW5nQ29uZmlnW107XG4gICAgcGxwX2lkX2V4dHJhY3Rvcj86IHN0cmluZztcbiAgICBwcm9kdWN0X2lkX2V4dHJhY3Rvcj86IHN0cmluZztcbiAgICBwYXJlbnRfcHJvZHVjdF9pZF9leHRyYWN0b3I/OiBzdHJpbmc7XG59O1xuZXhwb3J0IGludGVyZmFjZSBVcmxSZXNvbHZlclJlc3BvbnNlIHtcbiAgICB2YXJpYW50X3R5cGU6IHN0cmluZztcbiAgICBzcGVjaWZpY19kZXRhaWxzOiBVcmxSZXNvbHZpbmdQRFBDb25maWcgfCBVcmxSZXNvbHZpbmdQTFBDb25maWcgfCBVcmxSZXNvbHZpbmdHZW5lcmljQ29uZmlnO1xuICAgIHJlYWR5OiBib29sZWFuO1xuICAgIHVzZXJfZXZlbnQ/OiB7XG4gICAgICAgIGV2ZW50X2lkPzogc3RyaW5nO1xuICAgICAgICBhdHRyaWJ1dGVzPzogUERQQXR0cmlidXRlcyB8IFBMUEF0dHJpYnV0ZXM7XG4gICAgICAgIGNhdGVnb3J5Pzogc3RyaW5nO1xuICAgICAgICBjcmVhdGVkX2F0Pzogc3RyaW5nO1xuICAgIH07XG4gICAgcGFnZV92YXJpYW50PzogQmFja2VuZFBhZ2VWYXJpYW50Q29uZmlnO1xufVxuZXhwb3J0IHR5cGUgVXJsUmVzb2x2ZXJDYWNoZSA9IFJlY29yZDxzdHJpbmcsIFVybFJlc29sdmVyUmVzcG9uc2UgfCB1bmRlZmluZWQ+O1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgdXJsUmVzb2x2ZXJBdG9tOiBpbXBvcnQoXCJqb3RhaVwiKS5Xcml0YWJsZUF0b208VXJsUmVzb2x2ZXJDYWNoZSwgW3ZhbHVlOiB7XG4gICAgdXJsOiBzdHJpbmc7XG4gICAgcmVzcG9uc2U6IFVybFJlc29sdmVyUmVzcG9uc2UgfCB1bmRlZmluZWQ7XG59XSwgdm9pZD47XG5leHBvcnQgZGVjbGFyZSBjb25zdCBzdXBwb3J0ZWRFdmVudEF0b206IGltcG9ydChcImpvdGFpXCIpLldyaXRhYmxlQXRvbTxTdXBwb3J0ZWRFdmVudCB8IHVuZGVmaW5lZCwgW3ZhbHVlOiBTdXBwb3J0ZWRFdmVudCB8IHVuZGVmaW5lZF0sIHZvaWQ+O1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgdmFyaWFudElkQXRvbTogaW1wb3J0KFwiam90YWlcIikuQXRvbTxzdHJpbmcgfCB1bmRlZmluZWQ+O1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgcHJvZHVjdElkQXRvbTogaW1wb3J0KFwiam90YWlcIikuQXRvbTxzdHJpbmcgfCB1bmRlZmluZWQ+O1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgcGFyZW50UHJvZHVjdElkQXRvbTogaW1wb3J0KFwiam90YWlcIikuQXRvbTxzdHJpbmcgfCB1bmRlZmluZWQ+O1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgcHJvZHVjdFVybEF0b206IGltcG9ydChcImpvdGFpXCIpLkF0b208c3RyaW5nIHwgdW5kZWZpbmVkPjtcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IHBscElkQXRvbTogaW1wb3J0KFwiam90YWlcIikuQXRvbTxzdHJpbmcgfCB1bmRlZmluZWQ+O1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgdXJsQXRvbTogaW1wb3J0KFwiam90YWlcIikuQXRvbTxzdHJpbmcgfCB1bmRlZmluZWQ+O1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgcGFnZVZpc2l0Q2F0ZWdvcnlBdG9tOiBpbXBvcnQoXCJqb3RhaVwiKS5BdG9tPFBhZ2VWaXNpdENhdGVnb3J5IHwgdW5kZWZpbmVkPjtcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IHZhcmlhbnRBdG9tOiBpbXBvcnQoXCJqb3RhaVwiKS5BdG9tPFwic2VhcmNoXCIgfCBcInBkcFwiIHwgXCJwbHBcIiB8IFwicGFnZV92aXNpdFwiPjtcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IGhhc1BhcnNlZFZhcmlhbnRJbmZvQXRvbTogaW1wb3J0KFwiam90YWlcIikuUHJpbWl0aXZlQXRvbTxib29sZWFuPiAmIHtcbiAgICBpbml0OiBib29sZWFuO1xufTtcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IHZhcmlhbnRJbmZvQXRvbTogaW1wb3J0KFwiam90YWlcIikuV3JpdGFibGVBdG9tPFZhcmlhbnRJbmZvLCBbbmV3VmFyaWFudDogVmFyaWFudEluZm9dLCB2b2lkPjtcbmV4cG9ydCB7fTtcbiIsImltcG9ydCB7IENvbnRleHRFbnZFbnVtLCBDb250ZXh0U291cmNlRW51bSB9IGZyb20gXCJAc3BpZmZ5LWFpL2NvbW1lcmNlLWFwaS1jbGllbnRcIjtcbmltcG9ydCB7IFZhcmlhbnRJbmZvIH0gZnJvbSBcInNyYy9hcHBsaWNhdGlvbi9tb2RlbHNcIjtcbmltcG9ydCB7IFVzZXJJZGVudGl0eUNvbnRleHRUeXBlIH0gZnJvbSBcInNyYy9jb250ZXh0cy91c2VySWRlbnRpdHlDb250ZXh0L3VzZXJJZGVudGl0eUNvbnRleHRcIjtcbmV4cG9ydCBpbnRlcmZhY2UgQXBwRGV0YWlscyB7XG4gICAgb3JnSWQ6IHN0cmluZztcbiAgICBvcmdTaG9ydE5hbWU6IHN0cmluZztcbiAgICBjaGF0SWQ6IHN0cmluZztcbiAgICB1c2VySWQ6IHN0cmluZztcbiAgICBzb3VyY2U6IENvbnRleHRTb3VyY2VFbnVtO1xuICAgIGVudjogQ29udGV4dEVudkVudW07XG4gICAgdmFyaWFudEluZm86IFZhcmlhbnRJbmZvO1xufVxuZXhwb3J0IHsgdmFyaWFudEluZm9BdG9tIH0gZnJvbSBcIi4vdmFyaWFudFwiO1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgdXNlcklkQXRvbTogaW1wb3J0KFwiam90YWlcIikuV3JpdGFibGVBdG9tPHN0cmluZywgW3ZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWRdLCB2b2lkPjtcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IHVzZXJJZGVudGl0eUF0b206IGltcG9ydChcImpvdGFpXCIpLlByaW1pdGl2ZUF0b208VXNlcklkZW50aXR5Q29udGV4dFR5cGUgfCB1bmRlZmluZWQ+ICYge1xuICAgIGluaXQ6IFVzZXJJZGVudGl0eUNvbnRleHRUeXBlIHwgdW5kZWZpbmVkO1xufTtcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IGFwcFNvdXJjZUF0b206IGltcG9ydChcImpvdGFpXCIpLkF0b208Q29udGV4dFNvdXJjZUVudW0+O1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgY2hhdElkQXRvbTogaW1wb3J0KFwiam90YWlcIikuV3JpdGFibGVBdG9tPHN0cmluZywgW3N0cmluZyB8IHR5cGVvZiBpbXBvcnQoXCJqb3RhaS91dGlsc1wiKS5SRVNFVCB8ICgocHJldjogc3RyaW5nKSA9PiBzdHJpbmcgfCB0eXBlb2YgaW1wb3J0KFwiam90YWkvdXRpbHNcIikuUkVTRVQpXSwgdm9pZD47XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXlCQSxJQUFXLGtCQUFTO0NBQUE7T0FBQTtPQUFBO09BQUEsUUFBQTtDQUFBOzs7O0FDcEJwQixJQUFXLGFBQWE7Q0FBQTtPQUFBO09BQUE7T0FBQTtDQUFBO0FBRXhCLElBQVcsYUFBTyxDQUFBLFdBQUEsUUFBQSxhQUFBO0FBQ2xCLElBQVcsbUJBQWtCO0NBQUE7T0FBQTtPQUFBLFFBQUE7T0FBQTtDQUFBO0FBQzdCLElBQVcsZ0JBQVk7Q0FBQTtPQUFBO09BQUEsUUFBQTtDQUFBO0FBQ3ZCLElBQVcsYUFBYTtDQUFDO09BQUcsYUFBQTtPQUFBLGFBQUE7T0FBQSxRQUFBO0NBQUEifQ==
40
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXRvbXMvYXBwL3ZhcmlhbnQuZC50cyIsIi4uLy4uLy4uL3NyYy9hdG9tcy9hcHAvaW5kZXguZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdXBwb3J0ZWRFdmVudFJlc3BvbnNlLCBQYWdlVmlzaXRDYXRlZ29yeSB9IGZyb20gJ0BzcGlmZnktYWkvY29tbWVyY2UtYXBpLWNsaWVudCc7XG5pbXBvcnQgeyBWYXJpYW50SW5mbyB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMnO1xuZXhwb3J0IGludGVyZmFjZSBTdXBwb3J0ZWRFdmVudCBleHRlbmRzIFBpY2s8U3VwcG9ydGVkRXZlbnRSZXNwb25zZSwgJ3N1cHBvcnRlZCcgfCAncmVhZHknIHwgJ2NhdGVnb3J5JyB8ICdjb2xsZWN0aW9ucycgfCAndG9wX2NhdGVnb3J5Jz4ge1xuICAgIG51bWJlck9mUmV2aWV3czogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIG1lcmNoYW50X3RhZ3M/OiBzdHJpbmdbXTtcbn1cbmludGVyZmFjZSBQRFBBdHRyaWJ1dGVzIHtcbiAgICBwcm9kdWN0X2lkPzogc3RyaW5nO1xufVxuaW50ZXJmYWNlIFBMUEF0dHJpYnV0ZXMge1xuICAgIGF0dHJpYnV0ZXM/OiB7XG4gICAgICAgIGlkPzogc3RyaW5nO1xuICAgIH07XG59XG5leHBvcnQgaW50ZXJmYWNlIFVybFJlc29sdmluZ1BEUENvbmZpZyB7XG4gICAgcGRwX2F0dHJpYnV0ZXM6IFBEUEF0dHJpYnV0ZXM7XG4gICAgbnVtYmVyX29mX3Jldmlld3M/OiBudW1iZXI7XG4gICAgY29sbGVjdGlvbnM/OiBzdHJpbmdbXTtcbiAgICBtZXJjaGFudF90YWdzPzogc3RyaW5nW107XG59XG5leHBvcnQgaW50ZXJmYWNlIFVybFJlc29sdmluZ1BMUENvbmZpZyB7XG4gICAgcGxwX2F0dHJpYnV0ZXM6IFBMUEF0dHJpYnV0ZXM7XG4gICAgdG9wX2NhdGVnb3J5Pzogc3RyaW5nO1xufVxuaW50ZXJmYWNlIFVybFJlc29sdmluZ0dlbmVyaWNDb25maWcge1xuICAgIGRldGFpbHM/OiBzdHJpbmc7XG59XG5leHBvcnQgdHlwZSBQYWdlVmFyaWFudENoZWNrQ29uZmlnID0ge1xuICAgIGNoZWNrX3R5cGU6IHN0cmluZztcbiAgICBmZWF0dXJlX2dhdGU/OiBzdHJpbmc7XG4gICAgZXh0cmFjdG9yPzoge1xuICAgICAgICB0eXBlOiBzdHJpbmc7XG4gICAgICAgIG1hcD86IFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPjtcbiAgICAgICAgdmFsdWU/OiBzdHJpbmc7XG4gICAgfTtcbiAgICBwcm9kdWN0X2lkX2V4dHJhY3Rvcj86IHN0cmluZztcbiAgICBwcm9kdWN0X2lkcz86IHN0cmluZ1tdO1xuICAgIHBscF9pZF9leHRyYWN0b3I/OiBzdHJpbmc7XG4gICAgcGxwX2lkcz86IHN0cmluZ1tdO1xuICAgIGNvbGxlY3Rpb25zPzogc3RyaW5nW107XG4gICAgcXVlcnlfcGFyYW0/OiBzdHJpbmc7XG4gICAgY2F0ZWdvcnk/OiBzdHJpbmc7XG4gICAgdG9wX2NhdGVnb3J5Pzogc3RyaW5nW107XG4gICAgcmV2aWV3X21pbmltdW0/OiBudW1iZXI7XG4gICAgbWVyY2hhbnRfdGFncz86IHN0cmluZ1tdO1xufTtcbmV4cG9ydCB0eXBlIEJhY2tlbmRXaWRnZXRNb3VudGluZ0NvbmZpZyA9IHtcbiAgICBtb3VudGluZ19jb25maWdfaWQ6IHN0cmluZztcbiAgICB3aWRnZXRfY29uZmlnX2lkPzogc3RyaW5nO1xuICAgIG1vdW50aW5nX3BvaW50X3dpZGdldHM/OiBBcnJheTx7XG4gICAgICAgIGNoZWNrczogUGFnZVZhcmlhbnRDaGVja0NvbmZpZ1tdO1xuICAgICAgICB3aWRnZXRfY29uZmlnX2lkOiBzdHJpbmc7XG4gICAgfT47XG59O1xuZXhwb3J0IHR5cGUgQmFja2VuZFBhZ2VWYXJpYW50Q29uZmlnID0ge1xuICAgIHZhcmlhbnRfaWQ6IHN0cmluZztcbiAgICB2YXJpYW50X3R5cGU6IHN0cmluZztcbiAgICB2YXJpYW50X2NoZWNrczogUGFnZVZhcmlhbnRDaGVja0NvbmZpZ1tdO1xuICAgIHdpZGdldF9tb3VudGluZzogQmFja2VuZFdpZGdldE1vdW50aW5nQ29uZmlnW107XG4gICAgcGxwX2lkX2V4dHJhY3Rvcj86IHN0cmluZztcbiAgICBwcm9kdWN0X2lkX2V4dHJhY3Rvcj86IHN0cmluZztcbiAgICBwYXJlbnRfcHJvZHVjdF9pZF9leHRyYWN0b3I/OiBzdHJpbmc7XG59O1xuZXhwb3J0IGludGVyZmFjZSBVcmxSZXNvbHZlclJlc3BvbnNlIHtcbiAgICB2YXJpYW50X3R5cGU6IHN0cmluZztcbiAgICBzcGVjaWZpY19kZXRhaWxzOiBVcmxSZXNvbHZpbmdQRFBDb25maWcgfCBVcmxSZXNvbHZpbmdQTFBDb25maWcgfCBVcmxSZXNvbHZpbmdHZW5lcmljQ29uZmlnO1xuICAgIHJlYWR5OiBib29sZWFuO1xuICAgIHVzZXJfZXZlbnQ/OiB7XG4gICAgICAgIGV2ZW50X2lkPzogc3RyaW5nO1xuICAgICAgICBhdHRyaWJ1dGVzPzogUERQQXR0cmlidXRlcyB8IFBMUEF0dHJpYnV0ZXM7XG4gICAgICAgIGNhdGVnb3J5Pzogc3RyaW5nO1xuICAgICAgICBjcmVhdGVkX2F0Pzogc3RyaW5nO1xuICAgIH07XG4gICAgcGFnZV92YXJpYW50PzogQmFja2VuZFBhZ2VWYXJpYW50Q29uZmlnO1xufVxuZXhwb3J0IHR5cGUgVXJsUmVzb2x2ZXJDYWNoZSA9IFJlY29yZDxzdHJpbmcsIFVybFJlc29sdmVyUmVzcG9uc2UgfCB1bmRlZmluZWQ+O1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgdXJsUmVzb2x2ZXJBdG9tOiBpbXBvcnQoXCJqb3RhaVwiKS5Xcml0YWJsZUF0b208VXJsUmVzb2x2ZXJDYWNoZSwgW3ZhbHVlOiB7XG4gICAgdXJsOiBzdHJpbmc7XG4gICAgcmVzcG9uc2U6IFVybFJlc29sdmVyUmVzcG9uc2UgfCB1bmRlZmluZWQ7XG59XSwgdm9pZD47XG5leHBvcnQgZGVjbGFyZSBjb25zdCBzdXBwb3J0ZWRFdmVudEF0b206IGltcG9ydChcImpvdGFpXCIpLldyaXRhYmxlQXRvbTxTdXBwb3J0ZWRFdmVudCB8IHVuZGVmaW5lZCwgW3ZhbHVlOiBTdXBwb3J0ZWRFdmVudCB8IHVuZGVmaW5lZF0sIHZvaWQ+O1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgdmFyaWFudElkQXRvbTogaW1wb3J0KFwiam90YWlcIikuQXRvbTxzdHJpbmcgfCB1bmRlZmluZWQ+O1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgcHJvZHVjdElkQXRvbTogaW1wb3J0KFwiam90YWlcIikuQXRvbTxzdHJpbmcgfCB1bmRlZmluZWQ+O1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgcGFyZW50UHJvZHVjdElkQXRvbTogaW1wb3J0KFwiam90YWlcIikuQXRvbTxzdHJpbmcgfCB1bmRlZmluZWQ+O1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgcHJvZHVjdFVybEF0b206IGltcG9ydChcImpvdGFpXCIpLkF0b208c3RyaW5nIHwgdW5kZWZpbmVkPjtcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IHBscElkQXRvbTogaW1wb3J0KFwiam90YWlcIikuQXRvbTxzdHJpbmcgfCB1bmRlZmluZWQ+O1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgdXJsQXRvbTogaW1wb3J0KFwiam90YWlcIikuQXRvbTxzdHJpbmcgfCB1bmRlZmluZWQ+O1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgcGFnZVZpc2l0Q2F0ZWdvcnlBdG9tOiBpbXBvcnQoXCJqb3RhaVwiKS5BdG9tPFBhZ2VWaXNpdENhdGVnb3J5IHwgdW5kZWZpbmVkPjtcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IHZhcmlhbnRBdG9tOiBpbXBvcnQoXCJqb3RhaVwiKS5BdG9tPFwic2VhcmNoXCIgfCBcInBkcFwiIHwgXCJwbHBcIiB8IFwicGFnZV92aXNpdFwiPjtcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IGhhc1BhcnNlZFZhcmlhbnRJbmZvQXRvbTogaW1wb3J0KFwiam90YWlcIikuUHJpbWl0aXZlQXRvbTxib29sZWFuPiAmIHtcbiAgICBpbml0OiBib29sZWFuO1xufTtcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IHZhcmlhbnRJbmZvQXRvbTogaW1wb3J0KFwiam90YWlcIikuV3JpdGFibGVBdG9tPFZhcmlhbnRJbmZvLCBbbmV3VmFyaWFudDogVmFyaWFudEluZm9dLCB2b2lkPjtcbmV4cG9ydCB7fTtcbiIsImltcG9ydCB7IENvbnRleHRFbnZFbnVtLCBDb250ZXh0U291cmNlRW51bSB9IGZyb20gXCJAc3BpZmZ5LWFpL2NvbW1lcmNlLWFwaS1jbGllbnRcIjtcbmltcG9ydCB7IFZhcmlhbnRJbmZvIH0gZnJvbSBcInNyYy9hcHBsaWNhdGlvbi9tb2RlbHNcIjtcbmltcG9ydCB7IFVzZXJJZGVudGl0eUNvbnRleHRUeXBlIH0gZnJvbSBcInNyYy9jb250ZXh0cy91c2VySWRlbnRpdHlDb250ZXh0L3VzZXJJZGVudGl0eUNvbnRleHRcIjtcbmV4cG9ydCBpbnRlcmZhY2UgQXBwRGV0YWlscyB7XG4gICAgb3JnSWQ6IHN0cmluZztcbiAgICBvcmdTaG9ydE5hbWU6IHN0cmluZztcbiAgICBjaGF0SWQ6IHN0cmluZztcbiAgICB1c2VySWQ6IHN0cmluZztcbiAgICBzb3VyY2U6IENvbnRleHRTb3VyY2VFbnVtO1xuICAgIGVudjogQ29udGV4dEVudkVudW07XG4gICAgdmFyaWFudEluZm86IFZhcmlhbnRJbmZvO1xufVxuZXhwb3J0IHsgdmFyaWFudEluZm9BdG9tIH0gZnJvbSBcIi4vdmFyaWFudFwiO1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgdXNlcklkQXRvbTogaW1wb3J0KFwiam90YWlcIikuV3JpdGFibGVBdG9tPHN0cmluZywgW3ZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWRdLCB2b2lkPjtcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IHVzZXJJZGVudGl0eUF0b206IGltcG9ydChcImpvdGFpXCIpLlByaW1pdGl2ZUF0b208VXNlcklkZW50aXR5Q29udGV4dFR5cGUgfCB1bmRlZmluZWQ+ICYge1xuICAgIGluaXQ6IFVzZXJJZGVudGl0eUNvbnRleHRUeXBlIHwgdW5kZWZpbmVkO1xufTtcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IGFwcFNvdXJjZUF0b206IGltcG9ydChcImpvdGFpXCIpLkF0b208Q29udGV4dFNvdXJjZUVudW0+O1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgY2hhdElkQXRvbTogaW1wb3J0KFwiam90YWlcIikuV3JpdGFibGVBdG9tPHN0cmluZywgW3N0cmluZyB8IHR5cGVvZiBpbXBvcnQoXCJqb3RhaS91dGlsc1wiKS5SRVNFVCB8ICgocHJldjogc3RyaW5nKSA9PiBzdHJpbmcgfCB0eXBlb2YgaW1wb3J0KFwiam90YWkvdXRpbHNcIikuUkVTRVQpXSwgdm9pZD47XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXlCQSxJQUFXLGtCQUFTO0NBQUE7T0FBQTtPQUFBO09BQUEsUUFBQTtDQUFBOzs7O0FDcEJwQixJQUFXLGFBQWE7Q0FBQTtPQUFBO09BQUE7T0FBQTtDQUFBO0FBRXhCLElBQVcsYUFBTyxDQUFBLFNBQUEsUUFBQSxhQUFBO0FBQ2xCLElBQVcsbUJBQWtCO0NBQUE7T0FBQTtPQUFBLFFBQUE7T0FBQTtDQUFBO0FBQzdCLElBQVcsZ0JBQVk7Q0FBQTtPQUFBO09BQUEsUUFBQTtDQUFBO0FBQ3ZCLElBQVcsYUFBYTtDQUFDO09BQUcsYUFBQTtPQUFBLGFBQUE7T0FBQSxRQUFBO0NBQUEifQ==
@@ -16,10 +16,10 @@ require('../../atomStore-CmZbgQHc.cjs');
16
16
  require('../../app-BbPSHefQ.cjs');
17
17
  require('../../enviveConfigContext-D2OELZDR.cjs');
18
18
  require('../../featureFlagServiceContext-CJyYItqu.cjs');
19
- require('../../amplitudeContext-C8tT74Mi.cjs');
20
- const require_chatState = require('../../chatState-CJ52Ag_7.cjs');
19
+ require('../../amplitudeContext-C6LHpqP_.cjs');
20
+ const require_chatState = require('../../chatState-D9_aA1_h.cjs');
21
21
  require('../../graphqlConfig-BnfE0ql5.cjs');
22
- const require_chat = require('../../chat-BkPax29G.cjs');
22
+ const require_chat = require('../../chat-L_N0qaqs.cjs');
23
23
 
24
24
  exports.APP_INITIAL_START_TIME_KEY = require_chat.APP_INITIAL_START_TIME_KEY;
25
25
  exports.PAGE_LOAD_OFFSET_TIME_KEY = require_chat.PAGE_LOAD_OFFSET_TIME_KEY;
@@ -12,51 +12,51 @@ import "../../search-6RrxBXD6.cjs";
12
12
  import "../../index-OkKEOL6H.cjs";
13
13
  import { SpiffyMetricsEventName } from "../../amplitudeContext-CCVyp5RU.cjs";
14
14
  import * as _spiffy_ai_commerce_api_client0 from "@spiffy-ai/commerce-api-client";
15
- import * as jotai35 from "jotai";
15
+ import * as jotai20 from "jotai";
16
16
  import * as jotai_utils1 from "jotai/utils";
17
17
  import { UserEventCategory as UserEventCategory$1 } from "@spiffy-ai/commerce-api-client/dist/models/UserEventCategory";
18
18
 
19
19
  //#region src/atoms/chat/chatState.d.ts
20
- declare const userHasRepliedAtom: jotai35.PrimitiveAtom<boolean> & {
20
+ declare const userHasRepliedAtom: jotai20.PrimitiveAtom<boolean> & {
21
21
  init: boolean;
22
22
  };
23
- declare const replyEventCategoryAtom: jotai35.PrimitiveAtom<UserEventCategory$1> & {
23
+ declare const replyEventCategoryAtom: jotai20.PrimitiveAtom<UserEventCategory$1> & {
24
24
  init: UserEventCategory$1;
25
25
  };
26
- declare const userQueryAtom: jotai35.PrimitiveAtom<string | undefined> & {
26
+ declare const userQueryAtom: jotai20.PrimitiveAtom<string | undefined> & {
27
27
  init: string | undefined;
28
28
  };
29
- declare const suggestionAtom: jotai35.PrimitiveAtom<Suggestion$1 | undefined> & {
29
+ declare const suggestionAtom: jotai20.PrimitiveAtom<Suggestion$1 | undefined> & {
30
30
  init: Suggestion$1 | undefined;
31
31
  };
32
- declare const askQuestionBtnClickedAtom: jotai35.PrimitiveAtom<boolean> & {
32
+ declare const askQuestionBtnClickedAtom: jotai20.PrimitiveAtom<boolean> & {
33
33
  init: boolean;
34
34
  };
35
- declare const messagesAtom: jotai35.PrimitiveAtom<Message[][]> & {
35
+ declare const messagesAtom: jotai20.PrimitiveAtom<Message[][]> & {
36
36
  init: Message[][];
37
37
  };
38
- declare const userEventsAtom: jotai35.PrimitiveAtom<UserEvent$1[]> & {
38
+ declare const userEventsAtom: jotai20.PrimitiveAtom<UserEvent$1[]> & {
39
39
  init: UserEvent$1[];
40
40
  };
41
- declare const suggestionsAtom: jotai35.PrimitiveAtom<Suggestion$1[]> & {
41
+ declare const suggestionsAtom: jotai20.PrimitiveAtom<Suggestion$1[]> & {
42
42
  init: Suggestion$1[];
43
43
  };
44
- declare const suggestionsLoadingAtom: jotai35.PrimitiveAtom<boolean> & {
44
+ declare const suggestionsLoadingAtom: jotai20.PrimitiveAtom<boolean> & {
45
45
  init: boolean;
46
46
  };
47
- declare const responseStreamingAtom: jotai35.PrimitiveAtom<boolean> & {
47
+ declare const responseStreamingAtom: jotai20.PrimitiveAtom<boolean> & {
48
48
  init: boolean;
49
49
  };
50
- declare const chatIsOpenAtom: jotai35.PrimitiveAtom<boolean> & {
50
+ declare const chatIsOpenAtom: jotai20.PrimitiveAtom<boolean> & {
51
51
  init: boolean;
52
52
  };
53
- declare const requestFailureAtom: jotai35.PrimitiveAtom<boolean> & {
53
+ declare const requestFailureAtom: jotai20.PrimitiveAtom<boolean> & {
54
54
  init: boolean;
55
55
  };
56
- declare const formSubmitAtom: jotai35.PrimitiveAtom<FormSubmittedAttributes$1 | undefined> & {
56
+ declare const formSubmitAtom: jotai20.PrimitiveAtom<FormSubmittedAttributes$1 | undefined> & {
57
57
  init: FormSubmittedAttributes$1 | undefined;
58
58
  };
59
- declare const chatOnToggleAtom: jotai35.WritableAtom<null, [triggerLocation?: ChatElementDisplayLocation | undefined, track?: ((eventName: SpiffyMetricsEventName, eventProps?: Record<string, unknown>) => void) | undefined], void> & {
59
+ declare const chatOnToggleAtom: jotai20.WritableAtom<null, [triggerLocation?: ChatElementDisplayLocation | undefined, track?: ((eventName: SpiffyMetricsEventName, eventProps?: Record<string, unknown>) => void) | undefined], void> & {
60
60
  init: null;
61
61
  };
62
62
  //#endregion
@@ -65,7 +65,7 @@ type HandleReplyParams = {
65
65
  message: Message;
66
66
  userTyped: boolean;
67
67
  };
68
- declare const handleReplyAtom: jotai35.WritableAtom<null, [HandleReplyParams], void> & {
68
+ declare const handleReplyAtom: jotai20.WritableAtom<null, [HandleReplyParams], void> & {
69
69
  init: null;
70
70
  };
71
71
  //#endregion
@@ -91,8 +91,8 @@ declare enum PerfMetricsEvents {
91
91
  BottomSuggestionsBarRendered = "bottom_suggestions_bar_rendered_ms",
92
92
  SearchPromptRendered = "search_prompt_rendered_ms",
93
93
  }
94
- declare const appInitialStartTimeMsAtom: jotai35.WritableAtom<string | undefined, [string | typeof jotai_utils1.RESET | ((prev: string | undefined) => string | typeof jotai_utils1.RESET | undefined) | undefined], void>;
95
- declare const pageLoadOffsetTimeAtom: jotai35.WritableAtom<string | undefined, [string | typeof jotai_utils1.RESET | ((prev: string | undefined) => string | typeof jotai_utils1.RESET | undefined) | undefined], void>;
94
+ declare const appInitialStartTimeMsAtom: jotai20.WritableAtom<string | undefined, [string | typeof jotai_utils1.RESET | ((prev: string | undefined) => string | typeof jotai_utils1.RESET | undefined) | undefined], void>;
95
+ declare const pageLoadOffsetTimeAtom: jotai20.WritableAtom<string | undefined, [string | typeof jotai_utils1.RESET | ((prev: string | undefined) => string | typeof jotai_utils1.RESET | undefined) | undefined], void>;
96
96
  /**
97
97
  * Resets the performance metrics atom to an empty map. This should be called after the performance
98
98
  * metrics have been reported to amplitude. On SPA, it ensures that we can still capture metrics as
@@ -100,8 +100,8 @@ declare const pageLoadOffsetTimeAtom: jotai35.WritableAtom<string | undefined, [
100
100
  * On non-SPA, it ensures that previously captured metrics are not reported again.
101
101
  */
102
102
  declare const resetPerformanceMetricsAtom: () => void;
103
- declare const performanceMetricsAtom: jotai35.Atom<Map<PerfMetricsEvents, number>>;
104
- declare const hasReportedPerformanceMetricsAtom: jotai35.PrimitiveAtom<boolean> & {
103
+ declare const performanceMetricsAtom: jotai20.Atom<Map<PerfMetricsEvents, number>>;
104
+ declare const hasReportedPerformanceMetricsAtom: jotai20.PrimitiveAtom<boolean> & {
105
105
  init: boolean;
106
106
  };
107
107
  /**
@@ -110,25 +110,25 @@ declare const hasReportedPerformanceMetricsAtom: jotai35.PrimitiveAtom<boolean>
110
110
  *
111
111
  * @param value The performance metric name to log.
112
112
  */
113
- declare const logPerfMetricAtom: jotai35.WritableAtom<null, [value: PerfMetricsEvents], void> & {
113
+ declare const logPerfMetricAtom: jotai20.WritableAtom<null, [value: PerfMetricsEvents], void> & {
114
114
  init: null;
115
115
  };
116
116
  //#endregion
117
117
  //#region src/atoms/chat/form.d.ts
118
- declare const handleFormSubmittedAtom: jotai35.WritableAtom<null, [form: FormSubmittedAttributes$1], void> & {
118
+ declare const handleFormSubmittedAtom: jotai20.WritableAtom<null, [form: FormSubmittedAttributes$1], void> & {
119
119
  init: null;
120
120
  };
121
121
  //#endregion
122
122
  //#region src/atoms/chat/suggestions.d.ts
123
- declare const handleSuggestionAtom: jotai35.WritableAtom<null, [suggestion: Suggestion$1], void> & {
123
+ declare const handleSuggestionAtom: jotai20.WritableAtom<null, [suggestion: Suggestion$1], void> & {
124
124
  init: null;
125
125
  };
126
126
  //#endregion
127
127
  //#region src/atoms/chat/lastMessage.d.ts
128
- declare const lastAssistantMessageAtom: jotai35.Atom<Message[] | null>;
128
+ declare const lastAssistantMessageAtom: jotai20.Atom<Message[] | null>;
129
129
  //#endregion
130
130
  //#region src/atoms/chat/renderedWidgetRefs.d.ts
131
- declare const widgetArrayAtom: jotai35.Atom<HTMLElement[]>;
131
+ declare const widgetArrayAtom: jotai20.Atom<HTMLElement[]>;
132
132
  /**
133
133
  * This function call is used to create a list of the Spiffy widgets
134
134
  * that are rendering on the page.
@@ -145,7 +145,7 @@ declare const widgetArrayAtom: jotai35.Atom<HTMLElement[]>;
145
145
  declare const addWidget: (ref: HTMLElement, idx?: number) => void;
146
146
  //#endregion
147
147
  //#region src/atoms/chat/index.d.ts
148
- declare const chatAtom: jotai35.Atom<{
148
+ declare const chatAtom: jotai20.Atom<{
149
149
  userHasReplied: boolean;
150
150
  replyEventCategory: _spiffy_ai_commerce_api_client0.UserEventCategory;
151
151
  userQuery: string | undefined;