@envive-ai/react-hooks 0.2.10-arthur-1 → 0.2.10-arthur-3
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/{NewOrgConfig-5ExpEMAj.cjs → NewOrgConfig-BYo4V8-u.cjs} +2 -2
- package/dist/{NewOrgConfig-Dq_nxjNv.js → NewOrgConfig-kYrS59aR.js} +2 -2
- package/dist/{TrackComponentVisibleEvent-B0I6P2Ed.js → TrackComponentVisibleEvent-BHVBHQhu.js} +2 -2
- package/dist/{TrackComponentVisibleEvent-DG5M_UjY.cjs → TrackComponentVisibleEvent-B_2kXqvV.cjs} +2 -2
- package/dist/{amplitudeContext-k-YmQmpX.cjs → amplitudeContext-CjkMpI_a.cjs} +2 -2
- package/dist/{amplitudeContext-DE3rKEV2.js → amplitudeContext-D58WY1aS.js} +2 -2
- package/dist/application/models/index.cjs +2 -2
- package/dist/application/models/index.js +2 -2
- package/dist/application/utils/index.cjs +4 -4
- package/dist/application/utils/index.d.cts +2 -2
- package/dist/application/utils/index.js +4 -4
- package/dist/atoms/app/index.cjs +2 -2
- package/dist/atoms/app/index.d.cts +6 -6
- package/dist/atoms/app/index.d.ts +7 -7
- package/dist/atoms/app/index.js +2 -2
- package/dist/atoms/chat/index.cjs +6 -6
- package/dist/atoms/chat/index.d.cts +26 -26
- package/dist/atoms/chat/index.d.ts +26 -26
- package/dist/atoms/chat/index.js +6 -6
- package/dist/atoms/globalSearch/index.cjs +1 -1
- package/dist/atoms/globalSearch/index.d.cts +5 -5
- package/dist/atoms/globalSearch/index.d.ts +5 -5
- package/dist/atoms/globalSearch/index.js +1 -1
- package/dist/atoms/org/index.cjs +3 -3
- package/dist/atoms/org/index.d.cts +16 -16
- package/dist/atoms/org/index.d.ts +17 -17
- package/dist/atoms/org/index.js +3 -3
- package/dist/atoms/search/index.cjs +13 -13
- package/dist/atoms/search/index.d.cts +1 -1
- package/dist/atoms/search/index.d.ts +1 -1
- package/dist/atoms/search/index.js +13 -13
- package/dist/atoms/search/types.cjs +1 -1
- package/dist/atoms/search/types.js +1 -1
- package/dist/atoms/search/utils.cjs +1 -1
- package/dist/atoms/search/utils.d.ts +1 -1
- package/dist/atoms/search/utils.js +1 -1
- package/dist/{cdnContext-DzifgoNo.cjs → cdnContext-CaDyQ_5p.cjs} +1 -1
- package/dist/{cdnContext-B8zWuGGT.js → cdnContext-CtrIlAqX.js} +1 -1
- package/dist/{chat-zX9xdvd8.cjs → chat-CLo8FBCb.cjs} +5 -5
- package/dist/{chat-EJbfGWRr.js → chat-ClvJ9xEj.js} +1 -1
- package/dist/{chat-CJ9D8n7g.cjs → chat-DCGriB7h.cjs} +1 -1
- package/dist/{chat-DfL00obw.js → chat-Qkx5llOV.js} +5 -5
- package/dist/{chatSearch-CtOVPeYw.cjs → chatSearch-CP7QtVyA.cjs} +7 -8
- package/dist/{chatSearch-BWrMo8_Q.js → chatSearch-CjMcB3fG.js} +7 -8
- package/dist/{chatState-DtwyMZOg.js → chatState-BUN8ehpy.js} +3 -3
- package/dist/{chatState-BFHlHqzs.cjs → chatState-BUlDJ4NK.cjs} +3 -3
- package/dist/{commerce-api-4ZnHoGQA.js → commerce-api-CxnUXpTq.js} +4 -4
- package/dist/{commerce-api-V1XAx9KE.cjs → commerce-api-DNnrOYWX.cjs} +4 -4
- package/dist/{common-CuwWqIJ1.cjs → common-DQPvV_S_.cjs} +1 -1
- package/dist/{common-Df2bwzd2.js → common-c_4eX0qn.js} +1 -1
- package/dist/{components-QGCWJ26c.js → components-CDpaMUjK.js} +1 -1
- package/dist/{components-BCfFLf9X.cjs → components-DKwVHIjq.cjs} +1 -1
- package/dist/config/index.cjs +4 -4
- package/dist/config/index.js +4 -4
- package/dist/config/locators/components/chat/index.cjs +1 -1
- package/dist/config/locators/components/chat/index.js +1 -1
- package/dist/config/locators/components/common/index.cjs +1 -1
- package/dist/config/locators/components/common/index.js +1 -1
- package/dist/config/locators/components/index.cjs +1 -1
- package/dist/config/locators/components/index.js +1 -1
- package/dist/config/locators/index.cjs +4 -4
- package/dist/config/locators/index.js +4 -4
- package/dist/contexts/amplitudeContext/index.cjs +4 -4
- package/dist/contexts/amplitudeContext/index.js +4 -4
- package/dist/contexts/cdnContext/index.cjs +1 -1
- package/dist/contexts/cdnContext/index.js +1 -1
- package/dist/contexts/chatContext/index.cjs +14 -14
- package/dist/contexts/chatContext/index.d.ts +4 -4
- package/dist/contexts/chatContext/index.js +14 -14
- package/dist/contexts/enviveCssContext/index.cjs +7 -7
- package/dist/contexts/enviveCssContext/index.js +7 -7
- package/dist/contexts/graphqlContext/index.cjs +3 -3
- package/dist/contexts/graphqlContext/index.d.ts +1 -1
- package/dist/contexts/graphqlContext/index.js +3 -3
- package/dist/contexts/newOrgConfigContext/index.cjs +6 -6
- package/dist/contexts/newOrgConfigContext/index.d.ts +2 -2
- package/dist/contexts/newOrgConfigContext/index.js +6 -6
- package/dist/contexts/searchContext/index.cjs +7 -7
- package/dist/contexts/searchContext/index.js +7 -7
- package/dist/contexts/shopifyUrlContext/index.cjs +1 -1
- package/dist/contexts/shopifyUrlContext/index.js +1 -1
- package/dist/contexts/systemSettingsContext/index.d.cts +2 -2
- package/dist/contexts/systemSettingsContext/index.d.ts +2 -2
- package/dist/contexts/types.cjs +1 -1
- package/dist/contexts/types.js +1 -1
- package/dist/contexts/userIdentityContext/index.cjs +7 -7
- package/dist/contexts/userIdentityContext/index.js +7 -7
- package/dist/frontendConfig-msK69LYN.d.ts +1 -1
- package/dist/{globalSearch-FBk2epe8.cjs → globalSearch-BOG3wmck.cjs} +1 -1
- package/dist/{globalSearch-Ccxq8hNF.js → globalSearch-BQEX-2Ml.js} +1 -1
- package/dist/{graphqlConfig-9S6WH9iP.cjs → graphqlConfig-BnfE0ql5.cjs} +1 -1
- package/dist/{graphqlConfig-BJYgS8H5.js → graphqlConfig-CZGjJ8hP.js} +1 -1
- package/dist/{graphqlContext-D_UHK3hc.d.ts → graphqlContext-B1vmNkWT.d.ts} +3 -3
- package/dist/{graphqlContext-DYFkhHcB.js → graphqlContext-C0hG5Uer.js} +2 -2
- package/dist/{graphqlContext-CT6auB8V.cjs → graphqlContext-Dddy7mr7.cjs} +2 -2
- package/dist/hooks/AmplitudeOperations/index.cjs +5 -5
- package/dist/hooks/AmplitudeOperations/index.js +5 -5
- package/dist/hooks/AppDetails/index.cjs +5 -5
- package/dist/hooks/AppDetails/index.js +5 -5
- package/dist/hooks/CdnOperations/index.cjs +1 -1
- package/dist/hooks/CdnOperations/index.js +1 -1
- package/dist/hooks/ChatToggle/index.cjs +6 -6
- package/dist/hooks/ChatToggle/index.js +6 -6
- package/dist/hooks/ChatToggleAnalytics/index.cjs +6 -6
- package/dist/hooks/ChatToggleAnalytics/index.js +6 -6
- package/dist/hooks/GrabAndScroll/index.d.cts +2 -2
- package/dist/hooks/GraphQLConfig/index.cjs +4 -4
- package/dist/hooks/GraphQLConfig/index.d.ts +1 -1
- package/dist/hooks/GraphQLConfig/index.js +4 -4
- package/dist/hooks/IdentifyUser/index.cjs +7 -7
- package/dist/hooks/IdentifyUser/index.js +7 -7
- package/dist/hooks/ImageResolver/index.cjs +2 -2
- package/dist/hooks/ImageResolver/index.js +2 -2
- package/dist/hooks/MessageFilter/index.cjs +2 -2
- package/dist/hooks/MessageFilter/index.js +2 -2
- package/dist/hooks/NewOrgConfig/index.cjs +7 -7
- package/dist/hooks/NewOrgConfig/index.d.ts +2 -2
- package/dist/hooks/NewOrgConfig/index.js +7 -7
- package/dist/hooks/Search/index.cjs +23 -23
- package/dist/hooks/Search/index.d.cts +1 -1
- package/dist/hooks/Search/index.d.ts +1 -1
- package/dist/hooks/Search/index.js +23 -23
- package/dist/hooks/SearchOperations/index.cjs +7 -7
- package/dist/hooks/SearchOperations/index.js +7 -7
- package/dist/hooks/ShopifyUrlOperations/index.cjs +1 -1
- package/dist/hooks/ShopifyUrlOperations/index.js +1 -1
- package/dist/hooks/SystemSettingsContext/index.d.cts +2 -2
- package/dist/hooks/SystemSettingsContext/index.d.ts +2 -2
- package/dist/hooks/TrackComponentVisibleEvent/index.cjs +4 -4
- package/dist/hooks/TrackComponentVisibleEvent/index.js +4 -4
- package/dist/hooks/UpdateAnalyticsProps/index.cjs +3 -3
- package/dist/hooks/UpdateAnalyticsProps/index.js +3 -3
- package/dist/{index-C1uCtGnL.d.cts → index-Bq0xKgFw.d.cts} +30 -30
- package/dist/{index-CeeyLImD.d.ts → index-DeLfV7w5.d.ts} +30 -30
- package/dist/{locators-C2fWd-74.js → locators-BMQGmGLq.js} +1 -1
- package/dist/{locators-Cx3q6Z_h.cjs → locators-DxYdak1F.cjs} +1 -1
- package/dist/{models-BA9B8LGE.js → models-CE5YjbzE.js} +2 -2
- package/dist/{models-BubplUcB.cjs → models-CJy0mOoW.cjs} +2 -2
- package/dist/{newOrgConfigAtom-B_Lg4Rla.cjs → newOrgConfigAtom-CPA6Gp6n.cjs} +1 -1
- package/dist/{newOrgConfigAtom-HLwFoYIi.js → newOrgConfigAtom-DEUj6H-p.js} +1 -1
- package/dist/{newOrgConfigContext-Dkyzaadi.d.ts → newOrgConfigContext-CmQ-7Trc.d.ts} +2 -2
- package/dist/{newOrgConfigContext-CX1KHzju.cjs → newOrgConfigContext-Dg2gtrwB.cjs} +3 -3
- package/dist/{newOrgConfigContext-CgjVZuQi.js → newOrgConfigContext-P4xkie1E.js} +3 -3
- package/dist/{org-Di4wNmJY.cjs → org-B_cWn2bt.cjs} +1 -1
- package/dist/{org-CRNH9BHE.js → org-h32_LSEb.js} +1 -1
- package/dist/search-BRBqhum7.js +126 -0
- package/dist/search-Bpd_wxaK.cjs +205 -0
- package/dist/{searchContext-LbD2SkWw.js → searchContext-CitUyTLP.js} +3 -3
- package/dist/{searchContext-Cq6I8Jbr.cjs → searchContext-D5_iwZ0f.cjs} +3 -3
- package/dist/{searchServiceAdapter-B3KCzkDl.cjs → searchServiceAdapter-BGlvoZFE.cjs} +1 -1
- package/dist/{searchServiceAdapter-DQorsH-V.js → searchServiceAdapter-Db6jEcJs.js} +1 -1
- package/dist/{shopifyUrlContext-ZOcARiMR.cjs → shopifyUrlContext-CxjV3qvH.cjs} +1 -1
- package/dist/{shopifyUrlContext-C-PkSgNC.js → shopifyUrlContext-D2btP_lY.js} +1 -1
- package/dist/types-BegmH0S1.d.ts +1 -1
- package/dist/{types-C4uWPJYq.cjs → types-BuvXXGxE.cjs} +1 -1
- package/dist/{types-D3uOF0Oy.js → types-CtUb63bt.js} +1 -1
- package/dist/{types-CaytKP8k.js → types-DXnG1tV0.js} +1 -1
- package/dist/{types-BwNrLPSZ.cjs → types-UUvB6h05.cjs} +1 -1
- package/dist/{useAmplitudeOperations-C12VMX2E.js → useAmplitudeOperations-Cr03Hlk6.js} +2 -2
- package/dist/{useAmplitudeOperations-DTQ2I2GN.cjs → useAmplitudeOperations-DzFMBUU_.cjs} +2 -2
- package/dist/{useAppDetails-CPqMbju3.cjs → useAppDetails-BCvirEDu.cjs} +2 -2
- package/dist/{useAppDetails-WagqDI97.js → useAppDetails-CiBg_ni5.js} +2 -2
- package/dist/{useGraphQLConfig-CxLC4kGG.js → useGraphQLConfig-8oeOwWRP.js} +2 -2
- package/dist/{useGraphQLConfig-Ttye_Nhq.cjs → useGraphQLConfig-CO9lCk8b.cjs} +2 -2
- package/dist/{userIdentityContext-8FB3OlQU.js → userIdentityContext-BgbcZ_P2.js} +2 -2
- package/dist/{userIdentityContext-Ds1Vtcdr.cjs → userIdentityContext-CrWUNCrF.cjs} +2 -2
- package/dist/{utils-CUkxBB5H.cjs → utils-BXfzt6tu.cjs} +3 -3
- package/dist/{utils-BfwOaizA.js → utils-Cv772xzd.js} +3 -3
- package/dist/{utils-Cnpp2Lur.cjs → utils-CvLmSsUj.cjs} +1 -1
- package/dist/{utils-CpzV-LYG.js → utils-D82gfbgU.js} +1 -1
- package/package.json +1 -1
- package/src/atoms/search/chatSearch.ts +0 -1
- package/src/atoms/search/searchAPI.ts +0 -1
- package/src/hooks/Search/__tests__/useSearch.test.tsx +852 -0
- package/src/hooks/Search/useSearch.tsx +1 -2
- package/src/hooks/Search/useSearchInput.ts +1 -0
- package/dist/search-Bamw5aOc.js +0 -127
- package/dist/search-DFIGjP1v.cjs +0 -206
- /package/dist/{AmplitudeOperations-C-ieCm9m.js → AmplitudeOperations-ChZWcSsc.js} +0 -0
- /package/dist/{AmplitudeOperations-p7APchq9.cjs → AmplitudeOperations-JggIc1zD.cjs} +0 -0
- /package/dist/{amplitudeContext-Yff2qNrs.js → amplitudeContext-BItT9HmT.js} +0 -0
- /package/dist/{amplitudeContext-BX76wdSS.cjs → amplitudeContext-DPtyVv3Q.cjs} +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import "../../types-
|
|
1
|
+
import "../../types-CtUb63bt.js";
|
|
2
2
|
import "../../events-DyUix-Bn.js";
|
|
3
|
-
import "../../models-
|
|
3
|
+
import "../../models-CE5YjbzE.js";
|
|
4
4
|
import "../../featureGates-KEwAL8p_.js";
|
|
5
5
|
import "../../urlsParser-DxjoLj98.js";
|
|
6
6
|
import "../../graphql-CkxgqsXP.js";
|
|
@@ -16,10 +16,10 @@ 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 { SpiffyMetricsEventName, useAmplitude } from "../../amplitudeContext-
|
|
20
|
-
import { chatOnToggleAtom } from "../../chatState-
|
|
21
|
-
import "../../graphqlConfig-
|
|
22
|
-
import { chatAtom } from "../../chat-
|
|
19
|
+
import { SpiffyMetricsEventName, useAmplitude } from "../../amplitudeContext-D58WY1aS.js";
|
|
20
|
+
import { chatOnToggleAtom } from "../../chatState-BUN8ehpy.js";
|
|
21
|
+
import "../../graphqlConfig-CZGjJ8hP.js";
|
|
22
|
+
import { chatAtom } from "../../chat-Qkx5llOV.js";
|
|
23
23
|
import { useAtomValue, useSetAtom } from "jotai";
|
|
24
24
|
|
|
25
25
|
//#region src/hooks/ChatToggle/useChatToggle.ts
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
const require_chunk = require('../../chunk-CUT6urMc.cjs');
|
|
2
|
-
require('../../types-
|
|
2
|
+
require('../../types-UUvB6h05.cjs');
|
|
3
3
|
require('../../events-DYY4l817.cjs');
|
|
4
|
-
require('../../models-
|
|
4
|
+
require('../../models-CJy0mOoW.cjs');
|
|
5
5
|
require('../../featureGates-qU_ulhpC.cjs');
|
|
6
6
|
require('../../urlsParser-COzMdJaX.cjs');
|
|
7
7
|
require('../../graphql-i3dtpVTl.cjs');
|
|
@@ -17,10 +17,10 @@ require('../../atomStore-CmZbgQHc.cjs');
|
|
|
17
17
|
require('../../app-BbPSHefQ.cjs');
|
|
18
18
|
require('../../enviveConfigContext-D2OELZDR.cjs');
|
|
19
19
|
require('../../featureFlagServiceContext-CJyYItqu.cjs');
|
|
20
|
-
require('../../amplitudeContext-
|
|
21
|
-
const require_chatState = require('../../chatState-
|
|
22
|
-
const require_useAmplitudeOperations = require('../../useAmplitudeOperations-
|
|
23
|
-
require('../../AmplitudeOperations-
|
|
20
|
+
require('../../amplitudeContext-CjkMpI_a.cjs');
|
|
21
|
+
const require_chatState = require('../../chatState-BUlDJ4NK.cjs');
|
|
22
|
+
const require_useAmplitudeOperations = require('../../useAmplitudeOperations-DzFMBUU_.cjs');
|
|
23
|
+
require('../../AmplitudeOperations-JggIc1zD.cjs');
|
|
24
24
|
let jotai = require("jotai");
|
|
25
25
|
jotai = require_chunk.__toESM(jotai);
|
|
26
26
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import "../../types-
|
|
1
|
+
import "../../types-CtUb63bt.js";
|
|
2
2
|
import "../../events-DyUix-Bn.js";
|
|
3
|
-
import "../../models-
|
|
3
|
+
import "../../models-CE5YjbzE.js";
|
|
4
4
|
import "../../featureGates-KEwAL8p_.js";
|
|
5
5
|
import "../../urlsParser-DxjoLj98.js";
|
|
6
6
|
import "../../graphql-CkxgqsXP.js";
|
|
@@ -16,10 +16,10 @@ 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-
|
|
20
|
-
import { chatOnToggleAtom } from "../../chatState-
|
|
21
|
-
import { useAmplitudeTracking } from "../../useAmplitudeOperations-
|
|
22
|
-
import "../../AmplitudeOperations-
|
|
19
|
+
import "../../amplitudeContext-D58WY1aS.js";
|
|
20
|
+
import { chatOnToggleAtom } from "../../chatState-BUN8ehpy.js";
|
|
21
|
+
import { useAmplitudeTracking } from "../../useAmplitudeOperations-Cr03Hlk6.js";
|
|
22
|
+
import "../../AmplitudeOperations-ChZWcSsc.js";
|
|
23
23
|
import { useSetAtom } from "jotai";
|
|
24
24
|
|
|
25
25
|
//#region src/hooks/ChatToggleAnalytics/useChatToggleAnalytics.ts
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as react0 from "react";
|
|
2
2
|
|
|
3
3
|
//#region src/hooks/GrabAndScroll/useGrabAndScroll.d.ts
|
|
4
4
|
declare const useGrabAndScroll: (enabled: boolean, chunkWidth: number, speed?: number, offset?: number) => {
|
|
5
|
-
containerRef:
|
|
5
|
+
containerRef: react0.RefObject<HTMLDivElement>;
|
|
6
6
|
leftArrow: boolean;
|
|
7
7
|
rightArrow: boolean;
|
|
8
8
|
animationTrigger: () => void;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
require('../../types-
|
|
2
|
-
require('../../models-
|
|
1
|
+
require('../../types-UUvB6h05.cjs');
|
|
2
|
+
require('../../models-CJy0mOoW.cjs');
|
|
3
3
|
require('../../featureGates-qU_ulhpC.cjs');
|
|
4
4
|
require('../../urlsParser-COzMdJaX.cjs');
|
|
5
5
|
require('../../graphql-i3dtpVTl.cjs');
|
|
@@ -10,8 +10,8 @@ require('../../utilityTypes-BGbL2WTP.cjs');
|
|
|
10
10
|
require('../../variantInfo-DpLn4nHz.cjs');
|
|
11
11
|
require('../../localStorageContext-NRP-CdmF.cjs');
|
|
12
12
|
require('../../enviveConfig-Dv9-esGV.cjs');
|
|
13
|
-
require('../../graphqlContext-
|
|
14
|
-
const require_useGraphQLConfig = require('../../useGraphQLConfig-
|
|
13
|
+
require('../../graphqlContext-Dddy7mr7.cjs');
|
|
14
|
+
const require_useGraphQLConfig = require('../../useGraphQLConfig-CO9lCk8b.cjs');
|
|
15
15
|
|
|
16
16
|
exports.useColorsAndFrontendConfig = require_useGraphQLConfig.useColorsAndFrontendConfig;
|
|
17
17
|
exports.useOrgId = require_useGraphQLConfig.useOrgId;
|
|
@@ -10,7 +10,7 @@ import "../../test-types-BEml_bm3.js";
|
|
|
10
10
|
import "../../spiffyWidgets-MTUAQq_u.js";
|
|
11
11
|
import "../../search-DrJiCT7d.js";
|
|
12
12
|
import "../../index-D7htGSQC.js";
|
|
13
|
-
import { GraphQlConfigValues } from "../../graphqlContext-
|
|
13
|
+
import { GraphQlConfigValues } from "../../graphqlContext-B1vmNkWT.js";
|
|
14
14
|
|
|
15
15
|
//#region src/hooks/GraphQLConfig/useGraphQLConfig.d.ts
|
|
16
16
|
declare const useColorsAndFrontendConfig: () => {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import "../../types-
|
|
2
|
-
import "../../models-
|
|
1
|
+
import "../../types-CtUb63bt.js";
|
|
2
|
+
import "../../models-CE5YjbzE.js";
|
|
3
3
|
import "../../featureGates-KEwAL8p_.js";
|
|
4
4
|
import "../../urlsParser-DxjoLj98.js";
|
|
5
5
|
import "../../graphql-CkxgqsXP.js";
|
|
@@ -10,7 +10,7 @@ import "../../utilityTypes-B2KuRn37.js";
|
|
|
10
10
|
import "../../variantInfo-BfKlkaWU.js";
|
|
11
11
|
import "../../localStorageContext-BPZ82q-G.js";
|
|
12
12
|
import "../../enviveConfig-DZBohDpc.js";
|
|
13
|
-
import "../../graphqlContext-
|
|
14
|
-
import { useColorsAndFrontendConfig, useOrgId } from "../../useGraphQLConfig-
|
|
13
|
+
import "../../graphqlContext-C0hG5Uer.js";
|
|
14
|
+
import { useColorsAndFrontendConfig, useOrgId } from "../../useGraphQLConfig-8oeOwWRP.js";
|
|
15
15
|
|
|
16
16
|
export { useColorsAndFrontendConfig, useOrgId };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
const require_chunk = require('../../chunk-CUT6urMc.cjs');
|
|
2
|
-
require('../../types-
|
|
2
|
+
require('../../types-UUvB6h05.cjs');
|
|
3
3
|
require('../../events-DYY4l817.cjs');
|
|
4
|
-
require('../../models-
|
|
4
|
+
require('../../models-CJy0mOoW.cjs');
|
|
5
5
|
require('../../featureGates-qU_ulhpC.cjs');
|
|
6
6
|
require('../../urlsParser-COzMdJaX.cjs');
|
|
7
7
|
require('../../graphql-i3dtpVTl.cjs');
|
|
@@ -17,13 +17,13 @@ require('../../atomStore-CmZbgQHc.cjs');
|
|
|
17
17
|
require('../../app-BbPSHefQ.cjs');
|
|
18
18
|
require('../../enviveConfigContext-D2OELZDR.cjs');
|
|
19
19
|
require('../../featureFlagServiceContext-CJyYItqu.cjs');
|
|
20
|
-
require('../../amplitudeContext-
|
|
21
|
-
require('../../utils-
|
|
20
|
+
require('../../amplitudeContext-CjkMpI_a.cjs');
|
|
21
|
+
require('../../utils-BXfzt6tu.cjs');
|
|
22
22
|
require('../../domObserver-COKvTfZV.cjs');
|
|
23
|
-
require('../../graphqlConfig-
|
|
23
|
+
require('../../graphqlConfig-BnfE0ql5.cjs');
|
|
24
24
|
require('../../unsupportedProductExceptions-DGENUnEA.cjs');
|
|
25
|
-
require('../../commerce-api-
|
|
26
|
-
const require_userIdentityContext = require('../../userIdentityContext-
|
|
25
|
+
require('../../commerce-api-DNnrOYWX.cjs');
|
|
26
|
+
const require_userIdentityContext = require('../../userIdentityContext-CrWUNCrF.cjs');
|
|
27
27
|
let react = require("react");
|
|
28
28
|
react = require_chunk.__toESM(react);
|
|
29
29
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import "../../types-
|
|
1
|
+
import "../../types-CtUb63bt.js";
|
|
2
2
|
import "../../events-DyUix-Bn.js";
|
|
3
|
-
import "../../models-
|
|
3
|
+
import "../../models-CE5YjbzE.js";
|
|
4
4
|
import "../../featureGates-KEwAL8p_.js";
|
|
5
5
|
import "../../urlsParser-DxjoLj98.js";
|
|
6
6
|
import "../../graphql-CkxgqsXP.js";
|
|
@@ -16,13 +16,13 @@ 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-
|
|
20
|
-
import "../../utils-
|
|
19
|
+
import "../../amplitudeContext-D58WY1aS.js";
|
|
20
|
+
import "../../utils-Cv772xzd.js";
|
|
21
21
|
import "../../domObserver-DEiUh0qg.js";
|
|
22
|
-
import "../../graphqlConfig-
|
|
22
|
+
import "../../graphqlConfig-CZGjJ8hP.js";
|
|
23
23
|
import "../../unsupportedProductExceptions-uQuuelOs.js";
|
|
24
|
-
import "../../commerce-api-
|
|
25
|
-
import { useUserIdentity } from "../../userIdentityContext-
|
|
24
|
+
import "../../commerce-api-CxnUXpTq.js";
|
|
25
|
+
import { useUserIdentity } from "../../userIdentityContext-BgbcZ_P2.js";
|
|
26
26
|
import { useCallback, useState } from "react";
|
|
27
27
|
|
|
28
28
|
//#region src/hooks/IdentifyUser/useIdentifyUser.ts
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
const require_chunk = require('../../chunk-CUT6urMc.cjs');
|
|
2
|
-
require('../../types-
|
|
3
|
-
const require_models = require('../../models-
|
|
2
|
+
require('../../types-UUvB6h05.cjs');
|
|
3
|
+
const require_models = require('../../models-CJy0mOoW.cjs');
|
|
4
4
|
require('../../featureGates-qU_ulhpC.cjs');
|
|
5
5
|
require('../../urlsParser-COzMdJaX.cjs');
|
|
6
6
|
require('../../graphql-i3dtpVTl.cjs');
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import "../../types-
|
|
2
|
-
import { OrgShortName } from "../../models-
|
|
1
|
+
import "../../types-CtUb63bt.js";
|
|
2
|
+
import { OrgShortName } from "../../models-CE5YjbzE.js";
|
|
3
3
|
import "../../featureGates-KEwAL8p_.js";
|
|
4
4
|
import "../../urlsParser-DxjoLj98.js";
|
|
5
5
|
import "../../graphql-CkxgqsXP.js";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
require('../../types-
|
|
2
|
-
const require_models = require('../../models-
|
|
1
|
+
require('../../types-UUvB6h05.cjs');
|
|
2
|
+
const require_models = require('../../models-CJy0mOoW.cjs');
|
|
3
3
|
require('../../featureGates-qU_ulhpC.cjs');
|
|
4
4
|
require('../../urlsParser-COzMdJaX.cjs');
|
|
5
5
|
require('../../graphql-i3dtpVTl.cjs');
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import "../../types-
|
|
2
|
-
import { MessageType } from "../../models-
|
|
1
|
+
import "../../types-CtUb63bt.js";
|
|
2
|
+
import { MessageType } from "../../models-CE5YjbzE.js";
|
|
3
3
|
import "../../featureGates-KEwAL8p_.js";
|
|
4
4
|
import "../../urlsParser-DxjoLj98.js";
|
|
5
5
|
import "../../graphql-CkxgqsXP.js";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
require('../../types-
|
|
2
|
-
require('../../models-
|
|
1
|
+
require('../../types-UUvB6h05.cjs');
|
|
2
|
+
require('../../models-CJy0mOoW.cjs');
|
|
3
3
|
require('../../featureGates-qU_ulhpC.cjs');
|
|
4
4
|
require('../../urlsParser-COzMdJaX.cjs');
|
|
5
5
|
require('../../graphql-i3dtpVTl.cjs');
|
|
@@ -11,10 +11,10 @@ require('../../variantInfo-DpLn4nHz.cjs');
|
|
|
11
11
|
require('../../localStorageContext-NRP-CdmF.cjs');
|
|
12
12
|
require('../../enviveConfig-Dv9-esGV.cjs');
|
|
13
13
|
require('../../featureFlagServiceContext-CJyYItqu.cjs');
|
|
14
|
-
require('../../newOrgConfigAtom-
|
|
15
|
-
require('../../graphqlContext-
|
|
16
|
-
require('../../useGraphQLConfig-
|
|
17
|
-
require('../../newOrgConfigContext-
|
|
18
|
-
const require_NewOrgConfig = require('../../NewOrgConfig-
|
|
14
|
+
require('../../newOrgConfigAtom-CPA6Gp6n.cjs');
|
|
15
|
+
require('../../graphqlContext-Dddy7mr7.cjs');
|
|
16
|
+
require('../../useGraphQLConfig-CO9lCk8b.cjs');
|
|
17
|
+
require('../../newOrgConfigContext-Dg2gtrwB.cjs');
|
|
18
|
+
const require_NewOrgConfig = require('../../NewOrgConfig-BYo4V8-u.cjs');
|
|
19
19
|
|
|
20
20
|
exports.useNewOrgConfig = require_NewOrgConfig.useNewOrgConfig;
|
|
@@ -10,9 +10,9 @@ import "../../test-types-BEml_bm3.js";
|
|
|
10
10
|
import "../../spiffyWidgets-MTUAQq_u.js";
|
|
11
11
|
import "../../search-DrJiCT7d.js";
|
|
12
12
|
import "../../index-D7htGSQC.js";
|
|
13
|
-
import "../../graphqlContext-
|
|
13
|
+
import "../../graphqlContext-B1vmNkWT.js";
|
|
14
14
|
import "../../index-DNVvRcKu.js";
|
|
15
|
-
import { NewOrgConfigContextType } from "../../newOrgConfigContext-
|
|
15
|
+
import { NewOrgConfigContextType } from "../../newOrgConfigContext-CmQ-7Trc.js";
|
|
16
16
|
|
|
17
17
|
//#region src/hooks/NewOrgConfig/useNewOrgConfig.d.ts
|
|
18
18
|
declare const useNewOrgConfig: () => NewOrgConfigContextType;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import "../../types-
|
|
2
|
-
import "../../models-
|
|
1
|
+
import "../../types-CtUb63bt.js";
|
|
2
|
+
import "../../models-CE5YjbzE.js";
|
|
3
3
|
import "../../featureGates-KEwAL8p_.js";
|
|
4
4
|
import "../../urlsParser-DxjoLj98.js";
|
|
5
5
|
import "../../graphql-CkxgqsXP.js";
|
|
@@ -11,10 +11,10 @@ import "../../variantInfo-BfKlkaWU.js";
|
|
|
11
11
|
import "../../localStorageContext-BPZ82q-G.js";
|
|
12
12
|
import "../../enviveConfig-DZBohDpc.js";
|
|
13
13
|
import "../../featureFlagServiceContext-FBM6DdMJ.js";
|
|
14
|
-
import "../../newOrgConfigAtom-
|
|
15
|
-
import "../../graphqlContext-
|
|
16
|
-
import "../../useGraphQLConfig-
|
|
17
|
-
import "../../newOrgConfigContext-
|
|
18
|
-
import { useNewOrgConfig } from "../../NewOrgConfig-
|
|
14
|
+
import "../../newOrgConfigAtom-DEUj6H-p.js";
|
|
15
|
+
import "../../graphqlContext-C0hG5Uer.js";
|
|
16
|
+
import "../../useGraphQLConfig-8oeOwWRP.js";
|
|
17
|
+
import "../../newOrgConfigContext-P4xkie1E.js";
|
|
18
|
+
import { useNewOrgConfig } from "../../NewOrgConfig-kYrS59aR.js";
|
|
19
19
|
|
|
20
20
|
export { useNewOrgConfig };
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
const require_chunk = require('../../chunk-CUT6urMc.cjs');
|
|
2
|
-
require('../../types-
|
|
2
|
+
require('../../types-UUvB6h05.cjs');
|
|
3
3
|
require('../../events-DYY4l817.cjs');
|
|
4
4
|
const require_utils = require('../../utils-hYTjy7hJ.cjs');
|
|
5
|
-
const require_models = require('../../models-
|
|
5
|
+
const require_models = require('../../models-CJy0mOoW.cjs');
|
|
6
6
|
const require_featureGates = require('../../featureGates-qU_ulhpC.cjs');
|
|
7
7
|
require('../../urlsParser-COzMdJaX.cjs');
|
|
8
8
|
require('../../graphql-i3dtpVTl.cjs');
|
|
@@ -18,25 +18,25 @@ require('../../atomStore-CmZbgQHc.cjs');
|
|
|
18
18
|
require('../../app-BbPSHefQ.cjs');
|
|
19
19
|
require('../../enviveConfigContext-D2OELZDR.cjs');
|
|
20
20
|
const require_featureFlagServiceContext = require('../../featureFlagServiceContext-CJyYItqu.cjs');
|
|
21
|
-
const require_amplitudeContext = require('../../amplitudeContext-
|
|
22
|
-
|
|
23
|
-
require('../../
|
|
24
|
-
require('../../
|
|
25
|
-
const
|
|
26
|
-
require('../../
|
|
27
|
-
require('../../
|
|
28
|
-
require('../../
|
|
29
|
-
|
|
30
|
-
require('../../
|
|
31
|
-
|
|
32
|
-
require('../../
|
|
33
|
-
|
|
34
|
-
require('../../graphqlContext-
|
|
35
|
-
require('../../useGraphQLConfig-
|
|
36
|
-
require('../../newOrgConfigContext-
|
|
37
|
-
const require_NewOrgConfig = require('../../NewOrgConfig-
|
|
21
|
+
const require_amplitudeContext = require('../../amplitudeContext-CjkMpI_a.cjs');
|
|
22
|
+
require('../../chatState-BUlDJ4NK.cjs');
|
|
23
|
+
require('../../graphqlConfig-BnfE0ql5.cjs');
|
|
24
|
+
const require_chat = require('../../chat-CLo8FBCb.cjs');
|
|
25
|
+
const require_globalSearch = require('../../globalSearch-BOG3wmck.cjs');
|
|
26
|
+
require('../../org-B_cWn2bt.cjs');
|
|
27
|
+
require('../../newOrgConfigAtom-CPA6Gp6n.cjs');
|
|
28
|
+
const require_utils$2 = require('../../utils-CvLmSsUj.cjs');
|
|
29
|
+
require('../../chatSearch-CP7QtVyA.cjs');
|
|
30
|
+
const require_types$1 = require('../../types-BuvXXGxE.cjs');
|
|
31
|
+
require('../../searchServiceAdapter-BGlvoZFE.cjs');
|
|
32
|
+
const require_search = require('../../search-Bpd_wxaK.cjs');
|
|
33
|
+
require('../../amplitudeContext-DPtyVv3Q.cjs');
|
|
34
|
+
require('../../graphqlContext-Dddy7mr7.cjs');
|
|
35
|
+
require('../../useGraphQLConfig-CO9lCk8b.cjs');
|
|
36
|
+
require('../../newOrgConfigContext-Dg2gtrwB.cjs');
|
|
37
|
+
const require_NewOrgConfig = require('../../NewOrgConfig-BYo4V8-u.cjs');
|
|
38
38
|
require('../../useIntersection-DSDREfj6.cjs');
|
|
39
|
-
const require_TrackComponentVisibleEvent = require('../../TrackComponentVisibleEvent-
|
|
39
|
+
const require_TrackComponentVisibleEvent = require('../../TrackComponentVisibleEvent-B_2kXqvV.cjs');
|
|
40
40
|
let react = require("react");
|
|
41
41
|
react = require_chunk.__toESM(react);
|
|
42
42
|
let jotai = require("jotai");
|
|
@@ -46,6 +46,7 @@ fuse_js = require_chunk.__toESM(fuse_js);
|
|
|
46
46
|
|
|
47
47
|
//#region src/hooks/Search/useSearchInput.ts
|
|
48
48
|
const useSearchInput = ({ initialSearchText = "", searchOrigin, onSearchSubmit }) => {
|
|
49
|
+
console.log("useSearchInput", initialSearchText, searchOrigin, onSearchSubmit);
|
|
49
50
|
const track = (0, jotai.useAtomValue)(require_chat.amplitudeTrackEventAtom);
|
|
50
51
|
const [searchText, setSearchText] = (0, react.useState)(initialSearchText);
|
|
51
52
|
const [hasText, setHasText] = (0, react.useState)(initialSearchText.trim().length > 0);
|
|
@@ -317,7 +318,7 @@ const useSearch = ({ allowRedirect = false } = {}) => {
|
|
|
317
318
|
});
|
|
318
319
|
}, []);
|
|
319
320
|
const { searchText, focusedIndex, focusedOptionId, autocompleteResults, shouldShowAutocomplete, handleSearchInputChange, handleSearchInputFocus, handleSearchInputBlur, handleKeyDown, handleAutocompleteSelect, handleSubmitSearch, setSearchText, resetSearch } = useSearchInput({
|
|
320
|
-
initialSearchText:
|
|
321
|
+
initialSearchText: "",
|
|
321
322
|
searchOrigin: require_models.SpiffyWidgets.SearchResults,
|
|
322
323
|
onSearchSubmit: (searchQuery) => {
|
|
323
324
|
performSearch({ query: searchQuery }, allowRedirect);
|
|
@@ -452,7 +453,6 @@ const useSearch = ({ allowRedirect = false } = {}) => {
|
|
|
452
453
|
(0, react.useEffect)(() => {
|
|
453
454
|
if (query && query !== searchText) {
|
|
454
455
|
const esq = new URLSearchParams(window.location.search).get("esq");
|
|
455
|
-
console.log("SEARCH_DEBUG - esq", esq, query, searchText, window.location.search);
|
|
456
456
|
setSearchText(query);
|
|
457
457
|
performSearch({ query: esq ?? query });
|
|
458
458
|
}
|
|
@@ -501,4 +501,4 @@ const useSearch = ({ allowRedirect = false } = {}) => {
|
|
|
501
501
|
|
|
502
502
|
//#endregion
|
|
503
503
|
exports.useSearch = useSearch;
|
|
504
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY2pzIiwibmFtZXMiOlsiYW1wbGl0dWRlVHJhY2tFdmVudEF0b20iLCJhdXRvY29tcGxldGVTdGF0ZUF0b20iLCJGdXNlIiwiU3BpZmZ5TWV0cmljc0V2ZW50TmFtZSIsInByb2R1Y3RSZXRyaWV2YWxGdW5jdGlvbjpcbiAgfCAoKHBhcmFtczogUHJvZHVjdFJldHJpZXZhbFBhcmFtcykgPT4gUHJvbWlzZTxQcm9kdWN0UmV0cmlldmFsUmVzdWx0PilcbiAgfCBudWxsIiwiZXJyb3I6IHVua25vd24iLCJ1c2VGZWF0dXJlRmxhZ1NlcnZpY2UiLCJGZWF0dXJlR2F0ZXMiLCJ1c2VOZXdPcmdDb25maWciLCJ1c2VOZXdPcmdDb25maWciLCJvcmdTaG9ydE5hbWVBdG9tIiwic2VhcmNoQXRvbSIsImZpbHRlcmVkU2VhcmNoUHJvZHVjdHNBdG9tIiwicGVyZm9ybVNlYXJjaEF0b20iLCJzZWFyY2hQYXJhbXNBdG9tIiwiaXNGaWx0ZXJPcGVuQXRvbSIsInNlYXJjaFNlbGVjdGVkRmlsdGVyc0F0b20iLCJhZGRTZWFyY2hGaWx0ZXJBdG9tIiwicmVtb3ZlU2VhcmNoRmlsdGVyQXRvbSIsInNlYXJjaFByb2R1Y3RTb3J0aW5nQXRvbSIsImNsZWFyU2VhcmNoRmlsdGVyc0F0b20iLCJzZWFyY2hGaWx0ZXJzQXRvbSIsIlNwaWZmeVdpZGdldHMiLCJnZXRTZWFyY2hSZXN1bHRzU3RhdGUiLCJmb3JtYXRGaWx0ZXJEaXNwbGF5TmFtZSIsIlByb2R1Y3RTb3J0aW5nIiwidXNlQW1wbGl0dWRlIiwiU3BpZmZ5TWV0cmljc0V2ZW50TmFtZSIsImNyZWF0ZUZpbHRlck9wdGlvbiIsImhhbmRsZVNlbGVjdEZpbHRlckl0ZW06IFNlbGVjdEZpbHRlckl0ZW0iLCJTZWFyY2hSZXN1bHRzU3RhdGUiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaG9va3MvU2VhcmNoL3VzZVNlYXJjaElucHV0LnRzIiwiLi4vLi4vLi4vc3JjL2F0b21zL3NlYXJjaC9wcm9kdWN0UmV0cmlldmFsQWRhcHRlci50cyIsIi4uLy4uLy4uL3NyYy9hdG9tcy9zZWFyY2gvcHJvZHVjdFJldHJpZXZhbEFQSS50cyIsIi4uLy4uLy4uL3NyYy9ob29rcy9TZWFyY2gvdXNlUmVjb21tZW5kZWRQcm9kdWN0cy50cyIsIi4uLy4uLy4uL3NyYy9ob29rcy9TZWFyY2gvdXNlU2VhcmNoLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VTdGF0ZSwgdXNlQ2FsbGJhY2ssIHVzZVJlZiwgdXNlTWVtbyB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlQXRvbVZhbHVlIH0gZnJvbSBcImpvdGFpXCI7XG5pbXBvcnQgRnVzZSBmcm9tIFwiZnVzZS5qc1wiO1xuXG5pbXBvcnQgeyBhdXRvY29tcGxldGVTdGF0ZUF0b20gfSBmcm9tIFwic3JjL2F0b21zL2dsb2JhbFNlYXJjaFwiO1xuaW1wb3J0IHsgYW1wbGl0dWRlVHJhY2tFdmVudEF0b20gfSBmcm9tIFwic3JjL2F0b21zL2FtcGxpdHVkZS9hbXBsaXR1ZGVUcmFja0V2ZW50QXRvbVwiO1xuaW1wb3J0IHsgU3BpZmZ5TWV0cmljc0V2ZW50TmFtZSB9IGZyb20gXCJzcmMvY29udGV4dHMvYW1wbGl0dWRlQ29udGV4dFwiO1xuaW1wb3J0IHsgU3BpZmZ5V2lkZ2V0cyB9IGZyb20gXCJzcmMvYXBwbGljYXRpb24vbW9kZWxzL3NwaWZmeVdpZGdldHNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBVc2VTZWFyY2hJbnB1dFByb3BzIHtcbiAgaW5pdGlhbFNlYXJjaFRleHQ/OiBzdHJpbmc7XG4gIHNlYXJjaE9yaWdpbjogU3BpZmZ5V2lkZ2V0cztcbiAgb25TZWFyY2hTdWJtaXQ/OiAocXVlcnk6IHN0cmluZykgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVc2VTZWFyY2hJbnB1dFJldHVybiB7XG4gIC8vIFN0YXRlXG4gIHNlYXJjaFRleHQ6IHN0cmluZztcbiAgaGFzVGV4dDogYm9vbGVhbjtcbiAgaXNGb2N1c2VkOiBib29sZWFuO1xuICBmb2N1c2VkSW5kZXg6IG51bWJlcjtcbiAgZm9jdXNlZE9wdGlvbklkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGF1dG9jb21wbGV0ZVJlc3VsdHM6IHN0cmluZ1tdO1xuICBzaG91bGRTaG93QXV0b2NvbXBsZXRlOiBib29sZWFuO1xuICBcbiAgLy8gSGFuZGxlcnNcbiAgaGFuZGxlU2VhcmNoSW5wdXRDaGFuZ2U6ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkO1xuICBoYW5kbGVTZWFyY2hJbnB1dEZvY3VzOiAoKSA9PiB2b2lkO1xuICBoYW5kbGVTZWFyY2hJbnB1dEJsdXI6ICgpID0+IHZvaWQ7XG4gIGhhbmRsZUtleURvd246IChldmVudDogUmVhY3QuS2V5Ym9hcmRFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4gdm9pZDtcbiAgaGFuZGxlQXV0b2NvbXBsZXRlU2VsZWN0OiAoc3VnZ2VzdGlvbjogc3RyaW5nLCByYW5rUG9zaXRpb24/OiBudW1iZXIpID0+IHZvaWQ7XG4gIGhhbmRsZVN1Ym1pdFNlYXJjaDogKCkgPT4gdm9pZDtcbiAgXG4gIC8vIFV0aWxpdGllc1xuICBzZXRTZWFyY2hUZXh0OiAodGV4dDogc3RyaW5nKSA9PiB2b2lkO1xuICByZXNldFNlYXJjaDogKCkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGNvbnN0IHVzZVNlYXJjaElucHV0ID0gKHtcbiAgaW5pdGlhbFNlYXJjaFRleHQgPSBcIlwiLFxuICBzZWFyY2hPcmlnaW4sXG4gIG9uU2VhcmNoU3VibWl0LFxufTogVXNlU2VhcmNoSW5wdXRQcm9wcyk6IFVzZVNlYXJjaElucHV0UmV0dXJuID0+IHtcbiAgY29uc3QgdHJhY2sgPSB1c2VBdG9tVmFsdWUoYW1wbGl0dWRlVHJhY2tFdmVudEF0b20pO1xuXG4gIC8vIFN0YXRlXG4gIGNvbnN0IFtzZWFyY2hUZXh0LCBzZXRTZWFyY2hUZXh0XSA9IHVzZVN0YXRlKGluaXRpYWxTZWFyY2hUZXh0KTtcbiAgY29uc3QgW2hhc1RleHQsIHNldEhhc1RleHRdID0gdXNlU3RhdGUoaW5pdGlhbFNlYXJjaFRleHQudHJpbSgpLmxlbmd0aCA+IDApO1xuICBjb25zdCBbaXNGb2N1c2VkLCBzZXRJc0ZvY3VzZWRdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbZm9jdXNlZEluZGV4LCBzZXRGb2N1c2VkSW5kZXhdID0gdXNlU3RhdGUoLTEpO1xuICBjb25zdCBbZm9jdXNlZE9wdGlvbklkLCBzZXRGb2N1c2VkT3B0aW9uSWRdID0gdXNlU3RhdGU8c3RyaW5nIHwgdW5kZWZpbmVkPihcbiAgICB1bmRlZmluZWRcbiAgKTtcbiAgY29uc3QgYXV0b2NvbXBsZXRlU3RhdGUgPSB1c2VBdG9tVmFsdWUoYXV0b2NvbXBsZXRlU3RhdGVBdG9tKTtcbiAgY29uc3QgZ2xvYmFsQXV0b2NvbXBsZXRlUmVzdWx0cyA9IGF1dG9jb21wbGV0ZVN0YXRlLnJlc3VsdHM7XG4gIGNvbnN0IGlzQXV0b2NvbXBsZXRlRW5hYmxlZCA9IGdsb2JhbEF1dG9jb21wbGV0ZVJlc3VsdHMubGVuZ3RoID4gMDtcblxuICAvLyBSZWZzXG4gIGNvbnN0IGlzU2VsZWN0aW5nQXV0b2NvbXBsZXRlID0gdXNlUmVmKGZhbHNlKTtcblxuICAvLyBDb21wdXRlZFxuICBjb25zdCBzaG91bGRTaG93QXV0b2NvbXBsZXRlID0gaGFzVGV4dCAmJiBpc0ZvY3VzZWQgJiYgaXNBdXRvY29tcGxldGVFbmFibGVkO1xuXG4gIGNvbnN0IGF1dG9jb21wbGV0ZVJlc3VsdHNMaW1pdCA9IDU7XG5cbiAgLy8gQ29uZmlndXJlIEZ1c2UuanMgZm9yIGZ1enp5IHNlYXJjaCB3aXRoIGN1c3RvbSBzY29yaW5nXG4gIGNvbnN0IGZ1c2VPcHRpb25zID0gdXNlTWVtbyhcbiAgICAoKSA9PiAoe1xuICAgICAgaW5jbHVkZVNjb3JlOiB0cnVlLFxuICAgICAgaW5jbHVkZU1hdGNoZXM6IHRydWUsXG4gICAgICAvLyBGdXp6eSBtYXRjaGluZyB0aHJlc2hvbGQgKDAuMCA9IHBlcmZlY3QgbWF0Y2gsIDEuMCA9IG1hdGNoIGFueXRoaW5nKVxuICAgICAgdGhyZXNob2xkOiAwLjMsXG4gICAgICAvLyBMb2NhdGlvbiB3aGVyZSBtYXRjaCBpcyBleHBlY3RlZCAoMCA9IGJlZ2lubmluZylcbiAgICAgIGxvY2F0aW9uOiAwLFxuICAgICAgLy8gRGlzdGFuY2UgZnJvbSBsb2NhdGlvbiB3aGVyZSBtYXRjaCBjYW4gYmUgZm91bmQgLSBzbWFsbGVyIGZvciBwcmVmaXggcHJlZmVyZW5jZVxuICAgICAgZGlzdGFuY2U6IDQsXG4gICAgICAvLyBNaW5pbXVtIGNoYXJhY3RlciBsZW5ndGggYmVmb3JlIGZ1enp5IG1hdGNoaW5nIHN0YXJ0c1xuICAgICAgbWluTWF0Y2hDaGFyTGVuZ3RoOiAxLFxuICAgICAgLy8gS2V5cyB0byBzZWFyY2ggKHdlJ3JlIHNlYXJjaGluZyBzdHJpbmdzIGRpcmVjdGx5LCBzbyBubyBrZXlzIG5lZWRlZClcbiAgICAgIGtleXM6IFtdLFxuICAgICAgLy8gVXNlIGV4dGVuZGVkIHNlYXJjaCBmb3IgZXhhY3QgbWF0Y2hlcyBhbmQgcHJlZml4IG1hdGNoaW5nXG4gICAgICB1c2VFeHRlbmRlZFNlYXJjaDogZmFsc2UsXG4gICAgICAvLyBEb24ndCBpZ25vcmUgbG9jYXRpb24gLSB0aGlzIGhlbHBzIHByaW9yaXRpemUgbWF0Y2hlcyBhdCB0aGUgYmVnaW5uaW5nXG4gICAgICBpZ25vcmVMb2NhdGlvbjogZmFsc2UsXG4gICAgfSksXG4gICAgW11cbiAgKTtcblxuICBjb25zdCBmdXNlID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKCFnbG9iYWxBdXRvY29tcGxldGVSZXN1bHRzLmxlbmd0aCkgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIG5ldyBGdXNlKGdsb2JhbEF1dG9jb21wbGV0ZVJlc3VsdHMsIGZ1c2VPcHRpb25zKTtcbiAgfSwgW2dsb2JhbEF1dG9jb21wbGV0ZVJlc3VsdHMsIGZ1c2VPcHRpb25zXSk7XG5cbiAgLy8gQXV0b2NvbXBsZXRlIGZ1enp5IHNlYXJjaCB1c2luZyBGdXNlLmpzXG4gIGNvbnN0IGF1dG9jb21wbGV0ZVJlc3VsdHMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAoIWlzQXV0b2NvbXBsZXRlRW5hYmxlZCB8fCAhZnVzZSkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGlmICghc2VhcmNoVGV4dC50cmltKCkpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBjb25zdCBmdXNlUmVzdWx0cyA9IGZ1c2Uuc2VhcmNoKHNlYXJjaFRleHQpO1xuXG4gICAgLy8gVXNlIG9ubHkgRnVzZS5qcyBzY29yaW5nIChyZXN1bHRzIGFyZSBhbHJlYWR5IHNvcnRlZCBieSByZWxldmFuY2UpXG4gICAgcmV0dXJuIGZ1c2VSZXN1bHRzXG4gICAgICAuc2xpY2UoMCwgYXV0b2NvbXBsZXRlUmVzdWx0c0xpbWl0KVxuICAgICAgLm1hcCgocmVzdWx0KSA9PiByZXN1bHQuaXRlbSk7XG4gIH0sIFtpc0F1dG9jb21wbGV0ZUVuYWJsZWQsIGZ1c2UsIHNlYXJjaFRleHQsIGF1dG9jb21wbGV0ZVJlc3VsdHNMaW1pdF0pO1xuXG4gIC8vIEhhbmRsZXJzXG4gIGNvbnN0IGhhbmRsZVNlYXJjaElucHV0Q2hhbmdlID0gdXNlQ2FsbGJhY2soXG4gICAgKG5ld1ZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICAgIC8vIElmIHRoZSB1c2VyIGlzIGNoYW5naW5nIHRleHQsIHRoZXkgbXVzdCBiZSBpbnRlcmFjdGluZyB3aXRoIHRoZSBpbnB1dFxuICAgICAgLy8gU28gd2UgY2FuIHNhZmVseSBhc3N1bWUgdGhleSdyZSBmb2N1c2VkXG4gICAgICBpZiAobmV3VmFsdWUgIT09IHNlYXJjaFRleHQpIHtcbiAgICAgICAgc2V0SXNGb2N1c2VkKHRydWUpO1xuICAgICAgfVxuXG4gICAgICBpZiAobmV3VmFsdWUubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIHRyYWNrPy4oe1xuICAgICAgICAgIGV2ZW50TmFtZTogU3BpZmZ5TWV0cmljc0V2ZW50TmFtZS5TZWFyY2hJbnB1dFN0YXJ0ZWQsXG4gICAgICAgICAgZXZlbnRQcm9wczoge1xuICAgICAgICAgICAgc2VhcmNoT3JpZ2luLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgc2V0U2VhcmNoVGV4dChuZXdWYWx1ZSk7XG4gICAgICBzZXRIYXNUZXh0KG5ld1ZhbHVlLnRyaW0oKS5sZW5ndGggPiAwKTtcbiAgICAgIHNldEZvY3VzZWRJbmRleCgtMSk7XG4gICAgICBzZXRGb2N1c2VkT3B0aW9uSWQodW5kZWZpbmVkKTtcbiAgICB9LFxuICAgIFtzZWFyY2hPcmlnaW4sIHNlYXJjaFRleHQsIHRyYWNrXVxuICApO1xuXG4gIGNvbnN0IGhhbmRsZVNlYXJjaElucHV0Rm9jdXMgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2V0SXNGb2N1c2VkKHRydWUpO1xuICB9LCBbXSk7XG5cbiAgY29uc3QgaGFuZGxlU2VhcmNoSW5wdXRCbHVyID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKCFpc1NlbGVjdGluZ0F1dG9jb21wbGV0ZS5jdXJyZW50KSB7XG4gICAgICAgIHNldElzRm9jdXNlZChmYWxzZSk7XG4gICAgICAgIHNldEZvY3VzZWRJbmRleCgtMSk7XG4gICAgICAgIHNldEZvY3VzZWRPcHRpb25JZCh1bmRlZmluZWQpO1xuICAgICAgfVxuICAgIH0sIDE1MCk7XG4gIH0sIFtdKTtcblxuICBjb25zdCBoYW5kbGVTdWJtaXRTZWFyY2ggPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2V0SXNGb2N1c2VkKGZhbHNlKTtcbiAgICBpZiAoc2VhcmNoVGV4dC50cmltKCkgJiYgb25TZWFyY2hTdWJtaXQpIHtcbiAgICAgIHRyYWNrPy4oe1xuICAgICAgICBldmVudE5hbWU6IFNwaWZmeU1ldHJpY3NFdmVudE5hbWUuU2VhcmNoUXVlcnlTdWJtaXR0ZWQsXG4gICAgICAgIGV2ZW50UHJvcHM6IHtcbiAgICAgICAgICBzZWFyY2hPcmlnaW4sXG4gICAgICAgICAgcXVlcnlUZXh0OiBzZWFyY2hUZXh0LnRyaW0oKSxcbiAgICAgICAgfSxcbiAgICAgICAgYWxzb1NlbmRUb0dvb2dsZUFuYWx5dGljczogdHJ1ZSxcbiAgICAgIH0pO1xuICAgICAgb25TZWFyY2hTdWJtaXQoc2VhcmNoVGV4dC50cmltKCkpO1xuICAgIH1cbiAgfSwgW3NlYXJjaFRleHQsIG9uU2VhcmNoU3VibWl0LCBzZWFyY2hPcmlnaW4sIHRyYWNrXSk7XG5cbiAgY29uc3QgaGFuZGxlQXV0b2NvbXBsZXRlU2VsZWN0ID0gdXNlQ2FsbGJhY2soXG4gICAgKHN1Z2dlc3Rpb246IHN0cmluZywgcmFua1Bvc2l0aW9uPzogbnVtYmVyKSA9PiB7XG4gICAgICBpc1NlbGVjdGluZ0F1dG9jb21wbGV0ZS5jdXJyZW50ID0gdHJ1ZTtcbiAgICAgIHNldFNlYXJjaFRleHQoc3VnZ2VzdGlvbik7XG4gICAgICBzZXRIYXNUZXh0KHN1Z2dlc3Rpb24udHJpbSgpLmxlbmd0aCA+IDApO1xuICAgICAgc2V0SXNGb2N1c2VkKGZhbHNlKTtcblxuICAgICAgdHJhY2s/Lih7XG4gICAgICAgIGV2ZW50TmFtZTogU3BpZmZ5TWV0cmljc0V2ZW50TmFtZS5TZWFyY2hJbnB1dFN0YXJ0ZWQsXG4gICAgICAgIGV2ZW50UHJvcHM6IHtcbiAgICAgICAgICBzZWFyY2hPcmlnaW4sXG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgICAgaWYgKG9uU2VhcmNoU3VibWl0KSB7XG4gICAgICAgIG9uU2VhcmNoU3VibWl0KHN1Z2dlc3Rpb24udHJpbSgpKTtcbiAgICAgIH1cblxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGlzU2VsZWN0aW5nQXV0b2NvbXBsZXRlLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgIH0sIDEwMCk7XG4gICAgfSxcbiAgICBbb25TZWFyY2hTdWJtaXQsIHNlYXJjaE9yaWdpbiwgdHJhY2tdXG4gICk7XG5cbiAgY29uc3QgaGFuZGxlS2V5RG93biA9IHVzZUNhbGxiYWNrKFxuICAgIChldmVudDogUmVhY3QuS2V5Ym9hcmRFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4ge1xuICAgICAgaWYgKGV2ZW50LmtleSA9PT0gXCJBcnJvd0Rvd25cIikge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBjb25zdCBuZXdJbmRleCA9IChmb2N1c2VkSW5kZXggKyAxKSAlIGF1dG9jb21wbGV0ZVJlc3VsdHMubGVuZ3RoO1xuICAgICAgICBzZXRGb2N1c2VkSW5kZXgobmV3SW5kZXgpO1xuICAgICAgICBzZXRGb2N1c2VkT3B0aW9uSWQoYG9wdGlvbi0ke25ld0luZGV4fWApO1xuICAgICAgfSBlbHNlIGlmIChldmVudC5rZXkgPT09IFwiQXJyb3dVcFwiKSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGNvbnN0IG5ld0luZGV4ID1cbiAgICAgICAgICAoZm9jdXNlZEluZGV4IC0gMSArIGF1dG9jb21wbGV0ZVJlc3VsdHMubGVuZ3RoKSAlXG4gICAgICAgICAgYXV0b2NvbXBsZXRlUmVzdWx0cy5sZW5ndGg7XG4gICAgICAgIHNldEZvY3VzZWRJbmRleChuZXdJbmRleCk7XG4gICAgICAgIHNldEZvY3VzZWRPcHRpb25JZChgb3B0aW9uLSR7bmV3SW5kZXh9YCk7XG4gICAgICB9IGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gXCJFbnRlclwiKSB7XG4gICAgICAgIGlmIChmb2N1c2VkSW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBoYW5kbGVTdWJtaXRTZWFyY2goKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGNvbnN0IHN1Z2dlc3Rpb25UZXh0ID0gYXV0b2NvbXBsZXRlUmVzdWx0c1tmb2N1c2VkSW5kZXhdO1xuICAgICAgICAgIGhhbmRsZUF1dG9jb21wbGV0ZVNlbGVjdChzdWdnZXN0aW9uVGV4dCwgZm9jdXNlZEluZGV4KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChldmVudC5rZXkgPT09IFwiRXNjYXBlXCIpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgc2V0Rm9jdXNlZEluZGV4KC0xKTtcbiAgICAgICAgc2V0Rm9jdXNlZE9wdGlvbklkKHVuZGVmaW5lZCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBbXG4gICAgICBhdXRvY29tcGxldGVSZXN1bHRzLFxuICAgICAgZm9jdXNlZEluZGV4LFxuICAgICAgaGFuZGxlQXV0b2NvbXBsZXRlU2VsZWN0LFxuICAgICAgaGFuZGxlU3VibWl0U2VhcmNoLFxuICAgIF1cbiAgKTtcblxuICBjb25zdCBzZXRTZWFyY2hUZXh0VXRpbGl0eSA9IHVzZUNhbGxiYWNrKCh0ZXh0OiBzdHJpbmcpID0+IHtcbiAgICBzZXRTZWFyY2hUZXh0KHRleHQpO1xuICAgIHNldEhhc1RleHQodGV4dC50cmltKCkubGVuZ3RoID4gMCk7XG4gIH0sIFtdKTtcblxuICBjb25zdCByZXNldFNlYXJjaCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzZXRTZWFyY2hUZXh0KFwiXCIpO1xuICAgIHNldEhhc1RleHQoZmFsc2UpO1xuICAgIHNldElzRm9jdXNlZChmYWxzZSk7XG4gICAgc2V0Rm9jdXNlZEluZGV4KC0xKTtcbiAgICBzZXRGb2N1c2VkT3B0aW9uSWQodW5kZWZpbmVkKTtcbiAgfSwgW10pO1xuXG4gIHJldHVybiB7XG4gICAgLy8gU3RhdGVcbiAgICBzZWFyY2hUZXh0LFxuICAgIGhhc1RleHQsXG4gICAgaXNGb2N1c2VkLFxuICAgIGZvY3VzZWRJbmRleCxcbiAgICBmb2N1c2VkT3B0aW9uSWQsXG4gICAgYXV0b2NvbXBsZXRlUmVzdWx0cyxcbiAgICBzaG91bGRTaG93QXV0b2NvbXBsZXRlLFxuXG4gICAgLy8gSGFuZGxlcnNcbiAgICBoYW5kbGVTZWFyY2hJbnB1dENoYW5nZSxcbiAgICBoYW5kbGVTZWFyY2hJbnB1dEZvY3VzLFxuICAgIGhhbmRsZVNlYXJjaElucHV0Qmx1cixcbiAgICBoYW5kbGVLZXlEb3duLFxuICAgIGhhbmRsZUF1dG9jb21wbGV0ZVNlbGVjdCxcbiAgICBoYW5kbGVTdWJtaXRTZWFyY2gsXG5cbiAgICAvLyBVdGlsaXRpZXNcbiAgICBzZXRTZWFyY2hUZXh0OiBzZXRTZWFyY2hUZXh0VXRpbGl0eSxcbiAgICByZXNldFNlYXJjaCxcbiAgfTtcbn07IiwiaW1wb3J0IHsgUHJvZHVjdFJldHJpZXZhbFBhcmFtcywgUHJvZHVjdFJldHJpZXZhbFJlc3VsdCB9IGZyb20gXCIuL3R5cGVzXCI7XG5cbi8vIFRoaXMgd2lsbCBiZSBzZXQgYnkgdGhlIFByb2R1Y3RSZXRyaWV2YWxQcm92aWRlciB3aGVuIGl0IGluaXRpYWxpemVzXG5sZXQgcHJvZHVjdFJldHJpZXZhbEZ1bmN0aW9uOlxuICB8ICgocGFyYW1zOiBQcm9kdWN0UmV0cmlldmFsUGFyYW1zKSA9PiBQcm9taXNlPFByb2R1Y3RSZXRyaWV2YWxSZXN1bHQ+KVxuICB8IG51bGwgPSBudWxsO1xuXG5leHBvcnQgY29uc3Qgc2V0UHJvZHVjdFJldHJpZXZhbEZ1bmN0aW9uID0gKFxuICBmbjogKHBhcmFtczogUHJvZHVjdFJldHJpZXZhbFBhcmFtcykgPT4gUHJvbWlzZTxQcm9kdWN0UmV0cmlldmFsUmVzdWx0PlxuKSA9PiB7XG4gIHByb2R1Y3RSZXRyaWV2YWxGdW5jdGlvbiA9IGZuO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFByb2R1Y3RSZXRyaWV2YWxGdW5jdGlvbiA9ICgpID0+IHtcbiAgaWYgKCFwcm9kdWN0UmV0cmlldmFsRnVuY3Rpb24pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBcIlByb2R1Y3QgcmV0cmlldmFsIGZ1bmN0aW9uIG5vdCBpbml0aWFsaXplZC4gTWFrZSBzdXJlIFByb2R1Y3RSZXRyaWV2YWxQcm92aWRlciBpcyBtb3VudGVkLlwiXG4gICAgKTtcbiAgfVxuICByZXR1cm4gcHJvZHVjdFJldHJpZXZhbEZ1bmN0aW9uO1xufTtcblxuZXhwb3J0IGNvbnN0IGNsZWFyUHJvZHVjdFJldHJpZXZhbEZ1bmN0aW9uID0gKCkgPT4ge1xuICBwcm9kdWN0UmV0cmlldmFsRnVuY3Rpb24gPSBudWxsO1xufTsiLCJcbmltcG9ydCB7IGF0b20gfSBmcm9tIFwiam90YWlcIjtcbmltcG9ydCB7IGdldFByb2R1Y3RSZXRyaWV2YWxGdW5jdGlvbiB9IGZyb20gXCIuL3Byb2R1Y3RSZXRyaWV2YWxBZGFwdGVyXCI7XG5pbXBvcnQgeyBQcm9kdWN0UmV0cmlldmFsUGFyYW1zLCBQcm9kdWN0UmV0cmlldmFsUmVzdWx0IH0gZnJvbSBcIi4vdHlwZXNcIjtcblxuaW50ZXJmYWNlIFByb2R1Y3RSZXRyaWV2YWxTdGF0ZSB7XG4gIGRhdGE6IFByb2R1Y3RSZXRyaWV2YWxSZXN1bHQgfCBudWxsO1xuICBsb2FkaW5nOiBib29sZWFuO1xuICBlcnJvcjogc3RyaW5nIHwgbnVsbDtcbiAgbGFzdFByb2R1Y3RJZHM6IHN0cmluZ1tdIHwgbnVsbDtcbn1cblxuZXhwb3J0IGNvbnN0IHByb2R1Y3RSZXRyaWV2YWxBdG9tID0gYXRvbTxQcm9kdWN0UmV0cmlldmFsU3RhdGU+KHtcbiAgZGF0YTogbnVsbCxcbiAgbG9hZGluZzogZmFsc2UsXG4gIGVycm9yOiBudWxsLFxuICBsYXN0UHJvZHVjdElkczogbnVsbCxcbn0pO1xuXG5leHBvcnQgY29uc3QgcGVyZm9ybVByb2R1Y3RSZXRyaWV2YWxBdG9tID0gYXRvbShcbiAgbnVsbCxcbiAgYXN5bmMgKGdldCwgc2V0LCBwYXJhbXM6IFByb2R1Y3RSZXRyaWV2YWxQYXJhbXMpID0+IHtcbiAgICBjb25zdCBjdXJyZW50U3RhdGUgPSBnZXQocHJvZHVjdFJldHJpZXZhbEF0b20pO1xuXG4gICAgaWYgKGN1cnJlbnRTdGF0ZS5sb2FkaW5nKSB7XG4gICAgICByZXR1cm47IC8vIFByZXZlbnQgY29uY3VycmVudCByZXRyaWV2YWxzXG4gICAgfVxuXG4gICAgc2V0KHByb2R1Y3RSZXRyaWV2YWxBdG9tLCB7XG4gICAgICBkYXRhOiBudWxsLFxuICAgICAgbG9hZGluZzogdHJ1ZSxcbiAgICAgIGVycm9yOiBudWxsLFxuICAgICAgbGFzdFByb2R1Y3RJZHM6IHBhcmFtcy5wcm9kdWN0SWRzLFxuICAgIH0pO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJldHJpZXZlUHJvZHVjdHMgPSBnZXRQcm9kdWN0UmV0cmlldmFsRnVuY3Rpb24oKTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJldHJpZXZlUHJvZHVjdHMocGFyYW1zKTtcbiAgICAgIHNldChwcm9kdWN0UmV0cmlldmFsQXRvbSwge1xuICAgICAgICBkYXRhOiByZXN1bHQsXG4gICAgICAgIGxvYWRpbmc6IGZhbHNlLFxuICAgICAgICBlcnJvcjogbnVsbCxcbiAgICAgICAgbGFzdFByb2R1Y3RJZHM6IHBhcmFtcy5wcm9kdWN0SWRzLFxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9XG4gICAgICAgIGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogXCJBbiB1bmtub3duIGVycm9yIG9jY3VycmVkXCI7XG4gICAgICBzZXQocHJvZHVjdFJldHJpZXZhbEF0b20sIHtcbiAgICAgICAgZGF0YTogbnVsbCxcbiAgICAgICAgbG9hZGluZzogZmFsc2UsXG4gICAgICAgIGVycm9yOiBlcnJvck1lc3NhZ2UsXG4gICAgICAgIGxhc3RQcm9kdWN0SWRzOiBwYXJhbXMucHJvZHVjdElkcyxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuKTtcblxuLy8gR2V0IGp1c3QgdGhlIHByb2R1Y3RzIGFycmF5IChhbHJlYWR5IG5vcm1hbGl6ZWQgYnkgc2VydmljZSlcbmV4cG9ydCBjb25zdCByZXRyaWV2ZWRQcm9kdWN0c0F0b20gPSBhdG9tKChnZXQpID0+IHtcbiAgY29uc3QgcmV0cmlldmFsRGF0YSA9IGdldChwcm9kdWN0UmV0cmlldmFsQXRvbSkuZGF0YTtcbiAgcmV0dXJuIHJldHJpZXZhbERhdGE/LnByb2R1Y3RzIHx8IFtdO1xufSk7XG5cbmV4cG9ydCBjb25zdCBwcm9kdWN0UmV0cmlldmFsTG9hZGluZ0F0b20gPSBhdG9tKChnZXQpID0+IHtcbiAgcmV0dXJuIGdldChwcm9kdWN0UmV0cmlldmFsQXRvbSkubG9hZGluZztcbn0pO1xuXG5leHBvcnQgY29uc3QgcHJvZHVjdFJldHJpZXZhbEVycm9yQXRvbSA9IGF0b20oKGdldCkgPT4ge1xuICByZXR1cm4gZ2V0KHByb2R1Y3RSZXRyaWV2YWxBdG9tKS5lcnJvcjtcbn0pOyIsImltcG9ydCB7IHVzZUF0b21WYWx1ZSwgdXNlU2V0QXRvbSB9IGZyb20gXCJqb3RhaVwiO1xuaW1wb3J0IHsgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VGZWF0dXJlRmxhZ1NlcnZpY2UgfSBmcm9tIFwic3JjL2NvbnRleHRzL2ZlYXR1cmVGbGFnU2VydmljZUNvbnRleHQvZmVhdHVyZUZsYWdTZXJ2aWNlQ29udGV4dFwiO1xuaW1wb3J0IHtcbiAgcmV0cmlldmVkUHJvZHVjdHNBdG9tLFxuICBwZXJmb3JtUHJvZHVjdFJldHJpZXZhbEF0b20sXG4gIHByb2R1Y3RSZXRyaWV2YWxBdG9tLFxufSBmcm9tIFwic3JjL2F0b21zL3NlYXJjaC9wcm9kdWN0UmV0cmlldmFsQVBJXCI7XG5pbXBvcnQgeyB1c2VOZXdPcmdDb25maWcgfSBmcm9tIFwiLi4vTmV3T3JnQ29uZmlnXCI7XG5pbXBvcnQgeyBTZWFyY2hSZXNwb25zZVByb2R1Y3RBdHRyaWJ1dGVzIH0gZnJvbSBcInNyYy9hcHBsaWNhdGlvbi9tb2RlbHMvYXBpL3Jlc3BvbnNlXCI7XG5pbXBvcnQgeyBGZWF0dXJlR2F0ZXMgfSBmcm9tIFwic3JjL2FwcGxpY2F0aW9uL21vZGVsc1wiO1xuXG4vKipcbiAqIEEgaG9vayB0byBnZXQgcmVjb21tZW5kZWQgcHJvZHVjdHMuXG4gKiBJdCBjaGVja3MgdGhlIGBJc1JlY29tbWVuZGVkUHJvZHVjdHNFbmFibGVkYCBmZWF0dXJlIGdhdGUgYW5kIHRyaWdnZXJzIGZldGNoaW5nIGlmIG5lZWRlZC5cbiAqIElmIHRoZSBnYXRlIGlzIGVuYWJsZWQsIGl0IHJldHVybnMgdGhlIGxpc3Qgb2YgcmVjb21tZW5kZWQgcHJvZHVjdHMuXG4gKiBJZiB0aGUgZ2F0ZSBpcyBkaXNhYmxlZCwgaXQgcmV0dXJucyBhbiBlbXB0eSBhcnJheS5cbiAqXG4gKiBAcmV0dXJucyBUaGUgbGlzdCBvZiByZWNvbW1lbmRlZCBwcm9kdWN0cyBvciBhbiBlbXB0eSBhcnJheS5cbiAqL1xuZXhwb3J0IGNvbnN0IHVzZVJlY29tbWVuZGVkUHJvZHVjdHMgPVxuICAoKTogU2VhcmNoUmVzcG9uc2VQcm9kdWN0QXR0cmlidXRlc1tcImF0dHJpYnV0ZXNcIl1bXSA9PiB7XG4gICAgY29uc3QgeyBmZWF0dXJlRmxhZ1NlcnZpY2UgfSA9IHVzZUZlYXR1cmVGbGFnU2VydmljZSgpO1xuICAgIGNvbnN0IGlzRW5hYmxlZCA9IGZlYXR1cmVGbGFnU2VydmljZT8uaXNGZWF0dXJlR2F0ZUVuYWJsZWQoXG4gICAgICBGZWF0dXJlR2F0ZXMuSXNSZWNvbW1lbmRlZFByb2R1Y3RzRW5hYmxlZFxuICAgICk7XG4gICAgY29uc3QgcmVjb21tZW5kZWRQcm9kdWN0cyA9IHVzZUF0b21WYWx1ZShyZXRyaWV2ZWRQcm9kdWN0c0F0b20pO1xuICAgIGNvbnN0IHBlcmZvcm1Qcm9kdWN0UmV0cmlldmFsID0gdXNlU2V0QXRvbShwZXJmb3JtUHJvZHVjdFJldHJpZXZhbEF0b20pO1xuICAgIGNvbnN0IHsgbGFzdFByb2R1Y3RJZHMgfSA9IHVzZUF0b21WYWx1ZShwcm9kdWN0UmV0cmlldmFsQXRvbSk7XG4gICAgY29uc3Qgb3JnVUlDb25maWcgPSB1c2VOZXdPcmdDb25maWcoKTtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCByZWNvbW1lbmRlZFByb2R1Y3RJZHMgPSBvcmdVSUNvbmZpZy5mcm9udGVuZENvbmZpZz8udWlDb25maWdzPy5zZWFyY2hDb25maWdcbiAgICAgICAgPyBvcmdVSUNvbmZpZy5mcm9udGVuZENvbmZpZz8udWlDb25maWdzPy5zZWFyY2hDb25maWcucmVjb21tZW5kZWRQcm9kdWN0c1xuICAgICAgICA6IFtdO1xuICAgICAgLy8gRmV0Y2ggb25seSBpZiB0aGUgZmVhdHVyZSBpcyBlbmFibGVkLCB0aGVyZSBhcmUgSURzIHRvIGZldGNoLCBhbmQgd2UgaGF2ZW4ndCBhbHJlYWR5IGZldGNoZWQgdGhlbS5cbiAgICAgIGlmIChcbiAgICAgICAgaXNFbmFibGVkICYmXG4gICAgICAgIHJlY29tbWVuZGVkUHJvZHVjdElkcyAmJlxuICAgICAgICByZWNvbW1lbmRlZFByb2R1Y3RJZHMubGVuZ3RoID4gMCAmJlxuICAgICAgICAhbGFzdFByb2R1Y3RJZHNcbiAgICAgICkge1xuICAgICAgICBwZXJmb3JtUHJvZHVjdFJldHJpZXZhbCh7IHByb2R1Y3RJZHM6IHJlY29tbWVuZGVkUHJvZHVjdElkcyB9KTtcbiAgICAgIH1cbiAgICB9LCBbaXNFbmFibGVkLCBwZXJmb3JtUHJvZHVjdFJldHJpZXZhbCwgbGFzdFByb2R1Y3RJZHMsIG9yZ1VJQ29uZmlnXSk7XG5cbiAgICByZXR1cm4gaXNFbmFibGVkID8gcmVjb21tZW5kZWRQcm9kdWN0cyA6IFtdO1xuICB9OyIsImltcG9ydCB7IHVzZUF0b20sIHVzZUF0b21WYWx1ZSwgdXNlU2V0QXRvbSB9IGZyb20gXCJqb3RhaVwiO1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlUmVmIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7XG4gIGFkZFNlYXJjaEZpbHRlckF0b20sXG4gIGNsZWFyU2VhcmNoRmlsdGVyc0F0b20sXG4gIGNyZWF0ZUZpbHRlck9wdGlvbixcbiAgZmlsdGVyZWRTZWFyY2hQcm9kdWN0c0F0b20sXG4gIHBlcmZvcm1TZWFyY2hBdG9tLFxuICByZW1vdmVTZWFyY2hGaWx0ZXJBdG9tLFxuICBzZWFyY2hBdG9tLFxuICBzZWFyY2hGaWx0ZXJzQXRvbSxcbiAgc2VhcmNoUGFyYW1zQXRvbSxcbiAgc2VhcmNoUHJvZHVjdFNvcnRpbmdBdG9tLFxuICBzZWFyY2hTZWxlY3RlZEZpbHRlcnNBdG9tLFxuICBTZWxlY3RlZEZpbHRlck9wdGlvbixcbn0gZnJvbSBcInNyYy9hdG9tcy9zZWFyY2hcIjtcbmltcG9ydCB7XG4gIGlzRmlsdGVyT3BlbkF0b20sXG59IGZyb20gXCJzcmMvYXRvbXMvZ2xvYmFsU2VhcmNoL2dsb2JhbFNlYXJjaFwiO1xuaW1wb3J0IHsgZm9ybWF0RmlsdGVyRGlzcGxheU5hbWUgfSBmcm9tIFwic3JjL2F0b21zL3NlYXJjaC91dGlsc1wiO1xuaW1wb3J0IHsgUHJvZHVjdFNvcnRpbmcgfSBmcm9tIFwic3JjL2F0b21zL3NlYXJjaC90eXBlc1wiO1xuaW1wb3J0IHtcbiAgU3BpZmZ5TWV0cmljc0V2ZW50TmFtZSxcbiAgdXNlQW1wbGl0dWRlLFxufSBmcm9tIFwic3JjL2NvbnRleHRzL2FtcGxpdHVkZUNvbnRleHQvYW1wbGl0dWRlQ29udGV4dFwiO1xuaW1wb3J0IHsgU3BpZmZ5V2lkZ2V0cyB9IGZyb20gXCJzcmMvYXBwbGljYXRpb24vbW9kZWxzL3NwaWZmeVdpZGdldHNcIjtcbmltcG9ydCB7IFByb2R1Y3RDYXJkQ29uZmlnIH0gZnJvbSBcInNyYy9jb250ZXh0cy90eXBlc1wiO1xuaW1wb3J0IHsgU2VhcmNoUmVzdWx0IH0gZnJvbSBcInNyYy9hcHBsaWNhdGlvbi9tb2RlbHMvYXBpL3NlYXJjaFwiO1xuaW1wb3J0IHsgU2VhcmNoUmVzcG9uc2VQcm9kdWN0IH0gZnJvbSBcIkBzcGlmZnktYWkvY29tbWVyY2UtYXBpLWNsaWVudFwiO1xuaW1wb3J0IHtcbiAgU2VhcmNoRmlsdGVyRGF0dW0sXG4gIFNlbGVjdEZpbHRlckl0ZW0sXG59IGZyb20gXCJzcmMvdHlwZXMvc2VhcmNoLWZpbHRlci10eXBlc1wiO1xuaW1wb3J0IHsgZ2V0U2VhcmNoUmVzdWx0c1N0YXRlLCBTZWFyY2hSZXN1bHRzU3RhdGUgfSBmcm9tIFwiLi4vdXRpbHNcIjtcbmltcG9ydCB7IG9yZ1Nob3J0TmFtZUF0b20gfSBmcm9tIFwic3JjL2F0b21zL2Vudml2ZS9lbnZpdmVDb25maWdcIjtcbmltcG9ydCB7IHVzZVRyYWNrQ29tcG9uZW50VmlzaWJsZUV2ZW50IH0gZnJvbSBcIi4uL1RyYWNrQ29tcG9uZW50VmlzaWJsZUV2ZW50XCI7XG5pbXBvcnQgeyB1c2VTZWFyY2hJbnB1dCB9IGZyb20gXCIuL3VzZVNlYXJjaElucHV0XCI7XG5pbXBvcnQgeyBTZWFyY2hSZXNwb25zZVByb2R1Y3RBdHRyaWJ1dGVzIH0gZnJvbSBcInNyYy9hcHBsaWNhdGlvbi9tb2RlbHNcIjtcbmltcG9ydCB7IHVzZU5ld09yZ0NvbmZpZyB9IGZyb20gXCIuLi9OZXdPcmdDb25maWdcIjtcbmltcG9ydCB7IHVzZVJlY29tbWVuZGVkUHJvZHVjdHMgfSBmcm9tIFwiLi91c2VSZWNvbW1lbmRlZFByb2R1Y3RzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VhcmNoUmVzdWx0c0hvY1Byb3BzIHtcbiAgLy8gRGF0YVxuICBzZWFyY2hEYXRhOiBTZWFyY2hSZXN1bHQgfCBudWxsO1xuICBzZWFyY2hSZXNwb25zZUlkOiBzdHJpbmc7XG4gIG1lcmNoYW50U2hvcnROYW1lOiBzdHJpbmc7XG4gIHByb2R1Y3RDYXJkQ29uZmlnOiBQcm9kdWN0Q2FyZENvbmZpZztcbiAgcHJvZHVjdExpc3Q6IFNlYXJjaFJlc3BvbnNlUHJvZHVjdFtdO1xuICBhdXRvY29tcGxldGVSZXN1bHRzOiBzdHJpbmdbXTtcbiAgc2VhcmNoRmlsdGVyczogU2VhcmNoRmlsdGVyRGF0dW1bXTtcbiAgYXZhaWxhYmxlRHluYW1pY0ZpbHRlcnM6IHsgbmFtZTogc3RyaW5nOyBkaXNwbGF5TmFtZTogc3RyaW5nIH1bXTtcbiAgc2VsZWN0ZWRGaWx0ZXJPcHRpb25zOiBTZWxlY3RlZEZpbHRlck9wdGlvbltdO1xuICByZWNvbW1lbmRlZFByb2R1Y3RzOiBTZWFyY2hSZXNwb25zZVByb2R1Y3RBdHRyaWJ1dGVzWydhdHRyaWJ1dGVzJ11bXTtcbiAgcmVjb21tZW5kZWRQcm9kdWN0c0hlYWRpbmc6IHN0cmluZztcbiAgc2VhcmNoT3ZlcmxheUhlYWRpbmc6IHN0cmluZztcblxuICAvLyBTdGF0ZVxuICBzZWFyY2hUZXh0OiBzdHJpbmc7XG4gIHF1ZXJ5OiBzdHJpbmc7XG4gIHNlYXJjaFJlc3VsdHNTdGF0ZTogU2VhcmNoUmVzdWx0c1N0YXRlO1xuICBpc0xvYWRpbmdTZWFyY2g6IGJvb2xlYW47XG4gIGlzRmlsdGVyT3BlbjogYm9vbGVhbjtcbiAgc2hvdWxkU2hvd0F1dG9jb21wbGV0ZTogYm9vbGVhbjtcbiAgZm9jdXNlZEluZGV4OiBudW1iZXI7XG4gIGZvY3VzZWRPcHRpb25JZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8vIFVJXG4gIGZpbHRlckJ1dHRvblRleHQ6IHN0cmluZztcblxuICAvLyBFdmVudCBIYW5kbGVyc1xuICBvblNlYXJjaElucHV0Q2hhbmdlOiAodmFsdWU6IHN0cmluZykgPT4gdm9pZDtcbiAgb25TdWJtaXRTZWFyY2g6ICgpID0+IHZvaWQ7XG4gIG9uQXV0b2NvbXBsZXRlU2VsZWN0OiAoc3VnZ2VzdGlvbjogc3RyaW5nKSA9PiB2b2lkO1xuICBvbktleURvd246IChldmVudDogUmVhY3QuS2V5Ym9hcmRFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4gdm9pZDtcbiAgb25TZWFyY2hJbnB1dEZvY3VzOiAoKSA9PiB2b2lkO1xuICBvblNlYXJjaElucHV0Qmx1cjogKCkgPT4gdm9pZDtcbiAgb25Ub2dnbGVEeW5hbWljRmlsdGVyOiAoeyBmaWx0ZXIsIGR5bmFtaWNGaWx0ZXJEaXNwbGF5TmFtZSB9OiB7IGZpbHRlcjogc3RyaW5nOyBkeW5hbWljRmlsdGVyRGlzcGxheU5hbWU6IHN0cmluZyB9KSA9PiB2b2lkO1xuICBvblNlbGVjdEZpbHRlckl0ZW06IFNlbGVjdEZpbHRlckl0ZW07XG4gIG9uUmVtb3ZlRmlsdGVyOiAoZmlsdGVyOiBTZWxlY3RlZEZpbHRlck9wdGlvbikgPT4gdm9pZDtcbiAgb25DbGVhckFsbEZpbHRlcnM6ICgpID0+IHZvaWQ7XG4gIHNldElzRmlsdGVyT3BlbjogKGlzRmlsdGVyT3BlbjogYm9vbGVhbikgPT4gdm9pZDtcbiAgcmVzZXRTZWFyY2g6ICgpID0+IHZvaWQ7XG4gIC8vIFJlZnNcbiAgc2VhcmNoUmVzdWx0c1JlZjogUmVhY3QuUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50Pjtcbn1cblxuZXhwb3J0IGNvbnN0IHVzZVNlYXJjaCA9ICh7IGFsbG93UmVkaXJlY3QgPSBmYWxzZSB9OiB7IGFsbG93UmVkaXJlY3Q/OiBib29sZWFuIH0gPSB7fSk6IFNlYXJjaFJlc3VsdHNIb2NQcm9wcyA9PiB7XG4gIC8vIEF0b21zXG4gIGNvbnN0IGNvbmZpZyA9IHVzZU5ld09yZ0NvbmZpZygpO1xuICBjb25zdCBvcmdTaG9ydE5hbWUgPSB1c2VBdG9tVmFsdWUob3JnU2hvcnROYW1lQXRvbSk7XG4gIGNvbnN0IHsgZGF0YTogc2VhcmNoRGF0YSwgbG9hZGluZzogaXNMb2FkaW5nU2VhcmNoIH0gPVxuICAgIHVzZUF0b21WYWx1ZShzZWFyY2hBdG9tKTtcbiAgY29uc3QgcHJvZHVjdExpc3QgPSB1c2VBdG9tVmFsdWUoZmlsdGVyZWRTZWFyY2hQcm9kdWN0c0F0b20pO1xuICBjb25zdCBwZXJmb3JtU2VhcmNoID0gdXNlU2V0QXRvbShwZXJmb3JtU2VhcmNoQXRvbSk7XG4gIGNvbnN0IFt7IHF1ZXJ5IH1dID0gdXNlQXRvbShzZWFyY2hQYXJhbXNBdG9tKTtcbiAgY29uc3QgW2lzRmlsdGVyT3Blbiwgc2V0SXNGaWx0ZXJPcGVuXSA9IHVzZUF0b20oaXNGaWx0ZXJPcGVuQXRvbSk7XG4gIGNvbnN0IFtzZWxlY3RlZEZpbHRlck9wdGlvbnNdID0gdXNlQXRvbShzZWFyY2hTZWxlY3RlZEZpbHRlcnNBdG9tKTtcbiAgY29uc3QgYWRkRmlsdGVyID0gdXNlU2V0QXRvbShhZGRTZWFyY2hGaWx0ZXJBdG9tKTtcbiAgY29uc3QgcmVtb3ZlRmlsdGVyID0gdXNlU2V0QXRvbShyZW1vdmVTZWFyY2hGaWx0ZXJBdG9tKTtcbiAgY29uc3QgW3Byb2R1Y3RTb3J0aW5nLCBzZXRQcm9kdWN0U29ydGluZ10gPSB1c2VBdG9tKHNlYXJjaFByb2R1Y3RTb3J0aW5nQXRvbSk7XG4gIGNvbnN0IGNsZWFyRmlsdGVycyA9IHVzZVNldEF0b20oY2xlYXJTZWFyY2hGaWx0ZXJzQXRvbSk7XG4gIGNvbnN0IHNlYXJjaEZpbHRlcnMgPSB1c2VBdG9tVmFsdWUoc2VhcmNoRmlsdGVyc0F0b20pO1xuICBjb25zdCByZWNvbW1lbmRlZFByb2R1Y3RzID0gdXNlUmVjb21tZW5kZWRQcm9kdWN0cygpO1xuXG4gIC8vIFJlZnNcbiAgY29uc3Qgc2VhcmNoUmVzdWx0c1JlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gIFxuICAvLyBVdGlsaXRpZXNcbiAgY29uc3Qgc2Nyb2xsVG9Ub3AgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY29uc3QgY29udGFpbmVyID0gc2VhcmNoUmVzdWx0c1JlZi5jdXJyZW50O1xuICAgIGlmIChjb250YWluZXIpIHtcbiAgICAgIGNvbnRhaW5lci5zY3JvbGxUbyh7IHRvcDogMCwgYmVoYXZpb3I6ICdzbW9vdGgnIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB3aW5kb3cuc2Nyb2xsVG8oeyB0b3A6IDAsIGJlaGF2aW9yOiAnc21vb3RoJyB9KTtcbiAgICB9XG4gIH0sIFtdKTtcbiAgXG4gIC8vIFNlYXJjaCBJbnB1dCBIb29rXG4gIGNvbnN0IHNlYXJjaElucHV0ID0gdXNlU2VhcmNoSW5wdXQoe1xuICAgIGluaXRpYWxTZWFyY2hUZXh0OiBxdWVyeSB8fCAnJyxcbiAgICBzZWFyY2hPcmlnaW46IFNwaWZmeVdpZGdldHMuU2VhcmNoUmVzdWx0cyxcbiAgICBvblNlYXJjaFN1Ym1pdDogKHNlYXJjaFF1ZXJ5KSA9PiB7XG4gICAgICBwZXJmb3JtU2VhcmNoKHsgcXVlcnk6IHNlYXJjaFF1ZXJ5IH0sIGFsbG93UmVkaXJlY3QpO1xuICAgIH0sXG4gIH0pO1xuICBcbiAgY29uc3Qge1xuICAgIHNlYXJjaFRleHQsXG4gICAgZm9jdXNlZEluZGV4LFxuICAgIGZvY3VzZWRPcHRpb25JZCxcbiAgICBhdXRvY29tcGxldGVSZXN1bHRzLFxuICAgIHNob3VsZFNob3dBdXRvY29tcGxldGUsXG4gICAgaGFuZGxlU2VhcmNoSW5wdXRDaGFuZ2UsXG4gICAgaGFuZGxlU2VhcmNoSW5wdXRGb2N1cyxcbiAgICBoYW5kbGVTZWFyY2hJbnB1dEJsdXIsXG4gICAgaGFuZGxlS2V5RG93bixcbiAgICBoYW5kbGVBdXRvY29tcGxldGVTZWxlY3QsXG4gICAgaGFuZGxlU3VibWl0U2VhcmNoLFxuICAgIHNldFNlYXJjaFRleHQsXG4gICAgcmVzZXRTZWFyY2gsXG4gIH0gPSBzZWFyY2hJbnB1dDtcbiAgY29uc3Qgc2VhcmNoUmVzdWx0c1N0YXRlID0gZ2V0U2VhcmNoUmVzdWx0c1N0YXRlKGlzTG9hZGluZ1NlYXJjaCwgc2VhcmNoRGF0YSk7XG5cbiAgY29uc3QgZHluYW1pY0ZpbHRlcnMgPSBzZWFyY2hEYXRhPy5maWx0ZXJzIHx8IFtdO1xuXG4gIC8vIFByb3ZpZGUgZmFsbGJhY2sgdmFsdWVzIHdoZW4gb3JnVUlDb25maWcgaXMgbm90IHlldCBhdmFpbGFibGVcbiAgY29uc3Qgc2FmZVByb2R1Y3RDYXJkQ29uZmlnID0gY29uZmlnPy5mcm9udGVuZENvbmZpZz8udWlDb25maWdzXG4gICAgPy5wcm9kdWN0Q2FyZENvbmZpZyB8fCB7XG4gICAgdmFyaWFudDogXCJtaW5pbWFsXCIsXG4gICAgaG92ZXJWYXJpYW50OiBcIm5vbmVcIixcbiAgICBsYXlvdXRWYXJpYW50OiBcInNxdWFyZVwiLFxuICB9O1xuICBjb25zdCBzYWZlTWVyY2hhbnRTaG9ydE5hbWUgPSBvcmdTaG9ydE5hbWUgfHwgXCJcIjtcbiAgY29uc3Qgc2VhcmNoQ29uZmlnID0gY29uZmlnPy5mcm9udGVuZENvbmZpZz8udWlDb25maWdzPy5zZWFyY2hDb25maWc7XG4gIGNvbnN0IHNhZmVSZWNvbW1lbmRlZFByb2R1Y3RzSGVhZGluZyA9IHNlYXJjaENvbmZpZz8ucmVjb21tZW5kZWRQcm9kdWN0c0hlYWRpbmcgfHwgJ1N1Z2dlc3RlZCBQcm9kdWN0cydcbiAgY29uc3Qgc2FmZVNlYXJjaE92ZXJsYXlIZWFkaW5nID0gc2VhcmNoQ29uZmlnPy5zZWFyY2hPdmVybGF5SGVhZGluZyA/PyAnV2hhdCBjYW4gSSBoZWxwIHlvdSBmaW5kPydcbiAgY29uc3QgYXZhaWxhYmxlRHluYW1pY0ZpbHRlcnMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gZHluYW1pY0ZpbHRlcnNcbiAgICAgIC5maWx0ZXIoXG4gICAgICAgIChkeW5hbWljRmlsdGVyTmFtZSkgPT5cbiAgICAgICAgICAhc2VsZWN0ZWRGaWx0ZXJPcHRpb25zLnNvbWUoKG9wdGlvbikgPT4gb3B0aW9uLmlkID09PSBgZHluYW1pYzoke2R5bmFtaWNGaWx0ZXJOYW1lfWApLFxuICAgICAgKVxuICAgICAgLm1hcCgoZHluYW1pY0ZpbHRlck5hbWUpID0+ICh7XG4gICAgICAgIG5hbWU6IGR5bmFtaWNGaWx0ZXJOYW1lLFxuICAgICAgICBkaXNwbGF5TmFtZTogZm9ybWF0RmlsdGVyRGlzcGxheU5hbWUoZHluYW1pY0ZpbHRlck5hbWUpLFxuICAgICAgfSkpO1xuICB9LCBbZHluYW1pY0ZpbHRlcnMsIHNlbGVjdGVkRmlsdGVyT3B0aW9uc10pO1xuXG4gIGNvbnN0IGZpbHRlcnMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCBzb3J0T3B0aW9ucyA9IFtcbiAgICAgIHtcbiAgICAgICAgZmlsdGVySXRlbUlkOiBTdHJpbmcoUHJvZHVjdFNvcnRpbmcuRkVBVFVSRUQpLFxuICAgICAgICBkaXNwbGF5TmFtZTogJ1JlbGV2YW5jZScsXG4gICAgICAgIHByb2R1Y3RDb3VudDogMCxcbiAgICAgICAgaXNTZWxlY3RlZDogcHJvZHVjdFNvcnRpbmcgPT09IFByb2R1Y3RTb3J0aW5nLkZFQVRVUkVELFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgZmlsdGVySXRlbUlkOiBTdHJpbmcoUHJvZHVjdFNvcnRpbmcuUFJJQ0VfQVNDKSxcbiAgICAgICAgZGlzcGxheU5hbWU6ICdQcmljZTogTG93IHRvIEhpZ2gnLFxuICAgICAgICBwcm9kdWN0Q291bnQ6IDAsXG4gICAgICAgIGlzU2VsZWN0ZWQ6IHByb2R1Y3RTb3J0aW5nID09PSBQcm9kdWN0U29ydGluZy5QUklDRV9BU0MsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBmaWx0ZXJJdGVtSWQ6IFN0cmluZyhQcm9kdWN0U29ydGluZy5QUklDRV9ERVNDKSxcbiAgICAgICAgZGlzcGxheU5hbWU6ICdQcmljZTogSGlnaCB0byBMb3cnLFxuICAgICAgICBwcm9kdWN0Q291bnQ6IDAsXG4gICAgICAgIGlzU2VsZWN0ZWQ6IHByb2R1Y3RTb3J0aW5nID09PSBQcm9kdWN0U29ydGluZy5QUklDRV9ERVNDLFxuICAgICAgfSxcbiAgICBdO1xuXG4gICAgcmV0dXJuIFt7IGZpbHRlcklkOiAnc29ydCcsIGRpc3BsYXlOYW1lOiAnU09SVCcsIGl0ZW1zOiBzb3J0T3B0aW9ucyB9LCAuLi5zZWFyY2hGaWx0ZXJzXSBhcyBTZWFyY2hGaWx0ZXJEYXR1bVtdO1xuICB9LCBbcHJvZHVjdFNvcnRpbmcsIHNlYXJjaEZpbHRlcnNdKTtcblxuICBjb25zdCBmaWx0ZXJCdXR0b25UZXh0ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3Qgc2VsZWN0ZWRDb3VudCA9IGZpbHRlcnMucmVkdWNlKChhY2M6IG51bWJlciwgZmlsdGVyKSA9PiB7XG4gICAgICBpZiAoZmlsdGVyLmZpbHRlcklkID09PSAnc29ydCcpIHtcbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH1cbiAgICAgIHJldHVybiBhY2MgKyBmaWx0ZXIuaXRlbXMuZmlsdGVyKChpdGVtKSA9PiBpdGVtLmlzU2VsZWN0ZWQpLmxlbmd0aDtcbiAgICB9LCAwKTtcbiAgICBpZiAoc2VsZWN0ZWRDb3VudCA9PT0gMCkge1xuICAgICAgcmV0dXJuICdGaWx0ZXIgJiBTb3J0JztcbiAgICB9XG4gICAgcmV0dXJuIGBGaWx0ZXIgJiBTb3J0ICgke3NlbGVjdGVkQ291bnR9KWA7XG4gIH0sIFtmaWx0ZXJzXSk7XG5cbiAgLy8gQ2FsbGJhY2tzXG4gIGNvbnN0IHsgdHJhY2tFdmVudCB9ID0gdXNlQW1wbGl0dWRlKCk7XG5cblxuICBjb25zdCBoYW5kbGVUb2dnbGVEeW5hbWljRmlsdGVyID0gdXNlQ2FsbGJhY2soXG4gICAgKHsgZmlsdGVyLCBkeW5hbWljRmlsdGVyRGlzcGxheU5hbWUgfTogeyBmaWx0ZXI6IHN0cmluZzsgZHluYW1pY0ZpbHRlckRpc3BsYXlOYW1lOiBzdHJpbmcgfSkgPT4ge1xuICAgICAgdHJhY2tFdmVudCh7XG4gICAgICAgIGV2ZW50TmFtZTogU3BpZmZ5TWV0cmljc0V2ZW50TmFtZS5TZWFyY2hGaWx0ZXJDbGlja2VkLFxuICAgICAgICBldmVudFByb3BzOiB7XG4gICAgICAgICAgZmlsdGVyVHlwZTogJ0R5bmFtaWMnLFxuICAgICAgICAgIGZpbHRlclZhbHVlOiBmaWx0ZXIsXG4gICAgICAgICAgcXVlcnlUZXh0OiBzZWFyY2hUZXh0LFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgICBhZGRGaWx0ZXIoY3JlYXRlRmlsdGVyT3B0aW9uKCdkeW5hbWljJywgZmlsdGVyLCBkeW5hbWljRmlsdGVyRGlzcGxheU5hbWUpKTtcbiAgICAgIHNjcm9sbFRvVG9wKCk7XG4gICAgfSxcbiAgICBbYWRkRmlsdGVyLCBzZWFyY2hUZXh0LCBzY3JvbGxUb1RvcF0sXG4gICk7XG5cbiAgY29uc3QgaGFuZGxlUmVtb3ZlRmlsdGVyID0gdXNlQ2FsbGJhY2soXG4gICAgKGZpbHRlcjogU2VsZWN0ZWRGaWx0ZXJPcHRpb24pID0+IHtcbiAgICAgIHJlbW92ZUZpbHRlcihmaWx0ZXIuaWQpO1xuICAgICAgc2Nyb2xsVG9Ub3AoKTtcbiAgICB9LFxuICAgIFtyZW1vdmVGaWx0ZXIsIHNjcm9sbFRvVG9wXSxcbiAgKTtcblxuXG4gIGNvbnN0IGhhbmRsZVNlbGVjdEZpbHRlckl0ZW06IFNlbGVjdEZpbHRlckl0ZW0gPSB1c2VDYWxsYmFjayhcbiAgICAoe1xuICAgICAgZmlsdGVySWQsXG4gICAgICBmaWx0ZXJJdGVtSWQsXG4gICAgICBpc1NlbGVjdGVkLFxuICAgICAgZGlzcGxheU5hbWUsXG4gICAgfToge1xuICAgICAgZmlsdGVySWQ6IHN0cmluZztcbiAgICAgIGZpbHRlckl0ZW1JZDogc3RyaW5nO1xuICAgICAgaXNTZWxlY3RlZDogYm9vbGVhbjtcbiAgICAgIGRpc3BsYXlOYW1lOiBzdHJpbmc7XG4gICAgfSkgPT4ge1xuICAgICAgaWYgKGZpbHRlcklkID09PSAnc29ydCcpIHtcbiAgICAgICAgY29uc3QgbmV3U29ydCA9IGZpbHRlckl0ZW1JZCBhcyBQcm9kdWN0U29ydGluZztcbiAgICAgICAgdHJhY2tFdmVudCh7XG4gICAgICAgICAgZXZlbnROYW1lOiBTcGlmZnlNZXRyaWNzRXZlbnROYW1lLlNlYXJjaFNvcnRDbGlja2VkLFxuICAgICAgICAgIGV2ZW50UHJvcHM6IHtcbiAgICAgICAgICAgIHNvcnRUeXBlOiBuZXdTb3J0LFxuICAgICAgICAgICAgcXVlcnlUZXh0OiBzZWFyY2hUZXh0LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgICBzZXRQcm9kdWN0U29ydGluZyhuZXdTb3J0KTtcbiAgICAgICAgc2Nyb2xsVG9Ub3AoKTtcbiAgICAgIH0gZWxzZSBpZiAoIWlzU2VsZWN0ZWQpIHtcbiAgICAgICAgcmVtb3ZlRmlsdGVyKGAke2ZpbHRlcklkfToke2ZpbHRlckl0ZW1JZH1gKTtcbiAgICAgICAgc2Nyb2xsVG9Ub3AoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRyYWNrRXZlbnQoe1xuICAgICAgICAgIGV2ZW50TmFtZTogU3BpZmZ5TWV0cmljc0V2ZW50TmFtZS5TZWFyY2hGaWx0ZXJDbGlja2VkLFxuICAgICAgICAgIGV2ZW50UHJvcHM6IHtcbiAgICAgICAgICAgIGZpbHRlclR5cGU6ICdTdGF0aWMnLFxuICAgICAgICAgICAgZmlsdGVyQ2F0ZWdvcnk6IGZpbHRlcklkLFxuICAgICAgICAgICAgZmlsdGVyVmFsdWU6IGZpbHRlckl0ZW1JZCxcbiAgICAgICAgICAgIHF1ZXJ5VGV4dDogc2VhcmNoVGV4dCxcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgICAgYWRkRmlsdGVyKGNyZWF0ZUZpbHRlck9wdGlvbihmaWx0ZXJJZCwgZmlsdGVySXRlbUlkLCBkaXNwbGF5TmFtZSkpO1xuICAgICAgICBzY3JvbGxUb1RvcCgpO1xuICAgICAgfVxuICAgIH0sXG4gICAgW2FkZEZpbHRlciwgcmVtb3ZlRmlsdGVyLCBzZXRQcm9kdWN0U29ydGluZywgc2VhcmNoVGV4dCwgc2Nyb2xsVG9Ub3BdLFxuICApO1xuXG5cbiAgY29uc3QgaGFuZGxlQ2xlYXJBbGxGaWx0ZXJzID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHNldFByb2R1Y3RTb3J0aW5nKFByb2R1Y3RTb3J0aW5nLkZFQVRVUkVEKTtcbiAgICBjbGVhckZpbHRlcnMoKTtcbiAgICBzY3JvbGxUb1RvcCgpO1xuICB9LCBbc2V0UHJvZHVjdFNvcnRpbmcsIGNsZWFyRmlsdGVycywgc2Nyb2xsVG9Ub3BdKTtcblxuICAvLyBTaWRlIEVmZmVjdHNcbiAgdXNlVHJhY2tDb21wb25lbnRWaXNpYmxlRXZlbnQoXG4gICAgU3BpZmZ5V2lkZ2V0cy5TZWFyY2hSZXN1bHRzLFxuICAgIHNlYXJjaFJlc3VsdHNSZWYsXG4gICAge30sXG4gICAgU3BpZmZ5TWV0cmljc0V2ZW50TmFtZS5TZWFyY2hDb21wb25lbnRWaXNpYmxlLFxuICApO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHNlYXJjaFJlc3VsdHNTdGF0ZSA9PT0gU2VhcmNoUmVzdWx0c1N0YXRlLlJlc3VsdHMgfHwgc2VhcmNoUmVzdWx0c1N0YXRlID09PSBTZWFyY2hSZXN1bHRzU3RhdGUuTm9SZXN1bHRzKSB7XG4gICAgICB0cmFja0V2ZW50KHtcbiAgICAgICAgZXZlbnROYW1lOiBTcGlmZnlNZXRyaWNzRXZlbnROYW1lLlNlYXJjaFJlc3VsdHNWaWV3ZWQsXG4gICAgICAgIGV2ZW50UHJvcHM6IHtcbiAgICAgICAgICBxdWVyeVRleHQ6IHNlYXJjaFRleHQsXG4gICAgICAgICAgcmVzdWx0c0NvdW50OiBwcm9kdWN0TGlzdC5sZW5ndGgsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG4gIH0sIFtwcm9kdWN0TGlzdC5sZW5ndGgsIHNlYXJjaFJlc3VsdHNTdGF0ZV0pO1xuXG4gIC8vIFRoaXMgaXMgdGhlIHNpbmdsZSBzb3VyY2Ugb2YgdHJ1dGggZm9yIHRoZSBzZWFyY2ggdGV4dCB0cmlnZ2VyaW5nIGEgc2VhcmNoXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHF1ZXJ5ICYmIHF1ZXJ5ICE9PSBzZWFyY2hUZXh0KSB7XG4gICAgICBjb25zdCBlc3EgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpLmdldCgnZXNxJyk7XG4gICAgICBjb25zb2xlLmxvZyhcIlNFQVJDSF9ERUJVRyAtIGVzcVwiLCBlc3EsIHF1ZXJ5LCBzZWFyY2hUZXh0LCB3aW5kb3cubG9jYXRpb24uc2VhcmNoKTtcbiAgICAgIHNldFNlYXJjaFRleHQocXVlcnkpO1xuICAgICAgcGVyZm9ybVNlYXJjaCh7IHF1ZXJ5OiBlc3EgPz8gcXVlcnkgfSk7XG4gICAgfVxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gIH0sIFtwZXJmb3JtU2VhcmNoLCBxdWVyeSwgc2V0U2VhcmNoVGV4dF0pO1xuXG4gIHJldHVybiB7XG4gICAgc2VhcmNoRGF0YSxcbiAgICBzZWFyY2hSZXNwb25zZUlkOiBzZWFyY2hEYXRhPy5zZWFyY2hSZXNwb25zZUlkID8/ICcnLFxuICAgIG1lcmNoYW50U2hvcnROYW1lOiBzYWZlTWVyY2hhbnRTaG9ydE5hbWUsXG4gICAgcmVjb21tZW5kZWRQcm9kdWN0c0hlYWRpbmc6IHNhZmVSZWNvbW1lbmRlZFByb2R1Y3RzSGVhZGluZyxcbiAgICBzZWFyY2hPdmVybGF5SGVhZGluZzogc2FmZVNlYXJjaE92ZXJsYXlIZWFkaW5nLFxuICAgIHByb2R1Y3RDYXJkQ29uZmlnOiBzYWZlUHJvZHVjdENhcmRDb25maWcsXG4gICAgcHJvZHVjdExpc3QsXG4gICAgcmVjb21tZW5kZWRQcm9kdWN0cyxcbiAgICBhdXRvY29tcGxldGVSZXN1bHRzLFxuICAgIHNlYXJjaEZpbHRlcnM6IGZpbHRlcnMsXG4gICAgYXZhaWxhYmxlRHluYW1pY0ZpbHRlcnMsXG4gICAgc2VsZWN0ZWRGaWx0ZXJPcHRpb25zLFxuICAgIHNlYXJjaFRleHQsXG4gICAgcXVlcnk6IHF1ZXJ5IHx8ICcnLFxuICAgIHNlYXJjaFJlc3VsdHNTdGF0ZSxcbiAgICBpc0xvYWRpbmdTZWFyY2gsXG4gICAgaXNGaWx0ZXJPcGVuLFxuICAgIHNob3VsZFNob3dBdXRvY29tcGxldGUsXG4gICAgZm9jdXNlZEluZGV4LFxuICAgIGZvY3VzZWRPcHRpb25JZCxcbiAgICBmaWx0ZXJCdXR0b25UZXh0LFxuICAgIG9uU2VhcmNoSW5wdXRDaGFuZ2U6IGhhbmRsZVNlYXJjaElucHV0Q2hhbmdlLFxuICAgIG9uU3VibWl0U2VhcmNoOiBoYW5kbGVTdWJtaXRTZWFyY2gsXG4gICAgb25BdXRvY29tcGxldGVTZWxlY3Q6IGhhbmRsZUF1dG9jb21wbGV0ZVNlbGVjdCxcbiAgICBvbktleURvd246IGhhbmRsZUtleURvd24sXG4gICAgb25TZWFyY2hJbnB1dEZvY3VzOiBoYW5kbGVTZWFyY2hJbnB1dEZvY3VzLFxuICAgIG9uU2VhcmNoSW5wdXRCbHVyOiBoYW5kbGVTZWFyY2hJbnB1dEJsdXIsXG4gICAgb25Ub2dnbGVEeW5hbWljRmlsdGVyOiBoYW5kbGVUb2dnbGVEeW5hbWljRmlsdGVyLFxuICAgIG9uU2VsZWN0RmlsdGVySXRlbTogaGFuZGxlU2VsZWN0RmlsdGVySXRlbSxcbiAgICBvblJlbW92ZUZpbHRlcjogaGFuZGxlUmVtb3ZlRmlsdGVyLFxuICAgIG9uQ2xlYXJBbGxGaWx0ZXJzOiBoYW5kbGVDbGVhckFsbEZpbHRlcnMsXG4gICAgc2V0SXNGaWx0ZXJPcGVuLFxuICAgIHJlc2V0U2VhcmNoLFxuICAgIHNlYXJjaFJlc3VsdHNSZWYsXG4gIH07XG59OyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFzQ0EsTUFBYSxrQkFBa0IsRUFDN0Isb0JBQW9CLElBQ3BCLGNBQ0EscUJBQytDO0NBQy9DLE1BQU0sZ0NBQXFCQSxxQ0FBd0I7Q0FHbkQsTUFBTSxDQUFDLFlBQVkscUNBQTBCLGtCQUFrQjtDQUMvRCxNQUFNLENBQUMsU0FBUyxrQ0FBdUIsa0JBQWtCLE1BQU0sQ0FBQyxTQUFTLEVBQUU7Q0FDM0UsTUFBTSxDQUFDLFdBQVcsb0NBQXlCLE1BQU07Q0FDakQsTUFBTSxDQUFDLGNBQWMsdUNBQTRCLEdBQUc7Q0FDcEQsTUFBTSxDQUFDLGlCQUFpQiwwQ0FDdEIsT0FDRDtDQUVELE1BQU0sb0RBRGlDQywyQ0FBc0IsQ0FDVDtDQUNwRCxNQUFNLHdCQUF3QiwwQkFBMEIsU0FBUztDQUdqRSxNQUFNLDRDQUFpQyxNQUFNO0NBRzdDLE1BQU0seUJBQXlCLFdBQVcsYUFBYTtDQUV2RCxNQUFNLDJCQUEyQjtDQUdqQyxNQUFNLHdDQUNHO0VBQ0wsY0FBYztFQUNkLGdCQUFnQjtFQUVoQixXQUFXO0VBRVgsVUFBVTtFQUVWLFVBQVU7RUFFVixvQkFBb0I7RUFFcEIsTUFBTSxFQUFFO0VBRVIsbUJBQW1CO0VBRW5CLGdCQUFnQjtFQUNqQixHQUNELEVBQUUsQ0FDSDtDQUVELE1BQU0sZ0NBQXFCO0FBQ3pCLE1BQUksQ0FBQywwQkFBMEIsT0FBUSxRQUFPO0FBQzlDLFNBQU8sSUFBSUMsZ0JBQUssMkJBQTJCLFlBQVk7SUFDdEQsQ0FBQywyQkFBMkIsWUFBWSxDQUFDO0NBRzVDLE1BQU0sK0NBQW9DO0FBQ3hDLE1BQUksQ0FBQyx5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
|
|
504
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY2pzIiwibmFtZXMiOlsiYW1wbGl0dWRlVHJhY2tFdmVudEF0b20iLCJhdXRvY29tcGxldGVTdGF0ZUF0b20iLCJGdXNlIiwiU3BpZmZ5TWV0cmljc0V2ZW50TmFtZSIsInByb2R1Y3RSZXRyaWV2YWxGdW5jdGlvbjpcbiAgfCAoKHBhcmFtczogUHJvZHVjdFJldHJpZXZhbFBhcmFtcykgPT4gUHJvbWlzZTxQcm9kdWN0UmV0cmlldmFsUmVzdWx0PilcbiAgfCBudWxsIiwiZXJyb3I6IHVua25vd24iLCJ1c2VGZWF0dXJlRmxhZ1NlcnZpY2UiLCJGZWF0dXJlR2F0ZXMiLCJ1c2VOZXdPcmdDb25maWciLCJ1c2VOZXdPcmdDb25maWciLCJvcmdTaG9ydE5hbWVBdG9tIiwic2VhcmNoQXRvbSIsImZpbHRlcmVkU2VhcmNoUHJvZHVjdHNBdG9tIiwicGVyZm9ybVNlYXJjaEF0b20iLCJzZWFyY2hQYXJhbXNBdG9tIiwiaXNGaWx0ZXJPcGVuQXRvbSIsInNlYXJjaFNlbGVjdGVkRmlsdGVyc0F0b20iLCJhZGRTZWFyY2hGaWx0ZXJBdG9tIiwicmVtb3ZlU2VhcmNoRmlsdGVyQXRvbSIsInNlYXJjaFByb2R1Y3RTb3J0aW5nQXRvbSIsImNsZWFyU2VhcmNoRmlsdGVyc0F0b20iLCJzZWFyY2hGaWx0ZXJzQXRvbSIsIlNwaWZmeVdpZGdldHMiLCJnZXRTZWFyY2hSZXN1bHRzU3RhdGUiLCJmb3JtYXRGaWx0ZXJEaXNwbGF5TmFtZSIsIlByb2R1Y3RTb3J0aW5nIiwidXNlQW1wbGl0dWRlIiwiU3BpZmZ5TWV0cmljc0V2ZW50TmFtZSIsImNyZWF0ZUZpbHRlck9wdGlvbiIsImhhbmRsZVNlbGVjdEZpbHRlckl0ZW06IFNlbGVjdEZpbHRlckl0ZW0iLCJTZWFyY2hSZXN1bHRzU3RhdGUiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaG9va3MvU2VhcmNoL3VzZVNlYXJjaElucHV0LnRzIiwiLi4vLi4vLi4vc3JjL2F0b21zL3NlYXJjaC9wcm9kdWN0UmV0cmlldmFsQWRhcHRlci50cyIsIi4uLy4uLy4uL3NyYy9hdG9tcy9zZWFyY2gvcHJvZHVjdFJldHJpZXZhbEFQSS50cyIsIi4uLy4uLy4uL3NyYy9ob29rcy9TZWFyY2gvdXNlUmVjb21tZW5kZWRQcm9kdWN0cy50cyIsIi4uLy4uLy4uL3NyYy9ob29rcy9TZWFyY2gvdXNlU2VhcmNoLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VTdGF0ZSwgdXNlQ2FsbGJhY2ssIHVzZVJlZiwgdXNlTWVtbyB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlQXRvbVZhbHVlIH0gZnJvbSBcImpvdGFpXCI7XG5pbXBvcnQgRnVzZSBmcm9tIFwiZnVzZS5qc1wiO1xuXG5pbXBvcnQgeyBhdXRvY29tcGxldGVTdGF0ZUF0b20gfSBmcm9tIFwic3JjL2F0b21zL2dsb2JhbFNlYXJjaFwiO1xuaW1wb3J0IHsgYW1wbGl0dWRlVHJhY2tFdmVudEF0b20gfSBmcm9tIFwic3JjL2F0b21zL2FtcGxpdHVkZS9hbXBsaXR1ZGVUcmFja0V2ZW50QXRvbVwiO1xuaW1wb3J0IHsgU3BpZmZ5TWV0cmljc0V2ZW50TmFtZSB9IGZyb20gXCJzcmMvY29udGV4dHMvYW1wbGl0dWRlQ29udGV4dFwiO1xuaW1wb3J0IHsgU3BpZmZ5V2lkZ2V0cyB9IGZyb20gXCJzcmMvYXBwbGljYXRpb24vbW9kZWxzL3NwaWZmeVdpZGdldHNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBVc2VTZWFyY2hJbnB1dFByb3BzIHtcbiAgaW5pdGlhbFNlYXJjaFRleHQ/OiBzdHJpbmc7XG4gIHNlYXJjaE9yaWdpbjogU3BpZmZ5V2lkZ2V0cztcbiAgb25TZWFyY2hTdWJtaXQ/OiAocXVlcnk6IHN0cmluZykgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVc2VTZWFyY2hJbnB1dFJldHVybiB7XG4gIC8vIFN0YXRlXG4gIHNlYXJjaFRleHQ6IHN0cmluZztcbiAgaGFzVGV4dDogYm9vbGVhbjtcbiAgaXNGb2N1c2VkOiBib29sZWFuO1xuICBmb2N1c2VkSW5kZXg6IG51bWJlcjtcbiAgZm9jdXNlZE9wdGlvbklkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGF1dG9jb21wbGV0ZVJlc3VsdHM6IHN0cmluZ1tdO1xuICBzaG91bGRTaG93QXV0b2NvbXBsZXRlOiBib29sZWFuO1xuICBcbiAgLy8gSGFuZGxlcnNcbiAgaGFuZGxlU2VhcmNoSW5wdXRDaGFuZ2U6ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkO1xuICBoYW5kbGVTZWFyY2hJbnB1dEZvY3VzOiAoKSA9PiB2b2lkO1xuICBoYW5kbGVTZWFyY2hJbnB1dEJsdXI6ICgpID0+IHZvaWQ7XG4gIGhhbmRsZUtleURvd246IChldmVudDogUmVhY3QuS2V5Ym9hcmRFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4gdm9pZDtcbiAgaGFuZGxlQXV0b2NvbXBsZXRlU2VsZWN0OiAoc3VnZ2VzdGlvbjogc3RyaW5nLCByYW5rUG9zaXRpb24/OiBudW1iZXIpID0+IHZvaWQ7XG4gIGhhbmRsZVN1Ym1pdFNlYXJjaDogKCkgPT4gdm9pZDtcbiAgXG4gIC8vIFV0aWxpdGllc1xuICBzZXRTZWFyY2hUZXh0OiAodGV4dDogc3RyaW5nKSA9PiB2b2lkO1xuICByZXNldFNlYXJjaDogKCkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGNvbnN0IHVzZVNlYXJjaElucHV0ID0gKHtcbiAgaW5pdGlhbFNlYXJjaFRleHQgPSBcIlwiLFxuICBzZWFyY2hPcmlnaW4sXG4gIG9uU2VhcmNoU3VibWl0LFxufTogVXNlU2VhcmNoSW5wdXRQcm9wcyk6IFVzZVNlYXJjaElucHV0UmV0dXJuID0+IHtcbiAgY29uc29sZS5sb2coJ3VzZVNlYXJjaElucHV0JywgaW5pdGlhbFNlYXJjaFRleHQsIHNlYXJjaE9yaWdpbiwgb25TZWFyY2hTdWJtaXQpO1xuICBjb25zdCB0cmFjayA9IHVzZUF0b21WYWx1ZShhbXBsaXR1ZGVUcmFja0V2ZW50QXRvbSk7XG5cbiAgLy8gU3RhdGVcbiAgY29uc3QgW3NlYXJjaFRleHQsIHNldFNlYXJjaFRleHRdID0gdXNlU3RhdGUoaW5pdGlhbFNlYXJjaFRleHQpO1xuICBjb25zdCBbaGFzVGV4dCwgc2V0SGFzVGV4dF0gPSB1c2VTdGF0ZShpbml0aWFsU2VhcmNoVGV4dC50cmltKCkubGVuZ3RoID4gMCk7XG4gIGNvbnN0IFtpc0ZvY3VzZWQsIHNldElzRm9jdXNlZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtmb2N1c2VkSW5kZXgsIHNldEZvY3VzZWRJbmRleF0gPSB1c2VTdGF0ZSgtMSk7XG4gIGNvbnN0IFtmb2N1c2VkT3B0aW9uSWQsIHNldEZvY3VzZWRPcHRpb25JZF0gPSB1c2VTdGF0ZTxzdHJpbmcgfCB1bmRlZmluZWQ+KFxuICAgIHVuZGVmaW5lZFxuICApO1xuICBjb25zdCBhdXRvY29tcGxldGVTdGF0ZSA9IHVzZUF0b21WYWx1ZShhdXRvY29tcGxldGVTdGF0ZUF0b20pO1xuICBjb25zdCBnbG9iYWxBdXRvY29tcGxldGVSZXN1bHRzID0gYXV0b2NvbXBsZXRlU3RhdGUucmVzdWx0cztcbiAgY29uc3QgaXNBdXRvY29tcGxldGVFbmFibGVkID0gZ2xvYmFsQXV0b2NvbXBsZXRlUmVzdWx0cy5sZW5ndGggPiAwO1xuXG4gIC8vIFJlZnNcbiAgY29uc3QgaXNTZWxlY3RpbmdBdXRvY29tcGxldGUgPSB1c2VSZWYoZmFsc2UpO1xuXG4gIC8vIENvbXB1dGVkXG4gIGNvbnN0IHNob3VsZFNob3dBdXRvY29tcGxldGUgPSBoYXNUZXh0ICYmIGlzRm9jdXNlZCAmJiBpc0F1dG9jb21wbGV0ZUVuYWJsZWQ7XG5cbiAgY29uc3QgYXV0b2NvbXBsZXRlUmVzdWx0c0xpbWl0ID0gNTtcblxuICAvLyBDb25maWd1cmUgRnVzZS5qcyBmb3IgZnV6enkgc2VhcmNoIHdpdGggY3VzdG9tIHNjb3JpbmdcbiAgY29uc3QgZnVzZU9wdGlvbnMgPSB1c2VNZW1vKFxuICAgICgpID0+ICh7XG4gICAgICBpbmNsdWRlU2NvcmU6IHRydWUsXG4gICAgICBpbmNsdWRlTWF0Y2hlczogdHJ1ZSxcbiAgICAgIC8vIEZ1enp5IG1hdGNoaW5nIHRocmVzaG9sZCAoMC4wID0gcGVyZmVjdCBtYXRjaCwgMS4wID0gbWF0Y2ggYW55dGhpbmcpXG4gICAgICB0aHJlc2hvbGQ6IDAuMyxcbiAgICAgIC8vIExvY2F0aW9uIHdoZXJlIG1hdGNoIGlzIGV4cGVjdGVkICgwID0gYmVnaW5uaW5nKVxuICAgICAgbG9jYXRpb246IDAsXG4gICAgICAvLyBEaXN0YW5jZSBmcm9tIGxvY2F0aW9uIHdoZXJlIG1hdGNoIGNhbiBiZSBmb3VuZCAtIHNtYWxsZXIgZm9yIHByZWZpeCBwcmVmZXJlbmNlXG4gICAgICBkaXN0YW5jZTogNCxcbiAgICAgIC8vIE1pbmltdW0gY2hhcmFjdGVyIGxlbmd0aCBiZWZvcmUgZnV6enkgbWF0Y2hpbmcgc3RhcnRzXG4gICAgICBtaW5NYXRjaENoYXJMZW5ndGg6IDEsXG4gICAgICAvLyBLZXlzIHRvIHNlYXJjaCAod2UncmUgc2VhcmNoaW5nIHN0cmluZ3MgZGlyZWN0bHksIHNvIG5vIGtleXMgbmVlZGVkKVxuICAgICAga2V5czogW10sXG4gICAgICAvLyBVc2UgZXh0ZW5kZWQgc2VhcmNoIGZvciBleGFjdCBtYXRjaGVzIGFuZCBwcmVmaXggbWF0Y2hpbmdcbiAgICAgIHVzZUV4dGVuZGVkU2VhcmNoOiBmYWxzZSxcbiAgICAgIC8vIERvbid0IGlnbm9yZSBsb2NhdGlvbiAtIHRoaXMgaGVscHMgcHJpb3JpdGl6ZSBtYXRjaGVzIGF0IHRoZSBiZWdpbm5pbmdcbiAgICAgIGlnbm9yZUxvY2F0aW9uOiBmYWxzZSxcbiAgICB9KSxcbiAgICBbXVxuICApO1xuXG4gIGNvbnN0IGZ1c2UgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAoIWdsb2JhbEF1dG9jb21wbGV0ZVJlc3VsdHMubGVuZ3RoKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gbmV3IEZ1c2UoZ2xvYmFsQXV0b2NvbXBsZXRlUmVzdWx0cywgZnVzZU9wdGlvbnMpO1xuICB9LCBbZ2xvYmFsQXV0b2NvbXBsZXRlUmVzdWx0cywgZnVzZU9wdGlvbnNdKTtcblxuICAvLyBBdXRvY29tcGxldGUgZnV6enkgc2VhcmNoIHVzaW5nIEZ1c2UuanNcbiAgY29uc3QgYXV0b2NvbXBsZXRlUmVzdWx0cyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmICghaXNBdXRvY29tcGxldGVFbmFibGVkIHx8ICFmdXNlKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgaWYgKCFzZWFyY2hUZXh0LnRyaW0oKSkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGNvbnN0IGZ1c2VSZXN1bHRzID0gZnVzZS5zZWFyY2goc2VhcmNoVGV4dCk7XG5cbiAgICAvLyBVc2Ugb25seSBGdXNlLmpzIHNjb3JpbmcgKHJlc3VsdHMgYXJlIGFscmVhZHkgc29ydGVkIGJ5IHJlbGV2YW5jZSlcbiAgICByZXR1cm4gZnVzZVJlc3VsdHNcbiAgICAgIC5zbGljZSgwLCBhdXRvY29tcGxldGVSZXN1bHRzTGltaXQpXG4gICAgICAubWFwKChyZXN1bHQpID0+IHJlc3VsdC5pdGVtKTtcbiAgfSwgW2lzQXV0b2NvbXBsZXRlRW5hYmxlZCwgZnVzZSwgc2VhcmNoVGV4dCwgYXV0b2NvbXBsZXRlUmVzdWx0c0xpbWl0XSk7XG5cbiAgLy8gSGFuZGxlcnNcbiAgY29uc3QgaGFuZGxlU2VhcmNoSW5wdXRDaGFuZ2UgPSB1c2VDYWxsYmFjayhcbiAgICAobmV3VmFsdWU6IHN0cmluZykgPT4ge1xuICAgICAgLy8gSWYgdGhlIHVzZXIgaXMgY2hhbmdpbmcgdGV4dCwgdGhleSBtdXN0IGJlIGludGVyYWN0aW5nIHdpdGggdGhlIGlucHV0XG4gICAgICAvLyBTbyB3ZSBjYW4gc2FmZWx5IGFzc3VtZSB0aGV5J3JlIGZvY3VzZWRcbiAgICAgIGlmIChuZXdWYWx1ZSAhPT0gc2VhcmNoVGV4dCkge1xuICAgICAgICBzZXRJc0ZvY3VzZWQodHJ1ZSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChuZXdWYWx1ZS5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgdHJhY2s/Lih7XG4gICAgICAgICAgZXZlbnROYW1lOiBTcGlmZnlNZXRyaWNzRXZlbnROYW1lLlNlYXJjaElucHV0U3RhcnRlZCxcbiAgICAgICAgICBldmVudFByb3BzOiB7XG4gICAgICAgICAgICBzZWFyY2hPcmlnaW4sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBzZXRTZWFyY2hUZXh0KG5ld1ZhbHVlKTtcbiAgICAgIHNldEhhc1RleHQobmV3VmFsdWUudHJpbSgpLmxlbmd0aCA+IDApO1xuICAgICAgc2V0Rm9jdXNlZEluZGV4KC0xKTtcbiAgICAgIHNldEZvY3VzZWRPcHRpb25JZCh1bmRlZmluZWQpO1xuICAgIH0sXG4gICAgW3NlYXJjaE9yaWdpbiwgc2VhcmNoVGV4dCwgdHJhY2tdXG4gICk7XG5cbiAgY29uc3QgaGFuZGxlU2VhcmNoSW5wdXRGb2N1cyA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzZXRJc0ZvY3VzZWQodHJ1ZSk7XG4gIH0sIFtdKTtcblxuICBjb25zdCBoYW5kbGVTZWFyY2hJbnB1dEJsdXIgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAoIWlzU2VsZWN0aW5nQXV0b2NvbXBsZXRlLmN1cnJlbnQpIHtcbiAgICAgICAgc2V0SXNGb2N1c2VkKGZhbHNlKTtcbiAgICAgICAgc2V0Rm9jdXNlZEluZGV4KC0xKTtcbiAgICAgICAgc2V0Rm9jdXNlZE9wdGlvbklkKHVuZGVmaW5lZCk7XG4gICAgICB9XG4gICAgfSwgMTUwKTtcbiAgfSwgW10pO1xuXG4gIGNvbnN0IGhhbmRsZVN1Ym1pdFNlYXJjaCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzZXRJc0ZvY3VzZWQoZmFsc2UpO1xuICAgIGlmIChzZWFyY2hUZXh0LnRyaW0oKSAmJiBvblNlYXJjaFN1Ym1pdCkge1xuICAgICAgdHJhY2s/Lih7XG4gICAgICAgIGV2ZW50TmFtZTogU3BpZmZ5TWV0cmljc0V2ZW50TmFtZS5TZWFyY2hRdWVyeVN1Ym1pdHRlZCxcbiAgICAgICAgZXZlbnRQcm9wczoge1xuICAgICAgICAgIHNlYXJjaE9yaWdpbixcbiAgICAgICAgICBxdWVyeVRleHQ6IHNlYXJjaFRleHQudHJpbSgpLFxuICAgICAgICB9LFxuICAgICAgICBhbHNvU2VuZFRvR29vZ2xlQW5hbHl0aWNzOiB0cnVlLFxuICAgICAgfSk7XG4gICAgICBvblNlYXJjaFN1Ym1pdChzZWFyY2hUZXh0LnRyaW0oKSk7XG4gICAgfVxuICB9LCBbc2VhcmNoVGV4dCwgb25TZWFyY2hTdWJtaXQsIHNlYXJjaE9yaWdpbiwgdHJhY2tdKTtcblxuICBjb25zdCBoYW5kbGVBdXRvY29tcGxldGVTZWxlY3QgPSB1c2VDYWxsYmFjayhcbiAgICAoc3VnZ2VzdGlvbjogc3RyaW5nLCByYW5rUG9zaXRpb24/OiBudW1iZXIpID0+IHtcbiAgICAgIGlzU2VsZWN0aW5nQXV0b2NvbXBsZXRlLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgc2V0U2VhcmNoVGV4dChzdWdnZXN0aW9uKTtcbiAgICAgIHNldEhhc1RleHQoc3VnZ2VzdGlvbi50cmltKCkubGVuZ3RoID4gMCk7XG4gICAgICBzZXRJc0ZvY3VzZWQoZmFsc2UpO1xuXG4gICAgICB0cmFjaz8uKHtcbiAgICAgICAgZXZlbnROYW1lOiBTcGlmZnlNZXRyaWNzRXZlbnROYW1lLlNlYXJjaElucHV0U3RhcnRlZCxcbiAgICAgICAgZXZlbnRQcm9wczoge1xuICAgICAgICAgIHNlYXJjaE9yaWdpbixcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgICBpZiAob25TZWFyY2hTdWJtaXQpIHtcbiAgICAgICAgb25TZWFyY2hTdWJtaXQoc3VnZ2VzdGlvbi50cmltKCkpO1xuICAgICAgfVxuXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaXNTZWxlY3RpbmdBdXRvY29tcGxldGUuY3VycmVudCA9IGZhbHNlO1xuICAgICAgfSwgMTAwKTtcbiAgICB9LFxuICAgIFtvblNlYXJjaFN1Ym1pdCwgc2VhcmNoT3JpZ2luLCB0cmFja11cbiAgKTtcblxuICBjb25zdCBoYW5kbGVLZXlEb3duID0gdXNlQ2FsbGJhY2soXG4gICAgKGV2ZW50OiBSZWFjdC5LZXlib2FyZEV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PiB7XG4gICAgICBpZiAoZXZlbnQua2V5ID09PSBcIkFycm93RG93blwiKSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGNvbnN0IG5ld0luZGV4ID0gKGZvY3VzZWRJbmRleCArIDEpICUgYXV0b2NvbXBsZXRlUmVzdWx0cy5sZW5ndGg7XG4gICAgICAgIHNldEZvY3VzZWRJbmRleChuZXdJbmRleCk7XG4gICAgICAgIHNldEZvY3VzZWRPcHRpb25JZChgb3B0aW9uLSR7bmV3SW5kZXh9YCk7XG4gICAgICB9IGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gXCJBcnJvd1VwXCIpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgY29uc3QgbmV3SW5kZXggPVxuICAgICAgICAgIChmb2N1c2VkSW5kZXggLSAxICsgYXV0b2NvbXBsZXRlUmVzdWx0cy5sZW5ndGgpICVcbiAgICAgICAgICBhdXRvY29tcGxldGVSZXN1bHRzLmxlbmd0aDtcbiAgICAgICAgc2V0Rm9jdXNlZEluZGV4KG5ld0luZGV4KTtcbiAgICAgICAgc2V0Rm9jdXNlZE9wdGlvbklkKGBvcHRpb24tJHtuZXdJbmRleH1gKTtcbiAgICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5ID09PSBcIkVudGVyXCIpIHtcbiAgICAgICAgaWYgKGZvY3VzZWRJbmRleCA9PT0gLTEpIHtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGhhbmRsZVN1Ym1pdFNlYXJjaCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgY29uc3Qgc3VnZ2VzdGlvblRleHQgPSBhdXRvY29tcGxldGVSZXN1bHRzW2ZvY3VzZWRJbmRleF07XG4gICAgICAgICAgaGFuZGxlQXV0b2NvbXBsZXRlU2VsZWN0KHN1Z2dlc3Rpb25UZXh0LCBmb2N1c2VkSW5kZXgpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gXCJFc2NhcGVcIikge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBzZXRGb2N1c2VkSW5kZXgoLTEpO1xuICAgICAgICBzZXRGb2N1c2VkT3B0aW9uSWQodW5kZWZpbmVkKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFtcbiAgICAgIGF1dG9jb21wbGV0ZVJlc3VsdHMsXG4gICAgICBmb2N1c2VkSW5kZXgsXG4gICAgICBoYW5kbGVBdXRvY29tcGxldGVTZWxlY3QsXG4gICAgICBoYW5kbGVTdWJtaXRTZWFyY2gsXG4gICAgXVxuICApO1xuXG4gIGNvbnN0IHNldFNlYXJjaFRleHRVdGlsaXR5ID0gdXNlQ2FsbGJhY2soKHRleHQ6IHN0cmluZykgPT4ge1xuICAgIHNldFNlYXJjaFRleHQodGV4dCk7XG4gICAgc2V0SGFzVGV4dCh0ZXh0LnRyaW0oKS5sZW5ndGggPiAwKTtcbiAgfSwgW10pO1xuXG4gIGNvbnN0IHJlc2V0U2VhcmNoID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHNldFNlYXJjaFRleHQoXCJcIik7XG4gICAgc2V0SGFzVGV4dChmYWxzZSk7XG4gICAgc2V0SXNGb2N1c2VkKGZhbHNlKTtcbiAgICBzZXRGb2N1c2VkSW5kZXgoLTEpO1xuICAgIHNldEZvY3VzZWRPcHRpb25JZCh1bmRlZmluZWQpO1xuICB9LCBbXSk7XG5cbiAgcmV0dXJuIHtcbiAgICAvLyBTdGF0ZVxuICAgIHNlYXJjaFRleHQsXG4gICAgaGFzVGV4dCxcbiAgICBpc0ZvY3VzZWQsXG4gICAgZm9jdXNlZEluZGV4LFxuICAgIGZvY3VzZWRPcHRpb25JZCxcbiAgICBhdXRvY29tcGxldGVSZXN1bHRzLFxuICAgIHNob3VsZFNob3dBdXRvY29tcGxldGUsXG5cbiAgICAvLyBIYW5kbGVyc1xuICAgIGhhbmRsZVNlYXJjaElucHV0Q2hhbmdlLFxuICAgIGhhbmRsZVNlYXJjaElucHV0Rm9jdXMsXG4gICAgaGFuZGxlU2VhcmNoSW5wdXRCbHVyLFxuICAgIGhhbmRsZUtleURvd24sXG4gICAgaGFuZGxlQXV0b2NvbXBsZXRlU2VsZWN0LFxuICAgIGhhbmRsZVN1Ym1pdFNlYXJjaCxcblxuICAgIC8vIFV0aWxpdGllc1xuICAgIHNldFNlYXJjaFRleHQ6IHNldFNlYXJjaFRleHRVdGlsaXR5LFxuICAgIHJlc2V0U2VhcmNoLFxuICB9O1xufTsiLCJpbXBvcnQgeyBQcm9kdWN0UmV0cmlldmFsUGFyYW1zLCBQcm9kdWN0UmV0cmlldmFsUmVzdWx0IH0gZnJvbSBcIi4vdHlwZXNcIjtcblxuLy8gVGhpcyB3aWxsIGJlIHNldCBieSB0aGUgUHJvZHVjdFJldHJpZXZhbFByb3ZpZGVyIHdoZW4gaXQgaW5pdGlhbGl6ZXNcbmxldCBwcm9kdWN0UmV0cmlldmFsRnVuY3Rpb246XG4gIHwgKChwYXJhbXM6IFByb2R1Y3RSZXRyaWV2YWxQYXJhbXMpID0+IFByb21pc2U8UHJvZHVjdFJldHJpZXZhbFJlc3VsdD4pXG4gIHwgbnVsbCA9IG51bGw7XG5cbmV4cG9ydCBjb25zdCBzZXRQcm9kdWN0UmV0cmlldmFsRnVuY3Rpb24gPSAoXG4gIGZuOiAocGFyYW1zOiBQcm9kdWN0UmV0cmlldmFsUGFyYW1zKSA9PiBQcm9taXNlPFByb2R1Y3RSZXRyaWV2YWxSZXN1bHQ+XG4pID0+IHtcbiAgcHJvZHVjdFJldHJpZXZhbEZ1bmN0aW9uID0gZm47XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0UHJvZHVjdFJldHJpZXZhbEZ1bmN0aW9uID0gKCkgPT4ge1xuICBpZiAoIXByb2R1Y3RSZXRyaWV2YWxGdW5jdGlvbikge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIFwiUHJvZHVjdCByZXRyaWV2YWwgZnVuY3Rpb24gbm90IGluaXRpYWxpemVkLiBNYWtlIHN1cmUgUHJvZHVjdFJldHJpZXZhbFByb3ZpZGVyIGlzIG1vdW50ZWQuXCJcbiAgICApO1xuICB9XG4gIHJldHVybiBwcm9kdWN0UmV0cmlldmFsRnVuY3Rpb247XG59O1xuXG5leHBvcnQgY29uc3QgY2xlYXJQcm9kdWN0UmV0cmlldmFsRnVuY3Rpb24gPSAoKSA9PiB7XG4gIHByb2R1Y3RSZXRyaWV2YWxGdW5jdGlvbiA9IG51bGw7XG59OyIsIlxuaW1wb3J0IHsgYXRvbSB9IGZyb20gXCJqb3RhaVwiO1xuaW1wb3J0IHsgZ2V0UHJvZHVjdFJldHJpZXZhbEZ1bmN0aW9uIH0gZnJvbSBcIi4vcHJvZHVjdFJldHJpZXZhbEFkYXB0ZXJcIjtcbmltcG9ydCB7IFByb2R1Y3RSZXRyaWV2YWxQYXJhbXMsIFByb2R1Y3RSZXRyaWV2YWxSZXN1bHQgfSBmcm9tIFwiLi90eXBlc1wiO1xuXG5pbnRlcmZhY2UgUHJvZHVjdFJldHJpZXZhbFN0YXRlIHtcbiAgZGF0YTogUHJvZHVjdFJldHJpZXZhbFJlc3VsdCB8IG51bGw7XG4gIGxvYWRpbmc6IGJvb2xlYW47XG4gIGVycm9yOiBzdHJpbmcgfCBudWxsO1xuICBsYXN0UHJvZHVjdElkczogc3RyaW5nW10gfCBudWxsO1xufVxuXG5leHBvcnQgY29uc3QgcHJvZHVjdFJldHJpZXZhbEF0b20gPSBhdG9tPFByb2R1Y3RSZXRyaWV2YWxTdGF0ZT4oe1xuICBkYXRhOiBudWxsLFxuICBsb2FkaW5nOiBmYWxzZSxcbiAgZXJyb3I6IG51bGwsXG4gIGxhc3RQcm9kdWN0SWRzOiBudWxsLFxufSk7XG5cbmV4cG9ydCBjb25zdCBwZXJmb3JtUHJvZHVjdFJldHJpZXZhbEF0b20gPSBhdG9tKFxuICBudWxsLFxuICBhc3luYyAoZ2V0LCBzZXQsIHBhcmFtczogUHJvZHVjdFJldHJpZXZhbFBhcmFtcykgPT4ge1xuICAgIGNvbnN0IGN1cnJlbnRTdGF0ZSA9IGdldChwcm9kdWN0UmV0cmlldmFsQXRvbSk7XG5cbiAgICBpZiAoY3VycmVudFN0YXRlLmxvYWRpbmcpIHtcbiAgICAgIHJldHVybjsgLy8gUHJldmVudCBjb25jdXJyZW50IHJldHJpZXZhbHNcbiAgICB9XG5cbiAgICBzZXQocHJvZHVjdFJldHJpZXZhbEF0b20sIHtcbiAgICAgIGRhdGE6IG51bGwsXG4gICAgICBsb2FkaW5nOiB0cnVlLFxuICAgICAgZXJyb3I6IG51bGwsXG4gICAgICBsYXN0UHJvZHVjdElkczogcGFyYW1zLnByb2R1Y3RJZHMsXG4gICAgfSk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmV0cmlldmVQcm9kdWN0cyA9IGdldFByb2R1Y3RSZXRyaWV2YWxGdW5jdGlvbigpO1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcmV0cmlldmVQcm9kdWN0cyhwYXJhbXMpO1xuICAgICAgc2V0KHByb2R1Y3RSZXRyaWV2YWxBdG9tLCB7XG4gICAgICAgIGRhdGE6IHJlc3VsdCxcbiAgICAgICAgbG9hZGluZzogZmFsc2UsXG4gICAgICAgIGVycm9yOiBudWxsLFxuICAgICAgICBsYXN0UHJvZHVjdElkczogcGFyYW1zLnByb2R1Y3RJZHMsXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgICAgY29uc3QgZXJyb3JNZXNzYWdlID1cbiAgICAgICAgZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBcIkFuIHVua25vd24gZXJyb3Igb2NjdXJyZWRcIjtcbiAgICAgIHNldChwcm9kdWN0UmV0cmlldmFsQXRvbSwge1xuICAgICAgICBkYXRhOiBudWxsLFxuICAgICAgICBsb2FkaW5nOiBmYWxzZSxcbiAgICAgICAgZXJyb3I6IGVycm9yTWVzc2FnZSxcbiAgICAgICAgbGFzdFByb2R1Y3RJZHM6IHBhcmFtcy5wcm9kdWN0SWRzLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG4pO1xuXG4vLyBHZXQganVzdCB0aGUgcHJvZHVjdHMgYXJyYXkgKGFscmVhZHkgbm9ybWFsaXplZCBieSBzZXJ2aWNlKVxuZXhwb3J0IGNvbnN0IHJldHJpZXZlZFByb2R1Y3RzQXRvbSA9IGF0b20oKGdldCkgPT4ge1xuICBjb25zdCByZXRyaWV2YWxEYXRhID0gZ2V0KHByb2R1Y3RSZXRyaWV2YWxBdG9tKS5kYXRhO1xuICByZXR1cm4gcmV0cmlldmFsRGF0YT8ucHJvZHVjdHMgfHwgW107XG59KTtcblxuZXhwb3J0IGNvbnN0IHByb2R1Y3RSZXRyaWV2YWxMb2FkaW5nQXRvbSA9IGF0b20oKGdldCkgPT4ge1xuICByZXR1cm4gZ2V0KHByb2R1Y3RSZXRyaWV2YWxBdG9tKS5sb2FkaW5nO1xufSk7XG5cbmV4cG9ydCBjb25zdCBwcm9kdWN0UmV0cmlldmFsRXJyb3JBdG9tID0gYXRvbSgoZ2V0KSA9PiB7XG4gIHJldHVybiBnZXQocHJvZHVjdFJldHJpZXZhbEF0b20pLmVycm9yO1xufSk7IiwiaW1wb3J0IHsgdXNlQXRvbVZhbHVlLCB1c2VTZXRBdG9tIH0gZnJvbSBcImpvdGFpXCI7XG5pbXBvcnQgeyB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZUZlYXR1cmVGbGFnU2VydmljZSB9IGZyb20gXCJzcmMvY29udGV4dHMvZmVhdHVyZUZsYWdTZXJ2aWNlQ29udGV4dC9mZWF0dXJlRmxhZ1NlcnZpY2VDb250ZXh0XCI7XG5pbXBvcnQge1xuICByZXRyaWV2ZWRQcm9kdWN0c0F0b20sXG4gIHBlcmZvcm1Qcm9kdWN0UmV0cmlldmFsQXRvbSxcbiAgcHJvZHVjdFJldHJpZXZhbEF0b20sXG59IGZyb20gXCJzcmMvYXRvbXMvc2VhcmNoL3Byb2R1Y3RSZXRyaWV2YWxBUElcIjtcbmltcG9ydCB7IHVzZU5ld09yZ0NvbmZpZyB9IGZyb20gXCIuLi9OZXdPcmdDb25maWdcIjtcbmltcG9ydCB7IFNlYXJjaFJlc3BvbnNlUHJvZHVjdEF0dHJpYnV0ZXMgfSBmcm9tIFwic3JjL2FwcGxpY2F0aW9uL21vZGVscy9hcGkvcmVzcG9uc2VcIjtcbmltcG9ydCB7IEZlYXR1cmVHYXRlcyB9IGZyb20gXCJzcmMvYXBwbGljYXRpb24vbW9kZWxzXCI7XG5cbi8qKlxuICogQSBob29rIHRvIGdldCByZWNvbW1lbmRlZCBwcm9kdWN0cy5cbiAqIEl0IGNoZWNrcyB0aGUgYElzUmVjb21tZW5kZWRQcm9kdWN0c0VuYWJsZWRgIGZlYXR1cmUgZ2F0ZSBhbmQgdHJpZ2dlcnMgZmV0Y2hpbmcgaWYgbmVlZGVkLlxuICogSWYgdGhlIGdhdGUgaXMgZW5hYmxlZCwgaXQgcmV0dXJucyB0aGUgbGlzdCBvZiByZWNvbW1lbmRlZCBwcm9kdWN0cy5cbiAqIElmIHRoZSBnYXRlIGlzIGRpc2FibGVkLCBpdCByZXR1cm5zIGFuIGVtcHR5IGFycmF5LlxuICpcbiAqIEByZXR1cm5zIFRoZSBsaXN0IG9mIHJlY29tbWVuZGVkIHByb2R1Y3RzIG9yIGFuIGVtcHR5IGFycmF5LlxuICovXG5leHBvcnQgY29uc3QgdXNlUmVjb21tZW5kZWRQcm9kdWN0cyA9XG4gICgpOiBTZWFyY2hSZXNwb25zZVByb2R1Y3RBdHRyaWJ1dGVzW1wiYXR0cmlidXRlc1wiXVtdID0+IHtcbiAgICBjb25zdCB7IGZlYXR1cmVGbGFnU2VydmljZSB9ID0gdXNlRmVhdHVyZUZsYWdTZXJ2aWNlKCk7XG4gICAgY29uc3QgaXNFbmFibGVkID0gZmVhdHVyZUZsYWdTZXJ2aWNlPy5pc0ZlYXR1cmVHYXRlRW5hYmxlZChcbiAgICAgIEZlYXR1cmVHYXRlcy5Jc1JlY29tbWVuZGVkUHJvZHVjdHNFbmFibGVkXG4gICAgKTtcbiAgICBjb25zdCByZWNvbW1lbmRlZFByb2R1Y3RzID0gdXNlQXRvbVZhbHVlKHJldHJpZXZlZFByb2R1Y3RzQXRvbSk7XG4gICAgY29uc3QgcGVyZm9ybVByb2R1Y3RSZXRyaWV2YWwgPSB1c2VTZXRBdG9tKHBlcmZvcm1Qcm9kdWN0UmV0cmlldmFsQXRvbSk7XG4gICAgY29uc3QgeyBsYXN0UHJvZHVjdElkcyB9ID0gdXNlQXRvbVZhbHVlKHByb2R1Y3RSZXRyaWV2YWxBdG9tKTtcbiAgICBjb25zdCBvcmdVSUNvbmZpZyA9IHVzZU5ld09yZ0NvbmZpZygpO1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IHJlY29tbWVuZGVkUHJvZHVjdElkcyA9IG9yZ1VJQ29uZmlnLmZyb250ZW5kQ29uZmlnPy51aUNvbmZpZ3M/LnNlYXJjaENvbmZpZ1xuICAgICAgICA/IG9yZ1VJQ29uZmlnLmZyb250ZW5kQ29uZmlnPy51aUNvbmZpZ3M/LnNlYXJjaENvbmZpZy5yZWNvbW1lbmRlZFByb2R1Y3RzXG4gICAgICAgIDogW107XG4gICAgICAvLyBGZXRjaCBvbmx5IGlmIHRoZSBmZWF0dXJlIGlzIGVuYWJsZWQsIHRoZXJlIGFyZSBJRHMgdG8gZmV0Y2gsIGFuZCB3ZSBoYXZlbid0IGFscmVhZHkgZmV0Y2hlZCB0aGVtLlxuICAgICAgaWYgKFxuICAgICAgICBpc0VuYWJsZWQgJiZcbiAgICAgICAgcmVjb21tZW5kZWRQcm9kdWN0SWRzICYmXG4gICAgICAgIHJlY29tbWVuZGVkUHJvZHVjdElkcy5sZW5ndGggPiAwICYmXG4gICAgICAgICFsYXN0UHJvZHVjdElkc1xuICAgICAgKSB7XG4gICAgICAgIHBlcmZvcm1Qcm9kdWN0UmV0cmlldmFsKHsgcHJvZHVjdElkczogcmVjb21tZW5kZWRQcm9kdWN0SWRzIH0pO1xuICAgICAgfVxuICAgIH0sIFtpc0VuYWJsZWQsIHBlcmZvcm1Qcm9kdWN0UmV0cmlldmFsLCBsYXN0UHJvZHVjdElkcywgb3JnVUlDb25maWddKTtcblxuICAgIHJldHVybiBpc0VuYWJsZWQgPyByZWNvbW1lbmRlZFByb2R1Y3RzIDogW107XG4gIH07IiwiaW1wb3J0IHsgdXNlQXRvbSwgdXNlQXRvbVZhbHVlLCB1c2VTZXRBdG9tIH0gZnJvbSBcImpvdGFpXCI7XG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VSZWYgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHtcbiAgYWRkU2VhcmNoRmlsdGVyQXRvbSxcbiAgY2xlYXJTZWFyY2hGaWx0ZXJzQXRvbSxcbiAgY3JlYXRlRmlsdGVyT3B0aW9uLFxuICBmaWx0ZXJlZFNlYXJjaFByb2R1Y3RzQXRvbSxcbiAgcGVyZm9ybVNlYXJjaEF0b20sXG4gIHJlbW92ZVNlYXJjaEZpbHRlckF0b20sXG4gIHNlYXJjaEF0b20sXG4gIHNlYXJjaEZpbHRlcnNBdG9tLFxuICBzZWFyY2hQYXJhbXNBdG9tLFxuICBzZWFyY2hQcm9kdWN0U29ydGluZ0F0b20sXG4gIHNlYXJjaFNlbGVjdGVkRmlsdGVyc0F0b20sXG4gIFNlbGVjdGVkRmlsdGVyT3B0aW9uLFxufSBmcm9tIFwic3JjL2F0b21zL3NlYXJjaFwiO1xuaW1wb3J0IHtcbiAgaXNGaWx0ZXJPcGVuQXRvbSxcbn0gZnJvbSBcInNyYy9hdG9tcy9nbG9iYWxTZWFyY2gvZ2xvYmFsU2VhcmNoXCI7XG5pbXBvcnQgeyBmb3JtYXRGaWx0ZXJEaXNwbGF5TmFtZSB9IGZyb20gXCJzcmMvYXRvbXMvc2VhcmNoL3V0aWxzXCI7XG5pbXBvcnQgeyBQcm9kdWN0U29ydGluZyB9IGZyb20gXCJzcmMvYXRvbXMvc2VhcmNoL3R5cGVzXCI7XG5pbXBvcnQge1xuICBTcGlmZnlNZXRyaWNzRXZlbnROYW1lLFxuICB1c2VBbXBsaXR1ZGUsXG59IGZyb20gXCJzcmMvY29udGV4dHMvYW1wbGl0dWRlQ29udGV4dC9hbXBsaXR1ZGVDb250ZXh0XCI7XG5pbXBvcnQgeyBTcGlmZnlXaWRnZXRzIH0gZnJvbSBcInNyYy9hcHBsaWNhdGlvbi9tb2RlbHMvc3BpZmZ5V2lkZ2V0c1wiO1xuaW1wb3J0IHsgUHJvZHVjdENhcmRDb25maWcgfSBmcm9tIFwic3JjL2NvbnRleHRzL3R5cGVzXCI7XG5pbXBvcnQgeyBTZWFyY2hSZXN1bHQgfSBmcm9tIFwic3JjL2FwcGxpY2F0aW9uL21vZGVscy9hcGkvc2VhcmNoXCI7XG5pbXBvcnQgeyBTZWFyY2hSZXNwb25zZVByb2R1Y3QgfSBmcm9tIFwiQHNwaWZmeS1haS9jb21tZXJjZS1hcGktY2xpZW50XCI7XG5pbXBvcnQge1xuICBTZWFyY2hGaWx0ZXJEYXR1bSxcbiAgU2VsZWN0RmlsdGVySXRlbSxcbn0gZnJvbSBcInNyYy90eXBlcy9zZWFyY2gtZmlsdGVyLXR5cGVzXCI7XG5pbXBvcnQgeyBnZXRTZWFyY2hSZXN1bHRzU3RhdGUsIFNlYXJjaFJlc3VsdHNTdGF0ZSB9IGZyb20gXCIuLi91dGlsc1wiO1xuaW1wb3J0IHsgb3JnU2hvcnROYW1lQXRvbSB9IGZyb20gXCJzcmMvYXRvbXMvZW52aXZlL2Vudml2ZUNvbmZpZ1wiO1xuaW1wb3J0IHsgdXNlVHJhY2tDb21wb25lbnRWaXNpYmxlRXZlbnQgfSBmcm9tIFwiLi4vVHJhY2tDb21wb25lbnRWaXNpYmxlRXZlbnRcIjtcbmltcG9ydCB7IHVzZVNlYXJjaElucHV0IH0gZnJvbSBcIi4vdXNlU2VhcmNoSW5wdXRcIjtcbmltcG9ydCB7IFNlYXJjaFJlc3BvbnNlUHJvZHVjdEF0dHJpYnV0ZXMgfSBmcm9tIFwic3JjL2FwcGxpY2F0aW9uL21vZGVsc1wiO1xuaW1wb3J0IHsgdXNlTmV3T3JnQ29uZmlnIH0gZnJvbSBcIi4uL05ld09yZ0NvbmZpZ1wiO1xuaW1wb3J0IHsgdXNlUmVjb21tZW5kZWRQcm9kdWN0cyB9IGZyb20gXCIuL3VzZVJlY29tbWVuZGVkUHJvZHVjdHNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBTZWFyY2hSZXN1bHRzSG9jUHJvcHMge1xuICAvLyBEYXRhXG4gIHNlYXJjaERhdGE6IFNlYXJjaFJlc3VsdCB8IG51bGw7XG4gIHNlYXJjaFJlc3BvbnNlSWQ6IHN0cmluZztcbiAgbWVyY2hhbnRTaG9ydE5hbWU6IHN0cmluZztcbiAgcHJvZHVjdENhcmRDb25maWc6IFByb2R1Y3RDYXJkQ29uZmlnO1xuICBwcm9kdWN0TGlzdDogU2VhcmNoUmVzcG9uc2VQcm9kdWN0W107XG4gIGF1dG9jb21wbGV0ZVJlc3VsdHM6IHN0cmluZ1tdO1xuICBzZWFyY2hGaWx0ZXJzOiBTZWFyY2hGaWx0ZXJEYXR1bVtdO1xuICBhdmFpbGFibGVEeW5hbWljRmlsdGVyczogeyBuYW1lOiBzdHJpbmc7IGRpc3BsYXlOYW1lOiBzdHJpbmcgfVtdO1xuICBzZWxlY3RlZEZpbHRlck9wdGlvbnM6IFNlbGVjdGVkRmlsdGVyT3B0aW9uW107XG4gIHJlY29tbWVuZGVkUHJvZHVjdHM6IFNlYXJjaFJlc3BvbnNlUHJvZHVjdEF0dHJpYnV0ZXNbJ2F0dHJpYnV0ZXMnXVtdO1xuICByZWNvbW1lbmRlZFByb2R1Y3RzSGVhZGluZzogc3RyaW5nO1xuICBzZWFyY2hPdmVybGF5SGVhZGluZzogc3RyaW5nO1xuXG4gIC8vIFN0YXRlXG4gIHNlYXJjaFRleHQ6IHN0cmluZztcbiAgcXVlcnk6IHN0cmluZztcbiAgc2VhcmNoUmVzdWx0c1N0YXRlOiBTZWFyY2hSZXN1bHRzU3RhdGU7XG4gIGlzTG9hZGluZ1NlYXJjaDogYm9vbGVhbjtcbiAgaXNGaWx0ZXJPcGVuOiBib29sZWFuO1xuICBzaG91bGRTaG93QXV0b2NvbXBsZXRlOiBib29sZWFuO1xuICBmb2N1c2VkSW5kZXg6IG51bWJlcjtcbiAgZm9jdXNlZE9wdGlvbklkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLy8gVUlcbiAgZmlsdGVyQnV0dG9uVGV4dDogc3RyaW5nO1xuXG4gIC8vIEV2ZW50IEhhbmRsZXJzXG4gIG9uU2VhcmNoSW5wdXRDaGFuZ2U6ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkO1xuICBvblN1Ym1pdFNlYXJjaDogKCkgPT4gdm9pZDtcbiAgb25BdXRvY29tcGxldGVTZWxlY3Q6IChzdWdnZXN0aW9uOiBzdHJpbmcpID0+IHZvaWQ7XG4gIG9uS2V5RG93bjogKGV2ZW50OiBSZWFjdC5LZXlib2FyZEV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PiB2b2lkO1xuICBvblNlYXJjaElucHV0Rm9jdXM6ICgpID0+IHZvaWQ7XG4gIG9uU2VhcmNoSW5wdXRCbHVyOiAoKSA9PiB2b2lkO1xuICBvblRvZ2dsZUR5bmFtaWNGaWx0ZXI6ICh7IGZpbHRlciwgZHluYW1pY0ZpbHRlckRpc3BsYXlOYW1lIH06IHsgZmlsdGVyOiBzdHJpbmc7IGR5bmFtaWNGaWx0ZXJEaXNwbGF5TmFtZTogc3RyaW5nIH0pID0+IHZvaWQ7XG4gIG9uU2VsZWN0RmlsdGVySXRlbTogU2VsZWN0RmlsdGVySXRlbTtcbiAgb25SZW1vdmVGaWx0ZXI6IChmaWx0ZXI6IFNlbGVjdGVkRmlsdGVyT3B0aW9uKSA9PiB2b2lkO1xuICBvbkNsZWFyQWxsRmlsdGVyczogKCkgPT4gdm9pZDtcbiAgc2V0SXNGaWx0ZXJPcGVuOiAoaXNGaWx0ZXJPcGVuOiBib29sZWFuKSA9PiB2b2lkO1xuICByZXNldFNlYXJjaDogKCkgPT4gdm9pZDtcbiAgLy8gUmVmc1xuICBzZWFyY2hSZXN1bHRzUmVmOiBSZWFjdC5SZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQ+O1xufVxuXG5leHBvcnQgY29uc3QgdXNlU2VhcmNoID0gKHsgYWxsb3dSZWRpcmVjdCA9IGZhbHNlIH06IHsgYWxsb3dSZWRpcmVjdD86IGJvb2xlYW4gfSA9IHt9KTogU2VhcmNoUmVzdWx0c0hvY1Byb3BzID0+IHtcbiAgLy8gQXRvbXNcbiAgY29uc3QgY29uZmlnID0gdXNlTmV3T3JnQ29uZmlnKCk7XG4gIGNvbnN0IG9yZ1Nob3J0TmFtZSA9IHVzZUF0b21WYWx1ZShvcmdTaG9ydE5hbWVBdG9tKTtcbiAgY29uc3QgeyBkYXRhOiBzZWFyY2hEYXRhLCBsb2FkaW5nOiBpc0xvYWRpbmdTZWFyY2ggfSA9XG4gICAgdXNlQXRvbVZhbHVlKHNlYXJjaEF0b20pO1xuICBjb25zdCBwcm9kdWN0TGlzdCA9IHVzZUF0b21WYWx1ZShmaWx0ZXJlZFNlYXJjaFByb2R1Y3RzQXRvbSk7XG4gIGNvbnN0IHBlcmZvcm1TZWFyY2ggPSB1c2VTZXRBdG9tKHBlcmZvcm1TZWFyY2hBdG9tKTtcbiAgY29uc3QgW3sgcXVlcnkgfV0gPSB1c2VBdG9tKHNlYXJjaFBhcmFtc0F0b20pO1xuICBjb25zdCBbaXNGaWx0ZXJPcGVuLCBzZXRJc0ZpbHRlck9wZW5dID0gdXNlQXRvbShpc0ZpbHRlck9wZW5BdG9tKTtcbiAgY29uc3QgW3NlbGVjdGVkRmlsdGVyT3B0aW9uc10gPSB1c2VBdG9tKHNlYXJjaFNlbGVjdGVkRmlsdGVyc0F0b20pO1xuICBjb25zdCBhZGRGaWx0ZXIgPSB1c2VTZXRBdG9tKGFkZFNlYXJjaEZpbHRlckF0b20pO1xuICBjb25zdCByZW1vdmVGaWx0ZXIgPSB1c2VTZXRBdG9tKHJlbW92ZVNlYXJjaEZpbHRlckF0b20pO1xuICBjb25zdCBbcHJvZHVjdFNvcnRpbmcsIHNldFByb2R1Y3RTb3J0aW5nXSA9IHVzZUF0b20oc2VhcmNoUHJvZHVjdFNvcnRpbmdBdG9tKTtcbiAgY29uc3QgY2xlYXJGaWx0ZXJzID0gdXNlU2V0QXRvbShjbGVhclNlYXJjaEZpbHRlcnNBdG9tKTtcbiAgY29uc3Qgc2VhcmNoRmlsdGVycyA9IHVzZUF0b21WYWx1ZShzZWFyY2hGaWx0ZXJzQXRvbSk7XG4gIGNvbnN0IHJlY29tbWVuZGVkUHJvZHVjdHMgPSB1c2VSZWNvbW1lbmRlZFByb2R1Y3RzKCk7XG5cbiAgLy8gUmVmc1xuICBjb25zdCBzZWFyY2hSZXN1bHRzUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKTtcbiAgXG4gIC8vIFV0aWxpdGllc1xuICBjb25zdCBzY3JvbGxUb1RvcCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb25zdCBjb250YWluZXIgPSBzZWFyY2hSZXN1bHRzUmVmLmN1cnJlbnQ7XG4gICAgaWYgKGNvbnRhaW5lcikge1xuICAgICAgY29udGFpbmVyLnNjcm9sbFRvKHsgdG9wOiAwLCBiZWhhdmlvcjogJ3Ntb290aCcgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHdpbmRvdy5zY3JvbGxUbyh7IHRvcDogMCwgYmVoYXZpb3I6ICdzbW9vdGgnIH0pO1xuICAgIH1cbiAgfSwgW10pO1xuICBcbiAgLy8gU2VhcmNoIElucHV0IEhvb2tcbiAgY29uc3Qgc2VhcmNoSW5wdXQgPSB1c2VTZWFyY2hJbnB1dCh7XG4gICAgaW5pdGlhbFNlYXJjaFRleHQ6ICcnLFxuICAgIHNlYXJjaE9yaWdpbjogU3BpZmZ5V2lkZ2V0cy5TZWFyY2hSZXN1bHRzLFxuICAgIG9uU2VhcmNoU3VibWl0OiAoc2VhcmNoUXVlcnkpID0+IHtcbiAgICAgIHBlcmZvcm1TZWFyY2goeyBxdWVyeTogc2VhcmNoUXVlcnkgfSwgYWxsb3dSZWRpcmVjdCk7XG4gICAgfSxcbiAgfSk7XG4gIFxuICBjb25zdCB7XG4gICAgc2VhcmNoVGV4dCxcbiAgICBmb2N1c2VkSW5kZXgsXG4gICAgZm9jdXNlZE9wdGlvbklkLFxuICAgIGF1dG9jb21wbGV0ZVJlc3VsdHMsXG4gICAgc2hvdWxkU2hvd0F1dG9jb21wbGV0ZSxcbiAgICBoYW5kbGVTZWFyY2hJbnB1dENoYW5nZSxcbiAgICBoYW5kbGVTZWFyY2hJbnB1dEZvY3VzLFxuICAgIGhhbmRsZVNlYXJjaElucHV0Qmx1cixcbiAgICBoYW5kbGVLZXlEb3duLFxuICAgIGhhbmRsZUF1dG9jb21wbGV0ZVNlbGVjdCxcbiAgICBoYW5kbGVTdWJtaXRTZWFyY2gsXG4gICAgc2V0U2VhcmNoVGV4dCxcbiAgICByZXNldFNlYXJjaCxcbiAgfSA9IHNlYXJjaElucHV0O1xuICBjb25zdCBzZWFyY2hSZXN1bHRzU3RhdGUgPSBnZXRTZWFyY2hSZXN1bHRzU3RhdGUoaXNMb2FkaW5nU2VhcmNoLCBzZWFyY2hEYXRhKTtcblxuICBjb25zdCBkeW5hbWljRmlsdGVycyA9IHNlYXJjaERhdGE/LmZpbHRlcnMgfHwgW107XG5cbiAgLy8gUHJvdmlkZSBmYWxsYmFjayB2YWx1ZXMgd2hlbiBvcmdVSUNvbmZpZyBpcyBub3QgeWV0IGF2YWlsYWJsZVxuICBjb25zdCBzYWZlUHJvZHVjdENhcmRDb25maWcgPSBjb25maWc/LmZyb250ZW5kQ29uZmlnPy51aUNvbmZpZ3NcbiAgICA/LnByb2R1Y3RDYXJkQ29uZmlnIHx8IHtcbiAgICB2YXJpYW50OiBcIm1pbmltYWxcIixcbiAgICBob3ZlclZhcmlhbnQ6IFwibm9uZVwiLFxuICAgIGxheW91dFZhcmlhbnQ6IFwic3F1YXJlXCIsXG4gIH07XG4gIGNvbnN0IHNhZmVNZXJjaGFudFNob3J0TmFtZSA9IG9yZ1Nob3J0TmFtZSB8fCBcIlwiO1xuICBjb25zdCBzZWFyY2hDb25maWcgPSBjb25maWc/LmZyb250ZW5kQ29uZmlnPy51aUNvbmZpZ3M/LnNlYXJjaENvbmZpZztcbiAgY29uc3Qgc2FmZVJlY29tbWVuZGVkUHJvZHVjdHNIZWFkaW5nID0gc2VhcmNoQ29uZmlnPy5yZWNvbW1lbmRlZFByb2R1Y3RzSGVhZGluZyB8fCAnU3VnZ2VzdGVkIFByb2R1Y3RzJ1xuICBjb25zdCBzYWZlU2VhcmNoT3ZlcmxheUhlYWRpbmcgPSBzZWFyY2hDb25maWc/LnNlYXJjaE92ZXJsYXlIZWFkaW5nID8/ICdXaGF0IGNhbiBJIGhlbHAgeW91IGZpbmQ/J1xuICBjb25zdCBhdmFpbGFibGVEeW5hbWljRmlsdGVycyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiBkeW5hbWljRmlsdGVyc1xuICAgICAgLmZpbHRlcihcbiAgICAgICAgKGR5bmFtaWNGaWx0ZXJOYW1lKSA9PlxuICAgICAgICAgICFzZWxlY3RlZEZpbHRlck9wdGlvbnMuc29tZSgob3B0aW9uKSA9PiBvcHRpb24uaWQgPT09IGBkeW5hbWljOiR7ZHluYW1pY0ZpbHRlck5hbWV9YCksXG4gICAgICApXG4gICAgICAubWFwKChkeW5hbWljRmlsdGVyTmFtZSkgPT4gKHtcbiAgICAgICAgbmFtZTogZHluYW1pY0ZpbHRlck5hbWUsXG4gICAgICAgIGRpc3BsYXlOYW1lOiBmb3JtYXRGaWx0ZXJEaXNwbGF5TmFtZShkeW5hbWljRmlsdGVyTmFtZSksXG4gICAgICB9KSk7XG4gIH0sIFtkeW5hbWljRmlsdGVycywgc2VsZWN0ZWRGaWx0ZXJPcHRpb25zXSk7XG5cbiAgY29uc3QgZmlsdGVycyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IHNvcnRPcHRpb25zID0gW1xuICAgICAge1xuICAgICAgICBmaWx0ZXJJdGVtSWQ6IFN0cmluZyhQcm9kdWN0U29ydGluZy5GRUFUVVJFRCksXG4gICAgICAgIGRpc3BsYXlOYW1lOiAnUmVsZXZhbmNlJyxcbiAgICAgICAgcHJvZHVjdENvdW50OiAwLFxuICAgICAgICBpc1NlbGVjdGVkOiBwcm9kdWN0U29ydGluZyA9PT0gUHJvZHVjdFNvcnRpbmcuRkVBVFVSRUQsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBmaWx0ZXJJdGVtSWQ6IFN0cmluZyhQcm9kdWN0U29ydGluZy5QUklDRV9BU0MpLFxuICAgICAgICBkaXNwbGF5TmFtZTogJ1ByaWNlOiBMb3cgdG8gSGlnaCcsXG4gICAgICAgIHByb2R1Y3RDb3VudDogMCxcbiAgICAgICAgaXNTZWxlY3RlZDogcHJvZHVjdFNvcnRpbmcgPT09IFByb2R1Y3RTb3J0aW5nLlBSSUNFX0FTQyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGZpbHRlckl0ZW1JZDogU3RyaW5nKFByb2R1Y3RTb3J0aW5nLlBSSUNFX0RFU0MpLFxuICAgICAgICBkaXNwbGF5TmFtZTogJ1ByaWNlOiBIaWdoIHRvIExvdycsXG4gICAgICAgIHByb2R1Y3RDb3VudDogMCxcbiAgICAgICAgaXNTZWxlY3RlZDogcHJvZHVjdFNvcnRpbmcgPT09IFByb2R1Y3RTb3J0aW5nLlBSSUNFX0RFU0MsXG4gICAgICB9LFxuICAgIF07XG5cbiAgICByZXR1cm4gW3sgZmlsdGVySWQ6ICdzb3J0JywgZGlzcGxheU5hbWU6ICdTT1JUJywgaXRlbXM6IHNvcnRPcHRpb25zIH0sIC4uLnNlYXJjaEZpbHRlcnNdIGFzIFNlYXJjaEZpbHRlckRhdHVtW107XG4gIH0sIFtwcm9kdWN0U29ydGluZywgc2VhcmNoRmlsdGVyc10pO1xuXG4gIGNvbnN0IGZpbHRlckJ1dHRvblRleHQgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCBzZWxlY3RlZENvdW50ID0gZmlsdGVycy5yZWR1Y2UoKGFjYzogbnVtYmVyLCBmaWx0ZXIpID0+IHtcbiAgICAgIGlmIChmaWx0ZXIuZmlsdGVySWQgPT09ICdzb3J0Jykge1xuICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFjYyArIGZpbHRlci5pdGVtcy5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0uaXNTZWxlY3RlZCkubGVuZ3RoO1xuICAgIH0sIDApO1xuICAgIGlmIChzZWxlY3RlZENvdW50ID09PSAwKSB7XG4gICAgICByZXR1cm4gJ0ZpbHRlciAmIFNvcnQnO1xuICAgIH1cbiAgICByZXR1cm4gYEZpbHRlciAmIFNvcnQgKCR7c2VsZWN0ZWRDb3VudH0pYDtcbiAgfSwgW2ZpbHRlcnNdKTtcblxuICAvLyBDYWxsYmFja3NcbiAgY29uc3QgeyB0cmFja0V2ZW50IH0gPSB1c2VBbXBsaXR1ZGUoKTtcblxuXG4gIGNvbnN0IGhhbmRsZVRvZ2dsZUR5bmFtaWNGaWx0ZXIgPSB1c2VDYWxsYmFjayhcbiAgICAoeyBmaWx0ZXIsIGR5bmFtaWNGaWx0ZXJEaXNwbGF5TmFtZSB9OiB7IGZpbHRlcjogc3RyaW5nOyBkeW5hbWljRmlsdGVyRGlzcGxheU5hbWU6IHN0cmluZyB9KSA9PiB7XG4gICAgICB0cmFja0V2ZW50KHtcbiAgICAgICAgZXZlbnROYW1lOiBTcGlmZnlNZXRyaWNzRXZlbnROYW1lLlNlYXJjaEZpbHRlckNsaWNrZWQsXG4gICAgICAgIGV2ZW50UHJvcHM6IHtcbiAgICAgICAgICBmaWx0ZXJUeXBlOiAnRHluYW1pYycsXG4gICAgICAgICAgZmlsdGVyVmFsdWU6IGZpbHRlcixcbiAgICAgICAgICBxdWVyeVRleHQ6IHNlYXJjaFRleHQsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICAgIGFkZEZpbHRlcihjcmVhdGVGaWx0ZXJPcHRpb24oJ2R5bmFtaWMnLCBmaWx0ZXIsIGR5bmFtaWNGaWx0ZXJEaXNwbGF5TmFtZSkpO1xuICAgICAgc2Nyb2xsVG9Ub3AoKTtcbiAgICB9LFxuICAgIFthZGRGaWx0ZXIsIHNlYXJjaFRleHQsIHNjcm9sbFRvVG9wXSxcbiAgKTtcblxuICBjb25zdCBoYW5kbGVSZW1vdmVGaWx0ZXIgPSB1c2VDYWxsYmFjayhcbiAgICAoZmlsdGVyOiBTZWxlY3RlZEZpbHRlck9wdGlvbikgPT4ge1xuICAgICAgcmVtb3ZlRmlsdGVyKGZpbHRlci5pZCk7XG4gICAgICBzY3JvbGxUb1RvcCgpO1xuICAgIH0sXG4gICAgW3JlbW92ZUZpbHRlciwgc2Nyb2xsVG9Ub3BdLFxuICApO1xuXG5cbiAgY29uc3QgaGFuZGxlU2VsZWN0RmlsdGVySXRlbTogU2VsZWN0RmlsdGVySXRlbSA9IHVzZUNhbGxiYWNrKFxuICAgICh7XG4gICAgICBmaWx0ZXJJZCxcbiAgICAgIGZpbHRlckl0ZW1JZCxcbiAgICAgIGlzU2VsZWN0ZWQsXG4gICAgICBkaXNwbGF5TmFtZSxcbiAgICB9OiB7XG4gICAgICBmaWx0ZXJJZDogc3RyaW5nO1xuICAgICAgZmlsdGVySXRlbUlkOiBzdHJpbmc7XG4gICAgICBpc1NlbGVjdGVkOiBib29sZWFuO1xuICAgICAgZGlzcGxheU5hbWU6IHN0cmluZztcbiAgICB9KSA9PiB7XG4gICAgICBpZiAoZmlsdGVySWQgPT09ICdzb3J0Jykge1xuICAgICAgICBjb25zdCBuZXdTb3J0ID0gZmlsdGVySXRlbUlkIGFzIFByb2R1Y3RTb3J0aW5nO1xuICAgICAgICB0cmFja0V2ZW50KHtcbiAgICAgICAgICBldmVudE5hbWU6IFNwaWZmeU1ldHJpY3NFdmVudE5hbWUuU2VhcmNoU29ydENsaWNrZWQsXG4gICAgICAgICAgZXZlbnRQcm9wczoge1xuICAgICAgICAgICAgc29ydFR5cGU6IG5ld1NvcnQsXG4gICAgICAgICAgICBxdWVyeVRleHQ6IHNlYXJjaFRleHQsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIHNldFByb2R1Y3RTb3J0aW5nKG5ld1NvcnQpO1xuICAgICAgICBzY3JvbGxUb1RvcCgpO1xuICAgICAgfSBlbHNlIGlmICghaXNTZWxlY3RlZCkge1xuICAgICAgICByZW1vdmVGaWx0ZXIoYCR7ZmlsdGVySWR9OiR7ZmlsdGVySXRlbUlkfWApO1xuICAgICAgICBzY3JvbGxUb1RvcCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdHJhY2tFdmVudCh7XG4gICAgICAgICAgZXZlbnROYW1lOiBTcGlmZnlNZXRyaWNzRXZlbnROYW1lLlNlYXJjaEZpbHRlckNsaWNrZWQsXG4gICAgICAgICAgZXZlbnRQcm9wczoge1xuICAgICAgICAgICAgZmlsdGVyVHlwZTogJ1N0YXRpYycsXG4gICAgICAgICAgICBmaWx0ZXJDYXRlZ29yeTogZmlsdGVySWQsXG4gICAgICAgICAgICBmaWx0ZXJWYWx1ZTogZmlsdGVySXRlbUlkLFxuICAgICAgICAgICAgcXVlcnlUZXh0OiBzZWFyY2hUZXh0LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgICBhZGRGaWx0ZXIoY3JlYXRlRmlsdGVyT3B0aW9uKGZpbHRlcklkLCBmaWx0ZXJJdGVtSWQsIGRpc3BsYXlOYW1lKSk7XG4gICAgICAgIHNjcm9sbFRvVG9wKCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBbYWRkRmlsdGVyLCByZW1vdmVGaWx0ZXIsIHNldFByb2R1Y3RTb3J0aW5nLCBzZWFyY2hUZXh0LCBzY3JvbGxUb1RvcF0sXG4gICk7XG5cblxuICBjb25zdCBoYW5kbGVDbGVhckFsbEZpbHRlcnMgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2V0UHJvZHVjdFNvcnRpbmcoUHJvZHVjdFNvcnRpbmcuRkVBVFVSRUQpO1xuICAgIGNsZWFyRmlsdGVycygpO1xuICAgIHNjcm9sbFRvVG9wKCk7XG4gIH0sIFtzZXRQcm9kdWN0U29ydGluZywgY2xlYXJGaWx0ZXJzLCBzY3JvbGxUb1RvcF0pO1xuXG4gIC8vIFNpZGUgRWZmZWN0c1xuICB1c2VUcmFja0NvbXBvbmVudFZpc2libGVFdmVudChcbiAgICBTcGlmZnlXaWRnZXRzLlNlYXJjaFJlc3VsdHMsXG4gICAgc2VhcmNoUmVzdWx0c1JlZixcbiAgICB7fSxcbiAgICBTcGlmZnlNZXRyaWNzRXZlbnROYW1lLlNlYXJjaENvbXBvbmVudFZpc2libGUsXG4gICk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoc2VhcmNoUmVzdWx0c1N0YXRlID09PSBTZWFyY2hSZXN1bHRzU3RhdGUuUmVzdWx0cyB8fCBzZWFyY2hSZXN1bHRzU3RhdGUgPT09IFNlYXJjaFJlc3VsdHNTdGF0ZS5Ob1Jlc3VsdHMpIHtcbiAgICAgIHRyYWNrRXZlbnQoe1xuICAgICAgICBldmVudE5hbWU6IFNwaWZmeU1ldHJpY3NFdmVudE5hbWUuU2VhcmNoUmVzdWx0c1ZpZXdlZCxcbiAgICAgICAgZXZlbnRQcm9wczoge1xuICAgICAgICAgIHF1ZXJ5VGV4dDogc2VhcmNoVGV4dCxcbiAgICAgICAgICByZXN1bHRzQ291bnQ6IHByb2R1Y3RMaXN0Lmxlbmd0aCxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwgW3Byb2R1Y3RMaXN0Lmxlbmd0aCwgc2VhcmNoUmVzdWx0c1N0YXRlXSk7XG5cbiAgLy8gVGhpcyBpcyB0aGUgc2luZ2xlIHNvdXJjZSBvZiB0cnV0aCBmb3IgdGhlIHNlYXJjaCB0ZXh0IHRyaWdnZXJpbmcgYSBzZWFyY2hcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAocXVlcnkgJiYgcXVlcnkgIT09IHNlYXJjaFRleHQpIHtcbiAgICAgIGNvbnN0IGVzcSA9IG5ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJjaCkuZ2V0KCdlc3EnKTtcbiAgICAgIHNldFNlYXJjaFRleHQocXVlcnkpO1xuICAgICAgcGVyZm9ybVNlYXJjaCh7IHF1ZXJ5OiBlc3EgPz8gcXVlcnkgfSk7XG4gICAgfVxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gIH0sIFtwZXJmb3JtU2VhcmNoLCBxdWVyeSwgc2V0U2VhcmNoVGV4dF0pO1xuXG4gIHJldHVybiB7XG4gICAgc2VhcmNoRGF0YSxcbiAgICBzZWFyY2hSZXNwb25zZUlkOiBzZWFyY2hEYXRhPy5zZWFyY2hSZXNwb25zZUlkID8/ICcnLFxuICAgIG1lcmNoYW50U2hvcnROYW1lOiBzYWZlTWVyY2hhbnRTaG9ydE5hbWUsXG4gICAgcmVjb21tZW5kZWRQcm9kdWN0c0hlYWRpbmc6IHNhZmVSZWNvbW1lbmRlZFByb2R1Y3RzSGVhZGluZyxcbiAgICBzZWFyY2hPdmVybGF5SGVhZGluZzogc2FmZVNlYXJjaE92ZXJsYXlIZWFkaW5nLFxuICAgIHByb2R1Y3RDYXJkQ29uZmlnOiBzYWZlUHJvZHVjdENhcmRDb25maWcsXG4gICAgcHJvZHVjdExpc3QsXG4gICAgcmVjb21tZW5kZWRQcm9kdWN0cyxcbiAgICBhdXRvY29tcGxldGVSZXN1bHRzLFxuICAgIHNlYXJjaEZpbHRlcnM6IGZpbHRlcnMsXG4gICAgYXZhaWxhYmxlRHluYW1pY0ZpbHRlcnMsXG4gICAgc2VsZWN0ZWRGaWx0ZXJPcHRpb25zLFxuICAgIHNlYXJjaFRleHQsXG4gICAgcXVlcnk6IHF1ZXJ5IHx8ICcnLFxuICAgIHNlYXJjaFJlc3VsdHNTdGF0ZSxcbiAgICBpc0xvYWRpbmdTZWFyY2gsXG4gICAgaXNGaWx0ZXJPcGVuLFxuICAgIHNob3VsZFNob3dBdXRvY29tcGxldGUsXG4gICAgZm9jdXNlZEluZGV4LFxuICAgIGZvY3VzZWRPcHRpb25JZCxcbiAgICBmaWx0ZXJCdXR0b25UZXh0LFxuICAgIG9uU2VhcmNoSW5wdXRDaGFuZ2U6IGhhbmRsZVNlYXJjaElucHV0Q2hhbmdlLFxuICAgIG9uU3VibWl0U2VhcmNoOiBoYW5kbGVTdWJtaXRTZWFyY2gsXG4gICAgb25BdXRvY29tcGxldGVTZWxlY3Q6IGhhbmRsZUF1dG9jb21wbGV0ZVNlbGVjdCxcbiAgICBvbktleURvd246IGhhbmRsZUtleURvd24sXG4gICAgb25TZWFyY2hJbnB1dEZvY3VzOiBoYW5kbGVTZWFyY2hJbnB1dEZvY3VzLFxuICAgIG9uU2VhcmNoSW5wdXRCbHVyOiBoYW5kbGVTZWFyY2hJbnB1dEJsdXIsXG4gICAgb25Ub2dnbGVEeW5hbWljRmlsdGVyOiBoYW5kbGVUb2dnbGVEeW5hbWljRmlsdGVyLFxuICAgIG9uU2VsZWN0RmlsdGVySXRlbTogaGFuZGxlU2VsZWN0RmlsdGVySXRlbSxcbiAgICBvblJlbW92ZUZpbHRlcjogaGFuZGxlUmVtb3ZlRmlsdGVyLFxuICAgIG9uQ2xlYXJBbGxGaWx0ZXJzOiBoYW5kbGVDbGVhckFsbEZpbHRlcnMsXG4gICAgc2V0SXNGaWx0ZXJPcGVuLFxuICAgIHJlc2V0U2VhcmNoLFxuICAgIHNlYXJjaFJlc3VsdHNSZWYsXG4gIH07XG59OyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFzQ0EsTUFBYSxrQkFBa0IsRUFDN0Isb0JBQW9CLElBQ3BCLGNBQ0EscUJBQytDO0FBQy9DLFNBQVEsSUFBSSxrQkFBa0IsbUJBQW1CLGNBQWMsZUFBZTtDQUM5RSxNQUFNLGdDQUFxQkEscUNBQXdCO0NBR25ELE1BQU0sQ0FBQyxZQUFZLHFDQUEwQixrQkFBa0I7Q0FDL0QsTUFBTSxDQUFDLFNBQVMsa0NBQXVCLGtCQUFrQixNQUFNLENBQUMsU0FBUyxFQUFFO0NBQzNFLE1BQU0sQ0FBQyxXQUFXLG9DQUF5QixNQUFNO0NBQ2pELE1BQU0sQ0FBQyxjQUFjLHVDQUE0QixHQUFHO0NBQ3BELE1BQU0sQ0FBQyxpQkFBaUIsMENBQ3RCLE9BQ0Q7Q0FFRCxNQUFNLG9EQURpQ0MsMkNBQXNCLENBQ1Q7Q0FDcEQsTUFBTSx3QkFBd0IsMEJBQTBCLFNBQVM7Q0FHakUsTUFBTSw0Q0FBaUMsTUFBTTtDQUc3QyxNQUFNLHlCQUF5QixXQUFXLGFBQWE7Q0FFdkQsTUFBTSwyQkFBMkI7Q0FHakMsTUFBTSx3Q0FDRztFQUNMLGNBQWM7RUFDZCxnQkFBZ0I7RUFFaEIsV0FBVztFQUVYLFVBQVU7RUFFVixVQUFVO0VBRVYsb0JBQW9CO0VBRXBCLE1BQU0sRUFBRTtFQUVSLG1CQUFtQjtFQUVuQixnQkFBZ0I7RUFDakIsR0FDRCxFQUFFLENBQ0g7Q0FFRCxNQUFNLGdDQUFxQjtBQUN6QixNQUFJLENBQUMsMEJBQTBCLE9BQVEsUUFBTztBQUM5QyxTQUFPLElBQUlDLGdCQUFLLDJCQUEyQixZQUFZO0lBQ3RELENBQUMsMkJBQTJCLFlBQVksQ0FBQztDQUc1QyxNQUFNLCtDQUFvQztBQUN4QyxNQUFJLENBQUMseUJBQXlCLENBQUMsS0FDN0IsUUFBTyxFQUFFO0FBR1gsTUFBSSxDQUFDLFdBQVcsTUFBTSxDQUNwQixRQUFPLEVBQUU7QUFNWCxTQUhvQixLQUFLLE9BQU8sV0FBVyxDQUl4QyxNQUFNLEdBQUcseUJBQXlCLENBQ2xDLEtBQUssV0FBVyxPQUFPLEtBQUs7SUFDOUI7RUFBQztFQUF1QjtFQUFNO0VBQVk7RUFBeUIsQ0FBQztDQUd2RSxNQUFNLGtEQUNILGFBQXFCO0FBR3BCLE1BQUksYUFBYSxXQUNmLGNBQWEsS0FBSztBQUdwQixNQUFJLFNBQVMsV0FBVyxFQUN0QixTQUFRO0dBQ04sV0FBV0MsZ0RBQXVCO0dBQ2xDLFlBQVksRUFDVixjQUNEO0dBQ0YsQ0FBQztBQUVKLGdCQUFjLFNBQVM7QUFDdkIsYUFBVyxTQUFTLE1BQU0sQ0FBQyxTQUFTLEVBQUU7QUFDdEMsa0JBQWdCLEdBQUc7QUFDbkIscUJBQW1CLE9BQVU7SUFFL0I7RUFBQztFQUFjO0VBQVk7RUFBTSxDQUNsQztDQUVELE1BQU0sc0RBQTJDO0FBQy9DLGVBQWEsS0FBSztJQUNqQixFQUFFLENBQUM7Q0FFTixNQUFNLHFEQUEwQztBQUM5QyxtQkFBaUI7QUFDZixPQUFJLENBQUMsd0JBQXdCLFNBQVM7QUFDcEMsaUJBQWEsTUFBTTtBQUNuQixvQkFBZ0IsR0FBRztBQUNuQix1QkFBbUIsT0FBVTs7S0FFOUIsSUFBSTtJQUNOLEVBQUUsQ0FBQztDQUVOLE1BQU0sa0RBQXVDO0FBQzNDLGVBQWEsTUFBTTtBQUNuQixNQUFJLFdBQVcsTUFBTSxJQUFJLGdCQUFnQjtBQUN2QyxXQUFRO0lBQ04sV0FBV0EsZ0RBQXVCO0lBQ2xDLFlBQVk7S0FDVjtLQUNBLFdBQVcsV0FBVyxNQUFNO0tBQzdCO0lBQ0QsMkJBQTJCO0lBQzVCLENBQUM7QUFDRixrQkFBZSxXQUFXLE1BQU0sQ0FBQzs7SUFFbEM7RUFBQztFQUFZO0VBQWdCO0VBQWM7RUFBTSxDQUFDO0NBRXJELE1BQU0sbURBQ0gsWUFBb0IsaUJBQTBCO0FBQzdDLDBCQUF3QixVQUFVO0FBQ2xDLGdCQUFjLFdBQVc7QUFDekIsYUFBVyxXQUFXLE1BQU0sQ0FBQyxTQUFTLEVBQUU7QUFDeEMsZUFBYSxNQUFNO0FBRW5CLFVBQVE7R0FDTixXQUFXQSxnREFBdUI7R0FDbEMsWUFBWSxFQUNWLGNBQ0Q7R0FDRixDQUFDO0FBRUYsTUFBSSxlQUNGLGdCQUFlLFdBQVcsTUFBTSxDQUFDO0FBR25DLG1CQUFpQjtBQUNmLDJCQUF3QixVQUFVO0tBQ2pDLElBQUk7SUFFVDtFQUFDO0VBQWdCO0VBQWM7RUFBTSxDQUN0QztDQUVELE1BQU0sd0NBQ0gsVUFBaUQ7QUFDaEQsTUFBSSxNQUFNLFFBQVEsYUFBYTtBQUM3QixTQUFNLGdCQUFnQjtHQUN0QixNQUFNLFlBQVksZUFBZSxLQUFLLG9CQUFvQjtBQUMxRCxtQkFBZ0IsU0FBUztBQUN6QixzQkFBbUIsVUFBVSxXQUFXO2FBQy9CLE1BQU0sUUFBUSxXQUFXO0FBQ2xDLFNBQU0sZ0JBQWdCO0dBQ3RCLE1BQU0sWUFDSCxlQUFlLElBQUksb0JBQW9CLFVBQ3hDLG9CQUFvQjtBQUN0QixtQkFBZ0IsU0FBUztBQUN6QixzQkFBbUIsVUFBVSxXQUFXO2FBQy9CLE1BQU0sUUFBUSxRQUN2QixLQUFJLGlCQUFpQixJQUFJO0FBQ3ZCLFNBQU0sZ0JBQWdCO0FBQ3RCLHVCQUFvQjtTQUNmO0FBQ0wsU0FBTSxnQkFBZ0I7R0FDdEIsTUFBTSxpQkFBaUIsb0JBQW9CO0FBQzNDLDRCQUF5QixnQkFBZ0IsYUFBYTs7V0FFL0MsTUFBTSxRQUFRLFVBQVU7QUFDakMsU0FBTSxnQkFBZ0I7QUFDdEIsbUJBQWdCLEdBQUc7QUFDbkIsc0JBQW1CLE9BQVU7O0lBR2pDO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDRCxDQUNGO0NBRUQsTUFBTSwrQ0FBb0MsU0FBaUI7QUFDekQsZ0JBQWMsS0FBSztBQUNuQixhQUFXLEtBQUssTUFBTSxDQUFDLFNBQVMsRUFBRTtJQUNqQyxFQUFFLENBQUM7Q0FFTixNQUFNLDJDQUFnQztBQUNwQyxnQkFBYyxHQUFHO0FBQ2pCLGFBQVcsTUFBTTtBQUNqQixlQUFhLE1BQU07QUFDbkIsa0JBQWdCLEdBQUc7QUFDbkIscUJBQW1CLE9BQVU7SUFDNUIsRUFBRSxDQUFDO0FBRU4sUUFBTztFQUVMO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBR0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBR0EsZUFBZTtFQUNmO0VBQ0Q7Ozs7O0FDblFILElBQUlDLDJCQUVPO0FBUVgsTUFBYSxvQ0FBb0M7QUFDL0MsS0FBSSxDQUFDLHlCQUNILE9BQU0sSUFBSSxNQUNSLDZGQUNEO0FBRUgsUUFBTzs7Ozs7QUNQVCxNQUFhLHVDQUFtRDtDQUM5RCxNQUFNO0NBQ04sU0FBUztDQUNULE9BQU87Q0FDUCxnQkFBZ0I7Q0FDakIsQ0FBQztBQUVGLE1BQWEsOENBQ1gsTUFDQSxPQUFPLEtBQUssS0FBSyxXQUFtQztBQUdsRCxLQUZxQixJQUFJLHFCQUFxQixDQUU3QixRQUNmO0FBR0YsS0FBSSxzQkFBc0I7RUFDeEIsTUFBTTtFQUNOLFNBQVM7RUFDVCxPQUFPO0VBQ1AsZ0JBQWdCLE9BQU87RUFDeEIsQ0FBQztBQUVGLEtBQUk7RUFFRixNQUFNLFNBQVMsTUFEVSw2QkFBNkIsQ0FDaEIsT0FBTztBQUM3QyxNQUFJLHNCQUFzQjtHQUN4QixNQUFNO0dBQ04sU0FBUztHQUNULE9BQU87R0FDUCxnQkFBZ0IsT0FBTztHQUN4QixDQUFDO1VBQ0tDLE9BQWdCO0VBQ3ZCLE1BQU0sZUFDSixpQkFBaUIsUUFBUSxNQUFNLFVBQVU7QUFDM0MsTUFBSSxzQkFBc0I7R0FDeEIsTUFBTTtHQUNOLFNBQVM7R0FDVCxPQUFPO0dBQ1AsZ0JBQWdCLE9BQU87R0FDeEIsQ0FBQzs7RUFHUDtBQUdELE1BQWEseUNBQThCLFFBQVE7QUFFakQsUUFEc0IsSUFBSSxxQkFBcUIsQ0FBQyxNQUMxQixZQUFZLEVBQUU7RUFDcEM7QUFFRixNQUFhLCtDQUFvQyxRQUFRO0FBQ3ZELFFBQU8sSUFBSSxxQkFBcUIsQ0FBQztFQUNqQztBQUVGLE1BQWEsNkNBQWtDLFFBQVE7QUFDckQsUUFBTyxJQUFJLHFCQUFxQixDQUFDO0VBQ2pDOzs7Ozs7Ozs7Ozs7QUNqREYsTUFBYSwrQkFDNEM7Q0FDckQsTUFBTSxFQUFFLHVCQUF1QkMseURBQXVCO0NBQ3RELE1BQU0sWUFBWSxvQkFBb0IscUJBQ3BDQyxrQ0FBYSw2QkFDZDtDQUNELE1BQU0sOENBQW1DLHNCQUFzQjtDQUMvRCxNQUFNLGdEQUFxQyw0QkFBNEI7Q0FDdkUsTUFBTSxFQUFFLDJDQUFnQyxxQkFBcUI7Q0FDN0QsTUFBTSxjQUFjQyxzQ0FBaUI7QUFFckMsNEJBQWdCO0VBQ2QsTUFBTSx3QkFBd0IsWUFBWSxnQkFBZ0IsV0FBVyxlQUNqRSxZQUFZLGdCQUFnQixXQUFXLGFBQWEsc0JBQ3BELEVBQUU7QUFFTixNQUNFLGFBQ0EseUJBQ0Esc0JBQXNCLFNBQVMsS0FDL0IsQ0FBQyxlQUVELHlCQUF3QixFQUFFLFlBQVksdUJBQXVCLENBQUM7SUFFL0Q7RUFBQztFQUFXO0VBQXlCO0VBQWdCO0VBQVksQ0FBQztBQUVyRSxRQUFPLFlBQVksc0JBQXNCLEVBQUU7Ozs7O0FDeUMvQyxNQUFhLGFBQWEsRUFBRSxnQkFBZ0IsVUFBdUMsRUFBRSxLQUE0QjtDQUUvRyxNQUFNLFNBQVNDLHNDQUFpQjtDQUNoQyxNQUFNLHVDQUE0QkMsc0NBQWlCO0NBQ25ELE1BQU0sRUFBRSxNQUFNLFlBQVksU0FBUyw0Q0FDcEJDLDBCQUFXO0NBQzFCLE1BQU0sc0NBQTJCQywwQ0FBMkI7Q0FDNUQsTUFBTSxzQ0FBMkJDLGlDQUFrQjtDQUNuRCxNQUFNLENBQUMsRUFBRSw4QkFBbUJDLGdDQUFpQjtDQUM3QyxNQUFNLENBQUMsY0FBYyxzQ0FBMkJDLHNDQUFpQjtDQUNqRSxNQUFNLENBQUMsNENBQWlDQyx5Q0FBMEI7Q0FDbEUsTUFBTSxrQ0FBdUJDLG1DQUFvQjtDQUNqRCxNQUFNLHFDQUEwQkMsc0NBQXVCO0NBQ3ZELE1BQU0sQ0FBQyxnQkFBZ0Isd0NBQTZCQyx3Q0FBeUI7Q0FDN0UsTUFBTSxxQ0FBMEJDLHNDQUF1QjtDQUN2RCxNQUFNLHdDQUE2QkMsaUNBQWtCO0NBQ3JELE1BQU0sc0JBQXNCLHdCQUF3QjtDQUdwRCxNQUFNLHFDQUEwQyxLQUFLO0NBR3JELE1BQU0sMkNBQWdDO0VBQ3BDLE1BQU0sWUFBWSxpQkFBaUI7QUFDbkMsTUFBSSxVQUNGLFdBQVUsU0FBUztHQUFFLEtBQUs7R0FBRyxVQUFVO0dBQVUsQ0FBQztNQUVsRCxRQUFPLFNBQVM7R0FBRSxLQUFLO0dBQUcsVUFBVTtHQUFVLENBQUM7SUFFaEQsRUFBRSxDQUFDO0NBV04sTUFBTSxFQUNKLFlBQ0EsY0FDQSxpQkFDQSxxQkFDQSx3QkFDQSx5QkFDQSx3QkFDQSx1QkFDQSxlQUNBLDBCQUNBLG9CQUNBLGVBQ0EsZ0JBckJrQixlQUFlO0VBQ2pDLG1CQUFtQjtFQUNuQixjQUFjQyw2QkFBYztFQUM1QixpQkFBaUIsZ0JBQWdCO0FBQy9CLGlCQUFjLEVBQUUsT0FBTyxhQUFhLEVBQUUsY0FBYzs7RUFFdkQsQ0FBQztDQWlCRixNQUFNLHFCQUFxQkMsb0NBQXNCLGlCQUFpQixXQUFXO0NBRTdFLE1BQU0saUJBQWlCLFlBQVksV0FBVyxFQUFFO0NBR2hELE1BQU0sd0JBQXdCLFFBQVEsZ0JBQWdCLFdBQ2xELHFCQUFxQjtFQUN2QixTQUFTO0VBQ1QsY0FBYztFQUNkLGVBQWU7RUFDaEI7Q0FDRCxNQUFNLHdCQUF3QixnQkFBZ0I7Q0FDOUMsTUFBTSxlQUFlLFFBQVEsZ0JBQWdCLFdBQVc7Q0FDeEQsTUFBTSxpQ0FBaUMsY0FBYyw4QkFBOEI7Q0FDbkYsTUFBTSwyQkFBMkIsY0FBYyx3QkFBd0I7Q0FDdkUsTUFBTSxtREFBd0M7QUFDNUMsU0FBTyxlQUNKLFFBQ0Usc0JBQ0MsQ0FBQyxzQkFBc0IsTUFBTSxXQUFXLE9BQU8sT0FBTyxXQUFXLG9CQUFvQixDQUN4RixDQUNBLEtBQUssdUJBQXVCO0dBQzNCLE1BQU07R0FDTixhQUFhQyx3Q0FBd0Isa0JBQWtCO0dBQ3hELEVBQUU7SUFDSixDQUFDLGdCQUFnQixzQkFBc0IsQ0FBQztDQUUzQyxNQUFNLG1DQUF3QjtBQXNCNUIsU0FBTyxDQUFDO0dBQUUsVUFBVTtHQUFRLGFBQWE7R0FBUSxPQXJCN0I7SUFDbEI7S0FDRSxjQUFjLE9BQU9DLCtCQUFlLFNBQVM7S0FDN0MsYUFBYTtLQUNiLGNBQWM7S0FDZCxZQUFZLG1CQUFtQkEsK0JBQWU7S0FDL0M7SUFDRDtLQUNFLGNBQWMsT0FBT0EsK0JBQWUsVUFBVTtLQUM5QyxhQUFhO0tBQ2IsY0FBYztLQUNkLFlBQVksbUJBQW1CQSwrQkFBZTtLQUMvQztJQUNEO0tBQ0UsY0FBYyxPQUFPQSwrQkFBZSxXQUFXO0tBQy9DLGFBQWE7S0FDYixjQUFjO0tBQ2QsWUFBWSxtQkFBbUJBLCtCQUFlO0tBQy9DO0lBQ0Y7R0FFb0UsRUFBRSxHQUFHLGNBQWM7SUFDdkYsQ0FBQyxnQkFBZ0IsY0FBYyxDQUFDO0NBRW5DLE1BQU0sNENBQWlDO0VBQ3JDLE1BQU0sZ0JBQWdCLFFBQVEsUUFBUSxLQUFhLFdBQVc7QUFDNUQsT0FBSSxPQUFPLGFBQWEsT0FDdEIsUUFBTztBQUVULFVBQU8sTUFBTSxPQUFPLE1BQU0sUUFBUSxTQUFTLEtBQUssV0FBVyxDQUFDO0tBQzNELEVBQUU7QUFDTCxNQUFJLGtCQUFrQixFQUNwQixRQUFPO0FBRVQsU0FBTyxrQkFBa0IsY0FBYztJQUN0QyxDQUFDLFFBQVEsQ0FBQztDQUdiLE1BQU0sRUFBRSxlQUFlQyx1Q0FBYztDQUdyQyxNQUFNLG9EQUNILEVBQUUsUUFBUSwrQkFBcUY7QUFDOUYsYUFBVztHQUNULFdBQVdDLGdEQUF1QjtHQUNsQyxZQUFZO0lBQ1YsWUFBWTtJQUNaLGFBQWE7SUFDYixXQUFXO0lBQ1o7R0FDRixDQUFDO0FBQ0YsWUFBVUMsa0NBQW1CLFdBQVcsUUFBUSx5QkFBeUIsQ0FBQztBQUMxRSxlQUFhO0lBRWY7RUFBQztFQUFXO0VBQVk7RUFBWSxDQUNyQztDQUVELE1BQU0sNkNBQ0gsV0FBaUM7QUFDaEMsZUFBYSxPQUFPLEdBQUc7QUFDdkIsZUFBYTtJQUVmLENBQUMsY0FBYyxZQUFZLENBQzVCO0NBR0QsTUFBTUMsaURBQ0gsRUFDQyxVQUNBLGNBQ0EsWUFDQSxrQkFNSTtBQUNKLE1BQUksYUFBYSxRQUFRO0dBQ3ZCLE1BQU0sVUFBVTtBQUNoQixjQUFXO0lBQ1QsV0FBV0YsZ0RBQXVCO0lBQ2xDLFlBQVk7S0FDVixVQUFVO0tBQ1YsV0FBVztLQUNaO0lBQ0YsQ0FBQztBQUNGLHFCQUFrQixRQUFRO0FBQzFCLGdCQUFhO2FBQ0osQ0FBQyxZQUFZO0FBQ3RCLGdCQUFhLEdBQUcsU0FBUyxHQUFHLGVBQWU7QUFDM0MsZ0JBQWE7U0FDUjtBQUNMLGNBQVc7SUFDVCxXQUFXQSxnREFBdUI7SUFDbEMsWUFBWTtLQUNWLFlBQVk7S0FDWixnQkFBZ0I7S0FDaEIsYUFBYTtLQUNiLFdBQVc7S0FDWjtJQUNGLENBQUM7QUFDRixhQUFVQyxrQ0FBbUIsVUFBVSxjQUFjLFlBQVksQ0FBQztBQUNsRSxnQkFBYTs7SUFHakI7RUFBQztFQUFXO0VBQWM7RUFBbUI7RUFBWTtFQUFZLENBQ3RFO0NBR0QsTUFBTSxxREFBMEM7QUFDOUMsb0JBQWtCSCwrQkFBZSxTQUFTO0FBQzFDLGdCQUFjO0FBQ2QsZUFBYTtJQUNaO0VBQUM7RUFBbUI7RUFBYztFQUFZLENBQUM7QUFHbEQsa0VBQ0VILDZCQUFjLGVBQ2Qsa0JBQ0EsRUFBRSxFQUNGSyxnREFBdUIsdUJBQ3hCO0FBRUQsNEJBQWdCO0FBQ2QsTUFBSSx1QkFBdUJHLGlDQUFtQixXQUFXLHVCQUF1QkEsaUNBQW1CLFVBQ2pHLFlBQVc7R0FDVCxXQUFXSCxnREFBdUI7R0FDbEMsWUFBWTtJQUNWLFdBQVc7SUFDWCxjQUFjLFlBQVk7SUFDM0I7R0FDRixDQUFDO0lBRUgsQ0FBQyxZQUFZLFFBQVEsbUJBQW1CLENBQUM7QUFHNUMsNEJBQWdCO0FBQ2QsTUFBSSxTQUFTLFVBQVUsWUFBWTtHQUNqQyxNQUFNLE1BQU0sSUFBSSxnQkFBZ0IsT0FBTyxTQUFTLE9BQU8sQ0FBQyxJQUFJLE1BQU07QUFDbEUsaUJBQWMsTUFBTTtBQUNwQixpQkFBYyxFQUFFLE9BQU8sT0FBTyxPQUFPLENBQUM7O0lBR3ZDO0VBQUM7RUFBZTtFQUFPO0VBQWMsQ0FBQztBQUV6QyxRQUFPO0VBQ0w7RUFDQSxrQkFBa0IsWUFBWSxvQkFBb0I7RUFDbEQsbUJBQW1CO0VBQ25CLDRCQUE0QjtFQUM1QixzQkFBc0I7RUFDdEIsbUJBQW1CO0VBQ25CO0VBQ0E7RUFDQTtFQUNBLGVBQWU7RUFDZjtFQUNBO0VBQ0E7RUFDQSxPQUFPLFNBQVM7RUFDaEI7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxxQkFBcUI7RUFDckIsZ0JBQWdCO0VBQ2hCLHNCQUFzQjtFQUN0QixXQUFXO0VBQ1gsb0JBQW9CO0VBQ3BCLG1CQUFtQjtFQUNuQix1QkFBdUI7RUFDdkIsb0JBQW9CO0VBQ3BCLGdCQUFnQjtFQUNoQixtQkFBbUI7RUFDbkI7RUFDQTtFQUNBO0VBQ0QifQ==
|
|
@@ -11,7 +11,7 @@ import "../../spiffyWidgets-DK7Ekcy7.cjs";
|
|
|
11
11
|
import { SearchResult } from "../../search-6RrxBXD6.cjs";
|
|
12
12
|
import "../../index-OkKEOL6H.cjs";
|
|
13
13
|
import "../../types-DWorwfS-.cjs";
|
|
14
|
-
import { SelectedFilterOption } from "../../index-
|
|
14
|
+
import { SelectedFilterOption } from "../../index-Bq0xKgFw.cjs";
|
|
15
15
|
import { SearchFilterDatum, SelectFilterItem } from "../../search-filter-types-BItKtezf.cjs";
|
|
16
16
|
import { SearchResultsState } from "../../utils-C2HshI4X.cjs";
|
|
17
17
|
import { SearchResponseProduct } from "@spiffy-ai/commerce-api-client";
|
|
@@ -11,7 +11,7 @@ import "../../spiffyWidgets-MTUAQq_u.js";
|
|
|
11
11
|
import { SearchResult } from "../../search-DrJiCT7d.js";
|
|
12
12
|
import "../../index-D7htGSQC.js";
|
|
13
13
|
import "../../types-BegmH0S1.js";
|
|
14
|
-
import { SelectedFilterOption } from "../../index-
|
|
14
|
+
import { SelectedFilterOption } from "../../index-DeLfV7w5.js";
|
|
15
15
|
import { SearchFilterDatum, SelectFilterItem } from "../../search-filter-types-CGFhksO3.js";
|
|
16
16
|
import { SearchResultsState } from "../../utils-aa1jK0Xe.js";
|
|
17
17
|
import { SearchResponseProduct } from "@spiffy-ai/commerce-api-client";
|