1import { createHotContext as __vite__createHotContext } from "/@vite/client";import.meta.hot = __vite__createHotContext("/src/app/pages/dashboard/PaymentGateway.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/PaymentGateway.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"]; const _Fragment = __vite__cjsImport1_react_jsxDevRuntime["Fragment"]; 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 useState = __vite__cjsImport2_react["useState"]; const useEffect = __vite__cjsImport2_react["useEffect"]; 12import { useLocation, useSearchParams } from "/node_modules/.vite/deps/react-router-dom.js?v=e8ce80ae"; 13import { Content } from "/src/config/layout/components/Content.tsx"; 14import PaymentGateWayMonth from "/src/app/pages/dashboard/components/PaymentGateWayMonth.tsx"; 15import PaymentGateWayYear from "/src/app/pages/dashboard/components/PaymentGateWayYear.tsx"; 16import "/src/app/pages/dashboard/css/paymentGateway.css"; 17import { toAbsoluteUrl } from "/src/config/helpers/index.ts"; 18import { CUREENT_COMPANY_NAME, GET_ALL_SUBSCRIPTIONPLANS, GET_ALL_USERADDRESS, GET_ORDER, POST_CREATE_CHECKOUT_SESSION, POST_CREATE_USER_ADDRESS, REGEX_NO_NUMBER_OR_SPECIAL, REGEX_NO_SPACES, REGEX_EMAIL } from "/src/app/Constants.tsx"; 19import axios from "/node_modules/.vite/deps/axios.js?v=e8ce80ae"; 20import { disablePaymentSplashScreen, disableSplashScreen, enablePaymentSplashScreen, enableSplashScreen } from "/src/app/pages/common/CommonUtilities.tsx"; 21import { useAuth } from "/src/app/modules/auth/index.ts"; 22import Swal from "/node_modules/.vite/deps/sweetalert2.js?v=e8ce80ae"; 23const initialFormData = { 24 firstName: "", 25 lastName: "", 26 email: "", 27 country: "", 28 state: "", 29 city: "", 30 zipCode: "", 31 addressLine1: "", 32 addressLine2: "" 33}; 34const PaymentGateway = ()=>{ 35 _s(); 36 const [step, setStep] = useState(3); 37 const [availableStates, setAvailableStates] = useState([]); 38 const [availableCities, setAvailableCities] = useState([]); 39 const [savedEmail, setSavedEmail] = useState(""); 40 const [errors, setErrors] = useState({}); 41 const [visitedSteps, setVisitedSteps] = useState([ 42 1 43 ]); 44 const [searchParams] = useSearchParams(); 45 const [choosedPlan, setChoosedPlan] = useState(false); 46 const [seletedPlan_, setSeletedPlan_] = useState(""); 47 const { currentUser, setCurrentUser } = useAuth(); 48 const [orderId, setOrderId] = useState(null); 49 const [UserCartDetails, setUserCartDetails] = useState(null); 50 const [priceId, setPriceId] = useState(null); 51 const [status, setStatus] = useState(null); 52 const location = useLocation(); 53 const [flag, setFlag] = useState(false); 54 const state = location.state; 55 const [couponCode, setCouponCode] = useState(null); 56 let portalUrl = window.location.origin; 57 const [subscriptionPlanDetails, setSubscriptionPlanDetails] = useState([]); 58 const [monthlyPlan, setMonthlyPlan] = useState(null); 59 const [yearlyPlan, setYearlyPlan] = useState(null); 60 const [countries, setCountries] = useState([]); 61 const [states, setStates] = useState([]); 62 const [cities, setCities] = useState([]); 63 const [selectedCountry, setSelectedCountry] = useState(null); 64 const [OpenBill, setOpenBill] = useState(false); 65 const [selectedState, setSelectedState] = useState(null); 66 const [selectedCity, setSelectedCity] = useState(null); 67 const [isCountryFocused, setIsCountryFocused] = useState(false); 68 const [isStateFocused, setIsStateFocused] = useState(false); 69 const [isCityFocused, setIsCityFocused] = useState(false); 70 const [userAddress, setUserAddress] = useState([]); 71 const [selectedAddressIndex, setSelectedAddressIndex] = useState(""); 72 const [lastSelectedAddressIndex, setLastSelectedAddressIndex] = useState("");
73 const [backBtnFlag, setBackBtnFlag] = useState(false); 74 const [OpenBillForm, setOpenBillForm] = useState(true); 75 const [openform, setopenform] = useState(false); 76 const [formData, setFormData] = useState(initialFormData); 77 useEffect(()=>{ 78 //const location = useLocation(); 79 const queryParams = new URLSearchParams(location.search); 80 const selectedPlan = queryParams.get("plan"); 81 const planType = queryParams.get("planType"); 82 setOrderId(queryParams.get("orderId")); 83 setPriceId(queryParams.get("priceId")); 84 setSeletedPlan_(selectedPlan ? selectedPlan : ""); 85 setStatus(queryParams.get("status")); 86 if (planType === "multiple") { 87 setChoosedPlan(true); 88 } 89 //collecting the types of subscription plans 90 getSubscriptionPlanDetails(); 91 }, []); 92 useEffect(()=>{ 93 console.log("Collecting the yearly & Monthly plan only"); 94 getPlanDetailsBySellPrice(subscriptionPlanDetails); 95 }, [ 96 subscriptionPlanDetails 97 ]); 98 // useEffect(() => { 99 // //After checkout page. 100 // const queryParams = new URLSearchParams(location.search); 101 // setStatus(queryParams.get("status")); 102 // }, []); 103 // useEffect(() => { 104 // console.log("Received state in PaymentGateway: ", state); 105 // console.log(state?.orderId, state?.priceId, state?.plan); 106 // if (state) { 107 // setSeletedPlan_(state?.plan); 108 // setOrderId(state?.orderId); 109 // setPriceId(state?.priceId); 110 // } 111 // if(state?.plan_type==="multiple"){ 112 // setChoosedPlan(true); 113 // } 114 // }, [state]); 115 async function getSubscriptionPlanDetails() { 116 try { 117 const response = await axios.get(GET_ALL_SUBSCRIPTIONPLANS(CUREENT_COMPANY_NAME)); 118 console.log("respnse status code .." + response.status); 119 if (response.status == 200) { 120 setSubscriptionPlanDetails(response.data); 121 } 122 } catch (e) { 123 console.error("Error ..." + e); 124 } 125 } 126 // Fetch countries from restcountries.com API 127 // useEffect(() => { 128 // const fetchCountries = async () => { 129 // // enableSplashScreen(); // Show splash/loading indicator 130 // try { 131 // const response = await axios.get("https://countriesnow.space/api/v0.1/countries/positions"); 132 // const countryOptions = response.data.data.map((country: any) => ({ 133 // label: country.name, 134 // value: country.name, 135 // })); 136 // setCountries(countryOptions); 137 // } catch (error) { 138 // console.error("Error fetching countries:", error); 139 // } finally { 140 // // disableSplashScreen(); // Hide splash/loading indicator 141 // } 142 // }; 143 // fetchCountries(); 144 // }, []); 145 //Filtering the yearly & monthly plans only 146 const getPlanDetailsBySellPrice = (plans)=>{ 147 const matchedMonthlyPlan = plans.find((plan)=>plan.name.toLowerCase().includes("offer")); 148 if (matchedMonthlyPlan) { 149 console.log("Monthly plan found..."); 150 setMonthlyPlan(matchedMonthlyPlan); 151 } else { 152 console.log("No Monthly Plan matched the given conditions."); 153 } 154 const matchedYearlyPlan = plans.find((plan)=>plan.name.toLowerCase().includes("yearly")); 155 if (matchedYearlyPlan) { 156 console.log("Yearly plan found..."); 157 setYearlyPlan(matchedYearlyPlan); 158 } else { 159 console.log("No Yearly Plan matched the given conditions."); 160 } 161 }; 162 useEffect(()=>{ 163 if (orderId) { 164 getOrderwithPlan(parseInt(orderId)); 165 } 166 }, [ 167 orderId 168 ]); 169 useEffect(()=>{ 170 if (status?.includes("success")) { 171 const sessionOrderId = sessionStorage.getItem("orderId"); 172 console.log("Status received..." + sessionOrderId); 173 if (sessionOrderId) { 174 getOrderwithPlan(parseInt(sessionOrderId)); 175 setStep(3); 176 // createSubscription(); 177 } 178 } 179 }, [ 180 status 181 ]); 182 //collect the current Order details 183 // async function createSubscription() { 184 // console.log("calling...createSubscription"); 185 // try { 186 // const response = await axios.post( 187 // CREATE_SUBSCRIPTION(CUREENT_COMPANY_NAME), 188 // { 189 // orderId: sessionStorage.getItem("orderId"), 190 // status: "ACTIVE", 191 // DiscountRate: 0.0, 192 // } 193 // ); 194 // console.log("response ...." + response); 195 // if (response.status == 200) { 196 // } 197 // } catch (e) { 198 // console.log("Error...." + e); 199 // } finally { 200 // sessionStorage.removeItem("orderId"); 201 // } 202 // } 203 //collect the current Order details 204 async function getOrderwithPlan(orderId) { 205 console.log("calling...getOrderwithPlan" + orderId); 206 try { 207 const response = await axios.post(GET_ORDER(CUREENT_COMPANY_NAME) + "?orderId=" + orderId); 208 console.log("response ...." + response); 209 if (response.status == 200) { 210 setUserCartDetails(response.data); 211 } 212 } catch (e) { 213 console.log("Error...." + e); 214 } 215 } 216 // 217 const handleChange = (e)=>{ 218 const { name, value } = e.target; 219 if (name === "zipCode" && !/^\d*$/.test(value)) { 220 setErrors((prevErrors)=>({ 221 ...prevErrors, 222 zipCode: "Only numeric values are allowed for Zip Code" 223 })); 224 return;
224 // Prevent updating the state if the value is invalid 225 } else { 226 // Clear the error if the value is valid 227 setErrors((prevErrors)=>({ 228 ...prevErrors, 229 zipCode: "" 230 })); 231 } 232 setFormData((prev)=>({ 233 ...prev, 234 [name]: value 235 })); 236 if (name === "plan") { 237 setSeletedPlan_(value); 238 } 239 setErrors((prevErrors)=>{ 240 const newErrors = { 241 ...prevErrors 242 }; 243 delete newErrors[name]; 244 return newErrors; 245 }); 246 // if (name === 'country') { 247 // const country = value as keyof typeof locationData; 248 // setAvailableStates(Object.keys(locationData[country] || {})); // â Add this line 249 // setAvailableCities([]); 250 // setFormData(prev => ({ ...prev, state: '', city: '' })); 251 // } 252 // if (name === 'state') { 253 // const country = formData.country as keyof typeof locationData; 254 // const state = value as keyof (typeof locationData)[typeof country]; 255 // setAvailableCities(locationData[country]?.[state] || []); 256 // setFormData(prev => ({ ...prev, city: '' })); 257 // } 258 // validateStep1(); 259 }; 260 const validateStep1 = ()=>{ 261 let newErrors = {}; 262 // First Name Validation 263 if (!formData.firstName.trim()) { 264 newErrors.firstName = "First name is required"; 265 } else if (REGEX_NO_NUMBER_OR_SPECIAL.test(formData.firstName)) { 266 newErrors.firstName = "First name must start with a letter"; 267 } else if (formData.firstName.length < 3 || formData.firstName.length > 15) { 268 newErrors.firstName = "First name must be between 3 and 15 characters"; 269 } else if (!REGEX_NO_SPACES.test(formData.firstName)) { 270 newErrors.firstName = "The first three characters cannot be spaces"; 271 } 272 // Last Name Validation 273 if (!formData.lastName.trim()) { 274 newErrors.lastName = "Last name is required"; 275 } else if (REGEX_NO_NUMBER_OR_SPECIAL.test(formData.lastName)) { 276 newErrors.lastName = "Last name must start with a letter"; 277 } else if (formData.lastName.length < 3 || formData.lastName.length > 15) { 278 newErrors.lastName = "Last name must be between 3 and 15 characters"; 279 } else if (!REGEX_NO_SPACES.test(formData.lastName)) { 280 newErrors.lastName = "The last three characters cannot be spaces"; 281 } 282 // Email Validation 283 if (!formData.email.trim()) { 284 newErrors.email = "Email is required"; 285 } else if (!REGEX_EMAIL.test(formData.email)) { 286 newErrors.email = "Enter a valid email"; 287 } 288 if (!formData.addressLine1.trim()) { 289 newErrors.addressLine1 = "Address Line1 is required"; 290 } 291 if (!formData.zipCode.trim()) { 292 newErrors.zipCode = "Zip Code is required"; 293 } 294 if (!selectedCountry) { 295 newErrors.country = "Country is required"; 296 } 297 if (!selectedState) { 298 newErrors.state = "State is required"; 299 } 300 if (!selectedCity) { 301 newErrors.city = "City is required"; 302 } 303 setErrors(newErrors); 304 return Object.keys(newErrors).length === 0; 305 }; 306 // useEffect(()=>{ 307 // validateStep1() 308 // },[formData]) 309 useEffect(()=>{ 310 console.error("lastSelectedAddressIndex :: " + lastSelectedAddressIndex); 311 }, [ 312 lastSelectedAddressIndex 313 ]); 314 useEffect(()=>{ 315 if (userAddress.length === 0) return; 316 console.error("backbuttonflag :: " + backBtnFlag); 317 console.error("lastSelectedAddressIndex :: " + lastSelectedAddressIndex); 318 // Default behavior: select the latest address 319 if (backBtnFlag) { 320 // Restore previously selected address 321 console.error("executed if block"); 322 if (lastSelectedAddressIndex === "") { 323 setSelectedAddressIndex(userAddress[userAddress.length - 1].addressId); 324 } else { 325 setSelectedAddressIndex(lastSelectedAddressIndex); 326 } 327 } else { 328 console.error("executed else block"); 329 if (step === 1) { 330 const latestAddressId = userAddress[userAddress.length - 1].addressId; 331 setSelectedAddressIndex(latestAddressId); 332 setLastSelectedAddressIndex(latestAddressId); 333 } 334 } 335 }, [ 336 userAddress, 337 backBtnFlag 338 ]); 339 const handleNext = async ()=>{ 340 if (step === 1 && selectedAddressIndex) { 341 setStep(step + 1); 342 return; 343 } 344 if (step === 1 && !validateStep1()) { 345 return; 346 } 347 // if (step === 2) { 348 // // Determine pricing and product info 349 // const isMonthly = formData.plan === "monthly"; 350 // const productName = isMonthly 351 // ? 'SIX SIGMA FUNNEL âMONTHLY PLANâ' 352 // : 'SIX SIGMA FUNNEL âYEARLY PLANâ'; 353 // const productPrice = isMonthly ? 9700 : 116400; // Stripe accepts price in cents 354 // const quantity = 1; 355 // const currency = "usd"; 356 // const email = savedEmail; 357 // const domainUrl = window.location.origin; 358 // const companyName = CUREENT_COMPANY_NAME; 359 // try { 360 // const response = await axios.post<StripeResponse>( 361 // POST_CREATE_CHECKOUT_SESSION(CUREENT_COMPANY_NAME), 362 // { 363 // productName, 364 // productPrice, 365 // quantity, 366 // currency, 367 // email, 368 // domainUrl, 369 // companyName 370 // } 371 // ); 372 // if (response.data.status === "SUCCESS" && response.data.sessionUrl) { 373 // localStorage.removeItem("trialExpired"); 374 // window.location.href = response.data.sessionUrl; 375 // } else { 376 // console.error("Checkout session failed:", response.data.message); 377 // alert("Something went wrong during checkout. Please try again."); 378 // } 379 // } catch (error) { 380 // console.error("Error calling checkout session API:", error); 381 // alert("Error connecting to checkout. Please try again later."); 382 // } 383 // return; // Prevent moving to step 3 â wait for Stripe redirect 384 // } 385 // const nextStep = step + 1; 386 // setStep(nextStep); 387 // setVisitedSteps((prev) => [...new Set([...prev, nextStep])]); 388 //after validation call the createUserAddress to store it. 389 setStep(step + 1); 390 setLastSelectedAddressIndex(""); 391 createUserAddress(); 392 }; 393 const handlePlanChange = async (priceId, planType)=>{ 394 console.log("price id .." + priceId, "plan type .." + planType); 395 if (planType && priceId) { 396 setSeletedPlan_(planType); 397 setPriceId(priceId); 398 } 399 try { 400 const orderResponse = await axios.post(GET_ORDER(CUREENT_COMPANY_NAME), null, { 401 params: { 402 orderId: orderId, 403 priceId: priceId, 404 planType: planType 405 } 406 }); 407 console.log("orderResponse.status .." + orderResponse.status); 408 if (orderResponse.status === 200) { 409 setUserCartDetails(orderResponse.data); 410 } 411 } catch (error) { 412 console.error("Failed to switch plan:", error); 413 } finally{ 414 //To update the URL in Back case 415 const queryParams = new URLSearchParams(window.location.search); 416 if (planType) { 417 queryParams.set("plan", planType); // Update or add the plan param 418 } 419 const newUrl = window.location.pathname + "?" + queryParams.toString(); 420 // Update the URL without reloading 421 window.history.replaceState(null, "", newUrl); 422 } 423 }; 424 const handlePayment = async ()=>{ 425 // const quantity = 1; 426 const currency = "usd"; 427 const email = savedEmail; 428 const domainUrl = window.location.origin; 429 const companyName = CUREENT_COMPANY_NAME; 430 try { 431 //enableSplashScreen(); 432 enablePaymentSplashScreen(); 433 const response = await axios.post(POST_CREATE_CHECKOUT_SESSION(CUREENT_COMPANY_NAME), { 434 // productName, 435 priceId, 436 // quantity, 437 currency, 438 orderId, 439 // email, 440 domainUrl, 441 companyName, 442 couponCode 443 }); 444 if (response.data.status === "SUCCESS" && response.data.sessionUrl) { 445 localStorage.removeItem("trialExpired"); 446 window.location.href = response.data.sessionUrl; 447 } else { 448 console.error("Checkout session failed:", response.data.message); 449 disablePaymentSplashScreen(); 450 Swal.fire({ 451 imageUrl: "/media/misc/remove.png", 452 imageWidth: 60, 453 imageHeight: 60, 454 title: "<span style='color: red; font-weight: bold;'>Error!</span>", 455 html: `<strong>${response.data.message}</strong>`, 456 confirmButtonText: "OK", 457 confirmButtonColor: "#f79c3a" 458 }); 459 //alert("Something went wrong during checkout. Please try again."); 460 } 461 } catch (error) { 462 console.error("Error calling checkout session API:", error); 463 alert("Error connecting to checkout. Please try again later."); 464 } finally{ 465 //disableSplashScreen(); 466 } 467 return; // Prevent moving to step 3 â wait for Stripe redirect 468 }; 469 async function getcurrentdata() { 470 try { 471 const response = await axios.get(GET_ALL_USERADDRESS(CUREENT_COMPANY_NAME)); 472 const rawData = response.data; 473 if (response.status === 200) { 474 const simplified = rawData.map((addr)=>({ 475 addressLine1: addr.line1, 476 addressLine2: addr.line2, 477 country: addr.country, 478 phone: addr.phone, 479 contactName: addr.contactName, 480 postalCode: addr.postalCode, 481 addressId: addr.addressId, 482 state: addr.state, 483 city: addr.city 484 })); 485 setOpenBill(true); 486 setUserAddress(simplified); 487 setOpenBillForm(false); 488 } 489 } catch (error) { 490 console.error("Error fetching user addresses:", error); 491 throw error; // Optional: rethrow if caller needs to handle it 492 } 493 } 494 useEffect(()=>{ 495 getcurrentdata(); 496 }, [ 497 step 498 ]); 499 function handleopenform() { 500 setopenform(true); 501 console.log("this is the " + openform); 502 } 503 function handlelink() { 504 setFormData(initialFormData); 505 // Reset dropdown selections 506 setSelectedState(null); 507 setSelectedCity(null); 508 setSelectedCountry(null); 509 } 510 const handleBack = ()=>{ 511 if (step > 1) { 512 setBackBtnFlag(true); 513 setStep(step - 1); 514 } 515 }; 516 async function createUserAddress() { 517 try { 518 const response = await axios.post(POST_CREATE_USER_ADDRESS(CUREENT_COMPANY_NAME), { 519 contactName: formData.firstName + " " + formData.lastName, 520 line1: formData.addressLine1, 521 line2: formData.addressLine2, 522 city: selectedCity, 523 state: selectedState, 524 postalCode: formData.zipCode, 525 addressType: "BILLING", 526 phone: "000-000-0000", 527 country: selectedCountry 528 }); 529 if (response.status == 200) { 530 console.log("user address added susccessfully"); 531 } 532 console.log("Address created successfully:", response.data); 533 return response.data; 534 } catch (e) { 535 console.error("Error creating address:", e); 536 // Optionally, throw or handle error appropriately 537 } 538 } 539 // Field definitions (label and name) 540 const fields = [ 541 { 542 label: "First Name*", 543 name: "firstName" 544 }, 545 { 546 label: "Last Name*", 547 name: "lastName" 548 }, 549 { 550 label: "Email*", 551 name: "email" 552 }, 553 { 554 label: "Address Line1", 555 name: "addressLine1" 556 }, 557 { 558 label: "Address Line2", 559 name: "addressLine2" 560 }, 561 { 562 label: "Zip Code", 563 name: "zipCode" 564 } 565 ]; 566 // Handle country change and fetch states 567 const handleCountryChange = (e)=>{ 568 const countryCode = e.target.value; 569 setSelectedCountry(countryCode); 570 setSelectedState(null); 571 setStates([]); 572 // Clear validation error 573 if (errors.country) { 574 setErrors((prev)=>({ 575 ...prev, 576 country: "" 577 })); 578 } 579 // Toggle filled class based on value 580 const parent = e.target.closest(".input-container"); 581 if (parent) { 582 if (countryCode) { 583 parent.classList.add("filled"); 584 } else { 585 parent.classList.remove("filled"); 586 } 587 } 588 // Fetch states if a country is selected 589 if (countryCode) { 590 enableSplashScreen(); // Show loading indicator 591 axios.post("https://countriesnow.space/api/v0.1/countries/states", { 592 country: countryCode 593 }).then((response)=>{ 594 const stateOptions = response.data.data.states.map((state)=>({ 595 label: state.name, 596 value: state.name 597 })); 598 setStates(stateOptions); 599 }).catch((error)=>{ 600 console.error("Error fetching states:", error); 601 }).finally(()=>{ 602 disableSplashScreen(); // Hide loading indicator 603 }); 604 } 605 }; 606 const handleStateChange = (e)=>{ 607 const stateCode = e.target.value; 608 setSelectedState(stateCode); 609 setSelectedCity(null); // Reset city selection 610 // Clear state error if any 611 if (errors.state) { 612 setErrors((prev)=>({ 613 ...prev, 614 state: "" 615 })); 616 } 617 // Toggle 'filled' class for floating label 618 const parent = e.target.closest(".input-container"); 619 if (parent) { 620 if (stateCode) { 621 parent.classList.add("filled"); 622 } else { 623 parent.classList.remove("filled"); 624 } 625 } 626 // Fetch cities if both state and country are selected 627 if (stateCode && selectedCountry) { 628 enableSplashScreen(); // Show loading indicator 629 axios.post("https://countriesnow.space/api/v0.1/countries/state/cities", { 630 country: selectedCountry, 631 state: stateCode 632 }).then((response)=>{ 633 const cityOptions = response.data.data.map((city)=>({ 634 label: city, 635 value: city 636 })); 637 setCities(cityOptions); 638 }).catch((error)=>{ 639 console.error("Error fetching cities:", error); 640 }).finally(()=>{ 641 disableSplashScreen(); // Hide loading indicator 642 }); 643 } else { 644 setCities([]); 645 } 646 }; 647 const handleCityChange = (e)=>{ 648 const selectedOption = e.target.value; 649 setSelectedCity(selectedOption); 650 enableSplashScreen(); 651 // Clear city error if present 652 if (errors.city) { 653 setErrors((prev)=>({ 654 ...p
654rev, 655 city: "" 656 })); 657 } 658 // Toggle 'filled' class for floating label 659 const parent = e.target.closest(".input-container"); 660 if (parent) { 661 if (selectedOption) { 662 parent.classList.add("filled"); 663 } else { 664 parent.classList.remove("filled"); 665 } 666 } 667 disableSplashScreen(); 668 }; 669 useEffect(()=>{ 670 setVisitedSteps((prev)=>prev.includes(step) ? prev : [ 671 ...prev, 672 step 673 ]); 674 }, [ 675 step 676 ]); 677 const stepLabels = [ 678 "Invoice Address", 679 "Purchase Overview", 680 "Purchase Confirmation" 681 ]; 682 return /*#__PURE__*/ _jsxDEV(_Fragment, { 683 children: /*#__PURE__*/ _jsxDEV(Content, { 684 children: /*#__PURE__*/ _jsxDEV("div", { 685 style: { 686 width: "80%", 687 margin: "0 auto", 688 padding: 20 689 }, 690 children: [ 691 /*#__PURE__*/ _jsxDEV("div", { 692 className: "stepper" 693 }, void 0, false, { 694 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PaymentGateway.tsx", 695 lineNumber: 857, 696 columnNumber: 11 697 }, this), 698 step === 1 && OpenBill && /*#__PURE__*/ _jsxDEV("div", { 699 style: { 700 margin: "auto", 701 width: "100%" 702 }, 703 children: [ 704 /*#__PURE__*/ _jsxDEV("h2", { 705 children: "Choose a Billing Address" 706 }, void 0, false, { 707 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PaymentGateway.tsx", 708 lineNumber: 911, 709 columnNumber: 15 710 }, this), 711 /*#__PURE__*/ _jsxDEV("div", { 712 style: { 713 overflowY: "auto", 714 border: "1px solid #ddd", 715 borderRadius: "5px", 716 padding: "20px", 717 width: "100%", 718 maxHeight: "200px" 719 }, 720 children: [ 721 /*#__PURE__*/ _jsxDEV("h4", { 722 children: "Your addresses" 723 }, void 0, false, { 724 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PaymentGateway.tsx", 725 lineNumber: 923, 726 columnNumber: 17 727 }, this), 728 userAddress.map((address, index)=>/*#__PURE__*/ _jsxDEV("label", { 729 style: { 730 display: "block", 731 marginBottom: "10px", 732 cursor: "pointer", 733 fontWeight: selectedAddressIndex === address.addressId ? "bold" : "normal" 734 }, 735 onClick: ()=>{ 736 setOpenBillForm(false); 737 setErrors({}); 738 }, 739 children: [ 740 /*#__PURE__*/ _jsxDEV("input", { 741 type: "radio", 742 name: "billingAddress", 743 checked: selectedAddressIndex === address.addressId, 744 onChange: ()=>{ 745 setSelectedAddressIndex(address.addressId); 746 setLastSelectedAddressIndex(address.addressId); 747 }, 748 style: { 749 marginRight: "8px" 750 } 751 }, void 0, false, { 752 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PaymentGateway.tsx", 753 lineNumber: 940, 754 columnNumber: 21 755 }, this), 756 address.contactName, 757 ", ", 758 address.country, 759 ", ", 760 address.state, 761 ", ", 762 address.city, 763 ", ", 764 address.postalCode 765 ] 766 }, index, true, { 767 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PaymentGateway.tsx", 768 lineNumber: 926, 769 columnNumber: 19 770 }, this)), 771 /*#__PURE__*/ _jsxDEV("a", { 772 href: "#", 773 style: { 774 color: "#007bff", 775 textDecoration: "none", 776 display: "inline-block", 777 marginTop: "10px" 778 }, 779 onClick: (e)=>{ 780 e.preventDefault(); 781 setSelectedAddressIndex(""); 782 setOpenBillForm(true); 783 handlelink(); 784 setErrors({}); 785 }, 786 children: "+Add New Billing Address" 787 }, void 0, false, { 788 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PaymentGateway.tsx", 789 lineNumber: 955, 790 columnNumber: 17 791 }, this) 792 ] 793 }, void 0, true, { 794 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PaymentGateway.tsx", 795 lineNumber: 912, 796 columnNumber: 15 797 }, this) 798 ] 799 }, void 0, true, { 800 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PaymentGateway.tsx", 801 lineNumber: 910, 802 columnNumber: 13 803 }, this), 804 step === 1 && OpenBillForm && /*#__PURE__*/ _jsxDEV("div", { 805 children: /*#__PURE__*/ _jsxDEV("div", { 806 style: { 807 display: "flex", 808 flexWrap: "wrap", 809 gap: "20px" 810 }, 811 children: [ 812 fields.filter((field)=>field.name !== "zipCode").map((field)=>/*#__PURE__*/ _jsxDEV("div", { 813 className: `input-container ${formData[field.name] ? "filled" : ""}`, 814 style: { 815 flex: "1 0 30%", 816 minWidth: "200px", 817 position: "relative" 818 }, 819 children: [ 820 /*#__PURE__*/ _jsxDEV("input", { 821 type: field.name === "email" ? "email" : "text", 822 name: field.name, 823 value: formData[field.name], 824 onChange: handleChange, 825 onFocus: (e)=>e.currentTarget.parentElement?.classList.add("focused"), 826 onBlur: (e)=>{ 827 if (!e.currentTarget.value) { 828 e.currentTarget.parentElement?.classList.remove("focused"); 829 } 830 }, 831 className: "floating-input", 832 style: { 833 width: "100%", 834 padding: "12px 8px 4px 8px" 835 }, 836 maxLength: [ 837 "firstName", 838 "lastName" 839 ].includes(field.name) ? 15 : field.name === "addressLine1" ? 100 : undefined 840 }, void 0, false, { 841 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PaymentGateway.tsx", 842 lineNumber: 997, 843 columnNumber: 23 844 }, this), 845 /*#__PURE__*/ _jsxDEV("label", { 846 className: "floating-label", 847 children: [ 848 field.label.replace("*", ""), 849 [ 850 "firstName", 851 "lastName", 852 "email", 853 "addressLine1", 854 "zipCode" 855 ].includes(field.name) && /*#__PURE__*/ _jsxDEV("span", { 856 style: { 857 color: "red" 858 }, 859 children: "*" 860 }, void 0, false, { 861 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PaymentGateway.tsx", 862 lineNumber: 1034, 863 columnNumber: 27 864 }, this) 865 ] 866 }, void 0, true, { 867 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PaymentGateway.tsx", 868 lineNumber: 1025, 869 columnNumber: 23 870 }, this), 871 errors[field.name] && /*#__PURE__*/ _jsxDEV("p", { 872 style: { 873 color: "red", 874 margin: 0 875 }, 876 children: errors[field.name] 877 }, void 0, false, { 878 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PaymentGateway.tsx", 879 lineNumber: 1039, 880 columnNumber: 25 881 }, this) 882 ] 883 }, field.name, true, { 884 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PaymentGateway.tsx", 885 lineNumber: 984, 886 columnNumber: 21 887 }, this)), 888 /*#__PURE__*/ _jsxDEV("div", { 889 style: { 890 flex: "1 0 30%", 891 minWidth: "200px" 892 }, 893 className: `input-container country ${selectedCountry ? "focused" : ""}`, 894 children: [ 895 /*#__PURE__*/ _jsxDEV("select", { 896 name: "country", 897 value: selectedCountry, 898 onChange: handleCountryChange, 899 onFocus: (e)=>{ 900 setIsCountryFocused(true); 901 e.currentTarget.parentElement?.classList.add("focused"); 902 }, 903 onBlur: (e)=>{ 904 setIsCountryFocused(false); 905 if (!e.currentTarget.value) { 906 e.currentTarget.parentElement?.classList.remove("focused"); 907 } 908 }, 909 children: [ 910 /*#__PURE__*/ _jsxDEV("option", { 911 value: "", 912 style: { 913 display: "none" 914 } 915 }, void 0, false, { 916 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PaymentGateway.tsx", 917 lineNumber: 1069, 918 columnNumber: 21 919 }, this), 920 isCountryFocused && /*#__PURE__*/ _jsxDEV("option", { 921 value: "", 922 disabled
922: true, 923 children: "Select Country" 924 }, void 0, false, { 925 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PaymentGateway.tsx", 926 lineNumber: 1071, 927 columnNumber: 23 928 }, this), 929 countries.map((country)=>/*#__PURE__*/ _jsxDEV("option", { 930 value: country.value, 931 children: country.label 932 }, country.value, false, { 933 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PaymentGateway.tsx", 934 lineNumber: 1076, 935 columnNumber: 23 936 }, this)) 937 ] 938 }, void 0, true, { 939 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PaymentGateway.tsx", 940 lineNumber: 1052, 941 columnNumber: 19 942 }, this), 943 /*#__PURE__*/ _jsxDEV("label", { 944 className: "floating-label-dd", 945 children: [ 946 "Select Country", 947 /*#__PURE__*/ _jsxDEV("span", { 948 style: { 949 color: "red" 950 }, 951 children: "*" 952 }, void 0, false, { 953 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PaymentGateway.tsx", 954 lineNumber: 1082, 955 columnNumber: 35 956 }, this) 957 ] 958 }, void 0, true, { 959 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PaymentGateway.tsx", 960 lineNumber: 1081, 961 columnNumber: 19 962 }, this), 963 errors.country && /*#__PURE__*/ _jsxDEV("p", { 964 style: { 965 color: "red", 966 margin: 0 967 }, 968 children: errors.country 969 }, void 0, false, { 970 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PaymentGateway.tsx", 971 lineNumber: 1085, 972 columnNumber: 21 973 }, this) 974 ] 975 }, void 0, true, { 976 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PaymentGateway.tsx", 977 lineNumber: 1046, 978 columnNumber: 17 979 }, this), 980 /*#__PURE__*/ _jsxDEV("div", { 981 style: { 982 flex: "1 0 30%", 983 minWidth: "200px" 984 }, 985 className: `input-container ${selectedState ? "focused" : ""}`, 986 children: [ 987 /*#__PURE__*/ _jsxDEV("select", { 988 name: "state", 989 value: selectedState, 990 onChange: handleStateChange, 991 onFocus: (e)=>{ 992 setIsStateFocused(true); 993 e.currentTarget.parentElement?.classList.add("focused"); 994 }, 995 onBlur: (e)=>{ 996 setIsStateFocused(false); 997 if (!e.currentTarget.value) { 998 e.currentTarget.parentElement?.classList.remove("focused"); 999 } 1000 }, 1001 children: [ 1002 /*#__PURE__*/ _jsxDEV("option", { 1003 value: "", 1004 style: { 1005 display: "none" 1006 } 1007 }, void 0, false, { 1008 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PaymentGateway.tsx", 1009 lineNumber: 1113, 1010 columnNumber: 21 1011 }, this), 1012 isStateFocused && /*#__PURE__*/ _jsxDEV("option", { 1013 value: "", 1014 disabled: true, 1015 children: "Select State" 1016 }, void 0, false, { 1017 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PaymentGateway.tsx", 1018 lineNumber: 1115, 1019 columnNumber: 23 1020 }, this), 1021 states.map((state)=>/*#__PURE__*/ _jsxDEV("option", { 1022 value: state.value, 1023 children: state.label 1024 }, state.value, false, { 1025 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PaymentGateway.tsx", 1026 lineNumber: 1120, 1027 columnNumber: 23 1028 }, this)) 1029 ] 1030 }, void 0, true, { 1031 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PaymentGateway.tsx", 1032 lineNumber: 1096, 1033 columnNumber: 19 1034 }, this), 1035 /*#__PURE__*/ _jsxDEV("label", { 1036 className: "floating-label-dd", 1037 children: [ 1038 "Select State", 1039 /*#__PURE__*/ _jsxDEV("span", { 1040 style: { 1041 color: "red" 1042 }, 1043 children: "*" 1044 }, void 0, false, { 1045 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PaymentGateway.tsx", 1046 lineNumber: 1126, 1047 columnNumber: 33 1048 }, this) 1049 ] 1050 }, void 0, true, { 1051 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PaymentGateway.tsx", 1052 lineNumber: 1125, 1053 columnNumber: 19 1054 }, this), 1055 errors.state && /*#__PURE__*/ _jsxDEV("p", { 1056 style: { 1057 color: "red", 1058 margin: 0 1059 }, 1060 children: errors.state 1061 }, void 0, false, { 1062 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PaymentGateway.tsx", 1063 lineNumber: 1129, 1064 columnNumber: 21 1065 }, this) 1066 ] 1067 }, void 0, true, { 1068 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PaymentGateway.tsx", 1069 lineNumber: 1090, 1070 columnNumber: 17 1071 }, this), 1072 /*#__PURE__*/ _jsxDEV("div", { 1073 style: { 1074 flex: "1 0 30%", 1075 minWidth: "200px" 1076 }, 1077 className: `input-container ${selectedCity ? "focused" : ""}`, 1078 children: [ 1079 /*#__PURE__*/ _jsxDEV("select", { 1080 name: "city", 1081 value: selectedCity, 1082 onChange: handleCityChange, 1083 onFocus: (e)=>{ 1084 setIsCityFocused(true); 1085 e.currentTarget.parentElement?.classList.add("focused"); 1086 }, 1087 onBlur: (e)=>{ 1088 setIsCityFocused(false); 1089 if (!e.currentTarget.value) { 1090 e.currentTarget.parentElement?.classList.remove("focused"); 1091 } 1092 }, 1093 children: [ 1094 /*#__PURE__*/ _jsxDEV("option", { 1095 value: "", 1096 style: { 1097 display: "none" 1098 } 1099 }, void 0, false, { 1100 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PaymentGateway.tsx", 1101 lineNumber: 1155, 1102 columnNumber: 21 1103 }, this), 1104 isCityFocused && /*#__PURE__*/ _jsxDEV("option", { 1105 value: "", 1106 disabled: true, 1107 children: "Select City" 1108 }, void 0, false, { 1109 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PaymentGateway.tsx", 1110 lineNumber: 1157, 1111 columnNumber: 23 1112 }, this), 1113 cities.map((city)=>/*#__PURE__*/ _jsxDEV("option", { 1114 value: city.value, 1115 children: city.label 1116 }, city.value, false, { 1117 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PaymentGateway.tsx", 1118 lineNumber: 1162, 1119 columnNumber: 23 1120 }, this)) 1121 ] 1122 }, void 0, true, { 1123 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PaymentGateway.tsx", 1124 lineNumber: 1138, 1125 columnNumber: 19 1126 }, this), 1127 /*#__PURE__*/ _jsxDEV("label", { 1128 className: "floating-label-dd", 1129 children: [ 1130 "Select City", 1131 /*#__PURE__*/ _jsxDEV("span", { 1132 style: { 1133 color: "red" 1134 }, 1135 children: "*" 1136 }, void 0, false, { 1137 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PaymentGateway.tsx", 1138 lineNumber: 1168, 1139 columnNumber: 32 1140 }, this) 1141 ] 1142 }, void 0, true, { 1143 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PaymentGateway.tsx", 1144 lineNumber: 1167, 1145 columnNumber: 19 1146 }, this), 1147 errors.city && /*#__PURE__*/ _jsxDEV("p", { 1148 style: { 1149 color: "red", 1150 margin: 0 1151 }, 1152 children: errors.city 1153 }, void 0, false, { 1154
1154 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PaymentGateway.tsx", 1155 lineNumber: 1171, 1156 columnNumber: 21 1157 }, this) 1158 ] 1159 }, void 0, true, { 1160 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PaymentGateway.tsx", 1161 lineNumber: 1134, 1162 columnNumber: 17 1163 }, this), 1164 /*#__PURE__*/ _jsxDEV("div", { 1165 style: { 1166 flex: "1 0 30%", 1167 minWidth: "200px" 1168 }, 1169 className: `input-container ${formData.zipCode ? "filled" : ""}`, 1170 children: [ 1171 /*#__PURE__*/ _jsxDEV("input", { 1172 type: "text", 1173 name: "zipCode", 1174 value: formData.zipCode, 1175 onChange: handleChange, 1176 onFocus: (e)=>e.currentTarget.parentElement?.classList.add("focused"), 1177 onBlur: (e)=>{ 1178 if (!e.currentTarget.value) { 1179 e.currentTarget.parentElement?.classList.remove("focused"); 1180 } 1181 }, 1182 className: "floating-input", 1183 style: { 1184 width: "100%", 1185 padding: "12px 8px 4px 8px" 1186 }, 1187 maxLength: 15 1188 }, void 0, false, { 1189 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PaymentGateway.tsx", 1190 lineNumber: 1182, 1191 columnNumber: 19 1192 }, this), 1193 /*#__PURE__*/ _jsxDEV("label", { 1194 className: "floating-label", 1195 children: [ 1196 "Zip Code", 1197 /*#__PURE__*/ _jsxDEV("span", { 1198 style: { 1199 color: "red" 1200 }, 1201 children: "*" 1202 }, void 0, false, { 1203 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PaymentGateway.tsx", 1204 lineNumber: 1202, 1205 columnNumber: 29 1206 }, this) 1207 ] 1208 }, void 0, true, { 1209 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PaymentGateway.tsx", 1210 lineNumber: 1201, 1211 columnNumber: 19 1212 }, this), 1213 errors.zipCode && /*#__PURE__*/ _jsxDEV("p", { 1214 style: { 1215 color: "red", 1216 margin: 0 1217 }, 1218 children: errors.zipCode 1219 }, void 0, false, { 1220 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PaymentGateway.tsx", 1221 lineNumber: 1205, 1222 columnNumber: 21 1223 }, this) 1224 ] 1225 }, void 0, true, { 1226 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PaymentGateway.tsx", 1227 lineNumber: 1176, 1228 columnNumber: 17 1229 }, this) 1230 ] 1231 }, void 0, true, { 1232 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PaymentGateway.tsx", 1233 lineNumber: 979, 1234 columnNumber: 15 1235 }, this) 1236 }, void 0, false, { 1237 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PaymentGateway.tsx", 1238 lineNumber: 978, 1239 columnNumber: 13 1240 }, this), 1241 step === 1 && (OpenBill || OpenBillForm) && /*#__PURE__*/ _jsxDEV("div", { 1242 className: "cus_btns_set my-3", 1243 children: /*#__PURE__*/ _jsxDEV("button", { 1244 onClick: handleNext, 1245 className: "cus_continue_btn_s", 1246 children: OpenBillForm ? 'Save And Continue' : 'Continue' 1247 }, void 0, false, { 1248 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PaymentGateway.tsx", 1249 lineNumber: 1214, 1250 columnNumber: 17 1251 }, this) 1252 }, void 0, false, { 1253 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PaymentGateway.tsx", 1254 lineNumber: 1213, 1255 columnNumber: 13 1256 }, this), 1257 step === 2 && /*#__PURE__*/ _jsxDEV(_Fragment, { 1258 children: /*#__PURE__*/ _jsxDEV("div", { 1259 children: [ 1260 choosedPlan && /*#__PURE__*/ _jsxDEV("div", { 1261 className: "cus_m_yearly_labels", 1262 children: [ 1263 /*#__PURE__*/ _jsxDEV("label", { 1264 children: [ 1265 /*#__PURE__*/ _jsxDEV("input", { 1266 type: "radio", 1267 name: "plan", 1268 value: "monthly", 1269 checked: seletedPlan_ === "monthly", 1270 onChange: ()=>handlePlanChange(monthlyPlan?.priceId, "monthly") 1271 }, void 0, false, { 1272 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PaymentGateway.tsx", 1273 lineNumber: 1226, 1274 columnNumber: 23 1275 }, this), 1276 " ", 1277 "Monthly" 1278 ] 1279 }, void 0, true, { 1280 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PaymentGateway.tsx", 1281 lineNumber: 1225, 1282 columnNumber: 21 1283 }, this), 1284 /*#__PURE__*/ _jsxDEV("br", {}, void 0, false, { 1285 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PaymentGateway.tsx", 1286 lineNumber: 1237, 1287 columnNumber: 21 1288 }, this), 1289 /*#__PURE__*/ _jsxDEV("label", { 1290 children: [ 1291 /*#__PURE__*/ _jsxDEV("input", { 1292 type: "radio", 1293 name: "plan", 1294 value: "yearly", 1295 checked: seletedPlan_ === "yearly", 1296 onChange: ()=>handlePlanChange(yearlyPlan?.priceId, "yearly") 1297 }, void 0, false, { 1298 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PaymentGateway.tsx", 1299 lineNumber: 1239, 1300 columnNumber: 23 1301 }, this), 1302 " ", 1303 "Yearly" 1304 ] 1305 }, void 0, true, { 1306 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PaymentGateway.tsx", 1307 lineNumber: 1238, 1308 columnNumber: 21 1309 }, this) 1310 ] 1311 }, void 0, true, { 1312 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PaymentGateway.tsx", 1313 lineNumber: 1224, 1314 columnNumber: 19 1315 }, this), 1316 seletedPlan_ === "monthly" && /*#__PURE__*/ _jsxDEV(PaymentGateWayMonth, { 1317 userCartDetails: UserCartDetails 1318 }, void 0, false, { 1319 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PaymentGateway.tsx", 1320 lineNumber: 1254, 1321 columnNumber: 19 1322 }, this), 1323 seletedPlan_ === "yearly" && /*#__PURE__*/ _jsxDEV(PaymentGateWayYear, { 1324 userCartDetails: UserCartDetails 1325 }, void 0, false, { 1326 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PaymentGateway.tsx", 1327 lineNumber: 1257, 1328 columnNumber: 19 1329 }, this), 1330 /*#__PURE__*/ _jsxDEV("div", { 1331 className: "cus_btns_set", 1332 children: [ 1333 /*#__PURE__*/ _jsxDEV("button", { 1334 onClick: handleBack, 1335 className: "back_btn_pg", 1336 children: "Back" 1337 }, void 0, false, { 1338 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PaymentGateway.tsx", 1339 lineNumber: 1261, 1340 columnNumber: 19 1341 }, this), 1342 /*#__PURE__*/ _jsxDEV("button", { 1343 onClick: handlePayment, 1344 style: { 1345 marginLeft: 10 1346 }, 1347 className: "cus_continue_btn_s", 1348 children: "Continue" 1349 }, void 0, false, { 1350 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PaymentGateway.tsx", 1351 lineNumber: 1264, 1352 columnNumber: 19 1353 }, this) 1354 ] 1355 }, void 0, true, { 1356 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PaymentGateway.tsx", 1357 lineNumber: 1260, 1358 columnNumber: 17 1359 }, this) 1360 ] 1361 }, void 0, true, { 1362 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PaymentGateway.tsx", 1363 lineNumber: 1222, 1364 columnNumber: 15 1365 }, this) 1366 }, void 0, false), 1367 step === 3 && /*#__PURE__*/ _jsxDEV("div", { 1368 children: /*#__PURE__*/ _jsxDEV("div", { 1369 className: "card cus_success_card", 1370 children: [ 1371 /*#__PURE__*/ _jsxDEV("p", { 1372 className: "py-success-head", 1373 children: "Payment Successful" 1374 }, void 0, false, { 1375 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PaymentGateway.tsx", 1376 lineNumber: 1278, 1377 columnNumber: 17 1378 }, this), 1379 /*#__PURE__*/ _jsxDEV("img", { 1380 alt: "cookie", 1381 src: toAbsoluteUrl("media/misc/paymentsuccess.png"), 1382 className: "ssf-msg-to-jim-tick_c" 1383 }, void 0, false, { 1384 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PaymentGateway.tsx", 1385 lineNumber: 1279, 1386 columnNumber: 17 1387 }, this), 1388 /*#__PURE__*/ _jsxDEV("div", { 1389 className: "cus_msg_pc_info", 1390 children: [ 1391 /*#__PURE__*/ _jsxDEV("div", { 1392 children: "Your Six Sigma Funnels" 1393 }, void 0, false, { 1394 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PaymentGateway.tsx", 1395 lineNumber: 1294, 1396 columnNumber: 17 1397 }, this), 1398 /*#__PURE__*/ _jsxDEV("div", { 1399 children: "Subscription is Now Active." 1400 }, void 0, false, { 1401 fileName: "/data/sixsig
1401ma/six-sigma-ui/src/app/pages/dashboard/PaymentGateway.tsx", 1402 lineNumber: 1295, 1403 columnNumber: 17 1404 }, this) 1405 ] 1406 }, void 0, true, { 1407 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PaymentGateway.tsx", 1408 lineNumber: 1293, 1409 columnNumber: 17 1410 }, this), 1411 /*#__PURE__*/ _jsxDEV("a", { 1412 href: portalUrl + `/${CUREENT_COMPANY_NAME}/checklist`, 1413 className: "view_dashboard_btn", 1414 children: "Start Connecting" 1415 }, void 0, false, { 1416 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PaymentGateway.tsx", 1417 lineNumber: 1300, 1418 columnNumber: 17 1419 }, this) 1420 ] 1421 }, void 0, true, { 1422 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PaymentGateway.tsx", 1423 lineNumber: 1277, 1424 columnNumber: 15 1425 }, this) 1426 }, void 0, false, { 1427 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PaymentGateway.tsx", 1428 lineNumber: 1276, 1429 columnNumber: 13 1430 }, this) 1431 ] 1432 }, void 0, true, { 1433 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PaymentGateway.tsx", 1434 lineNumber: 856, 1435 columnNumber: 9 1436 }, this) 1437 }, void 0, false, { 1438 fileName: "/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PaymentGateway.tsx", 1439 lineNumber: 855, 1440 columnNumber: 7 1441 }, this) 1442 }, void 0, false); 1443}; 1444_s(PaymentGateway, "mpGtqy3EBqTQEHlwHMEWKMJWzYY=", false, function() { 1445 return [ 1446 useSearchParams, 1447 useAuth, 1448 useLocation 1449 ]; 1450}); 1451_c = PaymentGateway; 1452export default PaymentGateway; 1453var _c; 1454$RefreshReg$(_c, "PaymentGateway"); 1455 1456 1457window.$RefreshReg$ = prevRefreshReg; 1458window.$RefreshSig$ = prevRefreshSig; 1459 1460RefreshRuntime.__hmr_import(import.meta.url).then((currentExports) => { 1461 RefreshRuntime.registerExportsForReactRefresh("/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PaymentGateway.tsx", currentExports); 1462 import.meta.hot.accept((nextExports) => { 1463 if (!nextExports) return; 1464 const invalidateMessage = RefreshRuntime.validateRefreshBoundaryAndEnqueueUpdate("/data/sixsigma/six-sigma-ui/src/app/pages/dashboard/PaymentGateway.tsx", currentExports, nextExports); 1465 if (invalidateMessage) import.meta.hot.invalidate(invalidateMessage); 1466 }); 1467}); 1468 1469//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlBheW1lbnRHYXRld2F5LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsIHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlTG9jYXRpb24sIHVzZVNlYXJjaFBhcmFtcyB9IGZyb20gXCJyZWFjdC1yb3V0ZXItZG9tXCI7XG5pbXBvcnQgeyBDb250ZW50IH0gZnJvbSBcIi4uLy4uLy4uL2NvbmZpZy9sYXlvdXQvY29tcG9uZW50cy9Db250ZW50XCI7XG5pbXBvcnQgUGF5bWVudEdhdGVXYXlNb250aCBmcm9tIFwiLi9jb21wb25lbnRzL1BheW1lbnRHYXRlV2F5TW9udGhcIjtcbmltcG9ydCBQYXltZW50R2F0ZVdheVllYXIgZnJvbSBcIi4vY29tcG9uZW50cy9QYXltZW50R2F0ZVdheVllYXJcIjtcbmltcG9ydCBcIi4vY3NzL3BheW1lbnRHYXRld2F5LmNzc1wiO1xuaW1wb3J0IHsgbG9jYXRpb25EYXRhIH0gZnJvbSBcIi4vbG9jYXRpb25EYXRhXCI7XG5pbXBvcnQgeyB0b0Fic29sdXRlVXJsIH0gZnJvbSBcIi4uLy4uLy4uL2NvbmZpZy9oZWxwZXJzXCI7XG5pbXBvcnQge1xuICBDUkVBVEVfU1VCU0NSSVBUSU9OLFxuICBDVVJFRU5UX0NPTVBBTllfTkFNRSxcbiAgR0VUX0FMTF9TVUJTQ1JJUFRJT05QTEFOUyxcbiAgR0VUX0FMTF9VU0VSQUREUkVTUyxcbiAgR0VUX09SREVSLFxuICBQT1NUX0NSRUFURV9DSEVDS09VVF9TRVNTSU9OLFxuICBQT1NUX0NSRUFURV9VU0VSX0FERFJFU1MsXG4gIFJFR0VYX05PX05VTUJFUl9PUl9TUEVDSUFMLFxuICBSRUdFWF9OT19TUEFDRVMsXG4gIFJFR0VYX0VNQUlMXG59IGZyb20gXCIuLi8uLi9Db25zdGFudHNcIjtcbmltcG9ydCBheGlvcyBmcm9tIFwiYXhpb3NcIjtcbmltcG9ydCB7
1469IG51bWJlciB9IGZyb20gXCJ5dXBcIjtcbmltcG9ydCB7XG4gIGRpc2FibGVQYXltZW50U3BsYXNoU2NyZWVuLFxuICBkaXNhYmxlU3BsYXNoU2NyZWVuLFxuICBlbmFibGVQYXltZW50U3BsYXNoU2NyZWVuLFxuICBlbmFibGVTcGxhc2hTY3JlZW4sXG59IGZyb20gXCIuLi9jb21tb24vQ29tbW9uVXRpbGl0aWVzXCI7XG5pbXBvcnQgeyB1c2VBdXRoIH0gZnJvbSBcIi4uLy4uL21vZHVsZXMvYXV0aFwiO1xuaW1wb3J0IHsganNvbiB9IGZyb20gXCJzdHJlYW0vY29uc3VtZXJzXCI7XG5pbXBvcnQgU3dhbCBmcm9tIFwic3dlZXRhbGVydDJcIjtcblxudHlwZSBGb3JtRGF0YVR5cGUgPSB7XG4gIGZpcnN0TmFtZTogc3RyaW5nO1xuICBsYXN0TmFtZTogc3RyaW5nO1xuICBlbWFpbDogc3RyaW5nO1xuICBjb3VudHJ5OiBzdHJpbmc7XG4gIHN0YXRlOiBzdHJpbmc7XG4gIGNpdHk6IHN0cmluZztcbiAgemlwQ29kZTogc3RyaW5nO1xuICBhZGRyZXNzTGluZTE6IHN0cmluZztcbiAgYWRkcmVzc0xpbmUyOiBzdHJpbmc7XG59O1xuXG5pbnRlcmZhY2UgU3RyaXBlUmVzcG9uc2Uge1xuICBzdGF0dXM6IHN0cmluZztcbiAgbWVzc2FnZTogc3RyaW5nO1xuICBzZXNzaW9uSWQ/OiBzdHJpbmc7XG4gIHNlc3Npb25Vcmw/OiBzdHJpbmc7XG4gIHN1YnNjcmlwdGlvbklkPzogc3RyaW5nO1xufVxuXG4vL09yZGVyXG5pbnRlcmZhY2UgVXNlckNhcnREZXRhaWxzIHtcbiAgb3JkZXJJZDogbnVtYmVyO1xuICB1c2VySWQ6IG51bWJlcjtcbiAgaXRlbUlkOiBudW1iZXI7XG4gIHBsYW5JZDogbnVtYmVyO1xuICBuYW1lOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIHBsYW5UeXBlOiBzdHJpbmc7XG4gIGJpbGxpbmdQZXJpb2Q6IHN0cmluZztcbiAgYmlsbGluZ0ludGVydmFsOiBudW1iZXI7XG4gIHJlbmV3YWxQZXJpb2Q6IG51bWJlcjtcbiAgcmVuZXdhbFVuaXQ6IHN0cmluZztcbiAgYmFzZVByaWNlOiBudW1iZXI7XG4gIHNlbGxQcmljZTogbnVtYmVyO1xuICBhY3RpdmU6IGJvb2xlYW47XG4gIGZlYXR1cmVzOiBzdHJpbmc7XG59XG5cbi8vcGF5bWVudCBTdGF0ZSBSZWxhdGVkIGRhdGEuXG50eXBlIFBheW1lbnRTdGF0ZSA9IHtcbiAgb3JkZXJJZDogc3RyaW5nO1xuICBwcmljZUlkOiBzdHJpbmc7XG4gIHBsYW46IHN0cmluZztcbiAgcGxhbl90eXBlOiBzdHJpbmc7XG59O1xuXG4vL3N1YnNjcmlwdGlvblxuaW50ZXJmYWNlIFN1YnNjcmlwdGlvblBsYW5EZXRhaWxzIHtcbiAgaWQ6IG51bWJlcjtcbiAgdXVJZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIGJpbGxpbmdJbnRlcnZhbDogbnVtYmVyO1xuICBiYXNlUHJpY2U6IHN0cmluZztcbiAgc2VsbFByaWNlOiBudW1iZXI7XG4gIGZlYXR1cmVzOiBzdHJpbmc7XG4gIHByb2R1Y3RJZDogc3RyaW5nO1xuICBwcmljZUlkOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSB1c2VyQWRkcmVzc2RhdGEge1xuICBhZGRyZXNzTGluZTE6IHN0cmluZztcbiAgYWRkcmVzc0xpbmUyOiBzdHJpbmc7XG4gIGNvdW50cnk6IHN0cmluZztcbiAgcGhvbmU6IHN0cmluZztcbiAgY29udGFjdE5hbWU6IHN0cmluZztcbiAgcG9zdGFsQ29kZTogc3RyaW5nO1xuICBhZGRyZXNzSWQ6IHN0cmluZztcbiAgc3RhdGU6c3RyaW5nO1xuICBjaXR5OnN0cmluZztcbn1cbmNvbnN0IGluaXRpYWxGb3JtRGF0YTogRm9ybURhdGFUeXBlID0ge1xuICBmaXJzdE5hbWU6IFwiXCIsXG4gIGxhc3ROYW1lOiBcIlwiLFxuICBlbWFpbDogXCJcIixcbiAgY291bnRyeTogXCJcIixcbiAgc3RhdGU6IFwiXCIsXG4gIGNpdHk6IFwiXCIsXG4gIHppcENvZGU6IFwiXCIsXG4gIGFkZHJlc3NMaW5lMTogXCJcIixcbiAgYWRkcmVzc0xpbmUyOiBcIlwiLFxufTtcblxudHlwZSBFcnJvclR5cGUgPSBQYXJ0aWFsPFJlY29yZDxrZXlvZiBGb3JtRGF0YVR5cGUsIHN0cmluZz4+O1xuXG5jb25zdCBQYXltZW50R2F0ZXdheTogUmVhY3QuRkMgPSAoKSA9PiB7XG4gIGNvbnN0IFtzdGVwLCBzZXRTdGVwXSA9IHVzZVN0YXRlPG51bWJlcj4oMyk7XG4gIGNvbnN0IFthdmFpbGFibGVTdGF0ZXMsIHNldEF2YWlsYWJsZVN0YXRlc10gPSB1c2VTdGF0ZTxzdHJpbmdbXT4oW10pO1xuICBjb25zdCBbYXZhaWxhYmxlQ2l0aWVzLCBzZXRBdmFpbGFibGVDaXRpZXNdID0gdXNlU3RhdGU8c3RyaW5nW10+KFtdKTtcbiAgY29uc3QgW3NhdmVkRW1haWwsIHNldFNhdmVkRW1haWxdID0gdXNlU3RhdGU8c3RyaW5nPihcIlwiKTtcbiAgY29uc3QgW2Vycm9ycywgc2V0RXJyb3JzXSA9IHVzZVN0YXRlPEVycm9yVHlwZT4oe30pO1xuICBjb25zdCBbdmlzaXRlZFN0ZXBzLCBzZXRWaXNpdGVkU3RlcHNdID0gdXNlU3RhdGU8bnVtYmVyW10+KFsxXSk7XG4gIGNvbnN0IFtzZWFyY2hQYXJhbXNdID0gdXNlU2VhcmNoUGFyYW1zKCk7XG4gIGNvbnN0IFtjaG9vc2VkUGxhbiwgc2V0Q2hvb3NlZFBsYW5dID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbc2VsZXRlZFBsYW5fLCBzZXRTZWxldGVkUGxhbl9dID0gdXNlU3RhdGU8c3RyaW5nPihcIlwiKTtcbiAgY29uc3QgeyBjdXJyZW50VXNlciwgc2V0Q3VycmVudFVzZXIgfSA9IHVzZUF1dGgoKTtcbiAgY29uc3QgW29yZGVySWQsIHNldE9yZGVySWRdID0gdXNlU3RhdGU8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IFtVc2VyQ2FydERldGFpbHMsIHNldFVzZXJDYXJ0RGV0YWlsc10gPVxuICAgIHVzZVN0YXRlPFVzZXJDYXJ0RGV0YWlscyB8IG51bGw+KG51bGwpO1xuICBjb25zdCBbcHJpY2VJZCwgc2V0UHJpY2VJZF0gPSB1c2VTdGF0ZTxTdHJpbmcgfCBudWxsPihudWxsKTtcbiAgY29uc3QgW3N0YXR1cywgc2V0U3RhdHVzXSA9IHVzZVN0YXRlPFN0cmluZyB8IG51bGw+KG51bGwpO1xuICBjb25zdCBsb2NhdGlvbiA9IHVzZUxvY2F0aW9uKCk7XG4gIGNvbnN0IFtmbGFnLHNldEZsYWddPXVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3Qgc3RhdGUgPSBsb2NhdGlvbi5zdGF0ZSBhcyBQYXltZW50U3RhdGU7XG4gIGNvbnN0IFtjb3Vwb25Db2RlLHNldENvdXBvbkNvZGVdPXVzZVN0YXRlPHN0cmluZ3xudWxsPihudWxsKTtcblxuICBsZXQgcG9ydGFsVXJsID0gd2luZG93LmxvY2F0aW9uLm9yaWdpbjtcblxuICBjb25zdCBbc3Vic2NyaXB0aW9uUGxhbkRldGFpbHMsIHNldFN1YnNjcmlwdGlvblBsYW5EZXRhaWxzXSA9IHVzZVN0YXRlPFxuICAgIFN1YnNjcmlwdGlvblBsYW5EZXRhaWxzW11cbiAgPihbXSk7XG4gIGNvbnN0IFttb250aGx5UGxhbiwgc2V0TW9udGhseVBsYW5dID1cbiAgICB1c2VTdGF0ZTxTdWJzY3JpcHRpb25QbGFuRGV0YWlscyB8IG51bGw+KG51bGwpO1xuICBjb25zdCBbeWVhcmx5UGxhbiwgc2V0WWVhcmx5UGxhbl0gPSB1c2VTdGF0ZTxTdWJzY3JpcHRpb25QbGFuRGV0YWlscyB8IG51bGw+KFxuICAgIG51bGxcbiAgKTtcblxuXG4gIGNvbnN0IFtjb3VudHJpZXMsIHNldENvdW50cmllc10gPSB1c2VTdGF0ZTxcbiAgICB7IGxhYmVsOiBzdHJpbmc7IHZhbHVlOiBzdHJpbmcgfVtdXG4gID4oW10pO1xuICBjb25zdCBbc3RhdGVzLCBzZXRTdGF0ZXNdID0gdXNlU3RhdGU8eyBsYWJlbDogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH1bXT4oW10pO1xuICBjb25zdCBbY2l0aWVzLCBzZXR
1469DaXRpZXNdID0gdXNlU3RhdGU8eyBsYWJlbDogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH1bXT4oW10pO1xuICBjb25zdCBbc2VsZWN0ZWRDb3VudHJ5LCBzZXRTZWxlY3RlZENvdW50cnldID0gdXNlU3RhdGU8YW55PihudWxsKTtcbiAgY29uc3QgW09wZW5CaWxsLCBzZXRPcGVuQmlsbF0gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgY29uc3QgW3NlbGVjdGVkU3RhdGUsIHNldFNlbGVjdGVkU3RhdGVdID0gdXNlU3RhdGU8YW55PihudWxsKTtcbiAgY29uc3QgW3NlbGVjdGVkQ2l0eSwgc2V0U2VsZWN0ZWRDaXR5XSA9IHVzZVN0YXRlPGFueT4obnVsbCk7XG5cbiAgY29uc3QgW2lzQ291bnRyeUZvY3VzZWQsIHNldElzQ291bnRyeUZvY3VzZWRdID0gdXNlU3RhdGU8Ym9vbGVhbj4oZmFsc2UpO1xuICBjb25zdCBbaXNTdGF0ZUZvY3VzZWQsIHNldElzU3RhdGVGb2N1c2VkXSA9IHVzZVN0YXRlPGJvb2xlYW4+KGZhbHNlKTtcbiAgY29uc3QgW2lzQ2l0eUZvY3VzZWQsIHNldElzQ2l0eUZvY3VzZWRdID0gdXNlU3RhdGU8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIGNvbnN0IFt1c2VyQWRkcmVzcywgc2V0VXNlckFkZHJlc3NdID0gdXNlU3RhdGU8dXNlckFkZHJlc3NkYXRhW10+KFtdKTtcbiAgY29uc3QgW3NlbGVjdGVkQWRkcmVzc0luZGV4LCBzZXRTZWxlY3RlZEFkZHJlc3NJbmRleF0gPSB1c2VTdGF0ZTxcbiAgICBzdHJpbmcgfCBudWxsXG4gID4oXCJcIik7XG4gIGNvbnN0IFtsYXN0U2VsZWN0ZWRBZGRyZXNzSW5kZXgsIHNldExhc3RTZWxlY3RlZEFkZHJlc3NJbmRleF0gPSB1c2VTdGF0ZTxcbiAgICBzdHJpbmcgfCBudWxsXG4gID4oXCJcIik7XG4gICBjb25zdCBbYmFja0J0bkZsYWcsIHNldEJhY2tCdG5GbGFnXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW09wZW5CaWxsRm9ybSwgc2V0T3BlbkJpbGxGb3JtXSA9IHVzZVN0YXRlKHRydWUpO1xuXG4gXG5cbiAgY29uc3QgW29wZW5mb3JtLCBzZXRvcGVuZm9ybV0gPSB1c2VTdGF0ZShmYWxzZSk7XG5jb25zdCBbZm9ybURhdGEsIHNldEZvcm1EYXRhXSA9IHVzZVN0YXRlPEZvcm1EYXRhVHlwZT4oaW5pdGlhbEZvcm1EYXRhKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8vY29uc3QgbG9jYXRpb24gPSB1c2VMb2NhdGlvbigpO1xuICAgIGNvbnN0IHF1ZXJ5UGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhsb2NhdGlvbi5zZWFyY2gpO1xuICAgIGNvbnN0IHNlbGVjdGVkUGxhbiA9IHF1ZXJ5UGFyYW1zLmdldChcInBsYW5cIik7XG4gICAgY29uc3QgcGxhblR5cGUgPSBxdWVyeVBhcmFtcy5nZXQoXCJwbGFuVHlwZVwiKTtcbiAgICBzZXRPcmRlcklkKHF1ZXJ5UGFyYW1zLmdldChcIm9yZGVySWRcIikpO1xuICAgIHNldFByaWNlSWQocXVlcnlQYXJhbXMuZ2V0KFwicHJpY2VJZFwiKSk7XG4gICAgc2V0U2VsZXRlZFBsYW5fKHNlbGVjdGVkUGxhbiA/IHNlbGVjdGVkUGxhbiA6IFwiXCIpO1xuXG4gICAgc2V0U3RhdHVzKHF1ZXJ5UGFyYW1zLmdldChcInN0YXR1c1wiKSk7XG4gICAgaWYgKHBsYW5UeXBlID09PSBcIm11bHRpcGxlXCIpIHtcbiAgICAgIHNldENob29zZWRQbGFuKHRydWUpO1xuICAgIH1cblxuICAgIC8vY29sbGVjdGluZyB0aGUgdHlwZXMgb2Ygc3Vic2NyaXB0aW9uIHBsYW5zXG4gICAgZ2V0U3Vic2NyaXB0aW9uUGxhbkRldGFpbHMoKTtcbiAgfSwgW10pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc29sZS5sb2coXCJDb2xsZWN0aW5nIHRoZSB5ZWFybHkgJiBNb250aGx5IHBsYW4gb25seVwiKTtcbiAgICBnZXRQbGFuRGV0YWlsc0J5U2VsbFByaWNlKHN1YnNjcmlwdGlvblBsYW5EZXRhaWxzKTtcbiAgfSwgW3N1YnNjcmlwdGlvblBsYW5EZXRhaWxzXSk7XG5cbiAgLy8gdXNlRWZmZWN0KCgpID0+IHtcbiAgLy8gLy9BZnRlciBjaGVja291dCBwYWdlLlxuICAvLyBjb25zdCBxdWVyeVBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMobG9jYXRpb24uc2VhcmNoKTtcbiAgLy8gc2V0U3RhdHVzKHF1ZXJ5UGFyYW1zLmdldChcInN0YXR1c1wiKSk7XG5cbiAgLy8gfSwgW10pO1xuXG4gIC8vIHVzZUVmZmVjdCgoKSA9PiB7XG4gIC8vICAgY29uc29sZS5sb2coXCJSZWNlaXZlZCBzdGF0ZSBpbiBQYXltZW50R2F0ZXdheTogXCIsIHN0YXRlKTtcbiAgLy8gICBjb25zb2xlLmxvZyhzdGF0ZT8ub3JkZXJJZCwgc3RhdGU/LnByaWNlSWQsIHN0YXRlPy5wbGFuKTtcblxuICAvLyAgIGlmIChzdGF0ZSkge1xuICAvLyAgICAgc2V0U2VsZXRlZFBsYW5fKHN0YXRlPy5wbGFuKTtcbiAgLy8gICAgIHNldE9yZGVySWQoc3RhdGU/Lm9yZGVySWQpO1xuICAvLyAgICAgc2V0UHJpY2VJZChzdGF0ZT8ucHJpY2VJZCk7XG4gIC8vICAgfVxuXG4gIC8vICAgaWYoc3RhdGU/LnBsYW5fdHlwZT09PVwibXVsdGlwbGVcIil7XG4gIC8vICAgICBzZXRDaG9vc2VkUGxhbih0cnVlKTtcbiAgLy8gICB9XG5cbiAgLy8gfSwgW3N0YXRlXSk7XG5cbiAgYXN5bmMgZnVuY3Rpb24gZ2V0U3Vic2NyaXB0aW9uUGxhbkRldGFpbHMoKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYXhpb3MuZ2V0KFxuICAgICAgICBHRVRfQUxMX1NVQlNDUklQVElPTlBMQU5TKENVUkVFTlRfQ09NUEFOWV9OQU1FKVxuICAgICAgKTtcbiAgICAgIGNvbnNvbGUubG9nKFwicmVzcG5zZSBzdGF0dXMgY29kZSAuLlwiICsgcmVzcG9uc2Uuc3RhdHVzKTtcbiAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gMjAwKSB7XG4gICAgICAgIHNldFN1YnNjcmlwdGlvblBsYW5EZXRhaWxzKHJlc3BvbnNlLmRhdGEpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvciAuLi5cIiArIGUpO1xuICAgIH1cbiAgfVxuICAgLy8gRmV0Y2ggY291bnRyaWVzIGZyb20gcmVzdGNvdW50cmllcy5jb20gQVBJXG4vLyAgIHVzZUVmZmVjdCgoKSA9PiB7XG4vLyAgIGNvbnN0IGZldGNoQ291bnRyaWVzID0gYXN5bmMgKCkgPT4ge1xuLy8gICAgIC8vIGVuYWJsZVNwbGFzaFNjcmVlbigpOyAvLyBTaG93IHNwbGFzaC9sb2FkaW5nIGluZGljYXRvclxuXG4vLyAgICAgdHJ5IHtcbi8vICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYXhpb3MuZ2V0KFwiaHR0cHM6Ly9jb3VudHJpZXNub3cuc3BhY2UvYXBpL3YwLjEvY291bnRyaWVzL3Bvc2l0aW9uc1wiKTtcbi8vICAgICAgICAgY29uc3QgY291bnRyeU9wdGlvbnMgPSByZXNwb25zZS5kYXRhLmRhdGEubWFwKChjb3VudHJ5OiBhbnkpID0+ICh7XG4vLyAgICAgICAgICAgbGFiZWw6IGNvdW50cnkubmFtZSxcbi8vICAgICAgICAgdmFsdWU6IGNvdW50cnkubmFtZSxcbi8vICAgICAgICAgfSkpO1xuLy8gICAgICAgICBzZXRDb3VudHJpZXMoY291bnRyeU9wdGlvbnMpO1xuLy8gICAgI
1469H0gY2F0Y2ggKGVycm9yKSB7XG4vLyAgICAgICBjb25zb2xlLmVycm9yKFwiRXJyb3IgZmV0Y2hpbmcgY291bnRyaWVzOlwiLCBlcnJvcik7XG4vLyAgICAgfSBmaW5hbGx5IHtcbi8vICAgICAgIC8vIGRpc2FibGVTcGxhc2hTY3JlZW4oKTsgLy8gSGlkZSBzcGxhc2gvbG9hZGluZyBpbmRpY2F0b3Jcbi8vICAgICB9XG4vLyAgIH07XG5cbi8vICAgZmV0Y2hDb3VudHJpZXMoKTtcbi8vIH0sIFtdKTtcblxuICAvL0ZpbHRlcmluZyB0aGUgeWVhcmx5ICYgbW9udGhseSBwbGFucyBvbmx5XG4gIGNvbnN0IGdldFBsYW5EZXRhaWxzQnlTZWxsUHJpY2UgPSAocGxhbnM6IFN1YnNjcmlwdGlvblBsYW5EZXRhaWxzW10pID0+IHtcbiAgICBjb25zdCBtYXRjaGVkTW9udGhseVBsYW4gPSBwbGFucy5maW5kKChwbGFuKSA9PlxuICAgICAgcGxhbi5uYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoXCJvZmZlclwiKVxuICAgICk7XG5cbiAgICBpZiAobWF0Y2hlZE1vbnRobHlQbGFuKSB7XG4gICAgICBjb25zb2xlLmxvZyhcIk1vbnRobHkgcGxhbiBmb3VuZC4uLlwiKTtcbiAgICAgIHNldE1vbnRobHlQbGFuKG1hdGNoZWRNb250aGx5UGxhbik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUubG9nKFwiTm8gTW9udGhseSBQbGFuIG1hdGNoZWQgdGhlIGdpdmVuIGNvbmRpdGlvbnMuXCIpO1xuICAgIH1cblxuICAgIGNvbnN0IG1hdGNoZWRZZWFybHlQbGFuID0gcGxhbnMuZmluZCgocGxhbikgPT5cbiAgICAgIHBsYW4ubmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKFwieWVhcmx5XCIpXG4gICAgKTtcblxuICAgIGlmIChtYXRjaGVkWWVhcmx5UGxhbikge1xuICAgICAgY29uc29sZS5sb2coXCJZZWFybHkgcGxhbiBmb3VuZC4uLlwiKTtcbiAgICAgIHNldFllYXJseVBsYW4obWF0Y2hlZFllYXJseVBsYW4pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmxvZyhcIk5vIFllYXJseSBQbGFuIG1hdGNoZWQgdGhlIGdpdmVuIGNvbmRpdGlvbnMuXCIpO1xuICAgIH1cbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChvcmRlcklkKSB7XG4gICAgICBnZXRPcmRlcndpdGhQbGFuKHBhcnNlSW50KG9yZGVySWQpKTtcbiAgICB9XG4gIH0sIFtvcmRlcklkXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoc3RhdHVzPy5pbmNsdWRlcyhcInN1Y2Nlc3NcIikpIHtcbiAgICAgIGNvbnN0IHNlc3Npb25PcmRlcklkID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShcIm9yZGVySWRcIik7XG4gICAgICBjb25zb2xlLmxvZyhcIlN0YXR1cyByZWNlaXZlZC4uLlwiICsgc2Vzc2lvbk9yZGVySWQpO1xuICAgICAgaWYgKHNlc3Npb25PcmRlcklkKSB7XG4gICAgICAgIGdldE9yZGVyd2l0aFBsYW4ocGFyc2VJbnQoc2Vzc2lvbk9yZGVySWQpKTtcbiAgICAgICAgc2V0U3RlcCgzKTtcbiAgICAgICAvLyBjcmVhdGVTdWJzY3JpcHRpb24oKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtzdGF0dXNdKTtcblxuICAvL2NvbGxlY3QgdGhlIGN1cnJlbnQgT3JkZXIgZGV0YWlsc1xuICAvLyBhc3luYyBmdW5jdGlvbiBjcmVhdGVTdWJzY3JpcHRpb24oKSB7XG4gIC8vICAgY29uc29sZS5sb2coXCJjYWxsaW5nLi4uY3JlYXRlU3Vic2NyaXB0aW9uXCIpO1xuICAvLyAgIHRyeSB7XG4gIC8vICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGF4aW9zLnBvc3QoXG4gIC8vICAgICAgIENSRUFURV9TVUJTQ1JJUFRJT04oQ1VSRUVOVF9DT01QQU5ZX05BTUUpLFxuICAvLyAgICAgICB7XG4gIC8vICAgICAgICAgb3JkZXJJZDogc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShcIm9yZGVySWRcIiksXG4gIC8vICAgICAgICAgc3RhdHVzOiBcIkFDVElWRVwiLFxuICAvLyAgICAgICAgIERpc2NvdW50UmF0ZTogMC4wLFxuICAvLyAgICAgICB9XG4gIC8vICAgICApO1xuICAvLyAgICAgY29uc29sZS5sb2coXCJyZXNwb25zZSAuLi4uXCIgKyByZXNwb25zZSk7XG4gIC8vICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09IDIwMCkge1xuICAvLyAgICAgfVxuICAvLyAgIH0gY2F0Y2ggKGUpIHtcbiAgLy8gICAgIGNvbnNvbGUubG9nKFwiRXJyb3IuLi4uXCIgKyBlKTtcbiAgLy8gICB9IGZpbmFsbHkge1xuICAvLyAgICAgc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbShcIm9yZGVySWRcIik7XG4gIC8vICAgfVxuICAvLyB9XG5cbiAgLy9jb2xsZWN0IHRoZSBjdXJyZW50IE9yZGVyIGRldGFpbHNcbiAgYXN5bmMgZnVuY3Rpb24gZ2V0T3JkZXJ3aXRoUGxhbihvcmRlcklkOiBudW1iZXIpIHtcbiAgICBjb25zb2xlLmxvZyhcImNhbGxpbmcuLi5nZXRPcmRlcndpdGhQbGFuXCIgKyBvcmRlcklkKTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBheGlvcy5wb3N0KFxuICAgICAgICBHRVRfT1JERVIoQ1VSRUVOVF9DT01QQU5ZX05BTUUpICsgXCI/b3JkZXJJZD1cIiArIG9yZGVySWRcbiAgICAgICk7XG4gICAgICBjb25zb2xlLmxvZyhcInJlc3BvbnNlIC4uLi5cIiArIHJlc3BvbnNlKTtcbiAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gMjAwKSB7XG4gICAgICAgIHNldFVzZXJDYXJ0RGV0YWlscyhyZXNwb25zZS5kYXRhKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLmxvZyhcIkVycm9yLi4uLlwiICsgZSk7XG4gICAgfVxuICB9XG5cbiAgLy9cbiAgY29uc3QgaGFuZGxlQ2hhbmdlID0gKFxuICAgIGU6IFJlYWN0LkNoYW5nZUV2ZW50PEhUTUxJbnB1dEVsZW1lbnQgfCBIVE1MU2VsZWN0RWxlbWVudD5cbiAgKSA9PiB7XG4gICAgY29uc3QgeyBuYW1lLCB2YWx1ZSB9ID0gZS50YXJnZXQ7XG5cbiAgICAgaWYgKG5hbWUgPT09IFwiemlwQ29kZVwiICYmICEvXlxcZCokLy50ZXN0KHZhbHVlKSkge1xuICAgICAgICAgICAgc2V0RXJyb3JzKChwcmV2RXJyb3JzKSA9PiAoe1xuICAgICAgICAgICAgICAgIC4uLnByZXZFcnJvcnMsXG4gICAgICAgICAgICAgICAgemlwQ29kZTogXCJPbmx5IG51bWVyaWMgdmFsdWVzIGFyZSBhbGxvd2VkIGZvciBaaXAgQ29kZVwiLFxuICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgcmV0dXJuOyAvLyBQcmV2ZW50IHVwZGF0aW5nIHRoZSBzdGF0ZSBpZiB0aGUgdmFsdWUgaXMgaW52YWxpZFxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gQ2xlYXIgdGhlIGVycm9yIGlmIHRoZSB2YWx1ZSBpcyB2YWxpZFxuICAgICAgICAgICAgc2V0RXJyb3JzKChwcmV2RXJyb3JzKSA9PiAoe1xuICAgICAgICAgICAgICAgIC4uLnByZXZFcnJvcnMsXG4gICAgICAgICAgICAgICAgemlwQ29kZTogXCJcIixcbiAgICAgICAgICAgI
1469H0pKTtcbiAgICAgICAgfVxuICAgIHNldEZvcm1EYXRhKChwcmV2KSA9PiAoeyAuLi5wcmV2LCBbbmFtZV06IHZhbHVlIH0pKTtcbiAgICBpZiAobmFtZSA9PT0gXCJwbGFuXCIpIHtcbiAgICAgIHNldFNlbGV0ZWRQbGFuXyh2YWx1ZSk7XG4gICAgfVxuXG4gICAgc2V0RXJyb3JzKChwcmV2RXJyb3JzKSA9PiB7XG4gICAgY29uc3QgbmV3RXJyb3JzID0geyAuLi5wcmV2RXJyb3JzIH07XG4gICAgZGVsZXRlIG5ld0Vycm9yc1tuYW1lIGFzIGtleW9mIEZvcm1EYXRhVHlwZV07XG4gICAgcmV0dXJuIG5ld0Vycm9ycztcbiAgfSk7XG5cbiAgICAvLyBpZiAobmFtZSA9PT0gJ2NvdW50cnknKSB7XG4gICAgLy8gICBjb25zdCBjb3VudHJ5ID0gdmFsdWUgYXMga2V5b2YgdHlwZW9mIGxvY2F0aW9uRGF0YTtcbiAgICAvLyAgIHNldEF2YWlsYWJsZVN0YXRlcyhPYmplY3Qua2V5cyhsb2NhdGlvbkRhdGFbY291bnRyeV0gfHwge30pKTsgLy8g4pyFIEFkZCB0aGlzIGxpbmVcbiAgICAvLyAgIHNldEF2YWlsYWJsZUNpdGllcyhbXSk7XG4gICAgLy8gICBzZXRGb3JtRGF0YShwcmV2ID0+ICh7IC4uLnByZXYsIHN0YXRlOiAnJywgY2l0eTogJycgfSkpO1xuICAgIC8vIH1cblxuICAgIC8vIGlmIChuYW1lID09PSAnc3RhdGUnKSB7XG4gICAgLy8gICBjb25zdCBjb3VudHJ5ID0gZm9ybURhdGEuY291bnRyeSBhcyBrZXlvZiB0eXBlb2YgbG9jYXRpb25EYXRhO1xuICAgIC8vICAgY29uc3Qgc3RhdGUgPSB2YWx1ZSBhcyBrZXlvZiAodHlwZW9mIGxvY2F0aW9uRGF0YSlbdHlwZW9mIGNvdW50cnldO1xuICAgIC8vICAgc2V0QXZhaWxhYmxlQ2l0aWVzKGxvY2F0aW9uRGF0YVtjb3VudHJ5XT8uW3N0YXRlXSB8fCBbXSk7XG4gICAgLy8gICBzZXRGb3JtRGF0YShwcmV2ID0+ICh7IC4uLnByZXYsIGNpdHk6ICcnIH0pKTtcbiAgICAvLyB9XG4gICAgLy8gdmFsaWRhdGVTdGVwMSgpO1xuICAgIFxuICB9O1xuXG4gIGNvbnN0IHZhbGlkYXRlU3RlcDEgPSAoKSA9PiB7XG4gICAgbGV0IG5ld0Vycm9yczogRXJyb3JUeXBlID0ge307XG5cbiAgICAvLyBGaXJzdCBOYW1lIFZhbGlkYXRpb25cbiAgICBpZiAoIWZvcm1EYXRhLmZpcnN0TmFtZS50cmltKCkpIHtcbiAgICAgIG5ld0Vycm9ycy5maXJzdE5hbWUgPSBcIkZpcnN0IG5hbWUgaXMgcmVxdWlyZWRcIjtcbiAgICB9IGVsc2UgaWYgKFJFR0VYX05PX05VTUJFUl9PUl9TUEVDSUFMLnRlc3QoZm9ybURhdGEuZmlyc3ROYW1lKSkge1xuICAgICAgbmV3RXJyb3JzLmZpcnN0TmFtZSA9IFwiRmlyc3QgbmFtZSBtdXN0IHN0YXJ0IHdpdGggYSBsZXR0ZXJcIjtcbiAgICB9IGVsc2UgaWYgKGZvcm1EYXRhLmZpcnN0TmFtZS5sZW5ndGggPCAzIHx8IGZvcm1EYXRhLmZpcnN0TmFtZS5sZW5ndGggPiAxNSkge1xuICAgICAgbmV3RXJyb3JzLmZpcnN0TmFtZSA9IFwiRmlyc3QgbmFtZSBtdXN0IGJlIGJldHdlZW4gMyBhbmQgMTUgY2hhcmFjdGVyc1wiO1xuICAgIH0gZWxzZSBpZiAoIVJFR0VYX05PX1NQQUNFUy50ZXN0KGZvcm1EYXRhLmZpcnN0TmFtZSkpIHtcbiAgICAgIG5ld0Vycm9ycy5maXJzdE5hbWUgPSBcIlRoZSBmaXJzdCB0aHJlZSBjaGFyYWN0ZXJzIGNhbm5vdCBiZSBzcGFjZXNcIjtcbiAgICB9XG5cbiAgICAvLyBMYXN0IE5hbWUgVmFsaWRhdGlvblxuICAgIGlmICghZm9ybURhdGEubGFzdE5hbWUudHJpbSgpKSB7XG4gICAgICBuZXdFcnJvcnMubGFzdE5hbWUgPSBcIkxhc3QgbmFtZSBpcyByZXF1aXJlZFwiO1xuICAgIH0gZWxzZSBpZiAoUkVHRVhfTk9fTlVNQkVSX09SX1NQRUNJQUwudGVzdChmb3JtRGF0YS5sYXN0TmFtZSkpIHtcbiAgICAgIG5ld0Vycm9ycy5sYXN0TmFtZSA9IFwiTGFzdCBuYW1lIG11c3Qgc3RhcnQgd2l0aCBhIGxldHRlclwiO1xuICAgIH0gZWxzZSBpZiAoZm9ybURhdGEubGFzdE5hbWUubGVuZ3RoIDwgMyB8fCBmb3JtRGF0YS5sYXN0TmFtZS5sZW5ndGggPiAxNSkge1xuICAgICAgbmV3RXJyb3JzLmxhc3ROYW1lID0gXCJMYXN0IG5hbWUgbXVzdCBiZSBiZXR3ZWVuIDMgYW5kIDE1IGNoYXJhY3RlcnNcIjtcbiAgICB9IGVsc2UgaWYgKCFSRUdFWF9OT19TUEFDRVMudGVzdChmb3JtRGF0YS5sYXN0TmFtZSkpIHtcbiAgICAgIG5ld0Vycm9ycy5sYXN0TmFtZSA9IFwiVGhlIGxhc3QgdGhyZWUgY2hhcmFjdGVycyBjYW5ub3QgYmUgc3BhY2VzXCI7XG4gICAgfVxuXG4gICAgLy8gRW1haWwgVmFsaWRhdGlvblxuICAgIGlmICghZm9ybURhdGEuZW1haWwudHJpbSgpKSB7XG4gICAgICBuZXdFcnJvcnMuZW1haWwgPSBcIkVtYWlsIGlzIHJlcXVpcmVkXCI7XG4gICAgfSBlbHNlIGlmICghUkVHRVhfRU1BSUwudGVzdChmb3JtRGF0YS5lbWFpbCkpIHtcbiAgICAgIG5ld0Vycm9ycy5lbWFpbCA9IFwiRW50ZXIgYSB2YWxpZCBlbWFpbFwiO1xuICAgIH1cblxuICAgIGlmICghZm9ybURhdGEuYWRkcmVzc0xpbmUxLnRyaW0oKSkge1xuICAgICAgbmV3RXJyb3JzLmFkZHJlc3NMaW5lMSA9IFwiQWRkcmVzcyBMaW5lMSBpcyByZXF1aXJlZFwiO1xuICAgIH1cblxuICAgIGlmICghZm9ybURhdGEuemlwQ29kZS50cmltKCkpIHtcbiAgICAgIG5ld0Vycm9ycy56aXBDb2RlID0gXCJaaXAgQ29kZSBpcyByZXF1aXJlZFwiO1xuICAgIH1cblxuICAgIGlmICghc2VsZWN0ZWRDb3VudHJ5KSB7XG4gICAgICBuZXdFcnJvcnMuY291bnRyeSA9IFwiQ291bnRyeSBpcyByZXF1aXJlZFwiO1xuICAgIH1cblxuICAgIGlmICghc2VsZWN0ZWRTdGF0ZSkge1xuICAgICAgbmV3RXJyb3JzLnN0YXRlID0gXCJTdGF0ZSBpcyByZXF1aXJlZFwiO1xuICAgIH1cblxuICAgIGlmICghc2VsZWN0ZWRDaXR5KSB7XG4gICAgICBuZXdFcnJvcnMuY2l0eSA9IFwiQ2l0eSBpcyByZXF1aXJlZFwiO1xuICAgIH1cblxuICAgIHNldEVycm9ycyhuZXdFcnJvcnMpO1xuICAgIHJldHVybiBPYmplY3Qua2V5cyhuZXdFcnJvcnMpLmxlbmd0aCA9PT0gMDtcbiAgfTtcblxuICBcbiAgLy8gdXNlRWZmZWN0KCgpPT57XG4gIC8vICB2YWxpZGF0ZVN0ZXAxKCkgXG4gIC8vIH0sW2Zvcm1EYXRhXSlcbiAgXG4gICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnNvbGUuZXJyb3IoXCJsYXN0U2VsZWN0ZWRBZGRyZXNzSW5kZXggOjogXCIrbGFzdFNlbGVjdGVkQWRkcmVzc0luZGV4KTtcbiAgfSwgW2xhc3RTZWxlY3RlZEFkZHJl
1469c3NJbmRleF0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHVzZXJBZGRyZXNzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuXG4gICAgY29uc29sZS5lcnJvcihcImJhY2tidXR0b25mbGFnIDo6IFwiK2JhY2tCdG5GbGFnKTtcbiAgICBjb25zb2xlLmVycm9yKFwibGFzdFNlbGVjdGVkQWRkcmVzc0luZGV4IDo6IFwiK2xhc3RTZWxlY3RlZEFkZHJlc3NJbmRleCk7XG4gICAgLy8gRGVmYXVsdCBiZWhhdmlvcjogc2VsZWN0IHRoZSBsYXRlc3QgYWRkcmVzc1xuICAgIGlmIChiYWNrQnRuRmxhZykge1xuICAgICAgLy8gUmVzdG9yZSBwcmV2aW91c2x5IHNlbGVjdGVkIGFkZHJlc3NcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJleGVjdXRlZCBpZiBibG9ja1wiKTtcbiAgICAgIGlmKGxhc3RTZWxlY3RlZEFkZHJlc3NJbmRleCA9PT0gXCJcIikge1xuICAgICAgICBzZXRTZWxlY3RlZEFkZHJlc3NJbmRleCggdXNlckFkZHJlc3NbdXNlckFkZHJlc3MubGVuZ3RoIC0gMV0uYWRkcmVzc0lkKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldFNlbGVjdGVkQWRkcmVzc0luZGV4KGxhc3RTZWxlY3RlZEFkZHJlc3NJbmRleCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJleGVjdXRlZCBlbHNlIGJsb2NrXCIpO1xuICAgICAgaWYoc3RlcCA9PT0gMSkge1xuICAgICAgICBjb25zdCBsYXRlc3RBZGRyZXNzSWQgPSB1c2VyQWRkcmVzc1t1c2VyQWRkcmVzcy5sZW5ndGggLSAxXS5hZGRyZXNzSWQ7XG4gICAgICAgIHNldFNlbGVjdGVkQWRkcmVzc0luZGV4KGxhdGVzdEFkZHJlc3NJZCk7XG4gICAgICAgIHNldExhc3RTZWxlY3RlZEFkZHJlc3NJbmRleChsYXRlc3RBZGRyZXNzSWQpO1xuICAgICAgfVxuICAgIH1cbiAgfSwgW3VzZXJBZGRyZXNzLCBiYWNrQnRuRmxhZ10pO1xuXG4gIGNvbnN0IGhhbmRsZU5leHQgPSBhc3luYyAoKSA9PiB7XG4gICAgaWYgKFxuICAgICAgc3RlcCA9PT0gMSAmJlxuICAgICAgc2VsZWN0ZWRBZGRyZXNzSW5kZXhcbiAgICApIHtcbiAgICAgIHNldFN0ZXAoc3RlcCArIDEpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoc3RlcCA9PT0gMSAmJiAhdmFsaWRhdGVTdGVwMSgpKXsgXG4gICAgICByZXR1cm59O1xuICAgIC8vIGlmIChzdGVwID09PSAyKSB7XG4gICAgLy8gICAvLyBEZXRlcm1pbmUgcHJpY2luZyBhbmQgcHJvZHVjdCBpbmZvXG4gICAgLy8gICBjb25zdCBpc01vbnRobHkgPSBmb3JtRGF0YS5wbGFuID09PSBcIm1vbnRobHlcIjtcbiAgICAvLyAgIGNvbnN0IHByb2R1Y3ROYW1lID0gaXNNb250aGx5XG4gICAgLy8gICAgID8gJ1NJWCBTSUdNQSBGVU5ORUwg4oCcTU9OVEhMWSBQTEFO4oCdJ1xuICAgIC8vICAgICA6ICdTSVggU0lHTUEgRlVOTkVMIOKAnFlFQVJMWSBQTEFO4oCdJztcbiAgICAvLyAgIGNvbnN0IHByb2R1Y3RQcmljZSA9IGlzTW9udGhseSA/IDk3MDAgOiAxMTY0MDA7IC8vIFN0cmlwZSBhY2NlcHRzIHByaWNlIGluIGNlbnRzXG4gICAgLy8gICBjb25zdCBxdWFudGl0eSA9IDE7XG4gICAgLy8gICBjb25zdCBjdXJyZW5jeSA9I
1469FwidXNkXCI7XG4gICAgLy8gICBjb25zdCBlbWFpbCA9IHNhdmVkRW1haWw7XG4gICAgLy8gICBjb25zdCBkb21haW5VcmwgPSB3aW5kb3cubG9jYXRpb24ub3JpZ2luO1xuICAgIC8vICAgY29uc3QgY29tcGFueU5hbWUgPSBDVVJFRU5UX0NPTVBBTllfTkFNRTtcblxuICAgIC8vICAgdHJ5IHtcbiAgICAvLyAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBheGlvcy5wb3N0PFN0cmlwZVJlc3BvbnNlPihcbiAgICAvLyAgICAgICBQT1NUX0NSRUFURV9DSEVDS09VVF9TRVNTSU9OKENVUkVFTlRfQ09NUEFOWV9OQU1FKSxcbiAgICAvLyAgICAgICB7XG4gICAgLy8gICAgICAgICBwcm9kdWN0TmFtZSxcbiAgICAvLyAgICAgICAgIHByb2R1Y3RQcmljZSxcbiAgICAvLyAgICAgICAgIHF1YW50aXR5LFxuICAgIC8vICAgICAgICAgY3VycmVuY3ksXG4gICAgLy8gICAgICAgICBlbWFpbCxcbiAgICAvLyAgICAgICAgIGRvbWFpblVybCxcbiAgICAvLyAgICAgICAgIGNvbXBhbnlOYW1lXG4gICAgLy8gICAgICAgfVxuICAgIC8vICAgICApO1xuXG4gICAgLy8gICAgIGlmIChyZXNwb25zZS5kYXRhLnN0YXR1cyA9PT0gXCJTVUNDRVNTXCIgJiYgcmVzcG9uc2UuZGF0YS5zZXNzaW9uVXJsKSB7XG4gICAgLy8gICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oXCJ0cmlhbEV4cGlyZWRcIik7XG4gICAgLy8gICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSByZXNwb25zZS5kYXRhLnNlc3Npb25Vcmw7XG4gICAgLy8gICAgIH0gZWxzZSB7XG4gICAgLy8gICAgICAgY29uc29sZS5lcnJvcihcIkNoZWNrb3V0IHNlc3Npb24gZmFpbGVkOlwiLCByZXNwb25zZS5kYXRhLm1lc3NhZ2UpO1xuICAgIC8vICAgICAgIGFsZXJ0KFwiU29tZXRoaW5nIHdlbnQgd3JvbmcgZHVyaW5nIGNoZWNrb3V0LiBQbGVhc2UgdHJ5IGFnYWluLlwiKTtcbiAgICAvLyAgICAgfVxuICAgIC8vICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAvLyAgICAgY29uc29sZS5lcnJvcihcIkVycm9yIGNhbGxpbmcgY2hlY2tvdXQgc2Vzc2lvbiBBUEk6XCIsIGVycm9yKTtcbiAgICAvLyAgICAgYWxlcnQoXCJFcnJvciBjb25uZWN0aW5nIHRvIGNoZWNrb3V0LiBQbGVhc2UgdHJ5IGFnYWluIGxhdGVyLlwiKTtcbiAgICAvLyAgIH1cblxuICAgIC8vICAgcmV0dXJuOyAvLyBQcmV2ZW50IG1vdmluZyB0byBzdGVwIDMg4oCUIHdhaXQgZm9yIFN0cmlwZSByZWRpcmVjdFxuICAgIC8vIH1cblxuICAgIC8vIGNvbnN0IG5leHRTdGVwID0gc3RlcCArIDE7XG4gICAgLy8gc2V0U3RlcChuZXh0U3RlcCk7XG4gICAgLy8gc2V0VmlzaXRlZFN0ZXBzKChwcmV2KSA9PiBbLi4ubmV3IFNldChbLi4ucHJldiwgbmV4dFN0ZXBdKV0pO1xuXG4gICAgLy9hZnRlciB2YWxpZGF0aW9uIGNhbGwgdGhlIGNyZWF0ZVVzZXJBZGRyZXNzIHRvIHN0b3JlIGl0LlxuICAgIHNldFN0ZXAoc3RlcCArIDEpO1xuICAgIHNldExhc3RTZWxlY3RlZEFkZHJlc3NJbmRleChcIlwiKTtcbiAgICBjcmVhdGVVc2VyQWRkcmVzcygpO1xuICAgIFxuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVBsYW5DaGFuZ2UgPSBhc3luYyAocHJpY2VJZD86IHN0cmluZywgcGxhblR5cGU/OiBzdHJpbmcpID0+IHtcbiAgICBjb25zb2xlLmxvZyhcInByaWNlIGlkIC4uXCIgKyBwcmljZUlkLCBcInBsYW4gdHlwZSAuLlwiICsgcGxhblR5cGUpO1xuXG4gICAgaWYgKHBsYW5UeXBlICYmIHByaWNlSWQpIHtcbiAgICAgIHNldFNlbGV0ZWRQbGFuXyhwbGFuVHlwZSk7XG4gICAgICBzZXRQcmljZUlkKHByaWNlSWQpO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgY29uc3Qgb3JkZXJSZXNwb25zZSA9IGF3YWl0IGF4aW9zLnBvc3QoXG4gICAgICAgIEdFVF9PUkRFUihDVVJFRU5UX0NPTVBBTllfTkFNRSksXG4gICAgICAgIG51bGwsXG4gICAgICAgIHtcbiAgICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgIG9yZGVySWQ6IG9yZGVySWQsXG4gICAgICAgICAgICBwcmljZUlkOiBwcmljZUlkLFxuICAgICAgICAgICAgcGxhblR5cGU6IHBsYW5UeXBlLFxuICAgICAgICAgIH0sXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgICBjb25zb2xlLmxvZyhcIm9yZGVyUmVzcG9uc2Uuc3RhdHVzIC4uXCIgKyBvcmRlclJlc3BvbnNlLnN0YXR1cyk7XG4gICAgICBpZiAob3JkZXJSZXNwb25zZS5zdGF0dXMgPT09IDIwMCkge1xuICAgICAgICBzZXRVc2VyQ2FydERldGFpbHMob3JkZXJSZXNwb25zZS5kYXRhKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcihcIkZhaWxlZCB0byBzd2l0Y2ggcGxhbjpcIiwgZXJyb3IpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICAvL1RvIHVwZGF0ZSB0aGUgVVJMIGluIEJhY2sgY2FzZVxuICAgICAgY29uc3QgcXVlcnlQYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpO1xuICAgICAgaWYgKHBsYW5UeXBlKSB7XG4gICAgICAgIHF1ZXJ5UGFyYW1zLnNldChcInBsYW5cIiwgcGxhblR5cGUpOyAvLyBVcGRhdGUgb3IgYWRkIHRoZSBwbGFuIHBhcmFtXG4gICAgICB9XG4gICAgICBjb25zdCBuZXdVcmwgPSB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUgKyBcIj9cIiArIHF1ZXJ5UGFyYW1zLnRvU3RyaW5nKCk7XG4gICAgICAvLyBVcGRhdGUgdGhlIFVSTCB3aXRob3V0IHJlbG9hZGluZ1xuICAgICAgd2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKG51bGwsIFwiXCIsIG5ld1VybCk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVBheW1lbnQgPSBhc3luYyAoKSA9PiB7XG4gICAgLy8gY29uc3QgcXVhbnRpdHkgPSAxO1xuICAgIGNvbnN0IGN1cnJlbmN5ID0gXCJ1c2RcIjtcbiAgICBjb25zdCBlbWFpbCA9IHNhdmVkRW1haWw7XG4gICAgY29uc3QgZG9tYWluVXJsID0gd2luZG93LmxvY2F0aW9uLm9yaWdpbjtcbiAgICBjb25zdCBjb21wYW55TmFtZSA9IENVUkVFTlRfQ09NUEFOWV9OQU1FO1xuXG4gICAgdHJ5IHtcbiAgICAgIC8vZW5hYmxlU3BsYXNoU2NyZWVuKCk7XG4gICAgICBlbmFibGVQYXltZW50U3BsYXNoU2NyZWVuKCk7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGF4aW9zLnBvc3Q8U3RyaXBlUmVzcG9uc2U+KFxuICAgICAgICBQT1NUX0NSRUFURV9DSEVDS09VVF9TRVNTSU9OKENVUkVFTlRfQ09NUEFOWV9OQU1FKSxcbiAgICAgICAge1xuICAgICAgICAgIC8vIHByb2R1Y3ROYW1lLFxuICAgICAgICAgI
1469HByaWNlSWQsXG4gICAgICAgICAgLy8gcXVhbnRpdHksXG4gICAgICAgICAgY3VycmVuY3ksXG4gICAgICAgICAgb3JkZXJJZCxcbiAgICAgICAgICAvLyBlbWFpbCxcbiAgICAgICAgICBkb21haW5VcmwsXG4gICAgICAgICAgY29tcGFueU5hbWUsXG4gICAgICAgICAgY291cG9uQ29kZVxuICAgICAgICB9XG4gICAgICApO1xuXG4gICAgICBpZiAocmVzcG9uc2UuZGF0YS5zdGF0dXMgPT09IFwiU1VDQ0VTU1wiICYmIHJlc3BvbnNlLmRhdGEuc2Vzc2lvblVybCkge1xuICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShcInRyaWFsRXhwaXJlZFwiKTtcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSByZXNwb25zZS5kYXRhLnNlc3Npb25Vcmw7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLmVycm9yKFwiQ2hlY2tvdXQgc2Vzc2lvbiBmYWlsZWQ6XCIsIHJlc3BvbnNlLmRhdGEubWVzc2FnZSk7XG4gICAgICAgIGRpc2FibGVQYXltZW50U3BsYXNoU2NyZWVuKCk7XG4gICAgICAgIFN3YWwuZmlyZSh7XG4gICAgICAgICAgaW1hZ2VVcmw6IFwiL21lZGlhL21pc2MvcmVtb3ZlLnBuZ1wiLFxuICAgICAgICAgIGltYWdlV2lkdGg6IDYwLFxuICAgICAgICAgIGltYWdlSGVpZ2h0OiA2MCxcbiAgICAgICAgICB0aXRsZTogXCI8c3BhbiBzdHlsZT0nY29sb3I6IHJlZDsgZm9udC13ZWlnaHQ6IGJvbGQ7Jz5FcnJvciE8L3NwYW4+XCIsXG4gICAgICAgICAgaHRtbDogYDxzdHJvbmc+JHtyZXNwb25zZS5kYXRhLm1lc3NhZ2V9PC9zdHJvbmc+YCxcbiAgICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogXCJPS1wiLFxuICAgICAgICAgIGNvbmZpcm1CdXR0b25Db2xvcjogXCIjZjc5YzNhXCIsXG4gICAgICAgIH0pO1xuICAgICAgICAvL2FsZXJ0KFwiU29tZXRoaW5nIHdlbnQgd3JvbmcgZHVyaW5nIGNoZWNrb3V0LiBQbGVhc2UgdHJ5IGFnYWluLlwiKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcihcIkVycm9yIGNhbGxpbmcgY2hlY2tvdXQgc2Vzc2lvbiBBUEk6XCIsIGVycm9yKTtcbiAgICAgIGFsZXJ0KFwiRXJyb3IgY29ubmVjdGluZyB0byBjaGVja291dC4gUGxlYXNlIHRyeSBhZ2FpbiBsYXRlci5cIik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIC8vZGlzYWJsZVNwbGFzaFNjcmVlbigpO1xuICAgIH1cblxuICAgIHJldHVybjsgLy8gUHJldmVudCBtb3ZpbmcgdG8gc3RlcCAzIOKAlCB3YWl0IGZvciBTdHJpcGUgcmVkaXJlY3RcbiAgfTtcblxuICBhc3luYyBmdW5jdGlvbiBnZXRjdXJyZW50ZGF0YSgpIHtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGF4aW9zLmdldChcbiAgICAgICAgR0VUX0FMTF9VU0VSQUREUkVTUyhDVVJFRU5UX0NPTVBBTllfTkFNRSlcbiAgICAgICk7XG4gICAgICBjb25zdCByYXdEYXRhID0gcmVzcG9uc2UuZGF0YTtcbiAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDIwMCkge1xuICAgICAgICBjb25zdCBzaW1wbGlmaWVkOiB1c2VyQWRkcmVzc2RhdGFbXSA9IHJhd0RhdGEubWFwKChhZGRyOiBhbnkpID0+ICh7XG4gICAgICAgICAgYWRkcmVzc0xpbmUxOiBhZGRyLmxpbmUxLFxuICAgICAgICAgIGFkZHJlc3NMaW5lMjogYWRkci5saW5lMixcbiAgICAgICAgICBjb3VudHJ5OiBhZGRyLmNvdW50cnksXG4gICAgICAgICAgcGhvbmU6IGFkZHIucGhvbmUsXG4gICAgICAgICAgY29udGFjdE5hbWU6IGFkZHIuY29udGFjdE5hbWUsXG4gICAgICAgICAgcG9zdGFsQ29kZTogYWRkci5wb3N0YWxDb2RlLFxuICAgICAgICAgIGFkZHJlc3NJZDogYWRkci5hZGRyZXNzSWQsXG4gICAgICAgICAgc3RhdGU6YWRkci5zdGF0ZSxcbiAgICAgICAgICBjaXR5OmFkZHIuY2l0eVxuICAgICAgICB9KSk7XG4gICAgICAgIHNldE9wZW5CaWxsKHRydWUpO1xuICAgICAgICBzZXRVc2VyQWRkcmVzcyhzaW1wbGlmaWVkKTtcbiAgICAgICAgc2V0T3BlbkJpbGxGb3JtKGZhbHNlKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcihcIkVycm9yIGZldGNoaW5nIHVzZXIgYWRkcmVzc2VzOlwiLCBlcnJvcik7XG4gICAgICB0aHJvdyBlcnJvcjsgLy8gT3B0aW9uYWw6IHJldGhyb3cgaWYgY2FsbGVyIG5lZWRzIHRvIGhhbmRsZSBpdFxuICAgIH1cbiAgfVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgXG4gICAgZ2V0Y3VycmVudGRhdGEoKTtcbiAgfSwgW3N0ZXBdKTtcblxuICBmdW5jdGlvbiBoYW5kbGVvcGVuZm9ybSgpIHtcbiAgICBzZXRvcGVuZm9ybSh0cnVlKTtcbiAgICBjb25zb2xlLmxvZyhcInRoaXMgaXMgdGhlIFwiICsgb3BlbmZvcm0pO1xuICB9XG5cbiAgZnVuY3Rpb24gaGFuZGxlbGluaygpXG4gIHtcbnNldEZvcm1EYXRhKGluaXRpYWxGb3JtRGF0YSk7XG5cbiAgICAvLyBSZXNldCBkcm9wZG93biBzZWxlY3Rpb25zXG4gICAgc2V0U2VsZWN0ZWRTdGF0ZShudWxsKTtcbiAgICBzZXRTZWxlY3RlZENpdHkobnVsbCk7XG4gICAgc2V0U2VsZWN0ZWRDb3VudHJ5KG51bGwpXG4gIH1cblxuICBjb25zdCBoYW5kbGVCYWNrID0gKCkgPT4ge1xuICAgIGlmIChzdGVwID4gMSkge1xuICAgICAgc2V0QmFja0J0bkZsYWcodHJ1ZSk7XG4gICAgICBzZXRTdGVwKHN0ZXAgLSAxKTtcbiAgICB9XG4gIH07XG5cbiAgYXN5bmMgZnVuY3Rpb24gY3JlYXRlVXNlckFkZHJlc3MoKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYXhpb3MucG9zdChcbiAgICAgICAgUE9TVF9DUkVBVEVfVVNFUl9BRERSRVNTKENVUkVFTlRfQ09NUEFOWV9OQU1FKSxcbiAgICAgICAge1xuICAgICAgICAgIGNvbnRhY3ROYW1lOiBmb3JtRGF0YS5maXJzdE5hbWUgKyBcIiBcIiArIGZvcm1EYXRhLmxhc3ROYW1lLFxuICAgICAgICAgIGxpbmUxOiBmb3JtRGF0YS5hZGRyZXNzTGluZTEsXG4gICAgICAgICAgbGluZTI6IGZvcm1EYXRhLmFkZHJlc3NMaW5lMixcbiAgICAgICAgICBjaXR5OiBzZWxlY3RlZENpdHksXG4gICAgICAgICAgc3RhdGU6IHNlbGVjdGVkU3RhdGUsXG4gICAgICAgICAgcG9zdGFsQ29kZTogZm9ybURhdGEuemlwQ29kZSxcbiAgICAgICAgICBhZGRyZXNzVHlwZTogXCJCSUxMSU5HXCIsXG4gICAgICAgICAgcGhvbmU6IFwiMDAwLTAwMC0wMDAwXCIsXG4gICAgICAgICAgY291bnRyeTogc2VsZWN0ZWRDb3VudHJ5LFxuICAgICAgICB9XG4gICAgICApO1xuXG4gICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09IDIwMCkge1xuICAgICAgICBjb25zb2xlLmxvZyhcInVzZXIgYWRkcmVzcyBhZGRlZCBzdXNjY2Vzc2Z1bGx5XCIpO1xuICAgICAgfVxuXG4gICAgICBjb25zb2xlLmxvZyhcIkFkZHJl
1469c3MgY3JlYXRlZCBzdWNjZXNzZnVsbHk6XCIsIHJlc3BvbnNlLmRhdGEpO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGE7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcihcIkVycm9yIGNyZWF0aW5nIGFkZHJlc3M6XCIsIGUpO1xuICAgICAgLy8gT3B0aW9uYWxseSwgdGhyb3cgb3IgaGFuZGxlIGVycm9yIGFwcHJvcHJpYXRlbHlcbiAgICB9XG4gIH1cblxuICAvLyBGaWVsZCBkZWZpbml0aW9ucyAobGFiZWwgYW5kIG5hbWUpXG4gIGNvbnN0IGZpZWxkcyA9IFtcbiAgICB7IGxhYmVsOiBcIkZpcnN0IE5hbWUqXCIsIG5hbWU6IFwiZmlyc3ROYW1lXCIgfSxcbiAgICB7IGxhYmVsOiBcIkxhc3QgTmFtZSpcIiwgbmFtZTogXCJsYXN0TmFtZVwiIH0sXG4gICAgeyBsYWJlbDogXCJFbWFpbCpcIiwgbmFtZTogXCJlbWFpbFwiIH0sXG4gICAgeyBsYWJlbDogXCJBZGRyZXNzIExpbmUxXCIsIG5hbWU6IFwiYWRkcmVzc0xpbmUxXCIgfSxcbiAgICB7IGxhYmVsOiBcIkFkZHJlc3MgTGluZTJcIiwgbmFtZTogXCJhZGRyZXNzTGluZTJcIiB9LFxuICAgIHsgbGFiZWw6IFwiWmlwIENvZGVcIiwgbmFtZTogXCJ6aXBDb2RlXCIgfSxcbiAgXTtcbiAgLy8gSGFuZGxlIGNvdW50cnkgY2hhbmdlIGFuZCBmZXRjaCBzdGF0ZXNcbiAgY29uc3QgaGFuZGxlQ291bnRyeUNoYW5nZSA9IChlOiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MU2VsZWN0RWxlbWVudD4pID0+IHtcbiAgICBjb25zdCBjb3VudHJ5Q29kZSA9IGUudGFyZ2V0LnZhbHVlO1xuICAgIHNldFNlbGVjdGVkQ291bnRyeShjb3VudHJ5Q29kZSk7XG4gICAgc2V0U2VsZWN0ZWRTdGF0ZShudWxsKTtcbiAgICBzZXRTdGF0ZXMoW10pO1xuXG4gICAgLy8gQ2xlYXIgdmFsaWRhdGlvbiBlcnJvclxuICAgIGlmIChlcnJvcnMuY291bnRyeSkge1xuICAgICAgc2V0RXJyb3JzKChwcmV2KSA9PiAoeyAuLi5wcmV2LCBjb3VudHJ5OiBcIlwiIH0pKTtcbiAgICB9XG5cbiAgICAvLyBUb2dnbGUgZmlsbGVkIGNsYXNzIGJhc2VkIG9uIHZhbHVlXG4gICAgY29uc3QgcGFyZW50ID0gZS50YXJnZXQuY2xvc2VzdChcIi5pbnB1dC1jb250YWluZXJcIik7XG4gICAgaWYgKHBhcmVudCkge1xuICAgICAgaWYgKGNvdW50cnlDb2RlKSB7XG4gICAgICAgIHBhcmVudC5jbGFzc0xpc3QuYWRkKFwiZmlsbGVkXCIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGFyZW50LmNsYXNzTGlzdC5yZW1vdmUoXCJmaWxsZWRcIik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gRmV0Y2ggc3RhdGVzIGlmIGEgY291bnRyeSBpcyBzZWxlY3RlZFxuICAgIGlmIChjb3VudHJ5Q29kZSkge1xuICAgZW5hYmxlU3BsYXNoU2NyZWVuKCk7IC8vIFNob3cgbG9hZGluZyBpbmRpY2F0b3JcblxuICAgICAgYXhpb3NcbiAgICAgICAgLnBvc3QoXCJodHRwczovL2NvdW50cmllc25vdy5zcGFjZS9hcGkvdjAuMS9jb3VudHJpZXMvc3RhdGVzXCIsIHtcbiAgICAgICAgICBjb3VudHJ5OiBjb3VudHJ5Q29kZSxcbiAgICAgICAgfSlcbiAgICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgY29uc3Qgc3RhdGVPcHRpb25zID0gcmVzcG9uc2UuZGF0YS5kYXRhLnN0YXRlcy5tYXAoKHN0YXRlOiBhbnkpID0+ICh7XG4gICAgICAgICAgICBsYWJlbDogc3RhdGUubmFtZSxcbiAgICAgICAgICAgIHZhbHVlOiBzdGF0ZS5uYW1lLFxuICAgICAgICAgIH0pKTtcbiAgICAgICAgICBzZXRTdGF0ZXMoc3RhdGVPcHRpb25zKTtcbiAgICAgICAgfSlcbiAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICBjb25zb2xlLmVycm9yKFwiRXJyb3IgZmV0Y2hpbmcgc3RhdGVzOlwiLCBlcnJvcik7XG4gICAgfSlcbiAgICAuZmluYWxseSgoKSA9PiB7XG4gICAgICAgZGlzYWJsZVNwbGFzaFNjcmVlbigpOyAvLyBIaWRlIGxvYWRpbmcgaW5kaWNhdG9yXG4gICAgfSk7XG59XG5cbiAgfTtcblxuICBjb25zdCBoYW5kbGVTdGF0ZUNoYW5nZSA9IChlOiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MU2VsZWN0RWxlbWVudD4pID0+IHtcbiAgICBjb25zdCBzdGF0ZUNvZGUgPSBlLnRhcmdldC52YWx1ZTtcbiAgICBzZXRTZWxlY3RlZFN0YXRlKHN0YXRlQ29kZSk7XG4gICAgc2V0U2VsZWN0ZWRDaXR5KG51bGwpOyAvLyBSZXNldCBjaXR5IHNlbGVjdGlvblxuXG4gICAgLy8gQ2xlYXIgc3RhdGUgZXJyb3IgaWYgYW55XG4gICAgaWYgKGVycm9ycy5zdGF0ZSkge1xuICAgICAgc2V0RXJyb3JzKChwcmV2KSA9PiAoeyAuLi5wcmV2LCBzdGF0ZTogXCJcIiB9KSk7XG4gICAgfVxuXG4gICAgLy8gVG9nZ2xlICdmaWxsZWQnIGNsYXNzIGZvciBmbG9hdGluZyBsYWJlbFxuICAgIGNvbnN0IHBhcmVudCA9IGUudGFyZ2V0LmNsb3Nlc3QoXCIuaW5wdXQtY29udGFpbmVyXCIpO1xuICAgIGlmIChwYXJlbnQpIHtcbiAgICAgIGlmIChzdGF0ZUNvZGUpIHtcbiAgICAgICAgcGFyZW50LmNsYXNzTGlzdC5hZGQoXCJmaWxsZWRcIik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYXJlbnQuY2xhc3NMaXN0LnJlbW92ZShcImZpbGxlZFwiKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBGZXRjaCBjaXRpZXMgaWYgYm90aCBzdGF0ZSBhbmQgY291bnRyeSBhcmUgc2VsZWN0ZWRcbiAgICBpZiAoc3RhdGVDb2RlICYmIHNlbGVjdGVkQ291bnRyeSkge1xuICAgIGVuYWJsZVNwbGFzaFNjcmVlbigpOyAvLyBTaG93IGxvYWRpbmcgaW5kaWNhdG9yXG5cbiAgICAgIGF4aW9zXG4gICAgICAgIC5wb3N0KFwiaHR0cHM6Ly9jb3VudHJpZXNub3cuc3BhY2UvYXBpL3YwLjEvY291bnRyaWVzL3N0YXRlL2NpdGllc1wiLCB7XG4gICAgICAgICAgY291bnRyeTogc2VsZWN0ZWRDb3VudHJ5LFxuICAgICAgICAgIHN0YXRlOiBzdGF0ZUNvZGUsXG4gICAgICAgIH0pXG4gICAgICAgIC50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGNpdHlPcHRpb25zID0gcmVzcG9uc2UuZGF0YS5kYXRhLm1hcCgoY2l0eTogYW55KSA9PiAoe1xuICAgICAgICAgICAgbGFiZWw6IGNpdHksXG4gICAgICAgICAgICB2YWx1ZTogY2l0eSxcbiAgICAgICAgICB9KSk7XG4gICAgICAgICAgc2V0Q2l0aWVzKGNpdHlPcHRpb25zKTtcbiAgICAgICAgfSlcbiAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICBjb25zb2xlLmVycm9yKFwiRXJyb3IgZmV0Y2hpbmcgY2l0aWVzOlwiLCBlcnJvcik7XG4gICAgfSlcbiAgICAuZmluYWxseSgoKSA9PiB7XG4gICAgICBkaXNhYmxlU3BsYXNoU2NyZWVuKCk7IC8vIEhpZGUgbG9hZGluZyBpbmRpY2F0b3JcbiAgICB9KTtcbn0gZWxzZSB7XG4gICAgICBzZXRDaXRpZXMoW10pO1xufVxuXG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQ2l0eUNoYW5nZSA9IChlOiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MU2VsZWN0RWxlbWVudD4pID0+IHtcbiAgICBjb25zdCBzZWxlY3RlZE9wdGlvbiA9IGUudGFyZ2V0LnZhbHVlO1xuICAgIHNldFNlbGVjdGVkQ2l0eShzZWxlY3RlZE9wdGlvbik7XG5lbmFibGVTcGxhc2hTY3JlZW4oKTtcblxuICAgIC8vIENsZWFyIGNpdHkgZXJyb3IgaWYgcHJlc2VudFxuICAgIGlmIChlcnJvcnMuY2l0eSkge1xuICAgICAgc2V0RXJyb3JzKChwcmV2KSA9PiAoeyAuLi5wcmV2LCBjaXR5OiBcIlwiIH0pKTtcbiAgICB9XG5cbiAgICAvLyBUb2dnbGUgJ2ZpbGxlZCcgY2xhc3MgZm9yIGZsb2F0aW5nIGxhYmVsXG4gICAgY29uc3QgcGFyZW50ID0gZS50YXJnZXQuY2xvc2VzdChcIi5pbnB1dC1jb250YWluZXJcIik7XG4gICAgaWYgKHBhcmVudCkge1xuICAgICAgaWYgKHNlbGVjdGVkT3B0aW9uKSB7XG4gICAgICAgI
1469HBhcmVudC5jbGFzc0xpc3QuYWRkKFwiZmlsbGVkXCIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGFyZW50LmNsYXNzTGlzdC5yZW1vdmUoXCJmaWxsZWRcIik7XG4gICAgICB9XG4gICAgfVxuICAgIGRpc2FibGVTcGxhc2hTY3JlZW4oKTtcbiAgICBcbiAgfTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgc2V0VmlzaXRlZFN0ZXBzKChwcmV2KSA9PlxuICAgIHByZXYuaW5jbHVkZXMoc3RlcCkgPyBwcmV2IDogWy4uLnByZXYsIHN0ZXBdXG4gICk7XG59LCBbc3RlcF0pO1xuXG5jb25zdCBzdGVwTGFiZWxzID0gW1xuICAgIFwiSW52b2ljZSBBZGRyZXNzXCIsXG4gICAgXCJQdXJjaGFzZSBPdmVydmlld1wiLFxuICAgIFwiUHVyY2hhc2UgQ29uZmlybWF0aW9uXCIsXG4gIF07XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPENvbnRlbnQ+XG4gICAgICAgIDxkaXYgc3R5bGU9e3sgd2lkdGg6IFwiODAlXCIsIG1hcmdpbjogXCIwIGF1dG9cIiwgcGFkZGluZzogMjAgfX0+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJzdGVwcGVyXCI+XG4gICAgICAgICAgICB7Lyoge3N0ZXBMYWJlbHMubWFwKChsYWJlbCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgY29uc3Qgc3RlcE51bSA9IGluZGV4ICsgMTtcbiAgICAgICAgICAgICAgY29uc3QgaXNBY3RpdmUgPSBzdGVwID09PSBzdGVwTnVtO1xuICAgICAgICAgICAgICBjb25zdCBpc0NvbXBsZXRlT3JBY3RpdmUgPSBzdGVwTnVtIDw9IHN0ZXA7XG4gICAgICAgICAgICAgIC8vIGNvbnN0IGlzQ29tcGxldGVPckFjdGl2ZSA9IGlzQWN0aXZlIHx8IGlzQ29tcGxldGU7XG4gICAgICAgICAgICAgIGNvbnN0IGJhY2tncm91bmRDb2xvciA9IGlzQ29tcGxldGVPckFjdGl2ZSA/IFwiIzAwNzNCN1wiIDogXCIjZmZmXCI7XG4gICAgICAgICAgICAgIGNvbnN0IHRleHRDb2xvciA9IGlzQ29tcGxldGVPckFjdGl2ZSA/IFwiI2ZmZlwiIDogXCIjQUJCN0MyXCI7XG4gICAgICAgICAgICAgIGNvbnN0IHByZWZpeCA9IHN0ZXBOdW0gPD0gc3RlcCA/IFwi4pyUXCIgOiBgMCR7c3RlcE51bX1gO1xuXG4gICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAga2V5PXtsYWJlbH1cbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInN0ZXBwZXJfX2l0ZW1cIlxuICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogYmFja2dyb3VuZENvbG9yLFxuICAgICAgICAgICAgICAgICAgICBjb2xvcjogdGV4dENvbG9yLFxuICAgICAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM6IFwiNnB4XCIsXG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IFwiMTVweFwiLFxuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogXCJyZWxhdGl2ZVwiLFxuICAgICAgICAgICAgICAgICAgICB6SW5kZXg6IDEsXG4gICAgICAgICAgICAgICAgICAgIGZvbnRXZWlnaHQ6IGlzQWN0aXZlID8gXCJib2xkXCIgOiBcIm5vcm1hbFwiLFxuICAgICAgICAgICAgICAgICAgICBtYXJnaW5SaWdodDogXCIxcHhcIixcbiAgICAgICAgICAgICAgICAgICAgdGV4dEFsaWduOiBcImNlbnRlclwiLFxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT17eyBtYXJnaW5SaWdodDogOCB9fSBjbGFzc05hbWU9XCJwcmVmaXhfdWlcIj5cbiAgICAgICAgICAgICAgICAgICAge3ByZWZpeH1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPntsYWJlbH08L3NwYW4+XG4gICAgICAgICAgKi99XG4gICAgICAgICAgICAgICAgICB7IC8qIFJpZ2h0IGFycm93IChleGNlcHQgZm9yIGxhc3Qgc3RlcCkgKi99XG4gICAgICAgICAgICAgICAgIHsgLyoge3N0ZXBOdW0gPCAzICYmIChcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHQ6IFwiLTIwcHhcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvcDogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyVG9wOiBcIjMwcHggc29saWQgdHJhbnNwYXJlbnRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlckJvdHRvbTogXCIzMHB4IHNvbGlkIHRyYW5zcGFyZW50XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJMZWZ0OiBgMjBweCBzb2xpZCAke2JhY2tncm91bmRDb2xvcn1gLFxuICAgICAgICAgICAgICAgICAgICAgICAgekluZGV4OiAwLFxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSl9ICovfVxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAge3N0ZXAgPT09IDEgJiYgT3BlbkJpbGwgJiYgKFxuICAgICAgICAgICAgPGRpdiBzdHlsZT17eyBtYXJnaW46IFwiYXV0b1wiLCB3aWR0aDogXCIxMDAlXCIgfX0+XG4gICAgICAgICAgICAgIDxoMj5DaG9vc2UgYSBCaWxsaW5nIEFkZHJlc3M8L2gyPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgIG92ZXJmbG93WTogXCJhdXRvXCIsIFxuICAgICAgICAgICAgICAgICAgYm9yZGVyOiBcIjFweCBzb2xpZCAjZGRkXCIsXG4gICAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM6IFwiNXB4XCIsXG4gICAgICAgICAgICAgICAgICBwYWRkaW5nOiBcIjIwcHhcIixcbiAgICAgICAgICAgICAgICAgIHdpZHRoOiBcIjEwMCVcIixcbiAgICAgICAgICAgICAgICAgbWF4SGVpZ2h0OiBcIjIwMHB4XCJcbiAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8aDQ+WW91ciBhZGRyZXNzZXM8L2g0PlxuXG4gICAgICAgICAgICAgICAge3VzZXJBZGRyZXNzLm1hcCgoYWRkcmVzcywgaW5kZXgpID0+IChcbiAgICAgICAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICAgICAgICBrZXk9e2luZGV4fVxuICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IFwiYmxvY2tcIixcbiAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5Cb3R0b206IFwiMTBweFwiLFxuICAgICAgICAgICAgICAgICAgICAgIGN1cnNvcjogXCJwb2ludGVyXCIsXG4gICAgICAgICAgICAgICAgICAgICAgZm9udFdlaWdodDpcbiAgICAgICAgICAgICAgICAgICAgICAgI
1469HNlbGVjdGVkQWRkcmVzc0luZGV4ID09PSBhZGRyZXNzLmFkZHJlc3NJZCA/IFwiYm9sZFwiIDogXCJub3JtYWxcIixcbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIHNldE9wZW5CaWxsRm9ybShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgc2V0RXJyb3JzKHt9KTtcbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiYmlsbGluZ0FkZHJlc3NcIlxuICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9eyBzZWxlY3RlZEFkZHJlc3NJbmRleCA9PT0gYWRkcmVzcy5hZGRyZXNzSWQgfVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRTZWxlY3RlZEFkZHJlc3NJbmRleChhZGRyZXNzLmFkZHJlc3NJZCk7IFxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0TGFzdFNlbGVjdGVkQWRkcmVzc0luZGV4KGFkZHJlc3MuYWRkcmVzc0lkKTtcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7IG1hcmdpblJpZ2h0OiBcIjhweFwiIH19XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAge2FkZHJlc3MuY29udGFjdE5hbWV9LCAge2FkZHJlc3MuY291bnRyeX0sIHthZGRyZXNzLnN0YXRlfSwge2FkZHJlc3MuY2l0eX0sIHthZGRyZXNzLnBvc3RhbENvZGV9XG4gICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICkpfVxuXG4gICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgIGhyZWY9XCIjXCJcbiAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiBcIiMwMDdiZmZcIixcbiAgICAgICAgICAgICAgICAgICAgdGV4dERlY29yYXRpb246IFwibm9uZVwiLFxuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBcImlubGluZS1ibG9ja1wiLFxuICAgICAgICAgICAgICAgICAgICBtYXJnaW5Ub3A6IFwiMTBweFwiLFxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eyhlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgc2V0U2VsZWN0ZWRBZGRyZXNzSW5kZXgoXCJcIik7XG4gICAgICAgICAgICAgICAgICAgIHNldE9wZW5CaWxsRm9ybSh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlbGluaygpO1xuICAgICAgICAgICAgICAgICAgICBzZXRFcnJvcnMoe30pO1xuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICArQWRkIE5ldyBCaWxsaW5nIEFkZHJlc3NcbiAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKX1cblxuICAgICAgICAgIHtzdGVwID09PSAxICYmIE9wZW5CaWxsRm9ybSAmJiAoXG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IGRpc3BsYXk6IFwiZmxleFwiLCBmbGV4V3JhcDogXCJ3cmFwXCIsIGdhcDogXCIyMHB4XCIgfX0+XG4gICAgICAgICAgICAgICAgey8qIFJlbmRlciBmaWVsZHMgZnJvbSB0aGUgYXJyYXksIGV4Y2x1ZGluZyB6aXBDb2RlICovfVxuICAgICAgICAgICAgICAgIHtmaWVsZHNcbiAgICAgICAgICAgICAgICAgIC5maWx0ZXIoKGZpZWxkKSA9PiBmaWVsZC5uYW1lICE9PSBcInppcENvZGVcIilcbiAgICAgICAgICAgICAgICAgIC5tYXAoKGZpZWxkKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICBrZXk9e2ZpZWxkLm5hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgaW5wdXQtY29udGFpbmVyICR7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtRGF0YVtmaWVsZC5uYW1lIGFzIGtleW9mIEZvcm1EYXRhVHlwZV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPyBcImZpbGxlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJcIlxuICAgICAgICAgICAgICAgICAgICAgIH1gfVxuICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICBmbGV4OiBcIjEgMCAzMCVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIG1pbldpZHRoOiBcIjIwMHB4XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogXCJyZWxhdGl2ZVwiLFxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9e2ZpZWxkLm5hbWUgPT09IFwiZW1haWxcIiA/IFwiZW1haWxcIiA6IFwidGV4dFwifVxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT17ZmllbGQubmFtZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtmb3JtRGF0YVtmaWVsZC5uYW1lIGFzIGtleW9mIEZvcm1EYXRhVHlwZV19XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25Gb2N1cz17KGUpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGUuY3VycmVudFRhcmdldC5wYXJlbnRFbGVtZW50Py5jbGFzc0xpc3QuYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZm9jdXNlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cj17KGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlLmN1cnJlbnRUYXJnZXQudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLmN1cnJlbnRUYXJnZXQucGFyZW50RWxlbWVudD8uY2xhc3NMaXN0LnJlbW92ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZm9jdXNlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImZsb2F0aW5nLWlucHV0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgI
1469HN0eWxlPXt7IHdpZHRoOiBcIjEwMCVcIiwgcGFkZGluZzogXCIxMnB4IDhweCA0cHggOHB4XCIgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG1heExlbmd0aD17XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtcImZpcnN0TmFtZVwiLCBcImxhc3ROYW1lXCJdLmluY2x1ZGVzKGZpZWxkLm5hbWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAxNVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogZmllbGQubmFtZSA9PT0gXCJhZGRyZXNzTGluZTFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gMTAwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzTmFtZT1cImZsb2F0aW5nLWxhYmVsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7ZmllbGQubGFiZWwucmVwbGFjZShcIipcIiwgXCJcIil9XG4gICAgICAgICAgICAgICAgICAgICAgICB7W1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcImZpcnN0TmFtZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBcImxhc3ROYW1lXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiZW1haWxcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJhZGRyZXNzTGluZTFcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ6aXBDb2RlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBdLmluY2x1ZGVzKGZpZWxkLm5hbWUpICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9e3sgY29sb3I6IFwicmVkXCIgfX0+Kjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cblxuICAgICAgICAgICAgICAgICAgICAgIHtlcnJvcnNbZmllbGQubmFtZSBhcyBrZXlvZiBGb3JtRGF0YVR5cGVdICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIHN0eWxlPXt7IGNvbG9yOiBcInJlZFwiLCBtYXJnaW46IDAgfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtlcnJvcnNbZmllbGQubmFtZSBhcyBrZXlvZiBGb3JtRGF0YVR5cGVdfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgey8qIENvdW50cnkgKi99XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgZmxleDogXCIxIDAgMzAlXCIsIG1pbldpZHRoOiBcIjIwMHB4XCIgfX1cbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YGlucHV0LWNvbnRhaW5lciBjb3VudHJ5ICR7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkQ291bnRyeSA/IFwiZm9jdXNlZFwiIDogXCJcIlxuICAgICAgICAgICAgICAgICAgfWB9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgICAgICAgICBuYW1lPVwiY291bnRyeVwiXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXtzZWxlY3RlZENvdW50cnl9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDb3VudHJ5Q2hhbmdlfVxuICAgICAgICAgICAgICAgICAgICBvbkZvY3VzPXsoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIHNldElzQ291bnRyeUZvY3VzZWQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgZS5jdXJyZW50VGFyZ2V0LnBhcmVudEVsZW1lbnQ/LmNsYXNzTGlzdC5hZGQoXCJmb2N1c2VkXCIpO1xuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICBvbkJsdXI9eyhlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgc2V0SXNDb3VudHJ5Rm9jdXNlZChmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKCFlLmN1cnJlbnRUYXJnZXQudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGUuY3VycmVudFRhcmdldC5wYXJlbnRFbGVtZW50Py5jbGFzc0xpc3QucmVtb3ZlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBcImZvY3VzZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJcIiBzdHlsZT17eyBkaXNwbGF5OiBcIm5vbmVcIiB9fT48L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAge2lzQ291bnRyeUZvY3VzZWQgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJcIiBkaXNhYmxlZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdCBDb3VudHJ5XG4gICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgIHtjb3VudHJpZXMubWFwKChjb3VudHJ5KSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBrZXk9e2NvdW50cnkudmFsdWV9IHZhbHVlPXtjb3VudHJ5LnZhbHVlfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtjb3VudHJ5LmxhYmVsfVxuICAgICAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzTmFtZT1cImZsb2F0aW5nLWxhYmVsLWRkXCI+XG4gICAgICAgICAgICAgICAgICAgIFNlbGVjdCBDb3VudHJ5PHNwYW4gc3R5bGU9e3sgY29sb3I6IFwicmVkXCIgfX0+Kjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICB7ZXJyb3JzLmNvdW50cnkgJiYgKFxuICAgICAgICAgICAgICAgICAgICA8cCBzdHlsZT17eyBjb2xvcjogXCJyZWRcIiwgbWFyZ2luOiAwIH19PntlcnJvcnMuY291bnRyeX08L3A+XG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgey8qIFN0YXRlICovfVxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgI
1469HN0eWxlPXt7IGZsZXg6IFwiMSAwIDMwJVwiLCBtaW5XaWR0aDogXCIyMDBweFwiIH19XG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2BpbnB1dC1jb250YWluZXIgJHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRTdGF0ZSA/IFwiZm9jdXNlZFwiIDogXCJcIlxuICAgICAgICAgICAgICAgICAgfWB9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgICAgICAgICBuYW1lPVwic3RhdGVcIlxuICAgICAgICAgICAgICAgICAgICB2YWx1ZT17c2VsZWN0ZWRTdGF0ZX1cbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZVN0YXRlQ2hhbmdlfVxuICAgICAgICAgICAgICAgICAgICBvbkZvY3VzPXsoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIHNldElzU3RhdGVGb2N1c2VkKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgIGUuY3VycmVudFRhcmdldC5wYXJlbnRFbGVtZW50Py5jbGFzc0xpc3QuYWRkKFwiZm9jdXNlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgb25CbHVyPXsoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIHNldElzU3RhdGVGb2N1c2VkKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoIWUuY3VycmVudFRhcmdldC52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZS5jdXJyZW50VGFyZ2V0LnBhcmVudEVsZW1lbnQ/LmNsYXNzTGlzdC5yZW1vdmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiZm9jdXNlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIlwiIHN0eWxlPXt7IGRpc3BsYXk6IFwibm9uZVwiIH19Pjwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICB7aXNTdGF0ZUZvY3VzZWQgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJcIiBkaXNhYmxlZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdCBTdGF0ZVxuICAgICAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICB7c3RhdGVzLm1hcCgoc3RhdGUpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIGtleT17c3RhdGUudmFsdWV9IHZhbHVlPXtzdGF0ZS52YWx1ZX0+XG4gICAgICAgICAgICAgICAgICAgICAgICB7c3RhdGUubGFiZWx9XG4gICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3NOYW1lPVwiZmxvYXRpbmctbGFiZWwtZGRcIj5cbiAgICAgICAgICAgICAgICAgICAgU2VsZWN0IFN0YXRlPHNwYW4gc3R5bGU9e3sgY29sb3I6IFwicmVkXCIgfX0+Kjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICB7ZXJyb3JzLnN0YXRlICYmIChcbiAgICAgICAgICAgICAgICAgICAgPHAgc3R5bGU9e3sgY29sb3I6IFwicmVkXCIsIG1hcmdpbjogMCB9fT57ZXJyb3JzLnN0YXRlfTwvcD5cbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICB7LyogQ2l0eSAqL31cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBzdHlsZT17eyBmbGV4OiBcIjEgMCAzMCVcIiwgbWluV2lkdGg6IFwiMjAwcHhcIiB9fVxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgaW5wdXQtY29udGFpbmVyICR7c2VsZWN0ZWRDaXR5ID8gXCJmb2N1c2VkXCIgOiBcIlwifWB9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgICAgICAgICBuYW1lPVwiY2l0eVwiXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXtzZWxlY3RlZENpdHl9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaXR5Q2hhbmdlfVxuICAgICAgICAgICAgICAgICAgICBvbkZvY3VzPXsoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIHNldElzQ2l0eUZvY3VzZWQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgZS5jdXJyZW50VGFyZ2V0LnBhcmVudEVsZW1lbnQ/LmNsYXNzTGlzdC5hZGQoXCJmb2N1c2VkXCIpO1xuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICBvbkJsdXI9eyhlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgc2V0SXNDaXR5Rm9jdXNlZChmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKCFlLmN1cnJlbnRUYXJnZXQudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGUuY3VycmVudFRhcmdldC5wYXJlbnRFbGVtZW50Py5jbGFzc0xpc3QucmVtb3ZlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBcImZvY3VzZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJcIiBzdHlsZT17eyBkaXNwbGF5OiBcIm5vbmVcIiB9fT48L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAge2lzQ2l0eUZvY3VzZWQgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJcIiBkaXNhYmxlZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdCBDaXR5XG4gICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgIHtjaXRpZXMubWFwKChjaXR5KSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBrZXk9e2NpdHkudmFsdWV9IHZhbHVlPXtjaXR5LnZhbHVlfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtjaXR5LmxhYmVsfVxuICAgICAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzTmFtZT1cImZsb2F0aW5nLWxhYmVsLWRkXCI+XG4gICAgICAgICAgICAgICAgICAgIFNlbGVjdCBDaXR5PHNwYW4gc3R5bGU9e3sgY29sb3I6IFwicmVkXCIgfX0+Kjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICB7ZXJyb3JzLmNpdHkgJiYgKFxuICAgICAgICAgICAgICAgICAgICA8cCBzdHlsZT17eyBjb2xvcjogXCJyZWRcIiwgbWFyZ2luOiAwIH19PntlcnJvcnMuY2l0eX08L3A+XG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgey8qIFppcCBDb2RlIC0gT1VUU0lERSB0aGUgbWFwICovfVxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgI
1469HN0eWxlPXt7IGZsZXg6IFwiMSAwIDMwJVwiLCBtaW5XaWR0aDogXCIyMDBweFwiIH19XG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2BpbnB1dC1jb250YWluZXIgJHtcbiAgICAgICAgICAgICAgICAgICAgZm9ybURhdGEuemlwQ29kZSA/IFwiZmlsbGVkXCIgOiBcIlwiXG4gICAgICAgICAgICAgICAgICB9YH1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICBuYW1lPVwiemlwQ29kZVwiXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXtmb3JtRGF0YS56aXBDb2RlfVxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfVxuICAgICAgICAgICAgICAgICAgICBvbkZvY3VzPXsoZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICBlLmN1cnJlbnRUYXJnZXQucGFyZW50RWxlbWVudD8uY2xhc3NMaXN0LmFkZChcImZvY3VzZWRcIilcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBvbkJsdXI9eyhlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKCFlLmN1cnJlbnRUYXJnZXQudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGUuY3VycmVudFRhcmdldC5wYXJlbnRFbGVtZW50Py5jbGFzc0xpc3QucmVtb3ZlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBcImZvY3VzZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImZsb2F0aW5nLWlucHV0XCJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgd2lkdGg6IFwiMTAwJVwiLCBwYWRkaW5nOiBcIjEycHggOHB4IDRweCA4cHhcIiB9fVxuICAgICAgICAgICAgICAgICAgICBtYXhMZW5ndGg9ezE1fVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzc05hbWU9XCJmbG9hdGluZy1sYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICBaaXAgQ29kZTxzcGFuIHN0eWxlPXt7IGNvbG9yOiBcInJlZFwiIH19Pio8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAge2Vycm9ycy56aXBDb2RlICYmIChcbiAgICAgICAgICAgICAgICAgICAgPHAgc3R5bGU9e3sgY29sb3I6IFwicmVkXCIsIG1hcmdpbjogMCB9fT57ZXJyb3JzLnppcENvZGV9PC9wPlxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICApfVxuXG4gICAgICAgICB7c3RlcCA9PT0gMSAmJiAgKE9wZW5CaWxsIHx8IE9wZW5CaWxsRm9ybSkgJiYgKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjdXNfYnRuc19zZXQgbXktM1wiPlxuICAgICAgICAgICAgICAgIDxidXR0b24gb25DbGljaz17aGFuZGxlTmV4dH0gY2xhc3NOYW1lPVwiY3VzX2NvbnRpbnVlX2J0bl9zXCI+XG4gICAgICAgICAgICAgICAgICB7T3BlbkJpbGxGb3JtID8gJ1NhdmUgQW5kIENvbnRpbnVlJyA6ICdDb250aW51ZSd9XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICl9XG5cbiAgICAgICAgICB7c3RlcCA9PT0gMiAmJiAoXG4gICAgICAgICAgICA8PlxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIHtjaG9vc2VkUGxhbiAmJiAoXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImN1c19tX3llYXJseV9sYWJlbHNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJwbGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPVwibW9udGhseVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjaGVja2VkPXtzZWxldGVkUGxhbl8gPT09IFwibW9udGhseVwifVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eygpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZVBsYW5DaGFuZ2UobW9udGhseVBsYW4/LnByaWNlSWQsIFwibW9udGhseVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIC8+e1wiIFwifVxuICAgICAgICAgICAgICAgICAgICAgIE1vbnRobHlcbiAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPGJyIC8+XG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwicGxhblwiXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT1cInllYXJseVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjaGVja2VkPXtzZWxldGVkUGxhbl8gPT09IFwieWVhcmx5XCJ9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlUGxhbkNoYW5nZSh5ZWFybHlQbGFuPy5wcmljZUlkLCBcInllYXJseVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIC8+e1wiIFwifVxuICAgICAgICAgICAgICAgICAgICAgIFllYXJseVxuICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgICAgIHtzZWxldGVkUGxhbl8gPT09IFwibW9udGhseVwiICYmIChcbiAgICAgICAgICAgICAgICAgIDxQYXltZW50R2F0ZVdheU1vbnRoIHVzZXJDYXJ0RGV0YWlscz17VXNlckNhcnREZXRhaWxzfSAvPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAge3NlbGV0ZWRQbGFuXyA9PT0gXCJ5ZWFybHlcIiAmJiAoXG4gICAgICAgICAgICAgICAgICA8UGF5bWVudEdhdGVXYXlZZWFyIHVzZXJDYXJ0RGV0YWlscz17VXNlckNhcnREZXRhaWxzfSAvPlxuICAgICAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImN1c19idG5zX3NldFwiPlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBvbkNsaWNrPXtoYW5kbGVCYWNrfSBjbGFzc05hbWU9XCJiYWNrX2J0bl9wZ1wiPlxuICAgICAgICAgICAgICAgICAgICBCYWNrXG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17aGFuZGxlUGF5bWVudH1cbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgbWFyZ2luTGVmdDogMTAgfX1cbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiY3VzX2NvbnRpbnVlX2J0bl9zXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgQ29udGludWVcbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvPlxuICAgICAgICAgICl9XG4gICAgICAgICAge3N0ZXAgPT09IDMgJiYgKFxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjYXJkIGN1c19zdWNjZXNzX2NhcmRcIj5cbiAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJweS1zdWNjZXNzLWhlYWRcIj5QYXltZW50IFN1Y2Nlc3NmdWw8L3A+XG4gICAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgICAgYWx0PVwiY29va2llXCJcbiAgICAgICAgICAgICAgICAgI
1469HNyYz17dG9BYnNvbHV0ZVVybChcIm1lZGlhL21pc2MvcGF5bWVudHN1Y2Nlc3MucG5nXCIpfVxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwic3NmLW1zZy10by1qaW0tdGlja19jXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIHsvKiA8ZGl2IGNsYXNzTmFtZT1cInB1cmNoYXNlX2NvblwiPlxuICAgICAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgICAgICBhbHQ9XCJwdXJjaGFzZSBjb25maXJtXCJcbiAgICAgICAgICAgICAgICAgICAgc3JjPXt0b0Fic29sdXRlVXJsKFwibWVkaWEvbWlzYy9wdXJjaGFzZV9jb25maXJtLnBuZ1wiKX1cbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwic3NmLW1zZy10by1qaW0tdGlja19wY1wiXG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgPHNwYW4+UHVyY2hhc2UgQ29uZmlybWVkITwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj4gKi99XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImN1c19tc2dfcGNfaW5mb1wiPlxuICAgICAgICAgICAgICAgIDxkaXY+WW91ciBTaXggU2lnbWEgRnVubmVsczwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXY+U3Vic2NyaXB0aW9uIGlzIE5vdyBBY3RpdmUuPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICB7LyogPGRpdiBjbGFzc05hbWU9J2N1c19tc2dfcGNfaW5mbyc+WW91ciBNb250aGx5IFBsYW4gb2YgJCAxOTcgaXMgQWN0aXZlIFxuICAgICAgICAgICAgRW5qb3kgZnVsbCBhY2Nlc3MgdG8gb3VyIHNlcnZpY2VzLjwvZGl2PiAqL31cbiAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgaHJlZj17cG9ydGFsVXJsICsgYC8ke0NVUkVFTlRfQ09NUEFOWV9OQU1FfS9jaGVja2xpc3RgfVxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidmlld19kYXNoYm9hcmRfYnRuXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICBTdGFydCBDb25uZWN0aW5nXG4gICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9Db250ZW50PlxuICAgIDwvPlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgUGF5bWVudEdhdGV3YXk7XG4iXSwibmFtZXMiOlsiUmVhY3QiLCJ1c2VTdGF0ZSIsInVzZUVmZmVjdCIsInVzZUxvY2F0aW9uIiwidXNlU2VhcmNoUGFyYW1zIiwiQ29udGVudCIsIlBheW1lbnRHYXRlV2F5TW9udGgiLCJQYXltZW50R2F0ZVdheVllYXIiLCJ0b0Fic29sdXRlVXJsIiwiQ1VSRUVOVF9DT01QQU5ZX05BTUUiLCJHRVRfQUxMX1NVQlNDUklQVElPTlBMQU5TIiwiR0VUX0FMTF9VU0VSQUREUkVTUyIsIkdFVF9PUkRFUiIsIlBPU1RfQ1JFQVRFX0NIRUNLT1VUX1NFU1NJT04iLCJQT1NUX0NSRUFURV9VU0VSX0FERFJFU1MiLCJSRUdFWF9OT19OVU1CRVJfT1JfU1BFQ0lBTCIsIlJFR0VYX05PX1NQQUNFUyIsIlJFR0VYX0VNQUlMIiwiYXhpb3MiLCJkaXNhYmxlUGF5bWVudFNwbGFzaFNjcmVlbiIsImRpc2FibGVTcGxhc2hTY3JlZW4iLCJlbmFibGVQYXltZW50U3BsYXNoU2NyZWVuIiwiZW5hYmxlU3BsYXNoU2NyZWVuIiwidXNlQXV0aCIsIlN3YWwiLCJpbml0aWFsRm9ybURhdGEiLCJmaXJzdE5hbWUiLCJsYXN0TmFtZSIsImVtYWlsIiwiY291bnRyeSIsInN0YXRlIiwiY2l0eSIsInppcENvZGUiLCJhZGRyZXNzTGluZTEiLCJhZGRyZXNzTGluZTIiLCJQYXltZW50R2F0ZXdheSIsInN0ZXAiLCJzZXRTdGVwIiwiYXZhaWxhYmxlU3RhdGVzIiwic2V0QXZhaWxhYmxlU3RhdGVzIiwiYXZhaWxhYmxlQ2l0aWVzIiwic2V0QXZhaWxhYmxlQ2l0aWVzIiwic2F2ZWRFbWFpbCIsInNldFNhdmVkRW1haWwiLCJlcnJvcnMiLCJzZXRFcnJvcnMiLCJ2aXNpdGVkU3RlcHMiLCJzZXRWaXNpdGVkU3RlcHMiLCJzZWFyY2hQYXJhbXMiLCJjaG9vc2VkUGxhbiIsInNldENob29zZWRQbGFuIiwic2VsZXRlZFBsYW5fIiwic2V0U2VsZXRlZFBsYW5fIiwiY3VycmVudFVzZXIiLCJzZXRDdXJyZW50VXNlciIsIm9yZGVySWQiLCJzZXRPcmRlcklkIiwiVXNlckNhcnREZXRhaWxzIiwic2V0VXNlckNhcnREZXRhaWxzIiwicHJpY2VJZCIsInNldFByaWNlSWQiLCJzdGF0dXMiLCJzZXRTdGF0dXMiLCJsb2NhdGlvbiIsImZsYWciLCJzZXRGbGFnIiwiY291cG9uQ29kZSIsInNldENvdXBvbkNvZGUiLCJwb3J0YWxVcmwiLCJ3aW5kb3ciLCJvcmlnaW4iLCJzdWJzY3JpcHRpb25QbGFuRGV0YWlscyIsInNldFN1YnNjcmlwdGlvblBsYW5EZXRhaWxzIiwibW9udGhseVBsYW4iLCJzZXRNb250aGx5UGxhbiIsInllYXJseVBsYW4iLCJzZXRZZWFybHlQbGFuIiwiY291bnRyaWVzIiwic2V0Q291bnRyaWVzIiwic3RhdGVzIiwic2V0U3RhdGVzIiwiY2l0aWVzIiwic2V0Q2l0aWVzIiwic2VsZWN0ZWRDb3VudHJ5Iiwic2V0U2VsZWN0ZWRDb3VudHJ5IiwiT3BlbkJpbGwiLCJzZXRPcGVuQmlsbCIsInNlbGVjdGVkU3RhdGUiLCJzZXRTZWxlY3RlZFN0YXRlIiwic2VsZWN0ZWRDaXR5Iiwic2V0U2VsZWN0ZWRDaXR5IiwiaXNDb3VudHJ5Rm9jdXNlZCIsInNldElzQ291bnRyeUZvY3VzZWQiLCJpc1N0YXRlRm9jdXNlZCIsInNldElzU3RhdGVGb2N1c2VkIiwiaXNDaXR5Rm9jdXNlZCIsInNldElzQ2l0eUZvY3VzZWQiLCJ1c2VyQWRkcmVzcyIsInNldFVzZXJBZGRyZXNzIiwic2VsZWN0ZWRBZGRyZXNzSW5kZXgiLCJzZXRTZWxlY3RlZEFkZHJlc3NJbmRleCIsImxhc3RTZWxlY3RlZEFkZHJlc3NJbmRleCIsInNldExhc3RTZWxlY3RlZEFkZHJlc3NJbmRleCIsImJhY2tCdG5GbGFnIiwic2V0QmFja0J0bkZsYWciLCJPcGVuQmlsbEZvcm0iLCJzZXRPcGVuQmlsbEZvcm0iLCJvcGVuZm9ybSIsInNldG9wZW5mb3JtIiwiZm9ybURhdGEiLCJzZXRGb3JtRGF0YSIsInF1ZXJ5UGFyYW1zIiwiVVJMU2VhcmNoUGFyYW1zIiwic2VhcmNoIiwic2VsZWN0ZWRQbGFuIiwiZ2V0IiwicGxhblR5cGUiLCJnZXRTdWJzY3JpcHRpb25QbGFuRGV0YWlscyIsImNvbnNvbGUiLCJsb2ciLCJnZXRQbGFuRGV0YWlsc0J5U2VsbFByaWNlIiwicmVzcG9uc2UiLCJkYXRhIiwiZSIsImVycm9yIiwicGxhbnMiLCJtYXRjaGVkTW9udGhseVBsYW4iLCJmaW5kIiwicGxhbiIsIm5hbWUiLCJ0b0xvd2VyQ2FzZSIsImluY2x1ZGVzIiwibWF0Y2hlZFllYXJseVBsYW4iLCJnZXRPcmRlcndpdGhQbGFuIiwicGFyc2VJbnQiLCJzZXNzaW9uT3JkZXJJZCIsInNlc3Npb25TdG9yYWdlIiwiZ2V0SXRlbSIsInBvc3QiLCJoYW5kbGVDaGFuZ2UiLCJ2YWx1ZSIsInRhcmdldCIsInRlc3QiLCJwcmV2RXJyb3JzIiwicHJldiIsIm5ld0Vycm9ycyIsInZhbGlkYXRlU3RlcDEiLCJ0cmltIiwibGVuZ3RoIiwiT2JqZWN0Iiwia2V5cyIsImFkZHJlc3NJZCIsImxhdGVzdEFkZHJl
1469c3NJZCIsImhhbmRsZU5leHQiLCJjcmVhdGVVc2VyQWRkcmVzcyIsImhhbmRsZVBsYW5DaGFuZ2UiLCJvcmRlclJlc3BvbnNlIiwicGFyYW1zIiwic2V0IiwibmV3VXJsIiwicGF0aG5hbWUiLCJ0b1N0cmluZyIsImhpc3RvcnkiLCJyZXBsYWNlU3RhdGUiLCJoYW5kbGVQYXltZW50IiwiY3VycmVuY3kiLCJkb21haW5VcmwiLCJjb21wYW55TmFtZSIsInNlc3Npb25VcmwiLCJsb2NhbFN0b3JhZ2UiLCJyZW1vdmVJdGVtIiwiaHJlZiIsIm1lc3NhZ2UiLCJmaXJlIiwiaW1hZ2VVcmwiLCJpbWFnZVdpZHRoIiwiaW1hZ2VIZWlnaHQiLCJ0aXRsZSIsImh0bWwiLCJjb25maXJtQnV0dG9uVGV4dCIsImNvbmZpcm1CdXR0b25Db2xvciIsImFsZXJ0IiwiZ2V0Y3VycmVudGRhdGEiLCJyYXdEYXRhIiwic2ltcGxpZmllZCIsIm1hcCIsImFkZHIiLCJsaW5lMSIsImxpbmUyIiwicGhvbmUiLCJjb250YWN0TmFtZSIsInBvc3RhbENvZGUiLCJoYW5kbGVvcGVuZm9ybSIsImhhbmRsZWxpbmsiLCJoYW5kbGVCYWNrIiwiYWRkcmVzc1R5cGUiLCJmaWVsZHMiLCJsYWJlbCIsImhhbmRsZUNvdW50cnlDaGFuZ2UiLCJjb3VudHJ5Q29kZSIsInBhcmVudCIsImNsb3Nlc3QiLCJjbGFzc0xpc3QiLCJhZGQiLCJyZW1vdmUiLCJ0aGVuIiwic3RhdGVPcHRpb25zIiwiY2F0Y2giLCJmaW5hbGx5IiwiaGFuZGxlU3RhdGVDaGFuZ2UiLCJzdGF0ZUNvZGUiLCJjaXR5T3B0aW9ucyIsImhhbmRsZUNpdHlDaGFuZ2UiLCJzZWxlY3RlZE9wdGlvbiIsInN0ZXBMYWJlbHMiLCJkaXYiLCJzdHlsZSIsIndpZHRoIiwibWFyZ2luIiwicGFkZGluZyIsImNsYXNzTmFtZSIsImgyIiwib3ZlcmZsb3dZIiwiYm9yZGVyIiwiYm9yZGVyUmFkaXVzIiwibWF4SGVpZ2h0IiwiaDQiLCJhZGRyZXNzIiwiaW5kZXgiLCJkaXNwbGF5IiwibWFyZ2luQm90dG9tIiwiY3Vyc29yIiwiZm9udFdlaWdodCIsIm9uQ2xpY2siLCJpbnB1dCIsInR5cGUiLCJjaGVja2VkIiwib25DaGFuZ2UiLCJtYXJnaW5SaWdodCIsImEiLCJjb2xvciIsInRleHREZWNvcmF0aW9uIiwibWFyZ2luVG9wIiwicHJldmVudERlZmF1bHQiLCJmbGV4V3JhcCIsImdhcCIsImZpbHRlciIsImZpZWxkIiwiZmxleCIsIm1pbldpZHRoIiwicG9zaXRpb24iLCJvbkZvY3VzIiwiY3VycmVudFRhcmdldCIsInBhcmVudEVsZW1lbnQiLCJvbkJsdXIiLCJtYXhMZW5ndGgiLCJ1bmRlZmluZWQiLCJyZXBsYWNlIiwic3BhbiIsInAiLCJzZWxlY3QiLCJvcHRpb24iLCJkaXNhYmxlZCIsImJ1dHRvbiIsImJyIiwidXNlckNhcnREZXRhaWxzIiwibWFyZ2luTGVmdCIsImltZyIsImFsdCIsInNyYyJdLCJyYW5nZU1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
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.