{"version":3,"sources":["components/CheckoutForm/FormFields.js","components/CheckoutForm/VatInput.js","components/CheckoutForm/DiscountCode.js","components/CheckoutForm/index.js","containers/SubscriptionCheckoutPage/CheckoutProgress.js","containers/SubscriptionCheckoutPage/SignupForm.js","containers/SubscriptionCheckoutPage/Welcome.js","containers/SubscriptionCheckoutPage/SubscriptionSummaryWelcome.js","containers/SubscriptionCheckoutPage/SubscriptionSummary.js","containers/SubscriptionCheckoutPage/index.js","actions/checkoutAction.js","components/Img/index.js","actions/cartAction.js","components/SubscriptionHeading/index.js","components/SignInForm/index.js","components/StripePaymentsBanner/index.js"],"names":["FormFields","props","state","firstName","lastName","organisation","organisationUrl","address","city","stateRegion","zip","poNumber","vatNumber","handleInputChange","bind","event","target","name","inputValue","type","checked","value","this","setState","className","htmlFor","onChange","onBlur","handleInputBlur","autoComplete","id","disabled","working","formErrors","selectedPlan","plan_category","Component","VatInput","error","showVatField","validated","isValidating","inlineValidateVat","validateVat","removeVatNumber","toggleOptionalFields","length","match","e","preventDefault","setHasValidVatNumber","checkVatNumber","then","data","success","style","cursor","onClick","href","connect","dispatch","hasValidVatNumber","DiscountCode","discountCode","validateDiscountCode","removeDiscountCode","setSubscriptionDiscount","drip","periodId","Config","PERIOD_ID","YEARLY","isMonthly","MONTHLY","authToken","getAuthToken","checkDiscountCode","selectedPlanId","currencyId","monthlyDiscount","monthly_discount","parseFloat","monthlyDuration","months_active","parseInt","discount","code","discountId","amount","message","slice","CheckoutForm","dripFormComplete","dripCardNameEntered","stripeError","orderId","orderValue","orderValueAnnual","adwordsConversionId","adwordsConversionLabel","orderTax","orderCurrencyCode","orderNativeValue","scaRequest","country","userCountry","countries","showPoField","agreedToCommitment","cardName","showRecaptcha","recaptchaValue","showRecaptchaV2","recaptchaV2Token","recaptchaV3Token","nameOnCard","recaptcha","checkTimer","checkCount","dripFormCheck","handleDropdownChange","captchaOnChange","getFieldValue","purchaseSubscription","checkOrderStatus","sendOrderFailedReason","purchaseSuccessActions","submit","fetchCountries","countryOptions","_","map","index","key","text","vat_rate","iso_code_2","iso_code2","catch","err","prevProps","window","clearTimeout","newCountry","find","loadCountry","field","elementId","returnValue","document","getElementById","trim","ev","a","formValid","genericError","vatIsValidated","$","attr","scrollToTerms","scrollPosition","offset","top","animate","scrollTop","countryData","stripeDetails","address_line1","address_city","address_state","address_zip","address_country","recaptchaToken","checkRecaptchaV3","stripe","createToken","token","createPaymentMethod","billing_details","line1","postal_code","paymentMethod","currency","plan","period","recaptchaVersion","stripeToken","addressLine1","formData","FormData","append","fetch","API","method","body","res","json","setupSite","status","loadUserData","user","isPaymentTabDisplay","isSubscriptionTabDisplay","isEmpty","subscriptionData","retryTime","setTimeout","reason","ajax","url","response","addons","isActive","isExpired","isFreeTrial","plan_type","description","checkoutDesc","dataLayerInfo","subPlanName","subPlanCode","subPlanId","subAnnualValue","transactionId","transactionTax","transactionTotal","transactionCurrencyCode","transactionNativeTotal","dataLayer","push","documentElement","loadSubscriptionData","emptySubscriptionCart","cartData","apiUrl","orderState","order_id","order_value","order_value_annual","adwords_conversion_id","adwords_conversion_label","order_tax","order_currency_code","order_native_value","clientSecret","handleCardPayment","paymentIntent","errorMsg","includes","Dropdown","placeholder","fluid","search","selection","options","height","width","Date","color","marginTop","sitekey","RECAPTCHA_V2_KEY","SpinnerIcon","StripePaymentsBanner","get","setSubAnnualOrMonthly","injectStripe","React","SignupForm","recaptchaResponse","firstLastName","email","password","general","handleAddModal","formIsValid","makeCheckoutRegisterAttempt","DEBUG_SIGNUP","Math","random","toString","substring","onAddModal","addClass","test","userDetails","first_last_name","recaptcha_version","suppress_welcome","recaptcha_token","rt_code","localStorage","getItem","param","ajaxSetup","headers","xhrFields","withCredentials","post","Object","assign","done","onSetupSite","fail","Promise","resolve","reject","sessionStorage","removeItem","setItem","symbol_left","basket_data","tracks","count","JSON","stringify","playlists_data","favourites_data","isTrusted","trustedName","be_branch","replace","is_authenticated","auth_token","setCookie","hasAccountArtist","hasAccountCustomer","hasAccountAdmin","loadFavorites","loadFollowing","following","loadCurrency","userAuthKey","userDisplayName","company","userHasCustomerAccount","userHasArtistAccount","onSetLoginStatus","A","to","marginBottom","signup","favorites","isLoggedIn","setLoginStatus","modal","addModal","Welcome","profession","removeClass","src","hasEnteredProfession","submittingProfession","submitSupplementalUserData","SubscriptionSummaryWelcome","varAmountB","varAmountG","budgetCreatorLimitedText","budgetProLimitedText","budgetProUnlimitedText","mediaLimitedText","mediaUnlimitedText","budgetDisplayText","mediaDisplayText","periodText","SubscriptionHeading","planName","SubscriptionSummary","num","round","budgetIsExtended","mediaIsExtended","currencyCode","toLowerCase","selectedPrice","monthly","price","yearly","subtotal","subscriptionCart","discountAmount","currencyRound","vat","total","noDiscountVat","noDiscountTotal","discountText","discountTextFade","pricePreview","tax","toLocaleString","minimumFractionDigits","monthlyBillingText","monthlyBillingFontSmall","monthlyEquiv","splitPrice","toFixed","split","toggleText","classnames","extended","extendSelectedPlan","tax_rate","isAmbiguous","textDecoration","SubscriptionCheckoutPage","tab","allPlanData","startedSignedIn","userAuth","loading","customerHasActivePlan","isActiveOrSuspended","pricePreviewLoading","changeSubscriptionPlan","setSubAnnualOrMonthlyWithDiscount","recalculateDiscount","loadPricePreview","cartChanged","justLoggedIn","fetchSubscriptionPricePreview","planId","countryId","couponId","fetchSubscriptionPlansAndAddons","isNaN","plans","dripProductView","newPlanId","addSubscriptionToCart","representative","option","newPlan","selectedNewsletters","welcomeUrl","selectedProfession","val","join","router","setEnteredProfession","title","meta","content","apiKey","STRIPE_PUBLIC_KEY","fontSize","mapDispatchToProps","subscriptionId","enteredProfession","fetchVatRate","countryCode","conditionallyGetCdnApi","countryID","BASE_API_URL","recalculateBasket","isValid","params","URLSearchParams","country_id","vat_number_valid","vat_number","fetchCheckoutBasket","credentials","updateCheckoutBasket","updatePaymentOrderStatus","updateOrderStatus","fetchOrderConfirmation","orderID","Img","alt","addToCart","fromPage","charAt","toUpperCase","fetchBasket","addArtistTip","updateQuantity","trackID","quantity","basket_track_id","updateBasket","updateBasketTrackLicenses","removeBasketTrack","name1","name2","substr","indexOf","defaultProps","SignInForm","loginEmail","hasQuickLoginEmail","resetModalForm","handleChange","handleLogin","_handleKeyPress","showLoginStageTwo","makeLoginAttempt","redirect","showSigninSuccess","resetLoginModal","position","display","autoFocus","checkProvidedEmail","onKeyPress","onSubmitSupplementalUserData","onSetAppliedFilters","locationQuery","setAppliedFilters","onSetNotFiltered","setNotFiltered","showNotificationSuccess","timer","animateInTooltip","hideNotificationSuccess","animateOutTooltip","hideSigninSuccess"],"mappings":"sZAqGeA,E,kDA5Fb,WAAYC,GAAQ,IAAD,8BACjB,cAAMA,IAEDC,MAAQ,CACXC,UAAW,GACXC,SAAU,GACVC,aAAc,GACdC,gBAAiB,GACjBC,QAAS,GACTC,KAAM,GACNC,YAAa,GACbC,IAAK,GACLC,SAAU,GACVC,UAAW,IAGb,EAAKC,kBAAoB,EAAKA,kBAAkBC,KAAvB,gBAhBR,E,qDAmBnB,SAAkBC,GAChB,IAAMC,EAASD,EAAMC,OACfC,EAAOD,EAAOC,KACdC,EAA6B,aAAhBF,EAAOG,KAAsBH,EAAOI,QAAUJ,EAAOK,MAExEC,KAAKC,SAAL,eACGN,EAAOC,M,oBAIZ,WACE,OACE,eAAC,WAAD,WACE,sBAAKM,UAAU,kBAAf,UACE,uBAAOC,QAAQ,iBAAf,wBACA,uBAAON,KAAK,OAAOO,SAAUJ,KAAKT,kBAAmBc,OAAQL,KAAKrB,MAAM2B,gBAAiBP,MAAOC,KAAKpB,MAAMC,UAAW0B,aAAa,aAAaZ,KAAK,YAAYa,GAAG,iBAAiBC,SAAUT,KAAKrB,MAAM+B,UACxMV,KAAKrB,MAAMgC,WAAW9B,WACtB,mBAAGqB,UAAU,aAAb,SAA2BF,KAAKrB,MAAMgC,WAAW9B,eAGrD,sBAAKqB,UAAU,kBAAf,UACE,uBAAOC,QAAQ,gBAAf,uBACA,uBAAON,KAAK,OAAOO,SAAUJ,KAAKT,kBAAmBc,OAAQL,KAAKrB,MAAM2B,gBAAiBP,MAAOC,KAAKpB,MAAME,SAAUyB,aAAa,cAAcZ,KAAK,WAAWa,GAAG,gBAAgBC,SAAUT,KAAKrB,MAAM+B,UACtMV,KAAKrB,MAAMgC,WAAW7B,UACtB,mBAAGoB,UAAU,aAAb,SAA2BF,KAAKrB,MAAMgC,WAAW7B,cAGT,IAA1CkB,KAAKrB,MAAMiC,aAAaC,eACxB,eAAC,WAAD,WACE,sBAAKX,UAAU,kBAAf,UACE,uBAAOC,QAAQ,mBAAf,0BACA,uBAAON,KAAK,OAAOO,SAAUJ,KAAKT,kBAAmBc,OAAQL,KAAKrB,MAAM2B,gBAAiBP,MAAOC,KAAKpB,MAAMG,aAAcwB,aAAa,eAAeZ,KAAK,eAAea,GAAG,mBAAmBC,SAAUT,KAAKrB,MAAM+B,aAEtN,sBAAKR,UAAU,kBAAf,UACE,uBAAOC,QAAQ,uBAAf,8BACA,uBAAON,KAAK,OAAOO,SAAUJ,KAAKT,kBAAmBc,OAAQL,KAAKrB,MAAM2B,gBAAiBP,MAAOC,KAAKpB,MAAMI,gBAAiBuB,aAAa,MAAMZ,KAAK,kBAAkBa,GAAG,uBAAuBC,SAAUT,KAAKrB,MAAM+B,gBAI3N,sBAAKR,UAAU,SAAf,UACE,uBAAOC,QAAQ,cAAf,qBACA,uBAAON,KAAK,OAAOO,SAAUJ,KAAKT,kBAAmBc,OAAQL,KAAKrB,MAAM2B,gBAAiBP,MAAOC,KAAKpB,MAAMK,QAASsB,aAAa,yBAAyBZ,KAAK,UAAUa,GAAG,cAAcC,SAAUT,KAAKrB,MAAM+B,UAC7MV,KAAKrB,MAAMgC,WAAW1B,SACtB,mBAAGiB,UAAU,aAAb,SAA2BF,KAAKrB,MAAMgC,WAAW1B,aAGrD,sBAAKiB,UAAU,kBAAf,UACE,uBAAOC,QAAQ,WAAf,kBACA,uBAAON,KAAK,OAAOO,SAAUJ,KAAKT,kBAAmBc,OAAQL,KAAKrB,MAAM2B,gBAAiBP,MAAOC,KAAKpB,MAAMM,KAAMqB,aAAa,yBAAyBZ,KAAK,OAAOa,GAAG,WAAWC,SAAUT,KAAKrB,MAAM+B,UACpMV,KAAKrB,MAAMgC,WAAWzB,MACtB,mBAAGgB,UAAU,aAAb,SAA2BF,KAAKrB,MAAMgC,WAAWzB,UAGrD,sBAAKgB,UAAU,kBAAf,UACE,uBAAOC,QAAQ,mBAAf,0BACA,uBAAON,KAAK,OAAOO,SAAUJ,KAAKT,kBAAmBc,OAAQL,KAAKrB,MAAM2B,gBAAiBP,MAAOC,KAAKpB,MAAMO,YAAaoB,aAAa,yBAAyBZ,KAAK,cAAca,GAAG,mBAAmBC,SAAUT,KAAKrB,MAAM+B,UAC1NV,KAAKrB,MAAMgC,WAAWxB,aACtB,mBAAGe,UAAU,aAAb,SAA2BF,KAAKrB,MAAMgC,WAAWxB,iBAGrD,sBAAKe,UAAU,kBAAf,UACE,uBAAOC,QAAQ,iBAAf,6BACA,uBAAON,KAAK,OAAOO,SAAUJ,KAAKT,kBAAmBc,OAAQL,KAAKrB,MAAM2B,gBAAiBP,MAAOC,KAAKpB,MAAMQ,IAAKmB,aAAa,sBAAsBZ,KAAK,MAAMa,GAAG,iBAAiBC,SAAUT,KAAKrB,MAAM+B,UACrMV,KAAKrB,MAAMgC,WAAWvB,KACtB,mBAAGc,UAAU,aAAb,SAA2BF,KAAKrB,MAAMgC,WAAWvB,gB,GApFpC0B,a,0BCInBC,E,kDACJ,WAAYpC,GAAQ,IAAD,8BACjB,cAAMA,IAEDC,MAAQ,CACXU,UAAW,GACX0B,OAAO,EACPC,cAAc,EACdC,WAAW,EACXC,cAAc,GAGhB,EAAK5B,kBAAoB,EAAKA,kBAAkBC,KAAvB,gBACzB,EAAK4B,kBAAoB,EAAKA,kBAAkB5B,KAAvB,gBACzB,EAAK6B,YAAc,EAAKA,YAAY7B,KAAjB,gBACnB,EAAK8B,gBAAkB,EAAKA,gBAAgB9B,KAArB,gBACvB,EAAK+B,qBAAuB,EAAKA,qBAAqB/B,KAA1B,gBAfX,E,wDAkBnB,WACOQ,KAAKpB,MAAM8B,UAIZV,KAAKpB,MAAMqC,cACbjB,KAAKsB,kBAGPtB,KAAKC,SAAS,CACZgB,cAAejB,KAAKpB,MAAMqC,kB,+BAI9B,SAAkBxB,GAChB,IAAMC,EAASD,EAAMC,OACfC,EAAOD,EAAOC,KACdC,EAA6B,aAAhBF,EAAOG,KAAsBH,EAAOI,QAAUJ,EAAOK,MAE3D,cAATJ,GACFK,KAAKoB,kBAAkBxB,GAGzBI,KAAKC,SAAL,eACGN,EAAOC,M,+BAIZ,SAAkBA,GACZI,KAAKpB,MAAMU,UAAUkC,OAAS,IAAMxB,KAAKpB,MAAMU,UAAUmC,MAAM,gBAC/DzB,KAAKC,SAAS,CACZe,MAAO,+EAGXhB,KAAKC,SAAS,CACZe,OAAO,M,yBAKb,SAAYU,GAAI,IAAD,OACbA,EAAEC,iBACF3B,KAAKC,SAAS,CACZe,OAAO,EACPE,WAAW,EACXC,cAAc,IAEhBnB,KAAKrB,MAAMiD,sBAAqB,GAEhCC,YAAe7B,KAAKpB,MAAMU,UAAW,IAAIwC,MAAK,SAACC,GACzCA,EAAKC,SACP,EAAK/B,SAAS,CACZiB,WAAW,EACXC,cAAc,IAEhB,EAAKxC,MAAMiD,sBAAqB,EAAM,EAAKhD,MAAMU,YAEjD,EAAKW,SAAS,CACZe,MAAO,gCACPG,cAAc,S,6BAMtB,SAAgBO,GACVA,GACFA,EAAEC,iBAGJ3B,KAAKrB,MAAMiD,sBAAqB,GAEhC5B,KAAKC,SAAS,CACZe,OAAO,EACP1B,UAAW,GACX4B,WAAW,M,oBAKf,WAAU,IAAD,OACP,OACE,eAAC,WAAD,WACE,sBAAKhB,UAAU,8BAA8B+B,MAAO,CAACC,OAAQ,WAAYC,QAAU,WAAQ,EAAKZ,wBAAhG,UAA6HvB,KAAKpB,MAAMqC,aAAe,IAAM,IAA7J,IAAmKjB,KAAKpB,MAAMsC,UAAY,oBAAsB,sBAChN,sBAAKhB,UAAS,qBAAiBF,KAAKpB,MAAMqC,aAAe,GAAK,WAA9D,UACE,uBAAOd,QAAQ,iBAAf,wBACA,uBAAON,KAAK,OAAOO,SAAUJ,KAAKT,kBAAmBQ,MAAOC,KAAKpB,MAAMU,UAAWiB,aAAa,MAAMZ,KAAK,YAAYa,GAAG,iBAAiB,iBAAgBR,KAAKpB,MAAMsC,UAAWT,SAAUT,KAAKrB,MAAM+B,SAAWV,KAAKpB,MAAMsC,aACxNlB,KAAKpB,MAAMsC,WACZ,mBAAGkB,KAAK,IAAIlC,UAAWA,IAAU,uCAAwC,CAAE,SAAYF,KAAKpB,MAAMuC,cAAgBnB,KAAKrB,MAAM+B,UAAYyB,QAASnC,KAAKqB,YAAvJ,sBAEArB,KAAKpB,MAAMsC,WACX,mBAAGkB,KAAK,IAAIlC,UAAU,uCAAuCiC,QAASnC,KAAKsB,gBAA3E,oBAEAtB,KAAKrB,MAAMgC,WAAWrB,WACtB,mBAAGY,UAAU,aAAb,SAA2BF,KAAKrB,MAAMgC,WAAWrB,YAEjDU,KAAKpB,MAAMoC,OACX,mBAAGd,UAAU,aAAb,SAA2BF,KAAKpB,MAAMoC,kB,GApH3BF,aAqIRuB,eAJS,SAACzD,GAAD,MAAY,MAJF,SAAC0D,GAAD,MAAe,CAC/CV,qBAAsB,SAACW,EAAmBjD,GAApB,OAAkCgD,EAASV,YAAqBW,EAAmBjD,QAO5F+C,CAGbtB,G,QCvIIyB,E,kDACJ,WAAY7D,GAAQ,IAAD,8BACjB,cAAMA,IAEDC,MAAQ,CACX6D,aAAc,GACdzB,OAAO,EACPC,cAAc,EACdC,WAAW,EACXC,cAAc,GAGhB,EAAK5B,kBAAoB,EAAKA,kBAAkBC,KAAvB,gBACzB,EAAKkD,qBAAuB,EAAKA,qBAAqBlD,KAA1B,gBAC5B,EAAKmD,mBAAqB,EAAKA,mBAAmBnD,KAAxB,gBAC1B,EAAK+B,qBAAuB,EAAKA,qBAAqB/B,KAA1B,gBAdX,E,wDAiBnB,WACOQ,KAAKpB,MAAM8B,UAIZV,KAAKpB,MAAMqC,cACbjB,KAAK2C,qBAGP3C,KAAKC,SAAS,CACZgB,cAAejB,KAAKpB,MAAMqC,kB,+BAI9B,SAAkBxB,GAChB,IAAMC,EAASD,EAAMC,OACfC,EAAOD,EAAOC,KACdC,EAA6B,aAAhBF,EAAOG,KAAsBH,EAAOI,QAAUJ,EAAOK,MAExEC,KAAKC,SAAL,eACGN,EAAOC,M,kCAIZ,SAAqB8B,GAAI,IAAD,OAUtB,GATAA,EAAEC,iBACF3B,KAAKC,SAAS,CACZe,OAAO,EACPE,WAAW,EACXC,cAAc,IAGhBnB,KAAKrB,MAAMiE,yBAAwB,GAEH,KAA5B5C,KAAKpB,MAAM6D,aAAf,CAYA,GAAgC,oBAA5BzC,KAAKpB,MAAM6D,aAQX,OAPAzC,KAAKC,SAAS,CACZe,MAAO,sEACPG,cAAc,SAGhBnB,KAAKrB,MAAMkE,KAAK,gDAMpB,IAAIC,EAAWC,IAAOC,UAAUC,OAC5BjD,KAAKrB,MAAMuE,YACbJ,EAAWC,IAAOC,UAAUG,SAG9B,IAAIC,EAAYC,cAEhBC,YAAkBtD,KAAKpB,MAAM6D,aAAczC,KAAKrB,MAAM4E,eAAgBvD,KAAKrB,MAAM6E,WAAYV,EAAUM,GAAWtB,MAAK,SAACC,GACtH,GAAIA,EAAKC,QAAS,CAChB,EAAK/B,SAAS,CACZiB,WAAW,EACXC,cAAc,IAEhB,IAAIsC,IAAkB1B,EAAK2B,kBAAmBC,WAAW5B,EAAK2B,kBAC1DE,IAAkB7B,EAAK8B,eAAgBC,SAAS/B,EAAK8B,eAErDE,EAAW,CACbC,KAAMjC,EAAKkC,WACXC,OAAQP,WAAW5B,EAAKgC,UACxBN,kBACAG,mBAGF,EAAKjF,MAAMkE,KAAK,qCAAsCd,EAAKkC,YAC3D,EAAKtF,MAAMiE,wBAAwBmB,OAC9B,CACL,IAAI/C,EAAQ,mCAGRe,EAAKf,OAASe,EAAKf,MAAMmD,UAC3BnD,EAAQe,EAAKf,MAAMmD,SAGjBpC,EAAKoC,UACPnD,EAAQe,EAAKoC,SAGuB,MAAlCnD,EAAMoD,MAAMpD,EAAMQ,OAAS,KAC7BR,GAAS,KAGX,EAAKrC,MAAMkE,KAAK,iCAEhB,EAAK5C,SAAS,CACZe,QACAG,cAAc,aApEhBnB,KAAKC,SAAS,CACZe,MAAO,gCACPG,cAAc,M,gCAwEtB,SAAmBO,GACbA,GACFA,EAAEC,iBAGJ3B,KAAKrB,MAAMiE,yBAAwB,GAEnC5C,KAAKrB,MAAMkE,KAAK,yBAEhB7C,KAAKC,SAAS,CACZe,OAAO,EACPyB,aAAc,GACdvB,WAAW,M,oBAKf,WAAU,IAAD,OACP,OACE,eAAC,WAAD,WACE,sBAAKhB,UAAU,8BAA8B+B,MAAO,CAACC,OAAQ,WAAYC,QAAU,WAAQ,EAAKZ,wBAAhG,UAA6HvB,KAAKpB,MAAMqC,aAAe,IAAM,IAA7J,IAAmKjB,KAAKpB,MAAMsC,UAAY,uBAAyB,yBACnN,sBAAKhB,UAAS,qBAAiBF,KAAKpB,MAAMqC,aAAe,GAAK,WAA9D,UACE,uBAAOd,QAAQ,oBAAf,2BACA,uBAAON,KAAK,OAAOO,SAAUJ,KAAKT,kBAAmBQ,MAAOC,KAAKpB,MAAM6D,aAAclC,aAAa,MAAMZ,KAAK,eAAea,GAAG,oBAAoB,iBAAgBR,KAAKpB,MAAMsC,UAAWT,SAAUT,KAAKrB,MAAM+B,SAAWV,KAAKpB,MAAMsC,aACjOlB,KAAKpB,MAAMsC,WACZ,mBAAGkB,KAAK,IAAIlC,UAAWA,IAAU,4CAA6C,CAAE,SAAYF,KAAKpB,MAAMuC,cAAgBnB,KAAKrB,MAAM+B,UAAYyB,QAASnC,KAAK0C,qBAA5J,mBAEA1C,KAAKpB,MAAMsC,WACX,mBAAGkB,KAAK,IAAIlC,UAAU,4CAA4CiC,QAASnC,KAAK2C,mBAAhF,oBAEA3C,KAAKrB,MAAMgC,WAAW8B,cACtB,mBAAGvC,UAAU,aAAb,SAA2BF,KAAKrB,MAAMgC,WAAW8B,eAEjDzC,KAAKpB,MAAMoC,OACX,mBAAGd,UAAU,aAAb,SAA2BF,KAAKpB,MAAMoC,kB,GAjKvBF,aAkLZuB,eAJS,SAACzD,GAAD,MAAY,MAJF,SAAC0D,GAAD,MAAe,CAC/CM,wBAAyB,SAACmB,GAAD,OAAczB,EAASM,YAAwBmB,QAO3D1B,CAGbG,G,mCCtKI6B,E,kDACJ,WAAY1F,GAAQ,IAAD,8BACjB,cAAMA,IAEDC,MAAQ,CACX0F,kBAAkB,EAClBC,qBAAqB,EACrB7D,SAAS,EACTM,OAAO,EACPwD,aAAa,EACbxC,SAAS,EACTyC,SAAS,EACTC,YAAY,EACZC,kBAAkB,EAClBC,qBAAqB,EACrBC,wBAAwB,EACxBC,UAAU,EACVC,mBAAmB,EACnBC,kBAAkB,EAClBC,YAAY,EACZC,QAAS,EAAKvG,MAAMwG,YACpBC,UAAW,GACX/F,SAAU,GACVgG,aAAa,EACbC,oBAAoB,EACpBC,SAAU,GACVC,eAAe,EACfC,gBAAgB,EAChBC,iBAAiB,EACjBC,iBAAkB,GAClBC,iBAAkB,GAClBjF,WAAY,CACV9B,WAAW,EACXC,UAAU,EACVG,SAAS,EACTC,MAAM,EACNC,aAAa,EACbC,KAAK,EACLyG,YAAY,EACZP,oBAAoB,EACpBQ,WAAW,IAIf,EAAKC,YAAa,EAClB,EAAKC,WAAa,EAElB,EAAKzG,kBAAoB,EAAKA,kBAAkBC,KAAvB,gBACzB,EAAKc,gBAAkB,EAAKA,gBAAgBd,KAArB,gBACvB,EAAKyG,cAAgB,EAAKA,cAAczG,KAAnB,gBACrB,EAAK0G,qBAAuB,EAAKA,qBAAqB1G,KAA1B,gBAC5B,EAAK2G,gBAAkB,EAAKA,gBAAgB3G,KAArB,gBACvB,EAAK+B,qBAAuB,EAAKA,qBAAqB/B,KAA1B,gBAC5B,EAAK4G,cAAgB,EAAKA,cAAc5G,KAAnB,gBACrB,EAAK6G,qBAAuB,EAAKA,qBAAqB7G,KAA1B,gBAC5B,EAAK8G,iBAAmB,EAAKA,iBAAiB9G,KAAtB,gBACxB,EAAK+G,sBAAwB,EAAKA,sBAAsB/G,KAA3B,gBAC7B,EAAKgH,uBAAyB,EAAKA,uBAAuBhH,KAA5B,gBAC9B,EAAKiH,OAAS,EAAKA,OAAOjH,KAAZ,gBAzDG,E,qDA4DnB,WAAqB,IAAD,OAClBkH,cACG5E,MAAK,SAACC,GACL,IAAM4E,EAAiBC,EAAEC,IAAI9E,GAAM,SAACmD,EAAS4B,GAAV,MAAqB,CACtDC,IAAI,WAAD,OAAa7B,EAAQ1E,IACxBwG,KAAM9B,EAAQvF,KACdI,MAAOmF,EAAQ1E,GACfyG,SAAU/B,EAAQ+B,SAAW,IAC7BC,WAAYhC,EAAQiC,cAGtB,EAAKlH,SAAS,CAAEmF,UAAWuB,OAE5BS,OAAM,SAACC,GAAD,OAASA,O,gCAGpB,SAAmBC,GAEbtH,KAAKrB,MAAMwG,cAAgBmC,EAAUnC,aACvCnF,KAAKC,SAAS,CACZiF,QAASlF,KAAKrB,MAAMwG,gB,kCAK1B,WACEoC,OAAOC,aAAaxH,KAAK+F,c,+BAG3B,SAAkBtG,GAChB,IAAMC,EAASD,EAAMC,OACfC,EAAOD,EAAOC,KACdC,EACY,aAAhBF,EAAOG,KAAsBH,EAAOI,QAAUJ,EAAOK,MAEvDC,KAAKC,SAAL,eACGN,EAAOC,M,kCAIZ,SAAqBH,EAArB,GAAwC,IAAVM,EAAS,EAATA,MACtB0H,EAAab,EAAEc,KAAK1H,KAAKpB,MAAMwG,UAAW,CAAC,QAASrF,IAEtD0H,GACFzH,KAAKrB,MAAMgJ,YAAY,CACrBnH,GAAIT,EACJmH,WAAYO,EAAWP,WACvBD,SAAUQ,EAAWR,WAIzBjH,KAAKC,SAAS,CACZiF,QAASnF,M,6BAIb,SAAgBN,GACd,IACME,EADSF,EAAMC,OACDC,KACdkG,EAAa7F,KAAKoG,cAAc,oBAG3B,aAATzG,GACe,KAAfkG,GACC7F,KAAKpB,MAAM2F,oBAMZvE,KAAKiG,iBAJLjG,KAAKrB,MAAMkE,KAAK,wBAAyB,+BAEzC7C,KAAKC,SAAS,CAAEsE,qBAAqB,O,2BAMzC,WACE,IAAKvE,KAAKpB,MAAM0F,iBAAkB,CAChC,IAAMzF,EAAYmB,KAAKoG,cAAc,kBAC/BtH,EAAWkB,KAAKoG,cAAc,iBAC9BnH,EAAUe,KAAKoG,cAAc,eAC7BlH,EAAOc,KAAKoG,cAAc,YAC1BjH,EAAca,KAAKoG,cAAc,oBACjChH,EAAMY,KAAKoG,cAAc,kBAGf,KAAdvH,GACa,KAAbC,GACY,KAAZG,GACS,KAATC,GACgB,KAAhBC,GACQ,KAARC,IAEAY,KAAKrB,MAAMkE,KACT,wBACA,iCAGF7C,KAAKC,SAAS,CAAEqE,kBAAkB,Q,6BAKxC,SAAgBvE,GACdC,KAAKC,SAAS,CAAE0F,iBAAkB5F,M,kCAGpC,SAAqB6H,GACf5H,KAAKpB,MAAM8B,SAGfV,KAAKC,SAAL,eACG2H,GAAS5H,KAAKpB,MAAMgJ,O,2BAIzB,SAAcC,GACZ,IAAIC,EAAc,GAOlB,OALIC,SAASC,eAAeH,KAE1BC,GADAA,EAAcC,SAASC,eAAeH,GAAW9H,OACvBkI,QAGrBH,I,2DAGT,WAAaI,GAAb,sEAAAC,EAAA,yDAQQtJ,EAAYmB,KAAKoG,cAAc,kBAC/BtH,EAAWkB,KAAKoG,cAAc,iBAC9BrH,EAAeiB,KAAKoG,cAAc,oBAClCpH,EAAkBgB,KAAKoG,cAAc,wBACrCnH,EAAUe,KAAKoG,cAAc,eAC7BlH,EAAOc,KAAKoG,cAAc,YAC1BjH,EAAca,KAAKoG,cAAc,oBACjChH,EAAMY,KAAKoG,cAAc,kBACzB9G,EAAYU,KAAKoG,cAAc,kBAC/BP,EAAa7F,KAAKoG,cAAc,oBAGlCgC,GAAY,EACZzH,EAAa,CACf9B,WAAW,EACXC,UAAU,EACVG,SAAS,EACTC,MAAM,EACNC,aAAa,EACbC,KAAK,EACLE,WAAW,EACXuG,YAAY,EACZP,oBAAoB,EACpBQ,WAAW,GAETuC,EAAe,8BACfC,EAAiE,SAAhDC,EAAE,mBAAmBC,KAAK,kBAC3CC,GAAgB,EAChBC,EAAiB,EACjBjG,GAAe,EAED,KAAd5D,IACF8B,EAAW9B,UAAYwJ,EACvBD,GAAY,GAGG,KAAbtJ,IACF6B,EAAW7B,SAAWuJ,EACtBD,GAAY,GAGE,KAAZnJ,IACF0B,EAAW1B,QAAUoJ,EACrBD,GAAY,GAGD,KAATlJ,IACFyB,EAAWzB,KAAOmJ,EAClBD,GAAY,GAGM,KAAhBjJ,IACFwB,EAAWxB,YAAckJ,EACzBD,GAAY,GAGF,KAARhJ,IACFuB,EAAWvB,IAAMiJ,EACjBD,GAAY,GAGI,KAAd9I,GAAqBgJ,IACvB3H,EAAWrB,UACT,oDACF8I,GAAY,GAGK,KAAfvC,IACFlF,EAAWkF,WAAawC,EACxBD,GAAY,GAGVpI,KAAKrB,MAAMuE,YAAclD,KAAKpB,MAAM0G,qBACtC3E,EAAW2E,mBAAqB,6BAE5B8C,IACFK,GAAgB,GAGlBL,GAAY,GAGVpI,KAAKpB,MAAM8G,kBAAoB1F,KAAKpB,MAAM+G,mBAC5ChF,EAAWmF,UAAY,6CAEnBsC,IACFK,GAAgB,GAGlBL,GAAY,GAGTA,EApGP,wBAqGIpI,KAAKC,SAAS,CACZe,MAAO,0CACPL,eAIA+H,EADED,EACeF,EAAE,gCAAgCI,SAASC,IAAM,IAEjDL,EAAE,wBAAwBI,SAASC,IAAM,IAG5DL,EAAE,cAAcM,QAAQ,CAAEC,UAAWJ,GAAkB,QAhH3D,8BAqHQK,EAAcnC,EAAEc,KAAK1H,KAAKpB,MAAMwG,UAAW,CAC/C,QACAtB,SAAS9D,KAAKpB,MAAMsG,WAIhB8D,EAAgB,CACpBrJ,KAAMkG,EACNoD,cAAehK,EACfiK,aAAchK,EACdiK,cAAehK,EACfiK,YAAahK,EACbiK,gBAAiBN,EAAY/B,MAI/BhH,KAAKC,SAAS,CACZS,SAAS,EACTM,OAAO,IAGLsI,EAAiB,IAEjBtJ,KAAKpB,MAAM8G,gBA5IjB,iBA6II4D,EAAiBtJ,KAAKpB,MAAM+G,iBA7IhC,yCA+I2B4D,YAAiB,eA/I5C,QA+IID,EA/IJ,gCAmJwBtJ,KAAKrB,MAAM6K,OAAOC,YAAYT,GAnJtD,wBAmJQU,EAnJR,EAmJQA,MAnJR,UAqJgC1J,KAAKrB,MAAM6K,OAAOG,oBAC9C,OACA,CACEC,gBAAiB,CACfjK,KAAMkG,EAEN5G,QAAS,CACP4K,MAAO5K,EACPC,KAAMA,EACNN,MAAOO,EACP2K,YAAa1K,EACb8F,QAAS6D,EAAY7B,eAhK/B,oBAqJQ6C,EArJR,EAqJQA,cAiBDL,GAAUK,EAtKjB,wBAuKI/J,KAAKC,SAAS,CAAES,SAAS,IAvK7B,2BA2KMoC,EAAWC,IAAOC,UAAUC,OAC5BjD,KAAKrB,MAAMuE,YACbJ,EAAWC,IAAOC,UAAUG,SAG1BnD,KAAKrB,MAAMoF,UAAY/D,KAAKrB,MAAMoF,SAASC,OAC7CvB,EAAezC,KAAKrB,MAAMoF,SAASC,MAGrChE,KAAKqG,qBAAqB,CACxB2D,SAAUhK,KAAKrB,MAAMqL,SAASxJ,GAC9ByJ,KAAMjK,KAAKrB,MAAMiC,aAAaJ,GAC9B0J,OAAQpH,EACRqH,iBAAkBnK,KAAKpB,MAAM8G,gBAAkB,EAAI,EACnD4D,eAAgBA,EAChBc,YAAaV,EAAMlJ,GACnBuJ,cAAeA,EAAcvJ,GAC7B3B,UAAWA,EACXC,SAAUA,EACVC,aAAcA,EACdC,gBAAiBA,EACjBqL,aAAcpL,EACdC,KAAMA,EACNN,MAAOO,EACPC,IAAKA,EACL8F,QAAS6D,EAAYhJ,MACrBT,UAAWA,EACXD,SAAUW,KAAKpB,MAAMS,SACrBiG,mBAAoBtF,KAAKpB,MAAM0G,mBAC/B7C,aAAcA,IAEbX,MAAK,SAACC,GACA,EAAKnD,MAAMoC,OACd,EAAKsF,sBAGRc,OAAM,SAACC,GAAD,OAASA,KA/MpB,iD,qFAkNA,WAAoB,IAAD,OACXgB,EAAe,uDAEjBiC,EAAW,IAAIC,SACnBD,EAASE,OAAO,QAASnH,eAEzBoH,IAAM,GAAD,OAAI1H,IAAO2H,IAAX,4BAA0C,CAC7CC,OAAQ,OACRC,KAAMN,IAELxI,MAAK,SAAC+I,GAAD,OAASA,EAAIC,UAClBhJ,MAAK,SAAC+I,GACL,GAAiB,IAAbA,EAAI7G,KAEN,EAAK/D,SAAS,CACZ+B,SAAS,EACTtB,SAAS,IAEXqK,cAAYjJ,MAAK,SAACC,GACI,YAAhBA,EAAKiJ,QACP,EAAKrM,MAAMsM,aAAX,2BACKlJ,EAAKmJ,MADV,IAEEC,oBAAqBpJ,EAAKoJ,oBAC1BC,0BAA2BC,kBAAQtJ,EAAKuJ,wBAI9C,EAAK9E,8BACA,GAAiB,IAAbqE,EAAI7G,KAAY,CAEzB,IAAIuH,EAAY,IAEhB,EAAKvF,aAED,EAAKA,WAAa,KAAO,EAAKpH,MAAMqG,WACtC,EAAKhF,SAAS,CACZe,MACE,yLACFN,SAAS,KAGP,EAAKsF,WAAa,MACpBuF,EAAY,KAGd,EAAKxF,WAAawB,OAAOiE,WACvB,EAAKlF,iBACLiF,SAGC,GAAIV,EAAI7J,MAEb,EAAKf,SAAS,CACZe,MAAO6J,EAAI7J,MAAMmD,QACjBzD,SAAS,SAEN,GAAiB,IAAbmK,EAAI7G,KACb,EAAK/D,SAAS,CACZe,MAAOqH,EACP3H,SAAS,QAEN,CACL,IAAIM,EAAQ,EAAKpC,MAAMoC,MAAQ,EAAKpC,MAAMoC,MAAQqH,EAClD,EAAKpI,SAAS,CACZe,QACAN,SAAS,QAId0G,OAAM,SAACC,GAAD,OAASA,O,mCAEpB,SAAsBoE,GACpB,IAAM1J,EAAO,CACX0J,OAAQA,EACR/B,MAAOrG,eAETkF,EAAEmD,KAAK,CACLf,OAAQ,OACRgB,IAAI,GAAD,OAAK5I,IAAO2H,IAAZ,gDACH3I,KAAMA,EACNC,QAAS,SAAU4J,S,oCAIvB,WACE,IAAIN,EAAmB,CACrBO,OAAQ,GACRC,UAAU,EACVC,WAAW,EACXC,aAAa,EACbrM,KAAMK,KAAKrB,MAAMiC,aAAajB,KAC9BsK,KAAMjK,KAAKrB,MAAMiC,aAAaJ,GAC9ByL,UAAWjM,KAAKrB,MAAMiC,aAAaC,cACnCqL,YAAalM,KAAKrB,MAAMiC,aAAasL,YACrCC,aAAcnM,KAAKrB,MAAMiC,aAAauL,cAGpCC,EAAgB,CAClB3M,MAAO,+BACPyD,UAAWlD,KAAKrB,MAAMuE,UAAY,EAAI,EACtCmJ,YAAarM,KAAKrB,MAAMiC,aAAajB,KACrC2M,YAAatM,KAAKrB,MAAMiC,aAAaoD,KACrCuI,UAAWvM,KAAKrB,MAAMiC,aAAaJ,GACnCgM,eAAgBxM,KAAKpB,MAAM+F,iBAE3B8H,cAAezM,KAAKpB,MAAM6F,QAC1BiI,eAAgB1M,KAAKpB,MAAMkG,SAC3B6H,iBAAkB3M,KAAKpB,MAAM8F,WAC7BkI,wBAAyB5M,KAAKpB,MAAMmG,kBACpC8H,uBAAwB7M,KAAKpB,MAAMoG,iBACnCJ,oBAAqB5E,KAAKpB,MAAMgG,oBAChCC,uBAAwB7E,KAAKpB,MAAMiG,wBAGrC7E,KAAKrB,MAAMkE,KAAK,wBAAyB,uBAEzC,IACE0E,OAAOuF,UAAUC,KAAKX,GACtB,MAAO1K,IACT,IACE6F,OAAOuF,UAAUC,KAAK,CACpBtN,MAAM,uBAAD,OAAyBO,KAAKrB,MAAMiC,aAAaoD,KAAjD,YAAyDhE,KAAKrB,MAAMuE,UAAY,IAAM,OAE7F,MAAOxB,IAGTqG,SAAS6C,KAAK9B,UAAYf,SAASiF,gBAAgBlE,UAAY,EAG/D9I,KAAKrB,MAAMsO,qBAAqB3B,GAGhCtL,KAAKrB,MAAMuO,0B,yEAGb,WAA2BC,GAA3B,wBAAAhF,EAAA,6DACQiF,EADR,UACoBrK,IAAO2H,IAD3B,wBAGMJ,EAAW,IAAIC,UAEVC,OAAO,WAAY2C,EAASnD,UACrCM,EAASE,OAAO,OAAQ2C,EAASlD,MACjCK,EAASE,OAAO,SAAU2C,EAASjD,QACnCI,EAASE,OAAO,eAAgB2C,EAAS/C,aACzCE,EAASE,OAAO,aAAcnH,eAC9BiH,EAASE,OAAO,gBAAiB2C,EAASpD,eAC1CO,EAASE,OAAO,YAAa2C,EAAStO,WACtCyL,EAASE,OAAO,WAAY2C,EAASrO,UACrCwL,EAASE,OAAO,eAAgB2C,EAASpO,cACzCuL,EAASE,OAAO,kBAAmB2C,EAASnO,iBAC5CsL,EAASE,OAAO,eAAgB2C,EAAS9C,cACzCC,EAASE,OAAO,OAAQ2C,EAASjO,MACjCoL,EAASE,OAAO,QAAS2C,EAASvO,OAClC0L,EAASE,OAAO,MAAO2C,EAAS/N,KAChCkL,EAASE,OAAO,UAAW2C,EAASjI,SACpCoF,EAASE,OAAO,iBAAkB2C,EAAS7H,oBAE3CgF,EAASE,OAAO,oBAAqB2C,EAAShD,kBAC9CG,EAASE,OAAO,kBAAmB2C,EAAS7D,gBAExC6D,EAAS7N,WAAoC,KAAvB6N,EAAS7N,WACjCgL,EAASE,OAAO,YAAa2C,EAAS7N,WAGpC6N,EAAS1K,cAA0C,KAA1B0K,EAAS1K,cACpC6H,EAASE,OAAO,aAAc2C,EAAS1K,cAGrC0K,EAAS9N,UAAkC,KAAtB8N,EAAS9N,UAChCiL,EAASE,OAAO,WAAY2C,EAAS9N,UAGvCW,KAAKrB,MAAMkE,KAAK,wBAAyB,sBArC3C,kBAuCS4H,IAAM2C,EAAQ,CACnBzC,OAAQ,OACRC,KAAMN,IAELxI,MAAK,SAAC+I,GAAD,OAASA,EAAIC,UAClBhJ,KALI,uCAKC,WAAO8J,GAAP,mBAAAzD,EAAA,yDACAkF,EAAa,CACfrL,SAAS,EACTyC,SAAS,EACTC,YAAY,EACZC,kBAAkB,EAClBC,qBAAqB,EACrBC,wBAAwB,EACxBC,UAAU,EACVC,mBAAmB,EACnBC,kBAAkB,EAClBhE,OAAO,EACPwD,aAAa,EACb9D,SAAS,EACTuE,YAAY,IAGV2G,EAAS5J,QAjBT,oBAkBFqL,EAAW5I,QAAUmH,EAAS0B,SAC9BD,EAAW3I,WAAakH,EAAS2B,YACjCF,EAAW1I,iBAAmBiH,EAAS4B,mBACvCH,EAAWzI,oBAAsBgH,EAAS6B,sBAC1CJ,EAAWxI,uBAAyB+G,EAAS8B,yBAC7CL,EAAWvI,SAAW8G,EAAS+B,UAC/BN,EAAWtI,kBAAoB6G,EAASgC,oBACxCP,EAAWrI,iBAAmB4G,EAASiC,oBAEnCjC,EAASkC,aA3BX,kCA6B0B,EAAKnP,MAAM6K,OAAOuE,kBAC1CnC,EAASkC,cA9BX,QA6BIE,EA7BJ,OAiCA,EAAKrP,MAAMkE,KAAK,wBAAyB,gBAEzCwK,EAAW3M,SAAU,EACrB2M,EAAWpI,YAAa,IAEnB+I,GAAkBA,GAAiBA,EAAchN,SAChDiN,EAAWD,EAAchN,MAAMmD,QACnCkJ,EAAW3M,SAAU,EACrB2M,EAAWrL,SAAU,EACrBqL,EAAWrM,MAAQiN,EACnBZ,EAAW7I,aAAc,EACzB,EAAK+B,sBAAsB0H,IA5C7B,gDAkDFZ,EAAW3M,SAAU,EACrB2M,EAAWrL,SAAU,EACrBqL,EAAWrM,MAAQ4K,EAAS5K,MAAMmD,QAE9BkJ,EAAWrM,MAAMkN,SAAS,2BAC5Bb,EAAWrM,MACT,2FAGHqM,EAAW3H,kBAAkBkG,EAAS5K,MAAMwE,cAG3C,EAAK7G,MAAMkE,KAAK,wBAAyB,gBAE3C,EAAK0D,sBAAsBqF,EAAS5K,MAAMmD,SAhExC,QAmEJ,EAAKlE,SAASoN,GAnEV,4CALD,uDA0EJjG,OAAM,SAACC,GAAD,OAASA,MAjHpB,iD,2EAoHA,WAAU,IAAD,OACP,OACE,eAAC,WAAD,WACE,oBAAI7G,GAAG,sBAAsBN,UAAU,4BAAvC,gCAGA,qBAAKA,UAAU,mDAAf,SACE,sBAAKA,UAAU,MAAf,UACE,cAAC,EAAD,CACEU,aAAcZ,KAAKrB,MAAMiC,aACzBF,QAASV,KAAKpB,MAAM8B,QACpBC,WAAYX,KAAKpB,MAAM+B,WACvBL,gBAAiBN,KAAKM,kBAExB,sBAAKJ,UAAU,kBAAf,UACE,uBAAOC,QAAQ,cAAf,qBACA,cAACgO,EAAA,EAAD,CACEC,YAAY,iBACZC,OAAK,EACLC,QAAM,EACNC,WAAS,EACT9N,SAAUT,KAAKpB,MAAM8B,QACrB8N,QAASxO,KAAKpB,MAAMwG,UACpBrF,MAAOC,KAAKpB,MAAMsG,QAClB9E,SAAUJ,KAAKkG,0BAGnB,cAAC,EAAD,CACExF,QAASV,KAAKpB,MAAM8B,QACpBC,WAAYX,KAAKpB,MAAM+B,aAEzB,cAAC,EAAD,CACEkC,KAAM7C,KAAKrB,MAAMkE,KACjBnC,QAASV,KAAKpB,MAAM8B,QACpBC,WAAYX,KAAKpB,MAAM+B,WACvB4C,eAAgBvD,KAAKrB,MAAMiC,aAAaJ,GACxCgD,WAAYxD,KAAKrB,MAAMqL,SAASxJ,GAChC0C,UAAWlD,KAAKrB,MAAMuE,YAEmB,IAA1ClD,KAAKrB,MAAMiC,aAAaC,eACvB,eAAC,WAAD,WACE,qBACEX,UAAU,8BACV+B,MAAO,CAAEC,OAAQ,WACjBC,QAAS,WACP,EAAKZ,qBAAqB,gBAJ9B,2CASA,sBACErB,UAAS,gBAAWF,KAAKpB,MAAMyG,YAAc,GAAK,WADpD,UAGE,uBAAOlF,QAAQ,YAAf,uBACA,uBACEN,KAAK,OACLO,SAAUJ,KAAKT,kBACfc,OAAQL,KAAKM,gBACbP,MAAOC,KAAKpB,MAAMS,SAClBM,KAAK,WACLa,GAAG,YACHC,SAAUT,KAAKpB,MAAM8B,qBAQjC,oBAAIR,UAAU,eAAd,mCAEA,qBAAKA,UAAU,8CAAf,SACE,sBAAKA,UAAU,MAAf,UACE,sBAAKA,UAAU,SAAf,UACE,uBAAOC,QAAQ,mBAAf,wCAGA,uBACEN,KAAK,OACLO,SAAUJ,KAAKT,kBACfc,OAAQL,KAAKM,gBACbP,MAAOC,KAAKpB,MAAM2G,SAClB5F,KAAK,WACLa,GAAG,mBACHC,SAAUT,KAAKpB,MAAM8B,UAEtBV,KAAKpB,MAAM+B,WAAWkF,YACrB,mBAAG3F,UAAU,aAAb,SAA2BF,KAAKpB,MAAM+B,WAAWkF,gBAGrD,qBAAK3F,UAAU,SAAf,SACE,cAAC,cAAD,WAIN,qBAAKA,UAAU,YAAf,SACE,sBAAKA,UAAU,MAAf,UACE,qBAAKM,GAAG,8BAA8BN,UAAU,SAAhD,SACE,oBAAGA,UAAU,6CAAb,0DACgD,IAC9C,mBAAGkC,KAAK,SAAS1C,OAAO,SAAxB,gCAFF,+UAaDM,KAAKrB,MAAMuE,WACV,qBAAKhD,UAAU,SAAf,SACE,sBAAKA,UAAU,kCAAf,UACE,qBAAKA,UAAU,uDAAf,SACE,uBACEP,KAAK,qBACLa,GAAG,0BACHX,KAAK,WACLC,QAASE,KAAKpB,MAAM0G,mBACpBlF,SAAUJ,KAAKT,kBACfW,UAAU,SACV+B,MAAO,CAAEwM,OAAQ,OAAQC,MAAO,YAGpC,qBAAKxO,UAAU,QAAf,SACE,uBACEC,QAAQ,0BACRD,UAAU,6CAFZ,+HAQDF,KAAKpB,MAAM+B,WAAW2E,oBACrB,qBAAKpF,UAAU,SAAf,SACE,mBAAGA,UAAU,aAAb,SACGF,KAAKpB,MAAM+B,WAAW2E,4BAOlCtF,KAAKrB,MAAMuE,WAAa,IAAIyL,KAAS,IAAIA,KAAK,eAC7C,qBAAKzO,UAAU,SAAf,SACE,oBAAIA,UAAU,oBAGjBF,KAAKpB,MAAMoC,OACV,sBAAKd,UAAU,+DAAf,UACE,6DAC+B,IAC7B,sBAAM+B,MAAO,CAAE2M,MAAO,OAAtB,SAAgC5O,KAAKpB,MAAMoC,WAE5ChB,KAAKpB,MAAM4F,aACV,oBAAGtE,UAAU,OAAb,wDAC8C,IAC5C,mBACEkC,KAAK,2BACLlC,UAAU,uBACVR,OAAO,SAHT,0BAMK,IARP,0DAcLM,KAAKpB,MAAM8G,iBACV,qBACExF,UAAU,2BACV+B,MAAO,CAAE4M,UAAW,QAFtB,SAIE,cAAC,IAAD,CACEC,QAAS/L,IAAOgM,iBAChB3O,SAAUJ,KAAKmG,oBAIpBnG,KAAKpB,MAAM+B,WAAWmF,WACrB,mBAAG5F,UAAU,yBAAyB+B,MAAO,CAAEyM,MAAO,QAAtD,SACG1O,KAAKpB,MAAM+B,WAAWmF,YAG3B,sBAAK5F,UAAU,qBAAf,WACIF,KAAKpB,MAAM8B,UAAYV,KAAKpB,MAAMoD,SAClC,wBACE9B,UAAU,gCACViC,QAASnC,KAAKyG,OACdxE,MAAO,CAAEyM,MAAO,OAHlB,gCAQD1O,KAAKpB,MAAM8B,SACV,qBAAKR,UAAU,OAAO+B,MAAO,CAAEwM,OAAQ,QAAvC,SACE,cAACO,EAAA,EAAD,SAIN,cAACC,EAAA,EAAD,gB,GAj1BenO,aAm3BZuB,eALS,SAACzD,GAAD,MAAY,CAClCoL,SAAUpL,EAAMsQ,IAAI,gBArBK,SAAC5M,GAAD,MAAe,CACxCqF,YAAa,SAACzC,GACZ5C,EAASqF,YAAYzC,KAEvB+F,aAAc,SAACC,GACb5I,EAAS2I,YAAaC,KAExBgC,sBAAuB,WACrB5K,EAAS4K,gBAEXiC,sBAAuB,SAACjF,GACtB5H,EAAS6M,YAAsBjF,EAAQ,mBAEzC+C,qBAAsB,SAAC3B,GACrBhJ,EAAS2K,YAAqB3B,GAAkB,QAWrCjJ,CAGb+M,uBAAa/K,I,UC/4B+BgL,IAAMvO,U,yBCsB9CwO,E,kDACJ,WAAY3Q,GAAQ,IAAD,8BACjB,cAAMA,IACDC,MAAQ,CACX4G,eAAe,EACfC,gBAAgB,EAChBC,iBAAiB,EACjBC,iBAAkB,GAClBC,iBAAkB,GAClB2J,kBAAmB,GACnBC,cAAe,GACfC,MAAO,GACPC,SAAU,GACVhP,SAAS,EACTC,WAAY,CACV6O,eAAe,EACfC,OAAO,EACPC,UAAU,EACV5J,WAAW,EACX6J,SAAS,IAIb,EAAKC,eAAiB,EAAKA,eAAepQ,KAApB,gBACtB,EAAKqQ,YAAc,EAAKA,YAAYrQ,KAAjB,gBACnB,EAAKD,kBAAoB,EAAKA,kBAAkBC,KAAvB,gBACzB,EAAK2G,gBAAkB,EAAKA,gBAAgB3G,KAArB,gBACvB,EAAKsQ,4BAA8B,EAAKA,4BAA4BtQ,KAAjC,gBA1BlB,E,qDA8BnB,WACOuD,IAAOgN,cACV/P,KAAKC,SAAS,CACZuP,cAAe,oBACfC,MAAM,WAAD,OAAaO,KAAKC,SAASC,SAAS,IAAIC,UAAU,GAAlD,kBACLT,SAAU,uB,4BAKhB,SAAehO,GACbA,EAAEC,iBAEF3B,KAAKrB,MAAMyR,WAAW,SACtB7H,EAAE,QAAQ8H,SAAS,0B,+BAGrB,SAAkB5Q,GAChB,IAAMC,EAASD,EAAMC,OACfC,EAAOD,EAAOC,KACdC,EAA6B,aAAhBF,EAAOG,KAAsBH,EAAOI,QAAUJ,EAAOK,MAExEC,KAAKC,SAAL,eACGN,EAAOC,M,6BAIZ,SAAgBG,GACdC,KAAKC,SAAS,CAAC0F,iBAAkB5F,M,yBAGnC,WACE,IAAIqI,GAAY,EACZzH,EAAa,CACf6O,eAAe,EACfC,OAAO,EACPC,UAAU,EACV5J,WAAW,EACX6J,SAAS,GAEPtH,EAAe,8BAsCnB,MApCyC,KAApCrI,KAAKpB,MAAM4Q,cAAcvH,SAC5BtH,EAAW6O,cAAgBnH,EAC3BD,GAAY,GAGmB,KAA5BpI,KAAKpB,MAAM6Q,MAAMxH,QACpBtH,EAAW8O,MAAQpH,EACnBD,GAAY,GACF,iBAAiBkI,KAAKtQ,KAAKpB,MAAM6Q,SAO3C9O,EAAW8O,MAAQ,sCACnBrH,GAAY,GAGVpI,KAAKpB,MAAM8G,kBAAoB1F,KAAKpB,MAAM+G,mBAC5ChF,EAAWmF,UAAY,6CACvBsC,GAAY,GAGsB,KAA/BpI,KAAKpB,MAAM8Q,SAASzH,QACvBtH,EAAW+O,SAAWrH,EACtBD,GAAY,IACFpI,KAAKpB,MAAM8Q,SAASlO,OAAS,IAAM,KAAK8O,KAAKtQ,KAAKpB,MAAM8Q,YAAc1P,KAAKpB,MAAM8Q,SAASjO,MAAM,aAC1Gd,EAAW+O,SAAW,qGACtBtH,GAAY,GAGdpI,KAAKC,SAAS,CACZU,eAGKyH,I,gFAIT,yCAAAD,EAAA,yDACQwD,EADR,UACiB5I,IAAO2H,IADxB,iBAEM6F,EAAc,CAChBC,gBAAiBxQ,KAAKpB,MAAM4Q,cAC5BC,MAAOzP,KAAKpB,MAAM6Q,MAClBC,SAAU1P,KAAKpB,MAAM8Q,SACrBe,kBAAmBzQ,KAAKpB,MAAM8G,gBAAkB,EAAI,EACpDgL,iBAAkB,GAGd1Q,KAAK6P,cAVb,oDAcE7P,KAAKC,SAAS,CACZS,SAAS,IAGP4I,EAAiB,IAEjBtJ,KAAKpB,MAAM8G,gBApBjB,iBAqBI4D,EAAiBtJ,KAAKpB,MAAM+G,iBArBhC,yCAuB2B4D,YAAiB,UAvB5C,QAuBID,EAvBJ,eA0BEiH,EAAYI,gBAAkBrH,EAC9BiH,EAAYK,QAAUC,aAAaC,QAAQ,WAErCxG,EAAW/B,EAAEwI,MAAOR,GAAa,GAEvChI,EAAEyI,UAAU,CACVC,QAAS,CACP,mBAAoB,kBAEtBC,UAAW,CACPC,iBAAiB,KAIvB5I,EAAE6I,KAAKzF,EAAKrB,GAAU,SAACQ,GACrB,IAAInK,EAAa,EAAK/B,MAAM+B,WACxB+E,GAAkB,EAkBtB,MAhBoB,UAAhBoF,EAAKE,SACW,IAAdF,EAAK9G,MAA4B,IAAd8G,EAAK9G,KAC1BrD,EAAa0Q,OAAOC,OAAO3Q,EAAY,CAAC8O,MAAO3E,EAAK3G,UAC7B,KAAd2G,EAAK9G,MAA6B,KAAd8G,EAAK9G,MAClC0B,GAAkB,EAClB/E,EAAa0Q,OAAOC,OAAO3Q,EAAY,CAACmF,UAAW,8CAEnDnF,EAAa0Q,OAAOC,OAAO3Q,EAAY,CAAC8O,MAAO3E,EAAK3G,UAGtD,EAAKlE,SAAS,CACZS,SAAS,EACTC,aACA+E,qBAGGoF,IACN,QACFyG,MAAK,WAEJ,IACIhK,OAAOuF,UAAUC,KAAK,CACpB,MAAS,uBACT,mBAAsB,EACtB,mBAAsB,IAE1B,MAAMrL,IAER,EAAK8P,iBAENC,MAAK,WACJ,EAAKxR,SAAS,CACZS,SAAS,OA5Ef,iD,+EAiFA,WAAe,IAAD,OACZ,OAAO,IAAIgR,SAAQ,SAACC,EAASC,GAAV,OAAqB7G,cACrCjJ,MAAK,SAACC,GACe,YAAhBA,EAAKiJ,SACP6G,eAAeC,WAAW,iBAE1BD,eAAeE,QAAQ,cAAehQ,EAAKiI,SAASxJ,IACpDqR,eAAeE,QAAQ,kBAAmBhQ,EAAKiI,SAASgI,aACxDH,eAAeE,QAAQ,iBAAkBhQ,EAAKiI,SAASjK,OACvD8R,eAAeE,QAAQ,gBAAiBhQ,EAAKiI,SAAShG,MAEtD6M,aAAakB,QAAQ,cAAe,EAAKnT,MAAM6Q,OAE3C1N,EAAKkQ,YAAYC,QACnBL,eAAeE,QAAQ,eAAgBhQ,EAAKkQ,YAAYE,OACxDN,eAAeE,QAAQ,mBAAoBK,KAAKC,UAAUtQ,EAAKkQ,YAAYC,UAE3EL,eAAeE,QAAQ,eAAgB,GAGzCF,eAAeE,QAAQ,iBAAkBK,KAAKC,UAAUtQ,EAAKuQ,iBAC7DT,eAAeE,QAAQ,kBAAmBK,KAAKC,UAAUtQ,EAAKwQ,kBAG1DxQ,EAAKmJ,KAAKsH,WACZX,eAAeE,QAAQ,cAAc,GACrCF,eAAeE,QAAQ,eAAgBhQ,EAAKmJ,KAAKuH,eAEjDZ,eAAeC,WAAW,cAC1BD,eAAeC,WAAW,iBAGxB/P,EAAK2Q,WACPb,eAAeE,QAAQ,YAAaK,KAAKC,UAAUtQ,EAAK2Q,WAAWC,QAAQ,MAAO,KAGhF5Q,EAAKmJ,KAAK0H,kBACZf,eAAeE,QAAQ,aAAchQ,EAAKmJ,KAAK2H,YAC/CC,YAAU,aAAc/Q,EAAKmJ,KAAK2H,WAAY,KAC9ChB,eAAeE,QAAQ,iBAAkBhQ,EAAKmJ,KAAK6H,kBACnDlB,eAAeE,QAAQ,mBAAoBhQ,EAAKmJ,KAAK8H,oBACrDnB,eAAeE,QAAQ,gBAAiBhQ,EAAKmJ,KAAK+H,mBAElDpB,eAAeC,WAAW,cAC1BgB,YAAU,aAAc/Q,EAAKmJ,KAAK2H,WAAY,KAC9ChB,eAAeC,WAAW,kBAC1BD,eAAeC,WAAW,oBAC1BD,eAAeC,WAAW,kBAK5B,EAAKnT,MAAMuU,cAAcnR,EAAKwQ,iBAC9B,EAAK5T,MAAMwU,cAAcpR,EAAKqR,WAC9B,EAAKzU,MAAMsO,qBAAqBlL,EAAKuJ,iBAAkBvJ,EAAKmJ,KAAK0H,kBACjE,EAAKjU,MAAM0U,aAAatR,EAAKiI,UAC7B,EAAKrL,MAAMgJ,YAAY5F,EAAKmD,SAExBnD,EAAKmJ,KAAK0H,kBACZ,EAAK3S,SAAS,CACZqT,YAAavR,EAAKmJ,KAAK2H,WACvBU,gBAAiBxR,EAAKmJ,KAAKsI,QAAUzR,EAAKmJ,KAAKsI,QAAUzR,EAAKmJ,KAAKrM,UACnE4U,uBAAwB1R,EAAKiR,mBAC7BU,qBAAsB3R,EAAKgR,mBAG7B,EAAKpU,MAAMgV,kBAAiB,GAG5B9B,eAAeE,QAAQ,aAAchQ,EAAKmJ,KAAK2H,YAC/CC,YAAU,aAAc/Q,EAAKmJ,KAAK2H,WAAY,KAE9ChB,eAAeC,WAAW,mBAE1B,EAAKnT,MAAMgV,kBAAiB,GAC5B9B,eAAeC,WAAW,0BAE5BH,EAAQ5P,OAGXqF,OAAM,SAACC,GAEN,OADAuK,EAAOvK,GACAA,U,oBAGb,WACE,OACE,cAAC,WAAD,UACE,sBAAKnH,UAAU,6DAAf,UACE,sBAAKA,UAAU,MAAf,UACE,qBAAKA,UAAU,SAAf,SACE,qBAAIA,UAAU,oBAAd,4BAAiD,uCAAS,cAAC0T,EAAA,EAAD,CAAGC,GAAG,IAAI1R,QAASnC,KAAK4P,eAAxB,6BAE5D,sBAAK1P,UAAU,cAAf,UACE,uBAAOC,QAAQ,cAAf,+BACA,uBAAON,KAAK,OAAOO,SAAUJ,KAAKT,kBAAmBQ,MAAOC,KAAKpB,MAAM4Q,cAAejP,aAAa,OAAOZ,KAAK,gBAAgBa,GAAG,cAAcC,SAAUT,KAAKrB,MAAM+B,UACnKV,KAAKpB,MAAM+B,WAAW6O,eACtB,mBAAGtP,UAAU,aAAb,SAA2BF,KAAKpB,MAAM+B,WAAW6O,mBAGrD,sBAAKtP,UAAU,cAAf,UACE,uBAAOC,QAAQ,eAAf,2BACA,uBAAON,KAAK,OAAOO,SAAUJ,KAAKT,kBAAmBQ,MAAOC,KAAKpB,MAAM6Q,MAAOlP,aAAa,QAAQZ,KAAK,QAAQa,GAAG,eAAeC,SAAUT,KAAKrB,MAAM+B,UACrJV,KAAKpB,MAAM+B,WAAW8O,OACtB,mBAAGvP,UAAU,aAAb,SAA2BF,KAAKpB,MAAM+B,WAAW8O,WAGrD,sBAAKvP,UAAU,cAAf,UACE,sBAAKA,UAAU,8BAAf,UACE,mBAAGA,UAAU,6BAAb,gGACA,mBAAGA,UAAU,qCAAb,sCAEF,uBAAOC,QAAQ,kBAAf,sBACA,uBAAON,KAAK,WAAWO,SAAUJ,KAAKT,kBAAmBQ,MAAOC,KAAKpB,MAAM8Q,SAAUnP,aAAa,eAAeZ,KAAK,WAAWa,GAAG,kBAAkBC,SAAUT,KAAKrB,MAAM+B,UACzKV,KAAKpB,MAAM+B,WAAW+O,UACtB,mBAAGxP,UAAU,aAAb,SAA2BF,KAAKpB,MAAM+B,WAAW+O,iBAIvD,sBAAKxP,UAAU,MAAf,UACE,sBAAKA,UAAU,oBAAf,UACIF,KAAKpB,MAAM+B,WAAWgP,SACtB,mBAAGzP,UAAU,kBAAb,SAAgCF,KAAKpB,MAAM+B,WAAWgP,UAEtD3P,KAAKpB,MAAM+B,WAAWmF,WACtB,mBAAG5F,UAAU,uBAAb,SAAqCF,KAAKpB,MAAM+B,WAAWmF,YAE3D9F,KAAKpB,MAAM8G,iBACX,qBAAKxF,UAAU,2BAA2B+B,MAAO,CAAE4M,UAAW,OAAQiF,aAAc,QAApF,SACE,cAAC,IAAD,CACEhF,QAAU/L,IAAOgM,iBACjB3O,SAAUJ,KAAKmG,qBAIlBnG,KAAKpB,MAAM8B,SACZ,wBAAQR,UAAS,6EAAwEF,KAAKpB,MAAM8B,QAAU,YAAc,IAAMyB,QAAUnC,KAAK8P,4BAA8BjQ,KAAK,SAASF,KAAK,SAASc,SAAUT,KAAKpB,MAAM8B,QAAhO,sBAEAV,KAAKpB,MAAM8B,SACX,wBAAQR,UAAS,qFAAgFF,KAAKpB,MAAM8B,QAAU,YAAc,IAAMyB,QAAUnC,KAAK8P,4BAA8BjQ,KAAK,SAASF,KAAK,SAASc,SAAUT,KAAKpB,MAAM8B,QAAxO,SAAiP,cAACsO,EAAA,EAAD,SAGrP,qBAAK9O,UAAU,oBAAf,SACE,0DAA4B,cAAC0T,EAAA,EAAD,CAAGC,GAAG,IAAI3T,UAAU,uBAAuBiC,QAASnC,KAAK4P,eAAzD,sC,GAjVjB9O,aAyXVuB,eALS,SAACzD,GAAD,MAAY,CAClCmV,OAAQnV,EAAMsQ,IAAI,cA1BO,SAAC5M,GAAD,MAAe,CACxC4Q,cAAe,SAACc,GACd1R,EAAS4Q,YAAcc,KAEzBb,cAAe,SAACC,GACd9Q,EAAS6Q,YAAcC,KAEzBnG,qBAAsB,SAAC3B,EAAkB2I,GACvC3R,EAAS2K,YAAqB3B,EAAkB2I,KAElDZ,aAAc,SAACrJ,GACb1H,EAAS+Q,YAAarJ,KAExBrC,YAAa,SAACzC,GACZ5C,EAASqF,YAAYzC,KAEvByO,iBAAkB,SAAC3I,GACjB1I,EAAS4R,YAAelJ,KAE1BoF,WAAY,SAAC+D,GACX7R,EAAS8R,YAASD,QAUP9R,CAGbiN,GChZmB+E,E,kDACnB,WAAY1V,GAAQ,IAAD,8BACjB,cAAMA,IAEDC,MAAQ,CACX0V,WAAY,GAGd,EAAK/U,kBAAoB,EAAKA,kBAAkBC,KAAvB,gBAPR,E,qDAUnB,SAAkBC,GAChB,IAAMC,EAASD,EAAMC,OACfC,EAAOD,EAAOC,KACdC,EAA6B,aAAhBF,EAAOG,KAAsBH,EAAOI,QAAUJ,EAAOK,MAExEC,KAAKC,SAAL,eACGN,EAAOC,M,+BAIZ,WACE2I,EAAE,QAAQgM,YAAY,sB,oBAGxB,WACE,OACE,sBAAKrU,UAAU,yDAAf,UACE,qBAAKA,UAAU,iBAAf,SACE,qBAAKA,UAAU,SAAf,SACE,oBAAIA,UAAU,oBAAd,0BAGJ,sBAAKA,UAAU,yCAAf,UACE,qBAAKA,UAAU,QAAf,SACE,4BAAG,qBAAKsU,IAAI,4DAEd,qBAAKtU,UAAU,aAAf,SACE,mBAAGA,UAAU,OAAb,yLAGJ,qBAAKA,UAAU,iBAAf,SACE,qBAAKA,UAAU,SAAf,SACE,8DAGJ,sBAAKA,UAAU,yCAAf,UACE,qBAAKA,UAAU,QAAf,SACE,4BAAG,qBAAKsU,IAAI,0EAEd,sBAAKtU,UAAU,aAAf,UACE,mBAAGA,UAAU,4BAAb,2LACA,mBAAGA,UAAU,OAAb,4OAGJ,sBAAKA,UAAU,yCAAf,UACE,qBAAKA,UAAU,QAAf,SACE,4BAAG,qBAAKsU,IAAI,0EAEd,qBAAKtU,UAAU,aAAf,SACE,mBAAGA,UAAU,uBAAb,qIAGDF,KAAKrB,MAAM8V,sBACZ,eAAC,WAAD,WACE,qBAAKvU,UAAU,iBAAf,SACE,qBAAKA,UAAU,SAAf,SACE,qBAAIA,UAAU,eAAd,yCAAyD,sDAG7D,qBAAKA,UAAU,iBAAf,SACE,sBAAKA,UAAU,0CAAf,UACA,uBAAOA,UAAU,8CAA8CC,QAAQ,aAAvE,gDACA,yBAAQD,UAAU,wCAAwCP,KAAK,aAAaI,MAAOC,KAAKpB,MAAM0V,WAAYlU,SAAUJ,KAAKT,kBAAzH,UACE,wBAAQQ,MAAM,IAAd,qCACA,wBAAQA,MAAM,IAAd,gCACA,wBAAQA,MAAM,IAAd,8BACA,wBAAQA,MAAM,IAAd,8BACA,wBAAQA,MAAM,IAAd,gCACA,wBAAQA,MAAM,IAAd,kCACA,wBAAQA,MAAM,IAAd,iCACA,wBAAQA,MAAM,IAAd,8BACA,wBAAQA,MAAM,IAAd,wBACA,wBAAQA,MAAM,IAAd,iCACA,wBAAQA,MAAM,KAAd,qBACA,wBAAQA,MAAM,KAAd,sBACA,wBAAQA,MAAM,KAAd,oBACA,wBAAQA,MAAM,KAAd,gCACA,wBAAQA,MAAM,KAAd,4BACA,wBAAQA,MAAM,KAAd,2BACA,wBAAQA,MAAM,KAAd,wCAMR,qBAAKG,UAAU,iBAAf,SACE,sBAAKA,UAAU,qBAAf,WACKF,KAAKrB,MAAM+V,sBACZ,wBAAQxU,UAAS,uCAAkCF,KAAKrB,MAAM+V,qBAAuB,YAAc,IAAMvS,QAAUnC,KAAKrB,MAAMgW,2BAA6B9U,KAAK,SAASF,KAAK,SAASc,SAAUT,KAAKrB,MAAM+V,qBAA5M,gCAEA1U,KAAKrB,MAAM+V,sBACX,wBAAQxU,UAAS,+CAA0CF,KAAKrB,MAAM+V,qBAAuB,YAAc,IAAM7U,KAAK,SAASF,KAAK,SAASc,SAAUT,KAAKrB,MAAM+V,qBAAlK,SAAwL,cAAC1F,EAAA,EAAD,kB,GAtGjKK,IAAMvO,W,SCDtB8T,G,kDACnB,WAAYjW,GAAQ,uCACZA,G,0CAGR,WACE,IAAIkW,EAAa,GACbC,EAAa,GAEjB,OAAO9U,KAAKrB,MAAMqL,SAAShG,MACzB,IAAK,MACH6Q,EAAa,cACbC,EAAa,cACb,MACF,IAAK,MACHD,EAAa,eACbC,EAAa,cACb,MACF,IAAK,MACHD,EAAa,eACbC,EAAa,cACb,MACF,IAAK,MACHD,EAAa,aACbC,EAAa,YACb,MACF,IAAK,MACHD,EAAa,eACbC,EAAa,eAIjB,IAAIC,EAA2B,CAAC,6BAAD,OACAF,EADA,4DAE7B,+BAQEG,EAAuB,CAAC,6CAAD,OACoBF,EADpB,KAEzB,uBAGEG,EAAyB,CAC3B,+CACA,qBAIEC,EAAmB,CACrB,2EACA,uBAEEC,EAAqB,CACvB,8BACA,2BAIEC,EAAoB,CAAC,GAAG,IACxBC,EAAmB,CAAC,GAAG,IAE3B,OAAOrV,KAAKrB,MAAMiC,aAAaqJ,MAC7B,KAAK,EACL,KAAK,EACHmL,EAAoBL,EACpB,MACF,KAAK,EACL,KAAK,EACHK,EApC6B,CAC/B,gCACA,6BAmCE,MACF,KAAK,EACHA,EAAoBJ,EACpBK,EAAoBH,EACpB,MACF,KAAK,EACHE,EAAoBH,EACpBI,EAAoBH,EACpB,MACF,KAAK,EACHE,EAAoBJ,EACpBK,EAAoBF,EACpB,MACF,KAAK,EACHC,EAAoBH,EACpBI,EAAoBF,EACpB,MACF,QACEC,EAAoB,CAAC,GAAG,IAG5B,IAAIE,EAAa,GACjB,OAAOtV,KAAKrB,MAAMiC,aAAasJ,QAC7B,KAAK,EACL,KAAK,EACHoL,EAAa,8BACb,MACF,KAAK,EACL,KAAK,EACHA,EAAa,6BAIjB,OACE,sBAAKpV,UAAU,8BAAf,UACIF,KAAKrB,MAAMiC,cACX,eAAC,WAAD,WACE,cAAC2U,EAAA,EAAD,CAAqBC,SAAUxV,KAAKrB,MAAMiC,aAAajB,OACvD,mBAAGO,UAAU,4BAAb,SAA2CF,KAAKrB,MAAMiC,aAAauL,cAAgBnM,KAAKrB,MAAMiC,aAAasL,iBAG/G,uBACmC,IAAjClM,KAAKrB,MAAMiC,aAAaqJ,MACxB,eAAC,WAAD,WACE,mBAAG/J,UAAU,wBAAb,qCACA,mBAAGA,UAAU,OAAb,SAAqBkV,EAAkB,QAGH,IAAtCpV,KAAKrB,MAAMiC,aAAaqL,WAAoD,IAAjCjM,KAAKrB,MAAMiC,aAAaqJ,MACnE,mBAAG/J,UAAU,OAAb,SAAqBmV,EAAiB,KAEL,IAAjCrV,KAAKrB,MAAMiC,aAAaqJ,MACxB,uBAEF,mBAAG/J,UAAU,sBAAb,SAAoCoV,IACpC,qBAAKpV,UAAU,oDAAf,SACE,qBAAKA,UAAU,MAAf,SACE,qBAAKA,UAAU,SAAf,SACE,iE,GApI0CmP,IAAMvO,WCAzC2U,G,kDACnB,WAAY9W,GAAQ,uCACZA,G,iDAGR,SAAc+W,GACZ,OAAO1F,KAAK2F,MAAY,IAAND,GAAa,M,oBAGjC,WAAU,IAAD,OAEHb,EAAa,GACbC,EAAa,GAEjB,OAAO9U,KAAKrB,MAAMqL,SAAShG,MACzB,IAAK,MACH6Q,EAAa,cACbC,EAAa,cACb,MACF,IAAK,MACHD,EAAa,eACbC,EAAa,cACb,MACF,IAAK,MACHD,EAAa,eACbC,EAAa,cACb,MACF,IAAK,MACHD,EAAa,aACbC,EAAa,YACb,MACF,IAAK,MACHD,EAAa,eACbC,EAAa,eAIjB,IAAIC,EAA2B,CAAC,6BAAD,OACAF,EADA,4DAE7B,+BAQEG,EAAuB,CAAC,6CAAD,OACoBF,EADpB,KAEzB,uBAGEG,EAAyB,CAC3B,+CACA,qBAIEC,EAAmB,CACrB,2EACA,uBAEEC,EAAqB,CACvB,8BACA,2BAIEC,EAAoB,CAAC,GAAG,IACxBC,EAAmB,CAAC,GAAG,IACvBO,GAAmB,EACnBC,GAAkB,EAEtB,OAAO7V,KAAKrB,MAAMiC,aAAaJ,IAC7B,KAAK,EACL,KAAK,EACH4U,EAAoBL,EACpB,MACF,KAAK,EACL,KAAK,EACHK,EAtC6B,CAC/B,gCACA,6BAqCEQ,GAAoB,EACpB,MACF,KAAK,EACHR,EAAoBJ,EACpBK,EAAoBH,EACpB,MACF,KAAK,EACHE,EAAoBH,EACpBI,EAAoBH,EAEpBU,GAAoB,EACpB,MACF,KAAK,EACHR,EAAoBJ,EACpBK,EAAoBF,EAEpBU,GAAoB,EACpB,MACF,KAAK,EACHT,EAAoBH,EACpBI,EAAoBF,EAEpBS,GAAoB,EACpBC,GAAoB,EACpB,MACF,QACET,EAAoB,CAAC,GAAG,IAG5B,IAAMU,EAAe9V,KAAKrB,MAAMqL,SAAShG,KAAK+R,cAE1CC,EAAgB,CAClBC,QAAStS,WAAW3D,KAAKrB,MAAMiC,aAAasV,MAAMD,QAAQH,IAC1DK,OAAQxS,WAAW3D,KAAKrB,MAAMiC,aAAasV,MAAMC,OAAOL,KAOtDM,EAAWpW,KAAKrB,MAAM0X,iBAAiBnT,UAAY8S,EAAcC,QAAUD,EAAcG,OAMzFG,EAAiB,EAChBtW,KAAKrB,MAAM0X,iBAAiBtS,WAC/BuS,EAAiBtW,KAAKuW,cAAcH,EAAWpW,KAAKrB,MAAM0X,iBAAiBtS,SAASG,SAGtF,IAqBIsS,EAAKC,EAAOC,EAAeC,EArB3BC,EAAe,GACfC,GAAmB,EACnB7W,KAAKrB,MAAM0X,iBAAiBtS,SAASN,gBACvCmT,EAAY,0BAAuB5W,KAAKrB,MAAM0X,iBAAiBtS,SAASH,gBAA5D,8BAAyJ,IAAvD5D,KAAKrB,MAAM0X,iBAAiBtS,SAASN,gBAAvI,KAERzD,KAAKrB,MAAM0X,iBAAiBtS,SAASH,gBAErCgT,EAD2D,IAAzD5W,KAAKrB,MAAM0X,iBAAiBtS,SAASH,gBAC3B,mDAEA,+BAA4B5D,KAAKrB,MAAM0X,iBAAiBtS,SAASH,gBAAjE,kCAGdgT,EAAe5W,KAAKrB,MAAM0X,iBAAiBtS,SAASC,KACpD6S,GAAmB,GAUnB7W,KAAKrB,MAAMmY,cACbN,EAAMxW,KAAKrB,MAAMmY,aAAaC,IAC9BT,EAAiBtW,KAAKrB,MAAMmY,aAAa/S,SACzC0S,EAAQzW,KAAKrB,MAAMmY,aAAaL,MAEhCE,GAAmBP,GADnBM,EAAgB1W,KAAKuW,cAAcH,EAAWpW,KAAKrB,MAAMuG,QAAQ+B,YACpB+P,eAAe,QAAS,CAACC,sBAAuB,MAE7FT,EAAMxW,KAAKuW,eAAgBH,EAAWE,GAAkBtW,KAAKrB,MAAMuG,QAAQ+B,UAC3EyP,EAAgB1W,KAAKuW,cAAeH,EAAWpW,KAAKrB,MAAMuG,QAAQ+B,UAE9DjH,KAAKrB,MAAM0X,iBAAiB9T,mBAAuD,OAAlCvC,KAAKrB,MAAMuG,QAAQgC,aACtEsP,EAAM,GAGRC,EAAQL,EAAWE,EAAiBE,EACpCG,GAAmBP,EAAWM,GAAeM,eAAe,QAAS,CAACC,sBAAuB,KAG/F,IAAIC,EAAqB,cACrBC,GAA0B,EACzBnX,KAAKrB,MAAM0X,iBAAiBtS,SAASH,kBACqB,IAAzD5D,KAAKrB,MAAM0X,iBAAiBtS,SAASH,gBACvCsT,EAAkB,uBAElBA,EAAkB,wBAAoBlX,KAAKrB,MAAM0X,iBAAiBtS,SAASH,gBAAzD,WAClBuT,GAA0B,GAI5BD,GAAkB,iBAAclX,KAAKrB,MAAMqL,SAASgI,aAAlC,OAAiD2E,EAAjD,gBAChB3W,KAAKrB,MAAMqL,SAASgI,YAMxB,IAAIoF,EAAepX,KAAKuW,eAAgBH,EAAWE,GAAkB,IACrEc,EAAeA,EAAaJ,eAAe,QAAS,CAACC,sBAAuB,IAM5E,IAAII,EAAaZ,EAAMa,QAAQ,GAAGC,MAAM,KAExCF,EAAW,GAAKvT,SAASuT,EAAW,IAAIL,eAAe,SAMvD,IAAIQ,EAAa,gCAMjB,OAJMxX,KAAKrB,MAAM0X,iBAAiBnT,YAChCsU,EAAU,wBAAqBxX,KAAKrB,MAAMqL,SAASgI,aAAzC,OAAwDoF,GAAxD,OAAwEZ,EAAM,EAAI,SAAW,GAA7F,aAIV,sBAAKtW,UAAU,8BAAf,UACIF,KAAKrB,MAAMiC,cACX,eAAC,WAAD,WACE,cAAC2U,EAAA,EAAD,CAAqBC,SAAUxV,KAAKrB,MAAMiC,aAAajB,OACvD,mBAAGO,UAAU,4BAAb,SAA2CF,KAAKrB,MAAMiC,aAAauL,cAAgBnM,KAAKrB,MAAMiC,aAAasL,iBAG/G,uBACiC,IAA/BlM,KAAKrB,MAAMiC,aAAaJ,IACxB,eAAC,WAAD,WACE,mBAAGN,UAAU,wBAAb,qCACA,oBAAGA,UAAU,OAAb,UAAqBkV,EAAkB,GAAvC,IAA2C,mBAAGhT,KAAK,IAAIlC,UAAWuX,IAAW,gBAAiB,CAAEC,SAAU9B,IAAqBzT,QAAS,SAACT,GAAO,EAAK/C,MAAMgZ,mBAAmBjW,EAAG,cAAtI,SAAuJ0T,EAAkB,WAG5K,IAA1CpV,KAAKrB,MAAMiC,aAAaC,eAAsD,IAA/Bb,KAAKrB,MAAMiC,aAAaJ,IACvE,oBAAGN,UAAU,OAAb,UAAqBmV,EAAiB,GAAtC,IAA0C,mBAAGjT,KAAK,IAAIlC,UAAWuX,IAAW,gBAAiB,CAAEC,SAAU7B,IAAoB1T,QAAS,SAACT,GAAO,EAAK/C,MAAMgZ,mBAAmBjW,EAAG,aAArI,SAAqJ2T,EAAiB,QAEjL,IAA/BrV,KAAKrB,MAAMiC,aAAaJ,IACxB,uBAEF,mBAAGN,UAAU,sBAAb,SAAoCF,KAAKrB,MAAM0X,iBAAiBnT,UAAY,8BAAgC,+BAC5G,sBAAKhD,UAAU,4CAAf,UACE,sBAAKA,UAAU,MAAf,UACE,qBAAKA,UAAU,QAAf,sBAGA,sBAAKA,UAAU,mBAAf,UACIF,KAAKrB,MAAMqL,SAASgI,YAAeoE,EAASY,eAAe,QAAS,CAACC,sBAAuB,UAGlG,uBACEjX,KAAKrB,MAAM0X,iBAAiBtS,UAC5B,eAAC,WAAD,WACE,sBAAK7D,UAAU,MAAf,UACE,sBAAKA,UAAU,QAAf,sBACYF,KAAKrB,MAAM0X,iBAAiBtS,SAASN,iBAAmB,sCAA0D,IAA9CzD,KAAKrB,MAAM0X,iBAAiBtS,SAASG,OAAjD,QAClE,0BAEF,sBAAKhE,UAAU,mBAAf,cACKF,KAAKrB,MAAMqL,SAASgI,YAAesE,EAAeU,eAAe,QAAS,CAACC,sBAAuB,OAEvG,qBAAK/W,UAAU,SAAf,SACE,uBAAOA,UAAWuX,IAAW,CAAE,mCAAoCZ,IAAnE,SAAyFD,SAG7F,0BAGFJ,EAAM,GACN,eAAC,WAAD,WACE,sBAAKtW,UAAU,MAAf,UACE,sBAAKA,UAAU,QAAf,iBACM,sCAAUF,KAAKrB,MAAMmY,aAAe9W,KAAKrB,MAAMmY,aAAac,SAAyC,IAA9B5X,KAAKrB,MAAMuG,QAAQ+B,SAA1F,WAEN,sBAAK/G,UAAU,mBAAf,UACIF,KAAKrB,MAAMqL,SAASgI,YAAewE,EAAIQ,eAAe,QAAS,CAACC,sBAAuB,UAG7F,0BAGJ,sBAAK/W,UAAU,MAAf,UACE,sBAAKA,UAAU,QAAf,6BACoBF,KAAKrB,MAAMqL,SAAS6N,aAAe,uCAAW7X,KAAKrB,MAAMqL,SAAShG,KAA/B,UAEvD,sBAAK9D,UAAU,iCAAf,UACIF,KAAKrB,MAAMqL,SAASgI,YAAa,+BAAQqF,EAAW,KADxD,IACsEA,EAAW,SAGjFrX,KAAKrB,MAAM0X,iBAAiBnT,WAC5B,qBAAKhD,UAAU,MAAf,SACE,qBAAKA,UAAU,oBAAf,SACE,sBAAMA,UAAWuX,IAAW,CAAE,oCAAqCN,IAAnE,SAAgGD,WAMxG,mBAAGhX,UAAU,OAAb,SAAsBsX,IACtB,mBAAGtX,UAAU,OAAb,SAAoB,oBAAGiC,QAAS,WAAQ,EAAKxD,MAAMwQ,sBAAsB,EAAKxQ,MAAM0X,iBAAiBnT,UAAY,SAAW,YAAcjB,MAAO,CAAE6V,eAAgB,YAAa5V,OAAQ,WAApK,uBAA6LlC,KAAKrB,MAAM0X,iBAAiBnT,UAAwB,SAAZ,UAArO,uB,GApSqBmM,IAAMvO,W,kBC+BjDiX,G,kDACJ,WAAYpZ,GAAQ,IAAD,8BACjB,cAAMA,IACDC,MAAQ,CACXoZ,IAAK,WACLC,aAAa,EACbC,gBAAiB,EAAKvZ,MAAMwZ,SAASlE,WACrCrT,cAAc,EACdwX,SAAS,EACTC,sBAAuB,EAAK1Z,MAAM2M,iBAAiBgN,oBACnD5D,sBAAsB,EACtBoC,aAAc,KACdyB,qBAAqB,GAEvB,EAAKC,uBAAyB,EAAKA,uBAAuBhZ,KAA5B,gBAC9B,EAAKmY,mBAAqB,EAAKA,mBAAmBnY,KAAxB,gBAC1B,EAAKmV,2BAA6B,EAAKA,2BAA2BnV,KAAhC,gBAClC,EAAKiZ,kCAAoC,EAAKA,kCAAkCjZ,KAAvC,gBACzC,EAAKkZ,oBAAsB,EAAKA,oBAAoBlZ,KAAzB,gBAC3B,EAAKmZ,iBAAmB,EAAKA,iBAAiBnZ,KAAtB,gBAlBP,E,sDAqBnB,SAAmB8H,GAajB,GAXItH,KAAKrB,MAAMwZ,SAASlE,aAAe3M,EAAU6Q,SAASlE,YAAgD,OAAlC3M,EAAU6Q,SAASlE,YACzFjU,KAAKC,SAAS,CACZiY,gBAAiBlY,KAAKrB,MAAMwZ,SAASlE,aAGrCjU,KAAKrB,MAAM2M,iBAAiBQ,WAAaxE,EAAUgE,iBAAiBQ,UACtE9L,KAAKC,SAAS,CACZoY,sBAAuBrY,KAAKrB,MAAM2M,iBAAiBQ,WAInD9L,KAAKrB,MAAMwZ,SAASlE,YAAcjU,KAAKpB,MAAMgC,aAAc,CAC7D,IAAMgY,EACJtR,EAAU+O,iBAAiBnT,YAAclD,KAAKrB,MAAM0X,iBAAiBnT,WACrEoE,EAAU+O,iBAAiB9T,oBAAsBvC,KAAKrB,MAAM0X,iBAAiB9T,mBAC7E+E,EAAU+O,iBAAiB/W,YAAcU,KAAKrB,MAAM0X,iBAAiB/W,WACrEgI,EAAU+O,iBAAiBtS,WAAa/D,KAAKrB,MAAM0X,iBAAiBtS,UACpEuD,EAAUpC,QAAQ1E,KAAOR,KAAKrB,MAAMuG,QAAQ1E,GAExCqY,EAAe7Y,KAAKrB,MAAMwZ,SAASlE,aAAe3M,EAAU6Q,SAASlE,YAEvE2E,GAAeC,IACjB7Y,KAAK2Y,sB,8BAKX,WAAoB,IAAD,OACjB,GAAK3Y,KAAKrB,MAAMwZ,SAASlE,YAAejU,KAAKpB,MAAMgC,aAAnD,CAIAZ,KAAKC,SAAS,CAAE6W,aAAc,KAAMyB,qBAAqB,IAEzD,IAAMzV,EAAW9C,KAAKrB,MAAM0X,iBAAiBnT,UACzCH,IAAOC,UAAUG,QACjBJ,IAAOC,UAAUC,OAErB6V,YAA8B,CAC5BC,OAAQ/Y,KAAKpB,MAAMgC,aAAaJ,GAChCsC,WACAU,WAAYM,SAAS+N,eAAef,QAAQ,gBAC5CkI,UAAWhZ,KAAKrB,MAAMuG,QAAQ1E,GAC9BlB,UAAWU,KAAKrB,MAAM0X,iBAAiB9T,kBAAoBvC,KAAKrB,MAAM0X,iBAAiB/W,UAAY,KACnG2Z,SAAUjZ,KAAKrB,MAAM0X,iBAAiBtS,SAAW/D,KAAKrB,MAAM0X,iBAAiBtS,SAASC,KAAO,OAC5FlC,MAAK,SAACC,GACHA,IAASA,EAAKf,MAChB,EAAKf,SAAS,CAAE6W,aAAc/U,EAAMwW,qBAAqB,IAEzD,EAAKtY,SAAS,CAAEsY,qBAAqB,OAEtCnR,OAAM,WACP,EAAKnH,SAAS,CAAEsY,qBAAqB,U,gCAIzC,WAAsB,IAAD,OACnBvY,KAAKrB,MAAMiE,yBAAwB,GAEnCsW,cAAkCpX,MAAK,SAACC,GACtC,IAAIkI,EAAO,EAAKtL,MAAM0X,iBAAiBpM,KAEvC,GAAKkP,MAAMlP,GACT,EAAKhK,SAAS,CAAEmY,SAAS,QACpB,CAEL,IAAIxX,EAAegG,IAAEc,KAAK3F,EAAKqX,MAAO,CAAC,KAAMnP,IAE7CpH,aAAK,gBAAiBjC,EAAajB,MACnC0Z,aACEzY,EAAaoD,KACbpD,EAAajB,KACb,eACAiB,EAAasV,MAAMC,OAAO,EAAKxX,MAAMqL,SAAShG,KAAK+R,eACnD,EAAKpX,MAAMqL,SAAShG,MAGtB,EAAK/D,SAAS,CAAEW,eAAcqX,YAAalW,EAAKqX,MAAOhB,SAAS,IAAS,WACvE,EAAKO,0BAKRvR,OAAM,SAACC,GAAD,OAASA,O,+BAGpB,WACExE,aAAK,mC,kCAGP,WACO7C,KAAKpB,MAAMyZ,uBACdxV,aAAK,qC,oCAIT,SAAuByW,GAAY,IAAD,OAC5B1Y,EAAegG,IAAEc,KAAK1H,KAAKpB,MAAMqZ,YAAa,CAAC,KAAMnU,SAASwV,KAE9D1Y,IACFZ,KAAKC,SAAS,CAAEW,iBAAgB,WAC9B,EAAK+X,sBAEP3Y,KAAKrB,MAAM4a,sBAAsBD,IAG/B1Y,EAAa4Y,eACf3W,aAAK,gBAAiBjC,EAAaoD,MAEnCnB,aAAK,gBAAiBjC,EAAaoD,Q,+CAKvC,SAAkCkG,GAC5BlK,KAAKrB,MAAM0X,iBAAiBtS,UAC9B/D,KAAK0Y,oBAAoBxO,GAE3BlK,KAAKrB,MAAMwQ,sBAAsBjF,K,iCAGnC,SAAoBA,GAAS,IAAD,OACtBzH,EAAezC,KAAKrB,MAAM0X,iBAAiBtS,SAASC,KACpD+U,EAAS/Y,KAAKrB,MAAM0X,iBAAiBpM,KACrCzG,EAAaM,SAAS+N,eAAef,QAAQ,gBAC7ChO,EAAWC,IAAOC,UAAUC,OACjB,YAAXiH,IACFpH,EAAWC,IAAOC,UAAUG,SAE9B,IAAIC,EAAYC,cAEhBrD,KAAKrB,MAAMiE,yBAAwB,GAEnCU,YAAkBb,EAAcsW,EAAQvV,EAAYV,EAAUM,GAAWtB,MAAK,SAACC,GAC7E,GAAIA,EAAKC,QAAS,CAChB,IAAIyB,IAAkB1B,EAAK2B,kBAAmBC,WAAW5B,EAAK2B,kBAC1DE,IAAkB7B,EAAK8B,eAAgBC,SAAS/B,EAAK8B,eAErDE,EAAW,CACbC,KAAMjC,EAAKkC,WACXC,OAAQP,WAAW5B,EAAKgC,UACxBN,kBACAG,mBAGF,EAAKjF,MAAMiE,wBAAwBmB,S,gCAOzC,SAAmBrC,EAAG+X,GACpB/X,EAAEC,iBAEF,IAAI+X,GAAU,EAEd,GAAe,cAAXD,EACF,OAAOzZ,KAAKpB,MAAMgC,aAAaJ,IAC7B,KAAK,EACHkZ,EAAU,EACV,MACF,KAAK,EACHA,EAAU,EACV,MACF,KAAK,EACHA,EAAU,EACV,MACF,KAAK,EACHA,EAAU,EACV,MACF,KAAK,EAeL,QACEA,GAAU,QAbZ,KAAK,EACHA,EAAU,EACV,MACF,KAAK,EACHA,EAAU,EACV,MACF,KAAK,EACHA,EAAU,EACV,MACF,KAAK,EACHA,EAAU,OAKT,GAAe,aAAXD,EACT,OAAOzZ,KAAKpB,MAAMgC,aAAaJ,IAC7B,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EAeL,QACEkZ,GAAU,QAbZ,KAAK,EACHA,EAAU,EACV,MACF,KAAK,EACHA,EAAU,EACV,MACF,KAAK,EACHA,EAAU,EACV,MACF,KAAK,EACHA,EAAU,EAOZA,GACF1Z,KAAKwY,uBAAuBkB,K,wCAIhC,SAA2BhY,GAAI,IAGzBiY,EAHwB,OACtBC,EAAa,cACbC,EAAqB/V,SAAUyE,EAAE,0CAA0CuR,OAIjFpY,EAAEC,iBAEFgY,EAJyB,GAIgBI,OAEzC/Z,KAAKC,SAAS,CACZyU,sBAAsB,IAGI,IAAvBmF,GAA6BV,MAAMU,GAgCtC7Z,KAAKrB,MAAMqb,OAAOjN,KAAK6M,GA9BvBrR,EAAEmD,KAAK,CACL7L,KAAM,OACN8L,IAAI,GAAD,OAAK5I,IAAO2H,IAAZ,wBACH3I,KAAM,CACJ,WAAc8X,EACd,WAAcF,EACd,MAAS9H,eAAef,QAAQ,iBAEjCS,MAAK,SAAC1G,GAEP,EAAKlM,MAAMsb,sBAAqB,GAEhC,IACI1S,OAAOuF,UAAUC,KAAK,CACpB,MAAS,qCACT,mBAAsB8M,IAGxBhX,aAAK,gCAAiCgX,GACxC,MAAMnY,IAER,EAAK/C,MAAMqb,OAAOjN,KAAK6M,MAEtBnI,MAAK,WACNzR,KAAKC,SAAS,CACZyU,sBAAsB,S,oBAS9B,WACE,OACE,cAAC,WAAD,UACE,sBAAKxU,UAAU,qBAAf,UACE,cAAC,IAAD,CACEga,MAAO,6BACPC,KAAO,CAAC,CAAExa,KAAM,SAAUya,QAAS,wBAIrC,qBAAKla,UAAU,oBAAf,SACE,sBAAKA,UAAU,6BAAf,WACIF,KAAKpB,MAAMgC,cAAgBZ,KAAKpB,MAAMyZ,wBACxC,eAAC,WAAD,WACE,qBAAKnY,UAAU,2BAAf,SACE,sBAAKA,UAAU,gCAAf,UACE,qBAAKA,UAAU,gCAAf,SACE,qDAGAF,KAAKpB,MAAMyZ,uBACX,cAAC,GAAD,CACEzX,aAAcZ,KAAKrB,MAAM2M,iBACzBtB,SAAUhK,KAAKrB,MAAMqL,SACrBmF,sBAAuBnP,KAAKyY,kCAC5BpC,iBAAkBrW,KAAKrB,MAAM0X,iBAC7BsB,mBAAoB3X,KAAK2X,mBACzBzS,QAASlF,KAAKrB,MAAMuG,QACpBoG,iBAAkBtL,KAAKrB,MAAM2M,oBAI9BtL,KAAKpB,MAAMyZ,uBAAyBrY,KAAKpB,MAAMgC,cAChD,cAAC,GAAD,CACEA,aAAcZ,KAAKpB,MAAMgC,aACzBoJ,SAAUhK,KAAKrB,MAAMqL,SACrBmF,sBAAuBnP,KAAKyY,kCAC5BpC,iBAAkBrW,KAAKrB,MAAM0X,iBAC7BsB,mBAAoB3X,KAAK2X,mBACzBzS,QAASlF,KAAKrB,MAAMuG,QACpBoG,iBAAkBtL,KAAKrB,MAAM2M,iBAC7BwL,aAAc9W,KAAKpB,MAAMkY,aACzByB,oBAAqBvY,KAAKpB,MAAM2Z,2BAKxC,sBAAKrY,UAAU,4CAAf,UACIF,KAAKrB,MAAM2M,iBAAiBQ,UAC5B,cAAC,EAAD,CACE2I,qBAAsBzU,KAAKrB,MAAMwZ,SAAS1D,qBAC1CE,2BAA4B3U,KAAK2U,2BACjCD,qBAAsB1U,KAAKpB,MAAM8V,wBAGlC1U,KAAKrB,MAAM2M,iBAAiBQ,UAC7B,eAAC,WAAD,YACK9L,KAAKpB,MAAMsZ,kBAAmB,GAG9BlY,KAAKrB,MAAMwZ,SAASlE,YACrB,cAAC,EAAD,IAEAjU,KAAKrB,MAAMwZ,SAASlE,YACpB,cAAC,iBAAD,CAAgBoG,OAAStX,IAAOuX,kBAAhC,SACE,cAAC,WAAD,UACE,cAAC,EAAD,CACEzX,KAAMA,KACNjC,aAAcZ,KAAKpB,MAAMgC,aACzBmD,SAAU/D,KAAKrB,MAAM0X,iBAAiBtS,SACtCb,UAAWlD,KAAKrB,MAAM0X,iBAAiBnT,UACvCsV,uBAAwBxY,KAAKwY,uBAC7Be,sBAAuBvZ,KAAKrB,MAAM4a,sBAClCpU,YAAanF,KAAKrB,MAAMuG,QAAQ1E,mBAU9CR,KAAKpB,MAAMgC,eAAiBZ,KAAKpB,MAAMyZ,uBACvC,qBAAKnY,UAAU,MAAf,SACE,sBAAKA,UAAU,qBAAf,UACIF,KAAKpB,MAAMwZ,SACX,cAACpJ,EAAA,EAAD,KAEChP,KAAKpB,MAAMwZ,SACZ,eAAC,WAAD,WACE,mBAAGnW,MAAO,CAAEsY,SAAU,QAAtB,+BACA,mBAAGtY,MAAO,CAAEsY,SAAU,QAAtB,SAAgC,cAAC3G,EAAA,EAAD,CAAGC,GAAG,4BAA4B3T,UAAU,4BAA5C,+D,GAlYjBmP,IAAMvO,WAoZhC0Z,GAAqB,SAAClY,GAAD,MAAe,CAC/C6M,sBAAuB,SAACjF,GAAD,OAAY5H,EAAS6M,YAAsBjF,EAAQ,2BAC1EqP,sBAAuB,SAACkB,GAAD,OAAoBnY,EAASiX,YAAsBkB,KAC1ER,qBAAsB,SAACS,GAAD,OAAuBpY,EAAS2X,YAAqBS,KAC3E9X,wBAAyB,SAACmB,GAAD,OAAczB,EAASM,YAAwBmB,OAY3D1B,uBATS,SAACzD,GAAD,MAAY,CAClCoL,SAAUpL,EAAMsQ,IAAI,YACpBhK,QAAStG,EAAMsQ,IAAI,WACnBmH,iBAAkBzX,EAAMsQ,IAAI,oBAC5BiJ,SAAUvZ,EAAMsQ,IAAI,YACpB5D,iBAAkB1M,EAAMsQ,IAAI,uBAM5BsL,GAFanY,CAGb0V,K,qeCpcK,SAASe,EAAT,GAA0G,IAAjEC,EAAgE,EAAhEA,OAAQjW,EAAwD,EAAxDA,SAAUU,EAA8C,EAA9CA,WAAYwV,EAAkC,EAAlCA,UAAW1Z,EAAuB,EAAvBA,UAAW2Z,EAAY,EAAZA,SAC5F7V,EAAYyO,eAAef,QAAQ,cACnC1D,EAAM,UAAM1C,IAAN,8BACNJ,EAAW,IAAIC,SAUrB,OARAD,EAASE,OAAO,aAAcpH,GAC9BkH,EAASE,OAAO,SAAUuO,GAC1BzO,EAASE,OAAO,WAAY1H,GAC5BwH,EAASE,OAAO,aAAchH,GAC9B8G,EAASE,OAAO,YAAawO,GACzB1Z,GAAWgL,EAASE,OAAO,YAAalL,GACxC2Z,GAAU3O,EAASE,OAAO,WAAYyO,GAEnCxO,IAAM2C,EAAQ,CACnBzC,OAAQ,OACRC,KAAMN,IAELxI,MAAK,SAAC+I,GAAD,OAASA,EAAIC,UAClB1D,OAAM,SAACC,GAAD,OAASA,KAGb,SAASsT,IAAmC,IAAtBC,EAAqB,wDAC1CxN,EAAM,UAAMyN,cAAN,gCAAsDD,GAElE,OAAOnQ,IAAM2C,EAAQ,CACnBzC,OAAQ,QAEP7I,MAAK,SAAC+I,GAAD,OAASA,EAAIC,UAClB1D,OAAM,SAACC,GAAD,OAASA,KAGb,SAASX,IACd,IAAM0G,EAAM,UAAM1C,IAAN,aAEZ,OAAOD,IAAM2C,EAAQ,CACnBzC,OAAQ,QAEP7I,MAAK,SAAC+I,GAAD,OAASA,EAAIC,UAClB1D,OAAM,SAACC,GAAD,OAASA,KAGb,SAASxF,EAAevC,EAAWwb,GACxC,IAAM1N,EAAM,UAAMrK,IAAOgY,aAAb,+DAAgFzb,EAAhF,uBAAwGwb,GAC9G1X,EAAYyO,eAAef,QAAQ,cACzC,OAAOrG,IAAM2C,EAAQ,CACnBzC,OAAQ,MACRsG,QAAS,CACP,eAAgB,mBAChB,eAAgB7N,GAAa,QAG9BtB,MAAK,SAAC+I,GAAD,OAASA,EAAIC,UAClB1D,OAAM,SAACC,GAAD,OAASA,KAGb,SAAS2T,EAAkBF,GAA2D,IAAhDG,EAA+C,wDAA9B3b,EAA8B,uDAAlB,GAAIL,EAAc,uDAAJ,GAChFmE,EAAYyO,eAAef,QAAQ,cACnCoK,EAAS,IAAIC,gBAAgB,CACjCC,WAAYN,EACZO,iBAAkBJ,EAClBK,WAAYhc,IAEVL,EAAQ4K,OAAOqR,EAAO1Q,OAAO,gBAAiBvL,EAAQ4K,OACtD5K,EAAQC,MAAMgc,EAAO1Q,OAAO,eAAgBvL,EAAQC,MACpDD,EAAQL,OAAOsc,EAAO1Q,OAAO,gBAAiBvL,EAAQL,OACtDK,EAAQ6K,aAAaoR,EAAO1Q,OAAO,sBAAuBvL,EAAQ6K,aACtE,IAAMsD,EAAM,UAAMrK,IAAOgY,aAAb,0DAA2EG,EAAOhL,YAC9F,OAAOzF,IAAM2C,EAAQ,CACnBzC,OAAQ,MACRsG,QAAS,CACP,eAAgB,mBAChB,eAAgB7N,GAAa,QAG9BtB,MAAK,SAAC+I,GAAD,OAASA,EAAIC,UAClB1D,OAAM,SAACC,GAAD,OAASA,KAGb,SAAS/D,EACdb,EACAsW,EACAvV,EACAV,EACAM,GAEA,IAAMgK,EAAM,UAAM1C,IAAN,qCACNJ,EAAW,IAAIC,SAQrB,OANAD,EAASE,OAAO,QAASpH,GACzBkH,EAASE,OAAO,eAAgB/H,GAChC6H,EAASE,OAAO,SAAUuO,GAC1BzO,EAASE,OAAO,WAAYhH,GAC5B8G,EAASE,OAAO,WAAY1H,GAErB2H,IAAM2C,EAAQ,CACnBzC,OAAQ,OACRC,KAAMN,IAELxI,MAAK,SAAC+I,GAAD,OAASA,EAAIC,UAClB1D,OAAM,SAACC,GAAD,OAASA,KAGb,SAASkU,IACd,IAAMnY,EAAYyO,eAAef,QAAQ,cACzC,OAAO,kBACLrG,IAAM,GAAD,OAAI1H,IAAOgY,aAAX,wBAA+C,CAClDpQ,OAAQ,MACR6Q,YAAa,UACbvK,QAAS,CACP,eAAgB,mBAChB,eAAgB7N,GAAa,KAC7B,SAAUyO,eAAef,QAAQ,kBAAoB,QAGtDhP,MAAK,SAAC+I,GAAD,OAASA,EAAIC,UAClB1D,OAAM,SAACC,GAAD,OAASA,MAGf,SAASoU,EAAqB1Z,GACnC,IAAMqB,EAAYyO,eAAef,QAAQ,cACzC,OAAO,kBACLrG,IAAM,GAAD,OAAI1H,IAAOgY,aAAX,wBAA+C,CAClDpQ,OAAQ,OACRC,KAAMwH,KAAKC,UAAL,aACJ3I,MAAOtG,GACJrB,IAELyZ,YAAa,UACbvK,QAAS,CACP,eAAgB,mBAChBvH,MAAOtG,GAAa,QAGrBtB,MAAK,SAAC+I,GAAD,OAASA,EAAIC,UAClB1D,OAAM,SAACC,GAAD,OAASA,MAgBf,SAASqU,EAAyBjX,GACvC,IAAMrB,EAAYyO,eAAef,QAAQ,cACzC,OAAO,kBACLrG,IAAM,GAAD,OAAIC,IAAJ,yDAAwDjG,GAAW,CACtEkG,OAAQ,MACRsG,QAAS,CACP,eAAgB,mBAChB,eAAgB7N,GAAa,QAG9BtB,MAAK,SAAC+I,GAAD,OAASA,EAAIC,UAClB1D,OAAM,SAACC,GAAD,OAASA,MAGf,SAASsU,EAAkBlX,GAChC,IAAMrB,EAAYyO,eAAef,QAAQ,cACzC,OAAO,kBACLrG,IAAM,GAAD,OAAIC,IAAJ,kDAAiDjG,GAAW,CAC/DkG,OAAQ,MACRsG,QAAS,CACP,eAAgB,mBAChB,eAAgB7N,GAAa,QAG9BtB,MAAK,SAAC+I,GAAD,OAASA,EAAIC,UAClB1D,OAAM,SAACC,GAAD,OAASA,MAGf,SAASf,EAAiB7B,GAC/B,IAAMrB,EAAYyO,eAAef,QAAQ,cACzC,OAAO,kBACLrG,IAAM,GAAD,OAAI1H,IAAOgY,aAAX,qCAAoDtW,GAAW,CAClEkG,OAAQ,MACRsG,QAAS,CACP,eAAgB,mBAChB,eAAgB7N,GAAa,QAG9BtB,MAAK,SAAC+I,GAAD,OAASA,EAAIC,UAClB1D,OAAM,SAACC,GAAD,OAASA,MAGf,SAASuU,EAAuBC,GACrC,IAAMzY,EAAYyO,eAAef,QAAQ,cACzC,OAAO,kBACLrG,IAAM,GAAD,OAAI1H,IAAOgY,aAAX,2CAA0Dc,GAAW,CACxElR,OAAQ,MACRsG,QAAS,CACP,eAAgB,mBAChB,eAAgB7N,GAAa,QAG9BtB,MAAK,SAAC+I,GAAD,OAASA,EAAIC,UAClB1D,OAAM,SAACC,GAAD,OAASA,Q,iCCjNtB,gBA0BeyU,IAhBf,SAAand,GACX,OACE,qBAAKuB,UAAWvB,EAAMuB,UAAWsU,IAAK7V,EAAM6V,IAAKuH,IAAKpd,EAAMod,Q,ugBCRzD,SAASC,EAAU1Q,IAInB,SAASiO,EAAsBkB,GAEpC,OADA5I,eAAeE,QAAQ,yBAA0B0I,GAC1C,CAAE5a,KAAM,2BAA4B4a,kBAGtC,SAASvN,IAEd,OADA2E,eAAeC,WAAW,yBAA0B2I,gBAC7C,CAAE5a,KAAM,2BAGV,SAASsP,EAAsBjF,EAAQ+R,GAM5C,OALApZ,YAAK,gCAAD,OAC8BoZ,GAChC/R,EAAOgS,OAAO,GAAGC,cAAgBjS,EAAOiG,UAAU,IAEpD0B,eAAeE,QAAQ,wBAAyB7H,GACzC,CAAErK,KAAM,4BAA6BqK,UAGvC,SAAStI,EAAqBW,GAAoC,IAAjBjD,EAAgB,uDAAJ,GAClE,MAAO,CAAEO,KAAM,gCAAiC0C,oBAAmBjD,aAG9D,SAASsD,EAAwBmB,GACtC,MAAO,CAAElE,KAAM,4BAA6BkE,YAGvC,SAASqY,IACd,IAAMhZ,EAAYyO,eAAef,QAAQ,cACzC,OAAO,kBACLrG,IAAM,GAAD,OAAI1H,IAAOgY,aAAX,uBAA8C,CACjDpQ,OAAQ,MACRsG,QAAS,CACP,eAAgB,mBAChB,eAAgB7N,GAAa,KAC7B,SAAUyO,eAAef,QAAQ,kBAAoB,QAGtDhP,MAAK,SAAC+I,GAAD,OAASA,EAAIC,UAClB1D,OAAM,SAACC,GAAD,OAASA,MAGf,SAAS/D,EAAkBb,GAChC,IAAMW,EAAYyO,eAAef,QAAQ,cACzC,OAAO,kBACLrG,IAAM,GAAD,OACAC,IADA,kEAC6DjI,EAD7D,sBAEH,CACEkI,OAAQ,MACR6Q,YAAa,UACbvK,QAAS,CACP,eAAgB,mBAChB,eAAgB7N,GAAa,QAIhCtB,MAAK,SAAC+I,GAAD,OAASA,EAAIC,UAClB1D,OAAM,SAACC,GAAD,OAASA,MAGf,SAASgV,EAAata,GAC3B,IAAMqB,EAAYyO,eAAef,QAAQ,cACzC,OAAO,kBACLrG,IAAM,GAAD,OAAI1H,IAAOgY,aAAX,kBAAyC,CAC5CpQ,OAAQ,OACRC,KAAMwH,KAAKC,UAAL,aACJ3I,MAAOtG,GACJrB,IAELkP,QAAS,CACP,eAAgB,mBAChB,eAAgB7N,GAAa,KAC7B,SAAUyO,eAAef,QAAQ,kBAAoB,QAGtDhP,MAAK,SAAC+I,GAAD,OAASA,EAAIC,UAClB1D,OAAM,SAACC,GAAD,OAASA,MAGf,SAASiV,EAAeC,EAASC,GACtC,IAAMpZ,EAAYyO,eAAef,QAAQ,cACzC,OAAO,kBACLrG,IAAM,GAAD,OAAI1H,IAAOgY,aAAX,yDAAgF,CACnFpQ,OAAQ,OACRC,KAAMwH,KAAKC,UAAU,CACnB3I,MAAOtG,EACPqZ,gBAAiBF,EACjBC,aAEFvL,QAAS,CACP,eAAgB,mBAChB,eAAgB7N,GAAa,KAC7B,SAAUyO,eAAef,QAAQ,kBAAoB,QAGtDhP,MAAK,SAAC+I,GAAD,OAASA,EAAIC,UAClB1D,OAAM,SAACC,GAAD,OAASA,MAGf,SAASqV,EAAa3a,GAC3B,IAAMqB,EAAYyO,eAAef,QAAQ,cACzC,OAAO,kBACLrG,IAAM,GAAD,OAAI1H,IAAOgY,aAAX,8BAAqD,CACxDpQ,OAAQ,OACRC,KAAMwH,KAAKC,UAAL,aACJ3I,MAAOtG,GACJrB,IAELyZ,YAAa,UACbvK,QAAS,CACP,eAAgB,mBAChB,eAAgB7N,GAAa,KAC7B,SAAUyO,eAAef,QAAQ,kBAAoB,QAGtDhP,MAAK,SAAC+I,GAAD,OAASA,EAAIC,UAClB1D,OAAM,SAACC,GAAD,OAASA,MAGf,SAASsV,EAA0B5a,GACxC,IAAMqB,EAAYyO,eAAef,QAAQ,cACzC,OAAO,kBACLrG,IAAM,GAAD,OAAI1H,IAAOgY,aAAX,oDAA2E,CAC9EpQ,OAAQ,OACRC,KAAMwH,KAAKC,UAAL,aACJ3I,MAAOtG,GACJrB,IAELkP,QAAS,CACP,eAAgB,mBAChB,eAAgB7N,GAAa,KAC7B,SAAUyO,eAAef,QAAQ,kBAAoB,QAGtDhP,MAAK,SAAC+I,GAAD,OAASA,EAAIC,UAClB1D,OAAM,SAACC,GAAD,OAASA,MAGf,SAASuV,EAAkBL,GAChC,IAAMnZ,EAAYyO,eAAef,QAAQ,cACzC,OAAO,kBACLrG,IAAM,GAAD,OAAI1H,IAAOgY,aAAX,mDAAkEwB,GAAW,CAChF5R,OAAQ,OACRC,KAAMwH,KAAKC,UAAU,CACnB3I,MAAOtG,IAET6N,QAAS,CACP,eAAgB,mBAChB,eAAgB7N,GAAa,KAC7B,SAAUyO,eAAef,QAAQ,kBAAoB,QAGtDhP,MAAK,SAAC+I,GAAD,OAASA,EAAIC,UAClB1D,OAAM,SAACC,GAAD,OAASA,Q,uFC7JhBkO,E,kDACJ,WAAY5W,GAAQ,IAAD,sBASjB,IAAIke,EAAQ,GACRC,EAAQ,GAVK,OACjB,cAAMne,IAWGA,MAAM6W,WACbqH,EAAQ,EAAKle,MAAM6W,SAASuH,OAAO,EAAE,EAAKpe,MAAM6W,SAASwH,QAAQ,MACjEF,EAAQ,EAAKne,MAAM6W,SAASuH,OAAO,EAAKpe,MAAM6W,SAASwH,QAAQ,KAAK,IAGtE,EAAKpe,MAAQ,CACXie,QACAC,SAnBe,E,sDAuBnB,SAAmBxV,GAEjB,GAAItH,KAAKrB,MAAM6W,WAAalO,EAAUkO,SAAU,CAE9C,IAAIqH,EAAQ,GACRC,EAAQ,GAER9c,KAAKrB,MAAM6W,WACbqH,EAAQ7c,KAAKrB,MAAM6W,SAASuH,OAAO,EAAE/c,KAAKrB,MAAM6W,SAASwH,QAAQ,MACjEF,EAAQ9c,KAAKrB,MAAM6W,SAASuH,OAAO/c,KAAKrB,MAAM6W,SAASwH,QAAQ,KAAK,IAGtEhd,KAAKC,SAAS,CACZ4c,QACAC,a,oBAKN,WACE,OACE,qBAAI5c,UAAU,yBAAd,UAAwCF,KAAKpB,MAAMie,MAAnD,IAA0D,sBAAM3c,UAAS,kCAAiD,OAApBF,KAAKpB,MAAMie,MAAiB,OAAS,UAAjF,SAA8F7c,KAAKpB,MAAMke,e,GA7CvIhc,aAsDlCyU,EAAoB0H,aAAe,CACjCtd,KAAM,IAGO4V,O,0LC1BF2H,EAAb,kDACE,WAAYve,GAAQ,IAAD,8BACjB,cAAMA,IACDC,MAAQ,CACXue,WAAY,GACZC,sBAAoBvM,aAAaC,QAAQ,gBAA0D,KAAxCD,aAAaC,QAAQ,gBAAiE,cAAxCD,aAAaC,QAAQ,iBAGhI,EAAKuM,eAAiB,EAAKA,eAAe7d,KAApB,gBACtB,EAAK8d,aAAe,EAAKA,aAAa9d,KAAlB,gBACpB,EAAK+d,YAAc,EAAKA,YAAY/d,KAAjB,gBACnB,EAAKge,gBAAkB,EAAKA,gBAAgBhe,KAArB,gBAVN,EADrB,qDAcE,WACMQ,KAAKpB,MAAMwe,qBACbpd,KAAKC,SAAS,CACZkd,WAAYtM,aAAaC,QAAQ,iBAGnC2M,YAAkB5M,aAAaC,QAAQ,mBApB7C,0BAwBE,SAAarR,GACXO,KAAKC,SAAS,CAACkd,WAAY1d,EAAMC,OAAOK,UAzB5C,yBA4BE,WAAe,IAAD,OACZ2d,YAAiB1d,KAAKrB,MAAMgf,UAAU7b,MAAK,WACpC,EAAKnD,MAAMgf,UACd,EAAKnM,cAAc1P,MAAK,WACtB,EAAKnD,MAAMif,kBAAmB,EAAKhf,MAAM2U,yBAhCnD,6BAsCE,SAAgB7R,GACA,UAAVA,EAAEqF,KACJ/G,KAAKud,gBAxCX,4BA4CE,SAAe9d,GACbA,EAAMkC,iBACN3B,KAAKC,SAAS,CACZkd,WAAY,GACZC,oBAAoB,IAGtBS,gBAnDJ,yBAsDE,WAAe,IAAD,OACZ,OAAO,IAAInM,SAAQ,SAACC,EAASC,GAAV,OAAqB7G,cACrCjJ,MAAK,SAACC,GACe,YAAhBA,EAAKiJ,SACP6G,eAAeC,WAAW,iBAE1BD,eAAeE,QAAQ,cAAehQ,EAAKiI,SAASxJ,IACpDqR,eAAeE,QAAQ,kBAAmBhQ,EAAKiI,SAASgI,aACxDH,eAAeE,QAAQ,iBAAkBhQ,EAAKiI,SAASjK,OACvD8R,eAAeE,QAAQ,gBAAiBhQ,EAAKiI,SAAShG,MAElDjC,EAAKkQ,YAAYC,QACnBL,eAAeE,QAAQ,eAAgBhQ,EAAKkQ,YAAYE,OACxDN,eAAeE,QAAQ,mBAAoBK,KAAKC,UAAUtQ,EAAKkQ,YAAYC,UAE3EL,eAAeE,QAAQ,eAAgB,GAGzCF,eAAeE,QAAQ,iBAAkBK,KAAKC,UAAUtQ,EAAKuQ,iBAC7DT,eAAeE,QAAQ,kBAAmBK,KAAKC,UAAUtQ,EAAKwQ,kBAG1DxQ,EAAKmJ,KAAKsH,WACZX,eAAeE,QAAQ,cAAc,GACrCF,eAAeE,QAAQ,eAAgBhQ,EAAKmJ,KAAKuH,eAEjDZ,eAAeC,WAAW,cAC1BD,eAAeC,WAAW,iBAGxB/P,EAAK2Q,WACPb,eAAeE,QAAQ,YAAaK,KAAKC,UAAUtQ,EAAK2Q,WAAWC,QAAQ,MAAO,KAGhF5Q,EAAKmJ,KAAK0H,kBACZf,eAAeE,QAAQ,aAAchQ,EAAKmJ,KAAK2H,YAC/CC,YAAU,aAAc/Q,EAAKmJ,KAAK2H,WAAY,KAC9ChB,eAAeE,QAAQ,iBAAkBhQ,EAAKmJ,KAAK6H,kBACnDlB,eAAeE,QAAQ,mBAAoBhQ,EAAKmJ,KAAK8H,oBACrDnB,eAAeE,QAAQ,gBAAiBhQ,EAAKmJ,KAAK+H,mBAElDpB,eAAeC,WAAW,cAC1BgB,YAAU,aAAc/Q,EAAKmJ,KAAK2H,WAAY,KAC9ChB,eAAeC,WAAW,kBAC1BD,eAAeC,WAAW,oBAC1BD,eAAeC,WAAW,kBAK5B,EAAKnT,MAAMuU,cAAcnR,EAAKwQ,iBAC9B,EAAK5T,MAAMwU,cAAcpR,EAAKqR,WAC9B,EAAKzU,MAAMsO,qBAAqBlL,EAAKuJ,iBAAkBvJ,EAAKmJ,KAAK0H,kBACjE,EAAKjU,MAAM0U,aAAatR,EAAKiI,UAC7B,EAAKrL,MAAMgJ,YAAY5F,EAAKmD,SAExBnD,EAAKmJ,KAAK0H,kBACZ,EAAK3S,SAAS,CACZqT,YAAavR,EAAKmJ,KAAK2H,WACvBU,gBAAiBxR,EAAKmJ,KAAKsI,QAAUzR,EAAKmJ,KAAKsI,QAAUzR,EAAKmJ,KAAKrM,UACnE4U,uBAAwB1R,EAAKiR,mBAC7BU,qBAAsB3R,EAAKgR,mBAG7B,EAAKpU,MAAMgV,kBAAiB,GAC5B,EAAKhV,MAAMsb,qBAAqBlY,EAAK2Y,mBAErC7I,eAAeE,QAAQ,aAAchQ,EAAKmJ,KAAK2H,YAC/CC,YAAU,aAAc/Q,EAAKmJ,KAAK2H,WAAY,KAE9ChB,eAAeC,WAAW,mBAE1B,EAAKnT,MAAMgV,kBAAiB,GAC5B9B,eAAeC,WAAW,0BAE5BH,EAAQ5P,OAGXqF,OAAM,SAACC,GAEN,OADAuK,EAAOvK,GACAA,UAtIf,oBA0IE,WACE,OACE,uBAAMnH,UAAU,sBAAsB+B,MAAO,CAAC6b,SAAU,YAAxD,UACE,sBAAK5d,UAAS,qCAAiCF,KAAKpB,MAAMwe,mBAAqB,WAAa,IAA5F,UACE,qBAAKld,UAAU,yCAAyC+B,MAAO,CAAE8b,QAAS,QAA1E,SAAoF,sDACpF,uBAAOC,WAAS,EAAC9d,UAAU,mCAAmCM,GAAG,mBAAmBb,KAAK,YAAYE,KAAK,OAAOuO,YAAY,gBAAgB,gBAAc,OAAOhO,SAAUJ,KAAKsd,aAAcvd,MAAOC,KAAKpB,MAAMue,aACjN,wBAAQ3c,GAAG,qBAAqBb,KAAK,cAAc,mBAAiB,UAAUO,UAAU,4BAA4BiC,QAAS8b,IAA7H,qBAEF,sBAAK/d,UAAS,qDAAiDF,KAAKpB,MAAMwe,mBAAqB,WAAa,IAA5G,UACE,qBAAKld,UAAU,yCAAyC+B,MAAO,CAAE8b,QAAS,QAA1E,SAAoF,sDACpF,oBAAG7d,UAAU,8CAAb,UAA2D,+BAAOF,KAAKpB,MAAMue,aAA7E,KAAiG,mBAAG/a,KAAK,IAAID,QAASnC,KAAKqd,eAAgBnd,UAAU,0BAApD,sBAAjG,OACA,uBAAOA,UAAU,mCAAmCP,KAAK,YAAYE,KAAK,WAAWuO,YAAY,WAAW,gBAAc,OAAO8P,WAAYle,KAAKwd,kBAClJ,wBAAQtd,UAAU,2CAA2CL,KAAK,SAASF,KAAK,SAASwC,QAASnC,KAAKud,YAAvG,wBAEF,sBAAKrd,UAAU,6DAAf,UACI,mBAAG+B,MAAO,CAAC,WAAc,MAAO,UAAa,OAAQ,MAAS,UAAW,SAAY,QAArF,8EACA,oBAAG/B,UAAU,gCAAb,gCAAgE,mBAAGkC,KAAK,IAAID,QAASnC,KAAKqd,eAAgBnd,UAAU,0BAApD,2BAGpE,uBAAOM,GAAG,gCAAgCb,KAAK,iBAAiBE,KAAK,kBA7J7E,GAAgCwP,IAAMvO,WA0OvBuB,iBAJS,SAACzD,GAAD,MAAY,MAjET,SAAC0D,GAAD,MAAe,CACxC2X,qBAAsB,SAACjP,GACrB1I,EAAS2X,YAAqBjP,KAEhC2I,iBAAkB,SAAC3I,GACjB1I,EAAS4R,YAAelJ,KAE1BmT,6BAA8B,WAC5B7b,EAASqS,gBAEXzB,cAAe,SAACc,GACd1R,EAAS4Q,YAAcc,KAEzBb,cAAe,SAACC,GACd9Q,EAAS6Q,YAAcC,KAEzBnG,qBAAsB,SAAC3B,EAAkB2I,GACvC3R,EAAS2K,YAAqB3B,EAAkB2I,KAElDZ,aAAc,SAACrJ,GACb1H,EAAS+Q,YAAarJ,KAExBrC,YAAa,SAACzC,GACZ5C,EAASqF,YAAYzC,KAEvBkZ,oBAAqB,SAACC,GACpB/b,EAASgc,YAAkBD,KAE7BE,iBAAkB,WAChBjc,EAASkc,gBAEXC,wBAAyB,SAACC,GACpBA,EACFlT,YAAW,WACTlJ,EAASmc,YAAwBC,IACjClT,YAAW,WACTlJ,EAASqc,iBACR,MACF,MAEHrc,EAASmc,eACTnc,EAASqc,iBAGbC,wBAAyB,WACvBtc,EAASuc,eACTvc,EAASsc,gBAEXhB,kBAAmB,SAAC/e,GAClB2M,YAAW,WACTlJ,EAASsb,YAAkB/e,IAC3B2M,YAAW,WACTlJ,EAAUqc,eACVnT,YAAW,WACTlJ,EAAUuc,eACVrT,YAAW,WACTlJ,EAASwc,iBACR,OACF,OACF,MACF,SASQzc,CAGb6a,I,gGC9QIjO,E,4JACF,WACI,OACI,qBAAK/O,UAAU,wCAAf,SACE,qBAAKsU,IAAI,0DAA0DuH,IAAI,qF,GAJlD1M,IAAMvO,WAU1BmO","file":"static/js/36.chunk.js?hash=ffcda701","sourcesContent":["import React, { Component, Fragment } from 'react';\nimport { CardElement, injectStripe } from 'react-stripe-elements';\nimport { purchaseSubscription } from 'actions/subscriptionAction';\nimport { fetchVatRate } from '../../actions/checkoutAction';\nimport { Dropdown } from 'semantic-ui-react';\nimport Config from '../../constants';\nimport SpinnerIcon from '../../styles/svg-components/SpinnerIcon';\n\nclass FormFields extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n firstName: '',\n lastName: '',\n organisation: '',\n organisationUrl: '',\n address: '',\n city: '',\n stateRegion: '',\n zip: '',\n poNumber: '',\n vatNumber: '',\n };\n\n this.handleInputChange = this.handleInputChange.bind(this);\n }\n\n handleInputChange(event) {\n const target = event.target;\n const name = target.name;\n const inputValue = target.type === 'checkbox' ? target.checked : target.value;\n\n this.setState({\n [name]: inputValue,\n });\n }\n\n render() {\n return (\n \n
\n \n \n { this.props.formErrors.firstName &&\n

{this.props.formErrors.firstName}

\n }\n
\n
\n \n \n { this.props.formErrors.lastName &&\n

{this.props.formErrors.lastName}

\n }\n
\n { this.props.selectedPlan.plan_category === 2 &&\n \n
\n \n \n
\n
\n \n \n
\n
\n }\n
\n \n \n { this.props.formErrors.address &&\n

{this.props.formErrors.address}

\n }\n
\n
\n \n \n { this.props.formErrors.city &&\n

{this.props.formErrors.city}

\n }\n
\n
\n \n \n { this.props.formErrors.stateRegion &&\n

{this.props.formErrors.stateRegion}

\n }\n
\n
\n \n \n { this.props.formErrors.zip &&\n

{this.props.formErrors.zip}

\n }\n
\n
\n\n );\n }\n}\n\nexport default FormFields;\n","import React, {Component,Fragment} from 'react';\nimport {CardElement, injectStripe} from 'react-stripe-elements';\nimport { purchaseSubscription } from 'actions/subscriptionAction';\nimport { fetchVatRate } from '../../actions/checkoutAction';\nimport { Dropdown } from 'semantic-ui-react'\nimport Config from '../../constants';\nimport SpinnerIcon from '../../styles/svg-components/SpinnerIcon';\nimport { checkVatNumber } from '../../actions/checkoutAction';\nimport { setHasValidVatNumber } from '../../actions/cartAction';\nimport { connect } from 'react-redux';\nimport className from 'classnames';\n\nclass VatInput extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n vatNumber: '',\n error: false,\n showVatField: false,\n validated: false,\n isValidating: false,\n };\n\n this.handleInputChange = this.handleInputChange.bind(this);\n this.inlineValidateVat = this.inlineValidateVat.bind(this);\n this.validateVat = this.validateVat.bind(this);\n this.removeVatNumber = this.removeVatNumber.bind(this);\n this.toggleOptionalFields = this.toggleOptionalFields.bind(this);\n }\n\n toggleOptionalFields() {\n if ( this.state.working ) {\n return;\n }\n\n if (this.state.showVatField) {\n this.removeVatNumber();\n }\n\n this.setState({\n showVatField: !this.state.showVatField\n });\n }\n\n handleInputChange(event) {\n const target = event.target;\n const name = target.name;\n const inputValue = target.type === 'checkbox' ? target.checked : target.value;\n\n if (name === 'vatNumber') {\n this.inlineValidateVat(inputValue);\n }\n\n this.setState({\n [name]: inputValue\n });\n }\n\n inlineValidateVat(inputValue) {\n if (this.state.vatNumber.length > 2 && !this.state.vatNumber.match(/^[a-zA-Z]{2}/)) {\n this.setState({\n error: 'Please enter your full VAT number, including country code. E.g. GB12345689',\n });\n } else {\n this.setState({\n error: false,\n });\n }\n }\n\n validateVat(e) {\n e.preventDefault();\n this.setState({\n error: false,\n validated: false,\n isValidating: true,\n });\n this.props.setHasValidVatNumber(false);\n\n checkVatNumber(this.state.vatNumber, '').then((data) => {\n if (data.success) {\n this.setState({\n validated: true,\n isValidating: false,\n });\n this.props.setHasValidVatNumber(true, this.state.vatNumber);\n } else {\n this.setState({\n error: 'This VAT number is not valid.',\n isValidating: false,\n });\n }\n });\n }\n\n removeVatNumber(e) {\n if (e) {\n e.preventDefault();\n }\n\n this.props.setHasValidVatNumber(false);\n\n this.setState({\n error: false,\n vatNumber: \"\",\n validated: false,\n });\n\n }\n\n render() {\n return (\n \n
{ this.toggleOptionalFields() } }>{ this.state.showVatField ? '-' : '+'} {this.state.validated ? 'Remove VAT number' : 'Add a VAT number'}
\n
\n \n \n { !this.state.validated &&\n Validate\n }\n { this.state.validated &&\n Remove\n }\n { this.props.formErrors.vatNumber &&\n

{this.props.formErrors.vatNumber}

\n }\n { this.state.error &&\n

{this.state.error}

\n }\n
\n
\n );\n }\n}\n\n\nexport const mapDispatchToProps = (dispatch) => ({\n setHasValidVatNumber: (hasValidVatNumber, vatNumber) => dispatch(setHasValidVatNumber(hasValidVatNumber, vatNumber)),\n});\n\nconst mapStateToProps = (state) => ({\n});\n\n// Wrap the component to inject dispatch and state into it\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(VatInput);","import React, {Component,Fragment} from 'react';\nimport {CardElement, injectStripe} from 'react-stripe-elements';\nimport { purchaseSubscription } from 'actions/subscriptionAction';\nimport { fetchVatRate } from '../../actions/checkoutAction';\nimport { Dropdown } from 'semantic-ui-react'\nimport Config from '../../constants';\nimport SpinnerIcon from '../../styles/svg-components/SpinnerIcon';\nimport { getAuthToken } from '../../actions/authenticationAction';\nimport { checkDiscountCode } from '../../actions/checkoutAction';\nimport { setSubscriptionDiscount } from '../../actions/cartAction';\nimport { connect } from 'react-redux';\nimport className from 'classnames';\n\nclass DiscountCode extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n discountCode: '',\n error: false,\n showVatField: false,\n validated: false,\n isValidating: false,\n };\n\n this.handleInputChange = this.handleInputChange.bind(this);\n this.validateDiscountCode = this.validateDiscountCode.bind(this);\n this.removeDiscountCode = this.removeDiscountCode.bind(this);\n this.toggleOptionalFields = this.toggleOptionalFields.bind(this);\n }\n\n toggleOptionalFields() {\n if ( this.state.working ) {\n return;\n }\n\n if (this.state.showVatField) {\n this.removeDiscountCode();\n }\n\n this.setState({\n showVatField: !this.state.showVatField\n });\n }\n\n handleInputChange(event) {\n const target = event.target;\n const name = target.name;\n const inputValue = target.type === 'checkbox' ? target.checked : target.value;\n\n this.setState({\n [name]: inputValue\n });\n }\n\n validateDiscountCode(e) {\n e.preventDefault();\n this.setState({\n error: false,\n validated: false,\n isValidating: true,\n });\n\n this.props.setSubscriptionDiscount(false);\n\n if (this.state.discountCode === \"\") {\n this.setState({\n error: 'Please enter a discount code.',\n isValidating: false,\n });\n\n return;\n\n }\n\n // Check for NEWSLTTRBONUS20 and display a custom warning.\n\n if (this.state.discountCode === \"NEWSLTTRBONUS20\") {\n this.setState({\n error: 'This discount code is only valid for use with Pay-Per-Use licenses.',\n isValidating: false,\n });\n\n this.props.drip(\"Tried to Enter Signup Bonus for Subscription\");\n\n return;\n\n }\n\n let periodId = Config.PERIOD_ID.YEARLY;\n if (this.props.isMonthly) {\n periodId = Config.PERIOD_ID.MONTHLY;\n }\n\n let authToken = getAuthToken();\n\n checkDiscountCode(this.state.discountCode, this.props.selectedPlanId, this.props.currencyId, periodId, authToken).then((data) => {\n if (data.success) {\n this.setState({\n validated: true,\n isValidating: false,\n });\n let monthlyDiscount = data.monthly_discount ? parseFloat(data.monthly_discount) : false;\n let monthlyDuration = data.months_active ? parseInt(data.months_active) : false;\n\n let discount = {\n code: data.discountId,\n amount: parseFloat(data.discount),\n monthlyDiscount,\n monthlyDuration\n }\n\n this.props.drip(\"Entered Subscription Discount Code\", data.discountId);\n this.props.setSubscriptionDiscount(discount);\n } else {\n let error = 'This discount code is not valid.';\n\n\n if (data.error && data.error.message) {\n error = data.error.message;\n }\n\n if (data.message) {\n error = data.message;\n }\n\n if (error.slice(error.length - 1) !== \".\") {\n error += \".\";\n }\n\n this.props.drip(\"Entered Invalid Discount Code\");\n\n this.setState({\n error,\n isValidating: false,\n });\n }\n });\n }\n\n removeDiscountCode(e) {\n if (e) {\n e.preventDefault();\n }\n\n this.props.setSubscriptionDiscount(false);\n\n this.props.drip(\"Removed Discount Code\");\n\n this.setState({\n error: false,\n discountCode: \"\",\n validated: false,\n });\n\n }\n\n render() {\n return (\n \n
{ this.toggleOptionalFields() } }>{ this.state.showVatField ? '-' : '+'} {this.state.validated ? 'Remove discount code' : 'Add a discount code'}
\n
\n \n \n { !this.state.validated &&\n Apply\n }\n { this.state.validated &&\n Remove\n }\n { this.props.formErrors.discountCode &&\n

{this.props.formErrors.discountCode}

\n }\n { this.state.error &&\n

{this.state.error}

\n }\n
\n
\n );\n }\n}\n\n\nexport const mapDispatchToProps = (dispatch) => ({\n setSubscriptionDiscount: (discount) => dispatch(setSubscriptionDiscount(discount)),\n});\n\nconst mapStateToProps = (state) => ({\n});\n\n// Wrap the component to inject dispatch and state into it\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(DiscountCode);","import React, { Component, Fragment } from \"react\";\nimport { connect } from \"react-redux\";\nimport fetch from \"isomorphic-fetch\";\nimport { CardElement, injectStripe } from \"react-stripe-elements\";\nimport { fetchVatRate } from \"../../actions/checkoutAction\";\nimport { Dropdown } from \"semantic-ui-react\";\nimport FormFields from \"./FormFields\";\nimport VatInput from \"./VatInput\";\nimport DiscountCode from \"./DiscountCode\";\nimport Config from \"../../constants\";\nimport SpinnerIcon from \"../../styles/svg-components/SpinnerIcon\";\nimport { setupSite } from \"actions/generalAction\";\nimport { fetchCountries } from \"../../actions/checkoutAction\";\nimport { loadCountry } from \"../../actions/countryAction\";\nimport {\n emptySubscriptionCart,\n setSubAnnualOrMonthly,\n} from \"../../actions/cartAction\";\nimport { loadSubscriptionData } from \"../../actions/subscriptionAction\";\nimport ReCAPTCHA from \"react-google-recaptcha\";\nimport {\n getAuthToken,\n checkRecaptchaV3,\n loadUserData,\n} from \"../../actions/authenticationAction\";\nimport StripePaymentsBanner from \"../StripePaymentsBanner\";\nimport { isEmpty } from \"lodash\";\n\nclass CheckoutForm extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n dripFormComplete: false,\n dripCardNameEntered: false,\n working: false,\n error: false,\n stripeError: false,\n success: false,\n orderId: false,\n orderValue: false,\n orderValueAnnual: false,\n adwordsConversionId: false,\n adwordsConversionLabel: false,\n orderTax: false,\n orderCurrencyCode: false,\n orderNativeValue: false,\n scaRequest: false,\n country: this.props.userCountry,\n countries: [],\n poNumber: \"\",\n showPoField: false,\n agreedToCommitment: false,\n cardName: \"\",\n showRecaptcha: false,\n recaptchaValue: false,\n showRecaptchaV2: false,\n recaptchaV2Token: \"\",\n recaptchaV3Token: \"\",\n formErrors: {\n firstName: false,\n lastName: false,\n address: false,\n city: false,\n stateRegion: false,\n zip: false,\n nameOnCard: false,\n agreedToCommitment: false,\n recaptcha: false,\n },\n };\n\n this.checkTimer = false;\n this.checkCount = 0;\n\n this.handleInputChange = this.handleInputChange.bind(this);\n this.handleInputBlur = this.handleInputBlur.bind(this);\n this.dripFormCheck = this.dripFormCheck.bind(this);\n this.handleDropdownChange = this.handleDropdownChange.bind(this);\n this.captchaOnChange = this.captchaOnChange.bind(this);\n this.toggleOptionalFields = this.toggleOptionalFields.bind(this);\n this.getFieldValue = this.getFieldValue.bind(this);\n this.purchaseSubscription = this.purchaseSubscription.bind(this);\n this.checkOrderStatus = this.checkOrderStatus.bind(this);\n this.sendOrderFailedReason = this.sendOrderFailedReason.bind(this);\n this.purchaseSuccessActions = this.purchaseSuccessActions.bind(this);\n this.submit = this.submit.bind(this);\n }\n\n componentDidMount() {\n fetchCountries()\n .then((data) => {\n const countryOptions = _.map(data, (country, index) => ({\n key: `country-${country.id}`,\n text: country.name,\n value: country.id,\n vat_rate: country.vat_rate / 100,\n iso_code_2: country.iso_code2,\n }));\n\n this.setState({ countries: countryOptions });\n })\n .catch((err) => err);\n }\n\n componentDidUpdate(prevProps) {\n // Typical usage (don't forget to compare props):\n if (this.props.userCountry !== prevProps.userCountry) {\n this.setState({\n country: this.props.userCountry,\n });\n }\n }\n\n componentWillUnmount() {\n window.clearTimeout(this.checkTimer);\n }\n\n handleInputChange(event) {\n const target = event.target;\n const name = target.name;\n const inputValue =\n target.type === \"checkbox\" ? target.checked : target.value;\n\n this.setState({\n [name]: inputValue,\n });\n }\n\n handleDropdownChange(event, { value }) {\n const newCountry = _.find(this.state.countries, [\"value\", value]);\n\n if (newCountry) {\n this.props.loadCountry({\n id: value,\n iso_code_2: newCountry.iso_code_2,\n vat_rate: newCountry.vat_rate,\n });\n }\n\n this.setState({\n country: value,\n });\n }\n\n handleInputBlur(event) {\n const target = event.target;\n const name = target.name;\n const nameOnCard = this.getFieldValue(\"sub_name_on_card\");\n\n if (\n name === \"cardName\" &&\n nameOnCard !== \"\" &&\n !this.state.dripCardNameEntered\n ) {\n this.props.drip(\"Subscription Checkout\", \"Entered Payment Method Name\");\n\n this.setState({ dripCardNameEntered: true });\n } else {\n this.dripFormCheck();\n }\n }\n\n dripFormCheck() {\n if (!this.state.dripFormComplete) {\n const firstName = this.getFieldValue(\"sub_first_name\");\n const lastName = this.getFieldValue(\"sub_last_name\");\n const address = this.getFieldValue(\"sub_address\");\n const city = this.getFieldValue(\"sub_city\");\n const stateRegion = this.getFieldValue(\"sub_state_region\");\n const zip = this.getFieldValue(\"sub_zip_postal\");\n\n if (\n firstName !== \"\" &&\n lastName !== \"\" &&\n address !== \"\" &&\n city !== \"\" &&\n stateRegion !== \"\" &&\n zip !== \"\"\n ) {\n this.props.drip(\n \"Subscription Checkout\",\n \"Completed Billing Information\"\n );\n\n this.setState({ dripFormComplete: true });\n }\n }\n }\n\n captchaOnChange(value) {\n this.setState({ recaptchaV2Token: value });\n }\n\n toggleOptionalFields(field) {\n if (this.state.working) {\n return;\n }\n this.setState({\n [field]: !this.state[field],\n });\n }\n\n getFieldValue(elementId) {\n let returnValue = \"\";\n\n if (document.getElementById(elementId)) {\n returnValue = document.getElementById(elementId).value;\n returnValue = returnValue.trim();\n }\n\n return returnValue;\n }\n\n async submit(ev) {\n /*\n * Get form data\n *\n * There might be a way to do this with React states, but the form has to sit in\n * a child element to prevent lag from refreshing the Country list.\n */\n\n const firstName = this.getFieldValue(\"sub_first_name\");\n const lastName = this.getFieldValue(\"sub_last_name\");\n const organisation = this.getFieldValue(\"sub_organisation\");\n const organisationUrl = this.getFieldValue(\"sub_organisation_url\");\n const address = this.getFieldValue(\"sub_address\");\n const city = this.getFieldValue(\"sub_city\");\n const stateRegion = this.getFieldValue(\"sub_state_region\");\n const zip = this.getFieldValue(\"sub_zip_postal\");\n const vatNumber = this.getFieldValue(\"sub_vat_number\");\n const nameOnCard = this.getFieldValue(\"sub_name_on_card\");\n\n // Validation\n let formValid = true;\n let formErrors = {\n firstName: false,\n lastName: false,\n address: false,\n city: false,\n stateRegion: false,\n zip: false,\n vatNumber: false,\n nameOnCard: false,\n agreedToCommitment: false,\n recaptcha: false,\n };\n let genericError = \"This field cannot be blank.\";\n let vatIsValidated = $(\"#sub_vat_number\").attr(\"data-validated\") === \"true\";\n let scrollToTerms = false;\n let scrollPosition = 0;\n let discountCode = false;\n\n if (firstName === \"\") {\n formErrors.firstName = genericError;\n formValid = false;\n }\n\n if (lastName === \"\") {\n formErrors.lastName = genericError;\n formValid = false;\n }\n\n if (address === \"\") {\n formErrors.address = genericError;\n formValid = false;\n }\n\n if (city === \"\") {\n formErrors.city = genericError;\n formValid = false;\n }\n\n if (stateRegion === \"\") {\n formErrors.stateRegion = genericError;\n formValid = false;\n }\n\n if (zip === \"\") {\n formErrors.zip = genericError;\n formValid = false;\n }\n\n if (vatNumber !== \"\" && !vatIsValidated) {\n formErrors.vatNumber =\n \"Please either validate or remove your VAT number.\";\n formValid = false;\n }\n\n if (nameOnCard === \"\") {\n formErrors.nameOnCard = genericError;\n formValid = false;\n }\n\n if (this.props.isMonthly && !this.state.agreedToCommitment) {\n formErrors.agreedToCommitment = \"Please agree to the terms.\";\n\n if (formValid) {\n scrollToTerms = true;\n }\n\n formValid = false;\n }\n\n if (this.state.showRecaptchaV2 && !this.state.recaptchaV2Token) {\n formErrors.recaptcha = \"Please complete the reCAPTCHA to continue.\";\n\n if (formValid) {\n scrollToTerms = true;\n }\n\n formValid = false;\n }\n\n if (!formValid) {\n this.setState({\n error: \"Please complete the highlighted fields.\",\n formErrors,\n });\n\n if (scrollToTerms) {\n scrollPosition = $(\"#subscription-user-agreement\").offset().top - 100;\n } else {\n scrollPosition = $(\"#checkout-form-start\").offset().top - 100;\n }\n\n $(\"html, body\").animate({ scrollTop: scrollPosition }, \"slow\");\n return;\n }\n // End of validation\n\n const countryData = _.find(this.state.countries, [\n \"value\",\n parseInt(this.state.country),\n ]);\n\n /* Compile details for Stripe API */\n const stripeDetails = {\n name: nameOnCard,\n address_line1: address,\n address_city: city,\n address_state: stateRegion,\n address_zip: zip,\n address_country: countryData.text,\n };\n\n /* Show loader */\n this.setState({\n working: true,\n error: false,\n });\n\n let recaptchaToken = \"\";\n\n if (this.state.showRecaptchaV2) {\n recaptchaToken = this.state.recaptchaV2Token;\n } else {\n recaptchaToken = await checkRecaptchaV3(\"subpurchase\");\n }\n\n /* Generate Stripe token */\n let { token } = await this.props.stripe.createToken(stripeDetails);\n\n let { paymentMethod } = await this.props.stripe.createPaymentMethod(\n \"card\",\n {\n billing_details: {\n name: nameOnCard,\n // email: 'test3433@gmail.com',\n address: {\n line1: address,\n city: city,\n state: stateRegion,\n postal_code: zip,\n country: countryData.iso_code_2,\n },\n },\n }\n );\n\n if (!token || !paymentMethod) {\n this.setState({ working: false });\n return;\n }\n\n let periodId = Config.PERIOD_ID.YEARLY;\n if (this.props.isMonthly) {\n periodId = Config.PERIOD_ID.MONTHLY;\n }\n\n if (this.props.discount && this.props.discount.code) {\n discountCode = this.props.discount.code;\n }\n\n this.purchaseSubscription({\n currency: this.props.currency.id,\n plan: this.props.selectedPlan.id,\n period: periodId,\n recaptchaVersion: this.state.showRecaptchaV2 ? 2 : 3,\n recaptchaToken: recaptchaToken,\n stripeToken: token.id,\n paymentMethod: paymentMethod.id,\n firstName: firstName,\n lastName: lastName,\n organisation: organisation,\n organisationUrl: organisationUrl,\n addressLine1: address,\n city: city,\n state: stateRegion,\n zip: zip,\n country: countryData.value,\n vatNumber: vatNumber,\n poNumber: this.state.poNumber,\n agreedToCommitment: this.state.agreedToCommitment,\n discountCode: discountCode,\n })\n .then((data) => {\n if (!this.state.error) {\n this.checkOrderStatus();\n }\n })\n .catch((err) => err);\n }\n\n checkOrderStatus() {\n const genericError = \"Sorry, something went wrong. Please try again later.\";\n\n let formData = new FormData();\n formData.append(\"token\", getAuthToken());\n\n fetch(`${Config.API}subscription/checkStatus`, {\n method: \"POST\",\n body: formData,\n })\n .then((res) => res.json())\n .then((res) => {\n if (res.code === 1) {\n // Active\n this.setState({\n success: true,\n working: false,\n });\n setupSite().then((data) => {\n if (data.status === \"success\") {\n this.props.loadUserData({\n ...data.user,\n isPaymentTabDisplay: data.isPaymentTabDisplay,\n isSubscriptionTabDisplay: !isEmpty(data.subscriptionData),\n });\n }\n });\n this.purchaseSuccessActions();\n } else if (res.code === 5) {\n // Initialised (But not complete)\n let retryTime = 1000;\n\n this.checkCount++;\n\n if (this.checkCount > 20 && !this.state.scaRequest) {\n this.setState({\n error:\n \"Sorry, something went wrong. There may be an issue with our system, or you may not have had sufficient funds to complete this transaction. Please get in touch for further assistance.\",\n working: false,\n });\n } else {\n if (this.checkCount > 300) {\n retryTime = 5000;\n }\n\n this.checkTimer = window.setTimeout(\n this.checkOrderStatus,\n retryTime\n );\n }\n } else if (res.error) {\n // In Progress\n this.setState({\n error: res.error.message,\n working: false,\n });\n } else if (res.code === 0) {\n this.setState({\n error: genericError,\n working: false,\n });\n } else {\n let error = this.state.error ? this.state.error : genericError;\n this.setState({\n error,\n working: false,\n });\n }\n })\n .catch((err) => err);\n }\n sendOrderFailedReason(reason) {\n const data = {\n reason: reason,\n token: getAuthToken(),\n };\n $.ajax({\n method: \"POST\",\n url: `${Config.API}subscription/updatePaymentIntentFailedStatus`,\n data: data,\n success: function (response) {},\n });\n }\n\n purchaseSuccessActions() {\n let subscriptionData = {\n addons: [],\n isActive: true,\n isExpired: false,\n isFreeTrial: false,\n name: this.props.selectedPlan.name,\n plan: this.props.selectedPlan.id,\n plan_type: this.props.selectedPlan.plan_category,\n description: this.props.selectedPlan.description,\n checkoutDesc: this.props.selectedPlan.checkoutDesc,\n };\n\n let dataLayerInfo = {\n event: \"subscriptionPurchaseComplete\",\n isMonthly: this.props.isMonthly ? 1 : 0,\n subPlanName: this.props.selectedPlan.name,\n subPlanCode: this.props.selectedPlan.code,\n subPlanId: this.props.selectedPlan.id,\n subAnnualValue: this.state.orderValueAnnual,\n\n transactionId: this.state.orderId,\n transactionTax: this.state.orderTax,\n transactionTotal: this.state.orderValue,\n transactionCurrencyCode: this.state.orderCurrencyCode,\n transactionNativeTotal: this.state.orderNativeValue,\n adwordsConversionId: this.state.adwordsConversionId,\n adwordsConversionLabel: this.state.adwordsConversionLabel,\n };\n\n this.props.drip(\"Subscription Checkout\", \"Purchase Successful\");\n\n try {\n window.dataLayer.push(dataLayerInfo);\n } catch (e) {}\n try {\n window.dataLayer.push({\n event: `subscriptionPurchase${this.props.selectedPlan.code}-${this.props.isMonthly ? \"M\" : \"A\"}`\n });\n } catch (e) {}\n\n // Scroll to top of page\n document.body.scrollTop = document.documentElement.scrollTop = 0;\n\n // Set site subscriptionData\n this.props.loadSubscriptionData(subscriptionData);\n\n // Empty cart\n this.props.emptySubscriptionCart();\n }\n\n async purchaseSubscription(cartData) {\n const apiUrl = `${Config.API}subscription/create`;\n\n let formData = new FormData();\n\n formData.append(\"currency\", cartData.currency);\n formData.append(\"plan\", cartData.plan);\n formData.append(\"period\", cartData.period);\n formData.append(\"stripe_token\", cartData.stripeToken);\n formData.append(\"auth_token\", getAuthToken());\n formData.append(\"paymentMethod\", cartData.paymentMethod);\n formData.append(\"firstName\", cartData.firstName);\n formData.append(\"lastName\", cartData.lastName);\n formData.append(\"organisation\", cartData.organisation);\n formData.append(\"organisationUrl\", cartData.organisationUrl);\n formData.append(\"addressLine1\", cartData.addressLine1);\n formData.append(\"city\", cartData.city);\n formData.append(\"state\", cartData.state);\n formData.append(\"zip\", cartData.zip);\n formData.append(\"country\", cartData.country);\n formData.append(\"agreedToCommit\", cartData.agreedToCommitment);\n\n formData.append(\"recaptcha_version\", cartData.recaptchaVersion);\n formData.append(\"recaptcha_token\", cartData.recaptchaToken);\n\n if (cartData.vatNumber && cartData.vatNumber !== \"\") {\n formData.append(\"vatNumber\", cartData.vatNumber);\n }\n\n if (cartData.discountCode && cartData.discountCode !== \"\") {\n formData.append(\"discountId\", cartData.discountCode);\n }\n\n if (cartData.poNumber && cartData.poNumber !== \"\") {\n formData.append(\"poNumber\", cartData.poNumber);\n }\n\n this.props.drip(\"Subscription Checkout\", \"Attempted Purchase\");\n\n return fetch(apiUrl, {\n method: \"POST\",\n body: formData,\n })\n .then((res) => res.json())\n .then(async (response) => {\n let orderState = {\n success: false,\n orderId: false,\n orderValue: false,\n orderValueAnnual: false,\n adwordsConversionId: false,\n adwordsConversionLabel: false,\n orderTax: false,\n orderCurrencyCode: false,\n orderNativeValue: false,\n error: false,\n stripeError: false,\n working: false,\n scaRequest: false,\n };\n\n if (response.success) {\n orderState.orderId = response.order_id;\n orderState.orderValue = response.order_value;\n orderState.orderValueAnnual = response.order_value_annual;\n orderState.adwordsConversionId = response.adwords_conversion_id;\n orderState.adwordsConversionLabel = response.adwords_conversion_label;\n orderState.orderTax = response.order_tax;\n orderState.orderCurrencyCode = response.order_currency_code;\n orderState.orderNativeValue = response.order_native_value;\n\n if (response.clientSecret) {\n //SCA Required\n let paymentIntent = await this.props.stripe.handleCardPayment(\n response.clientSecret\n );\n\n this.props.drip(\"Subscription Checkout\", \"SCA Required\");\n\n orderState.working = true;\n orderState.scaRequest = true;\n\n if (!paymentIntent || (paymentIntent && paymentIntent.error)) {\n let errorMsg = paymentIntent.error.message;\n orderState.working = false;\n orderState.success = false;\n orderState.error = errorMsg;\n orderState.stripeError = true;\n this.sendOrderFailedReason(errorMsg);\n }\n } else {\n // SCA Not Required, order complete\n }\n } else {\n orderState.working = false;\n orderState.success = false;\n orderState.error = response.error.message;\n\n if (orderState.error.includes(\"An exception occurred\")) {\n orderState.error =\n \"An internal error occured. Please try again later, or contact us if the issue persists.\";\n }\n\n (orderState.showRecaptchaV2 = response.error.showRecaptcha\n ? true\n : false),\n this.props.drip(\"Subscription Checkout\", \"Order Failed\");\n\n this.sendOrderFailedReason(response.error.message);\n }\n\n this.setState(orderState);\n })\n .catch((err) => err);\n }\n\n render() {\n return (\n \n

\n 1. Billing Details\n

\n
\n
\n \n
\n \n \n
\n \n \n {this.props.selectedPlan.plan_category === 2 && (\n \n {\n this.toggleOptionalFields(\"showPoField\");\n }}\n >\n + Add a Purchase Order Number\n
\n \n \n \n
\n
\n )}\n \n \n\n

2. Add Payment Method

\n\n
\n
\n
\n \n \n {this.state.formErrors.nameOnCard && (\n

{this.state.formErrors.nameOnCard}

\n )}\n
\n
\n \n
\n
\n
\n
\n
\n
\n

\n By placing your order you are agreeing to the{\" \"}\n \n Subscription Terms\n \n , including the Cancellation Policy and Auto-Renewal Policy. You\n agree that your subscription will start immediately and that you\n will not be able to withdraw from the 12 month contract and\n receive a refund. You agree that you are over 18 and that your\n subscription will automatically renew on an annual basis unless\n cancelled.\n

\n
\n {this.props.isMonthly && (\n
\n
\n
\n \n
\n
\n \n I understand that Music Vine subscriptions are an annual\n commitment, and I agree to pay 12 monthly instalments.\n \n
\n {this.state.formErrors.agreedToCommitment && (\n
\n

\n {this.state.formErrors.agreedToCommitment}\n

\n
\n )}\n
\n
\n )}\n {this.props.isMonthly && new Date() < new Date(\"12-13-2019\") && (\n
\n
\n
\n )}\n {this.state.error && (\n
\n

\n Sorry, something went wrong:{\" \"}\n {this.state.error}\n

\n {this.state.stripeError && (\n

\n If this error persists, please feel free to{\" \"}\n \n get in touch\n {\" \"}\n and a member of our team will be happy to assist.\n

\n )}\n
\n )}\n {this.state.showRecaptchaV2 && (\n \n \n
\n )}\n {this.state.formErrors.recaptcha && (\n

\n {this.state.formErrors.recaptcha}\n

\n )}\n
\n {!this.state.working && !this.state.success && (\n \n Start Subscription\n \n )}\n {this.state.working && (\n
\n \n
\n )}\n
\n \n
\n \n \n );\n }\n}\n\n// Map redux actions to local props.\nconst mapDispatchToProps = (dispatch) => ({\n loadCountry: (country) => {\n dispatch(loadCountry(country));\n },\n loadUserData: (user) => {\n dispatch(loadUserData(user));\n },\n emptySubscriptionCart: () => {\n dispatch(emptySubscriptionCart());\n },\n setSubAnnualOrMonthly: (period) => {\n dispatch(setSubAnnualOrMonthly(period, \"Checkout Form\"));\n },\n loadSubscriptionData: (subscriptionData) => {\n dispatch(loadSubscriptionData(subscriptionData, true));\n },\n});\n\n// Map redux states to local props.\n\nconst mapStateToProps = (state) => ({\n currency: state.get('currency'),\n});\n\n// Wrap the component to inject dispatch and state into it\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(injectStripe(CheckoutForm));\n","import React, {Fragment} from 'react';\nimport classnames from 'classnames';\n\nexport default class CheckoutProgress extends React.Component { // eslint-disable-line react/prefer-stateless-function\n constructor(props) {\n super(props);\n this.state = {\n tab: 'customer',\n };\n }\n\n render() {\n return (\n
\n \n
\n );\n }\n}\n","import React, { Component, Fragment } from 'react';\nimport Config from '../../constants';\nimport { connect } from 'react-redux';\nimport classnames from 'classnames';\n\nimport A from '../../components/A';\nimport SpinnerIcon from '../../styles/svg-components/SpinnerIcon';\n\nimport { generateGuid, setupSite } from '../../actions/generalAction';\nimport { loadFollowing } from '../../actions/followingAction';\nimport { loadFavorites } from '../../actions/favouriteAction';\nimport { loadSubscriptionData } from '../../actions/subscriptionAction';\nimport { loadCurrency } from '../../actions/currencyAction';\nimport { loadCountry } from '../../actions/countryAction';\nimport {\n setCookie,\n getCookie,\n addModal,\n setLoginStatus,\n submitSupplementalUserData,\n checkRecaptchaV3,\n} from '../../actions/authenticationAction';\n\nimport ReCAPTCHA from \"react-google-recaptcha\";\n\nclass SignupForm extends Component { // eslint-disable-line react/prefer-stateless-function\n constructor(props) {\n super(props);\n this.state = {\n showRecaptcha: false,\n recaptchaValue: false,\n showRecaptchaV2: false,\n recaptchaV2Token: \"\",\n recaptchaV3Token: \"\",\n recaptchaResponse: [],\n firstLastName: '',\n email: '',\n password: '',\n working: false,\n formErrors: {\n firstLastName: false,\n email: false,\n password: false,\n recaptcha: false,\n general: false,\n },\n };\n\n this.handleAddModal = this.handleAddModal.bind(this);\n this.formIsValid = this.formIsValid.bind(this);\n this.handleInputChange = this.handleInputChange.bind(this);\n this.captchaOnChange = this.captchaOnChange.bind(this);\n this.makeCheckoutRegisterAttempt = this.makeCheckoutRegisterAttempt.bind(this);\n }\n\n\n componentDidMount() {\n if ( Config.DEBUG_SIGNUP ) {\n this.setState({\n firstLastName: 'Subscription Test',\n email: `sandbox+${Math.random().toString(36).substring(5)}@musicvine.com`,\n password: 'test_account_123'\n });\n }\n }\n\n handleAddModal(e) {\n e.preventDefault();\n\n this.props.onAddModal('login');\n $('body').addClass('modal-overlay-active');\n }\n\n handleInputChange(event) {\n const target = event.target;\n const name = target.name;\n const inputValue = target.type === 'checkbox' ? target.checked : target.value;\n\n this.setState({\n [name]: inputValue\n });\n }\n\n captchaOnChange(value) {\n this.setState({recaptchaV2Token: value})\n }\n\n formIsValid() {\n let formValid = true;\n let formErrors = {\n firstLastName: false,\n email: false,\n password: false,\n recaptcha: false,\n general: false,\n };\n let genericError = 'Please complete this field.';\n\n if ( this.state.firstLastName.trim() === '' ) {\n formErrors.firstLastName = genericError;\n formValid = false;\n }\n\n if ( this.state.email.trim() === '' ) {\n formErrors.email = genericError;\n formValid = false;\n } else if (!/^\\S+@\\S+\\.\\S+$/.test(this.state.email)) {\n /*\n Extremely basic email validation since this is handled on the back end too.\n Intended to catch the most obvious issues/typos.\n\n https://stackoverflow.com/a/4964766/1482673\n */\n formErrors.email = 'Please enter a valid email address.';\n formValid = false;\n }\n\n if (this.state.showRecaptchaV2 && !this.state.recaptchaV2Token) {\n formErrors.recaptcha = 'Please complete the reCAPTCHA to continue.';\n formValid = false;\n }\n\n if ( this.state.password.trim() === '' ) {\n formErrors.password = genericError;\n formValid = false;\n } else if ( this.state.password.length < 8 || !/\\d/.test(this.state.password) || !this.state.password.match(/[a-z]/i) ) {\n formErrors.password = 'Your password should be between 8 and 80 characters long, with at least one letter and one number.';\n formValid = false;\n }\n\n this.setState({\n formErrors\n });\n\n return formValid;\n }\n\n\n async makeCheckoutRegisterAttempt() {\n const url = `${Config.API}user/register`;\n let userDetails = {\n first_last_name: this.state.firstLastName,\n email: this.state.email,\n password: this.state.password,\n recaptcha_version: this.state.showRecaptchaV2 ? 2 : 3,\n suppress_welcome: 1,\n };\n\n if ( !this.formIsValid() ) {\n return;\n }\n\n this.setState({\n working: true,\n });\n\n let recaptchaToken = \"\";\n\n if (this.state.showRecaptchaV2) {\n recaptchaToken = this.state.recaptchaV2Token;\n } else {\n recaptchaToken = await checkRecaptchaV3('signup');\n }\n\n userDetails.recaptcha_token = recaptchaToken;\n userDetails.rt_code = localStorage.getItem('rt_code');\n\n const formData = $.param( userDetails, true );\n\n $.ajaxSetup({\n headers: {\n 'X-Requested-With': 'XMLHttpRequest',\n },\n xhrFields: {\n withCredentials: true\n },\n });\n\n $.post(url, formData, (json) => {\n let formErrors = this.state.formErrors;\n let showRecaptchaV2 = false;\n\n if (json.status === \"error\") {\n if (json.code === 2 || json.code === 3) {\n formErrors = Object.assign(formErrors, {email: json.message });\n } else if (json.code === 10 || json.code === 11) {\n showRecaptchaV2 = true;\n formErrors = Object.assign(formErrors, {recaptcha: 'Please complete the following reCAPTCHA.' });\n } else {\n formErrors = Object.assign(formErrors, {email: json.message });\n }\n\n this.setState({\n working: false,\n formErrors,\n showRecaptchaV2\n });\n }\n return json;\n }, 'json')\n .done(() => {\n\n try {\n window.dataLayer.push({\n 'event': 'registrationComplete',\n 'usedEmbeddedSignup': 0,\n 'usedCheckoutSignup': 1,\n });\n } catch(e) {}\n\n this.onSetupSite();\n })\n .fail(() => {\n this.setState({\n working: false,\n });\n });\n }\n\n onSetupSite() {\n return new Promise((resolve, reject) => setupSite()\n .then((data) => {\n if (data.status === 'success') {\n sessionStorage.removeItem('customer_guid');\n\n sessionStorage.setItem('currency_id', data.currency.id);\n sessionStorage.setItem('currency_symbol', data.currency.symbol_left);\n sessionStorage.setItem('currency_value', data.currency.value);\n sessionStorage.setItem('currency_code', data.currency.code);\n\n localStorage.setItem('quick_login', this.state.email);\n\n if (data.basket_data.tracks) {\n sessionStorage.setItem('basket_count', data.basket_data.count);\n sessionStorage.setItem('basket_track_ids', JSON.stringify(data.basket_data.tracks));\n } else {\n sessionStorage.setItem('basket_count', 0);\n }\n\n sessionStorage.setItem('playlists_data', JSON.stringify(data.playlists_data));\n sessionStorage.setItem('favourites_data', JSON.stringify(data.favourites_data));\n\n // Save trusted user data to session storage\n if (data.user.isTrusted) {\n sessionStorage.setItem('is_trusted', true);\n sessionStorage.setItem('trusted_name', data.user.trustedName);\n } else {\n sessionStorage.removeItem('is_trusted');\n sessionStorage.removeItem('trusted_name');\n }\n\n if (data.be_branch) {\n sessionStorage.setItem('be_branch', JSON.stringify(data.be_branch).replace(/\\\"/g, '') );\n }\n\n if (data.user.is_authenticated) {\n sessionStorage.setItem('auth_token', data.user.auth_token);\n setCookie('auth_token', data.user.auth_token, 180);\n sessionStorage.setItem('artist_account', data.user.hasAccountArtist);\n sessionStorage.setItem('customer_account', data.user.hasAccountCustomer);\n sessionStorage.setItem('admin_account', data.user.hasAccountAdmin);\n } else {\n sessionStorage.removeItem('auth_token');\n setCookie('auth_token', data.user.auth_token, 180);\n sessionStorage.removeItem('artist_account');\n sessionStorage.removeItem('customer_account');\n sessionStorage.removeItem('admin_account');\n\n }\n\n // Add favorites ids to redux store.\n this.props.loadFavorites(data.favourites_data);\n this.props.loadFollowing(data.following);\n this.props.loadSubscriptionData(data.subscriptionData, data.user.is_authenticated);\n this.props.loadCurrency(data.currency);\n this.props.loadCountry(data.country);\n\n if (data.user.is_authenticated) {\n this.setState({\n userAuthKey: data.user.auth_token,\n userDisplayName: data.user.company ? data.user.company : data.user.firstName,\n userHasCustomerAccount: data.hasAccountCustomer,\n userHasArtistAccount: data.hasAccountArtist,\n });\n\n this.props.onSetLoginStatus(true);\n // this.props.setEnteredProfession(data.enteredProfession);\n\n sessionStorage.setItem('auth_token', data.user.auth_token);\n setCookie('auth_token', data.user.auth_token, 180);\n\n sessionStorage.removeItem('customer_guid');\n } else {\n this.props.onSetLoginStatus(false);\n sessionStorage.removeItem('user_is_authenticated');\n }\n resolve(data);\n }\n })\n .catch((err) => {\n reject(err);\n return err;\n }));\n }\n render() {\n return (\n \n
\n
\n
\n

Create Account or sign in

\n
\n
\n \n \n { this.state.formErrors.firstLastName &&\n

{this.state.formErrors.firstLastName}

\n }\n
\n
\n \n \n { this.state.formErrors.email &&\n

{this.state.formErrors.email}

\n }\n
\n
\n
\n

Must be between 8 and 80 characters long, with at least one letter and one number.

\n

Password Requirements

\n
\n \n \n { this.state.formErrors.password &&\n

{this.state.formErrors.password}

\n }\n
\n
\n
\n
\n { this.state.formErrors.general &&\n

{this.state.formErrors.general}

\n }\n { this.state.formErrors.recaptcha &&\n

{this.state.formErrors.recaptcha}

\n }\n { this.state.showRecaptchaV2 &&\n
\n \n
\n }\n { !this.state.working &&\n \n }\n { this.state.working &&\n \n }\n
\n
\n

Already have an account? Sign in

\n
\n
\n
\n
\n );\n }\n}\n\n// Map redux actions to local props.\nconst mapDispatchToProps = (dispatch) => ({\n loadFavorites: (favorites) => {\n dispatch(loadFavorites(favorites));\n },\n loadFollowing: (following) => {\n dispatch(loadFollowing(following));\n },\n loadSubscriptionData: (subscriptionData, isLoggedIn) => {\n dispatch(loadSubscriptionData(subscriptionData, isLoggedIn));\n },\n loadCurrency: (currency) => {\n dispatch(loadCurrency(currency));\n },\n loadCountry: (country) => {\n dispatch(loadCountry(country));\n },\n onSetLoginStatus: (status) => {\n dispatch(setLoginStatus(status));\n },\n onAddModal: (modal) => {\n dispatch(addModal(modal));\n },\n});\n\n// Map redux states to local props.\nconst mapStateToProps = (state) => ({\n signup: state.get('signup'),\n});\n\n// Wrap the component to inject dispatch and state into it\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(SignupForm);\n","import React, {Fragment} from 'react';\nimport classnames from 'classnames';\nimport A from '../../components/A';\nimport SpinnerIcon from '../../styles/svg-components/SpinnerIcon';\n\nexport default class Welcome extends React.Component { // eslint-disable-line react/prefer-stateless-function\n constructor(props) {\n super(props);\n\n this.state = {\n profession: 0,\n };\n\n this.handleInputChange = this.handleInputChange.bind(this);\n }\n\n handleInputChange(event) {\n const target = event.target;\n const name = target.name;\n const inputValue = target.type === 'checkbox' ? target.checked : target.value;\n\n this.setState({\n [name]: inputValue\n });\n }\n\n componentDidMount() {\n $('body').removeClass('distraction-free');\n }\n\n render() {\n return (\n
\n
\n
\n

Welcome!

\n
\n
\n
\n
\n

\n
\n
\n

Here’s to your brand new Music Vine subscription plan! Before you dive in, here’s the low-down on some special features you’ll now see as a subscriber.

\n
\n
\n
\n
\n

Tips for getting started

\n
\n
\n
\n
\n

\n
\n
\n

When browsing music, you will now see a ‘License’ button. Clicking this enables you to quickly license a track for a given production and to access the full files.

\n

Note: when you click to license a track, this grants the legal clearance and also issues an earning to the artist. So this should only be done when you know for certain that the track will be used in the production.

\n
\n
\n
\n
\n

\n
\n
\n

A new ‘Payments’ section in your account enables you to view a statement of your subscription payments.

\n
\n
\n { !this.props.hasEnteredProfession && \n \n
\n
\n

Personalize your experience (optional)

\n
\n
\n
\n
\n \n \n
\n
\n
\n }\n
\n
\n { !this.props.submittingProfession &&\n \n }\n { this.props.submittingProfession &&\n \n }\n
\n
\n
\n );\n }\n}\n","import React, {Fragment} from 'react';\nimport classnames from 'classnames';\nimport SubscriptionHeading from '../../components/SubscriptionHeading';\n\nexport default class SubscriptionSummaryWelcome extends React.Component { // eslint-disable-line react/prefer-stateless-function\n constructor(props) {\n super(props);\n }\n\n render() {\n let varAmountB = '';\n let varAmountG = '';\n\n switch(this.props.currency.code) {\n case 'USD':\n varAmountB = '$75,000 USD';\n varAmountG = '$10,000 USD';\n break;\n case 'CAD':\n varAmountB = '$100,000 CAD';\n varAmountG = '$13,000 CAD';\n break;\n case 'AUD':\n varAmountB = '$100,000 AUD';\n varAmountG = '$15,000 AUD';\n break;\n case 'GBP':\n varAmountB = '£60,000';\n varAmountG = '£8,000';\n break;\n case 'EUR':\n varAmountB = '€70,000';\n varAmountG = '€10,000';\n break;\n }\n\n let budgetCreatorLimitedText = [\n `Creators generating up to ${varAmountB} in annual revenue from all of their channels/platforms.`,\n \"Extend to Unlimited Revenue\",\n ];\n\n let budgetCreatorUnlimitedText = [\n \"Unlimited revenue generation.\",\n \"Revert to Limited Revenue\"\n ];\n\n let budgetProLimitedText = [\n `Content with production budgets less than ${varAmountG}.`,\n \"Extend to Unlimited\",\n ];\n\n let budgetProUnlimitedText = [\n \"Content with an unlimited production budget.\",\n \"Revert to Limited\"\n ];\n\n\n let mediaLimitedText = [\n \"Distribution via web, social media, internal, film festivals and events.\",\n \"Extend to All Media\",\n ];\n let mediaUnlimitedText = [\n \"Distribution via any media.\",\n \"Revert to Limited Media\"\n ];\n\n\n let budgetDisplayText = ['',''];\n let mediaDisplayText = ['',''];\n\n switch(this.props.selectedPlan.plan) {\n case 1:\n case 3:\n budgetDisplayText = budgetCreatorLimitedText;\n break;\n case 2:\n case 4:\n budgetDisplayText = budgetCreatorUnlimitedText;\n break;\n case 6:\n budgetDisplayText = budgetProLimitedText;\n mediaDisplayText = mediaLimitedText;\n break;\n case 7:\n budgetDisplayText = budgetProUnlimitedText;\n mediaDisplayText = mediaLimitedText;\n break;\n case 8:\n budgetDisplayText = budgetProLimitedText;\n mediaDisplayText = mediaUnlimitedText;\n break;\n case 9:\n budgetDisplayText = budgetProUnlimitedText;\n mediaDisplayText = mediaUnlimitedText;\n break;\n default:\n budgetDisplayText = ['',''];\n }\n\n let periodText = '';\n switch(this.props.selectedPlan.period) {\n case 1:\n case 3:\n periodText = 'Annual plan, billed monthly';\n break;\n case 2:\n case 4:\n periodText = 'Annual plan, billed yearly';\n break;\n }\n\n return (\n
\n { this.props.selectedPlan &&\n \n \n

{ this.props.selectedPlan.checkoutDesc || this.props.selectedPlan.description }

\n
\n }\n
\n { this.props.selectedPlan.plan !== 5 &&\n \n

Provides clearance for:

\n

{budgetDisplayText[0]}

\n
\n }\n { this.props.selectedPlan.plan_type === 2 && this.props.selectedPlan.plan !== 5 &&\n

{mediaDisplayText[0]}

\n }\n { this.props.selectedPlan.plan !== 5 &&\n
\n }\n

{periodText}

\n
\n
\n
\n

Payment Successful!

\n
\n
\n
\n
\n );\n }\n}\n","import React, {Fragment} from 'react';\nimport classnames from 'classnames';\nimport SubscriptionHeading from '../../components/SubscriptionHeading';\n\nexport default class SubscriptionSummary extends React.Component { // eslint-disable-line react/prefer-stateless-function\n constructor(props) {\n super(props);\n }\n\n currencyRound(num) {\n return Math.round(num * 100) / 100;\n }\n\n render() {\n\n let varAmountB = '';\n let varAmountG = '';\n\n switch(this.props.currency.code) {\n case 'USD':\n varAmountB = '$75,000 USD';\n varAmountG = '$10,000 USD';\n break;\n case 'CAD':\n varAmountB = '$100,000 CAD';\n varAmountG = '$13,000 CAD';\n break;\n case 'AUD':\n varAmountB = '$100,000 AUD';\n varAmountG = '$15,000 AUD';\n break;\n case 'GBP':\n varAmountB = '£60,000';\n varAmountG = '£8,000';\n break;\n case 'EUR':\n varAmountB = '€70,000';\n varAmountG = '€10,000';\n break;\n }\n\n let budgetCreatorLimitedText = [\n `Creators generating up to ${varAmountB} in annual revenue from all of their channels/platforms.`,\n \"Extend to Unlimited Revenue\",\n ];\n\n let budgetCreatorUnlimitedText = [\n \"Unlimited revenue generation.\",\n \"Revert to Limited Revenue\"\n ];\n\n let budgetProLimitedText = [\n `Content with production budgets less than ${varAmountG}.`,\n \"Extend to Unlimited\",\n ];\n\n let budgetProUnlimitedText = [\n \"Content with an unlimited production budget.\",\n \"Revert to Limited\"\n ];\n\n\n let mediaLimitedText = [\n \"Distribution via web, social media, internal, film festivals and events.\",\n \"Extend to All Media\",\n ];\n let mediaUnlimitedText = [\n \"Distribution via any media.\",\n \"Revert to Limited Media\"\n ];\n\n\n let budgetDisplayText = ['',''];\n let mediaDisplayText = ['',''];\n let budgetIsExtended = false;\n let mediaIsExtended = false;\n\n switch(this.props.selectedPlan.id) {\n case 1:\n case 3:\n budgetDisplayText = budgetCreatorLimitedText;\n break;\n case 2:\n case 4:\n budgetDisplayText = budgetCreatorUnlimitedText;\n budgetIsExtended = true;\n break;\n case 6:\n budgetDisplayText = budgetProLimitedText;\n mediaDisplayText = mediaLimitedText;\n break;\n case 7:\n budgetDisplayText = budgetProUnlimitedText;\n mediaDisplayText = mediaLimitedText;\n\n budgetIsExtended = true;\n break;\n case 8:\n budgetDisplayText = budgetProLimitedText;\n mediaDisplayText = mediaUnlimitedText;\n\n mediaIsExtended = true;\n break;\n case 9:\n budgetDisplayText = budgetProUnlimitedText;\n mediaDisplayText = mediaUnlimitedText;\n\n budgetIsExtended = true;\n mediaIsExtended = true;\n break;\n default:\n budgetDisplayText = ['',''];\n }\n\n const currencyCode = this.props.currency.code.toLowerCase();\n\n let selectedPrice = {\n monthly: parseFloat(this.props.selectedPlan.price.monthly[currencyCode]),\n yearly: parseFloat(this.props.selectedPlan.price.yearly[currencyCode]),\n }\n\n /*\n * Subtotal\n */\n\n let subtotal = this.props.subscriptionCart.isMonthly ? selectedPrice.monthly : selectedPrice.yearly;\n\n /*\n * Discount code\n */\n\n let discountAmount = 0;\n if ( this.props.subscriptionCart.discount ) {\n discountAmount = this.currencyRound(subtotal * this.props.subscriptionCart.discount.amount);\n }\n\n let discountText = '';\n let discountTextFade = true;\n if (this.props.subscriptionCart.discount.monthlyDiscount) {\n discountText = `Equivalent to a ${ this.props.subscriptionCart.discount.monthlyDuration} month discount at ${ this.props.subscriptionCart.discount.monthlyDiscount * 100 }%`;\n } else {\n if (this.props.subscriptionCart.discount.monthlyDuration) {\n if (this.props.subscriptionCart.discount.monthlyDuration === 1) {\n discountText = `Active for the first month of your subscription.`;\n } else {\n discountText = `Active for the first ${ this.props.subscriptionCart.discount.monthlyDuration } months of your subscription.`;\n }\n } else {\n discountText = this.props.subscriptionCart.discount.code;\n discountTextFade = false;\n }\n }\n\n /*\n * VAT & Total — use Stripe preview when available, fall back to local calculation\n */\n\n let vat, total, noDiscountVat, noDiscountTotal;\n\n if (this.props.pricePreview) {\n vat = this.props.pricePreview.tax;\n discountAmount = this.props.pricePreview.discount;\n total = this.props.pricePreview.total;\n noDiscountVat = this.currencyRound(subtotal * this.props.country.vat_rate);\n noDiscountTotal = (subtotal + noDiscountVat).toLocaleString('en-US', {minimumFractionDigits: 2});\n } else {\n vat = this.currencyRound( (subtotal - discountAmount) * this.props.country.vat_rate);\n noDiscountVat = this.currencyRound( subtotal * this.props.country.vat_rate);\n\n if (this.props.subscriptionCart.hasValidVatNumber && this.props.country.iso_code_2 !== 'GB') {\n vat = 0;\n }\n\n total = subtotal - discountAmount + vat;\n noDiscountTotal = (subtotal + noDiscountVat).toLocaleString('en-US', {minimumFractionDigits: 2});\n }\n\n let monthlyBillingText = \"Every month\";\n let monthlyBillingFontSmall = false;\n if ( this.props.subscriptionCart.discount.monthlyDuration ) {\n if (this.props.subscriptionCart.discount.monthlyDuration === 1) {\n monthlyBillingText = `For the first month`;\n } else {\n monthlyBillingText = `For the first ${this.props.subscriptionCart.discount.monthlyDuration} months`;\n monthlyBillingFontSmall = true;\n }\n\n\n monthlyBillingText += `, then ${this.props.currency.symbol_left}${ noDiscountTotal } per month.`;\n } { this.props.currency.symbol_left }{ subtotal }\n\n /*\n * Monthly equivalent\n */\n \n let monthlyEquiv = this.currencyRound( (subtotal - discountAmount) / 12 );\n monthlyEquiv = monthlyEquiv.toLocaleString('en-US', {minimumFractionDigits: 2});\n\n /*\n * Split the price for the \"Total Due Today\" section\n */\n\n let splitPrice = total.toFixed(2).split('.');\n\n splitPrice[0] = parseInt(splitPrice[0]).toLocaleString('en-US');\n\n /*\n * Toggle text for monthly/annual billing\n */\n \n let toggleText = 'Save 20% with yearly billing!';\n\n if ( !this.props.subscriptionCart.isMonthly ) {\n toggleText = `Equivalent to ${ this.props.currency.symbol_left }${monthlyEquiv}${ vat > 0 ? ' + VAT' : '' } p/month`;\n }\n\n return (\n
\n { this.props.selectedPlan &&\n \n \n

{ this.props.selectedPlan.checkoutDesc || this.props.selectedPlan.description }

\n
\n }\n
\n { this.props.selectedPlan.id !== 5 &&\n \n

Provides clearance for:

\n

{budgetDisplayText[0]} {this.props.extendSelectedPlan(e, 'unlimited') }}>{budgetDisplayText[1]}

\n
\n }\n { this.props.selectedPlan.plan_category === 2 && this.props.selectedPlan.id !== 5 &&\n

{mediaDisplayText[0]} {this.props.extendSelectedPlan(e, 'allmedia') }}>{mediaDisplayText[1]}

\n }\n { this.props.selectedPlan.id !== 5 &&\n
\n }\n

{this.props.subscriptionCart.isMonthly ? 'Annual plan, billed monthly' : 'Annual plan, billed yearly'}

\n
\n
\n
\n Subtotal\n
\n
\n { this.props.currency.symbol_left }{ subtotal.toLocaleString('en-US', {minimumFractionDigits: 2}) }\n
\n
\n
\n { this.props.subscriptionCart.discount &&\n \n
\n
\n Discount{!this.props.subscriptionCart.discount.monthlyDiscount && ({ (this.props.subscriptionCart.discount.amount * 100) }%)}\n
\n
\n
\n -{ this.props.currency.symbol_left }{ discountAmount.toLocaleString('en-US', {minimumFractionDigits: 2}) }\n
\n
\n {discountText}\n
\n
\n
\n
\n }\n { vat > 0 &&\n \n
\n
\n VAT ({ this.props.pricePreview ? this.props.pricePreview.tax_rate : this.props.country.vat_rate * 100 }%)\n
\n
\n { this.props.currency.symbol_left }{ vat.toLocaleString('en-US', {minimumFractionDigits: 2}) }\n
\n
\n
\n
\n }\n
\n
\n Total Due Today { this.props.currency.isAmbiguous && ({ this.props.currency.code })}\n
\n
\n { this.props.currency.symbol_left }{ splitPrice[0] }.{ splitPrice[1] }\n
\n
\n { this.props.subscriptionCart.isMonthly &&\n
\n
\n {monthlyBillingText}\n
\n
\n }\n\n
\n

{ toggleText }

\n

{ this.props.setSubAnnualOrMonthly(this.props.subscriptionCart.isMonthly ? 'yearly' : 'monthly') }} style={{ textDecoration: 'underline', cursor: 'pointer' }}>Switch to {!this.props.subscriptionCart.isMonthly ? 'monthly' : 'yearly'} billing

\n
\n );\n }\n}\n","/*\n * Subscription Checkout Page\n *\n *\n */\n\nimport React, {Component,Fragment} from 'react';\nimport Helmet from 'react-helmet';\nimport PropTypes from 'prop-types';\nimport Config from '../../constants';\n\nimport _ from 'lodash';\nimport A from '../../components/A';\nimport { connect } from 'react-redux';\nimport { createStructuredSelector } from 'reselect';\nimport {Elements, StripeProvider} from 'react-stripe-elements';\nimport SpinnerIcon from '../../styles/svg-components/SpinnerIcon';\nimport CheckoutForm from '../../components/CheckoutForm';\nimport SignInForm from '../../components/SignInForm';\nimport CheckoutProgress from './CheckoutProgress';\nimport SignupForm from './SignupForm';\nimport Welcome from './Welcome';\nimport SubscriptionSummaryWelcome from './SubscriptionSummaryWelcome';\nimport SubscriptionSummary from './SubscriptionSummary';\nimport { getAuthToken } from '../../actions/authenticationAction';\nimport { setSubscriptionDiscount, setSubAnnualOrMonthly, addSubscriptionToCart } from '../../actions/cartAction';\nimport { fetchSubscriptionPermissions, fetchSubscriptionPlansAndAddons } from '../../actions/subscriptionAction';\nimport { fetchVatRate, checkDiscountCode, fetchSubscriptionPricePreview } from '../../actions/checkoutAction';\nimport Img from 'components/Img';\nimport {\n addModal,\n setEnteredProfession,\n} from '../../actions/authenticationAction';\nimport { drip, dripProductView } from 'utils/drip';\n\nclass SubscriptionCheckoutPage extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n tab: 'customer',\n allPlanData: false,\n startedSignedIn: this.props.userAuth.isLoggedIn,\n selectedPlan: false,\n loading: true,\n customerHasActivePlan: this.props.subscriptionData.isActiveOrSuspended,\n submittingProfession: false,\n pricePreview: null,\n pricePreviewLoading: false,\n };\n this.changeSubscriptionPlan = this.changeSubscriptionPlan.bind(this);\n this.extendSelectedPlan = this.extendSelectedPlan.bind(this);\n this.submitSupplementalUserData = this.submitSupplementalUserData.bind(this);\n this.setSubAnnualOrMonthlyWithDiscount = this.setSubAnnualOrMonthlyWithDiscount.bind(this);\n this.recalculateDiscount = this.recalculateDiscount.bind(this);\n this.loadPricePreview = this.loadPricePreview.bind(this);\n }\n\n componentDidUpdate(prevProps) {\n // Update \"startedSignedIn\", but only from null\n if (this.props.userAuth.isLoggedIn !== prevProps.userAuth.isLoggedIn && prevProps.userAuth.isLoggedIn === null ) {\n this.setState({\n startedSignedIn: this.props.userAuth.isLoggedIn,\n });\n }\n if (this.props.subscriptionData.isActive !== prevProps.subscriptionData.isActive) {\n this.setState({\n customerHasActivePlan: this.props.subscriptionData.isActive,\n });\n }\n\n if (this.props.userAuth.isLoggedIn && this.state.selectedPlan) {\n const cartChanged =\n prevProps.subscriptionCart.isMonthly !== this.props.subscriptionCart.isMonthly ||\n prevProps.subscriptionCart.hasValidVatNumber !== this.props.subscriptionCart.hasValidVatNumber ||\n prevProps.subscriptionCart.vatNumber !== this.props.subscriptionCart.vatNumber ||\n prevProps.subscriptionCart.discount !== this.props.subscriptionCart.discount ||\n prevProps.country.id !== this.props.country.id;\n\n const justLoggedIn = this.props.userAuth.isLoggedIn && !prevProps.userAuth.isLoggedIn;\n\n if (cartChanged || justLoggedIn) {\n this.loadPricePreview();\n }\n }\n }\n\n loadPricePreview() {\n if (!this.props.userAuth.isLoggedIn || !this.state.selectedPlan) {\n return;\n }\n\n this.setState({ pricePreview: null, pricePreviewLoading: true });\n\n const periodId = this.props.subscriptionCart.isMonthly\n ? Config.PERIOD_ID.MONTHLY\n : Config.PERIOD_ID.YEARLY;\n\n fetchSubscriptionPricePreview({\n planId: this.state.selectedPlan.id,\n periodId,\n currencyId: parseInt(sessionStorage.getItem('currency_id')),\n countryId: this.props.country.id,\n vatNumber: this.props.subscriptionCart.hasValidVatNumber ? this.props.subscriptionCart.vatNumber : null,\n couponId: this.props.subscriptionCart.discount ? this.props.subscriptionCart.discount.code : null,\n }).then((data) => {\n if (data && !data.error) {\n this.setState({ pricePreview: data, pricePreviewLoading: false });\n } else {\n this.setState({ pricePreviewLoading: false });\n }\n }).catch(() => {\n this.setState({ pricePreviewLoading: false });\n });\n }\n\n componentWillMount() {\n this.props.setSubscriptionDiscount(false);\n\n fetchSubscriptionPlansAndAddons().then((data) => {\n let plan = this.props.subscriptionCart.plan;\n\n if ( isNaN(plan) ) {\n this.setState({ loading: false });\n } else {\n\n let selectedPlan = _.find(data.plans, ['id', plan]);\n\n drip(\"Selected Plan\", selectedPlan.name);\n dripProductView(\n selectedPlan.code,\n selectedPlan.name,\n \"Subscription\",\n selectedPlan.price.yearly[this.props.currency.code.toLowerCase()],\n this.props.currency.code\n );\n\n this.setState({ selectedPlan, allPlanData: data.plans, loading: false }, () => {\n this.loadPricePreview();\n });\n\n }\n\n }).catch((err) => err);\n }\n\n componentDidMount() {\n drip(\"Started Subscription Checkout\");\n }\n\n componentWillUnmount() {\n if (!this.state.customerHasActivePlan) {\n drip(\"Abandoned Subscription Checkout\");\n }\n }\n\n changeSubscriptionPlan(newPlanId) {\n let selectedPlan = _.find(this.state.allPlanData, ['id', parseInt(newPlanId)]);\n\n if (selectedPlan) {\n this.setState({ selectedPlan }, () => {\n this.loadPricePreview();\n });\n this.props.addSubscriptionToCart(newPlanId);\n }\n\n if (selectedPlan.representative) {\n drip(\"Reverted Plan\", selectedPlan.code);\n } else {\n drip(\"Extended Plan\", selectedPlan.code);\n }\n\n }\n\n setSubAnnualOrMonthlyWithDiscount(period) {\n if (this.props.subscriptionCart.discount) {\n this.recalculateDiscount(period);\n }\n this.props.setSubAnnualOrMonthly(period);\n }\n\n recalculateDiscount(period) {\n let discountCode = this.props.subscriptionCart.discount.code;\n let planId = this.props.subscriptionCart.plan;\n let currencyId = parseInt(sessionStorage.getItem('currency_id'));\n let periodId = Config.PERIOD_ID.YEARLY;\n if (period === \"monthly\") {\n periodId = Config.PERIOD_ID.MONTHLY;\n }\n let authToken = getAuthToken();\n\n this.props.setSubscriptionDiscount(false);\n\n checkDiscountCode(discountCode, planId, currencyId, periodId, authToken).then((data) => {\n if (data.success) {\n let monthlyDiscount = data.monthly_discount ? parseFloat(data.monthly_discount) : false;\n let monthlyDuration = data.months_active ? parseInt(data.months_active) : false;\n\n let discount = {\n code: data.discountId,\n amount: parseFloat(data.discount),\n monthlyDiscount,\n monthlyDuration\n }\n\n this.props.setSubscriptionDiscount(discount);\n } else {\n // Nothing\n }\n });\n }\n\n extendSelectedPlan(e, option) {\n e.preventDefault();\n\n let newPlan = false;\n\n if (option === \"unlimited\") {\n switch(this.state.selectedPlan.id) {\n case 1:\n newPlan = 2;\n break;\n case 2:\n newPlan = 1;\n break;\n case 3:\n newPlan = 4;\n break;\n case 4:\n newPlan = 3;\n break;\n case 5:\n newPlan = false;\n break;\n case 6:\n newPlan = 7;\n break;\n case 7:\n newPlan = 6;\n break;\n case 8:\n newPlan = 9;\n break;\n case 9:\n newPlan = 8;\n break;\n default:\n newPlan = false;\n }\n } else if (option === \"allmedia\") {\n switch(this.state.selectedPlan.id) {\n case 1:\n case 2:\n case 3:\n case 4:\n case 5:\n newPlan = false;\n break;\n case 6:\n newPlan = 8;\n break;\n case 7:\n newPlan = 9;\n break;\n case 8:\n newPlan = 6;\n break;\n case 9:\n newPlan = 7;\n break;\n default:\n newPlan = false;\n }\n }\n\n if (newPlan) {\n this.changeSubscriptionPlan(newPlan);\n }\n }\n\n submitSupplementalUserData(e) {\n const welcomeUrl = '/browse/all';\n const selectedProfession = parseInt( $('.register-success__profession-dropdown').val() );\n let selectedNewsletters = '';\n let checkedNewsletters = [];\n\n e.preventDefault();\n\n selectedNewsletters = checkedNewsletters.join();\n\n this.setState({\n submittingProfession: true\n });\n\n if ( selectedProfession !== 0 || !isNaN(selectedProfession) ) {\n\n $.ajax({\n type: \"POST\",\n url: `${Config.API}user/register/step/2`,\n data: {\n 'profession': selectedProfession,\n 'newsletter': selectedNewsletters,\n 'token': sessionStorage.getItem('auth_token')\n }\n }).done((res) => {\n\n this.props.setEnteredProfession(true);\n\n try {\n window.dataLayer.push({\n 'event': 'registrationProfessionConfirmation',\n 'selectedProfession': selectedProfession\n });\n\n drip(\"Customer Submitted Profession\", selectedProfession);\n } catch(e) {}\n\n this.props.router.push(welcomeUrl);\n\n }).fail(function() {\n this.setState({\n submittingProfession: false\n });\n });;\n\n } else {\n this.props.router.push(welcomeUrl);\n }\n }\n\n render() {\n return (\n \n
\n \n\n {/* Start of checkout */}\n
\n
\n {(this.state.selectedPlan || this.state.customerHasActivePlan ) &&\n \n
\n
\n
\n

Your Subscription

\n
\n \n { this.state.customerHasActivePlan &&\n \n }\n \n { !this.state.customerHasActivePlan && this.state.selectedPlan &&\n \n }\n
\n
\n
\n { this.props.subscriptionData.isActive &&\n \n }\n { !this.props.subscriptionData.isActive &&\n \n { !this.state.startedSignedIn && false &&\n \n }\n { !this.props.userAuth.isLoggedIn &&\n \n }\n { this.props.userAuth.isLoggedIn &&\n \n \n \n \n \n }\n \n }\n
\n
\n }\n {!this.state.selectedPlan && !this.state.customerHasActivePlan &&\n
\n
\n { this.state.loading && \n \n }\n { !this.state.loading && \n \n

No plan selected.

\n

Browse subscription plans

\n
\n }\n
\n
\n }\n
\n
\n
\n
\n );\n }\n}\n\nSubscriptionCheckoutPage.propTypes = {\n params: PropTypes.object,\n};\n\nexport const mapDispatchToProps = (dispatch) => ({\n setSubAnnualOrMonthly: (period) => dispatch(setSubAnnualOrMonthly(period, \"Subscription Checkout\")),\n addSubscriptionToCart: (subscriptionId) => dispatch(addSubscriptionToCart(subscriptionId)),\n setEnteredProfession: (enteredProfession) => dispatch(setEnteredProfession(enteredProfession)),\n setSubscriptionDiscount: (discount) => dispatch(setSubscriptionDiscount(discount)),\n});\n\nconst mapStateToProps = (state) => ({\n currency: state.get('currency'),\n country: state.get('country'),\n subscriptionCart: state.get('subscriptionCart'),\n userAuth: state.get('userAuth'),\n subscriptionData: state.get('subscriptionData'),\n});\n\n// Wrap the component to inject dispatch and state into it\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(SubscriptionCheckoutPage);\n","// Set currency action.\n// -----------------------------------------------------------------------------\nimport fetch from 'isomorphic-fetch';\nimport Config, { API } from '../constants';\nimport {conditionallyGetCdnApi} from \"./generalAction\";\n\nexport function fetchSubscriptionPricePreview({ planId, periodId, currencyId, countryId, vatNumber, couponId }) {\n const authToken = sessionStorage.getItem('auth_token');\n const apiUrl = `${API}subscription/price-preview`;\n const formData = new FormData();\n\n formData.append('auth_token', authToken);\n formData.append('planId', planId);\n formData.append('periodId', periodId);\n formData.append('currencyId', currencyId);\n formData.append('countryId', countryId);\n if (vatNumber) formData.append('vatNumber', vatNumber);\n if (couponId) formData.append('couponId', couponId);\n\n return fetch(apiUrl, {\n method: 'POST',\n body: formData,\n })\n .then((res) => res.json())\n .catch((err) => err);\n}\n\nexport function fetchVatRate(countryCode = false) {\n const apiUrl = `${conditionallyGetCdnApi()}subscription/get_vat/${countryCode}`;\n\n return fetch(apiUrl, {\n method: 'GET',\n })\n .then((res) => res.json())\n .catch((err) => err);\n}\n\nexport function fetchCountries() {\n const apiUrl = `${API}countries`;\n\n return fetch(apiUrl, {\n method: 'GET',\n })\n .then((res) => res.json())\n .catch((err) => err);\n}\n\nexport function checkVatNumber(vatNumber, countryID) {\n const apiUrl = `${Config.BASE_API_URL}api-checkout/payment/validate-vat-number?vat_number=${vatNumber}&country_id=${countryID}`;\n const authToken = sessionStorage.getItem('auth_token');\n return fetch(apiUrl, {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n 'X-Auth-Token': authToken || null,\n },\n })\n .then((res) => res.json())\n .catch((err) => err);\n}\n\nexport function recalculateBasket(countryID, isValid = false, vatNumber = '', address = {}) {\n const authToken = sessionStorage.getItem('auth_token');\n const params = new URLSearchParams({\n country_id: countryID,\n vat_number_valid: isValid,\n vat_number: vatNumber,\n });\n if (address.line1) params.append('address_line1', address.line1);\n if (address.city) params.append('address_city', address.city);\n if (address.state) params.append('address_state', address.state);\n if (address.postal_code) params.append('address_postal_code', address.postal_code);\n const apiUrl = `${Config.BASE_API_URL}api-checkout/payment/recalculate-basket-totals?${params.toString()}`;\n return fetch(apiUrl, {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n 'X-Auth-Token': authToken || null,\n },\n })\n .then((res) => res.json())\n .catch((err) => err);\n}\n\nexport function checkDiscountCode(\n discountCode,\n planId,\n currencyId,\n periodId,\n authToken\n) {\n const apiUrl = `${API}subscription/validateDiscountCode`;\n const formData = new FormData();\n\n formData.append('token', authToken);\n formData.append('discountCode', discountCode);\n formData.append('planId', planId);\n formData.append('currency', currencyId);\n formData.append('periodId', periodId);\n\n return fetch(apiUrl, {\n method: 'POST',\n body: formData,\n })\n .then((res) => res.json())\n .catch((err) => err);\n}\n\nexport function fetchCheckoutBasket() {\n const authToken = sessionStorage.getItem('auth_token');\n return () =>\n fetch(`${Config.BASE_API_URL}api-checkout/payment`, {\n method: 'GET',\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n 'X-Auth-Token': authToken || null,\n 'X-GUID': sessionStorage.getItem('customer_guid') || null,\n },\n })\n .then((res) => res.json())\n .catch((err) => err);\n}\n\nexport function updateCheckoutBasket(data) {\n const authToken = sessionStorage.getItem('auth_token');\n return () =>\n fetch(`${Config.BASE_API_URL}api-checkout/payment`, {\n method: 'POST',\n body: JSON.stringify({\n token: authToken,\n ...data,\n }),\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n token: authToken || null,\n },\n })\n .then((res) => res.json())\n .catch((err) => err);\n}\n\nexport function fetchBillingInformation() {\n const authToken = sessionStorage.getItem('auth_token');\n return () =>\n fetch(`${Config.BASE_API_URL}api-checkout/payment/billing-information`, {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n 'X-Auth-Token': authToken || null,\n },\n })\n .then((res) => res.json())\n .catch((err) => err);\n}\nexport function updatePaymentOrderStatus(orderId) {\n const authToken = sessionStorage.getItem('auth_token');\n return () =>\n fetch(`${API}checkout/ajax-update-status-sca-order?orderId=${orderId}`, {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n 'X-Auth-Token': authToken || null,\n },\n })\n .then((res) => res.json())\n .catch((err) => err);\n}\n\nexport function updateOrderStatus(orderId) {\n const authToken = sessionStorage.getItem('auth_token');\n return () =>\n fetch(`${API}checkout/ajax-update-sca-order?orderId=${orderId}`, {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n 'X-Auth-Token': authToken || null,\n },\n })\n .then((res) => res.json())\n .catch((err) => err);\n}\n\nexport function checkOrderStatus(orderId) {\n const authToken = sessionStorage.getItem('auth_token');\n return () =>\n fetch(`${Config.BASE_API_URL}api-checkout/order-status/${orderId}`, {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n 'X-Auth-Token': authToken || null,\n },\n })\n .then((res) => res.json())\n .catch((err) => err);\n}\n\nexport function fetchOrderConfirmation(orderID) {\n const authToken = sessionStorage.getItem('auth_token');\n return () =>\n fetch(`${Config.BASE_API_URL}api-checkout/order-confirmation/${orderID}`, {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n 'X-Auth-Token': authToken || null,\n },\n })\n .then((res) => res.json())\n .catch((err) => err);\n}\n\n","/**\n *\n * Img.react.js\n *\n * Renders an image, enforcing the usage of the alt=\"\" tag\n */\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nfunction Img(props) {\n return (\n {props.alt}\n );\n}\n\n// We require the use of src and alt, only enforced by react in dev mode\nImg.propTypes = {\n src: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.object,\n ]).isRequired,\n alt: PropTypes.string.isRequired,\n className: PropTypes.string,\n};\n\nexport default Img;\n","import fetch from 'isomorphic-fetch';\nimport Config, { API } from '../constants';\nimport { drip } from 'utils/drip';\n\nexport function addToCart(subscriptionData) {\n // TODO: I don't think this is actually used, but it's being imported somewhere\n}\n\nexport function addSubscriptionToCart(subscriptionId) {\n sessionStorage.setItem('basket_subscription_id', subscriptionId);\n return { type: 'ADD_SUBSCRIPTION_TO_CART', subscriptionId };\n}\n\nexport function emptySubscriptionCart() {\n sessionStorage.removeItem('basket_subscription_id', subscriptionId);\n return { type: 'EMPTY_SUBSCRIPTION_CART' };\n}\n\nexport function setSubAnnualOrMonthly(period, fromPage) {\n drip(\n `Switched Billing Period from ${fromPage}`,\n period.charAt(0).toUpperCase() + period.substring(1)\n );\n sessionStorage.setItem('selected_billing_mode', period);\n return { type: 'SET_SUB_ANNUAL_OR_MONTHLY', period };\n}\n\nexport function setHasValidVatNumber(hasValidVatNumber, vatNumber = '') {\n return { type: 'SET_CART_HAS_VALID_VAT_NUMBER', hasValidVatNumber, vatNumber };\n}\n\nexport function setSubscriptionDiscount(discount) {\n return { type: 'SET_SUBSCRIPTION_DISCOUNT', discount };\n}\n\nexport function fetchBasket() {\n const authToken = sessionStorage.getItem('auth_token');\n return () =>\n fetch(`${Config.BASE_API_URL}api-checkout/basket`, {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n 'X-Auth-Token': authToken || null,\n 'X-GUID': sessionStorage.getItem('customer_guid') || null,\n },\n })\n .then((res) => res.json())\n .catch((err) => err);\n}\n\nexport function checkDiscountCode(discountCode) {\n const authToken = sessionStorage.getItem('auth_token');\n return () =>\n fetch(\n `${API}checkout/basket/ajax-check-discount-code?discount_code=${discountCode}&auto_apply_code=0`,\n {\n method: 'GET',\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n 'X-Auth-Token': authToken || null,\n },\n }\n )\n .then((res) => res.json())\n .catch((err) => err);\n}\n\nexport function addArtistTip(data) {\n const authToken = sessionStorage.getItem('auth_token');\n return () =>\n fetch(`${Config.BASE_API_URL}api-artist/tip`, {\n method: 'POST',\n body: JSON.stringify({\n token: authToken,\n ...data,\n }),\n headers: {\n 'Content-Type': 'application/json',\n 'X-Auth-Token': authToken || null,\n 'X-GUID': sessionStorage.getItem('customer_guid') || null,\n },\n })\n .then((res) => res.json())\n .catch((err) => err);\n}\n\nexport function updateQuantity(trackID, quantity) {\n const authToken = sessionStorage.getItem('auth_token');\n return () =>\n fetch(`${Config.BASE_API_URL}api-checkout/basket/ajax-update-basket-track-quantity`, {\n method: 'POST',\n body: JSON.stringify({\n token: authToken,\n basket_track_id: trackID,\n quantity,\n }),\n headers: {\n 'Content-Type': 'application/json',\n 'X-Auth-Token': authToken || null,\n 'X-GUID': sessionStorage.getItem('customer_guid') || null,\n },\n })\n .then((res) => res.json())\n .catch((err) => err);\n}\n\nexport function updateBasket(data) {\n const authToken = sessionStorage.getItem('auth_token');\n return () =>\n fetch(`${Config.BASE_API_URL}api-checkout/update-basket`, {\n method: 'POST',\n body: JSON.stringify({\n token: authToken,\n ...data,\n }),\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n 'X-Auth-Token': authToken || null,\n 'X-GUID': sessionStorage.getItem('customer_guid') || null,\n },\n })\n .then((res) => res.json())\n .catch((err) => err);\n}\n\nexport function updateBasketTrackLicenses(data) {\n const authToken = sessionStorage.getItem('auth_token');\n return () =>\n fetch(`${Config.BASE_API_URL}api-checkout/basket/update-basket-track-licenses`, {\n method: 'POST',\n body: JSON.stringify({\n token: authToken,\n ...data,\n }),\n headers: {\n 'Content-Type': 'application/json',\n 'X-Auth-Token': authToken || null,\n 'X-GUID': sessionStorage.getItem('customer_guid') || null,\n },\n })\n .then((res) => res.json())\n .catch((err) => err);\n}\n\nexport function removeBasketTrack(trackID) {\n const authToken = sessionStorage.getItem('auth_token');\n return () =>\n fetch(`${Config.BASE_API_URL}api-checkout/basket/remove-basket-track/${trackID}`, {\n method: 'POST',\n body: JSON.stringify({\n token: authToken,\n }),\n headers: {\n 'Content-Type': 'application/json',\n 'X-Auth-Token': authToken || null,\n 'X-GUID': sessionStorage.getItem('customer_guid') || null,\n },\n })\n .then((res) => res.json())\n .catch((err) => err);\n}\n","import React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\n\nclass SubscriptionHeading extends Component {\n constructor(props) {\n super(props);\n\n /*\n * Split input on first whitespace.\n *\n * https://stackoverflow.com/a/10272822/1482673\n */\n \n let name1 = '';\n let name2 = '';\n\n if (this.props.planName) {\n name1 = this.props.planName.substr(0,this.props.planName.indexOf(' '));\n name2 = this.props.planName.substr(this.props.planName.indexOf(' ')+1);\n }\n\n this.state = {\n name1,\n name2,\n };\n }\n\n componentDidUpdate(prevProps) {\n // Typical usage (don't forget to compare props):\n if (this.props.planName !== prevProps.planName) {\n \n let name1 = '';\n let name2 = '';\n\n if (this.props.planName) {\n name1 = this.props.planName.substr(0,this.props.planName.indexOf(' '));\n name2 = this.props.planName.substr(this.props.planName.indexOf(' ')+1);\n }\n \n this.setState({\n name1,\n name2,\n });\n }\n }\n\n render() {\n return (\n

{this.state.name1} {this.state.name2}

\n );\n }\n}\n\nSubscriptionHeading.propTypes = {\n name: PropTypes.string\n};\n\nSubscriptionHeading.defaultProps = {\n name: ''\n};\n\nexport default SubscriptionHeading;\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport Spinner from 'styles/svg-components/Spinner.js';\nimport { API } from '../../constants';\nimport { generateGuid, setupSite } from '../../actions/generalAction';\n\nimport {\n showSigninSuccess,\n hideSigninSuccess,\n showNotificationSuccess,\n hideNotificationSuccess,\n animateInTooltip,\n animateOutTooltip,\n setCookie,\n getCookie,\n makeLoginAttempt,\n showLoginStageTwo,\n makeRegisterAttempt,\n submitSupplementalUserData,\n makePasswordAttempt,\n fetchLogout,\n removeModal,\n addModal,\n checkProvidedEmail,\n resetLoginModal,\n setLoginStatus,\n setEnteredProfession,\n} from '../../actions/authenticationAction';\n\nimport { loadFollowing } from '../../actions/followingAction';\nimport { loadFavorites } from '../../actions/favouriteAction';\nimport { loadSubscriptionData } from '../../actions/subscriptionAction';\nimport { loadCurrency } from '../../actions/currencyAction';\nimport { loadCountry } from '../../actions/countryAction';\nimport {setAppliedFilters, setNotFiltered} from \"../../actions/browseAction\";\n\nexport class SignInForm extends React.Component { // eslint-disable-line react/prefer-stateless-function\n constructor(props) {\n super(props);\n this.state = {\n loginEmail: '',\n hasQuickLoginEmail: localStorage.getItem('quick_login') && localStorage.getItem('quick_login') !== '' && localStorage.getItem('quick_login') !== 'undefined' ? true : false\n };\n\n this.resetModalForm = this.resetModalForm.bind(this);\n this.handleChange = this.handleChange.bind(this);\n this.handleLogin = this.handleLogin.bind(this);\n this._handleKeyPress = this._handleKeyPress.bind(this);\n }\n\n componentDidMount() {\n if (this.state.hasQuickLoginEmail) {\n this.setState({\n loginEmail: localStorage.getItem('quick_login')\n });\n\n showLoginStageTwo(localStorage.getItem('quick_login'));\n }\n }\n\n handleChange(event) {\n this.setState({loginEmail: event.target.value});\n }\n\n handleLogin() {\n makeLoginAttempt(this.props.redirect).then(() => {\n if (!this.props.redirect) {\n this.onSetupSite().then(() => {\n this.props.showSigninSuccess( this.state.userDisplayName );\n });\n }\n });\n }\n\n _handleKeyPress(e) {\n if (e.key === 'Enter') {\n this.handleLogin();\n }\n }\n\n resetModalForm(event) {\n event.preventDefault();\n this.setState({\n loginEmail: '',\n hasQuickLoginEmail: false\n });\n\n resetLoginModal();\n }\n \n onSetupSite() {\n return new Promise((resolve, reject) => setupSite()\n .then((data) => {\n if (data.status === 'success') {\n sessionStorage.removeItem('customer_guid');\n\n sessionStorage.setItem('currency_id', data.currency.id);\n sessionStorage.setItem('currency_symbol', data.currency.symbol_left);\n sessionStorage.setItem('currency_value', data.currency.value);\n sessionStorage.setItem('currency_code', data.currency.code);\n\n if (data.basket_data.tracks) {\n sessionStorage.setItem('basket_count', data.basket_data.count);\n sessionStorage.setItem('basket_track_ids', JSON.stringify(data.basket_data.tracks));\n } else {\n sessionStorage.setItem('basket_count', 0);\n }\n\n sessionStorage.setItem('playlists_data', JSON.stringify(data.playlists_data));\n sessionStorage.setItem('favourites_data', JSON.stringify(data.favourites_data));\n\n // Save trusted user data to session storage\n if (data.user.isTrusted) {\n sessionStorage.setItem('is_trusted', true);\n sessionStorage.setItem('trusted_name', data.user.trustedName);\n } else {\n sessionStorage.removeItem('is_trusted');\n sessionStorage.removeItem('trusted_name');\n }\n\n if (data.be_branch) {\n sessionStorage.setItem('be_branch', JSON.stringify(data.be_branch).replace(/\\\"/g, '') );\n }\n\n if (data.user.is_authenticated) {\n sessionStorage.setItem('auth_token', data.user.auth_token);\n setCookie('auth_token', data.user.auth_token, 180);\n sessionStorage.setItem('artist_account', data.user.hasAccountArtist);\n sessionStorage.setItem('customer_account', data.user.hasAccountCustomer);\n sessionStorage.setItem('admin_account', data.user.hasAccountAdmin);\n } else {\n sessionStorage.removeItem('auth_token');\n setCookie('auth_token', data.user.auth_token, 180);\n sessionStorage.removeItem('artist_account');\n sessionStorage.removeItem('customer_account');\n sessionStorage.removeItem('admin_account');\n\n }\n\n // Add favorites ids to redux store.\n this.props.loadFavorites(data.favourites_data);\n this.props.loadFollowing(data.following);\n this.props.loadSubscriptionData(data.subscriptionData, data.user.is_authenticated);\n this.props.loadCurrency(data.currency);\n this.props.loadCountry(data.country);\n\n if (data.user.is_authenticated) {\n this.setState({\n userAuthKey: data.user.auth_token,\n userDisplayName: data.user.company ? data.user.company : data.user.firstName,\n userHasCustomerAccount: data.hasAccountCustomer,\n userHasArtistAccount: data.hasAccountArtist,\n });\n\n this.props.onSetLoginStatus(true);\n this.props.setEnteredProfession(data.enteredProfession);\n\n sessionStorage.setItem('auth_token', data.user.auth_token);\n setCookie('auth_token', data.user.auth_token, 180);\n\n sessionStorage.removeItem('customer_guid');\n } else {\n this.props.onSetLoginStatus(false);\n sessionStorage.removeItem('user_is_authenticated');\n }\n resolve(data);\n }\n })\n .catch((err) => {\n reject(err);\n return err;\n }));\n }\n \n render() {\n return (\n
\n
\n
Bad credentials.
\n \n \n
\n
\n
Bad credentials.
\n

{this.state.loginEmail} (Not you?)

\n \n \n
\n
\n

We've just sent you an email with a link to reset your password.

\n

Already done this? Log in!

\n
\n {/* Hidden input for the customer_guid */}\n \n
\n );\n }\n}\n\n\n// Map redux actions to local props.\nconst mapDispatchToProps = (dispatch) => ({\n setEnteredProfession: (status) => {\n dispatch(setEnteredProfession(status));\n },\n onSetLoginStatus: (status) => {\n dispatch(setLoginStatus(status));\n },\n onSubmitSupplementalUserData: () => {\n dispatch(submitSupplementalUserData());\n },\n loadFavorites: (favorites) => {\n dispatch(loadFavorites(favorites));\n },\n loadFollowing: (following) => {\n dispatch(loadFollowing(following));\n },\n loadSubscriptionData: (subscriptionData, isLoggedIn) => {\n dispatch(loadSubscriptionData(subscriptionData, isLoggedIn));\n },\n loadCurrency: (currency) => {\n dispatch(loadCurrency(currency));\n },\n loadCountry: (country) => {\n dispatch(loadCountry(country));\n },\n onSetAppliedFilters: (locationQuery) => {\n dispatch(setAppliedFilters(locationQuery));\n },\n onSetNotFiltered: () => {\n dispatch(setNotFiltered());\n },\n showNotificationSuccess: (timer) => {\n if (timer) {\n setTimeout(() => {\n dispatch(showNotificationSuccess(timer));\n setTimeout(() => {\n dispatch(animateInTooltip());\n }, 10);\n }, 4000);\n } else {\n dispatch(showNotificationSuccess());\n dispatch(animateInTooltip());\n }\n },\n hideNotificationSuccess: () => {\n dispatch(animateOutTooltip());\n dispatch(hideNotificationSuccess());\n },\n showSigninSuccess: (firstName) => {\n setTimeout(() => {\n dispatch(showSigninSuccess(firstName));\n setTimeout(() => {\n dispatch( animateInTooltip() );\n setTimeout(() => {\n dispatch( animateOutTooltip() );\n setTimeout(() => {\n dispatch(hideSigninSuccess());\n }, 400);\n }, 4000);\n }, 10);\n }, 400);\n },\n});\n\n// Map redux states to local props.\nconst mapStateToProps = (state) => ({\n});\n\n// Wrap the component to inject dispatch and state into it\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(SignInForm);\n","import React from 'react';\nimport A from '../../components/A';\n\nclass StripePaymentsBanner extends React.Component {\n render() {\n return (\n
\n \"Secure\n
\n );\n }\n}\n\nexport default StripePaymentsBanner;"],"sourceRoot":""}