"use strict"; (self["webpackChunkramsey_plus_forms"] = self["webpackChunkramsey_plus_forms"] || []).push([[377],{ /***/ 659: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ L: () => (/* binding */ applicationConfig) /* harmony export */ }); const applicationConfig = { environment: window.FORMS_BFF_CONFIG.env, magnoliaFormsWebUrl: window.FORMS_BFF_CONFIG.env === 'local.' ? 'http://localhost:8082/forms/ramsey-plus' : `https://www.${window.FORMS_BFF_CONFIG.env}ramseysolutions.com/forms/ramsey-plus` }; /***/ }), /***/ 902: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { // EXPORTS __webpack_require__.d(__webpack_exports__, { A: () => (/* binding */ WebinarLeadForm_WebinarLeadForm) }); // EXTERNAL MODULE: ./node_modules/react/jsx-runtime.js var jsx_runtime = __webpack_require__(4848); // EXTERNAL MODULE: ./node_modules/react/index.js var react = __webpack_require__(6540); // EXTERNAL MODULE: ./node_modules/react-hook-form/dist/index.esm.mjs var index_esm = __webpack_require__(9785); // EXTERNAL MODULE: ./node_modules/react-google-recaptcha/lib/esm/index.js + 3 modules var esm = __webpack_require__(3413); // EXTERNAL MODULE: ./node_modules/@tanstack/react-query-devtools/build/modern/index.js var modern = __webpack_require__(6184); // EXTERNAL MODULE: ./node_modules/jotai/esm/react.mjs var esm_react = __webpack_require__(4843); // EXTERNAL MODULE: ./src/rplus-forms/shared/stores/webinarAtoms.ts var webinarAtoms = __webpack_require__(294); // EXTERNAL MODULE: ./node_modules/@ramsey-design-system/button/dist/Button.esm.js + 1 modules var Button_esm = __webpack_require__(9438); // EXTERNAL MODULE: ./node_modules/@ramsey-design-system/checkbox/dist/Checkbox.esm.js var Checkbox_esm = __webpack_require__(2957); // EXTERNAL MODULE: ./node_modules/@ramsey-design-system/form-field/dist/FormField.esm.js var FormField_esm = __webpack_require__(6929); // EXTERNAL MODULE: ./node_modules/@ramsey-design-system/heading/dist/Heading.esm.js var Heading_esm = __webpack_require__(1266); // EXTERNAL MODULE: ./node_modules/@ramsey-design-system/input/dist/Input.esm.js var Input_esm = __webpack_require__(7434); // EXTERNAL MODULE: ./node_modules/@ramsey-design-system/stack/dist/Stack.esm.js var Stack_esm = __webpack_require__(1338); // EXTERNAL MODULE: ./node_modules/@ramsey-design-system/text/dist/Text.esm.js var Text_esm = __webpack_require__(1030); // EXTERNAL MODULE: ./node_modules/@ramsey-design-system/link/dist/Link.esm.js var Link_esm = __webpack_require__(7930); ;// ./src/rplus-forms/shared/components/LegalVerbiage.tsx const LegalVerbiage = () => { return ((0,jsx_runtime.jsx)("div", { className: "text-center max-w-[425px] mx-auto px-2 pb-2", children: (0,jsx_runtime.jsxs)("p", { className: "text-1 sm:text-2 text-gray-70", children: ["By clicking \"Register\", you are agreeing to receive emails from Ramsey Solutions. See our", ' ', (0,jsx_runtime.jsx)(Link_esm/* default */.A, { style: { display: 'inline' }, href: "https://theramseysolutions.com/company/policies/privacy-policy", className: "text-1! sm:text-2! text-blue-40 underline!", target: "_blank", rel: "noreferrer", children: "Privacy Policy" }), ' ', "and", ' ', (0,jsx_runtime.jsx)(Link_esm/* default */.A, { style: { display: 'inline' }, href: "https://theramseysolutions.com/company/policies/terms-of-use", className: "text-1! sm:text-2! text-blue-40 underline!", target: "_blank", rel: "noreferrer", children: "Terms of Use" }), ".", (0,jsx_runtime.jsx)("br", {}), (0,jsx_runtime.jsx)("br", {}), "This site is protected by reCAPTCHA, and the Google", ' ', (0,jsx_runtime.jsx)(Link_esm/* default */.A, { style: { display: 'inline' }, href: "https://policies.google.com/privacy", className: "text-1! sm:text-2! text-blue-40 underline!", target: "_blank", rel: "noreferrer", children: "Privacy Policy" }), ' ', "and", ' ', (0,jsx_runtime.jsx)(Link_esm/* default */.A, { style: { display: 'inline' }, href: "https://policies.google.com/terms", className: "text-1! sm:text-2! text-blue-40 underline!", target: "_blank", rel: "noreferrer", children: "Terms of Service" }), ' ', "apply."] }) })); }; const LegalVerbiageWithPhoneNumber = () => { return ((0,jsx_runtime.jsx)("div", { className: "text-center max-w-[650px] mx-auto px-1 pb-2", children: (0,jsx_runtime.jsxs)("p", { className: "text-1 sm:text-2 text-gray-70", children: ["By providing us your phone number and email address and clicking \u201CRegister\u201D, you are agreeing to be contacted by Ramsey Solutions via email, phone call, and/or text messages, and to the use of an automatic telephone dialing system, artificial or prerecorded voice, and/or AI-generated messages for the purpose of advertisements for our products and services, and for the purposes outlined in our", ' ', (0,jsx_runtime.jsx)(Link_esm/* default */.A, { href: "https://theramseysolutions.com/company/policies/privacy-policy", className: "text-1! sm:text-2! text-blue-40 underline!", target: "_blank", rel: "noreferrer", children: "Privacy Policy" }), ' ', "and", ' ', (0,jsx_runtime.jsx)(Link_esm/* default */.A, { href: "https://theramseysolutions.com/company/policies/terms-of-use", className: "text-1! sm:text-2! text-blue-40 underline!", target: "_blank", rel: "noreferrer", children: "Terms of Use" }), ". Messaging and data rates may apply.\u202F Frequency varies.", (0,jsx_runtime.jsx)("br", {}), (0,jsx_runtime.jsx)("br", {}), "You may opt out of receiving text messages at any time by replying with the word STOP from the mobile device receiving the messages. You do not need to provide this consent to receive any products or services from Ramsey Solutions.", (0,jsx_runtime.jsx)("br", {}), (0,jsx_runtime.jsx)("br", {}), "This site is protected by reCAPTCHA, and the Google", ' ', (0,jsx_runtime.jsx)(Link_esm/* default */.A, { href: "https://policies.google.com/privacy", className: "text-1! sm:text-2! text-blue-40 underline!", target: "_blank", rel: "noreferrer", children: "Privacy Policy" }), ' ', "and", ' ', (0,jsx_runtime.jsx)(Link_esm/* default */.A, { href: "https://policies.google.com/terms", className: "text-1! sm:text-2! text-blue-40 underline!", target: "_blank", rel: "noreferrer", children: "Terms of Service" }), ' ', "apply."] }) })); }; ;// ./src/rplus-forms/shared/utils/analyticsFieldsToCapture.ts const fieldsToCapture = [ { key: 'rs_utm_medium', payloadKey: 'utm_medium', sourceType: ['query-parameter', 'cookie'] }, { key: 'rs_utm_term', payloadKey: 'utm_term', sourceType: ['query-parameter', 'cookie'] }, { key: 'rs_utm_source', payloadKey: 'utm_source', sourceType: ['query-parameter', 'cookie'] }, { key: 'rs_utm_content', payloadKey: 'utm_content', sourceType: ['query-parameter', 'cookie'] }, { key: 'rs_utm_campaign', payloadKey: 'utm_campaign', sourceType: ['query-parameter', 'cookie'] }, { key: 'campaign_id', payloadKey: 'utm_id', sourceType: ['query-parameter', 'cookie'] }, { key: 'rs_gclid', payloadKey: 'gclid', sourceType: ['query-parameter', 'cookie'] }, { key: 'fbclid', payloadKey: 'fbclid', sourceType: 'query-parameter' }, { key: 'gad_source', payloadKey: 'utm_source', sourceType: 'query-parameter' }, { key: 'gad_campaignid', payloadKey: 'utm_campaign_id', sourceType: 'query-parameter' } ]; const organicSources = [ { domain: 'google.', source: 'google' }, { domain: 'bing.com', source: 'bing' }, { domain: 'yahoo.', source: 'yahoo' }, { domain: 'duckduckgo.com', source: 'duckduckgo' } ]; // EXTERNAL MODULE: ./src/rplus-forms/shared/application.ts var application = __webpack_require__(659); // EXTERNAL MODULE: ./src/rplus-forms/shared/utils/constants.ts var constants = __webpack_require__(7202); ;// ./src/rplus-forms/shared/hooks/useUrlParams.ts function getHostnameFromReferrer(referrer) { let hostname = new URL(referrer).hostname; if (hostname.startsWith('www.')) { hostname = hostname.slice(4); } return hostname; } function setParamsFromReferrer(analyticsParams) { const referrer = document.referrer; if (!referrer) { analyticsParams.set('utm_medium', 'direct'); analyticsParams.set('utm_source', 'direct'); return; } for (const { domain, source } of organicSources) { if (referrer.includes(domain)) { analyticsParams.set('utm_medium', 'organic'); analyticsParams.set('utm_source', source); return; } } analyticsParams.set('utm_medium', 'referral'); analyticsParams.set('utm_source', getHostnameFromReferrer(referrer)); } function parseCookies() { return document.cookie .split(';') .reduce((acc, cookie) => { const [key, value] = cookie.split('='); if (key) { const trimmedKey = key.trim(); const trimmedValue = value ? value.trim() : null; acc[trimmedKey] = trimmedValue ? decodeURIComponent(trimmedValue) : null; } return acc; }, {}); } function trySetFromQueryParam(field, params, analyticsParams) { const paramValue = params.get(field.payloadKey) || params.get(field.key); if (!paramValue) { return false; } if (field.key === 'gad_source') { analyticsParams.set('utm_source', 'google'); } else { analyticsParams.set(field.payloadKey, paramValue); } return true; } function trySetFromCookie(field, cookies, analyticsParams) { const cookieValue = cookies[field.payloadKey] || cookies[field.key]; if (!cookieValue) { return false; } analyticsParams.set(field.payloadKey, cookieValue); return true; } function processField(field, params, cookies, analyticsParams) { const sources = Array.isArray(field.sourceType) ? field.sourceType : [field.sourceType]; for (const source of sources) { if (source === 'query-parameter' && trySetFromQueryParam(field, params, analyticsParams)) { break; } if (source === 'cookie' && trySetFromCookie(field, cookies, analyticsParams)) { break; } } } const captureAnalytics = (fieldsToCapture) => { const params = new URLSearchParams(globalThis.location.search); const cookies = parseCookies(); const analyticsParams = new URLSearchParams(); for (const field of fieldsToCapture) { if (field.key === 'gad_source' && analyticsParams.has('utm_source')) { continue; } processField(field, params, cookies, analyticsParams); } const hasGoogleAdsParams = params.get('gad_source') || params.get('gad_campaignid') || params.get('gclid') || params.get('gbraid'); if (hasGoogleAdsParams) { analyticsParams.set('utm_medium', 'cpc'); } if (!analyticsParams.has('utm_source') && !analyticsParams.has('utm_medium')) { setParamsFromReferrer(analyticsParams); } return analyticsParams; }; const mapUrlParamsToCamel = (urlParams) => { return { utmMedium: urlParams.utm_medium ?? undefined, utmTerm: urlParams.utm_term ?? undefined, utmSource: urlParams.utm_source ?? undefined, utmContent: urlParams.utm_content ?? undefined, utmCampaign: urlParams.utm_campaign ?? undefined, paidMediaCampaignId: urlParams.campaign_id ?? urlParams.utm_campaign_id ?? undefined, gclid: urlParams.gclid ?? undefined, fbclid: urlParams.fbclid ?? undefined }; }; ;// ./src/rplus-forms/shared/hooks/useRecaptcha.ts const useRecaptcha = () => { const captchaToken = (0,react.useRef)(null); const recaptchaRef = (0,react.useRef)(null); const handleRecaptcha = (0,react.useCallback)((token) => { captchaToken.current = token; }, []); (0,react.useEffect)(() => { const refreshCaptcha = () => { if (recaptchaRef.current && captchaToken.current) { recaptchaRef.current.reset(); captchaToken.current = null; } }; let tokenRefreshTimeout = null; if (captchaToken.current) { tokenRefreshTimeout = setTimeout(refreshCaptcha, 110000); } return () => { if (tokenRefreshTimeout) { clearTimeout(tokenRefreshTimeout); } }; }, [captchaToken]); return { captchaToken, recaptchaRef, handleRecaptcha }; }; /* harmony default export */ const hooks_useRecaptcha = (useRecaptcha); ;// ./src/rplus-forms/modules/WebinarLeadForm/WebinarLeadForm.tsx // Atoms // RDS // Hooks const DEFAULT_SUCCESS_IMAGE_URL = 'https://cdn.ramseysolutions.net/daveramsey.com/media/ramsey-plus/everydollar/marketing/2025/webinars/webinar-signup-success.png'; function WebinarLeadForm({ webinarId, webinarTopic, successImageUrl = DEFAULT_SUCCESS_IMAGE_URL }) { const { captchaToken, recaptchaRef, handleRecaptcha } = hooks_useRecaptcha(); const [leadFormDialogProps, setLeadFormDialogProps] = (0,esm_react/* useAtom */.fp)(webinarAtoms/* webinarLeadFormDialogPropsAtom */.mm); const combinedFormProps = (0,esm_react/* useAtomValue */.md)((0,webinarAtoms/* combinedFormPropsAtom */.pv)(webinarTopic ?? undefined)); const [urlParams, setUrlParams] = (0,react.useState)({}); const [isSubmitting, setIsSubmitting] = (0,react.useState)(false); const [submissionError, setSubmissionError] = (0,react.useState)(''); const [showSuccessMessage, setShowSuccessMessage] = (0,react.useState)(false); const path = window.location.href.split('?')[0]; const { env } = window.FORMS_BFF_CONFIG; const isLocalEnv = env !== 'prod.'; (0,react.useEffect)(() => { if (window._WEBINAR_LEAD_FORM_REQUEST && !leadFormDialogProps) { setLeadFormDialogProps(window._WEBINAR_LEAD_FORM_REQUEST); } const capturedParams = captureAnalytics(fieldsToCapture); setUrlParams(Object.fromEntries(capturedParams.entries())); setValue('formSource', leadFormDialogProps?.formSource ?? ''); setValue('leadSource', path); setValue('campaignId', leadFormDialogProps?.campaignId); setValue('leadType', leadFormDialogProps?.leadType ?? null); setValue('webinarId', webinarId ?? ''); setValue('webinarTopic', webinarTopic ?? ''); setValue('emailOptIn', !combinedFormProps.showEmailOptIn); setValue('smsOptIn', !combinedFormProps.showSmsOptIn); }, [leadFormDialogProps, webinarId, webinarTopic, setUrlParams]); const { register, handleSubmit, formState: { errors }, setValue, reset: resetForm, clearErrors } = (0,index_esm/* useForm */.mN)(); const onSubmit = async (data) => { await recaptchaRef.current?.executeAsync(); setIsSubmitting(true); const phone = data.phone?.trim() === '' ? null : data.phone; const payload = { ...data, ...mapUrlParamsToCamel(urlParams), formSource: leadFormDialogProps?.formSource, phone }; if (leadFormDialogProps?.campaignId) { payload.campaignId = leadFormDialogProps.campaignId; } if (payload.phone && !combinedFormProps?.showSmsOptIn) { payload.smsOptIn = true; } payload.emailOptIn = !combinedFormProps?.showEmailOptIn || (data.emailOptIn ?? false); const headers = { 'Content-Type': 'application/json', Accept: 'application/json', 'X-Recaptcha-Response': captchaToken.current ?? '' }; const body = { webinarId: payload.webinarId, webinarTopic: payload.webinarTopic, firstName: payload.firstName, lastName: payload.lastName, email: payload.email, phone: payload.phone, formSource: payload.formSource, leadType: payload.leadType, campaignId: payload.campaignId, leadSource: payload.leadSource, formType: payload.formType, smsOptIn: payload.smsOptIn ?? false, emailOptIn: payload.emailOptIn ?? false, utmMedium: payload.utmMedium, utmTerm: payload.utmTerm, utmSource: payload.utmSource, utmContent: payload.utmContent, utmCampaign: payload.utmCampaign, gclid: payload.gclid, fbclid: payload.fbclid }; try { const apiUrl = payload.webinarId === '' ? `${application/* applicationConfig */.L.magnoliaFormsWebUrl}${constants/* PATHS */.R.API.WEBINAR_RECORDED}` : `${application/* applicationConfig */.L.magnoliaFormsWebUrl}${constants/* PATHS */.R.API.WEBINAR_REGISTRATION}`; const response = await fetch(apiUrl, { method: 'POST', headers, credentials: 'include', body: JSON.stringify(body) }); if (!response.ok) { throw new Error('Failed to register for the webinar'); } if (leadFormDialogProps?.successUrl) { window.location.href = leadFormDialogProps.successUrl; } else { setShowSuccessMessage(true); clearErrors(); resetForm(); } } catch (e) { console.error('Error during form submission:', e); setSubmissionError(leadFormDialogProps?.errorMessage ?? 'There is a problem submitting your registration. Please try again.'); } finally { setIsSubmitting(false); } }; if (showSuccessMessage) { return ((0,jsx_runtime.jsxs)("div", { className: "flex flex-col items-center", "data-testid": "webinar-lead-form-success", children: [(0,jsx_runtime.jsx)("img", { src: successImageUrl, alt: "Registration Success", className: "p-2" }), (0,jsx_runtime.jsx)(Heading_esm/* default */.A, { level: "2", size: "medium", className: "mb-2 text-blue-80 text-center", children: "Thank you for registering!" }), (0,jsx_runtime.jsx)(Text_esm/* default */.A, { size: "bodyMedium", className: "text-center", children: "Keep an eye out for an email with further details!" })] })); } return ((0,jsx_runtime.jsxs)("div", { className: "webinar-lead-form", children: [submissionError && ((0,jsx_runtime.jsx)("div", { className: "flex justify-center mb-3", role: "alert", children: (0,jsx_runtime.jsxs)("div", { className: "gzl-FormField-error", children: [(0,jsx_runtime.jsx)(Heading_esm/* default */.A, { level: "3", color: "brand", size: "small", children: submissionError }), (0,jsx_runtime.jsxs)(Text_esm/* default */.A, { size: "bodySmall", children: ["Please email support at", ' ', (0,jsx_runtime.jsx)("a", { href: `mailto:${constants/* EMAIL */.T.EVERYDOLLAR_SUPPORT}`, children: constants/* EMAIL */.T.EVERYDOLLAR_SUPPORT }), ", or try again later."] })] }) })), (0,jsx_runtime.jsxs)("form", { onSubmit: handleSubmit(onSubmit), "data-analytics-form": true, "data-testid": "webinar-lead-form", action: "webinar-lead-form-submission", "data-analytics-form-module-type": "webinar-registration", "data-analytics-form-module-category": "marketing-lead-form", "data-analytics-form-module-label": "webinar-lead-form", children: [(0,jsx_runtime.jsxs)(Stack_esm/* default */.A, { vertical: true, spacing: "md", horizontalAlignment: "fill", className: "w-full max-w-[425px] mx-auto", children: [(0,jsx_runtime.jsx)(FormField_esm/* default */.A, { label: "First Name", invalid: !!errors.firstName, errors: [errors.firstName?.message], children: (formFieldProps) => ((0,jsx_runtime.jsx)(Input_esm/* default */.A, { id: "webinar-lead-form-first-name", "data-testid": "firstName", autoComplete: "given-name", "aria-invalid": errors.firstName ? 'true' : 'false', placeholder: "Enter your first name", ...formFieldProps, ...register('firstName', { required: 'First Name is required' }) })) }), (0,jsx_runtime.jsx)(FormField_esm/* default */.A, { label: "Last Name", invalid: !!errors.lastName, errors: [errors.lastName?.message], children: (formFieldProps) => ((0,jsx_runtime.jsx)(Input_esm/* default */.A, { id: "webinar-lead-form-last-name", "data-testid": "lastName", autoComplete: "given-name", "aria-invalid": errors.firstName ? 'true' : 'false', placeholder: "Enter your last name", ...formFieldProps, ...register('lastName', { required: 'Last Name is required' }) })) }), (0,jsx_runtime.jsx)(FormField_esm/* default */.A, { label: "Email", invalid: !!errors.email, errors: [errors.email?.message], children: (formFieldProps) => ((0,jsx_runtime.jsx)(Input_esm/* default */.A, { id: "webinar-lead-form-email", "data-testid": "email", "aria-invalid": errors.email ? 'true' : 'false', ...formFieldProps, ...register('email', { required: 'Email is required', pattern: { value: /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/, message: 'Invalid email address' } }) })) }), combinedFormProps.showPhoneNumber && ((0,jsx_runtime.jsx)(FormField_esm/* default */.A, { errors: [errors.phone?.message], invalid: !!errors.phone, label: combinedFormProps.requirePhoneNumber ? 'Phone Number' : 'Phone Number (optional)', children: (formFieldProps) => ((0,jsx_runtime.jsx)(Input_esm/* default */.A, { id: "webinar-lead-form-phone", "data-testid": "phone", "aria-invalid": errors.phone ? 'true' : 'false', ...formFieldProps, ...register('phone', { required: combinedFormProps.requirePhoneNumber ? 'Phone number is required' : false, pattern: { value: /^\+?(\d{1,3})?[-.\s]?\(?\d{3}\)?[-.\s]?\d{3}[-.\s]?\d{4}$/, message: 'Enter a valid Phone Number' } }) })) })), combinedFormProps.showSmsOptIn && ((0,jsx_runtime.jsx)(Checkbox_esm/* default */.A, { ...register('smsOptIn'), size: "sm", label: "I'd like to receive text reminders and info about Ramsey Solutions products." })), combinedFormProps.showEmailOptIn && ((0,jsx_runtime.jsx)(Checkbox_esm/* default */.A, { ...register('emailOptIn'), size: "sm", label: "I'd like to receive emails about Ramsey Solutions products." })), (0,jsx_runtime.jsx)(esm/* default */.A, { ref: recaptchaRef, size: "invisible", sitekey: window.FORMS_BFF_CONFIG.RECAPTCHA_SITE_KEY, onChange: handleRecaptcha }), (0,jsx_runtime.jsx)(Button_esm/* default */.A, { className: "!mb-4", "data-testid": "submit-form", type: "submit", disabled: isSubmitting, children: leadFormDialogProps?.buttonText ?? 'Register' })] }), (0,jsx_runtime.jsx)("input", { type: "hidden", id: "webinarId", ...register('webinarId') }), (0,jsx_runtime.jsx)("input", { type: "hidden", id: "webinarName", ...register('webinarTopic') }), (0,jsx_runtime.jsx)("input", { type: "hidden", id: "formSource", ...register('formSource') }), (0,jsx_runtime.jsx)("input", { type: "hidden", id: "leadSource", ...register('leadSource') }), (0,jsx_runtime.jsx)("input", { type: "hidden", id: "campaignId", ...register('campaignId') }), (0,jsx_runtime.jsx)("input", { type: "hidden", id: "leadType", ...register('leadType') }), (0,jsx_runtime.jsx)("input", { type: "hidden", id: "formType", ...register('formType') })] }), combinedFormProps.showPhoneNumber ? ((0,jsx_runtime.jsx)(LegalVerbiageWithPhoneNumber, {})) : ((0,jsx_runtime.jsx)(LegalVerbiage, {})), isLocalEnv && ((0,jsx_runtime.jsx)(react.Suspense, { fallback: null, children: (0,jsx_runtime.jsx)(modern/* ReactQueryDevtools */.E, { initialIsOpen: false }) }))] })); } /* harmony default export */ const WebinarLeadForm_WebinarLeadForm = (WebinarLeadForm); /***/ }), /***/ 5288: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ T: () => (/* binding */ sharedQueryClient) /* harmony export */ }); /* harmony import */ var _tanstack_react_query__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6417); const sharedQueryClient = new _tanstack_react_query__WEBPACK_IMPORTED_MODULE_0__/* .QueryClient */ .E({ defaultOptions: { queries: { retry: false, gcTime: 1000 * 60 * 5, // 5 minutes staleTime: 1000 * 60 * 30 // 30 minutes } } }); /***/ }), /***/ 7202: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ R: () => (/* binding */ PATHS), /* harmony export */ T: () => (/* binding */ EMAIL) /* harmony export */ }); const CONSTS = { PATHS: { API: { FPU_FORM_SUBMISSION: '/api/fpu-marketing-form/submit', UPCOMING_WEBINARS: '/api/video-conferencing/webinars/upcoming', WEBINAR_REGISTRATION: '/api/webinar/register', WEBINAR_RECORDED: '/api/webinar/register/recorded', LIVESTREAM_GIVEAWAY_REGISTRATION: '/api/livestream-registration' } }, EMAIL: { EVERYDOLLAR_SUPPORT: 'help@everydollar.com' } }; const { PATHS, EMAIL } = CONSTS; /***/ }) }]); //# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUNMLEdBQUcsRUFBRTtZQUNILG1CQUFtQixFQUFFLGdDQUFnQztZQUNyRCxpQkFBaUIsRUFBRSwyQ0FBMkM7WUFDOUQsb0JBQW9CLEVBQUUsdUJBQXVCO1lBQzdDLGdCQUFnQixFQUFFLGdDQUFnQztZQUNsRCxnQ0FBZ0MsRUFBRSw4QkFBOEI7U0FDakU7S0FDRjtJQUNELEtBQUssRUFBRTtRQUNMLG1CQUFtQixFQUFFLHNCQUFzQjtLQUM1QztDQUNGLENBQUM7QUFFSyxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLE1BQU0sQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovL3JhbXNleS1wbHVzLWZvcm1zLy4vc3JjL3JwbHVzLWZvcm1zL3NoYXJlZC9hcHBsaWNhdGlvbi50cyIsIndlYnBhY2s6Ly9yYW1zZXktcGx1cy1mb3Jtcy8uL3NyYy9ycGx1cy1mb3Jtcy9zaGFyZWQvY29tcG9uZW50cy9MZWdhbFZlcmJpYWdlLnRzeCIsIndlYnBhY2s6Ly9yYW1zZXktcGx1cy1mb3Jtcy8uL3NyYy9ycGx1cy1mb3Jtcy9zaGFyZWQvdXRpbHMvYW5hbHl0aWNzRmllbGRzVG9DYXB0dXJlLnRzIiwid2VicGFjazovL3JhbXNleS1wbHVzLWZvcm1zLy4vc3JjL3JwbHVzLWZvcm1zL3NoYXJlZC9ob29rcy91c2VVcmxQYXJhbXMudHMiLCJ3ZWJwYWNrOi8vcmFtc2V5LXBsdXMtZm9ybXMvLi9zcmMvcnBsdXMtZm9ybXMvc2hhcmVkL2hvb2tzL3VzZVJlY2FwdGNoYS50cyIsIndlYnBhY2s6Ly9yYW1zZXktcGx1cy1mb3Jtcy8uL3NyYy9ycGx1cy1mb3Jtcy9tb2R1bGVzL1dlYmluYXJMZWFkRm9ybS9XZWJpbmFyTGVhZEZvcm0udHN4Iiwid2VicGFjazovL3JhbXNleS1wbHVzLWZvcm1zLy4vc3JjL3JwbHVzLWZvcm1zL3NoYXJlZC9jb25maWcvc2hhcmVkUXVlcnlDbGllbnQudHMiLCJ3ZWJwYWNrOi8vcmFtc2V5LXBsdXMtZm9ybXMvLi9zcmMvcnBsdXMtZm9ybXMvc2hhcmVkL3V0aWxzL2NvbnN0YW50cy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgYXBwbGljYXRpb25Db25maWcgPSB7XG4gIGVudmlyb25tZW50OiB3aW5kb3cuRk9STVNfQkZGX0NPTkZJRy5lbnYsXG4gIG1hZ25vbGlhRm9ybXNXZWJVcmw6XG4gICAgd2luZG93LkZPUk1TX0JGRl9DT05GSUcuZW52ID09PSAnbG9jYWwuJ1xuICAgICAgPyAnaHR0cDovL2xvY2FsaG9zdDo4MDgyL2Zvcm1zL3JhbXNleS1wbHVzJ1xuICAgICAgOiBgaHR0cHM6Ly93d3cuJHt3aW5kb3cuRk9STVNfQkZGX0NPTkZJRy5lbnZ9cmFtc2V5c29sdXRpb25zLmNvbS9mb3Jtcy9yYW1zZXktcGx1c2Bcbn07XG4iLCJpbXBvcnQgTGluayBmcm9tICdAcmFtc2V5LWRlc2lnbi1zeXN0ZW0vbGluayc7XG5cbmV4cG9ydCBjb25zdCBMZWdhbFZlcmJpYWdlID0gKCkgPT4ge1xuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1jZW50ZXIgbWF4LXctWzQyNXB4XSBteC1hdXRvIHB4LTIgcGItMlwiPlxuICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC0xIHNtOnRleHQtMiB0ZXh0LWdyYXktNzBcIj5cbiAgICAgICAgQnkgY2xpY2tpbmcgXCJSZWdpc3RlclwiLCB5b3UgYXJlIGFncmVlaW5nIHRvIHJlY2VpdmUgZW1haWxzIGZyb20gUmFtc2V5XG4gICAgICAgIFNvbHV0aW9ucy4gU2VlIG91cnsnICd9XG4gICAgICAgIDxMaW5rXG4gICAgICAgICAgc3R5bGU9e3sgZGlzcGxheTogJ2lubGluZScgfX1cbiAgICAgICAgICBocmVmPVwiaHR0cHM6Ly93d3cucmFtc2V5c29sdXRpb25zLmNvbS9jb21wYW55L3BvbGljaWVzL3ByaXZhY3ktcG9saWN5XCJcbiAgICAgICAgICBjbGFzc05hbWU9XCJ0ZXh0LTEhIHNtOnRleHQtMiEgdGV4dC1ibHVlLTQwIHVuZGVybGluZSFcIlxuICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgcmVsPVwibm9yZWZlcnJlclwiXG4gICAgICAgID5cbiAgICAgICAgICBQcml2YWN5IFBvbGljeVxuICAgICAgICA8L0xpbms+eycgJ31cbiAgICAgICAgYW5keycgJ31cbiAgICAgICAgPExpbmtcbiAgICAgICAgICBzdHlsZT17eyBkaXNwbGF5OiAnaW5saW5lJyB9fVxuICAgICAgICAgIGhyZWY9XCJodHRwczovL3d3dy5yYW1zZXlzb2x1dGlvbnMuY29tL2NvbXBhbnkvcG9saWNpZXMvdGVybXMtb2YtdXNlXCJcbiAgICAgICAgICBjbGFzc05hbWU9XCJ0ZXh0LTEhIHNtOnRleHQtMiEgdGV4dC1ibHVlLTQwIHVuZGVybGluZSFcIlxuICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgcmVsPVwibm9yZWZlcnJlclwiXG4gICAgICAgID5cbiAgICAgICAgICBUZXJtcyBvZiBVc2VcbiAgICAgICAgPC9MaW5rPlxuICAgICAgICAuXG4gICAgICAgIDxiciAvPlxuICAgICAgICA8YnIgLz5cbiAgICAgICAgVGhpcyBzaXRlIGlzIHByb3RlY3RlZCBieSByZUNBUFRDSEEsIGFuZCB0aGUgR29vZ2xleycgJ31cbiAgICAgICAgPExpbmtcbiAgICAgICAgICBzdHlsZT17eyBkaXNwbGF5OiAnaW5saW5lJyB9fVxuICAgICAgICAgIGhyZWY9XCJodHRwczovL3BvbGljaWVzLmdvb2dsZS5jb20vcHJpdmFjeVwiXG4gICAgICAgICAgY2xhc3NOYW1lPVwidGV4dC0xISBzbTp0ZXh0LTIhIHRleHQtYmx1ZS00MCB1bmRlcmxpbmUhXCJcbiAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgICAgIHJlbD1cIm5vcmVmZXJyZXJcIlxuICAgICAgICA+XG4gICAgICAgICAgUHJpdmFjeSBQb2xpY3lcbiAgICAgICAgPC9MaW5rPnsnICd9XG4gICAgICAgIGFuZHsnICd9XG4gICAgICAgIDxMaW5rXG4gICAgICAgICAgc3R5bGU9e3sgZGlzcGxheTogJ2lubGluZScgfX1cbiAgICAgICAgICBocmVmPVwiaHR0cHM6Ly9wb2xpY2llcy5nb29nbGUuY29tL3Rlcm1zXCJcbiAgICAgICAgICBjbGFzc05hbWU9XCJ0ZXh0LTEhIHNtOnRleHQtMiEgdGV4dC1ibHVlLTQwIHVuZGVybGluZSFcIlxuICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgcmVsPVwibm9yZWZlcnJlclwiXG4gICAgICAgID5cbiAgICAgICAgICBUZXJtcyBvZiBTZXJ2aWNlXG4gICAgICAgIDwvTGluaz57JyAnfVxuICAgICAgICBhcHBseS5cbiAgICAgIDwvcD5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBMZWdhbFZlcmJpYWdlV2l0aFBob25lTnVtYmVyID0gKCkgPT4ge1xuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1jZW50ZXIgbWF4LXctWzY1MHB4XSBteC1hdXRvIHB4LTEgcGItMlwiPlxuICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC0xIHNtOnRleHQtMiB0ZXh0LWdyYXktNzBcIj5cbiAgICAgICAgQnkgcHJvdmlkaW5nIHVzIHlvdXIgcGhvbmUgbnVtYmVyIGFuZCBlbWFpbCBhZGRyZXNzIGFuZCBjbGlja2luZ1xuICAgICAgICDigJxSZWdpc3RlcuKAnSwgeW91IGFyZSBhZ3JlZWluZyB0byBiZSBjb250YWN0ZWQgYnkgUmFtc2V5IFNvbHV0aW9ucyB2aWFcbiAgICAgICAgZW1haWwsIHBob25lIGNhbGwsIGFuZC9vciB0ZXh0IG1lc3NhZ2VzLCBhbmQgdG8gdGhlIHVzZSBvZiBhbiBhdXRvbWF0aWNcbiAgICAgICAgdGVsZXBob25lIGRpYWxpbmcgc3lzdGVtLCBhcnRpZmljaWFsIG9yIHByZXJlY29yZGVkIHZvaWNlLCBhbmQvb3JcbiAgICAgICAgQUktZ2VuZXJhdGVkIG1lc3NhZ2VzIGZvciB0aGUgcHVycG9zZSBvZiBhZHZlcnRpc2VtZW50cyBmb3Igb3VyIHByb2R1Y3RzXG4gICAgICAgIGFuZCBzZXJ2aWNlcywgYW5kIGZvciB0aGUgcHVycG9zZXMgb3V0bGluZWQgaW4gb3VyeycgJ31cbiAgICAgICAgPExpbmtcbiAgICAgICAgICBocmVmPVwiaHR0cHM6Ly93d3cucmFtc2V5c29sdXRpb25zLmNvbS9jb21wYW55L3BvbGljaWVzL3ByaXZhY3ktcG9saWN5XCJcbiAgICAgICAgICBjbGFzc05hbWU9XCJ0ZXh0LTEhIHNtOnRleHQtMiEgdGV4dC1ibHVlLTQwIHVuZGVybGluZSFcIlxuICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgcmVsPVwibm9yZWZlcnJlclwiXG4gICAgICAgID5cbiAgICAgICAgICBQcml2YWN5IFBvbGljeVxuICAgICAgICA8L0xpbms+eycgJ31cbiAgICAgICAgYW5keycgJ31cbiAgICAgICAgPExpbmtcbiAgICAgICAgICBocmVmPVwiaHR0cHM6Ly93d3cucmFtc2V5c29sdXRpb25zLmNvbS9jb21wYW55L3BvbGljaWVzL3Rlcm1zLW9mLXVzZVwiXG4gICAgICAgICAgY2xhc3NOYW1lPVwidGV4dC0xISBzbTp0ZXh0LTIhIHRleHQtYmx1ZS00MCB1bmRlcmxpbmUhXCJcbiAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgICAgIHJlbD1cIm5vcmVmZXJyZXJcIlxuICAgICAgICA+XG4gICAgICAgICAgVGVybXMgb2YgVXNlXG4gICAgICAgIDwvTGluaz5cbiAgICAgICAgLiBNZXNzYWdpbmcgYW5kIGRhdGEgcmF0ZXMgbWF5IGFwcGx5LuKAryBGcmVxdWVuY3kgdmFyaWVzLlxuICAgICAgICA8YnIgLz5cbiAgICAgICAgPGJyIC8+XG4gICAgICAgIFlvdSBtYXkgb3B0IG91dCBvZiByZWNlaXZpbmcgdGV4dCBtZXNzYWdlcyBhdCBhbnkgdGltZSBieSByZXBseWluZyB3aXRoXG4gICAgICAgIHRoZSB3b3JkIFNUT1AgZnJvbSB0aGUgbW9iaWxlIGRldmljZSByZWNlaXZpbmcgdGhlIG1lc3NhZ2VzLiBZb3UgZG8gbm90XG4gICAgICAgIG5lZWQgdG8gcHJvdmlkZSB0aGlzIGNvbnNlbnQgdG8gcmVjZWl2ZSBhbnkgcHJvZHVjdHMgb3Igc2VydmljZXMgZnJvbVxuICAgICAgICBSYW1zZXkgU29sdXRpb25zLlxuICAgICAgICA8YnIgLz5cbiAgICAgICAgPGJyIC8+XG4gICAgICAgIFRoaXMgc2l0ZSBpcyBwcm90ZWN0ZWQgYnkgcmVDQVBUQ0hBLCBhbmQgdGhlIEdvb2dsZXsnICd9XG4gICAgICAgIDxMaW5rXG4gICAgICAgICAgaHJlZj1cImh0dHBzOi8vcG9saWNpZXMuZ29vZ2xlLmNvbS9wcml2YWN5XCJcbiAgICAgICAgICBjbGFzc05hbWU9XCJ0ZXh0LTEhIHNtOnRleHQtMiEgdGV4dC1ibHVlLTQwIHVuZGVybGluZSFcIlxuICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgcmVsPVwibm9yZWZlcnJlclwiXG4gICAgICAgID5cbiAgICAgICAgICBQcml2YWN5IFBvbGljeVxuICAgICAgICA8L0xpbms+eycgJ31cbiAgICAgICAgYW5keycgJ31cbiAgICAgICAgPExpbmtcbiAgICAgICAgICBocmVmPVwiaHR0cHM6Ly9wb2xpY2llcy5nb29nbGUuY29tL3Rlcm1zXCJcbiAgICAgICAgICBjbGFzc05hbWU9XCJ0ZXh0LTEhIHNtOnRleHQtMiEgdGV4dC1ibHVlLTQwIHVuZGVybGluZSFcIlxuICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgcmVsPVwibm9yZWZlcnJlclwiXG4gICAgICAgID5cbiAgICAgICAgICBUZXJtcyBvZiBTZXJ2aWNlXG4gICAgICAgIDwvTGluaz57JyAnfVxuICAgICAgICBhcHBseS5cbiAgICAgIDwvcD5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG4iLCJleHBvcnQgY29uc3QgZmllbGRzVG9DYXB0dXJlID0gW1xuICB7XG4gICAga2V5OiAncnNfdXRtX21lZGl1bScsXG4gICAgcGF5bG9hZEtleTogJ3V0bV9tZWRpdW0nLFxuICAgIHNvdXJjZVR5cGU6IFsncXVlcnktcGFyYW1ldGVyJywgJ2Nvb2tpZSddXG4gIH0sXG4gIHtcbiAgICBrZXk6ICdyc191dG1fdGVybScsXG4gICAgcGF5bG9hZEtleTogJ3V0bV90ZXJtJyxcbiAgICBzb3VyY2VUeXBlOiBbJ3F1ZXJ5LXBhcmFtZXRlcicsICdjb29raWUnXVxuICB9LFxuICB7XG4gICAga2V5OiAncnNfdXRtX3NvdXJjZScsXG4gICAgcGF5bG9hZEtleTogJ3V0bV9zb3VyY2UnLFxuICAgIHNvdXJjZVR5cGU6IFsncXVlcnktcGFyYW1ldGVyJywgJ2Nvb2tpZSddXG4gIH0sXG4gIHtcbiAgICBrZXk6ICdyc191dG1fY29udGVudCcsXG4gICAgcGF5bG9hZEtleTogJ3V0bV9jb250ZW50JyxcbiAgICBzb3VyY2VUeXBlOiBbJ3F1ZXJ5LXBhcmFtZXRlcicsICdjb29raWUnXVxuICB9LFxuICB7XG4gICAga2V5OiAncnNfdXRtX2NhbXBhaWduJyxcbiAgICBwYXlsb2FkS2V5OiAndXRtX2NhbXBhaWduJyxcbiAgICBzb3VyY2VUeXBlOiBbJ3F1ZXJ5LXBhcmFtZXRlcicsICdjb29raWUnXVxuICB9LFxuICB7XG4gICAga2V5OiAnY2FtcGFpZ25faWQnLFxuICAgIHBheWxvYWRLZXk6ICd1dG1faWQnLFxuICAgIHNvdXJjZVR5cGU6IFsncXVlcnktcGFyYW1ldGVyJywgJ2Nvb2tpZSddXG4gIH0sXG4gIHtcbiAgICBrZXk6ICdyc19nY2xpZCcsXG4gICAgcGF5bG9hZEtleTogJ2djbGlkJyxcbiAgICBzb3VyY2VUeXBlOiBbJ3F1ZXJ5LXBhcmFtZXRlcicsICdjb29raWUnXVxuICB9LFxuICB7XG4gICAga2V5OiAnZmJjbGlkJyxcbiAgICBwYXlsb2FkS2V5OiAnZmJjbGlkJyxcbiAgICBzb3VyY2VUeXBlOiAncXVlcnktcGFyYW1ldGVyJ1xuICB9LFxuICB7XG4gICAga2V5OiAnZ2FkX3NvdXJjZScsXG4gICAgcGF5bG9hZEtleTogJ3V0bV9zb3VyY2UnLFxuICAgIHNvdXJjZVR5cGU6ICdxdWVyeS1wYXJhbWV0ZXInXG4gIH0sXG4gIHtcbiAgICBrZXk6ICdnYWRfY2FtcGFpZ25pZCcsXG4gICAgcGF5bG9hZEtleTogJ3V0bV9jYW1wYWlnbl9pZCcsXG4gICAgc291cmNlVHlwZTogJ3F1ZXJ5LXBhcmFtZXRlcidcbiAgfVxuXTtcblxuZXhwb3J0IGNvbnN0IG9yZ2FuaWNTb3VyY2VzID0gW1xuICB7IGRvbWFpbjogJ2dvb2dsZS4nLCBzb3VyY2U6ICdnb29nbGUnIH0sXG4gIHsgZG9tYWluOiAnYmluZy5jb20nLCBzb3VyY2U6ICdiaW5nJyB9LFxuICB7IGRvbWFpbjogJ3lhaG9vLicsIHNvdXJjZTogJ3lhaG9vJyB9LFxuICB7IGRvbWFpbjogJ2R1Y2tkdWNrZ28uY29tJywgc291cmNlOiAnZHVja2R1Y2tnbycgfVxuXTtcbiIsImltcG9ydCB7IG9yZ2FuaWNTb3VyY2VzIH0gZnJvbSAnLi4vdXRpbHMvYW5hbHl0aWNzRmllbGRzVG9DYXB0dXJlJztcblxuLypcbiAgUGFpZCBNZWRpYSBBdHRyaWJ1dGlvblxuICAqL1xuZXhwb3J0IHR5cGUgRmllbGRzVG9DYXB0dXJlID0ge1xuICBrZXk6IHN0cmluZztcbiAgcGF5bG9hZEtleTogc3RyaW5nO1xuICBzb3VyY2VUeXBlOiBzdHJpbmcgfCBzdHJpbmdbXTtcbn07XG5cbmZ1bmN0aW9uIGdldEhvc3RuYW1lRnJvbVJlZmVycmVyKHJlZmVycmVyOiBzdHJpbmcpOiBzdHJpbmcge1xuICBsZXQgaG9zdG5hbWUgPSBuZXcgVVJMKHJlZmVycmVyKS5ob3N0bmFtZTtcbiAgaWYgKGhvc3RuYW1lLnN0YXJ0c1dpdGgoJ3d3dy4nKSkge1xuICAgIGhvc3RuYW1lID0gaG9zdG5hbWUuc2xpY2UoNCk7XG4gIH1cbiAgcmV0dXJuIGhvc3RuYW1lO1xufVxuXG5mdW5jdGlvbiBzZXRQYXJhbXNGcm9tUmVmZXJyZXIoYW5hbHl0aWNzUGFyYW1zOiBVUkxTZWFyY2hQYXJhbXMpOiB2b2lkIHtcbiAgY29uc3QgcmVmZXJyZXIgPSBkb2N1bWVudC5yZWZlcnJlcjtcbiAgaWYgKCFyZWZlcnJlcikge1xuICAgIGFuYWx5dGljc1BhcmFtcy5zZXQoJ3V0bV9tZWRpdW0nLCAnZGlyZWN0Jyk7XG4gICAgYW5hbHl0aWNzUGFyYW1zLnNldCgndXRtX3NvdXJjZScsICdkaXJlY3QnKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBmb3IgKGNvbnN0IHsgZG9tYWluLCBzb3VyY2UgfSBvZiBvcmdhbmljU291cmNlcykge1xuICAgIGlmIChyZWZlcnJlci5pbmNsdWRlcyhkb21haW4pKSB7XG4gICAgICBhbmFseXRpY3NQYXJhbXMuc2V0KCd1dG1fbWVkaXVtJywgJ29yZ2FuaWMnKTtcbiAgICAgIGFuYWx5dGljc1BhcmFtcy5zZXQoJ3V0bV9zb3VyY2UnLCBzb3VyY2UpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIGFuYWx5dGljc1BhcmFtcy5zZXQoJ3V0bV9tZWRpdW0nLCAncmVmZXJyYWwnKTtcbiAgYW5hbHl0aWNzUGFyYW1zLnNldCgndXRtX3NvdXJjZScsIGdldEhvc3RuYW1lRnJvbVJlZmVycmVyKHJlZmVycmVyKSk7XG59XG5cbmZ1bmN0aW9uIHBhcnNlQ29va2llcygpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudWxsPiB7XG4gIHJldHVybiBkb2N1bWVudC5jb29raWVcbiAgICAuc3BsaXQoJzsnKVxuICAgIC5yZWR1Y2UoKGFjYzogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVsbD4sIGNvb2tpZSkgPT4ge1xuICAgICAgY29uc3QgW2tleSwgdmFsdWVdID0gY29va2llLnNwbGl0KCc9Jyk7XG4gICAgICBpZiAoa2V5KSB7XG4gICAgICAgIGNvbnN0IHRyaW1tZWRLZXkgPSBrZXkudHJpbSgpO1xuICAgICAgICBjb25zdCB0cmltbWVkVmFsdWUgPSB2YWx1ZSA/IHZhbHVlLnRyaW0oKSA6IG51bGw7XG4gICAgICAgIGFjY1t0cmltbWVkS2V5XSA9IHRyaW1tZWRWYWx1ZVxuICAgICAgICAgID8gZGVjb2RlVVJJQ29tcG9uZW50KHRyaW1tZWRWYWx1ZSlcbiAgICAgICAgICA6IG51bGw7XG4gICAgICB9XG4gICAgICByZXR1cm4gYWNjO1xuICAgIH0sIHt9KTtcbn1cblxuZnVuY3Rpb24gdHJ5U2V0RnJvbVF1ZXJ5UGFyYW0oXG4gIGZpZWxkOiBGaWVsZHNUb0NhcHR1cmUsXG4gIHBhcmFtczogVVJMU2VhcmNoUGFyYW1zLFxuICBhbmFseXRpY3NQYXJhbXM6IFVSTFNlYXJjaFBhcmFtc1xuKTogYm9vbGVhbiB7XG4gIGNvbnN0IHBhcmFtVmFsdWUgPSBwYXJhbXMuZ2V0KGZpZWxkLnBheWxvYWRLZXkpIHx8IHBhcmFtcy5nZXQoZmllbGQua2V5KTtcbiAgaWYgKCFwYXJhbVZhbHVlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmIChmaWVsZC5rZXkgPT09ICdnYWRfc291cmNlJykge1xuICAgIGFuYWx5dGljc1BhcmFtcy5zZXQoJ3V0bV9zb3VyY2UnLCAnZ29vZ2xlJyk7XG4gIH0gZWxzZSB7XG4gICAgYW5hbHl0aWNzUGFyYW1zLnNldChmaWVsZC5wYXlsb2FkS2V5LCBwYXJhbVZhbHVlKTtcbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gdHJ5U2V0RnJvbUNvb2tpZShcbiAgZmllbGQ6IEZpZWxkc1RvQ2FwdHVyZSxcbiAgY29va2llczogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVsbD4sXG4gIGFuYWx5dGljc1BhcmFtczogVVJMU2VhcmNoUGFyYW1zXG4pOiBib29sZWFuIHtcbiAgY29uc3QgY29va2llVmFsdWUgPSBjb29raWVzW2ZpZWxkLnBheWxvYWRLZXldIHx8IGNvb2tpZXNbZmllbGQua2V5XTtcbiAgaWYgKCFjb29raWVWYWx1ZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBhbmFseXRpY3NQYXJhbXMuc2V0KGZpZWxkLnBheWxvYWRLZXksIGNvb2tpZVZhbHVlKTtcbiAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIHByb2Nlc3NGaWVsZChcbiAgZmllbGQ6IEZpZWxkc1RvQ2FwdHVyZSxcbiAgcGFyYW1zOiBVUkxTZWFyY2hQYXJhbXMsXG4gIGNvb2tpZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IG51bGw+LFxuICBhbmFseXRpY3NQYXJhbXM6IFVSTFNlYXJjaFBhcmFtc1xuKTogdm9pZCB7XG4gIGNvbnN0IHNvdXJjZXMgPSBBcnJheS5pc0FycmF5KGZpZWxkLnNvdXJjZVR5cGUpXG4gICAgPyBmaWVsZC5zb3VyY2VUeXBlXG4gICAgOiBbZmllbGQuc291cmNlVHlwZV07XG5cbiAgZm9yIChjb25zdCBzb3VyY2Ugb2Ygc291cmNlcykge1xuICAgIGlmIChcbiAgICAgIHNvdXJjZSA9PT0gJ3F1ZXJ5LXBhcmFtZXRlcicgJiZcbiAgICAgIHRyeVNldEZyb21RdWVyeVBhcmFtKGZpZWxkLCBwYXJhbXMsIGFuYWx5dGljc1BhcmFtcylcbiAgICApIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICBzb3VyY2UgPT09ICdjb29raWUnICYmXG4gICAgICB0cnlTZXRGcm9tQ29va2llKGZpZWxkLCBjb29raWVzLCBhbmFseXRpY3NQYXJhbXMpXG4gICAgKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IGNhcHR1cmVBbmFseXRpY3MgPSAoZmllbGRzVG9DYXB0dXJlOiBGaWVsZHNUb0NhcHR1cmVbXSkgPT4ge1xuICBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKGdsb2JhbFRoaXMubG9jYXRpb24uc2VhcmNoKTtcbiAgY29uc3QgY29va2llcyA9IHBhcnNlQ29va2llcygpO1xuICBjb25zdCBhbmFseXRpY3NQYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKCk7XG5cbiAgZm9yIChjb25zdCBmaWVsZCBvZiBmaWVsZHNUb0NhcHR1cmUpIHtcbiAgICBpZiAoZmllbGQua2V5ID09PSAnZ2FkX3NvdXJjZScgJiYgYW5hbHl0aWNzUGFyYW1zLmhhcygndXRtX3NvdXJjZScpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgcHJvY2Vzc0ZpZWxkKGZpZWxkLCBwYXJhbXMsIGNvb2tpZXMsIGFuYWx5dGljc1BhcmFtcyk7XG4gIH1cblxuICBjb25zdCBoYXNHb29nbGVBZHNQYXJhbXMgPVxuICAgIHBhcmFtcy5nZXQoJ2dhZF9zb3VyY2UnKSB8fFxuICAgIHBhcmFtcy5nZXQoJ2dhZF9jYW1wYWlnbmlkJykgfHxcbiAgICBwYXJhbXMuZ2V0KCdnY2xpZCcpIHx8XG4gICAgcGFyYW1zLmdldCgnZ2JyYWlkJyk7XG5cbiAgaWYgKGhhc0dvb2dsZUFkc1BhcmFtcykge1xuICAgIGFuYWx5dGljc1BhcmFtcy5zZXQoJ3V0bV9tZWRpdW0nLCAnY3BjJyk7XG4gIH1cblxuICBpZiAoXG4gICAgIWFuYWx5dGljc1BhcmFtcy5oYXMoJ3V0bV9zb3VyY2UnKSAmJlxuICAgICFhbmFseXRpY3NQYXJhbXMuaGFzKCd1dG1fbWVkaXVtJylcbiAgKSB7XG4gICAgc2V0UGFyYW1zRnJvbVJlZmVycmVyKGFuYWx5dGljc1BhcmFtcyk7XG4gIH1cblxuICByZXR1cm4gYW5hbHl0aWNzUGFyYW1zO1xufTtcblxuZXhwb3J0IGNvbnN0IG1hcFVybFBhcmFtc1RvQ2FtZWwgPSAoXG4gIHVybFBhcmFtczogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVsbD5cbikgPT4ge1xuICByZXR1cm4ge1xuICAgIHV0bU1lZGl1bTogdXJsUGFyYW1zLnV0bV9tZWRpdW0gPz8gdW5kZWZpbmVkLFxuICAgIHV0bVRlcm06IHVybFBhcmFtcy51dG1fdGVybSA/PyB1bmRlZmluZWQsXG4gICAgdXRtU291cmNlOiB1cmxQYXJhbXMudXRtX3NvdXJjZSA/PyB1bmRlZmluZWQsXG4gICAgdXRtQ29udGVudDogdXJsUGFyYW1zLnV0bV9jb250ZW50ID8/IHVuZGVmaW5lZCxcbiAgICB1dG1DYW1wYWlnbjogdXJsUGFyYW1zLnV0bV9jYW1wYWlnbiA/PyB1bmRlZmluZWQsXG4gICAgcGFpZE1lZGlhQ2FtcGFpZ25JZDpcbiAgICAgIHVybFBhcmFtcy5jYW1wYWlnbl9pZCA/PyB1cmxQYXJhbXMudXRtX2NhbXBhaWduX2lkID8/IHVuZGVmaW5lZCxcbiAgICBnY2xpZDogdXJsUGFyYW1zLmdjbGlkID8/IHVuZGVmaW5lZCxcbiAgICBmYmNsaWQ6IHVybFBhcmFtcy5mYmNsaWQgPz8gdW5kZWZpbmVkXG4gIH07XG59O1xuIiwiaW1wb3J0IHsgdXNlUmVmLCB1c2VDYWxsYmFjaywgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IFJlQ0FQVENIQSBmcm9tICdyZWFjdC1nb29nbGUtcmVjYXB0Y2hhJztcblxuY29uc3QgdXNlUmVjYXB0Y2hhID0gKCkgPT4ge1xuICBjb25zdCBjYXB0Y2hhVG9rZW4gPSB1c2VSZWY8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IHJlY2FwdGNoYVJlZiA9IHVzZVJlZjxSZUNBUFRDSEEgfCBudWxsPihudWxsKTtcblxuICBjb25zdCBoYW5kbGVSZWNhcHRjaGEgPSB1c2VDYWxsYmFjaygodG9rZW46IHN0cmluZyB8IG51bGwpID0+IHtcbiAgICBjYXB0Y2hhVG9rZW4uY3VycmVudCA9IHRva2VuO1xuICB9LCBbXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCByZWZyZXNoQ2FwdGNoYSA9ICgpID0+IHtcbiAgICAgIGlmIChyZWNhcHRjaGFSZWYuY3VycmVudCAmJiBjYXB0Y2hhVG9rZW4uY3VycmVudCkge1xuICAgICAgICByZWNhcHRjaGFSZWYuY3VycmVudC5yZXNldCgpO1xuICAgICAgICBjYXB0Y2hhVG9rZW4uY3VycmVudCA9IG51bGw7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGxldCB0b2tlblJlZnJlc2hUaW1lb3V0OiBOb2RlSlMuVGltZW91dCB8IG51bGwgPSBudWxsO1xuXG4gICAgaWYgKGNhcHRjaGFUb2tlbi5jdXJyZW50KSB7XG4gICAgICB0b2tlblJlZnJlc2hUaW1lb3V0ID0gc2V0VGltZW91dChyZWZyZXNoQ2FwdGNoYSwgMTEwMDAwKTtcbiAgICB9XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaWYgKHRva2VuUmVmcmVzaFRpbWVvdXQpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRva2VuUmVmcmVzaFRpbWVvdXQpO1xuICAgICAgfVxuICAgIH07XG4gIH0sIFtjYXB0Y2hhVG9rZW5dKTtcblxuICByZXR1cm4geyBjYXB0Y2hhVG9rZW4sIHJlY2FwdGNoYVJlZiwgaGFuZGxlUmVjYXB0Y2hhIH07XG59O1xuXG5leHBvcnQgZGVmYXVsdCB1c2VSZWNhcHRjaGE7XG4iLCJpbXBvcnQgeyB1c2VTdGF0ZSwgdXNlRWZmZWN0LCBTdXNwZW5zZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IFN1Ym1pdEhhbmRsZXIsIHVzZUZvcm0gfSBmcm9tICdyZWFjdC1ob29rLWZvcm0nO1xuaW1wb3J0IFJlQ0FQVENIQSBmcm9tICdyZWFjdC1nb29nbGUtcmVjYXB0Y2hhJztcbmltcG9ydCB7IFJlYWN0UXVlcnlEZXZ0b29scyB9IGZyb20gJ0B0YW5zdGFjay9yZWFjdC1xdWVyeS1kZXZ0b29scyc7XG5cbi8vIEF0b21zXG5pbXBvcnQgeyB1c2VBdG9tLCB1c2VBdG9tVmFsdWUgfSBmcm9tICdqb3RhaSc7XG5pbXBvcnQge1xuICB3ZWJpbmFyTGVhZEZvcm1EaWFsb2dQcm9wc0F0b20sXG4gIGNvbWJpbmVkRm9ybVByb3BzQXRvbVxufSBmcm9tICcuLi8uLi9zaGFyZWQvc3RvcmVzL3dlYmluYXJBdG9tcyc7XG5cbi8vIFJEU1xuaW1wb3J0IEJ1dHRvbiBmcm9tICdAcmFtc2V5LWRlc2lnbi1zeXN0ZW0vYnV0dG9uJztcbmltcG9ydCBDaGVja2JveCBmcm9tICdAcmFtc2V5LWRlc2lnbi1zeXN0ZW0vY2hlY2tib3gnO1xuaW1wb3J0IEZvcm1GaWVsZCBmcm9tICdAcmFtc2V5LWRlc2lnbi1zeXN0ZW0vZm9ybS1maWVsZCc7XG5pbXBvcnQgSGVhZGluZyBmcm9tICdAcmFtc2V5LWRlc2lnbi1zeXN0ZW0vaGVhZGluZyc7XG5pbXBvcnQgSW5wdXQgZnJvbSAnQHJhbXNleS1kZXNpZ24tc3lzdGVtL2lucHV0JztcbmltcG9ydCBTdGFjayBmcm9tICdAcmFtc2V5LWRlc2lnbi1zeXN0ZW0vc3RhY2snO1xuaW1wb3J0IFRleHQgZnJvbSAnQHJhbXNleS1kZXNpZ24tc3lzdGVtL3RleHQnO1xuaW1wb3J0IHtcbiAgTGVnYWxWZXJiaWFnZVdpdGhQaG9uZU51bWJlcixcbiAgTGVnYWxWZXJiaWFnZVxufSBmcm9tICcuLi8uLi9zaGFyZWQvY29tcG9uZW50cy9MZWdhbFZlcmJpYWdlJztcblxuLy8gVXRpbHNcbmltcG9ydCB0eXBlIHsgV2ViaW5hckxlYWRGb3JtUGF5bG9hZCB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgZmllbGRzVG9DYXB0dXJlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL3V0aWxzL2FuYWx5dGljc0ZpZWxkc1RvQ2FwdHVyZSc7XG5pbXBvcnQgeyBhcHBsaWNhdGlvbkNvbmZpZyB9IGZyb20gJy4uLy4uL3NoYXJlZC9hcHBsaWNhdGlvbic7XG5pbXBvcnQgeyBQQVRIUywgRU1BSUwgfSBmcm9tICcuLi8uLi9zaGFyZWQvdXRpbHMvY29uc3RhbnRzJztcblxuLy8gSG9va3NcbmltcG9ydCB7XG4gIGNhcHR1cmVBbmFseXRpY3MsXG4gIG1hcFVybFBhcmFtc1RvQ2FtZWxcbn0gZnJvbSAnLi4vLi4vc2hhcmVkL2hvb2tzL3VzZVVybFBhcmFtcyc7XG5pbXBvcnQgdXNlUmVjYXB0Y2hhIGZyb20gJy4uLy4uL3NoYXJlZC9ob29rcy91c2VSZWNhcHRjaGEnO1xuXG5pbnRlcmZhY2UgV2ViaW5hckxlYWRGb3JtUHJvcHMge1xuICByZWFkb25seSB3ZWJpbmFySWQ/OiBzdHJpbmcgfCBudWxsO1xuICByZWFkb25seSB3ZWJpbmFyVG9waWM/OiBzdHJpbmcgfCBudWxsO1xuICByZWFkb25seSBzdWNjZXNzSW1hZ2VVcmw/OiBzdHJpbmc7XG59XG5cbmNvbnN0IERFRkFVTFRfU1VDQ0VTU19JTUFHRV9VUkwgPVxuICAnaHR0cHM6Ly9jZG4ucmFtc2V5c29sdXRpb25zLm5ldC9kYXZlcmFtc2V5LmNvbS9tZWRpYS9yYW1zZXktcGx1cy9ldmVyeWRvbGxhci9tYXJrZXRpbmcvMjAyNS93ZWJpbmFycy93ZWJpbmFyLXNpZ251cC1zdWNjZXNzLnBuZyc7XG5cbmZ1bmN0aW9uIFdlYmluYXJMZWFkRm9ybSh7XG4gIHdlYmluYXJJZCxcbiAgd2ViaW5hclRvcGljLFxuICBzdWNjZXNzSW1hZ2VVcmwgPSBERUZBVUxUX1NVQ0NFU1NfSU1BR0VfVVJMXG59OiBXZWJpbmFyTGVhZEZvcm1Qcm9wcykge1xuICBjb25zdCB7IGNhcHRjaGFUb2tlbiwgcmVjYXB0Y2hhUmVmLCBoYW5kbGVSZWNhcHRjaGEgfSA9IHVzZVJlY2FwdGNoYSgpO1xuXG4gIGNvbnN0IFtsZWFkRm9ybURpYWxvZ1Byb3BzLCBzZXRMZWFkRm9ybURpYWxvZ1Byb3BzXSA9IHVzZUF0b20oXG4gICAgd2ViaW5hckxlYWRGb3JtRGlhbG9nUHJvcHNBdG9tXG4gICk7XG4gIGNvbnN0IGNvbWJpbmVkRm9ybVByb3BzID0gdXNlQXRvbVZhbHVlKFxuICAgIGNvbWJpbmVkRm9ybVByb3BzQXRvbSh3ZWJpbmFyVG9waWMgPz8gdW5kZWZpbmVkKVxuICApO1xuXG4gIGNvbnN0IFt1cmxQYXJhbXMsIHNldFVybFBhcmFtc10gPSB1c2VTdGF0ZTx7IFtrZXk6IHN0cmluZ106IHN0cmluZyB8IG51bGwgfT4oXG4gICAge31cbiAgKTtcbiAgY29uc3QgW2lzU3VibWl0dGluZywgc2V0SXNTdWJtaXR0aW5nXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW3N1Ym1pc3Npb25FcnJvciwgc2V0U3VibWlzc2lvbkVycm9yXSA9IHVzZVN0YXRlKCcnKTtcbiAgY29uc3QgW3Nob3dTdWNjZXNzTWVzc2FnZSwgc2V0U2hvd1N1Y2Nlc3NNZXNzYWdlXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICBjb25zdCBwYXRoID0gd2luZG93LmxvY2F0aW9uLmhyZWYuc3BsaXQoJz8nKVswXTtcbiAgY29uc3QgeyBlbnYgfSA9IHdpbmRvdy5GT1JNU19CRkZfQ09ORklHO1xuICBjb25zdCBpc0xvY2FsRW52ID0gZW52ICE9PSAncHJvZC4nO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHdpbmRvdy5fV0VCSU5BUl9MRUFEX0ZPUk1fUkVRVUVTVCAmJiAhbGVhZEZvcm1EaWFsb2dQcm9wcykge1xuICAgICAgc2V0TGVhZEZvcm1EaWFsb2dQcm9wcyh3aW5kb3cuX1dFQklOQVJfTEVBRF9GT1JNX1JFUVVFU1QpO1xuICAgIH1cbiAgICBjb25zdCBjYXB0dXJlZFBhcmFtcyA9IGNhcHR1cmVBbmFseXRpY3MoZmllbGRzVG9DYXB0dXJlKTtcbiAgICBzZXRVcmxQYXJhbXMoT2JqZWN0LmZyb21FbnRyaWVzKGNhcHR1cmVkUGFyYW1zLmVudHJpZXMoKSkpO1xuXG4gICAgc2V0VmFsdWUoJ2Zvcm1Tb3VyY2UnLCBsZWFkRm9ybURpYWxvZ1Byb3BzPy5mb3JtU291cmNlID8/ICcnKTtcbiAgICBzZXRWYWx1ZSgnbGVhZFNvdXJjZScsIHBhdGgpO1xuICAgIHNldFZhbHVlKCdjYW1wYWlnbklkJywgbGVhZEZvcm1EaWFsb2dQcm9wcz8uY2FtcGFpZ25JZCk7XG4gICAgc2V0VmFsdWUoJ2xlYWRUeXBlJywgbGVhZEZvcm1EaWFsb2dQcm9wcz8ubGVhZFR5cGUgPz8gbnVsbCk7XG4gICAgc2V0VmFsdWUoJ3dlYmluYXJJZCcsIHdlYmluYXJJZCA/PyAnJyk7XG4gICAgc2V0VmFsdWUoJ3dlYmluYXJUb3BpYycsIHdlYmluYXJUb3BpYyA/PyAnJyk7XG5cbiAgICBzZXRWYWx1ZSgnZW1haWxPcHRJbicsICFjb21iaW5lZEZvcm1Qcm9wcy5zaG93RW1haWxPcHRJbik7XG4gICAgc2V0VmFsdWUoJ3Ntc09wdEluJywgIWNvbWJpbmVkRm9ybVByb3BzLnNob3dTbXNPcHRJbik7XG4gIH0sIFtsZWFkRm9ybURpYWxvZ1Byb3BzLCB3ZWJpbmFySWQsIHdlYmluYXJUb3BpYywgc2V0VXJsUGFyYW1zXSk7XG5cbiAgY29uc3Qge1xuICAgIHJlZ2lzdGVyLFxuICAgIGhhbmRsZVN1Ym1pdCxcbiAgICBmb3JtU3RhdGU6IHsgZXJyb3JzIH0sXG4gICAgc2V0VmFsdWUsXG4gICAgcmVzZXQ6IHJlc2V0Rm9ybSxcbiAgICBjbGVhckVycm9yc1xuICB9ID0gdXNlRm9ybTxXZWJpbmFyTGVhZEZvcm1QYXlsb2FkPigpO1xuXG4gIGNvbnN0IG9uU3VibWl0OiBTdWJtaXRIYW5kbGVyPFdlYmluYXJMZWFkRm9ybVBheWxvYWQ+ID0gYXN5bmMgKGRhdGEpID0+IHtcbiAgICBhd2FpdCByZWNhcHRjaGFSZWYuY3VycmVudD8uZXhlY3V0ZUFzeW5jKCk7XG4gICAgc2V0SXNTdWJtaXR0aW5nKHRydWUpO1xuXG4gICAgY29uc3QgcGhvbmUgPSBkYXRhLnBob25lPy50cmltKCkgPT09ICcnID8gbnVsbCA6IGRhdGEucGhvbmU7XG5cbiAgICBjb25zdCBwYXlsb2FkID0ge1xuICAgICAgLi4uZGF0YSxcbiAgICAgIC4uLm1hcFVybFBhcmFtc1RvQ2FtZWwodXJsUGFyYW1zKSxcbiAgICAgIGZvcm1Tb3VyY2U6IGxlYWRGb3JtRGlhbG9nUHJvcHM/LmZvcm1Tb3VyY2UsXG4gICAgICBwaG9uZVxuICAgIH07XG5cbiAgICBpZiAobGVhZEZvcm1EaWFsb2dQcm9wcz8uY2FtcGFpZ25JZCkge1xuICAgICAgcGF5bG9hZC5jYW1wYWlnbklkID0gbGVhZEZvcm1EaWFsb2dQcm9wcy5jYW1wYWlnbklkO1xuICAgIH1cblxuICAgIGlmIChwYXlsb2FkLnBob25lICYmICFjb21iaW5lZEZvcm1Qcm9wcz8uc2hvd1Ntc09wdEluKSB7XG4gICAgICBwYXlsb2FkLnNtc09wdEluID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBwYXlsb2FkLmVtYWlsT3B0SW4gPVxuICAgICAgIWNvbWJpbmVkRm9ybVByb3BzPy5zaG93RW1haWxPcHRJbiB8fCAoZGF0YS5lbWFpbE9wdEluID8/IGZhbHNlKTtcblxuICAgIGNvbnN0IGhlYWRlcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgQWNjZXB0OiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAnWC1SZWNhcHRjaGEtUmVzcG9uc2UnOiBjYXB0Y2hhVG9rZW4uY3VycmVudCA/PyAnJ1xuICAgIH07XG5cbiAgICBjb25zdCBib2R5OiBXZWJpbmFyTGVhZEZvcm1QYXlsb2FkID0ge1xuICAgICAgd2ViaW5hcklkOiBwYXlsb2FkLndlYmluYXJJZCxcbiAgICAgIHdlYmluYXJUb3BpYzogcGF5bG9hZC53ZWJpbmFyVG9waWMsXG4gICAgICBmaXJzdE5hbWU6IHBheWxvYWQuZmlyc3ROYW1lLFxuICAgICAgbGFzdE5hbWU6IHBheWxvYWQubGFzdE5hbWUsXG4gICAgICBlbWFpbDogcGF5bG9hZC5lbWFpbCxcbiAgICAgIHBob25lOiBwYXlsb2FkLnBob25lLFxuICAgICAgZm9ybVNvdXJjZTogcGF5bG9hZC5mb3JtU291cmNlLFxuICAgICAgbGVhZFR5cGU6IHBheWxvYWQubGVhZFR5cGUsXG4gICAgICBjYW1wYWlnbklkOiBwYXlsb2FkLmNhbXBhaWduSWQsXG4gICAgICBsZWFkU291cmNlOiBwYXlsb2FkLmxlYWRTb3VyY2UsXG4gICAgICBmb3JtVHlwZTogcGF5bG9hZC5mb3JtVHlwZSxcbiAgICAgIHNtc09wdEluOiBwYXlsb2FkLnNtc09wdEluID8/IGZhbHNlLFxuICAgICAgZW1haWxPcHRJbjogcGF5bG9hZC5lbWFpbE9wdEluID8/IGZhbHNlLFxuICAgICAgdXRtTWVkaXVtOiBwYXlsb2FkLnV0bU1lZGl1bSxcbiAgICAgIHV0bVRlcm06IHBheWxvYWQudXRtVGVybSxcbiAgICAgIHV0bVNvdXJjZTogcGF5bG9hZC51dG1Tb3VyY2UsXG4gICAgICB1dG1Db250ZW50OiBwYXlsb2FkLnV0bUNvbnRlbnQsXG4gICAgICB1dG1DYW1wYWlnbjogcGF5bG9hZC51dG1DYW1wYWlnbixcbiAgICAgIGdjbGlkOiBwYXlsb2FkLmdjbGlkLFxuICAgICAgZmJjbGlkOiBwYXlsb2FkLmZiY2xpZFxuICAgIH07XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgYXBpVXJsID1cbiAgICAgICAgcGF5bG9hZC53ZWJpbmFySWQgPT09ICcnXG4gICAgICAgICAgPyBgJHthcHBsaWNhdGlvbkNvbmZpZy5tYWdub2xpYUZvcm1zV2ViVXJsfSR7UEFUSFMuQVBJLldFQklOQVJfUkVDT1JERUR9YFxuICAgICAgICAgIDogYCR7YXBwbGljYXRpb25Db25maWcubWFnbm9saWFGb3Jtc1dlYlVybH0ke1BBVEhTLkFQSS5XRUJJTkFSX1JFR0lTVFJBVElPTn1gO1xuXG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKGFwaVVybCwge1xuICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgaGVhZGVycyxcbiAgICAgICAgY3JlZGVudGlhbHM6ICdpbmNsdWRlJyxcbiAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoYm9keSlcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIHJlZ2lzdGVyIGZvciB0aGUgd2ViaW5hcicpO1xuICAgICAgfVxuXG4gICAgICBpZiAobGVhZEZvcm1EaWFsb2dQcm9wcz8uc3VjY2Vzc1VybCkge1xuICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGxlYWRGb3JtRGlhbG9nUHJvcHMuc3VjY2Vzc1VybDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldFNob3dTdWNjZXNzTWVzc2FnZSh0cnVlKTtcbiAgICAgICAgY2xlYXJFcnJvcnMoKTtcbiAgICAgICAgcmVzZXRGb3JtKCk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZHVyaW5nIGZvcm0gc3VibWlzc2lvbjonLCBlKTtcbiAgICAgIHNldFN1Ym1pc3Npb25FcnJvcihcbiAgICAgICAgbGVhZEZvcm1EaWFsb2dQcm9wcz8uZXJyb3JNZXNzYWdlID8/XG4gICAgICAgICAgJ1RoZXJlIGlzIGEgcHJvYmxlbSBzdWJtaXR0aW5nIHlvdXIgcmVnaXN0cmF0aW9uLiBQbGVhc2UgdHJ5IGFnYWluLidcbiAgICAgICk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHNldElzU3VibWl0dGluZyhmYWxzZSk7XG4gICAgfVxuICB9O1xuXG4gIGlmIChzaG93U3VjY2Vzc01lc3NhZ2UpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPGRpdlxuICAgICAgICBjbGFzc05hbWU9XCJmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlclwiXG4gICAgICAgIGRhdGEtdGVzdGlkPVwid2ViaW5hci1sZWFkLWZvcm0tc3VjY2Vzc1wiXG4gICAgICA+XG4gICAgICAgIDxpbWcgc3JjPXtzdWNjZXNzSW1hZ2VVcmx9IGFsdD1cIlJlZ2lzdHJhdGlvbiBTdWNjZXNzXCIgY2xhc3NOYW1lPVwicC0yXCIgLz5cbiAgICAgICAgPEhlYWRpbmdcbiAgICAgICAgICBsZXZlbD1cIjJcIlxuICAgICAgICAgIHNpemU9XCJtZWRpdW1cIlxuICAgICAgICAgIGNsYXNzTmFtZT1cIm1iLTIgdGV4dC1ibHVlLTgwIHRleHQtY2VudGVyXCJcbiAgICAgICAgPlxuICAgICAgICAgIFRoYW5rIHlvdSBmb3IgcmVnaXN0ZXJpbmchXG4gICAgICAgIDwvSGVhZGluZz5cbiAgICAgICAgPFRleHQgc2l6ZT1cImJvZHlNZWRpdW1cIiBjbGFzc05hbWU9XCJ0ZXh0LWNlbnRlclwiPlxuICAgICAgICAgIEtlZXAgYW4gZXllIG91dCBmb3IgYW4gZW1haWwgd2l0aCBmdXJ0aGVyIGRldGFpbHMhXG4gICAgICAgIDwvVGV4dD5cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwid2ViaW5hci1sZWFkLWZvcm1cIj5cbiAgICAgIHtzdWJtaXNzaW9uRXJyb3IgJiYgKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgganVzdGlmeS1jZW50ZXIgbWItM1wiIHJvbGU9XCJhbGVydFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZ3psLUZvcm1GaWVsZC1lcnJvclwiPlxuICAgICAgICAgICAgPEhlYWRpbmcgbGV2ZWw9XCIzXCIgY29sb3I9XCJicmFuZFwiIHNpemU9XCJzbWFsbFwiPlxuICAgICAgICAgICAgICB7c3VibWlzc2lvbkVycm9yfVxuICAgICAgICAgICAgPC9IZWFkaW5nPlxuICAgICAgICAgICAgPFRleHQgc2l6ZT1cImJvZHlTbWFsbFwiPlxuICAgICAgICAgICAgICBQbGVhc2UgZW1haWwgc3VwcG9ydCBhdHsnICd9XG4gICAgICAgICAgICAgIDxhIGhyZWY9e2BtYWlsdG86JHtFTUFJTC5FVkVSWURPTExBUl9TVVBQT1JUfWB9PlxuICAgICAgICAgICAgICAgIHtFTUFJTC5FVkVSWURPTExBUl9TVVBQT1JUfVxuICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICwgb3IgdHJ5IGFnYWluIGxhdGVyLlxuICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICl9XG4gICAgICA8Zm9ybVxuICAgICAgICBvblN1Ym1pdD17aGFuZGxlU3VibWl0KG9uU3VibWl0KX1cbiAgICAgICAgZGF0YS1hbmFseXRpY3MtZm9ybVxuICAgICAgICBkYXRhLXRlc3RpZD1cIndlYmluYXItbGVhZC1mb3JtXCJcbiAgICAgICAgYWN0aW9uPVwid2ViaW5hci1sZWFkLWZvcm0tc3VibWlzc2lvblwiXG4gICAgICAgIGRhdGEtYW5hbHl0aWNzLWZvcm0tbW9kdWxlLXR5cGU9XCJ3ZWJpbmFyLXJlZ2lzdHJhdGlvblwiXG4gICAgICAgIGRhdGEtYW5hbHl0aWNzLWZvcm0tbW9kdWxlLWNhdGVnb3J5PVwibWFya2V0aW5nLWxlYWQtZm9ybVwiXG4gICAgICAgIGRhdGEtYW5hbHl0aWNzLWZvcm0tbW9kdWxlLWxhYmVsPVwid2ViaW5hci1sZWFkLWZvcm1cIlxuICAgICAgPlxuICAgICAgICA8U3RhY2tcbiAgICAgICAgICB2ZXJ0aWNhbFxuICAgICAgICAgIHNwYWNpbmc9XCJtZFwiXG4gICAgICAgICAgaG9yaXpvbnRhbEFsaWdubWVudD1cImZpbGxcIlxuICAgICAgICAgIGNsYXNzTmFtZT1cInctZnVsbCBtYXgtdy1bNDI1cHhdIG14LWF1dG9cIlxuICAgICAgICA+XG4gICAgICAgICAgPEZvcm1GaWVsZFxuICAgICAgICAgICAgbGFiZWw9XCJGaXJzdCBOYW1lXCJcbiAgICAgICAgICAgIGludmFsaWQ9eyEhZXJyb3JzLmZpcnN0TmFtZX1cbiAgICAgICAgICAgIGVycm9ycz17W2Vycm9ycy5maXJzdE5hbWU/Lm1lc3NhZ2VdfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHsoZm9ybUZpZWxkUHJvcHMpID0+IChcbiAgICAgICAgICAgICAgPElucHV0XG4gICAgICAgICAgICAgICAgaWQ9XCJ3ZWJpbmFyLWxlYWQtZm9ybS1maXJzdC1uYW1lXCJcbiAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cImZpcnN0TmFtZVwiXG4gICAgICAgICAgICAgICAgYXV0b0NvbXBsZXRlPVwiZ2l2ZW4tbmFtZVwiXG4gICAgICAgICAgICAgICAgYXJpYS1pbnZhbGlkPXtlcnJvcnMuZmlyc3ROYW1lID8gJ3RydWUnIDogJ2ZhbHNlJ31cbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkVudGVyIHlvdXIgZmlyc3QgbmFtZVwiXG4gICAgICAgICAgICAgICAgey4uLmZvcm1GaWVsZFByb3BzfVxuICAgICAgICAgICAgICAgIHsuLi5yZWdpc3RlcignZmlyc3ROYW1lJywge1xuICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICdGaXJzdCBOYW1lIGlzIHJlcXVpcmVkJ1xuICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L0Zvcm1GaWVsZD5cblxuICAgICAgICAgIDxGb3JtRmllbGRcbiAgICAgICAgICAgIGxhYmVsPVwiTGFzdCBOYW1lXCJcbiAgICAgICAgICAgIGludmFsaWQ9eyEhZXJyb3JzLmxhc3ROYW1lfVxuICAgICAgICAgICAgZXJyb3JzPXtbZXJyb3JzLmxhc3ROYW1lPy5tZXNzYWdlXX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7KGZvcm1GaWVsZFByb3BzKSA9PiAoXG4gICAgICAgICAgICAgIDxJbnB1dFxuICAgICAgICAgICAgICAgIGlkPVwid2ViaW5hci1sZWFkLWZvcm0tbGFzdC1uYW1lXCJcbiAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cImxhc3ROYW1lXCJcbiAgICAgICAgICAgICAgICBhdXRvQ29tcGxldGU9XCJnaXZlbi1uYW1lXCJcbiAgICAgICAgICAgICAgICBhcmlhLWludmFsaWQ9e2Vycm9ycy5maXJzdE5hbWUgPyAndHJ1ZScgOiAnZmFsc2UnfVxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRW50ZXIgeW91ciBsYXN0IG5hbWVcIlxuICAgICAgICAgICAgICAgIHsuLi5mb3JtRmllbGRQcm9wc31cbiAgICAgICAgICAgICAgICB7Li4ucmVnaXN0ZXIoJ2xhc3ROYW1lJywgeyByZXF1aXJlZDogJ0xhc3QgTmFtZSBpcyByZXF1aXJlZCcgfSl9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvRm9ybUZpZWxkPlxuXG4gICAgICAgICAgPEZvcm1GaWVsZFxuICAgICAgICAgICAgbGFiZWw9XCJFbWFpbFwiXG4gICAgICAgICAgICBpbnZhbGlkPXshIWVycm9ycy5lbWFpbH1cbiAgICAgICAgICAgIGVycm9ycz17W2Vycm9ycy5lbWFpbD8ubWVzc2FnZV19XG4gICAgICAgICAgPlxuICAgICAgICAgICAgeyhmb3JtRmllbGRQcm9wcykgPT4gKFxuICAgICAgICAgICAgICA8SW5wdXRcbiAgICAgICAgICAgICAgICBpZD1cIndlYmluYXItbGVhZC1mb3JtLWVtYWlsXCJcbiAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cImVtYWlsXCJcbiAgICAgICAgICAgICAgICBhcmlhLWludmFsaWQ9e2Vycm9ycy5lbWFpbCA/ICd0cnVlJyA6ICdmYWxzZSd9XG4gICAgICAgICAgICAgICAgey4uLmZvcm1GaWVsZFByb3BzfVxuICAgICAgICAgICAgICAgIHsuLi5yZWdpc3RlcignZW1haWwnLCB7XG4gICAgICAgICAgICAgICAgICByZXF1aXJlZDogJ0VtYWlsIGlzIHJlcXVpcmVkJyxcbiAgICAgICAgICAgICAgICAgIHBhdHRlcm46IHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IC9eW2EtekEtWjAtOS5fJSstXStAW2EtekEtWjAtOS4tXStcXC5bYS16QS1aXXsyLDR9JC8sXG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICdJbnZhbGlkIGVtYWlsIGFkZHJlc3MnXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvRm9ybUZpZWxkPlxuXG4gICAgICAgICAge2NvbWJpbmVkRm9ybVByb3BzLnNob3dQaG9uZU51bWJlciAmJiAoXG4gICAgICAgICAgICA8Rm9ybUZpZWxkXG4gICAgICAgICAgICAgIGVycm9ycz17W2Vycm9ycy5waG9uZT8ubWVzc2FnZV19XG4gICAgICAgICAgICAgIGludmFsaWQ9eyEhZXJyb3JzLnBob25lfVxuICAgICAgICAgICAgICBsYWJlbD17XG4gICAgICAgICAgICAgICAgY29tYmluZWRGb3JtUHJvcHMucmVxdWlyZVBob25lTnVtYmVyXG4gICAgICAgICAgICAgICAgICA/ICdQaG9uZSBOdW1iZXInXG4gICAgICAgICAgICAgICAgICA6ICdQaG9uZSBOdW1iZXIgKG9wdGlvbmFsKSdcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7KGZvcm1GaWVsZFByb3BzKSA9PiAoXG4gICAgICAgICAgICAgICAgPElucHV0XG4gICAgICAgICAgICAgICAgICBpZD1cIndlYmluYXItbGVhZC1mb3JtLXBob25lXCJcbiAgICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwicGhvbmVcIlxuICAgICAgICAgICAgICAgICAgYXJpYS1pbnZhbGlkPXtlcnJvcnMucGhvbmUgPyAndHJ1ZScgOiAnZmFsc2UnfVxuICAgICAgICAgICAgICAgICAgey4uLmZvcm1GaWVsZFByb3BzfVxuICAgICAgICAgICAgICAgICAgey4uLnJlZ2lzdGVyKCdwaG9uZScsIHtcbiAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IGNvbWJpbmVkRm9ybVByb3BzLnJlcXVpcmVQaG9uZU51bWJlclxuICAgICAgICAgICAgICAgICAgICAgID8gJ1Bob25lIG51bWJlciBpcyByZXF1aXJlZCdcbiAgICAgICAgICAgICAgICAgICAgICA6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuOiB7XG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU6XG4gICAgICAgICAgICAgICAgICAgICAgICAvXlxcKz8oXFxkezEsM30pP1stLlxcc10/XFwoP1xcZHszfVxcKT9bLS5cXHNdP1xcZHszfVstLlxcc10/XFxkezR9JC8sXG4gICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogJ0VudGVyIGEgdmFsaWQgUGhvbmUgTnVtYmVyJ1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9Gb3JtRmllbGQ+XG4gICAgICAgICAgKX1cblxuICAgICAgICAgIHtjb21iaW5lZEZvcm1Qcm9wcy5zaG93U21zT3B0SW4gJiYgKFxuICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgIHsuLi5yZWdpc3Rlcignc21zT3B0SW4nKX1cbiAgICAgICAgICAgICAgc2l6ZT1cInNtXCJcbiAgICAgICAgICAgICAgbGFiZWw9e1xuICAgICAgICAgICAgICAgIFwiSSdkIGxpa2UgdG8gcmVjZWl2ZSB0ZXh0IHJlbWluZGVycyBhbmQgaW5mbyBhYm91dCBSYW1zZXkgU29sdXRpb25zIHByb2R1Y3RzLlwiXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7Y29tYmluZWRGb3JtUHJvcHMuc2hvd0VtYWlsT3B0SW4gJiYgKFxuICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgIHsuLi5yZWdpc3RlcignZW1haWxPcHRJbicpfVxuICAgICAgICAgICAgICBzaXplPVwic21cIlxuICAgICAgICAgICAgICBsYWJlbD17XG4gICAgICAgICAgICAgICAgXCJJJ2QgbGlrZSB0byByZWNlaXZlIGVtYWlscyBhYm91dCBSYW1zZXkgU29sdXRpb25zIHByb2R1Y3RzLlwiXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cblxuICAgICAgICAgIHsvKiBAdHMtaWdub3JlICovfVxuICAgICAgICAgIDxSZUNBUFRDSEFcbiAgICAgICAgICAgIHJlZj17cmVjYXB0Y2hhUmVmfVxuICAgICAgICAgICAgc2l6ZT1cImludmlzaWJsZVwiXG4gICAgICAgICAgICBzaXRla2V5PXt3aW5kb3cuRk9STVNfQkZGX0NPTkZJRy5SRUNBUFRDSEFfU0lURV9LRVl9XG4gICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlUmVjYXB0Y2hhfVxuICAgICAgICAgIC8+XG5cbiAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICBjbGFzc05hbWU9XCIhbWItNFwiXG4gICAgICAgICAgICBkYXRhLXRlc3RpZD1cInN1Ym1pdC1mb3JtXCJcbiAgICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgZGlzYWJsZWQ9e2lzU3VibWl0dGluZ31cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7bGVhZEZvcm1EaWFsb2dQcm9wcz8uYnV0dG9uVGV4dCA/PyAnUmVnaXN0ZXInfVxuICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICA8L1N0YWNrPlxuXG4gICAgICAgIHsvKiBoaWRkZW4gZmllbGRzIHNldCBieSBtYWdub2xpYSBmb3JtIGRpYWxvZyAqL31cbiAgICAgICAgPGlucHV0IHR5cGU9XCJoaWRkZW5cIiBpZD1cIndlYmluYXJJZFwiIHsuLi5yZWdpc3Rlcignd2ViaW5hcklkJyl9IC8+XG4gICAgICAgIDxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgaWQ9XCJ3ZWJpbmFyTmFtZVwiIHsuLi5yZWdpc3Rlcignd2ViaW5hclRvcGljJyl9IC8+XG4gICAgICAgIDxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgaWQ9XCJmb3JtU291cmNlXCIgey4uLnJlZ2lzdGVyKCdmb3JtU291cmNlJyl9IC8+XG4gICAgICAgIDxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgaWQ9XCJsZWFkU291cmNlXCIgey4uLnJlZ2lzdGVyKCdsZWFkU291cmNlJyl9IC8+XG4gICAgICAgIDxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgaWQ9XCJjYW1wYWlnbklkXCIgey4uLnJlZ2lzdGVyKCdjYW1wYWlnbklkJyl9IC8+XG4gICAgICAgIDxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgaWQ9XCJsZWFkVHlwZVwiIHsuLi5yZWdpc3RlcignbGVhZFR5cGUnKX0gLz5cbiAgICAgICAgPGlucHV0IHR5cGU9XCJoaWRkZW5cIiBpZD1cImZvcm1UeXBlXCIgey4uLnJlZ2lzdGVyKCdmb3JtVHlwZScpfSAvPlxuICAgICAgPC9mb3JtPlxuXG4gICAgICB7Y29tYmluZWRGb3JtUHJvcHMuc2hvd1Bob25lTnVtYmVyID8gKFxuICAgICAgICA8TGVnYWxWZXJiaWFnZVdpdGhQaG9uZU51bWJlciAvPlxuICAgICAgKSA6IChcbiAgICAgICAgPExlZ2FsVmVyYmlhZ2UgLz5cbiAgICAgICl9XG4gICAgICB7aXNMb2NhbEVudiAmJiAoXG4gICAgICAgIDxTdXNwZW5zZSBmYWxsYmFjaz17bnVsbH0+XG4gICAgICAgICAgPFJlYWN0UXVlcnlEZXZ0b29scyBpbml0aWFsSXNPcGVuPXtmYWxzZX0gLz5cbiAgICAgICAgPC9TdXNwZW5zZT5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IFdlYmluYXJMZWFkRm9ybTtcbiIsImltcG9ydCB7IFF1ZXJ5Q2xpZW50IH0gZnJvbSAnQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5JztcblxuZXhwb3J0IGNvbnN0IHNoYXJlZFF1ZXJ5Q2xpZW50ID0gbmV3IFF1ZXJ5Q2xpZW50KHtcbiAgZGVmYXVsdE9wdGlvbnM6IHtcbiAgICBxdWVyaWVzOiB7XG4gICAgICByZXRyeTogZmFsc2UsXG4gICAgICBnY1RpbWU6IDEwMDAgKiA2MCAqIDUsIC8vIDUgbWludXRlc1xuICAgICAgc3RhbGVUaW1lOiAxMDAwICogNjAgKiAzMCAvLyAzMCBtaW51dGVzXG4gICAgfVxuICB9XG59KTtcbiIsImNvbnN0IENPTlNUUyA9IHtcbiAgUEFUSFM6IHtcbiAgICBBUEk6IHtcbiAgICAgIEZQVV9GT1JNX1NVQk1JU1NJT046ICcvYXBpL2ZwdS1tYXJrZXRpbmctZm9ybS9zdWJtaXQnLFxuICAgICAgVVBDT01JTkdfV0VCSU5BUlM6ICcvYXBpL3ZpZGVvLWNvbmZlcmVuY2luZy93ZWJpbmFycy91cGNvbWluZycsXG4gICAgICBXRUJJTkFSX1JFR0lTVFJBVElPTjogJy9hcGkvd2ViaW5hci9yZWdpc3RlcicsXG4gICAgICBXRUJJTkFSX1JFQ09SREVEOiAnL2FwaS93ZWJpbmFyL3JlZ2lzdGVyL3JlY29yZGVkJyxcbiAgICAgIExJVkVTVFJFQU1fR0lWRUFXQVlfUkVHSVNUUkFUSU9OOiAnL2FwaS9saXZlc3RyZWFtLXJlZ2lzdHJhdGlvbidcbiAgICB9XG4gIH0sXG4gIEVNQUlMOiB7XG4gICAgRVZFUllET0xMQVJfU1VQUE9SVDogJ2hlbHBAZXZlcnlkb2xsYXIuY29tJ1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgeyBQQVRIUywgRU1BSUwgfSA9IENPTlNUUztcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=