1import { createHotContext as __vite__createHotContext } from "/@vite/client";import.meta.hot = __vite__createHotContext("/src/app/pages/dashboard/PayoutDetails.tsx");if (!window.$RefreshReg$) throw new Error("React refresh preamble was not loaded. Something is wrong."); 2const prevRefreshReg = window.$RefreshReg$; 3const prevRefreshSig = window.$RefreshSig$; 4window.$RefreshReg$ = RefreshRuntime.getRefreshReg("/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PayoutDetails.tsx"); 5window.$RefreshSig$ = RefreshRuntime.createSignatureFunctionForTransform; 6 7import * as RefreshRuntime from "/@react-refresh"; 8 9import __vite__cjsImport1_react_jsxDevRuntime from "/node_modules/.vite/deps/react_jsx-dev-runtime.js?v=e8ce80ae"; const _jsxDEV = __vite__cjsImport1_react_jsxDevRuntime["jsxDEV"]; 10var _s = $RefreshSig$(); 11import __vite__cjsImport2_react from "/node_modules/.vite/deps/react.js?v=e8ce80ae"; const React = __vite__cjsImport2_react.__esModule ? __vite__cjsImport2_react.default : __vite__cjsImport2_react; const useEffect = __vite__cjsImport2_react["useEffect"]; const useState = __vite__cjsImport2_react["useState"]; const useMemo = __vite__cjsImport2_react["useMemo"]; const useRef = __vite__cjsImport2_react["useRef"]; 12import axios from "/node_modules/.vite/deps/axios.js?v=e8ce80ae"; 13import { useAuth } from "/src/app/modules/auth/index.ts"; 14import Swal from "/node_modules/.vite/deps/sweetalert2.js?v=e8ce80ae"; 15import "/src/app/pages/dashboard/css/payoutDetails.css"; 16import { useNavigate } from "/node_modules/.vite/deps/react-router-dom.js?v=e8ce80ae"; 17import { CUREENT_COMPANY_NAME, CREATE_STRIPE_CONNECTED_ACCOUNT, GET_ALL_STRIPE_ACCOUNTS, GET_ACCOUNT_ID, GET_STRIPE_ACCOUNT_ID, CHECK_ACCOUNT_STATUS, UPDATE_USER_STRIPE_STATUS, GET_STRIPE_ONBOARDING_LINK, PAUSE_STRIPE_CONNECTED_ACCOUNT, RESUME_STRIPE_CONNECTED_ACCOUNT, CHECK_ACCOUNT_STATUS_FROM_DB } from "/src/app/Constants.tsx"; 18import { enableSplashScreen, disableSplashScreen } from "/src/app/pages/common/CommonUtilities.tsx"; 19import { Content } from "/src/config/layout/components/Content.tsx"; 20const PayoutDetails = ()=>{ 21 _s(); 22 const { currentUser } = useAuth(); 23 const [accountId, setAccountId] = useState(null); 24 const [accountDetails, setAccountDetails] = useState(null); 25 const [previousAccountDetails, setPreviousAccountDetails] = useState([]); 26 const [showConfirmationModal, setShowConfirmationModal] = useState(false); 27 const [selectedAccountId, setSelectedAccountId] = useState(null); 28 const [noActiveAccount, setNoActiveAccount] = useState(false); 29 const domainUrl = window.location.origin; 30 const isRedirectingRef = useRef(false); 31 const navigate = useNavigate(); 32 const checkStripeAccountFlow = async ()=>{ 33 enableSplashScreen(); 34 try { 35 // Step 1: Get the latest Stripe accountId of current user 36 const { data: accountResp } = await axios.get(`${GET_ACCOUNT_ID(CUREENT_COMPANY_NAME)}?userId=${currentUser?.id}`); 37 const newStripeAccountId = accountResp?.data || null; 38 //console.log("newStripeAccountId: " + newStripeAccountId); 39 if (newStripeAccountId) { 40 // Step 2: Check onboarding status 41 const statusResponse = await axios.get(CHECK_ACCOUNT_STATUS(CUREENT_COMPANY_NAME), { 42 params: { 43 accountId: newStripeAccountId 44 } 45 }); 46 const { data } = statusResponse.data; 47 //console.log("statusResponse: " + JSON.stringify(statusResponse)) 48 const queryParams = new URLSearchParams(window.location.search); 49 const onboarding = queryParams.get("onboard"); 50 if (data?.onboardingCompleted && onboarding === "true") { 51 // Step 3: Get previous active accountId 52 const previousAccountResponse = await axios.post(`${GET_STRIPE_ACCOUNT_ID(CUREENT_COMPANY_NAME)}?userId=${currentUser?.id}`); 53 const previousAccountId = previousAccountResponse.data.data; 54 //console.log("previousAccountId:", previousAccountId); 55 // Step 4: Pause previous account 56 if (previousAccountId && previousAccountId !== newStripeAccountId) { 57 await axios.post(PAUSE_STRIPE_CONNECTED_ACCOUNT(CUREENT_COMPANY_NAME), null, { 58 params: { 59 accountId: previousAccountId 60 } 61 }); 62 } 63 // Step 5: Update new account 64 await axios.post(`${UPDATE_USER_STRIPE_STATUS(CUREENT_COMPANY_NAME)}?newStripeAccountId=${newStripeAccountId}`); 65 await Swal.fire({ 66 title: 'All Set!', 67 html: ` 68 <p class="swal-subtext"> 69 Your account is linked.<br /> 70 Payouts will go to your connected bank. 71 </p> 72 `, 73 imageUrl: '/media/misc/Approved.png', 74 imageWidth: 100, 75 imageHeight: 100, 76 confirmButtonText: 'Ok', 77 customClass: { 78 title: 'swal-custom-title_AllSet', 79 // htmlContainer: 'swal-custom-html', // Uncomment if needed 80 confirmButton: 'custom-ok-button' 81 }, 82 buttonsStyling: false 83 }); 84 await fetchAndSetAccountDetails(); 85 } 86 // Remove the query param from the URL 87 const newUrl = new URL(window.location.href); 88 newUrl.searchParams.delete('onboard'); 89 window.history.replaceState({}, '', newUrl.toString()); 90 } 91 // update the account details after the flow 92 await fetchAndSetAccountDetails(); 93 } catch (error) { 94 console.error("Error in Stripe account flow:", error); 95 } finally{ 96 if (!isRedirectingRef.current) { 97 disableSplashScreen(); 98 } 99 } 100 }; 101 useEffect(()=>{ 102 if (currentUser?.id && currentUser?.email) { 103 checkStripeAccountFlow(); 104 } 105 }, [ 106 currentUser?.id, 107 currentUser?.email 108 ]); 109 useEffect(()=>{ 110 fetch("https://ipapi.co/json/").then((res)=>res.json()).then((data)=>{ 111 setUserCountry(data.country); // e.g. "US" or "CA" 112 }); 113 }, []); 114 const [userCountry, setUserCountry] = useState("US"); // default fallback 115 const handleProceed = async ()=>{ 116 setShowConfirmationModal(false); 117 try { 118 await createConnectedAccount(); 119 } catch (err) { 120 console.error("Failed during proceed:", err); 121 } 122 }; 123 const createConnectedAccount = async ()=>{ 124 enableSplashScreen(); 125 try { 126 // Get latest Stripe account ID for current user 127 const accountResp = await axios.get(`${GET_ACCOUNT_ID(CUREENT_COMPANY_NAME)}?userId=${currentUser?.id}`); 128 const newStripeAccountId = accountResp?.data?.data; 129 if (newStripeAccountId) { 130 // Check account status in DB 131 const dbRes = await axios.get(CHECK_ACCOUNT_STATUS_FROM_DB(CUREENT_COMPANY_NAME), { 132 params: { 133 accountId: newStripeAccountId 134 } 135 }); 136 const dbData = dbRes.data?.data || {}; 137 const isActive = dbData.isActive; 138 if (!isActive) { 139 // Resume onboarding 140 const onboardingLinkResponse = await axios.get(GET_STRIPE_ONBOARDING_LINK(CUREENT_COMPANY_NAME), { 141 params: { 142 accountId: newStripeAccountId, 143 domainURL: domainUrl 144 } 145 }); 146 const { onboardingUrl } = onboardingLinkResponse.data.data; 147 isRedirectingRef.current = true; 148 window.location.href = onboardingUrl; 149 return; 150 } 151 } 152 // Create a new account if none exists or it's already active 153 const createResponse = await axios.post(`${CREATE_STRIPE_CONNECTED_ACCOUNT(CUREENT_COMPANY_NAME)}?userEmail=${currentUser?.email}&domainURL=${domainUrl}&companyName=${CUREENT_COMPANY_NAME}&country=${userCountry}`); 154 const { onboardingUrl } = createResponse.data.data; 155 isRedirectingRef.current = true; 156 window.location.href = onboardingUrl; 157 } catch (err) { 158 await Swal.fire({ 159 title: 'Error', 160 text: err.response?.data?.message || err.message, 161 icon: 'error' 162 }); 163 } finally{ 164 if (!isRedirectingRef.current) { 165 disableSplashScreen(); 166 } 167 } 168 }; 169 const fetchAndSetAccountDetails = async ()=>{ 170 try { 171 const response = await axios.get(`${GET_ALL_STRIPE_ACCOUNTS(CUREENT_COMPANY_NAME)}?userId=${currentUser?.id}`); 172 const accountIds = response.data.data.accountIds || []; 173 const accountDetailsList = await Promise.all(accountIds.map(async (id)=>{ 174 const [statusRes, dbRes] = await Promise.all([ 175 axios.get(CHECK_ACCOUNT_STATUS(CUREENT_COMPANY_NAME), { 176 params: { 177 accountId: id 178 } 179 }), 180 axios.get(CHECK_ACCOUNT_STATUS_FROM_DB(CUREENT_COMPANY_NAME), { 181 params: { 182 accountId: id 183 } 184 }) 185 ]); 186 const stripeData = statusRes.data?.data || {}; 187 const dbData = dbRes.data?.data || {}; 188 const onboardingDone = stripeData.onboardingCompleted === true; 189 const isActive = onboardingDone && (dbData.isActive ?? false); 190 return { 191 accountId: id, 192 ...stripeData, 193 isActive 194 }; 195 })); 196 const active = accountDetailsList.filter((a)=>a.isActive); 197 const inactive = accountDetailsList.filter((a)=>!a.isActive); 198 if (active.length === 0) { 199 navigate(`/${CUREENT_COMPANY_NAME}/share`); 200 return; 201 }
202 setAccountDetails(active.length > 0 ? active[0] : null); 203 setPreviousAccountDetails([ 204 ...active.slice(1), 205 ...inactive 206 ]); 207 setAccountId(active.length > 0 ? active[0].accountId : null); 208 if (!selectedAccountId && active.length > 0) { 209 setSelectedAccountId(active[0].accountId); 210 } 211 } catch (error) { 212 console.error("Failed to fetch and set account details:", error); 213 } 214 }; 215 const resumeConnectedAccount = async ()=>{ 216 enableSplashScreen(); 217 try { 218 // 1. Get the currently active account ID from backend 219 const previousAccountResponse = await axios.post(`${GET_STRIPE_ACCOUNT_ID(CUREENT_COMPANY_NAME)}?userId=${currentUser?.id}`); 220 const previousAccountId = previousAccountResponse.data.data; 221 // 2. Pause the active account if itâs different from the selected one 222 if (previousAccountId && previousAccountId !== selectedAccountId) { 223 await axios.post(PAUSE_STRIPE_CONNECTED_ACCOUNT(CUREENT_COMPANY_NAME), null, { 224 params: { 225 accountId: previousAccountId 226 } 227 }); 228 } 229 // 3. Resume the selected account 230 await axios.post(RESUME_STRIPE_CONNECTED_ACCOUNT(CUREENT_COMPANY_NAME), null, { 231 params: { 232 accountId: selectedAccountId 233 } 234 }); 235 await Swal.fire({ 236 title: 'Account Resumed Successfully', 237 imageUrl: '/media/misc/Approved.png', 238 imageWidth: 100, 239 imageHeight: 100, 240 confirmButtonText: 'Ok', 241 customClass: { 242 title: 'swal-custom-title', 243 confirmButton: 'custom-ok-button' 244 }, 245 buttonsStyling: false 246 }); 247 // Refresh data 248 await fetchAndSetAccountDetails(); 249 } catch (error) { 250 await Swal.fire({ 251 title: 'Resume Failed', 252 text: error.response?.data?.data?.message || error.message, 253 icon: 'error' 254 }); 255 } finally{ 256 disableSplashScreen(); 257 } 258 }; 259 const isValidAccount = (details)=>{ 260 if (!details) return false; 261 return details?.onboardingCompleted === true; // Only valid if onboarding finished 262 }; 263 const AccountHeader = ()=>/*#__PURE__*/ _jsxDEV("div", { 264 className: "icon_container d-flex flex-row", 265 children: [ 266 /*#__PURE__*/ _jsxDEV("img", { 267 src: "/media/misc/dashboard-account-img.png", 268 alt: "Profile Icon", 269 className: "profile-icon" 270 }, void 0, false, { 271 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PayoutDetails.tsx", 272 lineNumber: 315, 273 columnNumber: 13 274 }, this), 275 /*#__PURE__*/ _jsxDEV("h1", { 276 className: "account-link", 277 children: "Account" 278 }, void 0, false, { 279 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PayoutDetails.tsx", 280 lineNumber: 320, 281 columnNumber: 13 282 }, this) 283 ] 284 }, void 0, true, { 285 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PayoutDetails.tsx", 286 lineNumber: 314, 287 columnNumber: 9 288 }, this); 289 const AccountDetailsBox = ({ details, status })=>{ 290 const isActive = status === 'Active'; 291 const isSelected = selectedAccountId === details.accountId; 292 return /*#__PURE__*/ _jsxDEV("div", { 293 className: "details-box relative flex flex-col", 294 children: [ 295 /*#__PURE__*/ _jsxDEV("div", { 296 className: "checkbox-row flex items-center mb-2.5", 297 children: /*#__PURE__*/ _jsxDEV("input", { 298 type: "checkbox", 299 id: `account-${details.accountId}`, 300 checked: isSelected, 301 onChange: ()=>{ 302 setSelectedAccountId((prev)=>prev === details.accountId ? null : details.accountId); 303 }, 304 className: "account-checkbox mr-3" 305 }, void 0, false, { 306 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PayoutDetails.tsx", 307 lineNumber: 337, 308 columnNumber: 21 309 }, this) 310 }, void 0, false, { 311 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PayoutDetails.tsx", 312 lineNumber: 336, 313 columnNumber: 17 314 }, this), 315 /*#__PURE__*/ _jsxDEV("div", { 316 className: "detail-col", 317 children: [ 318 /*#__PURE__*/ _jsxDEV("div", { 319 children: /*#__PURE__*/ _jsxDEV("strong", { 320 children: "First Name" 321 }, void 0, false, { 322 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PayoutDetails.tsx", 323 lineNumber: 353, 324 columnNumber: 8 325 }, this) 326 }, void 0, false, { 327 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PayoutDetails.tsx", 328 lineNumber: 353, 329 columnNumber: 3 330 }, this), 331 /*#__PURE__*/ _jsxDEV("div", { 332 title: details?.first_name || "N/A", 333 children: details?.first_name || "N/A" 334 }, void 0, false, { 335 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PayoutDetails.tsx", 336 lineNumber: 354, 337 columnNumber: 3 338 }, this) 339 ] 340 }, void 0, true, { 341 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PayoutDetails.tsx", 342 lineNumber: 352, 343 columnNumber: 17 344 }, this), 345 /*#__PURE__*/ _jsxDEV("div", { 346 className: "detail-col", 347 children: [ 348 /*#__PURE__*/ _jsxDEV("div", { 349 children: /*#__PURE__*/ _jsxDEV("strong", { 350 children: "Last Name" 351 }, void 0, false, { 352 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PayoutDetails.tsx", 353 lineNumber: 360, 354 columnNumber: 26 355 }, this) 356 }, void 0, false, { 357 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PayoutDetails.tsx", 358 lineNumber: 360, 359 columnNumber: 21 360 }, this), 361 /*#__PURE__*/ _jsxDEV("div", { 362 title: details?.last_name || "N/A", 363 children: details?.last_name || "N/A" 364 }, void 0, false, { 365 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PayoutDetails.tsx", 366 lineNumber: 360, 367 columnNumber: 58 368 }, this) 369 ] 370 }, void 0, true, { 371 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PayoutDetails.tsx", 372 lineNumber: 359, 373 columnNumber: 17 374 }, this), 375 /*#__PURE__*/ _jsxDEV("div", { 376 className: "detail-col", 377 children: [ 378 /*#__PURE__*/ _jsxDEV("div", { 379 children: /*#__PURE__*/ _jsxDEV("strong", { 380 children: "Email" 381 }, void 0, false, { 382 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PayoutDetails.tsx", 383 lineNumber: 363, 384 columnNumber: 26 385 }, this) 386 }, void 0, false, { 387 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PayoutDetails.tsx", 388 lineNumber: 363, 389 columnNumber: 21 390 }, this), 391 /*#__PURE__*/ _jsxDEV("div", { 392 title: details?.email || "N/A", 393 children: details?.email || "N/A" 394 }, void 0, false, { 395 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PayoutDetails.tsx", 396 lineNumber: 363, 397 columnNumber: 54 398 }, this) 399 ] 400 }, void 0, true, { 401 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PayoutDetails.tsx", 402 lineNumber: 362, 403 columnNumber: 17 404 }, this), 405 /*#__PURE__*/ _jsxDEV("div", { 406 className: "detail-col", 407 children: [ 408 /*#__PURE__*/ _jsxDEV("div", { 409 children: /*#__PURE__*/ _jsxDEV("strong", { 410 children: "Bank Name" 411 }, void 0, false, { 412 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PayoutDetails.tsx", 413 lineNumber: 366, 414 columnNumber: 26 415 }, this) 416 }, void 0, false, { 417 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PayoutDetails.tsx", 418 lineNumber: 366, 419 columnNumber: 21 420 }, this), 421 /*#__PURE__*/ _jsxDEV("div", { 422 title: details?.bank_name || "N/A", 423 children: details?.bank_name || "N/A" 424 }, void 0, false, { 425 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PayoutDetails.tsx", 426 lineNumber: 366, 427 columnNumber: 58 428 }, this) 429 ] 430 }, void 0, true, { 431 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PayoutDetails.tsx", 432 lineNumber: 365, 433 columnNumber: 17 434 }, this), 435 /*#__PURE__*/ _jsxDEV("div", { 436 className: "detail-col", 437 children: [ 438 /*#__PURE__*/ _jsxDEV("div", { 439 children: /*#__PURE__*/ _jsxDEV("strong", { 440 children: "Country" 441 }, void 0, false, { 442 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PayoutDetails.tsx", 443 lineNumber: 369, 444 columnNumber: 26 445 }, this) 446 }, void 0, false, { 447 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PayoutDetails.tsx", 448 lineNumber: 369, 449 columnNumber: 21 450 }, this), 451 /*#__PURE__*/ _jsxDEV("div", { 452 title: details?.country || "N/A", 453 children: details?.country || "N/A" 454 }, void 0, false, { 455 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PayoutDetails.tsx", 456 lineNumber: 369, 457 columnNumber: 56 458 }, this) 459 ] 460 }, void 0, true, { 461 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PayoutDetails.tsx", 462 lineNumber: 368, 463 columnNumber: 17 464 }, this), 465 /*#__PURE__*/ _jsxDEV("div", { 466 className: "detail-col", 467 children: [ 468 /*#__PURE__*/ _jsxDEV("div", { 469 children: /*#__PURE__*/ _jsxDEV("strong", { 470 children: "Bank Account" 471 }, void 0, false, { 472 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PayoutDetails.tsx", 473 lineNumber: 372, 474 columnNumber: 26 475 }, this) 476 }, void 0, false, { 477 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PayoutDetails.tsx", 478 lineNumber: 372, 479 columnNumber: 21 480 }, this), 481 /*#__PURE__*/ _jsxDEV("div", { 482 title: details?.last4 || "N/A", 483 children: details?.last4 || "N/A" 484 }, void 0, false, { 485 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PayoutDetails.tsx", 486 lineNumber: 372, 487 columnNumber: 61 488 }, this) 489 ] 490 }, void 0, true, { 491 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PayoutDetails.tsx", 492 lineNumber: 371, 493 columnNumber: 17 494 }, this), 495 /*#__PURE__*/ _jsxDEV("div", { 496 className: `status-badge absolute top-2.5 right-2.5 ${isActive ? 'active' : 'inactive'}`, 497 children: status 498 }, void 0, false, { 499 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PayoutDetails.tsx", 500 lineNumber: 376, 501 columnNumber: 17 502 }, this) 503 ] 504 }, void 0, true, { 505 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PayoutDetails.tsx", 506 lineNumber: 332, 507 columnNumber: 13 508 }, this); 509 }; 510 const allAccounts = useMemo(()=>{ 511 const combined = accountDetails ? [ 512 accountDetails, 513 ...previousAccountDetails 514 ] : [ 515 ...previousAccountDetails 516 ]; 517 return combined.filter(isValidAccount).sort((a, b)=>(b.isActive ? 1 : 0) - (a.isActive ? 1 : 0)); 518 }, [ 519 accountDetails, 520 previousAccountDetails 521 ]);
522 const selectedDetails = useMemo(()=>{ 523 return allAccounts.find((acc)=>acc.accountId === selectedAccountId); 524 }, [ 525 allAccounts, 526 selectedAccountId 527 ]); 528 const selectedIsPaused = useMemo(()=>{ 529 return selectedDetails && !selectedDetails.isActive; 530 }, [ 531 selectedDetails 532 ]); 533 return /*#__PURE__*/ _jsxDEV(Content, { 534 children: /*#__PURE__*/ _jsxDEV("div", { 535 className: "payout-modal", 536 children: [ 537 /*#__PURE__*/ _jsxDEV("div", { 538 className: "cus_v_payout_deatils", 539 children: [ 540 /*#__PURE__*/ _jsxDEV("h2", { 541 className: "cus_v_b_d", 542 children: "View Bank Details" 543 }, void 0, false, { 544 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PayoutDetails.tsx", 545 lineNumber: 405, 546 columnNumber: 21 547 }, this), 548 /*#__PURE__*/ _jsxDEV("div", { 549 className: "account_info", 550 children: "Add or switch Bank accounts here. To switch, just check the account you want and click Resume." 551 }, void 0, false, { 552 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PayoutDetails.tsx", 553 lineNumber: 406, 554 columnNumber: 21 555 }, this) 556 ] 557 }, void 0, true, { 558 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PayoutDetails.tsx", 559 lineNumber: 404, 560 columnNumber: 17 561 }, this), 562 /*#__PURE__*/ _jsxDEV("div", { 563 style: { 564 maxHeight: '460px', 565 overflowY: 'auto', 566 paddingRight: '8px' 567 }, 568 className: "account-grid", 569 children: allAccounts.map((acc, idx)=>/*#__PURE__*/ _jsxDEV(AccountDetailsBox, { 570 details: acc, 571 status: acc?.isActive ? "Active" : "Inactive" 572 }, idx, false, { 573 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PayoutDetails.tsx", 574 lineNumber: 411, 575 columnNumber: 25 576 }, this)) 577 }, void 0, false, { 578 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PayoutDetails.tsx", 579 lineNumber: 409, 580 columnNumber: 17 581 }, this), 582 allAccounts.length > 0 && /*#__PURE__*/ _jsxDEV("div", { 583 className: "button-row", 584 children: [ 585 /*#__PURE__*/ _jsxDEV("button", { 586 className: "deactivate-btn resume_btn_pm", 587 onClick: resumeConnectedAccount, 588 disabled: !selectedIsPaused || !selectedAccountId, 589 style: { 590 backgroundColor: !selectedIsPaused || !selectedAccountId ? '#ccc' : '' 591 }, 592 children: "Resume" 593 }, void 0, false, { 594 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PayoutDetails.tsx", 595 lineNumber: 421, 596 columnNumber: 25 597 }, this), 598 /*#__PURE__*/ _jsxDEV("button", { 599 className: "deactivate-btn", 600 onClick: ()=>setShowConfirmationModal(true), 601 children: "Add Account" 602 }, void 0, false, { 603 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PayoutDetails.tsx", 604 lineNumber: 430, 605 columnNumber: 25 606 }, this) 607 ] 608 }, void 0, true, { 609 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PayoutDetails.tsx", 610 lineNumber: 420, 611 columnNumber: 21 612 }, this), 613 showConfirmationModal && /*#__PURE__*/ _jsxDEV("div", {
614 className: "modal-overlay", 615 children: /*#__PURE__*/ _jsxDEV("div", { 616 className: "confirmation-modal", 617 children: [ 618 /*#__PURE__*/ _jsxDEV("h2", { 619 className: "cus_bank_acc", 620 children: "Change Your Bank Account" 621 }, void 0, false, { 622 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PayoutDetails.tsx", 623 lineNumber: 444, 624 columnNumber: 29 625 }, this), 626 /*#__PURE__*/ _jsxDEV("span", { 627 className: "s-1", 628 children: "This bank account will stop receiving payouts" 629 }, void 0, false, { 630 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PayoutDetails.tsx", 631 lineNumber: 445, 632 columnNumber: 29 633 }, this), 634 /*#__PURE__*/ _jsxDEV("br", {}, void 0, false, { 635 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PayoutDetails.tsx", 636 lineNumber: 445, 637 columnNumber: 103 638 }, this), 639 /*#__PURE__*/ _jsxDEV("span", { 640 className: "s-2", 641 children: " and we'll connect a new one via Stripe." 642 }, void 0, false, { 643 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PayoutDetails.tsx", 644 lineNumber: 446, 645 columnNumber: 29 646 }, this), 647 /*#__PURE__*/ _jsxDEV("br", {}, void 0, false, { 648 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PayoutDetails.tsx", 649 lineNumber: 446, 650 columnNumber: 98 651 }, this), 652 /*#__PURE__*/ _jsxDEV("span", { 653 className: "s-3", 654 children: " You can switch back later if needed." 655 }, void 0, false, { 656 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PayoutDetails.tsx", 657 lineNumber: 447, 658 columnNumber: 29 659 }, this), 660 /*#__PURE__*/ _jsxDEV("div", { 661 className: "modal-buttons", 662 children: [ 663 /*#__PURE__*/ _jsxDEV("button", { 664 className: "cancel-btn-stripe", 665 onClick: ()=>setShowConfirmationModal(false), 666 children: "Cancel" 667 }, void 0, false, { 668 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PayoutDetails.tsx", 669 lineNumber: 450, 670 columnNumber: 33 671 }, this), 672 /*#__PURE__*/ _jsxDEV("button", { 673 className: "confirm-btn", 674 onClick: handleProceed, 675 children: "Add Account" 676 }, void 0, false, { 677 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PayoutDetails.tsx", 678 lineNumber: 451, 679 columnNumber: 33 680 }, this) 681 ] 682 }, void 0, true, { 683 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PayoutDetails.tsx", 684 lineNumber: 449, 685 columnNumber: 29 686 }, this) 687 ] 688 }, void 0, true, { 689 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PayoutDetails.tsx", 690 lineNumber: 443, 691 columnNumber: 25 692 }, this) 693 }, void 0, false, { 694 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PayoutDetails.tsx", 695 lineNumber: 442, 696 columnNumber: 21 697 }, this), 698 !isRedirectingRef.current && noActiveAccount && /*#__PURE__*/ _jsxDEV("div", { 699 className: "upload_overlay", 700 children: /*#__PURE__*/ _jsxDEV("div", { 701 className: "modal_pricing", 702 children: /*#__PURE__*/ _jsxDEV("div", { 703 className: "cus_manage_subscription_modal", 704 children: [ 705 /*#__PURE__*/ _jsxDEV(AccountHeader, {}, void 0, false, { 706 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PayoutDetails.tsx", 707 lineNumber: 461, 708 columnNumber: 33 709 }, this), 710 /*#__PURE__*/ _jsxDEV("div", { 711 className: "cus_modal_header", 712 children: [ 713 /*#__PURE__*/ _jsxDEV("p", { 714 className: "cus_free_trial_text",
715 children: "No active payout account found. Please add a new payout account to receive transactions." 716 }, void 0, false, { 717 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PayoutDetails.tsx", 718 lineNumber: 463, 719 columnNumber: 37 720 }, this), 721 /*#__PURE__*/ _jsxDEV("div", { 722 className: "button-group-center btn_c_p_add", 723 children: [ 724 /*#__PURE__*/ _jsxDEV("button", { 725 className: "manage-btn cus_mng_btn", 726 onClick: ()=>{ 727 window.location.href = `${window.location.origin}/${CUREENT_COMPANY_NAME}/share`; 728 }, 729 children: "Cancel" 730 }, void 0, false, { 731 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PayoutDetails.tsx", 732 lineNumber: 467, 733 columnNumber: 41 734 }, this), 735 /*#__PURE__*/ _jsxDEV("button", { 736 className: "manage-btn cus_mng_btn", 737 onClick: ()=>{ 738 setNoActiveAccount(false); 739 createConnectedAccount(); 740 }, 741 children: "Proceed to Add" 742 }, void 0, false, { 743 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PayoutDetails.tsx", 744 lineNumber: 475, 745 columnNumber: 41 746 }, this) 747 ] 748 }, void 0, true, { 749 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PayoutDetails.tsx", 750 lineNumber: 466, 751 columnNumber: 37 752 }, this) 753 ] 754 }, void 0, true, { 755 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PayoutDetails.tsx", 756 lineNumber: 462, 757 columnNumber: 33 758 }, this) 759 ] 760 }, void 0, true, { 761 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PayoutDetails.tsx", 762 lineNumber: 460, 763 columnNumber: 29 764 }, this) 765 }, void 0, false, { 766 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PayoutDetails.tsx", 767 lineNumber: 459, 768 columnNumber: 25 769 }, this) 770 }, void 0, false, { 771 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PayoutDetails.tsx", 772 lineNumber: 458, 773 columnNumber: 21 774 }, this) 775 ] 776 }, void 0, true, { 777 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PayoutDetails.tsx", 778 lineNumber: 403, 779 columnNumber: 13 780 }, this) 781 }, void 0, false, { 782 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PayoutDetails.tsx", 783 lineNumber: 402, 784 columnNumber: 9 785 }, this); 786}; 787_s(PayoutDetails, "QTmKSdq/7sZZoHofRZL4+7QhlJ8=", false, function() { 788 return [ 789 useAuth, 790 useNavigate 791 ]; 792}); 793_c = PayoutDetails; 794export default PayoutDetails; 795var _c; 796$RefreshReg$(_c, "PayoutDetails"); 797 798 799window.$RefreshReg$ = prevRefreshReg; 800window.$RefreshSig$ = prevRefreshSig; 801 802RefreshRuntime.__hmr_import(import.meta.url).then((currentExports) => { 803 RefreshRuntime.registerExportsForReactRefresh("/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PayoutDetails.tsx", currentExports); 804 import.meta.hot.accept((nextExports) => { 805 if (!nextExports) return; 806 const invalidateMessage = RefreshRuntime.validateRefreshBoundaryAndEnqueueUpdate("/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PayoutDetails.tsx", currentExports, nextExports);
807 if (invalidateMessage) import.meta.hot.invalidate(invalidateMessage); 808 }); 809}); 810 811//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlBheW91dERldGFpbHMudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVN0YXRlLCB1c2VDYWxsYmFjaywgdXNlTWVtbywgdXNlUmVmIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgYXhpb3MgZnJvbSBcImF4aW9zXCI7XG5pbXBvcnQgeyB1c2VBdXRoIH0gZnJvbSBcIi4uLy4uL21vZHVsZXMvYXV0aFwiO1xuaW1wb3J0IFN3YWwgZnJvbSBcInN3ZWV0YWxlcnQyXCI7XG5pbXBvcnQgXCIuL2Nzcy9wYXlvdXREZXRhaWxzLmNzc1wiO1xuaW1wb3J0IHsgdXNlTmF2aWdhdGUgfSBmcm9tIFwicmVhY3Qtcm91dGVyLWRvbVwiO1xuaW1wb3J0IHtcbiAgICBDVVJFRU5UX0NPTVBBTllfTkFNRSxcbiAgICBDUkVBVEVfU1RSSVBFX0NPTk5FQ1RFRF9BQ0NPVU5ULFxuICAgIEdFVF9BTExfU1RSSVBFX0FDQ09VTlRTLFxuICAgIEdFVF9BQ0NPVU5UX0lELFxuICAgIEdFVF9TVFJJUEVfQUNDT1VOVF9JRCxcbiAgICBDSEVDS19BQ0NPVU5UX1NUQVRVUyxcbiAgICBVUERBVEVfVVNFUl9TVFJJUEVfU1RBVFVTLFxuICAgIEdFVF9TVFJJUEVfT05CT0FSRElOR19MSU5LLFxuICAgIFBBVVNFX1NUUklQRV9DT05ORUNURURfQUNDT1VOVCxcbiAgICBSRVNVTUVfU1RSSVBFX0NPTk5FQ1RFRF9BQ0NPVU5ULFxuICAgIENIRUNLX0FDQ09VTlRfU1RBVFVTX0ZST01fREJcbn0gZnJvbSBcIi4uLy4uLy4uL2FwcC9Db25zdGFudHNcIjtcbmltcG9ydCB7IGVuYWJsZVNwbGFzaFNjcmVlbiwgZGlzYWJsZVNwbGFzaFNjcmVlbiB9IGZyb20gXCIuLi9jb21tb24vQ29tbW9uVXRpbGl0aWVzXCI7XG5pbXBvcnQgeyBDb250ZW50IH0gZnJvbSBcIi4uLy4uLy4uL2NvbmZpZy9sYXlvdXQvY29tcG9uZW50cy9Db250ZW50XCI7XG5cbmNvbnN0IFBheW91dERldGFpbHM6IFJlYWN0LkZDID0gKCkgPT4ge1xuICAgIGNvbnN0IHsgY3VycmVudFVzZXIgfSA9IHVzZUF1dGgoKTtcbiAgICBjb25zdCBbYWNjb3VudElkLCBzZXRBY2NvdW50SWRdID0gdXNlU3RhdGU8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG4gICAgY29uc3QgW2FjY291bnREZXRhaWxzLCBzZXRBY2NvdW50RGV0YWlsc10gPSB1c2VTdGF0ZTxhbnk+KG51bGwpO1xuICAgIGNvbnN0IFtwcmV2aW91c0FjY291bnREZXRhaWxzLCBzZXRQcmV2aW91c0FjY291bnREZXRhaWxzXSA9IHVzZVN0YXRlPGFueVtdPihbXSk7XG4gICAgY29uc3QgW3Nob3dDb25maXJtYXRpb25Nb2RhbCwgc2V0U2hvd0NvbmZpcm1hdGlvbk1vZGFsXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBbc2VsZWN0ZWRBY2NvdW50SWQsIHNldFNlbGVjdGVkQWNjb3VudElkXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpO1xuICAgIGNvbnN0IFtub0FjdGl2ZUFjY291bnQsIHNldE5vQWN0aXZlQWNjb3VudF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgZG9tYWluVXJsID0gd2luZG93LmxvY2F0aW9uLm9yaWdpbjtcbiAgICBjb25zdCBpc1JlZGlyZWN0aW5nUmVmID0gdXNlUmVmKGZhbHNlKTtcbiAgICBjb25zdCBuYXZpZ2F0ZSA9IHVzZU5hdmlnYXRlKCk7XG5cbiAgICBjb25zdCBjaGVja1N0cmlwZUFjY291bnRGbG93ID0gYXN5bmMgKCkgPT4ge1xuICAgICAgICBlbmFibGVTcGxhc2hTY3JlZW4oKTtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gU3RlcCAxOiBHZXQgdGhlIGxhdGVzdCBTdHJpcGUgYWNjb3VudElkIG9mIGN1cnJlbnQgdXNlclxuICAgICAgICAgICAgY29uc3QgeyBkYXRhOiBhY2NvdW50UmVzcCB9ID0gYXdhaXQgYXhpb3MuZ2V0KFxuICAgICAgICAgICAgICAgIGAke0dFVF9BQ0NPVU5UX0lEKENVUkVFTlRfQ09NUEFOWV9OQU1FKX0/dXNlcklkPSR7Y3VycmVudFVzZXI/LmlkfWBcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBjb25zdCBuZXdTdHJpcGVBY2NvdW50SWQgPSBhY2NvdW50UmVzcD8uZGF0YSB8fCBudWxsO1xuICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcIm5ld1N0cmlwZUFjY291bnRJZDogXCIgKyBuZXdTdHJpcGVBY2NvdW50SWQpO1xuXG4gICAgICAgICAgICBpZiAobmV3U3RyaXBlQWNjb3VudElkKSB7XG4gICAgICAgICAgICAgICAgLy8gU3RlcCAyOiBDaGVjayBvbmJvYXJkaW5nIHN0YXR1c1xuICAgICAgICAgICAgICAgIGNvbnN0IHN0YXR1c1Jlc3BvbnNlID0gYXdhaXQgYXhpb3MuZ2V0KENIRUNLX0FDQ09VTlRfU1RBVFVTKENVUkVFTlRfQ09NUEFOWV9OQU1FKSwge1xuICAgICAgICAgICAgICAgICAgICBwYXJhbXM6IHsgYWNjb3VudElkOiBuZXdTdHJpcGVBY2NvdW50SWQgfSxcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHsgZGF0YSB9ID0gc3RhdHVzUmVzcG9uc2UuZGF0YTtcbiAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwic3RhdHVzUmVzcG9uc2U6IFwiICsgSlNPTi5zdHJpbmdpZnkoc3RhdHVzUmVzcG9uc2UpKVxuXG4gICAgICAgICAgICAgICAgY29uc3QgcXVlcnlQYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpO1xuICAgICAgICAgICAgICAgIGNvbnN0IG9uYm9hcmRpbmcgPSBxdWVyeVBhcmFtcy5nZXQoXCJvbmJvYXJkXCIpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGRhdGE/Lm9uYm9hcmRpbmdDb21wbGV0ZWQgJiYgb25ib2FyZGluZyA9PT0gXCJ0cnVlXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gU3RlcCAzOiBHZXQgcHJldmlvdXMgYWN0aXZlIGFjY291bnRJZFxuICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmV2aW91c0FjY291bnRSZXNwb25zZSA9IGF3YWl0IGF4aW9zLnBvc3QoXG4gICAgICAgICAgICAgICAgICAgICAgICBgJHtHRVRfU1RSSVBFX0FDQ09VTlRfSUQoQ1VSRUVOVF9DT01QQU5ZX05BTUUpfT91c2VySWQ9JHtjdXJyZW50VXNlcj8uaWR9YFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmV2aW91c0FjY291bnRJZCA9IHByZXZpb3VzQWNjb3VudFJlc3BvbnNlLmRhdGEuZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcInByZX
811Zpb3VzQWNjb3VudElkOlwiLCBwcmV2aW91c0FjY291bnRJZCk7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gU3RlcCA0OiBQYXVzZSBwcmV2aW91cyBhY2NvdW50XG4gICAgICAgICAgICAgICAgICAgIGlmIChwcmV2aW91c0FjY291bnRJZCAmJiBwcmV2aW91c0FjY291bnRJZCAhPT0gbmV3U3RyaXBlQWNjb3VudElkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCBheGlvcy5wb3N0KFBBVVNFX1NUUklQRV9DT05ORUNURURfQUNDT1VOVChDVVJFRU5UX0NPTVBBTllfTkFNRSksIG51bGwsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXM6IHsgYWNjb3VudElkOiBwcmV2aW91c0FjY291bnRJZCB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC8vIFN0ZXAgNTogVXBkYXRlIG5ldyBhY2NvdW50XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IGF4aW9zLnBvc3QoXG4gICAgICAgICAgICAgICAgICAgICAgICBgJHtVUERBVEVfVVNFUl9TVFJJUEVfU1RBVFVTKENVUkVFTlRfQ09NUEFOWV9OQU1FKX0/bmV3U3RyaXBlQWNjb3VudElkPSR7bmV3U3RyaXBlQWNjb3VudElkfWBcbiAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICBhd2FpdCBTd2FsLmZpcmUoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICdBbGwgU2V0IScsXG4gICAgICAgICAgICAgICAgICAgICAgICBodG1sOiBgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwic3dhbC1zdWJ0ZXh0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdXIgYWNjb3VudCBpcyBsaW5rZWQuPGJyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBheW91dHMgd2lsbCBnbyB0byB5b3VyIGNvbm5lY3RlZCBiYW5rLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlVXJsOiAnL21lZGlhL21pc2MvQXBwcm92ZWQucG5nJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlV2lkdGg6IDEwMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlSGVpZ2h0OiAxMDAsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogJ09rJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbUNsYXNzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICdzd2FsLWN1c3RvbS10aXRsZV9BbGxTZXQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGh0bWxDb250YWluZXI6ICdzd2FsLWN1c3RvbS1odG1sJywgLy8gVW5jb21tZW50IGlmIG5lZWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpcm1CdXR0b246ICdjdXN0b20tb2stYnV0dG9uJ1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbnNTdHlsaW5nOiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICBhd2FpdCBmZXRjaEFuZFNldEFjY291bnREZXRhaWxzKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy8gUmVtb3ZlIHRoZSBxdWVyeSBwYXJhbSBmcm9tIHRoZSBVUkxcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdVcmwgPSBuZXcgVVJMKHdpbmRvdy5sb2NhdGlvbi5ocmVmKTtcbiAgICAgICAgICAgICAgICBuZXdVcmwuc2VhcmNoUGFyYW1zLmRlbGV0ZSgnb25ib2FyZCcpO1xuICAgICAgICAgICAgICAgIHdpbmRvdy5oaXN0b3J5LnJlcGxhY2VTdGF0ZSh7fSwgJycsIG5ld1VybC50b1N0cmluZygpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gdXBkYXRlIHRoZSBhY2NvdW50IGRldGFpbHMgYWZ0ZXIgdGhlIGZsb3dcbiAgICAgICAgICAgIGF3YWl0IGZldGNoQW5kU2V0QWNjb3VudERldGFpbHMoKTtcblxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIkVycm9yIGluIFN0cmlwZSBhY2NvdW50IGZsb3c6XCIsIGVycm9yKTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIGlmICghaXNSZWRpcmVjdGluZ1JlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICAgICAgZGlzYWJsZVNwbGFzaFNjcmVlbigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChjdXJyZW50VXNlcj8uaWQgJiYgY3VycmVudFVzZXI/LmVtYWlsKSB7XG4gICAgICAgICAgICBjaGVja1N0cmlwZUFjY291bnRGbG93KCk7XG4gICAgICAgIH1cbiAgICB9LCBbY3VycmVudFVzZXI/LmlkLCBjdXJyZW50VXNlcj8uZW1haWxdKTtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGZldGNoKFwiaHR0cHM6Ly9pcGFwaS5jby9qc29uL1wiKVxuICAgICAgICAgICAgLnRoZW4ocmVzID0+IHJlcy5qc29uKCkpXG4gICAgICAgICAgICAudGhlbihkYXRhID0+IHtcbiAgICAgICAgICAgICAgICBzZXRVc2VyQ291bnRyeShkYXRhLmNvdW50cnkpOyAgLy8gZS5nLiBcIlVTXCIgb3IgXCJDQVwiXG4gICAgICAgICAgICB9KTtcbiAgICB9LCBbXSk7XG5cbiAgICBjb25zdCBbdXNlckNvdW50cnksIHNldFVzZXJDb3VudHJ5XSA9IHVzZVN0YXRlKFwiVVNcIik7IC8vIGRlZmF1bHQgZmFsbGJhY2tcblxuICAgIGNvbnN0IGhhbmRsZVByb2NlZWQgPSBhc3luYyAoKSA9PiB7XG4gICAgICAgIHNldFNob3dDb25maXJtYXRpb25Nb2RhbChmYWxzZSk7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGF3YWl0IGNyZWF0ZUNvbm5lY3RlZEFjY291bnQoKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiRmFpbGVkIGR1cmluZyBwcm9jZWVkOlwiLCBlcnIpO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IGNyZWF0ZUNvbm5lY3RlZEFjY291bnQgPSBhc3luYyAoKSA9PiB7XG4gICAgICAgIGVuYWJsZVNwbGFzaFNjcmVlbigpO1xuXG4gICAgICAgI
811HRyeSB7XG4gICAgICAgICAgICAvLyBHZXQgbGF0ZXN0IFN0cmlwZSBhY2NvdW50IElEIGZvciBjdXJyZW50IHVzZXJcbiAgICAgICAgICAgIGNvbnN0IGFjY291bnRSZXNwID0gYXdhaXQgYXhpb3MuZ2V0KFxuICAgICAgICAgICAgICAgIGAke0dFVF9BQ0NPVU5UX0lEKENVUkVFTlRfQ09NUEFOWV9OQU1FKX0/dXNlcklkPSR7Y3VycmVudFVzZXI/LmlkfWBcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGNvbnN0IG5ld1N0cmlwZUFjY291bnRJZCA9IGFjY291bnRSZXNwPy5kYXRhPy5kYXRhO1xuXG4gICAgICAgICAgICBpZiAobmV3U3RyaXBlQWNjb3VudElkKSB7XG4gICAgICAgICAgICAgICAgLy8gQ2hlY2sgYWNjb3VudCBzdGF0dXMgaW4gREJcbiAgICAgICAgICAgICAgICBjb25zdCBkYlJlcyA9IGF3YWl0IGF4aW9zLmdldChcbiAgICAgICAgICAgICAgICAgICAgQ0hFQ0tfQUNDT1VOVF9TVEFUVVNfRlJPTV9EQihDVVJFRU5UX0NPTVBBTllfTkFNRSksXG4gICAgICAgICAgICAgICAgICAgIHsgcGFyYW1zOiB7IGFjY291bnRJZDogbmV3U3RyaXBlQWNjb3VudElkIH0gfVxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBkYkRhdGEgPSBkYlJlcy5kYXRhPy5kYXRhIHx8IHt9O1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzQWN0aXZlID0gZGJEYXRhLmlzQWN0aXZlO1xuXG4gICAgICAgICAgICAgICAgaWYgKCFpc0FjdGl2ZSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBSZXN1bWUgb25ib2FyZGluZ1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBvbmJvYXJkaW5nTGlua1Jlc3BvbnNlID0gYXdhaXQgYXhpb3MuZ2V0KFxuICAgICAgICAgICAgICAgICAgICAgICAgR0VUX1NUUklQRV9PTkJPQVJESU5HX0xJTksoQ1VSRUVOVF9DT01QQU5ZX05BTUUpLFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2NvdW50SWQ6IG5ld1N0cmlwZUFjY291bnRJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9tYWluVVJMOiBkb21haW5VcmwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IG9uYm9hcmRpbmdVcmwgfSA9IG9uYm9hcmRpbmdMaW5rUmVzcG9uc2UuZGF0YS5kYXRhO1xuICAgICAgICAgICAgICAgICAgICBpc1JlZGlyZWN0aW5nUmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IG9uYm9hcmRpbmdVcmw7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIENyZWF0ZSBhIG5ldyBhY2NvdW50IGlmIG5vbmUgZXhpc3RzIG9yIGl0J3MgYWxyZWFkeSBhY3RpdmVcbiAgICAgICAgICAgIGNvbnN0IGNyZWF0ZVJlc3BvbnNlID0gYXdhaXQgYXhpb3MucG9zdChcbiAgICAgICAgICAgICAgICBgJHtDUkVBVEVfU1RSSVBFX0NPTk5FQ1RFRF9BQ0NPVU5UKENVUkVFTlRfQ09NUEFOWV9OQU1FKX0/dXNlckVtYWlsPSR7Y3VycmVudFVzZXI/LmVtYWlsfSZkb21haW5VUkw9JHtkb21haW5Vcmx9JmNvbXBhbnlOYW1lPSR7Q1VSRUVOVF9DT01QQU5ZX05BTUV9JmNvdW50cnk9JHt1c2VyQ291bnRyeX1gXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBjb25zdCB7IG9uYm9hcmRpbmdVcmwgfSA9IGNyZWF0ZVJlc3BvbnNlLmRhdGEuZGF0YTtcbiAgICAgICAgICAgIGlzUmVkaXJlY3RpbmdSZWYuY3VycmVudCA9IHRydWU7XG4gICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IG9uYm9hcmRpbmdVcmw7XG5cbiAgICAgICAgfSBjYXRjaCAoZXJyOiBhbnkpIHtcbiAgICAgICAgICAgIGF3YWl0IFN3YWwuZmlyZSh7XG4gICAgICAgICAgICAgICAgdGl0bGU6ICdFcnJvcicsXG4gICAgICAgICAgICAgICAgdGV4dDogZXJyLnJlc3BvbnNlPy5kYXRhPy5tZXNzYWdlIHx8IGVyci5tZXNzYWdlLF
811xuICAgICAgICAgICAgICAgIGljb246ICdlcnJvcidcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgaWYgKCFpc1JlZGlyZWN0aW5nUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgICAgICBkaXNhYmxlU3BsYXNoU2NyZWVuKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgZmV0Y2hBbmRTZXRBY2NvdW50RGV0YWlscyA9IGFzeW5jICgpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYXhpb3MuZ2V0KFxuICAgICAgICAgICAgICAgIGAke0dFVF9BTExfU1RSSVBFX0FDQ09VTlRTKENVUkVFTlRfQ09NUEFOWV9OQU1FKX0/dXNlcklkPSR7Y3VycmVudFVzZXI/LmlkfWBcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGNvbnN0IGFjY291bnRJZHMgPSByZXNwb25zZS5kYXRhLmRhdGEuYWNjb3VudElkcyB8fCBbXTtcblxuICAgICAgICAgICAgY29uc3QgYWNjb3VudERldGFpbHNMaXN0ID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgICAgICAgICAgYWNjb3VudElkcy5tYXAoYXN5bmMgKGlkOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgW3N0YXR1c1JlcywgZGJSZXNdID0gYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgICAgICAgICAgICAgICAgICAgICAgYXhpb3MuZ2V0KENIRUNLX0FDQ09VTlRfU1RBVFVTKENVUkVFTlRfQ09NUEFOWV9OQU1FKSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtczogeyBhY2NvdW50SWQ6IGlkIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGF4aW9zLmdldChDSEVDS19BQ0NPVU5UX1NUQVRVU19GUk9NX0RCKENVUkVFTlRfQ09NUEFOWV9OQU1FKSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtczogeyBhY2NvdW50SWQ6IGlkIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgXSk7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RyaXBlRGF0YSA9IHN0YXR1c1Jlcy5kYXRhPy5kYXRhIHx8IHt9O1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkYkRhdGEgPSBkYlJlcy5kYXRhPy5kYXRhIHx8IHt9O1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBvbmJvYXJkaW5nRG9uZSA9IHN0cmlwZURhdGEub25ib2FyZGluZ0NvbXBsZXRlZCA9PT0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNBY3RpdmUgPSBvbmJvYXJkaW5nRG9uZSAmJiAoZGJEYXRhLmlzQWN0aXZlID8/IGZhbHNlKTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWNjb3VudElkOiBpZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnN0cmlwZURhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0FjdGl2ZSxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgY29uc3QgYWN0aXZlID0gYWNjb3VudERldGFpbHNMaXN0LmZpbHRlcihhID0+IGEuaXNBY3RpdmUpO1xuICAgICAgICAgICAgY29uc3QgaW5hY3RpdmUgPSBhY2NvdW50RGV0YWlsc0xpc3QuZmlsdGVyKGEgPT4gIWEuaXNBY3RpdmUpO1xuXG4gICAgICAgICAgICBpZiAoYWN0aXZlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIG5hdmlnYXRlKGAvJHtDVVJFRU5UX0NPTVBBTllfTkFNRX0vc2hhcmVgKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHNldEFjY291bnREZXRhaWxzKGFjdGl2ZS5sZW5ndGggPiAwID8gYWN0aXZlWzBdIDogbnVsbCk7XG4gICAgICAgICAgICBzZXRQcmV2aW91c0FjY291bnREZXRhaWxzKFsuLi5hY3RpdmUuc2xpY2UoMSksIC4uLmluYWN0aXZlXSk7XG4gICAgICAgICAgICBzZXRBY2NvdW50SWQoYWN0aXZlLmxlbmd0aCA+IDAgPyBhY3RpdmVbMF0uYWNjb3VudElkIDogbnVsbCk7XG5cbiAgICAgICAgICAgIGlmICghc2VsZWN0ZWRBY2NvdW50SWQgJiYgYWN0aXZlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBzZXRTZWxlY3RlZEFjY291bnRJZChhY3RpdmVbMF0uYWNjb3VudElkKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIkZhaWxlZCB0byBmZXRjaCBhbmQgc2V0IGFjY291bnQgZGV0YWlsczpcIiwgZXJyb3IpO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IHJlc3VtZUNvbm5lY3RlZEFjY291bnQgPSBhc3luYyAoKSA9PiB7XG4gICAgICAgIGVuYWJsZVNwbGFzaFNjcmVlbigpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gMS4gR2V0IHRoZSBjdXJyZW50bHkgYWN0aXZlIGFjY291bnQgSUQgZnJvbSBiYWNrZW5kXG4gICAgICAgICAgICBjb25zdCBwcmV2aW91c0FjY291bnRSZXNwb25zZSA9IGF3YWl0IGF4aW9zLnBvc3QoXG4gICAgICAgICAgICAgICAgYCR7R0VUX1NUUklQRV9BQ0NPVU5UX0lEKENVUkVFTlRfQ09NUEFOWV9OQU1FKX0/dXNlcklkPSR7Y3VycmVudFVzZXI/LmlkfWBcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBjb25zdCBwcmV2aW91c0FjY291bnRJZCA9IHByZXZpb3VzQWNjb3VudFJlc3BvbnNlLmRhdGEuZGF0YTtcblxuICAgICAgICAgICAgLy8gMi4gUGF1c2UgdGhlIGFjdGl2ZSBhY2NvdW50IGlmIGl04oCZcyBkaWZmZXJlbnQgZnJvbSB0aGUgc2VsZWN0ZWQgb25lXG4gICAgICAgICAgICBpZiAocHJldmlvdXNBY2NvdW50SWQgJiYgcHJldmlvdXNBY2NvdW50SWQgIT09IHNlbGVjdGVkQWNjb3VudElkKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgYXhpb3MucG9zdChQQVVTRV9TVFJJUEVfQ09OTkVDVEVEX0FDQ09VTlQoQ1VSRUVOVF9DT01QQU5ZX05BTUUpLCBudWxsLCB7XG4gICAgICAgICAgICAgICAgICAgIHBhcmFtczogeyBhY2NvdW50SWQ6IHByZXZpb3VzQWNjb3VudElkIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgI
811H1cblxuICAgICAgICAgICAgLy8gMy4gUmVzdW1lIHRoZSBzZWxlY3RlZCBhY2NvdW50XG4gICAgICAgICAgICBhd2FpdCBheGlvcy5wb3N0KFJFU1VNRV9TVFJJUEVfQ09OTkVDVEVEX0FDQ09VTlQoQ1VSRUVOVF9DT01QQU5ZX05BTUUpLCBudWxsLCB7XG4gICAgICAgICAgICAgICAgcGFyYW1zOiB7IGFjY291bnRJZDogc2VsZWN0ZWRBY2NvdW50SWQgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGF3YWl0IFN3YWwuZmlyZSh7XG4gICAgICAgICAgICAgICAgdGl0bGU6ICdBY2NvdW50IFJlc3VtZWQgU3VjY2Vzc2Z1bGx5JyxcbiAgICAgICAgICAgICAgICBpbWFnZVVybDogJy9tZWRpYS9taXNjL0FwcHJvdmVkLnBuZycsXG4gICAgICAgICAgICAgICAgaW1hZ2VXaWR0aDogMTAwLFxuICAgICAgICAgICAgICAgIGltYWdlSGVpZ2h0OiAxMDAsXG4gICAgICAgICAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6ICdPaycsXG4gICAgICAgICAgICAgICAgY3VzdG9tQ2xhc3M6IHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICdzd2FsLWN1c3RvbS10aXRsZScsXG4gICAgICAgICAgICAgICAgICAgIGNvbmZpcm1CdXR0b246ICdjdXN0b20tb2stYnV0dG9uJ1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgYnV0dG9uc1N0eWxpbmc6IGZhbHNlLFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIC8vIFJlZnJlc2ggZGF0YVxuICAgICAgICAgICAgYXdhaXQgZmV0Y2hBbmRTZXRBY2NvdW50RGV0YWlscygpO1xuXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgICAgICAgIGF3YWl0IFN3YWwuZmlyZSh7XG4gICAgICAgICAgICAgICAgdGl0bGU6ICdSZXN1bWUgRmFpbGVkJyxcbiAgICAgICAgICAgICAgICB0ZXh0OiBlcnJvci5yZXNwb25zZT8uZGF0YT8uZGF0YT8ubWVzc2FnZSB8fCBlcnJvci5tZXNzYWdlLF
811xuICAgICAgICAgICAgICAgIGljb246ICdlcnJvcicsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIGRpc2FibGVTcGxhc2hTY3JlZW4oKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBpc1ZhbGlkQWNjb3VudCA9IChkZXRhaWxzOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKCFkZXRhaWxzKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIHJldHVybiBkZXRhaWxzPy5vbmJvYXJkaW5nQ29tcGxldGVkID09PSB0cnVlOyAvLyBPbmx5IHZhbGlkIGlmIG9uYm9hcmRpbmcgZmluaXNoZWRcbiAgICB9O1xuXG4gICAgY29uc3QgQWNjb3VudEhlYWRlciA9ICgpID0+IChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJpY29uX2NvbnRhaW5lciBkLWZsZXggZmxleC1yb3dcIj5cbiAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICBzcmM9XCIvbWVkaWEvbWlzYy9kYXNoYm9hcmQtYWNjb3VudC1pbWcucG5nXCJcbiAgICAgICAgICAgICAgICBhbHQ9XCJQcm9maWxlIEljb25cIlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInByb2ZpbGUtaWNvblwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGgxIGNsYXNzTmFtZT1cImFjY291bnQtbGlua1wiPkFjY291bnQ8L2gxPlxuICAgICAgICA8L2Rpdj5cbiAgICApO1xuXG4gICAgY29uc3QgQWNjb3VudERldGFpbHNCb3g6IFJlYWN0LkZDPHtcbiAgICAgICAgZGV0YWlsczogYW55O1xuICAgICAgICBzdGF0dXM6ICdBY3RpdmUnIHwgJ0luYWN0aXZlJztcbiAgICB9PiA9ICh7IGRldGFpbHMsIHN0YXR1cyB9KSA9PiB7XG4gICAgICAgIGNvbnN0IGlzQWN0aXZlID0gc3RhdHVzID09PSAnQWN0aXZlJztcbiAgICAgICAgY29uc3QgaXNTZWxlY3RlZCA9IHNlbGVjdGVkQWNjb3VudElkID09PSBkZXRhaWxzLmFjY291bnRJZDtcblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkZXRhaWxzLWJveCByZWxhdGl2ZSBmbGV4IGZsZXgtY29sXCI+XG5cblxuICAgICAgICAgICAgICAgIHsvKiBDaGVja2JveCBSb3cgKi99XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjaGVja2JveC1yb3cgZmxleCBpdGVtcy1jZW50ZXIgbWItMi41XCI+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkPXtgYWNjb3VudC0ke2RldGFpbHMuYWNjb3VudElkfWB9XG4gICAgICAgICAgICAgICAgICAgICAgICBjaGVja2VkPXtpc1NlbGVjdGVkfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTZWxlY3RlZEFjY291bnRJZCgocHJldikgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldiA9PT0gZGV0YWlscy5hY2NvdW50SWQgPyBudWxsIDogZGV0YWlscy5hY2NvdW50SWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImFjY291bnQtY2hlY2tib3ggbXItM1wiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICB7LyogRGV0YWlscyBHcmlkICovfVxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkZXRhaWwtY29sXCI+XG4gIDxkaXY+PHN0cm9uZz5GaXJzdCBOYW1lPC9zdHJvbmc+PC9kaXY+XG4gIDxkaXYgdGl0bGU9e2RldGFpbHM/LmZpcnN0X25hbWUgfHwgXCJOL0FcIn0+XG4gICAge2RldGFpbHM/LmZpcnN0X25hbWUgfHwgXCJOL0FcIn1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbjwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkZXRhaWwtY29sXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXY+PHN0cm9uZz5MYXN0IE5hbWU8L3N0cm9uZz48L2Rpdj48ZGl2IHRpdGxlPXtkZXRhaWxzPy5sYXN0X25hbWUgfHwgXCJOL0FcIn0+e2RldGFpbHM/Lmxhc3RfbmFtZSB8fCBcIk4vQVwifTwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZGV0YWlsLWNvbFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2PjxzdHJvbmc+RW1haWw8L3N0cm9uZz48L2Rpdj48ZGl2IHRpdGxlPXtkZXRhaWxzPy5lbWFpbCB8fCBcIk4vQVwifT57ZGV0YWlscz8uZW1haWwgfHwgXCJOL0FcIn08L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImRldGFpbC1jb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdj48c3Ryb25nPkJhbmsgTmFtZTwvc3Ryb25nPjwvZGl2PjxkaXYgdGl0bGU9e2RldGFpbHM/LmJhbmtfbmFtZSB8fCBcIk4vQVwifT57ZGV0YWlscz8uYmFua19uYW1lIHx8IFwiTi9BXCJ9PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkZXRhaWwtY29sXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXY+PHN0cm9uZz5Db3VudHJ5PC9zdHJvbmc+PC9kaXY+PGRpdiB0aXRsZT17ZGV0YWlscz8uY291bnRyeSB8fCBcIk4vQVwifT57ZGV0YWlscz8uY291bnRyeSB8fCBcIk4vQVwifTwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZGV0YWlsLWNvbFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2PjxzdHJvbmc+QmFuayBBY2NvdW50PC9zdHJvbmc+PC9kaXY+PGRpdiB0aXRsZT17ZGV0YWlscz8ubGFzdDQgfHwgXCJOL0FcIn0+e2RldGFpbHM/Lmxhc3Q0IHx8IFwiTi9BXCJ9PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICB7LyogU3RhdHVzIEJhZGdlICovfVxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgc3RhdHVzLWJhZGdlIGFic29sdXRlIHRvcC0yLjUgcmlnaHQtMi41ICR7aXNBY3RpdmUgPyAnYWN0aXZlJyA6ICdpbmFjdGl2ZSd9YH0+XG4gICAgICAgICAgICAgICAgICAgI
811HtzdGF0dXN9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKTtcbiAgICB9O1xuXG4gICAgY29uc3QgYWxsQWNjb3VudHMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgICAgY29uc3QgY29tYmluZWQgPSBhY2NvdW50RGV0YWlsc1xuICAgICAgICAgICAgPyBbYWNjb3VudERldGFpbHMsIC4uLnByZXZpb3VzQWNjb3VudERldGFpbHNdXG4gICAgICAgICAgICA6IFsuLi5wcmV2aW91c0FjY291bnREZXRhaWxzXTtcblxuICAgICAgICByZXR1cm4gY29tYmluZWRcbiAgICAgICAgICAgIC5maWx0ZXIoaXNWYWxpZEFjY291bnQpXG4gICAgICAgICAgICAuc29ydCgoYSwgYikgPT4gKGIuaXNBY3RpdmUgPyAxIDogMCkgLSAoYS5pc0FjdGl2ZSA/IDEgOiAwKSlcbiAgICB9LCBbYWNjb3VudERldGFpbHMsIHByZXZpb3VzQWNjb3VudERldGFpbHNdKTtcblxuICAgIGNvbnN0IHNlbGVjdGVkRGV0YWlscyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICByZXR1cm4gYWxsQWNjb3VudHMuZmluZChhY2MgPT4gYWNjLmFjY291bnRJZCA9PT0gc2VsZWN0ZWRBY2NvdW50SWQpO1xuICAgIH0sIFthbGxBY2NvdW50cywgc2VsZWN0ZWRBY2NvdW50SWRdKTtcblx0XG5cdGNvbnN0IHNlbGVjdGVkSXNQYXVzZWQgPSB1c2VNZW1vKCgpID0+IHtcblx0XHRyZXR1cm4gc2VsZWN0ZWREZXRhaWxzICYmICFzZWxlY3RlZERldGFpbHMuaXNBY3RpdmU7XG5cdH0sIFtzZWxlY3RlZERldGFpbHNdKTtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDxDb250ZW50PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwYXlvdXQtbW9kYWxcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImN1c192X3BheW91dF9kZWF0aWxzXCI+XG4gICAgICAgICAgICAgICAgICAgIDxoMiBjbGFzc05hbWU9XCJjdXNfdl9iX2RcIj5WaWV3IEJhbmsgRGV0YWlsczwvaDI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWNjb3VudF9pbmZvXCI+QWRkIG9yIHN3aXRjaCBCYW5rIGFjY291bnRzIGhlcmUuIFRvIHN3aXRjaCwganVzdCBjaGVjayB0aGUgYWNjb3VudCB5b3Ugd2FudCBhbmQgY2xpY2sgUmVzdW1lLjwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17eyBtYXhIZWlnaHQ6ICc0NjBweCcsIG92ZXJmbG93WTogJ2F1dG8nLCBwYWRkaW5nUmlnaHQ6ICc4cHgnIH19IGNsYXNzTmFtZT1cImFjY291bnQtZ3JpZFwiPlxuICAgICAgICAgICAgICAgICAgICB7YWxsQWNjb3VudHMubWFwKChhY2MsIGlkeCkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPEFjY291bnREZXRhaWxzQm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtpZHh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlscz17YWNjfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cz17YWNjPy5pc0FjdGl2ZSA/IFwiQWN0aXZlXCIgOiBcIkluYWN0aXZlXCJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIHthbGxBY2NvdW50cy5sZW5ndGggPiAwICYmIChcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJidXR0b24tcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiZGVhY3RpdmF0ZS1idG4gcmVzdW1lX2J0bl9wbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17cmVzdW1lQ29ubmVjdGVkQWNjb3VudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17IXNlbGVjdGVkSXNQYXVzZWQgfHwgIXNlbGVjdGVkQWNjb3VudElkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7IGJhY2tncm91bmRDb2xvcjogIXNlbGVjdGVkSXNQYXVzZWQgfHwgIXNlbGVjdGVkQWNjb3VudElkID8gJyNjY2MnIDogJycgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXN1bWVcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiZGVhY3RpdmF0ZS1idG5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldFNob3dDb25maXJtYXRpb25Nb2RhbCh0cnVlKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRpc2FibGVkPXtzZWxlY3RlZElzUGF1c2VkIHx8ICFzZWxlY3RlZEFjY291bnRJZH1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0eWxlPXt7IGJhY2tncm91bmRDb2xvcjogc2VsZWN0ZWRJc1BhdXNlZCB8fCAhc2VsZWN0ZWRBY2NvdW50SWQgPyAnI2NjYycgOiAnJyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFkZCBBY2NvdW50XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgICAgIHtzaG93Q29uZmlybWF0aW9uTW9kYWwgJiYgKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1vZGFsLW92ZXJsYXlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29uZmlybWF0aW9uLW1vZGFsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgyIGNsYXNzTmFtZT1cImN1c19iYW5rX2FjY1wiPkNoYW5nZSBZb3VyIEJhbmsgQWNjb3VudDwvaDI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicy0xXCI+VGhpcyBiYW5rIGFjY291bnQgd2lsbCBzdG9wIHJlY2VpdmluZyBwYXlvdXRzPC9zcGFuPjxiciAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInMtMlwiPiBhbmQgd2UnbGwgY29ubmVjdCBhIG5ldyBvbmUgdmlhIFN0cmlwZS48L3NwYW4+PGJyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicy0zXCI+IFlvdSBjYW4gc3dpdGNoIGJhY2sgbGF0ZXIgaWYgbmVlZGVkLjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7LyogPHA+PHN0cm9uZz5UaGlzIGFjY291bnQgd2lsbCBubyBsb25nZXIgYmUgdXNlZCBmb3IgdHJhbnNhY3Rpb25zLjwvc3Ryb25nPjwvcD4gKi99XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtb2RhbC1idXR0b25zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3NOYW1lPVwiY2FuY2VsLWJ0bi1zdHJpcGVcIiBvbkNsaWNrPXsoKSA9PiBzZXRTaG93Q29uZmlybWF0aW9uTW9kYWwoZmFsc2UpfT5DYW5jZWw8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzc05hbWU9XCJjb25maXJtLWJ0blwiIG9uQ2xpY2s9e2hhbmRsZVByb2NlZWR9PkFkZCBBY2NvdW50PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgICAgI
811HshaXNSZWRpcmVjdGluZ1JlZi5jdXJyZW50ICYmIG5vQWN0aXZlQWNjb3VudCAmJiAoXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidXBsb2FkX292ZXJsYXlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibW9kYWxfcHJpY2luZ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY3VzX21hbmFnZV9zdWJzY3JpcHRpb25fbW9kYWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFjY291bnRIZWFkZXIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjdXNfbW9kYWxfaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJjdXNfZnJlZV90cmlhbF90ZXh0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm8gYWN0aXZlIHBheW91dCBhY2NvdW50IGZvdW5kLiBQbGVhc2UgYWRkIGEgbmV3IHBheW91dCBhY2NvdW50IHRvIHJlY2VpdmUgdHJhbnNhY3Rpb25zLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJidXR0b24tZ3JvdXAtY2VudGVyIGJ0bl9jX3BfYWRkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJtYW5hZ2UtYnRuIGN1c19tbmdfYnRuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBgJHt3aW5kb3cubG9jYXRpb24ub3JpZ2lufS8ke0NVUkVFTlRfQ09NUEFOWV9OQU1FfS9zaGFyZWA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYW5jZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzTmFtZT1cIm1hbmFnZS1idG4gY3VzX21uZ19idG5cIiBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE5vQWN0aXZlQWNjb3VudChmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZUNvbm5lY3RlZEFjY291bnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvY2VlZCB0byBBZGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L0NvbnRlbnQ+XG4gICAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFBheW91dERldGFpbHM7Il0sIm5hbWVzIjpbIlJlYWN0IiwidXNlRWZmZWN0IiwidXNlU3RhdGUiLCJ1c2VNZW1vIiwidXNlUmVmIiwiYXhpb3MiLCJ1c2VBdXRoIiwiU3dhbCIsInVzZU5hdmlnYXRlIiwiQ1VSRUVOVF9DT01QQU5ZX05BTUUiLCJDUkVBVEVfU1RSSVBFX0NPTk5FQ1RFRF9BQ0NPVU5UIiwiR0VUX0FMTF9TVFJJUEVfQUNDT1VOVFMiLCJHRVRfQUNDT1VOVF9JRCIsIkdFVF9TVFJJUEVfQUNDT1VOVF9JRCIsIkNIRUNLX0FDQ09VTlRfU1RBVFVTIiwiVVBEQVRFX1VTRVJfU1RSSVBFX1NUQVRVUyIsIkdFVF9TVFJJUEVfT05CT0FSRElOR19MSU5LIiwiUEFVU0VfU1RSSVBFX0NPTk5FQ1RFRF9BQ0NPVU5UIiwiUkVTVU1FX1NUUklQRV9DT05ORUNURURfQUNDT1VOVCIsIkNIRUNLX0FDQ09VTlRfU1RBVFVTX0ZST01fREIiLCJlbmFibGVTcGxhc2hTY3JlZW4iLCJkaXNhYmxlU3BsYXNoU2NyZWVuIiwiQ29udGVudCIsIlBheW91dERldGFpbHMiLCJjdXJyZW50VXNlciIsImFjY291bnRJZCIsInNldEFjY291bnRJZCIsImFjY291bnREZXRhaWxzIiwic2V0QWNjb3VudERldGFpbHMiLCJwcmV2aW91c0FjY291bnREZXRhaWxzIiwic2V0UHJldmlvdXNBY2NvdW50RGV0YWlscyIsInNob3dDb25maXJtYXRpb25Nb2RhbCIsInNldFNob3dDb25maXJtYXRpb25Nb2RhbCIsInNlbGVjdGVkQWNjb3VudElkIiwic2V0U2VsZWN0ZWRBY2NvdW50SWQiLCJub0FjdGl2ZUFjY291bnQiLCJzZXROb0FjdGl2ZUFjY291bnQiLCJkb21haW5VcmwiLCJ3aW5kb3ciLCJsb2NhdGlvbiIsIm9yaWdpbiIsImlzUmVkaXJlY3RpbmdSZWYiLCJuYXZpZ2F0ZSIsImNoZWNrU3RyaXBlQWNjb3VudEZsb3ciLCJkYXRhIiwiYWNjb3VudFJlc3AiLCJnZXQiLCJpZCIsIm5ld1N0cmlwZUFjY291bnRJZCIsInN0YXR1c1Jlc3BvbnNlIiwicGFyYW1zIiwicXVlcnlQYXJhbXMiLCJVUkxTZWFyY2hQYXJhbXMiLCJzZWFyY2giLCJvbmJvYXJkaW5nIiwib25ib2FyZGluZ0NvbXBsZXRlZCIsInByZXZpb3VzQWNjb3VudFJlc3BvbnNlIiwicG9zdCIsInByZXZpb3VzQWNjb3VudElkIiwiZmlyZSIsInRpdGxlIiwiaHRtbCIsImltYWdlVXJsIiwiaW1hZ2VXaWR0aCIsImltYWdlSGVpZ2h0IiwiY29uZmlybUJ1dHRvblRleHQiLCJ
811jdXN0b21DbGFzcyIsImNvbmZpcm1CdXR0b24iLCJidXR0b25zU3R5bGluZyIsImZldGNoQW5kU2V0QWNjb3VudERldGFpbHMiLCJuZXdVcmwiLCJVUkwiLCJocmVmIiwic2VhcmNoUGFyYW1zIiwiZGVsZXRlIiwiaGlzdG9yeSIsInJlcGxhY2VTdGF0ZSIsInRvU3RyaW5nIiwiZXJyb3IiLCJjb25zb2xlIiwiY3VycmVudCIsImVtYWlsIiwiZmV0Y2giLCJ0aGVuIiwicmVzIiwianNvbiIsInNldFVzZXJDb3VudHJ5IiwiY291bnRyeSIsInVzZXJDb3VudHJ5IiwiaGFuZGxlUHJvY2VlZCIsImNyZWF0ZUNvbm5lY3RlZEFjY291bnQiLCJlcnIiLCJkYlJlcyIsImRiRGF0YSIsImlzQWN0aXZlIiwib25ib2FyZGluZ0xpbmtSZXNwb25zZSIsImRvbWFpblVSTCIsIm9uYm9hcmRpbmdVcmwiLCJjcmVhdGVSZXNwb25zZSIsInRleHQiLCJyZXNwb25zZSIsIm1lc3NhZ2UiLCJpY29uIiwiYWNjb3VudElkcyIsImFjY291bnREZXRhaWxzTGlzdCIsIlByb21pc2UiLCJhbGwiLCJtYXAiLCJzdGF0dXNSZXMiLCJzdHJpcGVEYXRhIiwib25ib2FyZGluZ0RvbmUiLCJhY3RpdmUiLCJmaWx0ZXIiLCJhIiwiaW5hY3RpdmUiLCJsZW5ndGgiLCJzbGljZSIsInJlc3VtZUNvbm5lY3RlZEFjY291bnQiLCJpc1ZhbGlkQWNjb3VudCIsImRldGFpbHMiLCJBY2NvdW50SGVhZGVyIiwiZGl2IiwiY2xhc3NOYW1lIiwiaW1nIiwic3JjIiwiYWx0IiwiaDEiLCJBY2NvdW50RGV0YWlsc0JveCIsInN0YXR1cyIsImlzU2VsZWN0ZWQiLCJpbnB1dCIsInR5cGUiLCJjaGVja2VkIiwib25DaGFuZ2UiLCJwcmV2Iiwic3Ryb25nIiwiZmlyc3RfbmFtZSIsImxhc3RfbmFtZSIsImJhbmtfbmFtZSIsImxhc3Q0IiwiYWxsQWNjb3VudHMiLCJjb21iaW5lZCIsInNvcnQiLCJiIiwic2VsZWN0ZWREZXRhaWxzIiwiZmluZCIsImFjYyIsInNlbGVjdGVkSXNQYXVzZWQiLCJoMiIsInN0eWxlIiwibWF4SGVpZ2h0Iiwib3ZlcmZsb3dZIiwicGFkZGluZ1JpZ2h0IiwiaWR4IiwiYnV0dG9uIiwib25DbGljayIsImRpc2FibGVkIiwiYmFja2dyb3VuZENvbG9yIiwic3BhbiIsImJyIiwicCJdLCJyYW5nZU1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBLE9BQU9BLFNBQVNDLFNBQVMsRUFBRUMsUUFBUSxFQUFlQyxPQUFPLEVBQUVDLE1BQU0sUUFBUSxRQUFRO0FBQ2pGLE9BQU9DLFdBQVcsUUFBUTtBQUMxQixTQUFTQyxPQUFPLFFBQVEscUJBQXFCO0FBQzdDLE9BQU9DLFVBQVUsY0FBYztBQUMvQixPQUFPL
811DBCQUEwQjtBQUNqQyxTQUFTQyxXQUFXLFFBQVEsbUJBQW1CO0FBQy9DLFNBQ0lDLG9CQUFvQixFQUNwQkMsK0JBQStCLEVBQy9CQyx1QkFBdUIsRUFDdkJDLGNBQWMsRUFDZEMscUJBQXFCLEVBQ3JCQyxvQkFBb0IsRUFDcEJDLHlCQUF5QixFQUN6QkMsMEJBQTBCLEVBQzFCQyw4QkFBOEIsRUFDOUJDLCtCQUErQixFQUMvQkMsNEJBQTRCLFFBQ3pCLHlCQUF5QjtBQUNoQyxTQUFTQyxrQkFBa0IsRUFBRUMsbUJBQW1CLFFBQVEsNEJBQTRCO0FBQ3BGLFNBQVNDLE9BQU8sUUFBUSw0Q0FBNEM7QUFFcEUsTUFBTUMsZ0JBQTBCOztJQUM1QixNQUFNLEVBQUVDLFdBQVcsRUFBRSxHQUFHbEI7SUFDeEIsTUFBTSxDQUFDbUIsV0FBV0MsYUFBYSxHQUFHeEIsU0FBd0I7SUFDMUQsTUFBTSxDQUFDeUIsZ0JBQWdCQyxrQkFBa0IsR0FBRzFCLFNBQWM7SUFDMUQsTUFBTSxDQUFDMkIsd0JBQXdCQywwQkFBMEIsR0FBRzVCLFNBQWdCLEVBQUU7SUFDOUUsTUFBTSxDQUFDNkIsdUJBQXVCQyx5QkFBeUIsR0FBRzlCLFNBQVM7SUFDbkUsTUFBTSxDQUFDK0IsbUJBQW1CQyxxQkFBcUIsR0FBR2hDLFNBQXdCO0lBQzFFLE1BQU0sQ0FBQ2lDLGlCQUFpQkMsbUJBQW1CLEdBQUdsQyxTQUFTO0lBQ3ZELE1BQU1tQyxZQUFZQyxPQUFPQyxRQUFRLENBQUNDLE1BQU07SUFDeEMsTUFBTUMsbUJBQW1CckMsT0FBTztJQUNoQyxNQUFNc0MsV0FBV2xDO0lBRWpCLE1BQU1tQyx5QkFBeUI7UUFDM0J2QjtRQUVBLElBQUk7WUFDQSwwREFBMEQ7WUFDMUQsTUFBTSxFQUFFd0IsTUFBTUMsV0FBVyxFQUFFLEdBQUcsTUFBTXhDLE1BQU15QyxHQUFHLENBQ3pDLENBQUMsRUFBRWxDLGVBQWVILHNCQUFzQixRQUFRLEVBQUVlLGFBQWF1QixHQUFHLENBQUM7WUFFdkUsTUFBTUMscUJBQXFCSCxhQUFhRCxRQUFRO1lBQ2hELDJEQUEyRDtZQUUzRCxJQUFJSSxvQkFBb0I7Z0JBQ3BCLGtDQUFrQztnQkFDbEMsTUFBTUMsaUJBQWlCLE1BQU01QyxNQUFNeUMsR0FBRyxDQUFDaEMscUJBQXFCTCx1QkFBdUI7b0JBQy9FeUMsUUFBUTt3QkFBRXpCLFdBQVd1QjtvQkFBbUI7Z0JBQzVDO2dCQUVBLE1BQU0sRUFBRUosSUFBSSxFQUFFLEdBQUdLLGVBQWVMLElBQUk7Z0JBQ3BDLGtFQUFrRTtnQkFFbEUsTUFBTU8sY0FBYyxJQUFJQyxnQkFBZ0JkLE9BQU9DLFFBQVEsQ0FBQ2MsTUFBTTtnQkFDOUQsTUFBTUMsYUFBYUgsWUFBWUwsR0FBRyxDQUFDO2dCQUVuQyxJQUFJRixNQUFNVyx1QkFBdUJELGVBQWUsUUFBUTtvQkFDcEQsd0NBQXdDO29CQUN4QyxNQUFNRSwwQkFBMEIsTUFBTW5ELE1BQU1vRCxJQUFJLENBQzVDLENBQUMsRUFBRTVDLHNCQUFzQkosc0JBQXNCLFFBQVEsRUFBRWUsYUFBYXVCLEdBQUcsQ0FBQztvQkFFOUUsTUFBTVcsb0JBQW9CRix3QkFBd0JaLElBQUksQ0FBQ0EsSUFBSTtvQkFDM0QsdURBQXVEO29CQUV2RCxpQ0FBaUM7b0JBQ2pDLElBQUljLHFCQUFxQkEsc0JBQXNCVixvQkFBb0I7d0JBQy9ELE1BQU0zQyxNQUFNb0QsSUFBSSxDQUFDeEMsK0JBQStCUix1QkFBdUIsTUFBTTs0QkFDekV5QyxRQUFRO2dDQUFFekIsV0FBV2lDOzRCQUFrQjt3QkFDM0M7b0JBQ0o7b0JBRUEsNkJBQTZCO29CQUM3QixNQUFNckQsTUFBTW9ELElBQUksQ0FDWixDQUFDLEVBQUUxQywwQkFBMEJOLHNCQUFzQixvQkFBb0IsRUFBRXVDLG1CQUFtQixDQUFDO29CQUdqRyxNQUFNekMsS0FBS29ELElBQUksQ0FBQzt3QkFDWkMsT0FBTzt3QkFDUEMsTUFBTSxDQUFDOzs7Ozs0QkFLSCxDQUFDO3dCQUNMQyxVQUFVO3dCQUNWQyxZQUFZO3dCQUNaQyxhQUFhO3dCQUNiQyxtQkFBbUI7d0JBQ25CQyxhQUFhOzRCQUNUTixPQUFPOzRCQUNQLDREQUE0RDs0QkFDNURPLGVBQWU7d0JBQ25CO3dCQUNBQyxnQkFBZ0I7b0JBQ3BCO29CQUVBLE1BQU1DO2dCQUNWO2dCQUVBLHNDQUFzQztnQkFDdEMsTUFBTUMsU0FBUyxJQUFJQyxJQUFJakMsT0FBT0MsUUFBUSxDQUFDaUMsSUFBSTtnQkFDM0NGLE9BQU9HLFlBQVksQ0FBQ0MsTUFBTSxDQUFDO2dCQUMzQnBDLE9BQU9xQyxPQUFPLENBQUNDLFlBQVksQ0FBQyxDQUFDLEdBQUcsSUFBSU4sT0FBT08sUUFBUTtZ
811QUN2RDtZQUVBLDRDQUE0QztZQUM1QyxNQUFNUjtRQUVWLEVBQUUsT0FBT1MsT0FBTztZQUNaQyxRQUFRRCxLQUFLLENBQUMsaUNBQWlDQTtRQUNuRCxTQUFVO1lBQ04sSUFBSSxDQUFDckMsaUJBQWlCdUMsT0FBTyxFQUFFO2dCQUMzQjNEO1lBQ0o7UUFDSjtJQUNKO0lBRUFwQixVQUFVO1FBQ04sSUFBSXVCLGFBQWF1QixNQUFNdkIsYUFBYXlELE9BQU87WUFDdkN0QztRQUNKO0lBQ0osR0FBRztRQUFDbkIsYUFBYXVCO1FBQUl2QixhQUFheUQ7S0FBTTtJQUV4Q2hGLFVBQVU7UUFDTmlGLE1BQU0sMEJBQ0RDLElBQUksQ0FBQ0MsQ0FBQUEsTUFBT0EsSUFBSUMsSUFBSSxJQUNwQkYsSUFBSSxDQUFDdkMsQ0FBQUE7WUFDRjBDLGVBQWUxQyxLQUFLMkMsT0FBTyxHQUFJLG9CQUFvQjtRQUN2RDtJQUNSLEdBQUcsRUFBRTtJQUVMLE1BQU0sQ0FBQ0MsYUFBYUYsZUFBZSxHQUFHcEYsU0FBUyxPQUFPLG1CQUFtQjtJQUV6RSxNQUFNdUYsZ0JBQWdCO1FBQ2xCekQseUJBQXlCO1FBRXpCLElBQUk7WUFDQSxNQUFNMEQ7UUFDVixFQUFFLE9BQU9DLEtBQUs7WUFDVlosUUFBUUQsS0FBSyxDQUFDLDBCQUEwQmE7UUFDNUM7SUFDSjtJQUVBLE1BQU1ELHlCQUF5QjtRQUMzQnRFO1FBRUEsSUFBSTtZQUNBLGdEQUFnRDtZQUNoRCxNQUFNeUIsY0FBYyxNQUFNeEMsTUFBTXlDLEdBQUcsQ0FDL0IsQ0FBQyxFQUFFbEMsZUFBZUgsc0JBQXNCLFFBQVEsRUFBRWUsYUFBYXVCLEdBQUcsQ0FBQztZQUd2RSxNQUFNQyxxQkFBcUJILGFBQWFELE1BQU1BO1lBRTlDLElBQUlJLG9CQUFvQjtnQkFDcEIsNkJBQTZCO2dCQUM3QixNQUFNNEMsUUFBUSxNQUFNdkYsTUFBTXlDLEdBQUcsQ0FDekIzQiw2QkFBNkJWLHVCQUM3QjtvQkFBRXlDLFFBQVE7d0JBQUV6QixXQUFXdUI7b0JBQW1CO2dCQUFFO2dCQUdoRCxNQUFNNkMsU0FBU0QsTUFBTWhELElBQUksRUFBRUEsUUFBUSxDQUFDO2dCQUNwQyxNQUFNa0QsV0FBV0QsT0FBT0MsUUFBUTtnQkFFaEMsSUFBSSxDQUFDQSxVQUFVO29CQUNYLG9CQUFvQjtvQkFDcEIsTUFBTUMseUJBQXlCLE1BQU0xRixNQUFNeUMsR0FBRyxDQUMxQzlCLDJCQUEyQlAsdUJBQzNCO3dCQUNJeUMsUUFBUTs0QkFDSnpCLFdBQVd1Qjs0QkFDWGdELFdBQVczRDt3QkFDZjtvQkFDSjtvQkFHSixNQUFNLEVBQUU0RCxhQUFhLEVBQUUsR0FBR0YsdUJBQXVCbkQsSUFBSSxDQUFDQSxJQUFJO29CQUMxREgsaUJBQWlCdUMsT0FBTyxHQUFHO29CQUMzQjFDLE9BQU9DLFFBQVEsQ0FBQ2lDLElBQUksR0FBR3lCO29CQUN2QjtnQkFDSjtZQUNKO1lBRUEsNkRBQTZEO1lBQzdELE1BQU1DLGlCQUFpQixNQUFNN0YsTUFBTW9ELElBQUksQ0FDbkMsQ0FBQyxFQUFFL0MsZ0NBQWdDRCxzQkFBc0IsV0FBVyxFQUFFZSxhQUFheUQsTUFBTSxXQUFXLEVBQUU1QyxVQUFVLGFBQWEsRUFBRTVCLHFCQUFxQixTQUFTLEVBQUUrRSxZQUFZLENBQUM7WUFHaEwsTUFBTSxFQUFFUyxhQUFhLEVBQUUsR0FBR0MsZUFBZXRELElBQUksQ0FBQ0EsSUFBSTtZQUNsREgsaUJBQWlCdUMsT0FBTyxHQUFHO1lBQzNCMUMsT0FBT0MsUUFBUSxDQUFDaUMsSUFBSSxHQUFHeUI7UUFFM0IsRUFBRSxPQUFPTixLQUFVO1lBQ2YsTUFBTXBGLEtBQUtvRCxJQUFJLENBQUM7Z0JBQ1pDLE9BQU87Z0JBQ1B1QyxNQUFNUixJQUFJUyxRQUFRLEVBQUV4RCxNQUFNeUQsV0FBV1YsSUFBSVUsT0FBTztnQkFDaERDLE1BQU07WUFDVjtRQUNKLFNBQVU7WUFDTixJQUFJLENBQUM3RCxpQkFBaUJ1QyxPQUFPLEVBQUU7Z0JBQzNCM0Q7WUFDSjtRQUNKO0lBQ0o7SUFFQSxNQUFNZ0QsNEJBQTRCO1FBQzlCLElBQUk7WUFDQSxNQUFNK0IsV0FBVyxNQUFNL0YsTUFBTXlDLEdBQUcsQ0FDNUIsQ0FBQyxFQUFFbkMsd0JBQXdCRixzQkFBc0IsUUFBUSxFQUFFZSxhQUFhdUIsR0FBRyxDQUFDO1lBR2hGLE1BQU13RCxhQUFhSCxTQUFTeEQsSUFBSSxDQUFDQSxJQUFJLENBQUMyRCxVQUFVLElBQUksRUFBRTtZQUV0RCxNQUFNQyxxQkFBcUIsTUFBTUMsUUFBUUMsR0FBRyxDQUN4Q0gsV0FBV0ksR0FBRyxDQUFDLE9BQU81RDtnQkFDbEIsTUFBTSxDQUFDNkQsV0FBV2hCLE1BQU0sR0FBRyxNQUFNYSxRQUFRQyxHQUFHLENBQUM7b0JBQ3pDckcsTUFBTXlDLEdBQUcsQ0FBQ2hDLHFCQUFxQkwsdUJBQXVCO3dCQUNsRHlDLFFBQVE7NEJBQUV6QixXQUFXc0I7d0JBQUc7b0JBQzVCO29CQUNBMUMsTUFBTXlDLEdBQUcsQ0FBQzNCLDZCQUE2QlYsdUJBQXVCO3dCQUMxRHlDLFFBQVE7NEJBQUV6QixXQUFXc0I7d0JBQUc7b0JBQzVCO2lCQUNIO2dCQUVELE1BQU04RCxhQUFhRCxVQUFVaEUsSUFBSSxFQUFFQSxRQUFRLENBQUM7Z0JBQzVDLE1BQU1pRCxTQUFTRCxNQUFNaEQsSUFBSSxFQUFFQSxRQUFRLENBQUM7Z0JBQ3BDLE1BQU1rRSxpQkFBaUJELFdBQVd0RCxtQkFBbUIsS0FBSztnQkFDMUQsTUFBTXVDLFdBQVdnQixrQkFBbUJqQixDQUFBQSxPQUFPQyxRQUFRLElBQUksS0FBSTtnQkFFM0QsT0FBTztvQkFDSHJFLFdBQVdzQjtvQkFDWCxHQUFHOEQsVUFBVTtvQkFDYmY7Z0JBQ0o7WUFDSjtZQUdKLE1BQU1pQixTQUFTUCxtQkFBbUJRLE1BQU0sQ0FBQ0MsQ0FBQUEsSUFBS0EsRUFBRW5CLFFBQVE7WUFDeEQsTUFBTW9CLFdBQVdWLG1CQUFtQlEsTUFBTSxDQUFDQyxDQUFBQSxJQUFLLENBQUNBLEVBQUVuQixRQUFRO1lBRTNELElBQUlpQixPQUFPSSxNQUFNLEtBQUssR0FBRztnQkFDckJ6RSxTQUFTLENBQUMsQ0FBQyxFQUFFakMscUJBQXFCLE1BQU0sQ0FBQztnQkFDekM7WUFDSjtZQUVBbUIsa0JBQWtCbUYsT0FBT0ksTUFBTSxHQUFHLElBQUlKLE1BQU0sQ0FBQyxFQUFFLEdBQUc7WUFDbERqRiwwQkFBMEI7bUJBQUlpRixPQUFPSyxLQUFLLENBQUM7bUJBQU9GO2FBQVM7WUFDM0R4RixhQUFhcUYsT0FBT0ksTUFBTSxHQUFHLElBQUlKLE1BQU0sQ0FBQyxFQUFFLENBQUN0RixTQUFTLEdBQUc7WUFFdkQsSUFBSSxDQUFDUSxxQkFBcUI4RSxPQUFPSSxNQUFNLEdBQUcsR0FBRztnQkFDekNqRixxQkFBcUI2RSxNQUFNLENBQUMsRUFBRSxDQUFDdEYsU0FBUztZQUM1QztRQUVKLEVBQUUsT0FBT3FELE9BQU87WUFDWkMsUUFBUUQsS0FBSyxDQUFDLDRDQUE0Q0E7UUFDOUQ7SUFDSjtJQUVBLE1BQU11Qyx5QkFBeUI7UUFDM0JqRztRQUNBLElBQUk7WUFDQSxzREFBc0Q7WUFDdEQsTUFBTW9DLDBCQUEwQixNQUFNbkQsTUFBTW9ELElBQUksQ0FDNUMsQ0FBQyxFQUFFNUMsc0JBQXNCSixzQkFBc0IsUUFBUSxFQUFFZSxhQUFhdUIsR0FBRyxDQUFDO1lBRTlFLE1BQU1XLG9CQUFvQkYsd0JBQXdCWixJQUFJLENBQUNBLElBQUk7WUFFM0Qsc0VBQXNFO1lBQ3RFLElBQUljLHFCQUFxQkEsc0JBQXNCekIsbUJBQW1CO2dCQUM5RCxNQUFNNUIsTUFBTW9ELElBQUksQ0FBQ3hDLCtCQUErQlIsdUJBQXVCLE1BQU07b0JBQ3pFeUMsUUFBUTt3QkFBRXpCLFdBQVdpQztvQkFBa0I7Z0JBQzNDO1lBQ0o7WUFFQSxpQ0FBaUM7WUFDakMsTUFBTXJELE1BQU1vRCxJQUFJLENBQUN2QyxnQ0FBZ0NULHVCQUF1QixNQUFNO2dCQUMxRXlDLFFBQVE7b0JBQUV6QixXQUFXUTtnQkFBa0I7WUFDM0M7WUFFQSxNQUFNMUIsS0FBS29ELElBQUksQ0FBQztnQkFDWkMsT0FBTztnQkFDUEUsVUFBVTtnQkFDVkMsWUFBWTtnQkFDWkMsYUFBYTtnQkFDYkMsbUJBQW1CO2dCQUNuQkMsYUFBYTtvQkFDVE4sT0FBTztvQkFDUE8sZUFBZTtnQkFDbkI7Z0JBQ0FDLGdCQUFnQjtZQUNwQjtZQUVBLGVBQWU7WUFDZixNQUFNQztRQUVWLEVBQUUsT0FBT1MsT0FBWTtZQUNqQixNQUFNdkUsS0FBS29ELElBQUksQ0FBQztnQkFDWkMsT0FBTztnQkFDUHVDLE1BQU1yQixNQUFNc0IsUUFBUSxFQUFFeEQsTUFBTUEsTUFBTXlELFdBQVd2QixNQUFNdUIsT0FBTztnQkFDMURDLE1BQU07WUFDVjtRQUNKLFNBQVU7WUFDTmpGO1FBQ0o7SUFDSjtJQUVBLE1BQU1pRyxpQkFBaUIsQ0FBQ0M7UUFDcEIsSUFBSSxDQUFDQSxTQUFTLE9BQU87UUFDckIsT0FBT0EsU0FBU2hFLHdCQUF3QixNQUFNLG9DQUFvQztJQUN0RjtJQUVBLE1BQU1pRSxnQkFBZ0Isa0JBQ2xCLFFBQUNDO1lBQUlDLFdBQVU7OzhCQUNYLFFBQUNDO29CQUNHQyxLQUFJO29CQUNKQyxLQUFJO29CQUNKSCxXQUFVOzs7Ozs7OEJBRWQsUUFBQ0k7b0JBQUdKLFdBQVU7OEJBQWU7Ozs7Ozs7Ozs7OztJQUlyQyxNQUFNSyxvQkFHRCxDQUFDLEVBQUVSLE9BQU8sRUFBRVMsTUFBTSxFQUFFO1FBQ3JCLE1BQU1sQyxXQUFXa0MsV0FBVztRQUM1QixNQUFNQyxhQUFhaEcsc0JBQXNCc0YsUUFBUTlGLFNBQVM7UUFFMUQscUJBQ0ksUUFBQ2dHO1lBQUlDLFdBQVU7OzhCQUlYLFFBQUNEO29CQUFJQyxXQUFVOzhCQUNYLGNBQUEsUUFBQ1E7d0JBQ0dDLE1BQUs7d0JBQ0xwRixJQUFJLENBQUMsUUFBUSxFQUFFd0UsUUFBUTlGLFNBQVMsQ0FBQyxDQUFDO3dCQUNsQzJHLFNBQVNIO3dCQUNUSSxVQUFVOzRCQUNObkcscUJBQXFCLENBQUNvRyxPQUNsQkEsU0FBU2YsUUFBUTlGLFNBQVMsR0FBRyxPQUFPOEYsUUFBUTlGLFNBQVM7d0JBRTdEO3dCQUNBaUcsV0FBVTs7Ozs7Ozs7Ozs7OEJBTWxCLFFBQUNEO29CQUFJQyxXQUFVOztzQ0FDN0IsUUFBQ0Q7c0NBQUksY0FBQSxRQUFDYzswQ0FBTzs7Ozs7Ozs7Ozs7c0NBQ2IsUUFBQ2Q7NEJBQUk3RCxPQUFPMkQsU0FBU2lCLGNBQWM7c0NBQ2hDakIsU0FBU2lCLGNBQWM7Ozs7Ozs7Ozs7Ozs4QkFJWixRQUFDZjtvQkFBSUMsV0FBVTs7c0NBQ1gsUUFBQ0Q7c0NBQUksY0FBQSxRQUFDYzswQ0FBTzs7Ozs7Ozs7Ozs7c0NBQXdCLFFBQUNkOzRCQUFJN0QsT0FBTzJELFNBQVNrQixhQUFhO3NDQUFRbEIsU0FBU2tCLGFBQWE7Ozs7Ozs7Ozs7Ozs4QkFFekcsUUFBQ2hCO29CQUFJQyxXQUFVOztzQ0FDWCxRQUFDRDtzQ0FBSSxjQUFBLFFBQUNjOzBDQUFPOzs7Ozs7Ozs7OztzQ0FBb0IsUUFBQ2Q7NEJBQUk3RCxPQUFPMkQsU0FBU3RDLFNBQVM7c0NBQVFzQyxTQUFTdEMsU0FBUzs7Ozs7Ozs7Ozs7OzhCQUU3RixRQUFDd0M7b0JBQUlDLFdBQVU7O3NDQUNYLFFBQUNEO3NDQUFJLGNBQUEsUUFBQ2M7MENBQU87Ozs7Ozs7Ozs7O3NDQUF3QixRQUFDZDs0
811QkFBSTdELE9BQU8yRCxTQUFTbUIsYUFBYTtzQ0FBUW5CLFNBQVNtQixhQUFhOzs7Ozs7Ozs7Ozs7OEJBRXpHLFFBQUNqQjtvQkFBSUMsV0FBVTs7c0NBQ1gsUUFBQ0Q7c0NBQUksY0FBQSxRQUFDYzswQ0FBTzs7Ozs7Ozs7Ozs7c0NBQXNCLFFBQUNkOzRCQUFJN0QsT0FBTzJELFNBQVNoQyxXQUFXO3NDQUFRZ0MsU0FBU2hDLFdBQVc7Ozs7Ozs7Ozs7Ozs4QkFFbkcsUUFBQ2tDO29CQUFJQyxXQUFVOztzQ0FDWCxRQUFDRDtzQ0FBSSxjQUFBLFFBQUNjOzBDQUFPOzs7Ozs7Ozs7OztzQ0FBMkIsUUFBQ2Q7NEJBQUk3RCxPQUFPMkQsU0FBU29CLFNBQVM7c0NBQVFwQixTQUFTb0IsU0FBUzs7Ozs7Ozs7Ozs7OzhCQUlwRyxRQUFDbEI7b0JBQUlDLFdBQVcsQ0FBQyx3Q0FBd0MsRUFBRTVCLFdBQVcsV0FBVyxXQUFXLENBQUM7OEJBQ3hGa0M7Ozs7Ozs7Ozs7OztJQUlqQjtJQUVBLE1BQU1ZLGNBQWN6SSxRQUFRO1FBQ3hCLE1BQU0wSSxXQUFXbEgsaUJBQ1g7WUFBQ0E7ZUFBbUJFO1NBQXVCLEdBQzNDO2VBQUlBO1NBQXVCO1FBRWpDLE9BQU9nSCxTQUNGN0IsTUFBTSxDQUFDTSxnQkFDUHdCLElBQUksQ0FBQyxDQUFDN0IsR0FBRzhCLElBQU0sQUFBQ0EsQ0FBQUEsRUFBRWpELFFBQVEsR0FBRyxJQUFJLENBQUEsSUFBTW1CLENBQUFBLEVBQUVuQixRQUFRLEdBQUcsSUFBSSxDQUFBO0lBQ2pFLEdBQUc7UUFBQ25FO1FBQWdCRTtLQUF1QjtJQUUzQyxNQUFNbUgsa0JBQWtCN0ksUUFBUTtRQUM1QixPQUFPeUksWUFBWUssSUFBSSxDQUFDQyxDQUFBQSxNQUFPQSxJQUFJekgsU0FBUyxLQUFLUTtJQUNyRCxHQUFHO1FBQUMyRztRQUFhM0c7S0FBa0I7SUFFdEMsTUFBTWtILG1CQUFtQmhKLFFBQVE7UUFDaEMsT0FBTzZJLG1CQUFtQixDQUFDQSxnQkFBZ0Js
811RCxRQUFRO0lBQ3BELEdBQUc7UUFBQ2tEO0tBQWdCO0lBRWpCLHFCQUNJLFFBQUMxSDtrQkFDRyxjQUFBLFFBQUNtRztZQUFJQyxXQUFVOzs4QkFDWCxRQUFDRDtvQkFBSUMsV0FBVTs7c0NBQ1gsUUFBQzBCOzRCQUFHMUIsV0FBVTtzQ0FBWTs7Ozs7O3NDQUMxQixRQUFDRDs0QkFBSUMsV0FBVTtzQ0FBZTs7Ozs7Ozs7Ozs7OzhCQUdsQyxRQUFDRDtvQkFBSTRCLE9BQU87d0JBQUVDLFdBQVc7d0JBQVNDLFdBQVc7d0JBQVFDLGNBQWM7b0JBQU07b0JBQUc5QixXQUFVOzhCQUNqRmtCLFlBQVlqQyxHQUFHLENBQUMsQ0FBQ3VDLEtBQUtPLG9CQUNuQixRQUFDMUI7NEJBRUdSLFNBQVMyQjs0QkFDVGxCLFFBQVFrQixLQUFLcEQsV0FBVyxXQUFXOzJCQUY5QjJEOzs7Ozs7Ozs7O2dCQU9oQmIsWUFBWXpCLE1BQU0sR0FBRyxtQkFDbEIsUUFBQ007b0JBQUlDLFdBQVU7O3NDQUNYLFFBQUNnQzs0QkFDR2hDLFdBQVU7NEJBQ1ZpQyxTQUFTdEM7NEJBQ1R1QyxVQUFVLENBQUNULG9CQUFvQixDQUFDbEg7NEJBQ2hDb0gsT0FBTztnQ0FBRVEsaUJBQWlCLENBQUNWLG9CQUFvQixDQUFDbEgsb0JBQW9CLFNBQVM7NEJBQUc7c0NBQ25GOzs7Ozs7c0NBSUQsUUFBQ3lIOzRCQUNHaEMsV0FBVTs0QkFDVmlDLFNBQVMsSUFBTTNILHlCQUF5QjtzQ0FHM0M7Ozs7Ozs7Ozs7OztnQkFNUkQsdUNBQ0csUUFBQzBGO29CQUFJQyxXQUFVOzhCQUNYLGNBQUEsUUFBQ0Q7d0JBQUlDLFdBQVU7OzBDQUNYLFFBQUMwQjtnQ0FBRzFCLFdBQVU7MENBQWU7Ozs7OzswQ0FDN0IsUUFBQ29DO2dDQUFLcEMsV0FBVTswQ0FBTTs7Ozs7OzBDQUFvRCxRQUFDcUM7Ozs7OzBDQUMzRSxRQUFDRDtnQ0FBS3BDLFdBQVU7MENBQU07Ozs7OzswQ0FBK0MsUUFBQ3FDOzs7OzswQ0FDdEUsUUFBQ0Q7Z0NBQUtwQyxXQUFVOzBDQUFNOzs7Ozs7MENBRXRCLFFBQUNEO2dDQUFJQyxXQUFVOztrREFDWCxRQUFDZ0M7d0NBQU9oQyxXQUFVO3dDQUFvQmlDLFNBQVMsSUFBTTNILHlCQUF5QjtrREFBUTs7Ozs7O2tEQUN0RixRQUFDMEg7d0NBQU9oQyxXQUFVO3dDQUFjaUMsU0FBU2xFO2tEQUFlOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztnQkFNdkUsQ0FBQ2hELGlCQUFpQnVDLE9BQU8sSUFBSTdDLGlDQUMxQixRQUFDc0Y7b0JBQUlDLFdBQVU7OEJBQ1gsY0FBQSxRQUFDRDt3QkFBSUMsV0FBVTtrQ0FDWCxjQUFBLFFBQUNEOzRCQUFJQyxXQUFVOzs4Q0FDWCxRQUFDRjs7Ozs7OENBQ0QsUUFBQ0M7b0NBQUlDLFdBQVU7O3NEQUNYLFFBQUNzQzs0Q0FBRXRDLFdBQVU7c0RBQXNCOzs7Ozs7c0RBR25DLFFBQUNEOzRDQUFJQyxXQUFVOzs4REFDWCxRQUFDZ0M7b0RBQ0doQyxXQUFVO29EQUNWaUMsU0FBUzt3REFDTHJILE9BQU9DLFFBQVEsQ0FBQ2lDLElBQUksR0FBRyxDQUFDLEVBQUVsQyxPQUFPQyxRQUFRLENBQUNDLE1BQU0sQ0FBQyxDQUFDLEVBQUUvQixxQkFBcUIsTUFBTSxDQUFDO29EQUNwRjs4REFDSDs7Ozs7OzhEQUdELFFBQUNpSjtvREFBT2hDLFdBQVU7b0RBQXlCaUMsU0FBUzt3REFDaER2SCxtQkFBbUI7d0RBQ25Cc0Q7b0RBQ0o7OERBQ0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWN6QztHQXRkTW5FOztRQUNzQmpCO1FBU1BFOzs7S0FWZmU7QUF3ZE4sZUFBZUEsY0FBYyJ9
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.