{"version":3,"sources":["../../../../Shop/Common/Scripts/helpers.js","../../../../Shop/Common/Scripts/CartViewModel.js","../../../../Shop/Account/Scripts/AccountAddressViewModel.js","../../../../Shop/Account/Scripts/AccountAddress/AccountAddressViewModel_IT.js","../../../../Shop/Account/Scripts/AccountAddress/AccountAddressViewModel_NL.js","../../../../Shop/Account/Scripts/AccountAddress/AccountAddressViewModel_TR.js","../../../../Shop/Account/Scripts/ContactUsViewModel.js","../../../../Shop/Account/Scripts/account.js","../../../../Shop/Account/Scripts/DistributorEmailViewModel.js","../../../../Shop/Account/Scripts/AccountViewModel.js","../../../../Shop/Common/Scripts/ShopUrls.js","../../../../Shop/Common/Scripts/kendo.custombindings.js","../../../../Shop/Common/Scripts/kendo.HGMapsAutocomplete.js","../../../../Shop/Common/Scripts/main.js","../../../../Shop/Common/Scripts/vendors/moment.min.js","../../../../Shop/Common/Scripts/vendors/jquery.mask.min.js","../../../../Shop/Account/Scripts/main.js","../../../../Shop/Account/Scripts/ShopUrls.js"],"names":["SendToPrint","window","print","PreventPasteEvent","e","preventDefault","myKeyPress","keynum","event","keyCode","which","String","fromCharCode","GetInputValue","i","inputValue","value","keyPressed","MaxLengthCheck","object","length","max","slice","InputValuesCheck","currentValue","newValue","parseInt","maxValue","minValue","min","sel","getSelection","toString","replace","key","SetInputDefault","IsNumeric","ctrlKey","returnValue","regex","test","indexOf","OnlyNumbers","MyScrollTo","duration","$","animate","scrollTop","offset","top","ScrollInElement","selector","SanitizeString","str","trim","removeDiacritics","CleanString","SetFocus","jQuery","focus","MaxAttrCheck","parseFloat","MaxLengthAttrCheck","maxLength","ZeroCheck","zeroAndMaxCheck","GetKendoWindow","kendo","data","tokenizeHeader","type","Shop","_types","_token","AntiforgeryToken","toUpperCase","RequestVerificationToken","GetDisplayName","_name","recipient","firstName","lastName","GetFullAddress","_street","line1","line2","line3","_usaddress","city","stateProvinceTerritory","postalCode","countyDistrictOther","countyDistrict","Localization","countyDistrictOption","country","_usaddressJP","_streetJP","line4","address","GetPrimaryAddress","isPrimary","SpecialChars","_key","_code","charCode","_allowedKeys","RegExp","OnInputKeyPress","_pattern","Localizer","TrimTextboxContent","val","showPasswordHelpText","document","getElementById","style","display","toggle_password","ctrlname","className","setAttribute","classList","remove","add","innerHTML","hidepassword","showpassword","GetSearchAddress","_address","suggestion","GetValueFromProperty","field","props","Object","keys","GetFieldValue","input","CartViewModel","this","CartDetails","CartSkus","CartItemsCounter","CartItems","DataSource","GlobalError","load","that","_IsLogged","IsLoggedIn","simpleMediator","attachTo","subscribe","ApplyCartCoupon","couponCode","callback","toBlock","_promise","_body","$type","Code","CommonMethods","ProcessRequest","ShopUrls","CartAPI","JSON","stringify","Progress","done","status","jXHR","publish","always","fail","response","message","_status","ClearCartItems","_CountCartItems","products","GetActiveCart","set","SetItemsInfo","AddItemsToCart","items","RemoveItemFromCart","sku","RemoveCartItemAPI","_cartDetails","get","_itemsInCart","cartItems","forEach","item","quantity","AccountAddressViewModel","isSet","isDataNull","undefined","uniqueValues","index","self","DeletedCorrectly","DisplayName","EditMode","ErrorMessage","ErrorOnSave","ErrorExpPhone","ErrorOnExpSearch","FullAddress","SavedCorrectly","SavedNotExpValidPhone","ShippingAddress","States","TheAddress","Cities","CountyDistricts","ZipCodes","Area","CityWithStateList","Counties","DisplayAbbreviationList","Coloniavisible","CurrentPostalCode","CurrentLine4","AllowSendSms","ContinueMessage","WarningMessage","ShowNotificationsContainer","ToValidate","District","Subdistrict","AddressValidated","SavedAddresses","schema","model","id","_self","ValidateAddressData","transport","read","dataType","url","AddressAPI","contentType","sort","dir","requestStart","requestEnd","error","_Self","viewModelHelpers","wire","getInstance","eCode","xhr","IsCart","isCartVertical","SetStatusForSavingAddress","AccountCountryConfig","RequestStateLookupNeeded","RequestStatesLookup","RequestStateNeeded","RequestStates","InitAddressFormRules","BindAddressFormValidator","ZipCodeValidation","_form","GetElement","KValidator","KValidatorMessages","AddressFormRules","AddNewAddress","FetchShippingAddress","_zipCode","zipcode","ValidateZipCode","is","CountryCode","ShowHideEmailFormOnCartPage","AddressModelMaker","IsAdding","ResetMessages","SetEditMode","_cities","shift","attr","show","hide","CloseForm","GetKendoValidator","hideErrors","hideMessages","HideErrorsAddress","css","removeClass","IsAVSAddressValidationEnabled","ChangeAddress","_savedAddresses","_data","then","CloseModal","currentTarget","dataset","windowTarget","_w","SetShippingAddress","close","OpenModal","AbleToDelete","center","open","_addresses","DeleteAddress","_addressData","_toBlock","parentElement","DeleteAddressAPI","toAddressViewModel","EditAddress","toNewAddressViewModel","_requestFunctionName","RequestAddressFunction","IsEditing","validate","functions","split","RequestColoniCityAndStatesByZip","ResetCity","getCity","cityOption","zipOption","ResetDistrict","_districts","districtoption","districtOption","isDisabled","push","ResetSubdist","_subdistricts","subdistoption","subdistrictOption","RequestZipByCounty","_type","_params","encodeURI","Shipping","_i","_length","_zipcodes","zipcodeOption","countyOption","RequestCities","cityoption","RequestCounties","ResetCounties","RequestCitiesLookup","AccountShippingUrl","RequestDistrictLookup","RequestSubdistLookup","subdistrictoption","RequestPostalCodeLookup","RequestZipsAndStreetsForCity","RequestStreetsForCity","RequestZipsForCity","apiUrl","_zipcode","zipCodeOption","_area","areaOption","_counties","countyoption","RequestZipCodes","ResetZipCode","RequestZips","_zips","zipoption","_e","disallowedStates","_j","_states","stateoption","stateOption","isDisallowedStatesAvailable","removeStatesIndex","splice","RequestStatesByZip","_callback","state","RequestInfoAddressByZip","RequestCitiesByZip","RequestCitiesAndStatesByZip","_CityWithStateList","filter","_strZipCode","Locale","substring","HideSuggestionsList","CheckForNumbersInNames","fName","lName","fullName","match","flName","digitsLastName","digitsFullName","join","Save","_streetbox","streetBox","poboxregexHCBox","streetHCBoxValues","allowedHCBoxKeywordsInAddress","k","hasHCBox","hasAllowedWord","boxregex","poboxregexBox","poboxregexOnlyBox","streetBoxValues","allowedBoxKeywordsInAddress","counter","hasBox","hasBoxWood","street","street2","poboxRestrictionRegex","poboxNonRestrictedStateList","toLowerCase","validatePOBox","stateList","_url","SetGlobalError","_toValidate","statusCode","SetPrimaryTag","fromAddressViewModel","insert","pushUpdate","_addressUpdate","PublishAddressUpdateEvt","sync","property","responseJSON","location","href","ShowWarningErrorMessagesForUsPr","UpdateCurrentAddressWithResponse","_total","total","j","_theAddress","at","addressUpdate","Array","fusionAddressType","clubType","isAVSValid","isValidAddress","_blocked","_modal","_shouldShowModal","messageType","_warningMessage","AddressErrors","warning","elementMatching","_continueMessage","continueButton","_matching","_blockedMessages","block","CloseAddressModal","ContinueWithWarning","SelectAddress","_selectedAddress","DaumAddressSearch","currentScroll","Math","body","documentElement","elementWrap","daum","Postcode","oncomplete","sido","sigungu","roadAddress","zonecode","focusout","onresize","size","height","width","embed","IsSavingAddress","OpenAbbreviationList","CloseAbbreviationList","ChangeState","SelectedCity","RequestCitiesCountiesAndZips","RequestInfoAddressMuncipalityByZip","_colonia","neighbourhood","label","stateCode","OnColoniaChange","ShowLine4","_defaultAddress","_hasSavedAddresses","shippingAddress","_isDefaultAddressValid","ShoppingCartViewModel","Email","displayName","fullAddress","visible","RequestAddressNicknameCitiesAndStatesByZip","_streetnumber","_nickname","State","nickname","RequestInfoAddressWithStreetByZip","GetShippingUrl","param","AddressesDataSource","parse","_dsList","parameterMap","action","countryCode","filterValue","OnClickSearchAddresses","RequestStatesByCourierTable","SearchAddress","_search","_countryCode","ISO_3_CountryCode","ExperianApi","ExperianTokenKey","ajax","success","result","results","OnSearchAddress","_class","format","addClass","array","components","_street2","addressLine2","_state","province","_city","locality","_neighbourhood","locality2","_poboxnumber","_streetName","_buildingName","_suiteNumber","street1","deliveryService1","building1","streetNumber1","streetNumber2","locality1","provinceCode1","postalCode1","subBuilding1","addressLine1","blur","HideAddressFormErrors","_validator","LoadAddressList","SelectCurrentPickupAddress","getCurrentAddress","zipCode","addressType","AccountAddressViewModel_IT","call","DataForSelectedAddress","isExperianAddressValidated","GetStateCode","HoldSelectedAddress","dataForSelectedAddress","UpdatedAddress","UpdateDataSourceWithIncomingData","ShowAddressErrors","HideVerifiedWarningMessage","IsExperianAddressValidated","IsExperianAddressVerificationEnabled","required","RequiredValidation","pattern","PatternValidation","Messages","RequiredPostalCode","RequiredState","RequiredStreet","InvalidPostalCode","_value","stateName","StateCodeList","GetStateName","AGRIGENTO","ALESSANDRIA","ANCONA","AOSTA","ASCOLI PICENO","LAQUILA","AREZZO","ASTI","AVELLINO","BARI","BERGAMO","BIELLA","BELLUNO","BENEVENTO","BOLOGNA","BRINDISI","BRESCIA","BARLETTA-ANDRIA-TRANI","BOLZANO","CAGLIARI","CAMPOBASSO","CASERTA","CHIETI","CALTANISSETTA","CUNEO","COMO","CREMONA","COSENZA","CATANIA","CATANZARO","ENNA","FORLÌ-CESENA","FERRARA","FOGGIA","FIRENZE","FERMO","FROSINONE","GENOVA","GORIZIA","GROSSETO","IMPERIA","ISERNIA","CROTONE","LECCO","LECCE","LIVORNO","LODI","LATINA","LUCCA","MONZA E BRIANZA","MACERATA","MESSINA","MILANO","MANTOVA","MODENA","MASSA","MATERA","NAPOLI","NOVARA","NUORO","ORISTANO","PALERMO","PIACENZA","PADOVA","PESCARA","PERUGIA","PISA","PORDENONE","PRATO","PARMA","PISTOIA","PESARO E URBINO","PAVIA","POTENZA","RAVENNA","REGGIO DI CALABRIA","REGGIO NELL'EMILIA","RAGUSA","RIETI","ROMA","RIMINI","ROVIGO","SALERNO","SIENA","SONDRIO","LA SPEZIA","SIRACUSA","SASSARI","SUD SARDEGNA","SAVONA","TARANTO","TERAMO","TRENTO","TORINO","TRAPANI","TERNI","TRIESTE","TREVISO","UDINE","VARESE","VERBANO-CUSIO-OSSOLA","VERCELLI","VENEZIA","VICENZA","VERONA","VITERBO","VIBO VALENTIA","CARBONIA IGLESIAS","OGLIASTRA","OLBIA","AG","AL","AN","AO","AP","AQ","AR","AT","AV","BA","BG","BI","BL","BN","BO","BR","BS","BT","BZ","CA","CB","CE","CH","CI","CL","CN","CO","CR","CS","CT","CZ","EN","FC","FE","FG","FI","FM","FR","GE","GO","GR","IM","IS","KR","LC","LE","LI","LO","LT","LU","MB","MC","ME","MI","MN","MO","MS","MT","NA","NO","NU","OG","OT","OR","PA","PC","PD","PE","PG","PI","PN","PO","PR","PT","PU","PV","PZ","RA","RC","RE","RG","RI","RM","RN","RO","SA","SI","SO","SP","SR","SS","SU","SV","TA","TE","TN","TO","TP","TR","TS","TV","UD","VA","VB","VC","VE","VI","VR","VT","VV","AccountAddressViewModel_NL","IsAddressEdited","UpdateAddressModelBeforeSave","saveAddressModel","AccountAddressViewModel_TR","IsValidAddress","valid","AddStylesForLists","UpdateStylesFor","AddStylesForInputs","element","dataFound","list","marginRight","GetKeyFor","len","AddSelectElement","collection","concat","TRCities","TRCitiesFound","TRDistricts","TRDistrictsFound","TRNeighbourhoods","TRNeighbourhoodsFound","TRPostalCodes","TRStreets","TRStreetsFound","ToShowDowntimeMessage","ErrorCode","SelectOption","OnLoadCitiesForTR","editMode","request","dropdownlists","selectedCity","OnLoadDistrictsForTR","ShowTextBoxes","errorCode","ShowDowntimeMessage","OnSelectCityForTR","ResetDescendantsForCity","_neighbourhoods","_streets","keyForSelectedCity","ValidateAddressForm","selectedDistrict","OnLoadNeighbourhoodsForTR","OnSelectDistrictForTR","ResetDescendantsForDistrict","keyForSelectedDistrict","_dataForPostalCodes","dropdownlists2","selectedNeighbourhood","OnLoadStreetsForTR","SetPostalCode","OnSelectNeighbourhoodForTR","ResetDescendantsForNeighbourhood","indexForSelectedNeighbourhood","selectedIndex","postalCodeForSelectedNeighbourhood","ValidateInput","keyForSelectedNeighbourhood","selectedStreet","OnSelectStreetForTR","keyForSelectedStreet","RequiredPhoneNumber","InvalidPhoneNumber","LoadDataForSelectedAddress","inputName","form","validateInput","ContactUsViewModel","emailRegex","lettersRegex","_validatorRules","onlynumbers","hasClass","phonenumber","minlength","maxlength","email","fieldnames","firstname","lastname","Validate","kform","WindowErrorFunction","errorObject","line","lineno","col","colno","filename","errorMessage","date","Date","locale","splunkLoggingUrl","errorData","sendDataForLoggingForSplunk","Name","Message","LogLevel","Data","DistributorEmailViewModel","LoginEmail","_itsDone","_tempMail","OnLogin","IsCustomerEmailValidationEnabled","CheckEmail","submit","loginEmail","params","DistributorEmail","hasDistributorEmailAddress","OnEnterPress","AccountViewModel","LogoImagePath","_BasePath","GetLogoImagePath","_defaulLogoImage","extend","ProductDetailPage","click","target","prototype","diacritics","context","process","xhrFields","async","headers","cache","uiprogress","isRtl","leftRight","webkitCorrection","containerScrollLeft","loadingImage","imageHeight","imageWidth","container","mask","find","support","browser","scrollLeft","webkit","scrollWidth","abs","prependTo","left","fadeOut","trigger","kendoValidator","kendomessages","kendorules","kendoerrorTemplate","kendoCustomValidator","messages","rules","errorTemplate","dataKendoValidator","getBySelector","TriggerEvent","Browser","isMobile","Android","navigator","userAgent","BlackBerry","iOS","Opera","Windows","any","whatBrowser","Chrome","Firefox","Safari","Explorer","all","dimensions","Height","Width","d","a","TypeError","c","b","Infinity","Element","removeChild","NodeList","HTMLCollection","ui","hasOwnProperty","CustomValidator","Validator","options","name","plugin","onload","apply","arguments","fields","inputs","getElementsByTagName","textareas","onpaste","getAttribute","eval","oninput","previousValue","pasted","addEventListener","attachEvent","binders","Binder","init","bindings","fn","_lookups","path","refresh","lookup","fadeIn","slide","slideDown","slideUp","disableContent","removeAttr","removeElement","shake","position","x","DATABINDING","DATABOUND","CHANGE","gMapsAutocomplete","Widget","o","_changeHandler","proxy","_change","on","google","maps","places","countryrestrictions","types","_input","_options","componentRestrictions","_searchBox","Autocomplete","addListener","_place","getPlace","isEmptyObject","logger","log","events","widget","cr","setValues","coreMvvm","MvvmConfiguration","Activate","t","exports","module","define","amd","moment","_","H","y","F","L","getOwnPropertyNames","g","w","V","G","n","s","E","valueOf","l","Wt","utc","p","_pf","empty","unusedTokens","unusedInput","overflow","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","era","meridiem","rfc2822","weekdayMismatch","A","_d","isNaN","getTime","invalidWeekday","_strict","bigHour","isFrozen","_isValid","I","NaN","q","r","Z","_isAMomentObject","_f","_l","_tzm","_isUTC","_offset","_locale","isValid","z","updateOffset","B","suppressDeprecationWarnings","console","warn","deprecationHandler","Error","stack","Q","J","Function","X","K","pow","substr","ie","localeData","ordinal","re","ae","se","te","invalidDate","longDateFormat","ne","lastIndex","oe","ue","h","Ye","De","f","m","ceil","floor","M","isFinite","v","Se","Oe","be","We","Re","Ue","Ce","getUTCMilliseconds","getMilliseconds","getUTCSeconds","getSeconds","getUTCMinutes","getMinutes","getUTCHours","getHours","getUTCDate","getDate","getUTCDay","getDay","getUTCMonth","getMonth","getUTCFullYear","getFullYear","setUTCMilliseconds","setMilliseconds","setUTCSeconds","setSeconds","setUTCMinutes","setMinutes","setUTCHours","setHours","setUTCDate","setDate","month","setUTCFullYear","setFullYear","He","Ae","monthsParse","year","setUTCMonth","setMonth","Ie","je","monthsShort","months","_monthsRegex","_monthsShortRegex","_monthsStrictRegex","_monthsShortStrictRegex","Ze","ze","UTC","qe","$e","dayOfYear","Be","N","week","Je","st","u","day","weekdaysMin","weekdaysShort","weekdays","_weekdaysRegex","_weekdaysShortRegex","_weekdaysMinRegex","_weekdaysStrictRegex","_weekdaysShortStrictRegex","_weekdaysMinStrictRegex","it","hours","rt","minutes","_meridiemParse","dt","ht","ct","ot","W","_abbr","require","ft","P","mt","ut","abbr","_config","parentLocale","lt","config","_t","_a","Y","S","D","O","T","Te","_overflowDayOfYear","_overflowWeeks","xe","_overflowWeekday","Ne","Yt","yt","exec","gt","pt","kt","wt","xt","St","Le","Ot","vt","Xe","Dt","bt","Tt","now","_useUTC","GG","R","_week","dow","doy","gg","_dayOfYear","_nextDay","ISO_8601","RFC_2822","_meridiem","meridiemHour","isPM","erasConvertYear","Nt","preparse","score","Mt","createFromInputFallback","hour","minute","second","millisecond","Pt","Ct","quarter","isoWeek","Rt","_milliseconds","_days","_months","_bubble","Ut","Ht","round","Ft","utcOffset","Vt","Lt","Gt","clone","setTime","local","Et","getTimezoneOffset","At","C","ms","milliseconds","It","jt","Zt","isBefore","zt","from","to","isAfter","qt","$t","Bt","Jt","Qt","Xt","Kt","tn","nn","en","sn","rn","erasAbbrRegex","an","eras","narrow","_erasRegex","_erasNameRegex","_erasAbbrRegex","_erasNarrowRegex","un","dn","hn","cn","mn","yn","gn","wn","pn","kn","as","Mn","On","Yn","ss","relativeTime","Tn","xn","bn","asSeconds","toFixed","some","momentProperties","ee","dates","days","weekday","isoweekdays","isoweekday","DDD","dayofyears","dayofyear","quarters","seconds","weekyears","weekyear","isoweekyears","isoweekyear","weeks","isoweeks","isoweek","years","le","isoWeekday","weekYear","isoWeekYear","de","he","ce","fe","me","ye","ge","we","pe","ke","Me","ve","parseTwoDigitYear","Pe","monthsShortRegex","monthsRegex","Fe","Ve","Ge","Ee","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","weekdaysParse","Qe","Ke","et","tt","nt","_isPm","calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","LTS","LL","LLL","LLLL","dayOfMonthOrdinalParse","future","past","mm","hh","dd","ww","MM","yy","meridiemParse","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","invalid","defaultFormat","defaultFormatUtc","erasNameRegex","erasNarrowRegex","erasParse","_eraYearOrdinalRegex","eraYearOrdinalParse","_dayOfMonthOrdinalParse","_ordinalParse","_dayOfMonthOrdinalParseLenient","ln","startOf","calendarFormat","diff","endOf","isUtc","postformat","humanize","fromNow","toNow","invalidAt","isBetween","isSame","isSameOrAfter","isSameOrBefore","lang","parsingFlags","unit","priority","subtract","toArray","toObject","toDate","toISOString","inspect","isLocal","Symbol","toJSON","unix","creationData","isUTC","strict","eraName","since","until","eraNarrow","eraAbbr","eraYear","isLeapYear","daysInMonth","isoWeeks","weeksInYear","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","_changeInProgress","parseZone","hasAlignedHourOffset","isDST","isUtcOffset","zoneAbbr","zoneName","zone","isDSTShifted","_isDSTShifted","_calendar","_longDateFormat","map","_invalidDate","_ordinal","_relativeTime","pastFuture","source","_eras","isFormat","standalone","_monthsShort","_monthsParseExact","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","firstDayOfYear","firstDayOfWeek","_weekdays","_weekdaysMin","_weekdaysShort","_weekdaysParseExact","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","_fullWeekdaysParse","charAt","langData","_n","vn","Dn","Sn","U","asMilliseconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","assign","toIsoString","version","isDate","isMoment","isDuration","defineLocale","updateLocale","locales","normalizeUnits","relativeTimeRounding","relativeTimeThreshold","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","DATE","TIME","TIME_SECONDS","TIME_MS","WEEK","MONTH","$jscomp","scope","findInternal","defineProperty","defineProperties","getGlobal","global","polyfill","configurable","writable","getCaret","selection","selectionStart","appVersion","createRange","moveStart","text","setCaret","setSelectionRange","createTextRange","collapse","moveEnd","select","jMaskGlobals","useInput","behaviour","setTimeout","keydown","keyup","selectOnFocus","clearIfNotMatch","getRegexMask","translation","optional","recursive","digit","destroyEvents","off","calculateCaretPosition","inArray","byPassKeys","getMasked","callbacks","reverse","fallback","getCleanVal","getMaskedVal","placeholder","maskWatchers","createElement","watchInterval","watchInputs","each","clearInterval","setInterval","masked","unmask","removeData","cleanVal","applyDataMask","maskElements","dataMaskAttr","dataMask","watchDataMask","0","9","#","Zepto","includes","search","start","SOASTA","ab_test","EmailComplianceAPI","BasasoftAPI","ready","removeAttribute","$this"],"mappings":"AAEA,QAASA,eACLC,OAAOC,QAIX,QAASC,mBAAkBC,GACvBA,EAAEC,iBAGN,QAASC,YAAWF,GAChB,GAAIG,OAaJ,OAVIN,QAAOO,MAEPD,OAASH,EAAEK,QAEJL,EAAEM,QAETH,OAASH,EAAEM,OAIRC,OAAOC,aAAaL,QAO/B,QAASM,eAAcC,EAAGV,GACtB,GAAIW,YAAaD,EAAEE,MACfC,WAAaX,WAAWF,EAG5B,OADAW,aAAcE,WAIlB,QAASC,gBAAeC,OAAQX,OAC5B,GAAIO,YAAaF,cAAcM,OAAQX,MACnCO,YAAWK,OAASD,OAAOE,IAAID,SAE/BD,OAAOH,MAAQG,OAAOH,MAAMM,MAAM,EAAGH,OAAOE,IAAID,SAMxD,QAASG,kBAAiBJ,OAAQX,OAC9B,GAAIgB,cAAeL,OAAOH,MACtBS,SAAWC,SAASb,cAAcM,OAAQX,QAC1CmB,SAAWD,SAASP,OAAOE,IAAK,IAChCO,SAAWF,SAASP,OAAOU,IAAK,IAChCC,IAAM7B,OAAO8B,eAAeC,UAEhC,OAAIF,OAAQN,eAIDM,KAEPL,SAAWD,aAAaS,QAAQH,IAAK,IACrCL,SAAWC,SAAUD,SAAWjB,MAAM0B,IAAM,KACxCT,UAAYE,UAAYF,UAAYG,WAEpCpB,MAAMH,kBAGH,SAGPoB,SAAWE,UAAYF,SAAWG,WAElCpB,MAAMH,mBAMd,QAAS8B,iBAAgBhB,QACrB,GAAIJ,YAAaI,OAAOH,MACpBY,SAAWF,SAASP,OAAOU,IAEZ,MAAfd,aAEAI,OAAOH,MAAQY,UAKvB,QAASQ,WAAUhC,EAAGe,QAClB,GAAIX,OAAQJ,GAAKH,OAAOO,MACpB0B,IAAM1B,MAAMC,SAAWD,MAAME,KACjC,IAAsB,IAAlBF,MAAMC,SAAmC,KAAlBD,MAAMC,SAAoC,KAAlBD,MAAMC,SACnC,KAAlBD,MAAMC,SAAoC,KAAlBD,MAAMC,SAAoC,IAAlBD,MAAMC,SAAmC,KAAlBD,MAAMC,SAC5ED,MAAM6B,SAAmB,KAARH,IAIlB,MADA1B,OAAM8B,aAAc,GACb,CAIXJ,KAAMvB,OAAOC,aAAasB,IAC1B,IAAIK,OAAQ,aACPA,MAAMC,KAAKN,MACXf,QAAkB,MAARe,KAAgC,KAAjBf,OAAOH,OAChCG,QAAkB,MAARe,KAAef,OAAOH,MAAMyB,QAAQ,MAAQ,KAEvDjC,MAAM8B,aAAc,EAChB9B,MAAMH,gBAENG,MAAMH,kBAOlB,QAASqC,aAAYtC,GACjB,GAAII,OAAQJ,GAAKH,OAAOO,MACpB0B,IAAM1B,MAAMC,SAAWD,MAAME,KACjC,UAAsB,IAAlBF,MAAMC,SAAmC,KAAlBD,MAAMC,SAAoC,KAAlBD,MAAMC,SACnC,KAAlBD,MAAMC,SAAoC,KAAlBD,MAAMC,SAAoC,KAAlBD,MAAMC,SACpC,KAAlBD,MAAMC,SAAoC,IAAlBD,MAAMC,SAAoC,KAAlBD,MAAMC,SAA+B,KAAbD,MAAM0B,KAC7E1B,MAAM6B,SAAmB,KAARH,QAIXA,IAAM,IAAMA,IAAM,IAWjC,QAASS,YAAWvC,EAAGwC,UACnBC,EAAE,cAAcC,SACZC,UAAWF,EAAEzC,GAAG4C,SAASC,KAC1BL,UAGP,QAASM,iBAAgBC,SAAUP,UAC/BC,EAAEM,UAAUL,SAAUC,UAAW,GAAKH,UA4C1C,QAASQ,gBAAeC,KAOpB,MANAA,KAAMA,IAAIC,OACLC,mBACAtB,QAAQ,qBAAsB,IAC9BA,QAAQ,oBAAqB,KAC7BqB,OAKT,QAASE,aAAYH,KASjB,MARAA,KAAMA,IAAIC,OACLrB,QAAQ,SAAU,IAClBA,QAAQ,QAAS,IACjBA,QAAQ,QAAS,IACjBA,QAAQ,UAAW,IACnBA,QAAQ,UAAW,IACnBA,QAAQ,kBAAmB,IAKpC,QAASwB,UAASN,UACdO,OAAOP,UAAUQ,QAGrB,QAASC,cAAazC,QAClB,GAAIJ,YAAa8C,WAAW1C,OAAOH,OAC/BW,SAAWkC,WAAW1C,OAAOE,IAC7BN,YAAaY,WAEbR,OAAOH,MAAQG,OAAOH,MAAMM,MAAM,EAAGH,OAAOH,MAAMI,OAAS,IAKnE,QAAS0C,oBAAmB3C,QACpBA,OAAOH,MAAMI,OAASD,OAAO4C,YAE7B5C,OAAOH,MAAQG,OAAOH,MAAMM,MAAM,EAAGH,OAAO4C,YAKpD,QAASC,WAAU7C,QACXA,OAAOH,MAAMI,OAAS,GAAsB,OAAjBD,OAAOH,QAElCG,OAAOH,MAAQ,KAKvB,QAASiD,iBAAgB9C,QACrB6C,UAAU7C,QACV2C,mBAAmB3C,QACnByC,aAAazC,QAGjB,QAAS+C,gBAAef,UACpB,MAAOgB,OAAMT,OAAOP,UAAUiB,KAAK,eAEvC,QAASC,gBAAeC,MACpBC,KAAOA,QACP,IAAIC,SAAU,OAAQ,MAAO,QAAS,UAClCC,OAASF,KAAKG,gBAElB,OADAJ,MAAOA,KAAKK,cACJH,OAAO/B,QAAQ6B,YAAkBM,yBAA4BH,WAuOzE,QAASI,gBAAeT,MACpB,GAAIU,OAAQ,EAKZ,OAHAA,OAAQV,KAAKW,YACRX,KAAKY,UAAYZ,KAAKY,WAAaZ,KAAKa,SAAW,IAAMb,KAAKa,SAAW,IAAM,IAE5EH,MAAQA,OAAS,IAAM,GAGnC,QAASI,gBAAed,MACpB,GAAIe,UAAYf,KAAKgB,OAAwB,OAAfhB,KAAKgB,MAAkBhB,KAAKgB,MAAQ,IAAM,KAClEhB,KAAKiB,OAAwB,OAAfjB,KAAKiB,MAAkBjB,KAAKiB,MAAQ,IAAM,KACxDjB,KAAKkB,OAAwB,OAAflB,KAAKkB,MAAkBlB,KAAKkB,MAAQ,IAAM,IAE1DC,YAAenB,KAAKoB,MAAsB,OAAdpB,KAAKoB,KAAiBpB,KAAKoB,KAAO,KAAO,KACnEpB,KAAKqB,wBAA0D,OAAhCrB,KAAKqB,uBAAmCrB,KAAKqB,uBAAyB,IAAM,KAC3GrB,KAAKsB,YAAkC,OAApBtB,KAAKsB,WAAuBtB,KAAKsB,WAAa,IAEnEC,oBAAwBvB,KAAKwB,gBAA0C,OAAxBxB,KAAKwB,gBAA2BxB,KAAKwB,gBAAkBrB,KAAKsB,aAAaC,qBAAwB1B,KAAKwB,eAAiB,KAAO,EAMjL,IAJoB,MAAhBxB,KAAK2B,SACDZ,UAAWA,SAAW,SAGT,OAAjBf,KAAK2B,QACL,MAAOZ,SAAUI,UAGrB,IAAqB,OAAjBnB,KAAK2B,QAAkB,CACvB,GAAIC,eAAiB5B,KAAKsB,YAAkC,OAApBtB,KAAKsB,WAAuBtB,KAAKsB,WAAa,KAAO,KACvFtB,KAAKqB,wBAA0D,OAAhCrB,KAAKqB,uBAAmCrB,KAAKqB,uBAAyB,KAAO,KAC5GrB,KAAKoB,MAAsB,OAAdpB,KAAKoB,KAAiBpB,KAAKoB,KAAO,KAAO,KACtDpB,KAAKwB,gBAA0C,OAAxBxB,KAAKwB,eAA2BxB,KAAKwB,eAAiB,KAAO,IAEtFK,WAAc7B,KAAKgB,OAAwB,OAAfhB,KAAKgB,MAAkBhB,KAAKgB,MAAQ,KAAO,KACrEhB,KAAKiB,OAAwB,OAAfjB,KAAKiB,MAAkBjB,KAAKiB,MAAQ,IAAM,GAE9D,OAAOW,cAAe,QAAUC,UAGpC,GAAqB,OAAjB7B,KAAK2B,QACL,MAAOZ,SACH,qBACEf,KAAKoB,MAAsB,OAAdpB,KAAKoB,KAAiBpB,KAAKoB,KAAO,KAAO,KACtDpB,KAAKqB,wBAA0D,OAAhCrB,KAAKqB,uBAAmCrB,KAAKqB,uBAAyB,KAAO,KAC5GrB,KAAK8B,OAAwB,OAAf9B,KAAK8B,MAAkB9B,KAAK8B,MAAQ,KAAO,KACzD9B,KAAKsB,YAAkC,OAApBtB,KAAKsB,WAAuBtB,KAAKsB,WAAa,GAG3E,IAAqB,OAAjBtB,KAAK2B,QACL,MAAOZ,SAAS,UACVf,KAAK8B,OAAwB,OAAf9B,KAAK8B,MAAkB9B,KAAK8B,MAAQ,KAAO,KACzD9B,KAAKwB,gBAA0C,OAAxBxB,KAAKwB,eAA2BxB,KAAKwB,eAAiB,KAAO,IAAM,SAC1FxB,KAAKoB,MAAsB,OAAdpB,KAAKoB,KAAiBpB,KAAKoB,KAAO,KAAO,KACtDpB,KAAKqB,wBAA0D,OAAhCrB,KAAKqB,uBAAmCrB,KAAKqB,uBAAyB,KAAO,KAC5GrB,KAAKsB,YAAkC,OAApBtB,KAAKsB,WAAuBtB,KAAKsB,WAAa,GAG3E,IAAqB,OAAjBtB,KAAK2B,QACL,MAAO,IACD3B,KAAKkB,OAAwB,OAAflB,KAAKkB,MAAkBlB,KAAKkB,MAAQ,KAAO,KACzDlB,KAAK8B,OAAwB,OAAf9B,KAAK8B,MAAkB9B,KAAK8B,MAAQ,UAAY,KAC9D9B,KAAKiB,OAAwB,OAAfjB,KAAKiB,MAAkBjB,KAAKiB,MAAQ,KAAO,KACzDjB,KAAKgB,OAAwB,OAAfhB,KAAKgB,MAAkBhB,KAAKgB,MAAQ,UAAY,KAC9DhB,KAAKoB,MAAsB,OAAdpB,KAAKoB,KAAiBpB,KAAKoB,KAAO,KAAO,KACtDpB,KAAKqB,wBAA0D,OAAhCrB,KAAKqB,uBAAmCrB,KAAKqB,uBAAyB,KAAO,KAC5GrB,KAAKsB,YAAkC,OAApBtB,KAAKsB,WAAuBtB,KAAKsB,WAAa,GAG3E,IAAqB,OAAjBtB,KAAK2B,QACL,MAAO,IACD3B,KAAKgB,OAAwB,OAAfhB,KAAKgB,MAAkBhB,KAAKgB,MAAQ,KAAO,KACzDhB,KAAKiB,OAAwB,OAAfjB,KAAKiB,MAAkBjB,KAAKiB,MAAQ,UAAY,KAC9DjB,KAAKoB,MAAsB,OAAdpB,KAAKoB,KAAiBpB,KAAKoB,KAAO,KAAO,IACxD,cACEpB,KAAKsB,YAAkC,OAApBtB,KAAKsB,WAAuBtB,KAAKsB,WAAa,GAG3E,IAAqB,OAAjBtB,KAAK2B,QAAkB,CACvB,GAAII,UAAY/B,KAAKwB,gBAA0C,OAAxBxB,KAAKwB,eAA2BxB,KAAKwB,eAAiB,IAAM,KAC7FxB,KAAKgB,OAAwB,OAAfhB,KAAKgB,MAAkBhB,KAAKgB,MAAQ,GAAK,IAAM,SAC7DhB,KAAKiB,OAAwB,OAAfjB,KAAKiB,MAAkBjB,KAAKiB,MAAQ,IAAM,IAAM,SAC9DjB,KAAKqB,wBAA0D,OAAhCrB,KAAKqB,uBAAmCrB,KAAKqB,uBAAyB,IAAM,KAC3GrB,KAAKoB,MAAsB,OAAdpB,KAAKoB,KAAiBpB,KAAKoB,KAAO,IAAM,KACrDpB,KAAKsB,YAAkC,OAApBtB,KAAKsB,WAAuBtB,KAAKsB,WAAa,GACvE,OAAOS,SAIX,MAAOhB,SACH,qBACEf,KAAKoB,MAAsB,OAAdpB,KAAKoB,KAAiBpB,KAAKoB,KAAO,KAAO,KACtDpB,KAAKqB,wBAA0D,OAAhCrB,KAAKqB,uBAAmCrB,KAAKqB,uBAAyB,IAAM,KAC3GrB,KAAKsB,YAAkC,OAApBtB,KAAKsB,WAAuBtB,KAAKsB,WAAa,IAI3E,QAASU,mBAAkBhC,MAEvB,GAAIA,KAAKhD,OAAS,EAAG,CAGjB,IAFA,GAAIN,GAAI,EAEDA,EAAIsD,KAAKhD,OAAQN,IAEpB,GAAIsD,KAAKtD,GAAGuF,UAER,MAAOjC,MAAKtD,EAMpB,OAAOsD,MAAK,GAIhB,SAEJ,QAASkC,cAAalG,EAAGe,QAErB,GAAIoF,MAAOnG,EAAEM,OAASN,EAAEK,SAAW,EAC/B+F,MAASpG,EAAEqG,SAAqBrG,EAAEqG,SAAZrG,EAAEM,MAExBgG,cAAgB,EAAG,GACvB,IAAIA,aAAajE,QAAQ8D,aAAiBC,MAEtC,OAAO,CAIX,IAA2B,GAAvBrF,OAAOH,MAAMI,QAAuB,IAARmF,KAG5B,MADAnG,GAAEC,kBACK,CAIX,IAAIkC,OAAQ,GAAIoE,QAAO,oBACnBtD,IAAM1C,OAAOC,aAAa4F,MAC9B,SAAIjE,MAAMC,KAAKa,OAMfjD,EAAEC,kBACK,GAQX,QAASuG,iBAAgBxG,EAAGe,QAExB,GAA2B,GAAvBA,OAAOH,MAAMI,QAA0B,IAAXhB,EAAEM,MAG9B,MADAN,GAAEC,kBACK,CAIX,IAAIwG,UAAW1F,OAAOiD,KAAK,UAE3B,KAAKyC,SAED,OAAO,CAIX,IAAItE,OAAQ,GAAIoE,QAAOE,UACnBxD,IAAM1C,OAAOC,aAAcR,EAAEqG,SAAqBrG,EAAEqG,SAAZrG,EAAEM,MAC9C,SAAI6B,MAAMC,KAAKa,OAMfjD,EAAEC,kBACK,GAsFX,QAASyG,WAAU5E,KAIf,MAHAqC,MAAOA,SACPA,KAAKsB,aAAetB,KAAKsB,iBAElBtB,KAAKsB,aAAa3D,MAAS,WAAaA,IAGnD,QAAS6E,oBAAmB1D,KACxBR,EAAEQ,KAAK2D,IAAIxD,YAAYH,IAAIrC,QAG/B,QAASiG,wBACLC,SAASC,eAAe,iBAAiBC,MAAMC,QAAU,QAG7D,QAASC,iBAAgBC,UACiC,YAAlDL,SAASC,eAAe,aAAaK,WACrCN,SAASC,eAAeI,UAAUE,aAAa,OAAQ,QACvDP,SAASC,eAAe,aAAaO,UAAUC,OAAO,YACtDT,SAASC,eAAe,aAAaO,UAAUE,IAAI,YACnDV,SAASC,eAAe,aAAaU,UAAYtD,KAAKsB,aAAaiC,eAEnEZ,SAASC,eAAeI,UAAUE,aAAa,OAAQ,YACvDP,SAASC,eAAe,aAAaO,UAAUC,OAAO,YACtDT,SAASC,eAAe,aAAaO,UAAUE,IAAI,YACnDV,SAASC,eAAe,aAAaU,UAAYtD,KAAKsB,aAAakC,cAI3E,QAASC,kBAAiB5D,MACtB,GAAI6D,UAAW7D,KAAK8D,UAIpB,OAFID,YAAYA,UAAY,SAErBA,SAGX,QAASE,sBAAqB/D,KAAMgE,OAChC,GAAIpH,OAAQ,IACZ,IAAIoD,MAAQA,KAAKhD,OAAS,GAAKgH,MAC3B,IAAK,GAAItH,GAAI,EAAGA,EAAIsD,KAAKhD,OAAQN,IAAK,CAClC,GAAIuH,OAASC,OAAOC,KAAKnE,KAAKtD,GAC9B,IAAIuH,OAASA,MAAMjH,OAAS,GAAKiH,MAAM,IAAMD,MACzC,MAAOI,eAAcpE,KAAKtD,GAAIsH,OAK1C,MAAOpH,OAGX,QAASwH,eAAcC,MAAOL,OAC1B,MAAOK,OAAML,OCvyBjB,QAASM,iBAELC,KAAKC,aAAc,EACnBD,KAAKE,YACLF,KAAKG,iBAAmB,EACxBH,KAAKI,UAAY,GAAI5E,OAAMC,KAAK4E,YAAa5E,UAC7CuE,KAAKM,aAAc,EAOnBN,KAAKO,KAAO,WACR,GAAIC,MAAOR,KAEPS,UAAY7E,KAAK8E,aAAc,CAC/BD,aACAE,eAAeC,SAASJ,MACxBA,KAAKK,UAAU,iBAAkB,kBACjCL,KAAKK,UAAU,qBAAsB,sBACrCL,KAAKK,UAAU,iBAAkB,kBACjCL,KAAKK,UAAU,kBAAmB,mBAClCL,KAAKK,UAAU,mBAAoB,mBAI3Cb,KAAKc,gBAAkB,SAAUC,WAAYC,SAAUC,SACnD,GAAIC,SACJF,UAAWA,WAAY,EACvBC,QAAUA,SAAW,MAErB,IAAIE,QACAC,MAAS,oFACTC,KAAQN,WAGZG,UAAWI,cAAcC,eAAeC,SAASC,UAAWC,KAAKC,UAAUR,OAAQ,SAE/ED,WAEAI,cAAcM,SAASX,SAAS,GAEhCC,SAASW,KAAK,SAAUpG,KAAMqG,OAAQC,MAElCpB,eAAeqB,QAAQ,mBAAoBvG,MAEvCuF,UAEAA,SAASvF,QAKhBwG,OAAO,WACJX,cAAcM,SAASX,SAAS,KAEnCiB,KAAK,SAAUC,SAAUL,OAAQM,SAC9B,GAAIC,SAAUF,SAASL,MAEnBd,WAEAA,SAASmB,SAAUC,SAIP,MAAZC,SAEA1B,eAAeqB,QAAQ,mBAAmB,EAAMI,QAASD,cAQzEnC,KAAKsC,eAAiB,SAAUtB,SAAUC,SACtC,GAAIC,SACJF,UAAWA,WAAY,EACvBC,QAAUA,SAAW,OAErBC,SAAWI,cAAcC,eAAeC,SAASC,QAAQ,aAAc,KAAM,UAEzEP,WAEAI,cAAcM,SAASX,SAAS,GAEhCC,SAASW,KAAK,SAAUpG,KAAMqG,OAAQC,MAElCpB,eAAeqB,QAAQ,eAAgBO,gBAAgB9G,KAAK+G,WAC5D7B,eAAeqB,QAAQ,mBAAoBvG,MAEvCuF,UAEAA,SAASvF,QAKhBwG,OAAO,WACJX,cAAcM,SAASX,SAAS,KAEnCiB,KAAK,SAAUC,SAAUL,OAAQM,SAC9B,GAAIC,SAAUF,SAASL,MAEnBd,WAEAA,SAASmB,SAAUC,SAIP,MAAZC,SAEA1B,eAAeqB,QAAQ,mBAAmB,EAAMI,QAASD,cAQzEnC,KAAKyC,cAAgB,WACjB,GACIvB,UADAV,KAAOR,IAGXkB,UAAWI,cAAcC,eAAeC,SAASC,WAE7CP,UAEAA,SAASW,KAAK,SAAUpG,KAAMqG,OAAQC,MAElCvB,KAAKkC,IAAI,oBAAqBjH,MAC9B+E,KAAKmC,eACLhC,eAAeqB,QAAQ,mBAAoBvG,MAAM,KAGpDwG,OAAO,cACPC,KAAK,SAAUC,SAAUL,OAAQM,SAC9B,GAAIC,SAAUF,SAASL,MAEP,OAAZO,UAEA7B,KAAKkC,IAAI,eAAe,GACxB/B,eAAeqB,QAAQ,mBAAmB,EAAMI,QAASD,cAQzEnC,KAAK4C,eAAiB,SAAUC,MAAO7B,SAAUC,QAAStF,MACtD,GAAIuF,SACJF,UAAWA,WAAY,EACvBC,QAAUA,SAAW,OACrBtF,KAAOA,MAAQ,OAEfuF,SAAWI,cAAcC,eAAeC,SAASC,UAAWoB,MAAOlH,MAE/DuF,WAEAI,cAAcM,SAASX,SAAS,GAEhCC,SAASW,KAAK,SAAUpG,KAAMqG,OAAQC,MAElCpB,eAAeqB,QAAQ,eAAgBO,gBAAgB9G,KAAK+G,WAC5D7B,eAAeqB,QAAQ,mBAAoBvG,MAEvCuF,UAEAA,SAASvF,QAKhBwG,OAAO,WACJX,cAAcM,SAASX,SAAS,KAEnCiB,KAAK,SAAUC,SAAUL,OAAQM,SAC9B,GAAIC,SAAUF,SAASL,MAEnBd,WAEAA,SAASmB,SAAUC,SAIP,MAAZC,SAEA1B,eAAeqB,QAAQ,mBAAmB,EAAMI,QAASD,cAQzEnC,KAAK8C,mBAAqB,SAAUC,IAAK/B,SAAUC,SAC/C,GAAIC,SACJF,UAAWA,WAAY,EACvBC,QAAUA,SAAW,OAErBC,SAAWI,cAAcC,eAAeC,SAASwB,kBAAkBD,KAAM,KAAM,UAE3E7B,WAEAI,cAAcM,SAASX,SAAS,GAEhCC,SAASW,KAAK,SAAUpG,KAAMqG,OAAQC,MAElCpB,eAAeqB,QAAQ,eAAgBO,gBAAgB9G,KAAK+G,WAC5D7B,eAAeqB,QAAQ,mBAAoBvG,MAEvCuF,UAEAA,SAASvF,QAKhBwG,OAAO,WACJX,cAAcM,SAASX,SAAS,KAEnCiB,KAAK,SAAUC,SAAUL,OAAQM,SAC9B,GAAIC,SAAUF,SAASL,MAEnBd,WAEAA,SAASmB,SAAUC,SAIP,MAAZC,SAEA1B,eAAeqB,QAAQ,mBAAmB,EAAMI,QAASD,cAQzEnC,KAAK2C,aAAe,SAAUlL,GAC1B,GAAI+I,MAAOR,KACPiD,aAAezC,KAAK0C,IAAI,qBACxBC,aAAe,CAEfF,eAAgBA,aAAaT,UAAYS,aAAaT,SAAS/J,OAAS,IAExE0K,aAAeZ,gBAAgBU,aAAaT,UAC5ChC,KAAK0C,IAAI,aAAazH,KAAKwH,aAAaT,WAG5ChC,KAAKkC,IAAI,mBAAoBS,cAE7BxC,eAAeqB,QAAQ,eAAgBmB,cAK3C,IAAIZ,iBAAkB,SAAUa,WAC5B,GAAID,cAAe,CAQnB,OAPIC,YAAaA,UAAU3K,OAAS,GAEhC2K,UAAUC,QAAQ,SAAUC,MACxBH,cAAgBG,KAAKC,WAItBJ,cCxQf,QAASK,2BAw8EL,QAASC,OAAMpL,OAEX,GAAIqL,aAAa,CAMjB,OALc,KAAVrL,OAA0BsL,SAAVtL,OAAiC,OAAVA,QAEvCqL,YAAa,GAGVA,WAmFX,QAASE,cAAavL,MAAOwL,MAAOC,MAChC,MAAOA,MAAKhK,QAAQzB,SAAWwL,MAjiFnC7D,KAAK+D,kBAAmB,EACxB/D,KAAKgE,YAAc,GACnBhE,KAAKiE,UAAW,EAChBjE,KAAKkE,aAAe,GACpBlE,KAAKmE,aAAc,EACnBnE,KAAKoE,eAAgB,EACrBpE,KAAKqE,kBAAmB,EACxBrE,KAAKsE,YAAc,GACnBtE,KAAKM,aAAc,EACnBN,KAAKuE,gBAAiB,EACtBvE,KAAKwE,uBAAwB,EAC7BxE,KAAKyE,iBAAkB,EACvBzE,KAAK0E,UACL1E,KAAK2E,cACL3E,KAAK4E,UACL5E,KAAK6E,mBACL7E,KAAK8E,YACL9E,KAAK+E,QACL/E,KAAKgF,qBACLhF,KAAKiF,YACLjF,KAAKkF,yBAA0B,EAC/BlF,KAAKmF,gBAAiB,EACtBnF,KAAKoF,kBAAoB,GACzBpF,KAAKqF,aAAe,GACpBrF,KAAKsF,aAAe1J,KAAK0J,aACzBtF,KAAKuF,gBAAkB,GACvBvF,KAAKwF,eAAiB,GACtBxF,KAAKyF,4BAA6B,EAClCzF,KAAK0F,YAAa,EAClB1F,KAAK2F,YACL3F,KAAK4F,eACL5F,KAAK6F,kBAAmB,EAGxB7F,KAAK8F,eAAiB,GAAItK,OAAMC,KAAK4E,YAEjC0F,QACIC,OACIC,GAAI,MAERxK,KAAM,SAAU0G,UACZ,MAAO+D,OAAMC,oBAAoBhE,YAGzCiE,WACIC,MACIC,SAAU,OACV3K,KAAM,MACN4K,IAAK/E,SAASgF,WAAW,OACzBC,YAAa,qBAGrBC,MAAQjH,MAAO,YAAakH,IAAK,QACjCC,aAAc,SAAUnP,GACpB6J,cAAcM,SAAS,mBAAmB,IAE9CiF,WAAY,SAAUpP,GAClB6J,cAAcM,SAAS,mBAAmB,IAE9CkF,MAAO,SAAUrP,GACb,GAAIsP,OAAQC,iBAAiBC,KAAKC,YAAY,0BAA2B,UACrEC,MAAQ1P,EAAE2P,IAAItF,MAEJ,OAAVqF,OAEAJ,MAAMrE,IAAI,eAAe,GAI7BqE,MAAMrE,IAAI,uBAMlB,IAAIwD,OAAQlG,IAIZA,MAAKO,KAAO,WACR,GAAIC,MAAOR,IACXqH,QAASC,eACTpB,MAAQ1F,KACRA,KAAK+G,2BAA0B,GAC/BjG,cAAcM,SAAS,mBAAmB,GAC1CN,cAAcM,SAAS,oBAAoB,GAEvC4F,qBAAqBC,2BAGrBjH,KAAKkH,sBAEEF,qBAAqBG,sBAE5BnH,KAAKoH,gBAITpH,KAAKqH,uBACLrH,KAAKsH,4BAIT9H,KAAK6H,qBAAuB,WACxB,GAAIrH,MAAOR,IAEXQ,MAAKuH,qBAIT/H,KAAK8H,yBAA2B,WAE5B,GAAIE,OAAQ1G,cAAc2G,WAAW,gBACrC3G,eAAc4G,WACVF,MACCpM,KAAKuM,uBACLvM,KAAKwM,qBACN,4DAIRpI,KAAK8H,yBAA2B,WAE5B,GAAIE,OAAQ1G,cAAc2G,WAAW,gBACrC3G,eAAc4G,WACVF,MACCpM,KAAKuM,uBACLvM,KAAKwM,qBACN,4DAIRpI,KAAKmG,oBAAsB,SAAUhE,UACjC,GAAI3B,MAAOR,IACX,OAAgB,OAAZmC,UAAwC,IAApBA,SAAS1J,QAE7B+H,KAAK6H,qBAKLhB,QAEA7G,KAAK8H,qBAAqBnG,UAIvBA,WAGXnC,KAAK+H,kBAAoB,WACrB,GAAIvH,MAAOR,KACPuI,SAAWjH,cAAc2G,WAAW,WACxC3G,eAAc4G,WACVK,SACC3M,KAAKuM,wBAEFK,QAAS,SAAU1I,OACf,MAAOU,MAAKiI,gBAAgBF,YAGpC,4DAIRvI,KAAKyI,gBAAkB,SAAU3I,OAC7B,GAAIU,MAAOR,IACX,IAAIF,MAAM4I,GAAG,kBAAmB,CAE5B,GAAIxK,SAYJ,OARIA,UAFqB,OAArBtC,KAAK+M,YAEM7I,MAAMrE,KAAK,WAAa,GAAIuC,QAAO8B,MAAMrE,KAAK,YAAc,UAI5DqE,MAAMrE,KAAK,WAAa,GAAIuC,QAAO8B,MAAMrE,KAAK,YAAc,WAInE+E,KAAK0C,IAAI,mBAAqBhF,SAASrE,KAAKiG,MAAMzB,OAG9D,OAAO,GAGX2B,KAAKqI,cAAgB,SAAU5Q,GAE3B,GAAI+I,MAAOR,IACXQ,MAAKoI,6BAA4B,EACjC,IAAItJ,SAEJA,UAAW,GAAIuJ,oBAAoBnL,WAAW,IAC9C4B,SAASwJ,UAAW,EAEpBtI,KAAKuI,gBACLvI,KAAKkC,IAAI,aAAcpD,UACvBkB,KAAKkC,IAAI,aAEJ8E,qBAAqBG,sBAEtBnH,KAAKkC,IAAI,aAGblC,KAAKwI,aAAY,EACjB,IAAIC,WACJzI,MAAKkC,IAAI,SAAUuG,SACnBzI,KAAKkC,IAAI,kBAAmBuG,QAAQC,SACpC1I,KAAKkC,IAAI,cACTlC,KAAKkC,IAAI,eAEgB,OAArB9G,KAAK+M,aAELzO,EAAE,WAAWiP,KAAK,YAAY,IAKtCnJ,KAAKgJ,YAAc,SAAU3Q,OACzB,GAAImI,MAAOR,IACXQ,MAAKkC,IAAI,WAAYrK,OACjBA,MAEA6B,EAAE,iBAAiBkP,OAInBlP,EAAE,iBAAiBmP,OAGvB1I,eAAeqB,QAAQ,cAAe3J,QAE1C2H,KAAKsJ,UAAY,SAAU7R,GACvB,GAAI+I,MAAOR,IACXQ,MAAKoI,6BAA4B,EACjC,IAAIZ,OAAQ1G,cAAciI,kBAAkB,gBAC5CvB,OAAMwB,aACNxB,MAAMyB,eAENjJ,KAAKkJ,oBACLlJ,KAAKkC,IAAI,iBAAiB,GAC1BlC,KAAKkC,IAAI,iBACTlC,KAAKkC,IAAI,YAAY,GACrBxI,EAAE,iBAAiBmP,OACnB7I,KAAKkC,IAAI,eAAe,GACxBlC,KAAKkC,IAAI,eAAe,GACxBxI,EAAE,aAAamP,OACfnP,EAAE,YAAYyP,IAAI,aAAc,WAChCnJ,KAAKkC,IAAI,qBAAqB,GACmB,IAA7ClC,KAAK0C,IAAI,kBAAkBzH,OAAOhD,SAElC6I,cAAcM,SAAS,mBAAmB,GAC1CN,cAAcM,SAAS,oBAAoB,GAC3C1H,EAAE,YAAYyP,IAAI,aAAc,UAChCnJ,KAAKkC,IAAI,qBAAqB,IAI9B2E,QAEAnN,EAAE,oBAAoB0P,YAAY,YAIlCpC,qBAAqBqC,iCAErBrJ,KAAKkC,IAAI,8BAA8B,IAM/C1C,KAAK8J,cAAgB,SAAUrS,GAC3B,GAAI+I,MAAOR,IACXQ,MAAKoI,6BAA4B,EACjC,IAAImB,iBAAkBvJ,KAAK0C,IAAI,kBAC3B8G,MAAQD,gBAAgBtO,MAC5B+E,MAAKkC,IAAI,cAAc,GAEF,IAAjBsH,MAAMvR,QAENsR,gBAAgB1D,OAAO4D,KAAK,WACxBD,MAAQD,gBAAgBtO,SAKhC+E,KAAKwI,aAAY,GACjBxI,KAAKkC,IAAI,cAAc,IAG3B1C,KAAKkK,WAAa,SAAUzS,GACxB,GAAI+I,MAAOR,IACXQ,MAAKoI,6BAA4B,EACjC,IAAI3C,IAAKxO,EAAE0S,cAAcC,QAAQC,aAC7BC,GAAK/O,eAAe0K,GAExBzF,MAAK+J,uBAELD,GAAGE,SAGPxK,KAAKyK,UAAY,SAAUhT,GACvB,GAAI+I,MAAOR,IACX,IAAIQ,KAAKkK,eAAgB,CAErB,GAAIzE,IAAKxO,EAAE0S,cAAcC,QAAQC,aAC7BC,GAAK/O,eAAe0K,GAExBzF,MAAKuI,gBACLvI,KAAK+J,mBAAmB9S,EAAEgE,MAE1B6O,GAAGK,SAASC,SAKpB5K,KAAK0K,aAAe,WAChB,GAAIlK,MAAOR,KACP6K,WAAarK,KAAK0C,IAAI,kBAAkBzH,MAC5C,OAAQoP,YAAWpS,OAAS,GAGhCuH,KAAK8K,cAAgB,SAAUrT,GAC3B,GAAI+I,MAAOR,KACP+K,aAAevK,KAAK0C,IAAI,mBACxB8H,SAAWvT,EAAE0S,cAAcc,cAE3B/J,SAAWI,cAAcC,eAAeC,SAAS0J,iBAAiBH,aAAa9E,IAAK,KAAM,SAE1F/E,YAEAI,cAAcM,SAASoJ,UAAU,GACjCxK,KAAKkC,IAAI,oBAAoB,GAC7BxB,SAASW,KAAK,SAAUpG,KAAMqG,OAAQC,MAElC,GAAItG,KAAM,CAEN,GAAIsO,iBAAkBvJ,KAAK0C,IAAI,iBAE/B6G,iBAAgB/K,OAAO+L,aAAaI,sBAEpCpB,gBAAgB1D,OAEhB7F,KAAKkC,IAAI,oBAAoB,GAC7BlC,KAAK0J,WAAWzS,MAKnBwK,OAAO,WACJX,cAAcM,SAASoJ,UAAU,KAEpC9I,KAAK,SAAUC,SAAUL,OAAQM,SAC9B,GAAIC,SAAUF,SAASL,MAEP,OAAZO,SAEA1B,eAAeqB,QAAQ,mBAAmB,EAAMI,QAASD,cAQ7EnC,KAAKoL,YAAc,SAAU3T,GACzB,GAAI+I,MAAOR,IAENqH,SAED7G,KAAK+J,mBAAmB9S,EAAEgE,MAI9B+E,KAAKoI,6BAA4B,EAEjC,IAAItJ,UAAWkB,KAAK0C,IAAI,mBAAmBmI,wBACvCC,qBAAuB9D,qBAAqB+D,wBAchD,IAZAjM,SAAW,GAAIuJ,mBAAkBvJ,UACjCA,SAASkM,WAAY,EACrBhL,KAAKuI,gBACLvI,KAAKkC,IAAI,aAAcpD,UACvBkB,KAAKwI,aAAY,GAEQ,OAArBpN,KAAK+M,aAA6C,OAArB/M,KAAK+M,aAElCrH,cAAciI,kBAAkB,iBAAiBkC,WAIjDH,sBAAwBA,qBAAqBxR,QAAQ,QAGrD,IAAK,GADD4R,WAAYJ,qBAAqBK,MAAM,KAClCxT,EAAI,EAAGA,EAAIuT,UAAUjT,OAAQN,IAE9BuT,UAAUvT,IAAoC,kBAAvBqI,MAAKkL,UAAUvT,KAEtCqI,KAAKkL,UAAUvT,UAQnBmT,uBAA8D,kBAA/B9K,MAAK8K,uBAEpC9K,KAAK8K,uBAMTpR,GAAE,eAAezB,OAAS,IAE1B+H,KAAKkC,IAAI,cACTlC,KAAKoL,mCAIgB,OAArBhQ,KAAK+M,aAELzO,EAAE,WAAWiP,KAAK,YAAY,IAMtCnJ,KAAK6L,UAAY,SAAUpU,GACvB,GAAIqU,SAAU9L,KAAKkD,IAAI,oBAAsB,EAC7B,MAAZ4I,SAEA9L,KAAK0C,IAAI,kBAAmB9G,KAAKsB,aAAa6O,YAIlD/L,KAAK0C,IAAI,4BAA6B9G,KAAKsB,aAAaC,qBACxD,IAAI6O,WAAYpQ,KAAKsB,aAAa8O,WAAa,EAC7B,MAAdA,WAEAhM,KAAK0C,IAAI,qBAAsB9G,KAAKsB,aAAa8O,YAIzDhM,KAAKiM,cAAgB,WACjB,GAAIC,eACAC,gBAAmB9T,MAAOuD,KAAKsB,aAAakP,eAAgBC,YAAY,EAC5EH,YAAWI,KAAKH,gBAChBnM,KAAK0C,IAAI,YAAawJ,YACtBlM,KAAK0C,IAAI,4BAA6B,IACtC1C,KAAKuM,gBAETvM,KAAKuM,aAAe,WAChB,GAAIC,kBACAC,eAAkBpU,MAAOuD,KAAKsB,aAAawP,kBAAmBL,YAAY,EAC9EG,eAAcF,KAAKG,eACnBzM,KAAK0C,IAAI,eAAgB8J,eACzBxM,KAAK0C,IAAI,mBAAoB,IAC7B1C,KAAK0C,IAAI,qBAAsB,KAEnC1C,KAAK2M,mBAAqB,SAAUlV,GAChC,GAEIyJ,UAFAV,KAAOR,KACPgL,SAAW,gBAEX4B,MAAQ,MACRC,QAAU,gBAAkBjR,KAAK+M,YAAc,gBAC/CnI,KAAK0C,IAAI,oBAAsB,IAAM1C,KAAK0C,IAAI,mBAAqB,IACnE1C,KAAK0C,IAAI,qBAAuB,0BAEhCzL,IAEA+I,KAAKkC,IAAI,qBAAsB,IAInClC,KAAKkC,IAAI,eAETxB,SAAWI,cAAcC,eAAeuL,UAAUtL,SAASuL,SAASF,UAAW,KAAMD,OAEjF1L,WAEAI,cAAcM,SAASoJ,UAAU,GACjC9J,SAASW,KAAK,SAAUpG,KAAMqG,OAAQC,MAElC,GAAItG,KAAM,CAEN,GAAIuR,IACAC,QAAUxR,KAAKhD,OACfyU,aACAC,eAAkB9U,MAAOuD,KAAKsB,aAAakQ,aAAcf,YAAY,EAEzE,KADAa,UAAUZ,KAAKa,eACVH,GAAK,EAAGA,GAAKC,QAASD,KAEN,OAAbvR,KAAKuR,KAELE,UAAUZ,MAAOjU,MAAOoD,KAAKuR,IAAIrS,OAAQ0R,YAAY,GAK7D7L,MAAKkC,IAAI,WAAYwK,cAIxBjL,OAAO,WACJX,cAAcM,SAASoJ,UAAU,OAOjDhL,KAAKqN,cAAgB,SAAU5V,GAC3B,GAAI+I,MAAOR,IACXQ,MAAKkC,IAAI,YACT,IACIxB,UADA8J,SAAW,gBAEX4B,MAAQ,MAERC,QAAU,gBAAkBjR,KAAK+M,YAAc,gBAC/CnI,KAAK0C,IAAI,oBAAsB,2BAC/BzL,IAEA+I,KAAKkC,IAAI,kBAAmB,IAIhCxB,SAAWI,cAAcC,eAAeuL,UAAUtL,SAASuL,SAASF,UAAW,KAAMD,OAEjF1L,WAEAI,cAAcM,SAASoJ,UAAU,GAEjC9J,SAASW,KAAK,SAAUpG,KAAMqG,OAAQC,MAElC,GAAItG,KAAM,CAEN,GAAIuR,IACAC,QAAUxR,KAAKhD,OACfwQ,WACAqE,YAAejV,MAAOuD,KAAKsB,aAAa6O,WAAYM,YAAY,EAEpE,KADApD,QAAQqD,KAAKgB,YACRN,GAAK,EAAGA,GAAKC,QAASD,KAEvB/D,QAAQqD,MAAOjU,MAAOoD,KAAKuR,IAAIrS,OAAQ0R,YAAY,GAGvD7L,MAAKkC,IAAI,SAAUuG,SACTtF,SAANlM,EAEA+I,KAAK+M,gBAAgB9V,GAIrB+I,KAAKgN,mBAMZvL,OAAO,WACJX,cAAcM,SAASoJ,UAAU,OAMjDhL,KAAKyN,oBAAsB,SAAUhW,GACjC,GAAI+I,MAAOR,IACXQ,MAAKkC,IAAI,YACT,IACIxB,UADA8J,SAAW,gBAEX4B,MAAQ,MACRC,QAAU,gBAAkBjR,KAAK+M,YAAc,gBAC/CnI,KAAK0C,IAAI,oBAAsB,iCAC/BzL,IAEA+I,KAAKkC,IAAI,kBAAmB,IAIhCxB,SAAWI,cAAcC,eAAeuL,UAAUtL,SAASkM,mBAAmBb,UAAW,KAAMD,OAE3F1L,WAEAI,cAAcM,SAASoJ,UAAU,GAEjC9J,SAASW,KAAK,SAAUpG,KAAMqG,OAAQC,MAClC,GAAItG,KAAM,CAEN,GAAIuR,IACAC,QAAUxR,KAAKhD,OACfwQ,WACAqE,YAAejV,MAAOuD,KAAKsB,aAAa6O,WAAYM,YAAY,EAEpE,KADApD,QAAQqD,KAAKgB,YACRN,GAAK,EAAGA,GAAKC,QAASD,KAEvB/D,QAAQqD,MAAOjU,MAAOoD,KAAKuR,IAAIrS,OAAQ0R,YAAY,GAGvD7L,MAAKkC,IAAI,SAAUuG,SACTtF,SAANlM,EAEA+I,KAAKmN,sBAAsBlW,GAI3B+I,KAAKyL,mBAMZhK,OAAO,WACJX,cAAcM,SAASoJ,UAAU,OAMjDhL,KAAK2N,sBAAwB,SAAUlW,GACnC,GAAI+I,MAAOR,IACXQ,MAAKkC,IAAI,eACT,IACIxB,UADA8J,SAAW,gBAEX4B,MAAQ,MACRC,QAAU,gBAAkBjR,KAAK+M,YAAc,gBAC/CnI,KAAK0C,IAAI,oBAAsB,IAAM1C,KAAK0C,IAAI,mBAC9C,+BACAzL,IAEA+I,KAAKkC,IAAI,4BAA6B,IAI1CxB,SAAWI,cAAcC,eAAeuL,UAAUtL,SAASkM,mBAAmBb,UAAW,KAAMD,OAE3F1L,WAEAI,cAAcM,SAASoJ,UAAU,GAEjC9J,SAASW,KAAK,SAAUpG,KAAMqG,OAAQC,MAElC,GAAItG,KAAM,CAEN,GAAIuR,IACAC,QAAUxR,KAAKhD,OACfyT,cACAC,gBAAmB9T,MAAOuD,KAAKsB,aAAakP,eAAgBC,YAAY,EAE5E,KADAH,WAAWI,KAAKH,gBACXa,GAAK,EAAGA,GAAKC,QAASD,KAEvBd,WAAWI,MAAOjU,MAAOoD,KAAKuR,IAAIrS,OAAQ0R,YAAY,GAG1D7L,MAAKkC,IAAI,YAAawJ,YACZvI,SAANlM,EAEA+I,KAAKoN,qBAAqBnW,GAI1B+I,KAAK+L,kBAMZtK,OAAO,WACJX,cAAcM,SAASoJ,UAAU,OAKjDhL,KAAK4N,qBAAuB,SAAUnW,GAClC,GAAI+I,MAAOR,IACXQ,MAAKkC,IAAI,kBACT,IACIxB,UADA8J,SAAW,gBAEX4B,MAAQ,MACRC,QAAU,gBAAkBjR,KAAK+M,YAAc,gBAAkBnI,KAAK0C,IAAI,oBAC1E,IAAM1C,KAAK0C,IAAI,mBAAqB,IAAM1C,KAAK0C,IAAI,6BAA+B,iCAGlFzL,KAEA+I,KAAKkC,IAAI,mBAAoB,IAC7BlC,KAAKkC,IAAI,qBAAsB,KAInCxB,SAAWI,cAAcC,eAAeuL,UAAUtL,SAASkM,mBAAmBb,UAAW,KAAMD,OAE3F1L,WAEAI,cAAcM,SAASoJ,UAAU,GAEjC9J,SAASW,KAAK,SAAUpG,KAAMqG,OAAQC,MAElC,GAAItG,KAAM,CAEN,GAAIuR,IACAC,QAAUxR,KAAKhD,OACf+T,iBACAqB,mBAAsBxV,MAAOuD,KAAKsB,aAAawP,kBAAmBL,YAAY,EAElF,KADAG,cAAcF,KAAKuB,mBACdb,GAAK,EAAGA,GAAKC,QAASD,KAEvBR,cAAcF,MAAOjU,MAAOoD,KAAKuR,IAAIrS,OAAQ0R,YAAY,GAG7D7L,MAAKkC,IAAI,eAAgB8J,kBAI5BvK,OAAO,WACJX,cAAcM,SAASoJ,UAAU,OAMjDhL,KAAK8N,wBAA0B,SAAUrW,GACrC,GAEIyJ,UAFAV,KAAOR,KACPgL,SAAW,gBAEX4B,MAAQ,MACRC,QAAU,gBAAkBjR,KAAK+M,YAAc,gBAC/CnI,KAAK0C,IAAI,oBAAsB,IAAM1C,KAAK0C,IAAI,mBAC9C,IAAM1C,KAAK0C,IAAI,6BAA+B,IAC9C1C,KAAK0C,IAAI,oBAAsB,gCAE/BzL,IAEA+I,KAAKkC,IAAI,qBAAsB,IAInCxB,SAAWI,cAAcC,eAAeuL,UAAUtL,SAASkM,mBAAmBb,UAAW,KAAMD,OAE3F1L,WAEAI,cAAcM,SAASoJ,UAAU,GAEjC9J,SAASW,KAAK,SAAUpG,KAAMqG,OAAQC,MAE9BtG,MAEA+E,KAAKkC,IAAI,qBAAsBjH,QAIlCwG,OAAO,WACJX,cAAcM,SAASoJ,UAAU,OAMjDhL,KAAK+N,6BAA+B,WAChC,GAAIvN,MAAOR,IACXQ,MAAKwN,wBACLxN,KAAKyN,sBAGTjO,KAAKiO,mBAAqB,SAAUxW,GAChC,GAAI+I,MAAOR,IACXQ,MAAKkC,IAAI,cACT,IACIxB,UADA8J,SAAW,gBAEX4B,MAAQ,MACRC,QAAU,gBAAkBjR,KAAK+M,YAAc,gBAC/CnI,KAAK0C,IAAI,oBAAsB,IAAM1C,KAAK0C,IAAI,mBAAqB,wBAEnEzL,IAEA+I,KAAKkC,IAAI,qBAAsB,GAInC,IAAIwL,QAAS1M,SAASkM,mBAAmBb,QACzC3L,UAAWI,cAAcC,eAAe2M,OAAQ,KAAMtB,OAElD1L,WAEAI,cAAcM,SAASoJ,UAAU,GAEjC9J,SAASW,KAAK,SAAUpG,KAAMqG,OAAQC,MAElC,GAAItG,KAAM,CAEN,GAAIuR,IACAC,QAAUxR,KAAKhD,OACf0V,YACAC,eAAkB/V,MAAOuD,KAAKsB,aAAa8O,UAAWK,YAAY,EAEtE,KADA8B,SAAS7B,KAAK8B,eACTpB,GAAK,EAAGA,GAAKC,QAASD,KAEvBmB,SAAS7B,MAAOjU,MAAOoD,KAAKuR,IAAIrS,OAAQ0R,YAAY,GAGxD7L,MAAKkC,IAAI,WAAYyL,aAIxBlM,OAAO,WACJX,cAAcM,SAASoJ,UAAU,OAOjDhL,KAAKgO,sBAAwB,SAAUvW,GACnC,GAAI+I,MAAOR,IACXQ,MAAKkC,IAAI,UACT,IACIxB,UADA8J,SAAW,gBAEX4B,MAAQ,MACRC,QAAU,gBAAkBjR,KAAK+M,YAAc,gBAC/CnI,KAAK0C,IAAI,oBAAsB,IAAM1C,KAAK0C,IAAI,mBAAqB,2BAEnEzL,IAEA+I,KAAKkC,IAAI,kBAAmB,GAIhC,IAAIwL,QAAS1M,SAASkM,mBAAmBb,QACzC3L,UAAWI,cAAcC,eAAe2M,OAAQ,KAAMtB,OAElD1L,WAEAI,cAAcM,SAASoJ,UAAU,GAEjC9J,SAASW,KAAK,SAAUpG,KAAMqG,OAAQC,MAElC,GAAItG,KAAM,CAEN,GAAIuR,IACAC,QAAUxR,KAAKhD,OACf4V,SACAC,YAAejW,MAAOuD,KAAKsB,aAAakQ,aAAcf,YAAY,EAEtE,KADAgC,MAAM/B,KAAKgC,YACNtB,GAAK,EAAGA,GAAKC,QAASD,KAEvBqB,MAAM/B,MAAOjU,MAAOoD,KAAKuR,IAAIrS,OAAQ0R,YAAY,GAGrD7L,MAAKkC,IAAI,OAAQ2L,UAIpBpM,OAAO,WACJX,cAAcM,SAASoJ,UAAU,OAQjDhL,KAAKuN,gBAAkB,SAAU9V,GAC7B,GAAI+I,MAAOR,IACXQ,MAAKkC,IAAI,cACT,IACIxB,UADA8J,SAAW,gBAEX4B,MAAQ,MACRC,QAAU,gBAAkBjR,KAAK+M,YAAc,gBAC/CnI,KAAK0C,IAAI,oBAAsB,IAAM1C,KAAK0C,IAAI,mBAAqB,4BAEnEzL,IAEA+I,KAAKkC,IAAI,oBAAqB,IAIlClC,KAAKkC,IAAI,eAETxB,SAAWI,cAAcC,eAAeuL,UAAUtL,SAASuL,SAASF,UAAW,KAAMD,OAEjF1L,WAEAI,cAAcM,SAASoJ,UAAU,GACjC9J,SAASW,KAAK,SAAUpG,KAAMqG,OAAQC,MAElC,GAAItG,KAAM,CAEN,GAAIuR,IACAC,QAAUxR,KAAKhD,OACf8V,aACAC,cAAiBnW,MAAOuD,KAAKsB,aAAakQ,aAAcf,YAAY,EAExE,KADAkC,UAAUjC,KAAKkC,cACVxB,GAAK,EAAGA,GAAKC,QAASD,KAEN,OAAbvR,KAAKuR,KAELuB,UAAUjC,MAAOjU,MAAOoD,KAAKuR,IAAIrS,OAAQ0R,YAAY,GAK7D7L,MAAKkC,IAAI,WAAY6L,WACX5K,SAANlM,EAEA+I,KAAKiO,gBAAgBhX,GAIrB+I,KAAKkO,kBAMZzM,OAAO,WACJX,cAAcM,SAASoJ,UAAU,OAMjDhL,KAAK0O,aAAe,WAEhB1O,KAAK0C,IAAI,qBAAsB,KAInC1C,KAAKwN,cAAgB,WACjB,GAAItB,eACAC,gBAAmB9T,MAAOuD,KAAKsB,aAAa6O,WAAYM,YAAY,EACxEH,YAAWI,KAAKH,gBAChBnM,KAAK0C,IAAI,WAAYwJ,YACrBlM,KAAK0C,IAAI,oBAAqB,IAC9B1C,KAAK0C,IAAI,qBAAsB,KAGnC1C,KAAKyO,gBAAkB,SAAUhX,GAC7B,GAAI+I,MAAOR,IACXQ,MAAKkC,IAAI,aACT,IACIxB,UADA8J,SAAW,gBAEX4B,MAAQ,MACRC,QAAU,gBAAkBjR,KAAK+M,YAAc,gBAC/CnI,KAAK0C,IAAI,oBAAsB,IAAM1C,KAAK0C,IAAI,mBAAqB,IACnE1C,KAAK0C,IAAI,qBAAuB,0BAEhCzL,IAEA+I,KAAKkC,IAAI,qBAAsB,IAInCxB,SAAWI,cAAcC,eAAeuL,UAAUtL,SAASkM,mBAAmBb,UAAW,KAAMD,OAE3F1L,WAEAI,cAAcM,SAASoJ,UAAU,GACjC9J,SAASW,KAAK,SAAUpG,KAAMqG,OAAQC,MAE9BtG,MAEA+E,KAAKkC,IAAI,qBAAsBjH,KAAK,MAIvCwG,OAAO,WACJX,cAAcM,SAASoJ,UAAU,OAOjDhL,KAAK2O,YAAc,SAAUlX,GACzB,GAAI+I,MAAOR,IACXQ,MAAKkC,IAAI,cACT,IACIxB,UADA8J,SAAW,YAEX4B,MAAQ,MAERC,QAAU,gBAAkBjR,KAAK+M,YAAc,gBAC/CnI,KAAK0C,IAAI,oBAAsB,IAAM1C,KAAK0C,IAAI,mBAAqB,IACnE1C,KAAK0C,IAAI,6BAA+B,0BAExCzL,IAEA+I,KAAKkC,IAAI,qBAAsB,IAInClC,KAAKkC,IAAI,eAETxB,SAAWI,cAAcC,eAAeuL,UAAUtL,SAASuL,SAASF,UAAW,KAAMD,OAEjF1L,WAEAI,cAAcM,SAASoJ,UAAU,GAEjC9J,SAASW,KAAK,SAAUpG,KAAMqG,OAAQC,MAElC,GAAItG,KAAM,CAEN,GAAIuR,IACAC,QAAUxR,KAAKhD,OACfmW,SACAC,WAAcxW,MAAOuD,KAAKsB,aAAa8O,UAAWK,YAAY,EAElE,KADAuC,MAAMtC,KAAKuC,WACN7B,GAAK,EAAGA,GAAKC,QAASD,KAEvB4B,MAAMtC,MAAOjU,MAAOoD,KAAKuR,IAAIrS,OAAQ0R,YAAY,GAGrD7L,MAAKkC,IAAI,WAAYkM,UAKxB3M,OAAO,WACJX,cAAcM,SAASoJ,UAAU,OAOjDhL,KAAK4H,cAAgB,SAAUnQ,GAC3B,GAAI+I,MAAOR,IACXQ,MAAKkC,IAAI,YACT,IACIxB,UADA8J,SAAW,UAEX4B,MAAQ,MACRkC,GAAKrX,EACLoV,QAAU,gBAAkBjR,KAAK+M,YAAc,gBAC/C/M,KAAK+M,YAAc,8BACnBoG,iBAAmB,EAEvB7N,UAAWI,cAAcC,eAAeC,SAASuL,SAASF,SAAU,KAAMD,OAEtE1L,WAEAI,cAAcM,SAASoJ,UAAU,GAEjC9J,SAASW,KAAK,SAAUpG,KAAMqG,OAAQC,MAElC,GAAItG,KAAM,CAEN,GAAIuR,IACAgC,GACAC,WACAC,aAAgB7W,MAAOuD,KAAKsB,aAAaiS,YAAa9C,YAAY,EACtE4C,SAAQ3C,KAAK4C,YACb,IAAIE,6BAA4D,mBAAvB,iBACzC,IAAIA,4BAEA,IAAKJ,GAAK,EAAGA,GAAKD,iBAAiBtW,OAAQuW,KAAM,CAE7C,GAAIK,mBAAoB5T,KAAK3B,QAAQiV,iBAAiBC,IAClDK,oBAAqB,GAErB5T,KAAK6T,OAAOD,kBAAmB,GAO3C,GAAIpC,SAAUxR,KAAKhD,MACnB,KAAKuU,GAAK,EAAGA,GAAKC,QAASD,KAEvBiC,QAAQ3C,MAAOjU,MAAOoD,KAAKuR,IAAKX,YAAY,GAGhD7L,MAAKkC,IAAI,SAAUuM,SACfA,QAAQxW,OAAS,GAAKqW,KAEtBtO,KAAKkC,IAAI,mBAAoBuM,QAAQ,IACrCzO,KAAKqL,UAAUpU,OAOtBwK,OAAO,WACJX,cAAcM,SAASoJ,UAAU,OAMjDhL,KAAK0H,oBAAsB,SAAUjQ,GACjC,GAAI+I,MAAOR,IACXQ,MAAKkC,IAAI,YACT,IACIxB,UADA8J,SAAW,UAEX4B,MAAQ,MACRkC,GAAKrX,EACLoV,QAAU,gBAAkBjR,KAAK+M,YAAc,gBAC/C/M,KAAK+M,YAAc,oCACnBoG,iBAAmB,EAEvB7N,UAAWI,cAAcC,eAAeC,SAASkM,mBAAmBb,SAAU,KAAMD;AAEhF1L,WAEAI,cAAcM,SAASoJ,UAAU,GAEjC9J,SAASW,KAAK,SAAUpG,KAAMqG,OAAQC,MAElC,GAAItG,KAAM,CAEN,GAAIuR,IACAgC,GACAC,WACAC,aAAgB7W,MAAOuD,KAAKsB,aAAaiS,YAAa9C,YAAY,EACtE4C,SAAQ3C,KAAK4C,YACb,IAAIE,6BAA4D,mBAAvB,iBACzC,IAAIA,4BAEA,IAAKJ,GAAK,EAAGA,GAAKD,iBAAiBtW,OAAQuW,KAAM,CAE7C,GAAIK,mBAAoB5T,KAAK3B,QAAQiV,iBAAiBC,IAClDK,oBAAqB,GAErB5T,KAAK6T,OAAOD,kBAAmB,GAO3C,GAAIpC,SAAUxR,KAAKhD,MACnB,KAAKuU,GAAK,EAAGA,GAAKC,QAASD,KAEvBiC,QAAQ3C,MAAOjU,MAAOoD,KAAKuR,IAAKX,YAAY,GAGhD7L,MAAKkC,IAAI,SAAUuM,SACfA,QAAQxW,OAAS,GAAKqW,KAEtBtO,KAAKkC,IAAI,mBAAoBuM,QAAQ,IACrCzO,KAAKqL,UAAUpU,OAOtBwK,OAAO,WACJX,cAAcM,SAASoJ,UAAU,OAOjDhL,KAAKuP,mBAAqB,SAAU9X,GAChC,GAAI+I,MAAOR,KACP8O,GAAKrX,CACT+I,MAAKkC,IAAI,aACLoM,IAEAtO,KAAKkC,IAAI,mBAAoB,GAGjC,IAAI8M,WAAY,SAAU/T,MACtB,GAAIuR,IACAC,QAAUxR,KAAKhD,OACfwW,UACJ,KAAKjC,GAAK,EAAGA,GAAKC,QAASD,KAEvBiC,QAAQ3C,KAAK7Q,KAAKuR,IAAIyC,MAG1BjP,MAAKkC,IAAI,SAAUuM,SACfA,QAAQxW,OAAS,EAEbqW,IAEAtO,KAAKkC,IAAI,mBAAoBuM,QAAQ,IAMzCzO,KAAKkC,IAAI,kBAAkB,GAInClC,MAAKkP,wBAAwBF,YAEjCxP,KAAK2P,mBAAqB,SAAUlY,GAChC,GAAI+I,MAAOR,IACXQ,MAAKkC,IAAI,YACT,IAAIoM,IAAKrX,CACLqX,KAEAtO,KAAKkC,IAAI,kBAAmB,GAGhC,IAAI8M,WAAY,SAAU/T,MACtB,GAAIuR,IACAC,QAAUxR,KAAKhD,OACfwQ,UACJ,KAAK+D,GAAK,EAAGA,GAAKC,QAASD,KAEvB/D,QAAQqD,KAAK7Q,KAAKuR,IAAInQ,KAG1B2D,MAAKkC,IAAI,SAAUuG,SACfA,QAAQxQ,OAAS,EAEbqW,IAEAtO,KAAKkC,IAAI,kBAAmBuG,QAAQ,IAMxCzI,KAAKkC,IAAI,kBAAkB,GAInClC,MAAKkP,wBAAwBF,YAEjCxP,KAAK4P,4BAA8B,SAAUnY,GACzC,GAAI+I,MAAOR,KACP8O,GAAKrX,CACT+I,MAAKkC,IAAI,aACTlC,KAAKkC,IAAI,aACTlC,KAAKkC,IAAI,wBACLoM,KAEAtO,KAAKkC,IAAI,kBAAmB,IAC5BlC,KAAKkC,IAAI,mBAAoB,IAGjC,IAAI8M,WAAY,SAAU/T,MACtB,GAAIuR,IACAC,QAAUxR,KAAKhD,OACfwW,WACAhG,WACA4G,qBACJ,KAAK7C,GAAK,EAAGA,GAAKC,QAASD,KAAM,CAE7B,GAAIyC,OAAQhU,KAAKuR,IAAIyC,OAAS,EAEhB,MAAVA,MAEAR,QAAQ3C,KAAK7Q,KAAKuR,IAAIyC,QAItBA,MAAQhU,KAAKuR,IAAIlQ,wBAA0B,GAC3CmS,QAAQ3C,KAAKmD,QAIjBxG,QAAQqD,KAAK7Q,KAAKuR,IAAInQ,KAAKb,eAC3B6T,mBAAmBvD,MAAOzP,KAAQpB,KAAKuR,IAAInQ,KAAKb,cAAeyT,MAASA,QAG5EjP,KAAKkC,IAAI,oBAAqBmN,oBAC9BrP,KAAKkC,IAAI,SAAUuM,QAAQa,OAAOlM,eAClCpD,KAAKkC,IAAI,SAAUuG,SACfgG,QAAQxW,OAAS,GAAKwQ,QAAQxQ,OAAS,GAEvC+H,KAAKkC,IAAI,kBAAkB,GAEvBoM,KAEAtO,KAAKkC,IAAI,mBAAoBuM,QAAQ,IACrCzO,KAAKkC,IAAI,kBAAmBuG,QAAQ,MAMxCzI,KAAKkC,IAAI,kBAAkB,GAInClC,MAAKkP,wBAAwBF,YAEjCxP,KAAK0P,wBAA0B,SAAUF,WACrC,GAAIhP,MAAOR,IACXQ,MAAKkC,IAAI,kBAAkB,EAC3B,IAAIqN,aAAcvP,KAAK0C,IAAI,sBAAwB1C,KAAK0C,IAAI,sBAAsBvI,OAAS,GACvF4N,SAAWjH,cAAciI,kBAAkB,WAE/C,IAAIwG,aAAexH,SAASkD,WAAY,CAEpCsE,YAA6C,UAA9BnU,KAAKoU,OAAOhU,cAA6B+T,YAAYE,UAAU,EAAG,GAAKF,WACtF,IACI7O,UADA8J,SAAW,gBAEX4B,MAAQ,MACRC,QAAwC,UAA9BjR,KAAKoU,OAAOhU,cAA4B,gBAAkB+T,YACpE,8CAAqD,gBAAkBA,YACvE,mCAEA7B,OAAuC,UAA9BtS,KAAKoU,OAAOhU,cAA4B,iCAAmC6Q,QACpF,kBAAoBrL,SAASuL,SAASF,QAE1C3L,UAAWI,cAAcC,eAAe2M,OAAQ,KAAMtB,OAElD1L,WAEAI,cAAcM,SAASoJ,UAAU,GAEjC9J,SAASW,KAAK,SAAUpG,KAAMqG,OAAQC,MAE9BtG,KAEA+T,UAAU/T,MAIV+E,KAAKkC,IAAI,kBAAkB,GAG/B6F,SAASkD,aAERxJ,OAAO,WACJX,cAAcM,SAASoJ,UAAU,QAOrDhL,KAAK+I,cAAgB,SAAUtR,GAE3B,GAAI+I,MAAOR,IAEXQ,MAAKkC,IAAI,kBAAkB,GAC3BlC,KAAKkC,IAAI,eAAe,GACxBlC,KAAKkC,IAAI,iBAAiB,GAC1BlC,KAAKkC,IAAI,yBAAyB,GAClClC,KAAK0P,sBACLhW,EAAE,mBAAmBmE,IAAI,IACzBnE,EAAE,gBAAgByP,IAAI,UAAW,SAIrC3J,KAAKmQ,uBAAyB,SAAU1Y,GAEpC,GAAI+I,MAAOR,KAEPoQ,MAAQ5P,KAAK0C,IAAI,yBAA2B,GAC5CmN,MAAQ7P,KAAK0C,IAAI,wBAA0B,GAC3CoN,SAAW9P,KAAK0C,IAAI,wBAA0BkN,MAE9C9T,SAAW+T,MAAME,MAAM,QACvBC,OAASF,SAASC,MAAM,QAExBE,eAAiB,EACjBC,eAAiB,CAcrB,OAZgB,OAAZpU,WAEAmU,eAAiBnU,SAASqU,KAAK,IAAIlY,QAIzB,MAAV+X,SAEAE,eAAiBF,OAAOG,KAAK,IAAIlY,QAIjCgY,eAAiB,GAAKC,eAAiB,GAU/C1Q,KAAK4Q,KAAO,SAAUnZ,GAClB,GAAI+I,MAAOR,KACPgI,MAAQ1G,cAAciI,kBAAkB,gBAE5C,KAAKvB,MAAMyD,WAEP,OAAO,CAIX,IAAIjL,KAAK2P,yBAIL,MAFA3P,MAAKkC,IAAI,eAAe,GACxBlC,KAAKkC,IAAI,eAAgBvE,UAAU,oBAC5B,CAIX,IAAyB,OAArBvC,KAAK+M,YAAsB,CAE3BnI,KAAKkJ,mBACL,IAAImH,YAAarQ,KAAK0C,IAAI,sBAAwB,GAC9C4N,UAAYD,WAAW7U,cAEvB+U,gBAAkB,+DACtB,IAAIA,gBAAgBlX,KAAKiX,WAIrB,IAAK,GAFDE,mBAAoBF,UAAUnF,MAAM,KACpCsF,8BAAgC,qCAC3BC,EAAI,EAAGA,EAAIF,kBAAkBvY,OAAQyY,IAAK,CAE/C,GAAI7S,KAAM2S,kBAAkBE,GACxBC,SAAWJ,gBAAgBlX,KAAKwE,KAChC+S,eAAiBH,8BAA8BpX,KAAKwE,IACxD,IAAI8S,WAAaC,eAIb,MAFA5Q,MAAKkC,IAAI,eAAe,GACxBlC,KAAKkC,IAAI,eAAgBvE,UAAU,2BAC5B,EAQnB,GAAIkT,UAAW,oCACf,IAAIA,SAASxX,KAAKiX,WAId,MAFAtQ,MAAKkC,IAAI,eAAe,GACxBlC,KAAKkC,IAAI,eAAgBvE,UAAU,2BAC5B,CAIX,IAAImT,eAAgB,+CACpB,IAAIA,cAAczX,KAAKiX,WAInB,MAFAtQ,MAAKkC,IAAI,eAAe,GACxBlC,KAAKkC,IAAI,eAAgBvE,UAAU,yBAC5B,CAIX,IAAIoT,mBAAoB,gCACxB,IAAIA,kBAAkB1X,KAAKiX,WAAY,CAEnC,GAAyB,OAArBlV,KAAK+M,YAuBL,MAFAnI,MAAKkC,IAAI,eAAe,GACxBlC,KAAKkC,IAAI,eAAgBvE,UAAU,yBAC5B,CAnBP,KAAK,GAFDqT,iBAAkBV,UAAUnF,MAAM,KAClC8F,4BAA8B,mCACzBC,QAAU,EAAGA,QAAUF,gBAAgB/Y,OAAQiZ,UAAW,CAE/D,GAAIrZ,OAAQmZ,gBAAgBE,SACxBC,OAASJ,kBAAkB1X,KAAKxB,OAChCuZ,WAAaH,4BAA4B5X,KAAKxB,MAClD,IAAIsZ,SAAWC,WAIX,MAFApR,MAAKkC,IAAI,eAAe,GACxBlC,KAAKkC,IAAI,eAAgBvE,UAAU,yBAC5B,GAiBvB,GADAkT,SAAW,wBACPA,SAASxX,KAAKiX,WAId,MAFAtQ,MAAKkC,IAAI,eAAe,GACxBlC,KAAKkC,IAAI,eAAgBvE,UAAU,eAC5B,EAMf,GAAImD,cAAc2G,WAAW,oBAAoBxP,OAAS,EAAG,CAEzD,GAAIoZ,QAASrR,KAAK0C,IAAI,sBAAwB,GAC1C4O,QAAUtR,KAAK0C,IAAI,uBAAyB,GAC5C6O,sBAAwB,GAAI/T,QAAOpC,KAAKsB,aAAa6U,uBACrDC,4BAA8BpW,KAAKsB,aAAa8U,6BAA+B,EACnFH,QAAoB,KAAXA,QAAgBE,sBAAsBlY,KAAKgY,OAAOI,cAAc3Y,QAAQ,KAAM,KAEvFwY,QAAsB,KAAZA,SAAiBC,sBAAsBlY,KAAKiY,QAAQG,cAAc3Y,QAAQ,KAAM,IAE1F,IAAI4Y,gBAAgB,CACpB,IAAoC,KAAhCF,4BAGA,IAAK,GADDG,WAAYH,4BAA4BrG,MAAM,KACzCxT,EAAI,EAAGA,EAAIga,UAAU1Z,OAAQN,IAElC,GAAIga,UAAUha,KAAOqI,KAAK0C,IAAI,oBAAqB,CAE/CgP,eAAgB,CAChB,OAQZ,GAAIA,gBAAkBL,QAAUC,SAI5B,MAFAtR,MAAKkC,IAAI,eAAe,GACxBlC,KAAKkC,IAAI,eAAgBvE,UAAU,qBAC5B,CAIXqC,MAAKkC,IAAI,eAAe,GAG5B,GAEIxB,UACA8I,MACA4C,MACAwF,KALA9S,SAAWkB,KAAK0C,IAAI,cACpB8H,SAAW,eAMfxK,MAAK6R,gBAAe,EAAO,IAC3B7R,KAAK+G,2BAA0B,GAC3BjI,SAASwJ,UAETkB,MAAQtI,KAAKC,UAAUrC,SAAS6L,sBAChCyB,MAAQ,SAIR5C,MAAQtI,KAAKC,UAAUrC,SAAS+L,yBAChCuB,MAAQ,MAIZ,IAAI0F,aAAc9R,KAAK0C,IAAI,aAGvBkP,MAFA5K,qBAAqBqC,gCAEd,0BAA4BjO,KAAKoU,OAAS,eAAiBsC,YAI3D9Q,SAASgF,aAIpBtF,SAAWI,cAAcC,eAAe6Q,KAAMpI,MAAO4C,OAErDpM,KAAKuI,gBAED7H,WAEAI,cAAcM,SAASoJ,UAAU,GAEjC9J,SAASW,KAAK,SAAUpG,KAAMqG,OAAQC,MAElC,GAAItG,MAAQA,KAAK8W,WAAY,CAEzBvI,MAAQvO,KAAK+B,OACb,IAAIuM,iBAAkBvJ,KAAK0C,IAAI,iBAG3B8G,OAAMtM,aAAc,GAEpB8C,KAAKgS,cAAcxI,OAKnB1K,SAASwJ,UAGTtI,KAAK+J,mBAAmBjL,SAASmT,qBAAqBzI,QACtDD,gBAAgB2I,OAAO,EAAGpT,SAAS6L,wBAKnC3K,KAAK+J,mBAAmBP,OAExBD,gBAAgB4I,WAAW3I,OAI/B,IAAI4I,gBAAiBpS,KAAK0C,IAAI,kBAC9B1C,MAAKqS,wBAAwBD,gBAC7BpS,KAAKkC,IAAI,iBAAkB,IAE3BqH,gBAAgB+I,OAEQ,QAApBrX,KAAK8W,YAEL/R,KAAKkC,IAAI,yBAAyB,GAClClC,KAAKkC,IAAI,kBAAkB,IAI3BlC,KAAKkC,IAAI,kBAAkB,GAG/BlC,KAAK8I,YACL3I,eAAeqB,QACX,0BAEM+Q,SAAU,sBAAuB1a,OAAO,KAGlDsI,eAAeqB,QAAQ,2BAI1BC,OAAO,WACJzB,KAAKkC,IAAI,cAAc,GACvBpB,cAAcM,SAASoJ,UAAU,KAEpC9I,KAAK,SAAUC,SAAUL,OAAQM,SAC9B,GAAIC,SAAUF,SAASL,MAQvB,IANyC,QAArCK,SAAS6Q,aAAaT,aAEtBjb,OAAO2b,SAASC,KAAO,iCAAmCtX,KAAKoU,QAI1B,QAArC7N,SAAS6Q,aAAaT,WAEtB/R,KAAKkC,IAAI,eAAe,GACxBlC,KAAKkC,IAAI,eAAgBvE,UAAU,kBAEhC,IAAyC,QAArCgE,SAAS6Q,aAAaT,WAE7B/R,KAAKkC,IAAI,eAAe,GACxBlC,KAAKkC,IAAI,eAAgBvE,UAAU,2BAEhC,IAAyC,QAArCgE,SAAS6Q,aAAaT,WAG7B/R,KAAKkC,IAAI,iBAAiB,GAC1BlC,KAAKkC,IAAI,mBAAoBvE,UAAU,kBAEpC,IAAyC,QAArCgE,SAAS6Q,aAAaT,WAE7B/R,KAAKkC,IAAI,eAAe,GACxBlC,KAAKkC,IAAI,eAAgBvE,UAAU,8BAEhC,IAAgB,MAAZkE,QAEP7B,KAAKkC,IAAI,eAAe,GACxBlC,KAAKkC,IAAI,eAAgBN,aAEtB,IAAgB,MAAZC,QAEP,GAAImF,qBAAqBqC,gCAErBrJ,KAAK2S,gCAAgChR,UACrC3B,KAAK4S,iCAAiCjR,cAEnC,CAEH,GAAItE,OAAQsE,SAAS6Q,aAAaT,UAClC/R,MAAKkC,IAAI,eAAe,GACxBlC,KAAKkC,IAAI,eAAgBvE,UAAU,OAASN,YAUhE2C,KAAK+G,2BAA0B,GAC/B/G,KAAKoI,8BAEDvB,QAEAnN,EAAE,oBAAoB0P,YAAY,aAK1C5J,KAAKwS,cAAgB,SAAU/W,MAE3B,GAAI+E,MAAOR,KACP+J,gBAAkBvJ,KAAK0C,IAAI,kBAC3BmQ,OAAStJ,gBAAgBuJ,OAE7B,IAAID,OAAS,EAET,IAAK,GAAIE,GAAI,EAAGA,EAAIF,OAAQE,IAAK,CAE7B,GAAIC,aAAczJ,gBAAgB0J,GAAGF,EACjCC,aAAY9V,aAAc,GAAQ8V,YAAYvN,KAAOxK,KAAKwK,KAE1DuN,YAAY9V,WAAY,KASxCsC,KAAK6S,wBAA0B,SAAUa,eACrC/S,eAAeqB,QAAQ,iCACjB+Q,SAAU,gBAAiB1a,MAAOqb,kBAI5C1T,KAAKoT,iCAAmC,SAAUjR,UAE9C,GAAI3B,MAAOR,IAEX,IAAImC,SAAS6Q,uBAAwBW,QAASxR,SAAS6Q,aAAava,OAAS,EAAG,CAE5E,GAAIgD,MAAO0G,SAAS6Q,YACpBxS,MAAKkC,IAAI,+BAAgCjH,KAAK,GAAG+B,QAAQoW,mBACzDpT,KAAKkC,IAAI,sBAAuBjH,KAAK,GAAG+B,QAAQqW,UAChDrT,KAAKkC,IAAI,wBAAyBjH,KAAK,GAAG+B,QAAQsW,YAClDtT,KAAKkC,IAAI,4BAA6BjH,KAAK,GAAG+B,QAAQuW,kBAM9D/T,KAAKmT,gCAAkC,SAAUhR,UAC7C,GAAI3B,MAAOR,IACX,IAAImC,SAAS6Q,uBAAwBW,OAAO,CAOxC,IAAK,GALDK,WAAW,EACXvY,KAAO0G,SAAS6Q,aAChBiB,OAAS1Y,eAAe,kCACxB2Y,iBAAmB1T,KAAK0C,IAAI,YAEvB8J,GAAK,EAAGA,GAAKvR,KAAKhD,OAAQuU,KAE/B,GAA6B,IAAzBvR,KAAKuR,IAAImH,YAAmB,CAG5B,GAAIC,iBAAkBxY,KAAKyY,cAAcC,QAAQ7Y,KAAKuR,IAAIuH,iBACtDC,iBAAmB5Y,KAAKyY,cAAcI,eAAehZ,KAAKuR,IAAIuH,gBAG9DL,mBAEA1T,KAAKkC,IAAI,yBAA0B0R,iBACnC5T,KAAKkC,IAAI,kBAAmB8R,mBAI5BhU,KAAKkC,IAAI,iBAAkB0R,qBAI5B,IAA6B,IAAzB3Y,KAAKuR,IAAImH,YAAmB,CAGnC,GAAIO,WAAYjZ,KAAKuR,IAAIuH,eACzBI,kBAAiBrI,KAAKoI,WACtBlU,KAAKkC,IAAI,kBAAoBgS,UAAW9Y,KAAKyY,cAAcO,MAAMF,YACjEV,UAAW,EACXxT,KAAKkC,IAAI,8BAA8B,IAM1CsR,UAAYE,kBAEbD,OAAOtJ,SAASC,WAIjB,CAEH,GAAI/M,OAAQsE,SAAS6Q,aAAaT,UAClC/R,MAAKkC,IAAI,eAAe,GACxBlC,KAAKkC,IAAI,eAAgBvE,UAAU,OAASN,UAMpDmC,KAAK0J,kBAAoB,WAErB,IAAK,GADDlJ,MAAOR,KACFgN,GAAK,EAAGA,GAAK2H,iBAAiBlc,OAAQuU,KAE3CxM,KAAKkC,IAAI,kBAAoBiS,iBAAiB3H,IAAK,GAGvD2H,sBAGJ3U,KAAK6U,kBAAoB,WACrB,GAAIZ,QAAS1Y,eAAe,iCAC5B0Y,QAAOzJ,SAGXxK,KAAK8U,oBAAsB,WACvB,GAAItU,MAAOR,IACXQ,MAAKkC,IAAI,cAAc,GACvBlC,KAAKqU,oBACLrU,KAAKoQ,QAGT5Q,KAAK+U,cAAgB,SAAUtd,GAC3B,GAAI+I,MAAOR,KACPgV,iBAAmBvd,EAAEgE,IAGzB+E,MAAK+J,mBAAmByK,kBAExBxU,KAAKwI,aAAY,GACjBxI,KAAKkC,IAAI,cAAc,GACvBlC,KAAKoI,6BAA4B,EAEjC,IAAIgK,gBAAiBpS,KAAK0C,IAAI,kBAC9B1C,MAAKqS,wBAAwBD,iBAGjC5S,KAAKqS,eAAiB,SAAUha,MAAO+J,SACnC,GAAI5B,MAAOR,IACXoC,SAAUA,SAAW,GAErB5B,KAAKkC,IAAI,cAAerK,OACxBmI,KAAKkC,IAAI,eAAgBN,UAG7BpC,KAAKiV,kBAAoB,SAAUxd,GAE/B,GAAI+I,MAAOR,IACX9F,GAAE,aAAakP,MACf,IAAI8L,eAAgBC,KAAKzc,IAAI6F,SAAS6W,KAAKhb,UAAWmE,SAAS8W,gBAAgBjb,WAC3Ekb,YAAc/W,SAASC,eAAe,WAC1C,IAAI+W,MAAKC,UACLC,WAAY,SAAUha,MAElB+E,KAAKkC,IAAI,oCAAqCjH,KAAKia,MACnDlV,KAAKkC,IAAI,kBAAmBjH,KAAKka,SACjCnV,KAAKkC,IAAI,oBAAqBjH,KAAKka,QAAU,IAAMla,KAAKma,aACxDpV,KAAKkC,IAAI,qBAAsBjH,KAAKoa,UACpC3b,EAAE,4CAA4C4b,WAC9CR,YAAY7W,MAAMC,QAAU,OAC5BH,SAAS6W,KAAKhb,UAAY8a,eAG9Ba,SAAU,SAAUC,MAEhBV,YAAY7W,MAAMwX,OAASD,KAAKC,OAAS,MAG7CC,MAAO,OACPD,OAAQ,SACTE,MAAMb,aACTpb,EAAE,aAAayP,IAAI,UAAW,UAElC3J,KAAKuH,0BAA4B,SAAUlP,OAEvC+d,gBAAkB/d,OAItB2H,KAAKqW,qBAAuB,WAExBrW,KAAK0C,IAAI,2BAA2B,IAIxC1C,KAAKsW,sBAAwB,WAEzBtW,KAAK0C,IAAI,2BAA2B,IAIxC1C,KAAKuW,YAAc,SAAU9e,GAIzB,IAAK,GAHD+I,MAAOR,KACPgF,kBAAoBxE,KAAK0C,IAAI,qBAC7BsT,aAAehW,KAAK0C,IAAI,mBACnB/K,EAAI,EAAGA,EAAI6M,kBAAkBvM,OAAQN,IAE1C,GAAI6M,kBAAkB7M,GAAG0E,OAAS2Z,aAAc,CAE5ChW,KAAKkC,IAAI,mBAAoBsC,kBAAkB7M,GAAGsX,MAClD,SAOZzP,KAAKyW,6BAA+B,WAChCzW,KAAKqN,gBACLrN,KAAKuN,kBACLvN,KAAK2M,sBAET3M,KAAK0W,mCAAqC,SAAUlH,WAChD,GAAIhP,MAAOR,IACXQ,MAAKkC,IAAI,kBAAkB,EAC3B,IAAIqN,aAAcvP,KAAK0C,IAAI,sBAAwB1C,KAAK0C,IAAI,sBAAsBvI,OAAS,EAQ3F,IANoB,KAAhBoV,cAEAA,YAAgD,KAAlCvP,KAAK0C,IAAI,qBAA8B1C,KAAK0C,IAAI,qBAAuB,IAIrF6M,aAAeA,YAAYtX,OAAS,EAAG,CAEvC,GACIyI,UADA8J,SAAW,gBAEX4B,MAAQ,MAERC,QAAU,8CAAgDjR,KAAK+M,YAAc,gBAC7EnI,KAAK0C,IAAI,sBAAwB,6CAErChC,UAAWI,cAAcC,eAAesL,QAAS,KAAMD,OAEnD1L,WAEAI,cAAcM,SAASoJ,UAAU,GAEjC9J,SAASW,KAAK,SAAUpG,KAAMqG,OAAQC,MAE9BtG,KAEA+T,UAAU/T,MAIV+E,KAAKkC,IAAI,kBAAkB,KAI9BT,OAAO,WACJX,cAAcM,SAASoJ,UAAU,UAO7CxK,MAAKkC,IAAI,kBAAkB,IAKnC1C,KAAK4L,gCAAkC,SAAUnU,GAC7C,GAAI+I,MAAOR,KACP8O,GAAKrX,EACLkf,WACJnW,MAAKkC,IAAI,kBAAkB,GAC3BlC,KAAKkC,IAAI,cAELoM,KAEAtO,KAAKkC,IAAI,qBAAsB,IAC/BlC,KAAKkC,IAAI,kBAAmB,IAC5BlC,KAAKkC,IAAI,mBAAoB,IAC7BlC,KAAKkC,IAAI,oBAAqB,IAC9BlC,KAAKkC,IAAI,4BAA6B,IACtClC,KAAKkC,IAAI,uBAAwB,IAIrC,IAAI8M,WAAY,SAAU/T,MAEtB,GAAOA,KAAP,CAMA,IAAK,GAAIuR,IAAK,EAAGA,GAAKvR,KAAKhD,OAAQuU,KAE/B2J,SAASrK,MAAOjU,MAAOoD,KAAKuR,IAAI4J,cAAeC,MAAOpb,KAAKuR,IAAI4J,eAGnED,UAASrK,MAAOjU,MAAO,WAAYwe,MAAO1Y,UAAU,4BACpDqC,KAAKkC,IAAI,UAAWiU,UAChBlb,KAAKhD,OAAS,GAEd+H,KAAKkC,IAAI,kBAAkB,GAEvBoM,KAEAtO,KAAKkC,IAAI,kBAAmBjH,KAAK,GAAGoB,MACpC2D,KAAKkC,IAAI,mBAAoBjH,KAAK,GAAGgU,OACrCjP,KAAKkC,IAAI,qBAAsBiU,SAAS,GAAGte,OAC3CmI,KAAKkC,IAAI,4BAA6BjH,KAAK,GAAGmb,eAC9CpW,KAAKkC,IAAI,oBAAqBjH,KAAK,GAAGoW,QACtCrR,KAAKkC,IAAI,uBAAwBjH,KAAK,GAAGqb,aAM7CtW,KAAKkC,IAAI,qBAAsB,aAIvClC,MAAKkW,mCAAmClH,YAG5CxP,KAAK+W,gBAAkB,WACnB,GAAIvW,MAAOR,IACXQ,MAAKkC,IAAI,mBAAoB,KAGjC1C,KAAKgX,UAAY,WACb,GAAIxW,MAAOR,IACX,OAA0C,aAAnCQ,KAAK0C,IAAI,uBAGpBlD,KAAKsI,qBAAuB,SAAUrI,aAClC,GACI8J,iBADAvJ,KAAOR,IAGXsB,eAAcM,SAAS,oBAAoB,GAE3CmI,gBAAkB9J,WAElB,IACIX,UACA2X,gBAFAjN,MAAQ/J,YAGRiX,oBAAqB,CACzB,IAAIlN,MAAMvR,OAAS,EAAG,CAElBwe,gBAAkBhX,YAAYkX,kBAAmB,CACjD,IAAIC,wBAA0BH,iBAAmBA,gBAAgBhR,EAC7DmR,yBAA0BrN,gBAAgB7G,IAAI+T,gBAAgBhR,MAE9D3G,SAAWyK,gBAAgB7G,IAAI+T,gBAAgBhR,KAOnDzF,KAAK+J,mBAAmBjL,SACxB,IAAI+X,uBAAwBrQ,iBAAiBC,KAAKC,YAAY,wBAAyB,SACvF1G,MAAKkC,IAAI,QAAS2U,sBAAsBC,OACxCJ,oBAAqB,MAIrB1W,MAAK6H,eAIT7H,MAAKkC,IAAI,oBAAqBwU,qBAMlClX,KAAKuK,mBAAqB,SAAU/M,SAChC,GAAIgD,MAAOR,IAEPxC,UAEAgD,KAAKkC,IAAI,kBAAmB,GAAImG,mBAAkBrL,UAClDgD,KAAKkC,IAAI,cAAelC,KAAK0C,IAAI,mBAAmBqU,eACpD/W,KAAKkC,IAAI,cAAelC,KAAK0C,IAAI,mBAAmBsU,eACpDhX,KAAKkC,IAAI,wBAAwB,IAIjClC,KAAKkC,IAAI,wBAAwB,IAMzC1C,KAAK4I,4BAA8B,SAAU6O,SAErCpQ,SAEIoQ,QAEAvd,EAAE,sCAAsCkP,OAIxClP,EAAE,sCAAsCmP,SAQpDrJ,KAAK0X,2CAA6C,SAAUjgB,GACxD,GAAI+I,MAAOR,KACP8O,GAAKrX,CACT+I,MAAKkC,IAAI,aACTlC,KAAKkC,IAAI,aACTlC,KAAKkC,IAAI,mBACTlC,KAAKkC,IAAI,eAELoM,KAEAtO,KAAKkC,IAAI,kBAAmB,IAC5BlC,KAAKkC,IAAI,oBAAqB,IAC9BlC,KAAKkC,IAAI,0BAA2B,IACpClC,KAAKkC,IAAI,sBAAuB,IAGpC,IAAI8M,WAAY,SAAU/T,MACtB,GAAOA,KAAP,CAKA,GAAIuR,IACAC,QAAUxR,KAAKhD,OACfwW,WACAhG,WACA0O,iBACAC,aACArP,WAEJ,KAAKyE,GAAK,EAAGA,GAAKC,QAASD,KAAM,CAE7B,GAAIyC,OAAQhU,KAAKuR,IAAI6K,OAAS,EAEhB,MAAVpI,QAEAA,MAAQhU,KAAKuR,IAAIlQ,wBAA0B,IAI/CmS,QAAQ3C,KAAKmD,OACbxG,QAAQqD,KAAK7Q,KAAKuR,IAAInQ,MACtB8a,cAAcrL,KAAK7Q,KAAKuR,IAAIvQ,OAC5Bmb,UAAUtL,KAAK7Q,KAAKuR,IAAI8K,UACxBvP,SAAS+D,KAAK7Q,KAAKuR,IAAIjQ,WAAWkT,UAAU,EAAG,GAAK,IAAMxU,KAAKuR,IAAIjQ,WAAWkT,UAAU,IAI5FzP,KAAKkC,IAAI,SAAUuM,SACnBzO,KAAKkC,IAAI,SAAUuG,SACnBzI,KAAKkC,IAAI,WAAYkV,WACrBpX,KAAKkC,IAAI,eAAgBiV,eACzBnX,KAAKkC,IAAI,UAAW6F,UAEhB0G,QAAQxW,OAAS,GAAKwQ,QAAQxQ,OAAS,GAEvC+H,KAAKkC,IAAI,kBAAkB,GAEvBoM,KAEAtO,KAAKkC,IAAI,oBAAqBuM,QAAQ,IACtCzO,KAAKkC,IAAI,kBAAmBuG,QAAQ,IACpCzI,KAAKkC,IAAI,sBAAuBkV,UAAU,IAC1CpX,KAAKkC,IAAI,0BAA2BiV,cAAc,IAClDnX,KAAKkC,IAAI,qBAAsB6F,SAAS,MAM5C/H,KAAKkC,IAAI,kBAAkB,IAKnClC,MAAKuX,kCAAkCvI,YAE3CxP,KAAKgY,eAAiB,SAAUC,OAE5B,MAAOzW,UAASkM,mBAAmBuK,QAIvCjY,KAAK+X,kCAAoC,SAAUvI,WAC/C,GAAIhP,MAAOR,IACXQ,MAAKkC,IAAI,kBAAkB,EAC3B,IAAIqN,aAAcvP,KAAK0C,IAAI,sBAAwB1C,KAAK0C,IAAI,sBAAsBvI,OAAS,GACvF4N,SAAWjH,cAAciI,kBAAkB,WAE/C,IAAIhB,SAASkD,WAAY,CAErB,GACIvK,UADA8J,SAAW,gBAEX4B,MAAQ,MACRC,QAAU,gBAAkBkD,YAAc,gBAAkBnU,KAAK+M,YACjE,yCACAuF,OAAS1N,KAAKwX,eAAenL,QACjC3L,UAAWI,cAAcC,eAAe2M,OAAQ,KAAMtB,OAElD1L,WAEAI,cAAcM,SAASoJ,UAAU,GAEjC9J,SAASW,KAAK,SAAUpG,KAAMqG,OAAQC,MAE9BtG,KAEA+T,UAAU/T,MAIV+E,KAAKkC,IAAI,kBAAkB,KAK9BT,OAAO,WACJX,cAAcM,SAASoJ,UAAU,QASrDhL,KAAKkY,oBAAsB,GAAI1c,OAAMC,KAAK4E,YACtC0F,QACIoS,MAAO,SAAUhW,UAGb,IAAK,GAFDiW,YAEKjgB,EAAI,EAAGA,EAAIgK,SAAS1J,OAAQN,IAEjCigB,QAAQ9L,MACJxP,uBAA0BqF,SAAShK,GAAG2E,wBAA0B,GAChEL,MAAS0F,SAAShK,GAAGsE,OAAS,GAC9BC,MAASyF,SAAShK,GAAGuE,OAAS,GAC9BO,eAAkBkF,SAAShK,GAAG8E,gBAAkB,GAChDF,WAAcoF,SAAShK,GAAG4E,YAAc,GACxCF,KAAQsF,SAAShK,GAAG0E,MAAQ,IAKpC,OADAsF,UAAS1G,KAAO2c,QACTjW,UAEX1G,KAAM,QAEV2K,WACIC,MACIE,IAAK/E,SAASkM,sBAElB2K,aAAc,SAAU5c,KAAM6c,QAC1B,OACIC,YAAa3c,KAAK+M,YAClB6P,YAAatS,MAAMhD,IAAI,SACvB4M,OAAQ,2BAIpBlJ,aAAc,SAAUnP,GACpB6J,cAAcM,SAAS,mBAAmB,IAE9CiF,WAAY,SAAUpP,GAClB6J,cAAcM,SAAS,mBAAmB,MAIlD5B,KAAKyY,uBAAyB,WAC1B,GAAIjY,MAAOR,KACPiG,GAAK,kBACLqE,GAAK/O,eAAe0K,GACxBqE,IAAGK,SAASC,OAEZpK,KAAKkY,+BAIT1Y,KAAK2Y,cAAgB,SAAUlhB,GAC3B,GAAI+I,MAAOR,KACP4Y,QAAU1e,EAAE,mBAAmBmE,KACZ,KAAnBua,QAAQngB,QAERyB,EAAE,gBAAgByP,IAAI,UAAW,OAIrC,IAAIkP,cAAerR,qBAAqBsR,kBAAkBld,KAAK+M,aAC3DkE,QAAU+L,QAAU,YAAcC,aAAe,uBACjDzG,KAAOxW,KAAKmd,YAAclM,QAAUjR,KAAKod,iBAEzChY,SAAW,SAAUvF,MAEjBmd,QAAQngB,QAAU,GAAqB,IAAhBgD,KAAKhD,QAE5ByB,EAAE,gBAAgByP,IAAI,UAAW,SACjCzP,EAAE,gBAAgByP,IAAI,QAAS,QAI/BzP,EAAE,gBAAgByP,IAAI,UAAW,QAIjB,IAAhBlO,KAAKhD,QAEL+H,KAAKkC,IAAI,cAAejH,MACxB+E,KAAKkC,IAAI,YAAY,GACrBlC,KAAKkC,IAAI,mBAAmB,GAC5BxI,EAAE,gBAAgByP,IAAI,UAAW,UAIjCnJ,KAAKkC,IAAI,mBAAmB,GAC5BlC,KAAKkC,IAAI,YAAY,IAM7BlC,MAAK0P,sBAEW,KAAZ0I,SAAkBA,QAAQngB,QAAU,GAEpCyB,EAAE+e,MACE1S,IAAK6L,KACL8G,QAAS,SAAUC,QACf,GAAI1d,MAAO0d,MACXnY,UAASvF,KAAK2d,aAO9BpZ,KAAKkQ,oBAAsB,WAEvB,GAAI1P,MAAOR,IACXQ,MAAKkC,IAAI,mBAAmB,IAIhC1C,KAAKqZ,gBAAkB,SAAU5hB,GAC7B,GAAI+I,MAAOR,KACPsZ,OAAS,WACTlH,KAAO3a,EAAEgE,KAAK8d,OAAS,eAAiB3d,KAAKod,gBAEjD9e,GAAE,sBAAwBof,QAAQ1P,YAAY0P,QAC9Cpf,EAAEzC,EAAE0S,eAAeqP,SAASF,QAC5B9Y,KAAKkC,IAAI,mBAAmB,GAC5BlC,KAAKkC,IAAI,YAAY,GACrBxI,EAAE+e,MACE1S,IAAK6L,KACL8G,QAAS,SAAUC,QACf,GAAI1d,MAAO0d,OACPM,MAAQhe,KAAKie,WACbC,SAAWle,KAAK+B,QAAQ,GAAGoc,aAC3BC,OAASpe,KAAK+B,QAAQ,GAAGsc,SACzBC,MAAQte,KAAK+B,QAAQ,GAAGwc,SACxB7L,SAAW1S,KAAK+B,QAAQ,GAAGT,WAC3Bkd,eAAiBR,MAAM,GAAGS,UAC1BC,aAAe,GACfC,YAAc,GACdC,cAAgB,GAChBC,aAAe,EAEnB,IAAyB,OAArB1e,KAAK+M,YAAsB,CAE3B,IAAK,GAAIxQ,GAAI,EAAGA,EAAIshB,MAAMhhB,OAAQN,IAELwL,SAArB8V,MAAMthB,GAAGoiB,UAETrgB,EAAE,WAAWiP,KAAK,YAAY,GAC9BiR,YAAcX,MAAMthB,GAAGoiB,SAGtBH,cAEDlgB,EAAE,WAAWiP,KAAK,YAAY,GAEIxF,SAA9B8V,MAAMthB,GAAGqiB,mBAETJ,YAAcX,MAAMthB,GAAGqiB,mBAKJ7W,SAAvB8V,MAAMthB,GAAGsiB,YAETJ,cAAgBZ,MAAMthB,GAAGsiB,WAGE9W,SAA3B8V,MAAMthB,GAAGuiB,gBAETP,aAAeV,MAAMthB,GAAGuiB,eAGG/W,SAA3B8V,MAAMthB,GAAGwiB,gBAETR,aAAeV,MAAMthB,GAAGwiB,eAGDhX,SAAvB8V,MAAMthB,GAAGyiB,YAETb,MAAQN,MAAMthB,GAAGyiB,WAGUjX,SAA3B8V,MAAMthB,GAAG0iB,gBAEThB,OAASJ,MAAMthB,GAAG0iB,eAGOlX,SAAzB8V,MAAMthB,GAAG2iB,cAET3M,SAAWsL,MAAMthB,GAAG2iB,aAGMnX,SAA1B8V,MAAMthB,GAAG4iB,eAETT,aAAeb,MAAMthB,GAAG4iB,aAKhCva,MAAKkC,IAAI,mBAAoByX,cAC7B3Z,KAAKkC,IAAI,oBAAqB0X,aAC9B5Z,KAAKkC,IAAI,0BAA2B2X,eACpC7Z,KAAKkC,IAAI,yBAA0B4X,cAIvC,GAAyB,OAArB1e,KAAK+M,YAAsB,CAE3B,GAAInM,SAAUf,KAAK+B,QAAQ,GAAGwd,YAC1BvX,OAAMvJ,EAAE,wBAAwBmE,OAEhCmC,KAAKkC,IAAI,qBAAsBxI,EAAE,wBAAwBmE,QAIzDmC,KAAKkC,IAAI,qBAAsBlG,SAC/BtC,EAAE,wBAAwBmE,IAAI7B,UAMlCiH,MAAMvJ,EAAE,yBAAyBmE,OAEjCmC,KAAKkC,IAAI,qBAAsBxI,EAAE,yBAAyBmE,QAI1DmC,KAAKkC,IAAI,qBAAsBiX,UAC/Bzf,EAAE,yBAAyBmE,IAAIsb,WAInCnZ,KAAKkC,IAAI,mBAAoBmX,QAC7BrZ,KAAKkC,IAAI,kBAAmBqX,OAC5BvZ,KAAKkC,IAAI,qBAAsByL,UAC/B3N,KAAKkC,IAAI,4BAA6BuX,gBAEtC/f,EAAE,mBAAmBmE,IAAI,IACzBmC,KAAKkC,IAAI,mBAAmB,GAC5BxI,EAAE,yBAAyBc,QAC3Bd,EAAE,yBAAyB+gB,OAC3B/gB,EAAE,sBAAsBc,QACxBd,EAAE,sBAAsB+gB,OACxB/gB,EAAE,uBAAuBc,QACzBd,EAAE,uBAAuB+gB,OACzB/gB,EAAE,wBAAwBc,QAC1Bd,EAAE,wBAAwB+gB,OAC1B/gB,EAAE,yBAAyBc,QAC3Bd,EAAE,yBAAyB+gB,UAKnCza,KAAK0a,yBAITlb,KAAKkb,sBAAwB,WAEzB,GAAIC,YAAa7Z,cAAciI,kBAAkB,gBAE7C4R,aAEAA,WAAW3R,cAgBnBxJ,KAAK0Y,4BAA8B,WAE/B,GAAIlY,MAAOR,IACXQ,MAAKkC,IAAI,YACT,IACIxB,UADA8J,SAAW,kBAEX4B,MAAQ,MACRC,QAAU,gBAAkBjR,KAAK+M,YAAc,4DACO/M,KAAK+M,YAC3DuF,OAAS1M,SAASkM,mBAAmBb,QAEzC3L,UAAWI,cAAcC,eAAe2M,OAAQ,KAAMtB,OAElD1L,WAEAI,cAAcM,SAASoJ,UAAU,GAEjC9J,SAASW,KAAK,SAAUpG,KAAMqG,OAAQC,MAElC,GAAItG,KAAM,CAEN,GAAIuR,IACAC,QAAUxR,KAAKhD,OACfwW,UAIJ,KAFAA,QAAQ3C,KAAK1Q,KAAKsB,aAAaiS,aAE1BnC,GAAK,EAAGA,GAAKC,QAASD,KAEvBiC,QAAQ3C,KAAK7Q,KAAKuR,IAGtBxM,MAAKkC,IAAI,SAAUuM,SACfA,QAAQxW,OAAS,GAEjB+H,KAAKkC,IAAI,QAASuM,QAAQ,OAMnChN,OAAO,WACNX,cAAcM,SAASoJ,UAAU,OAO7ChL,KAAKob,gBAAkB,WAEnB,GAAI5a,MAAOR,IAEXQ,MAAK0C,IAAI,uBAAuBmD,QAGpCrG,KAAKqb,2BAA6B,SAAU5jB,GACxC,GAAI+I,MAAOR,KACPgV,iBAAmBvd,EAAEgE,KACrB6f,kBAAoB9a,KAAK0C,IAAI,kBAEjCoY,mBAAkBzJ,OAASmD,iBAAiBvY,MAC5C6e,kBAAkBxJ,QAAUkD,iBAAiBvY,MAC7C6e,kBAAkBC,QAAUvG,iBAAiBjY,WAC7Cue,kBAAkBze,KAAOmY,iBAAiBnY,KAC1Cye,kBAAkBE,YAAc,IAEhChb,KAAKkC,IAAI,kBAAmB4Y,mBAC5B9a,KAAKkC,IAAI,cAAelC,KAAK0C,IAAI,mBAAmBqU,eACpD/W,KAAKkC,IAAI,cAAelC,KAAK0C,IAAI,mBAAmBsU,eACpDhX,KAAKkC,IAAI,wBAAwB,EAEjC,IAAI4H,IAAK/O,eAAe,kBACxB+O,IAAGE,SCliFX,QAASiR,8BAGLjY,wBAAwBkY,KAAK1b,MAG7BA,KAAK6F,kBAAmB,EACxB7F,KAAK2b,0BAEL3b,KAAKqI,cAAgB,SAAU5Q,GAC3B,GACI6H,UADAkB,KAAOR,IAGXV,UAAW,GAAIuJ,oBAAoBnL,WAAW,IAC9C4B,SAASwJ,UAAW,EAEpBtI,KAAKuI,gBACLvI,KAAKkC,IAAI,aAAcpD,UACvBkB,KAAKkC,IAAI,aACTlC,KAAKkC,IAAI,oBAAoB,GAE7BlC,KAAKwI,aAAY,EACjB,IAAIC,WACJzI,MAAKkC,IAAI,SAAUuG,SACnBzI,KAAKkC,IAAI,kBAAmBuG,QAAQC,SACpC1I,KAAKkC,IAAI,cACTlC,KAAKkC,IAAI,gBAGb1C,KAAKuK,mBAAqB,SAAU/M,SAChC,GAAIgD,MAAOR,IAEPxC,UAEIA,QAAQoe,8BAA+B,GAEvCpb,KAAKkC,IAAI,oBAAqBlF,QAAQoe,4BAI1Cpb,KAAKkC,IAAI,kBAAmB,GAAImG,mBAAkBrL,UAClDgD,KAAKkC,IAAI,cAAelC,KAAK0C,IAAI,mBAAmBqU,eACpD/W,KAAKkC,IAAI,cAAelC,KAAK0C,IAAI,mBAAmBsU,eACpDhX,KAAKkC,IAAI,wBAAwB,IAIjClC,KAAKkC,IAAI,wBAAwB,IAKzC1C,KAAK2Y,cAAgB,SAAUlhB,GAC3B,GAAI+I,MAAOR,KACP4Y,QAAU1e,EAAE,mBAAmBmE,KACnCmC,MAAKkC,IAAI,kBACTlC,KAAKkC,IAAI,oBAAoB,GAC7BlC,KAAK0P,qBACL,IACIhP,UADA8J,SAAW,gBAGX6N,aAAerR,qBAAqBsR,kBAAkBld,KAAK+M,aAC3DkE,QAAU+L,QAAU,YAAcC,aAAe,uBACjDzG,KAAOxW,KAAKmd,YAAclM,QAAUjR,KAAKod,iBAEzChY,SAAW,SAAUvF,MAEjBmd,QAAQngB,QAAU,GAAqB,IAAhBgD,KAAKhD,OAE5B+H,KAAKkC,IAAI,oBAAoB,GAI7BlC,KAAKkC,IAAI,oBAAoB,GAIb,IAAhBjH,KAAKhD,QAEL+H,KAAKkC,IAAI,cAAejH,MACxB+E,KAAKkC,IAAI,YAAY,GACrBlC,KAAKkC,IAAI,mBAAmB,GAC5BlC,KAAKkC,IAAI,oBAAoB,KAI7BlC,KAAKkC,IAAI,mBAAmB,GAC5BlC,KAAKkC,IAAI,YAAY,IAK7BlC,MAAK0P,sBAEW,KAAZ0I,SAAkBA,QAAQngB,QAAU,IAEpCyI,SAAWI,cAAcC,eAAe6Q,SACxC9Q,cAAcM,SAASoJ,UAAU,GACjC9J,SACKW,KAAK,SAAUpG,KAAMqG,OAAQC,MAE1Bf,SAASvF,KAAK2d,WAGjBnX,OAAO,WAEJX,cAAcM,SAASoJ,UAAU,KAGpC9I,KAAK,SAAUC,SAAUL,OAAQM,SAE9B5B,KAAKkC,IAAI,oBAAoB,OAO7C1C,KAAKqZ,gBAAkB,SAAU5hB,GAC7B,GAAI+I,MAAOR,KACPsZ,OAAS,WACTlH,KAAO3a,EAAEgE,KAAK8d,OAAS,eAAiB3d,KAAKod,gBAEjD9e,GAAE,sBAAwBof,QAAQ1P,YAAY0P,QAC9Cpf,EAAEzC,EAAE0S,eAAeqP,SAASF,QAC5B9Y,KAAKkC,IAAI,mBAAmB,GAC5BlC,KAAKkC,IAAI,YAAY,EAErB,IAAIsI,UAAW,gBACX9J,SAAWI,cAAcC,eAAe6Q,QAE5C9Q,eAAcM,SAASoJ,UAAU,GACjC9J,SACKW,KAAK,SAAUsX,OAAQrX,OAAQC,MAE5B,GAAItG,MAAO0d,OACPU,OAASpe,KAAK+B,QAAQ,GAAGsc,SACzBC,MAAQte,KAAK+B,QAAQ,GAAGwc,SACxBzR,SAAW9M,KAAK+B,QAAQ,GAAGT,WAC3Bqd,YAAc,EAEd3e,MAAK+B,QAAQ,GAAGwd,aAAargB,OAAOlC,OAAS,IAE7C2hB,YAAc3e,KAAK+B,QAAQ,GAAGwd,aAC9Bxa,KAAKkC,IAAI,4BAA6B0X,cAG1C5Z,KAAKkC,IAAI,oBAAqB0X,aAC9B5Z,KAAKkC,IAAI,mBAAoBlC,KAAKqb,aAAahC,SAC/CrZ,KAAKkC,IAAI,kBAAmBqX,OAC5BvZ,KAAKkC,IAAI,qBAAsB6F,UAE/BrO,EAAE,mBAAmBmE,IAAI,IACzBmC,KAAKkC,IAAI,mBAAmB,GAC5BxI,EAAE,yBAAyBc,QAC3Bd,EAAE,yBAAyB+gB,OAC3B/gB,EAAE,sBAAsBc,QACxBd,EAAE,sBAAsB+gB,OACxB/gB,EAAE,uBAAuBc,QACzBd,EAAE,uBAAuB+gB,OACzB/gB,EAAE,wBAAwBc,QAC1Bd,EAAE,wBAAwB+gB,OAC1Bza,KAAKkC,IAAI,yCAAyC,GAClDlC,KAAKsb,oBAAoB1B,YAAa7R,YAGzCtG,OAAO,WAEJX,cAAcM,SAASoJ,UAAU,KAGpC9I,KAAK,SAAUC,SAAUL,OAAQM,SAE9B5B,KAAKkC,IAAI,oBAAoB,KAIrClC,KAAK0a,yBAKTlb,KAAK8b,oBAAsB,SAAUjK,OAAQ9U,YACzC,GAAIyD,MAAOR,KACP+b,wBACAlK,OAAQA,OACR9U,WAAYA,WAGhByD,MAAKkC,IAAI,yBAA0BqZ,yBAIvC/b,KAAKgc,eAAiB,WAClB,GAAIxb,MAAOR,IAEX,OAAQQ,MAAK0C,IAAI,mCAAqC1C,KAAK0C,IAAI,sBAC3D1C,KAAK0C,IAAI,uCAAyC1C,KAAK0C,IAAI,uBAKnElD,KAAK4Q,KAAO,WACR,GAAIpQ,MAAOR,KACPmb,WAAa7Z,cAAciI,kBAAkB,gBAEjD,IAAK4R,WAAW1P,WAAhB,CAMA,GAAIjL,KAAK2P,yBAIL,MAFA3P,MAAKkC,IAAI,eAAe,GACxBlC,KAAKkC,IAAI,eAAgBvE,UAAU,oBAC5B,CAIX,IAEI+C,UACA8I,MACA4C,MAJAtN,SAAWkB,KAAK0C,IAAI,cACpB8H,SAAW,eAKfxK,MAAK+G,2BAA0B,GAE/BjI,SAASmQ,MAAQzP,KAAK6b,aAAavc,SAASmQ,OAC5CnQ,SAASsc,4BAA+Bpb,KAAKwb,kBAAoB1c,SAASsc,2BACtEtc,SAASwJ,UAETkB,MAAQtI,KAAKC,UAAUrC,SAAS6L,sBAChCyB,MAAQ,SAIR5C,MAAQtI,KAAKC,UAAUrC,SAAS+L,yBAChCuB,MAAQ,OAIZ1L,SAAWI,cAAcC,eAAeC,SAASgF,aAAcwD,MAAO4C,OAEtEpM,KAAKuI,gBAELzH,cAAcM,SAASoJ,UAAU,GAEjC9J,SACKW,KAAK,SAAUpG,KAAMqG,OAAQC,MAE1BvB,KAAKyb,iCAAiCxgB,KAAM6D,YAG/C2C,OAAO,WAEJX,cAAcM,SAASoJ,UAAU,KAGpC9I,KAAK,SAAUC,SAAUL,OAAQM,SAE9B5B,KAAK0b,kBAAkB/Z,cAMnCnC,KAAKic,iCAAmC,SAAUxgB,KAAM+B,SACpD,GAAIgD,MAAOR,IAEX,IAAIvE,MAAQA,KAAK8W,WAAY,CAEzB,GAAIvI,OAAQvO,KAAK+B,QACbuM,gBAAkBvJ,KAAK0C,IAAI,iBAG3B8G,OAAMtM,aAAc,GAEpB8C,KAAKgS,cAAcxI,OAKnBxM,QAAQsL,UAGRtI,KAAK+J,mBAAmB/M,QAAQiV,qBAAqBzI,QACrDD,gBAAgB2I,OAAO,EAAGlV,QAAQ2N,wBAKlC3K,KAAK+J,mBAAmBP,OAExBD,gBAAgB4I,WAAW3I,QAI/BD,gBAAgB+I,OAEQ,QAApBrX,KAAK8W,YAEL/R,KAAKkC,IAAI,yBAAyB,GAClClC,KAAKkC,IAAI,kBAAkB,GAC3BlC,KAAK8I,cAIL9I,KAAKkC,IAAI,kBAAkB,GAC3BlC,KAAK8I,eAQjBtJ,KAAKwS,cAAgB,SAAU/W,MAE3B,GAAI+E,MAAOR,KACP+J,gBAAkBvJ,KAAK0C,IAAI,kBAC3BmQ,OAAStJ,gBAAgBuJ,OAE7B,IAAID,OAAS,EAET,IAAK,GAAIE,GAAI,EAAGA,EAAIF,OAAQE,IAAK,CAE7B,GAAIC,aAAczJ,gBAAgB0J,GAAGF,EACjCC,aAAY9V,aAAc,GAAQ8V,YAAYvN,KAAOxK,KAAKwK,KAE1DuN,YAAY9V,WAAY,KAUxCsC,KAAKkc,kBAAoB,SAAU/Z,UAC/B,GAAI3B,MAAOR,KAEPqC,QAAUF,SAASL,MAQvB,IANyC,QAArCK,SAAS6Q,aAAaT,aAEtBjb,OAAO2b,SAASC,KAAO,iCAAmCtX,KAAKoU,QAI1B,QAArC7N,SAAS6Q,aAAaT,WAEtB/R,KAAKkC,IAAI,eAAe,GACxBlC,KAAKkC,IAAI,eAAgBvE,UAAU,kBAEhC,IAAyC,QAArCgE,SAAS6Q,aAAaT,WAE7B/R,KAAKkC,IAAI,eAAe,GACxBlC,KAAKkC,IAAI,eAAgBvE,UAAU,2BAEhC,IAAgB,MAAZkE,QAEP7B,KAAKkC,IAAI,eAAe,GACxBlC,KAAKkC,IAAI,eAAgB,QAEtB,IAAgB,MAAZL,QAAiB,CAExB,GAAIxE,OAAQsE,SAAS6Q,aAAaT,UAClC/R,MAAKkC,IAAI,eAAe,GACxBlC,KAAKkC,IAAI,eAAgBvE,UAAU,OAASN,UAMpDmC,KAAKsJ,UAAY,SAAU7R,GACvB,GAAI+I,MAAOR,IACXQ,MAAKoI,6BAA4B,EACjC,IAAIZ,OAAQ1G,cAAciI,kBAAkB,gBAC5CvB,OAAMwB,aACNxB,MAAMyB,eAENjJ,KAAKkC,IAAI,iBACTlC,KAAKkC,IAAI,YAAY,GACrBxI,EAAE,iBAAiBmP,OACnB7I,KAAKkC,IAAI,eAAe,GACxBlC,KAAKkC,IAAI,eAAe,GACxBxI,EAAE,aAAamP,OACfnP,EAAE,YAAYyP,IAAI,aAAc,WAChCnJ,KAAKkC,IAAI,qBAAqB,GAEmB,IAA7ClC,KAAK0C,IAAI,kBAAkBzH,OAAOhD,SAElC6I,cAAcM,SAAS,mBAAmB,GAC1CN,cAAcM,SAAS,oBAAoB;AAC3C1H,EAAE,YAAYyP,IAAI,aAAc,UAChCnJ,KAAKkC,IAAI,qBAAqB,IAI9B2E,QAEAnN,EAAE,oBAAoB0P,YAAY,YAItCpJ,KAAK2b,8BAITnc,KAAKoL,YAAc,SAAU3T,GACzB,GAAI+I,MAAOR,IAENqH,SAED7G,KAAK+J,mBAAmB9S,EAAEgE,MAI9B+E,KAAKoI,6BAA4B,EAEjC,IAAItJ,UAAWkB,KAAK0C,IAAI,mBAAmBmI,uBAC3C/L,UAAW,GAAIuJ,mBAAkBvJ,UACjCA,SAASkM,WAAY,EACrBlM,SAASmQ,MAAQzP,KAAK6b,aAAavc,SAASmQ,OAC5CjP,KAAKuI,gBACLvI,KAAKkC,IAAI,aAAcpD,UACvBkB,KAAKwI,aAAY,GACjBxI,KAAK4b,2BAA2B9c,UAChCkB,KAAKsb,oBAAoBxc,SAASuS,OAAQvS,SAASic,UAIvDvb,KAAKoc,2BAA6B,SAAU5e,SACxC,GAAIgD,MAAOR,IAEPwH,sBAAqB6U,yCAErB/a,cAAciI,kBAAkB,iBAAiBkC,WACjDjL,KAAKkC,IAAI,oBAAoBlF,QAAQoe,8BAM7C5b,KAAKmc,2BAA6B,WAC9B,GAAI3b,MAAOR,IAEPwH,sBAAqB6U,wCAErB7b,KAAKkC,IAAI,oBAAoB,IAMrC1C,KAAK+I,cAAgB,SAAUtR,GAC3B,GAAI+I,MAAOR,IAEXQ,MAAKkC,IAAI,kBAAkB,GAC3BlC,KAAKkC,IAAI,eAAe,GACxBlC,KAAKkC,IAAI,iBAAiB,GAC1BlC,KAAKkC,IAAI,yBAAyB,GAClClC,KAAK0P,sBACLhW,EAAE,mBAAmBmE,IAAI,IACzBnE,EAAE,gBAAgByP,IAAI,UAAW,QACjCnJ,KAAKkC,IAAI,oBAAoB,IAIjC1C,KAAK6H,qBAAuB,WACxB,GAAIrH,MAAOR,IAEXpE,MAAKwM,kBACDkU,SAAU,SAAUxc,OAEhB,MAAOU,MAAK+b,mBAAmBzc,QAGnC0c,QAAS,SAAU1c,OAEf,MAAOU,MAAKic,kBAAkB3c,SAKtClE,KAAKuM,mBAAmBmU,SAAW,SAAUxc,OAEzC,MAAIA,OAAM4I,GAAG,oBAEF9M,KAAK8gB,SAASC,mBAEd7c,MAAM4I,GAAG,kBAET9M,KAAK8gB,SAASE,cAEd9c,MAAM4I,GAAG,mBAET9M,KAAK8gB,SAASG,eAFlB,QAQXjhB,KAAKuM,mBAAmBqU,QAAU,SAAU1c,OAExC,GAAIA,MAAM4I,GAAG,oBACT,MAAO9M,MAAK8gB,SAASI,oBAOjC9c,KAAKuc,mBAAqB,SAAUzc,OAChC,GAAIid,QAASjd,MAAMzB,KAEnB,SAAIyB,MAAM4I,GAAG,qBACT5I,MAAM4I,GAAG,mBACT5I,MAAM4I,GAAG,oBACT5I,MAAM4I,GAAG,qBAEwB,GAAxBqU,OAAOpiB,OAAOlC,SAQ/BuH,KAAKyc,kBAAoB,SAAU3c,OAE/B,GAAIA,MAAM4I,GAAG,kBAAmB,CAE5B5I,MAAMzB,IAAIyB,MAAMzB,MAAM1D,OACtB,IAAIuD,UAAW4B,MAAMrE,KAAK,WAAa,GAAIuC,QAAO8B,MAAMrE,KAAK,YAAc,SAC3E,OAAOyC,UAASrE,KAAKiG,MAAMzB,OAExB,GAAIyB,MAAM4I,GAAG,sBAAuB,CAEvC5I,MAAMzB,IAAIyB,MAAMzB,MAAM1D,OACtB,IAAIuD,UAAW4B,MAAMrE,KAAK,WAAa,GAAIuC,QAAO8B,MAAMrE,KAAK,YAAc,iBAC3E,OAAOyC,UAASrE,KAAKiG,MAAMzB,MAAM1D,QAE9B,GAAImF,MAAM4I,GAAG,mBAAoB,CAEpC5I,MAAMzB,IAAIyB,MAAMzB,MAAM1D,OACtB,IAAIuD,UAAW4B,MAAMrE,KAAK,WAAa,GAAIuC,QAAO8B,MAAMrE,KAAK,YAAc,wBAC3E,OAAOyC,UAASrE,KAAKiG,MAAMzB,OAI/B,OAAO,GAKX2B,KAAK6b,aAAe,SAAUmB,WAE1B,MAAIA,YAAkC,IAArBA,UAAUvkB,OAEhBukB,UAIPA,UAEOhd,KAAKid,cAAcD,UAAUhhB,cAAcrB,QAI/C,IAIXqF,KAAKkd,aAAe,SAAUpG,WAE1B,MAAIA,YAAaA,UAAUre,OAAS,EAEzBqe,UAIPA,UAEO9W,KAAKid,cAAcnG,UAAU9a,cAAcrB,QAI/C,IAIXqF,KAAKid,eACDE,UAAa,KACbC,YAAe,KACfC,OAAU,KACVC,MAAS,KACTC,gBAAiB,KACjBC,QAAW,KACXC,OAAU,KACVC,KAAQ,KACRC,SAAY,KACZC,KAAQ,KACRC,QAAW,KACXC,OAAU,KACVC,QAAW,KACXC,UAAa,KACbC,QAAW,KACXC,SAAY,KACZC,QAAW,KACXC,wBAAyB,KACzBC,QAAW,KACXC,SAAY,KACZC,WAAc,KACdC,QAAW,KACXC,OAAU,KACVC,cAAiB,KACjBC,MAAS,KACTC,KAAQ,KACRC,QAAW,KACXC,QAAW,KACXC,QAAW,KACXC,UAAa,KACbC,KAAQ,KACRC,eAAgB,KAChBC,QAAW,KACXC,OAAU,KACVC,QAAW,KACXC,MAAS,KACTC,UAAa,KACbC,OAAU,KACVC,QAAW,KACXC,SAAY,KACZC,QAAW,KACXC,QAAW,KACXC,QAAW,KACXC,MAAS,KACTC,MAAS,KACTC,QAAW,KACXC,KAAQ,KACRC,OAAU,KACVC,MAAS,KACTC,kBAAmB,KACnBC,SAAY,KACZC,QAAW,KACXC,OAAU,KACVC,QAAW,KACXC,OAAU,KACVC,MAAS,KACTC,OAAU,KACVC,OAAU,KACVC,OAAU,KACVC,MAAS,KACTC,SAAY,KACZC,QAAW,KACXC,SAAY,KACZC,OAAU,KACVC,QAAW,KACXC,QAAW,KACXC,KAAQ,KACRC,UAAa,KACbC,MAAS,KACTC,MAAS,KACTC,QAAW,KACXC,kBAAmB,KACnBC,MAAS,KACTC,QAAW,KACXC,QAAW,KACXC,qBAAsB,KACtBC,qBAAsB,KACtBC,OAAU,KACVC,MAAS,KACTC,KAAQ,KACRC,OAAU,KACVC,OAAU,KACVC,QAAW,KACXC,MAAS,KACTC,QAAW,KACXC,YAAa,KACbC,SAAY,KACZC,QAAW,KACXC,eAAgB,KAChBC,OAAU,KACVC,QAAW,KACXC,OAAU,KACVC,OAAU,KACVC,OAAU,KACVC,QAAW,KACXC,MAAS,KACTC,QAAW,KACXC,QAAW,KACXC,MAAS,KACTC,OAAU,KACVC,uBAAwB,KACxBC,SAAY,KACZC,QAAW,KACXC,QAAW,KACXC,OAAU,KACVC,QAAW,KACXC,gBAAiB,KACjBC,oBAAqB,KACrBC,UAAa,KACbC,MAAS,KACTC,GAAM,YACNC,GAAM,cACNC,GAAM,SACNC,GAAM,QACNC,GAAM,gBACNC,GAAM,UACNC,GAAM,SACNC,GAAM,OACNC,GAAM,WACNC,GAAM,OACNC,GAAM,UACNC,GAAM,SACNC,GAAM,UACNC,GAAM,YACNC,GAAM,UACNC,GAAM,WACNC,GAAM,UACNC,GAAM,wBACNC,GAAM,UACNC,GAAM,WACNC,GAAM,aACNC,GAAM,UACNC,GAAM,SACNC,GAAM,oBACNC,GAAM,gBACNC,GAAM,QACNC,GAAM,OACNC,GAAM,UACNC,GAAM,UACNC,GAAM,UACNC,GAAM,YACNC,GAAM,OACNC,GAAM,eACNC,GAAM,UACNC,GAAM,SACNC,GAAM,UACNC,GAAM,QACNC,GAAM,YACNC,GAAM,SACNC,GAAM,UACNC,GAAM,WACNC,GAAM,UACNC,GAAM,UACNC,GAAM,UACNC,GAAM,QACNC,GAAM,QACNC,GAAM,UACNC,GAAM,OACNC,GAAM,SACNC,GAAM,QACNC,GAAM,wBACNC,GAAM,WACNC,GAAM,UACNC,GAAM,SACNC,GAAM,UACNC,GAAM,SACNC,GAAM,QACNC,GAAM,SACNC,GAAM,SACNC,GAAM,SACNC,GAAM,QACNC,GAAM,YACNC,GAAM,QACNC,GAAM,WACNC,GAAM,UACNC,GAAM,WACNC,GAAM,SACNC,GAAM,UACNC,GAAM,UACNC,GAAM,OACNC,GAAM,YACNC,GAAM,QACNC,GAAM,QACNC,GAAM,UACNC,GAAM,kBACNC,GAAM,QACNC,GAAM,UACNC,GAAM,UACNC,GAAM,kBACNC,GAAM,gBACNC,GAAM,SACNC,GAAM,QACNC,GAAM,OACNC,GAAM,SACNC,GAAM,SACNC,GAAM,UACNC,GAAM,QACNC,GAAM,UACNC,GAAM,YACNC,GAAM,WACNC,GAAM,UACNC,GAAM,eACNC,GAAM,SACNC,GAAM,UACNC,GAAM,SACNC,GAAM,SACNC,GAAM,SACNC,GAAM,UACNC,GAAM,QACNC,GAAM,UACNC,GAAM,UACNC,GAAM,QACNC,GAAM,SACNC,GAAM,uBACNC,GAAM,WACNC,GAAM,UACNC,GAAM,UACNC,GAAM,SACNC,GAAM,UACNC,GAAM,iBC9yBd,QAASC,8BAGLvnB,wBAAwBkY,KAAK1b,MAG7BA,KAAK6F,kBAAmB,EACxB7F,KAAK2b,0BAEL3b,KAAKqI,cAAgB,SAAU5Q,GAC3B,GACI6H,UADAkB,KAAOR,IAGXV,UAAW,GAAIuJ,oBAAoBnL,WAAW,IAC9C4B,SAASwJ,UAAW,EAEpBtI,KAAKuI,gBACLvI,KAAKkC,IAAI,aAAcpD,UACvBkB,KAAKkC,IAAI,aACTlC,KAAKkC,IAAI,oBAAoB,GAE7BlC,KAAKwI,aAAY,EACjB,IAAIC,WACJzI,MAAKkC,IAAI,SAAUuG,SACnBzI,KAAKkC,IAAI,kBAAmBuG,QAAQC,SACpC1I,KAAKkC,IAAI,cACTlC,KAAKkC,IAAI,gBAGb1C,KAAKuK,mBAAqB,SAAU/M,SAChC,GAAIgD,MAAOR,IAEPxC,UAEIA,QAAQoe,8BAA+B,GAEvCpb,KAAKkC,IAAI,oBAAqBlF,QAAQoe,4BAI1Cpb,KAAKkC,IAAI,kBAAmB,GAAImG,mBAAkBrL,UAClDgD,KAAKkC,IAAI,cAAelC,KAAK0C,IAAI,mBAAmBqU,eACpD/W,KAAKkC,IAAI,cAAelC,KAAK0C,IAAI,mBAAmBsU,eACpDhX,KAAKkC,IAAI,wBAAwB,IAIjClC,KAAKkC,IAAI,wBAAwB,IAKzC1C,KAAK2Y,cAAgB,SAAUlhB,GAC3B,GAAI+I,MAAOR,KACP4Y,QAAU1e,EAAE,mBAAmBmE,KACnCmC,MAAKkC,IAAI,kBACTlC,KAAKkC,IAAI,oBAAoB,GAC7BlC,KAAK0P,qBACL,IACIhP,UADA8J,SAAW,gBAGX6N,aAAerR,qBAAqBsR,kBAAkBld,KAAK+M,aAC3DkE,QAAU+L,QAAU,YAAcC,aAAe,uBACjDzG,KAAOxW,KAAKmd,YAAclM,QAAUjR,KAAKod,iBAEzChY,SAAW,SAAUvF,MAEjBmd,QAAQngB,QAAU,GAAqB,IAAhBgD,KAAKhD,OAE5B+H,KAAKkC,IAAI,oBAAoB,GAI7BlC,KAAKkC,IAAI,oBAAoB,GAIb,IAAhBjH,KAAKhD,QAEL+H,KAAKkC,IAAI,cAAejH,MACxB+E,KAAKkC,IAAI,YAAY,GACrBlC,KAAKkC,IAAI,mBAAmB,GAC5BlC,KAAKkC,IAAI,oBAAoB,KAI7BlC,KAAKkC,IAAI,mBAAmB,GAC5BlC,KAAKkC,IAAI,YAAY,IAK7BlC,MAAK0P,sBAEW,KAAZ0I,SAAkBA,QAAQngB,QAAU,IAEpCyI,SAAWI,cAAcC,eAAe6Q,SACxC9Q,cAAcM,SAASoJ,UAAU,GACjC9J,SACKW,KAAK,SAAUpG,KAAMqG,OAAQC,MAE1Bf,SAASvF,KAAK2d,WAGjBnX,OAAO,WAEJX,cAAcM,SAASoJ,UAAU,KAGpC9I,KAAK,SAAUC,SAAUL,OAAQM,SAE9B5B,KAAKkC,IAAI,oBAAoB,OAO7C1C,KAAKqZ,gBAAkB,SAAU5hB,GAC7B,GAAI+I,MAAOR,KACPsZ,OAAS,WACTlH,KAAO3a,EAAEgE,KAAK8d,OAAS,eAAiB3d,KAAKod,gBAEjD9e,GAAE,sBAAwBof,QAAQ1P,YAAY0P,QAC9Cpf,EAAEzC,EAAE0S,eAAeqP,SAASF,QAC5B9Y,KAAKkC,IAAI,mBAAmB,GAC5BlC,KAAKkC,IAAI,YAAY,EAErB,IAAIsI,UAAW,gBACX9J,SAAWI,cAAcC,eAAe6Q,QAE5C9Q,eAAcM,SAASoJ,UAAU,GACjC9J,SACKW,KAAK,SAAUsX,OAAQrX,OAAQC,MAE5B,GAMIqY,aANA3e,KAAO0d,OACPM,MAAQhe,KAAKie,WACbG,OAASpe,KAAK+B,QAAQ,GAAGsc,SACzBC,MAAQte,KAAK+B,QAAQ,GAAGwc,SACxB7L,SAAW1S,KAAK+B,QAAQ,GAAGT,WAC3Bkd,eAAiBR,MAAM,GAAGS,UACbC,aAAe,EAI5BC,aAFA3e,MAAQA,KAAKie,YAAcje,KAAKie,WAAWjhB,OAAS,EAEtC+G,qBAAqBia,MAAO,YAAc,GAI1Cja,qBAAqB/D,KAAK+B,QAAS,iBAAmB,EAIxE,KAAK,GAAIrF,GAAI,EAAGA,EAAIshB,MAAMhhB,OAAQN,IAECwL,SAA3B8V,MAAMthB,GAAGuiB,gBAETP,aAAeV,MAAMthB,GAAGuiB,eAGG/W,SAA3B8V,MAAMthB,GAAGwiB,gBAETR,aAAeV,MAAMthB,GAAGwiB,cAKX,MAAjBR,cAEA3Z,KAAKkC,IAAI,qBAAsByX,cAC/B3Z,KAAKkC,IAAI,2BAA4ByX,gBAIrC3Z,KAAKkC,IAAI,qBAAsB,IAC/BlC,KAAKkC,IAAI,2BAA4B,KAIzClC,KAAKkC,IAAI,oBAAqB0X,aAC9B5Z,KAAKkC,IAAI,mBAAoBmX,QAC7BrZ,KAAKkC,IAAI,kBAAmBqX,OAC5BvZ,KAAKkC,IAAI,qBAAsByL,UAC/B3N,KAAKkC,IAAI,4BAA6BuX,gBACtCzZ,KAAKkC,IAAI,yCAAyC,GAElDxI,EAAE,mBAAmBmE,IAAI,IACzBmC,KAAKkC,IAAI,mBAAmB,GAC5BxI,EAAE,yBAAyBc,QAC3Bd,EAAE,yBAAyB+gB,OAC3B/gB,EAAE,sBAAsBc,QACxBd,EAAE,sBAAsB+gB,OACxB/gB,EAAE,uBAAuBc,QACzBd,EAAE,uBAAuB+gB,OACzB/gB,EAAE,wBAAwBc,QAC1Bd,EAAE,wBAAwB+gB,OAC1B/gB,EAAE,yBAAyBc,QAC3Bd,EAAE,yBAAyB+gB,MAE3B,IAAI3b,UAAWkB,KAAK0C,IAAI,aACxB1C,MAAKsb,oBAAoBxc,YAG5B2C,OAAO,WAEJX,cAAcM,SAASoJ,UAAU,KAGpC9I,KAAK,SAAUC,SAAUL,OAAQM,SAE9B5B,KAAKkC,IAAI,oBAAoB,KAIrClC,KAAK0a,yBAITlb,KAAK8b,oBAAsB,SAAUte,SACjC,GAAIgD,MAAOR,KACP+b,wBACAlK,OAAQrU,QAAQqU,OAChBC,QAAStU,QAAQsU,QACjBjV,KAAMW,QAAQX,KACd0e,QAAS/d,QAAQ+d,QAGrB/a,MAAKkC,IAAI,yBAA0BqZ,yBAIvC/b,KAAKgrB,gBAAkB,WACnB,GAAIxqB,MAAOR,IAEX,OAAQQ,MAAK0C,IAAI,mCAAqC1C,KAAK0C,IAAI,sBAC3D1C,KAAK0C,IAAI,oCAAsC1C,KAAK0C,IAAI,uBACxD1C,KAAK0C,IAAI,iCAAmC1C,KAAK0C,IAAI,oBACrD1C,KAAK0C,IAAI,oCAAsC1C,KAAK0C,IAAI,uBAIhElD,KAAKirB,6BAA+B,SAAUC,kBAC1C,GAAI1qB,MAAOR,IACXkrB,kBAAiBtP,2BAA8BsP,iBAAiBtP,6BAA+Bpb,KAAKwqB,kBACpGE,iBAAiBrZ,OAASqZ,iBAAiBrZ,OAAO5B,UAAU,EAAI,GAAKib,iBAAiBpZ,QAAQrZ,SAIlGuH,KAAK4Q,KAAO,WACR,GAAIpQ,MAAOR,KACPmb,WAAa7Z,cAAciI,kBAAkB,gBAEjD,IAAK4R,WAAW1P,WAAhB,CAMA,GAAIjL,KAAK2P,yBAIL,MAFA3P,MAAKkC,IAAI,eAAe,GACxBlC,KAAKkC,IAAI,eAAgBvE,UAAU,oBAC5B,CAIX,IAEI+C,UACA8I,MACA4C,MAJAtN,SAAWkB,KAAK0C,IAAI,cACpB8H,SAAW,eAKfxK,MAAK+G,2BAA0B,GAC/B/G,KAAKyqB,6BAA6B3rB,UAE9BA,SAASwJ,UAETkB,MAAQtI,KAAKC,UAAUrC,SAAS6L,sBAChCyB,MAAQ,SAIR5C,MAAQtI,KAAKC,UAAUrC,SAAS+L,yBAChCuB,MAAQ,OAIZ1L,SAAWI,cAAcC,eAAeC,SAASgF,aAAcwD,MAAO4C,OAEtEpM,KAAKuI,gBAELzH,cAAcM,SAASoJ,UAAU,GAEjC9J,SACKW,KAAK,SAAUpG,KAAMqG,OAAQC,MAE1BvB,KAAKyb,iCAAiCxgB,KAAM6D,YAG/C2C,OAAO,WAEJX,cAAcM,SAASoJ,UAAU,KAGpC9I,KAAK,SAAUC,SAAUL,OAAQM,SAE9B5B,KAAK0b,wBAMjBlc,KAAKic,iCAAmC,SAAUxgB,KAAM+B,SACpD,GAAIgD,MAAOR,IAEX,IAAIvE,MAAQA,KAAK8W,WAAY,CAEzB,GAAIvI,OAAQvO,KAAK+B,QACbuM,gBAAkBvJ,KAAK0C,IAAI,iBAG3B8G,OAAMtM,aAAc,GAEpB8C,KAAKgS,cAAcxI,OAKnBxM,QAAQsL,UAGRtI,KAAK+J,mBAAmB/M,QAAQiV,qBAAqBzI,QACrDD,gBAAgB2I,OAAO,EAAGlV,QAAQ2N,wBAKlC3K,KAAK+J,mBAAmBP,OAExBD,gBAAgB4I,WAAW3I,QAI/BD,gBAAgB+I,OAEQ,QAApBrX,KAAK8W,YAEL/R,KAAKkC,IAAI,yBAAyB,GAClClC,KAAKkC,IAAI,kBAAkB,GAC3BlC,KAAK8I,cAIL9I,KAAKkC,IAAI,kBAAkB,GAC3BlC,KAAK8I,eAQjBtJ,KAAKwS,cAAgB,SAAU/W,MAE3B,GAAI+E,MAAOR,KACP+J,gBAAkBvJ,KAAK0C,IAAI,kBAC3BmQ,OAAStJ,gBAAgBuJ,OAE7B,IAAID,OAAS,EAET,IAAK,GAAIE,GAAI,EAAGA,EAAIF,OAAQE,IAAK,CAE7B,GAAIC,aAAczJ,gBAAgB0J,GAAGF,EACjCC,aAAY9V,aAAc,GAAQ8V,YAAYvN,KAAOxK,KAAKwK,KAE1DuN,YAAY9V,WAAY,KAUxCsC,KAAKkc,kBAAoB,SAAU/Z,UAC/B,GAAI3B,MAAOR,KAEPqC,QAAUF,SAASL,MAQvB,IANyC,QAArCK,SAAS6Q,aAAaT,aAEtBjb,OAAO2b,SAASC,KAAO,iCAAmCtX,KAAKoU,QAI1B,QAArC7N,SAAS6Q,aAAaT,WAEtB/R,KAAKkC,IAAI,eAAe,GACxBlC,KAAKkC,IAAI,eAAgBvE,UAAU,kBAEhC,IAAyC,QAArCgE,SAAS6Q,aAAaT,WAE7B/R,KAAKkC,IAAI,eAAe,GACxBlC,KAAKkC,IAAI,eAAgBvE,UAAU,2BAEhC,IAAgB,MAAZkE,QAEP7B,KAAKkC,IAAI,eAAe,GACxBlC,KAAKkC,IAAI,eAAgB,QAEtB,IAAgB,MAAZL,QAAiB,CAExB,GAAIxE,OAAQsE,SAAS6Q,aAAaT,UAClC/R,MAAKkC,IAAI,eAAe,GACxBlC,KAAKkC,IAAI,eAAgBvE,UAAU,OAASN,UAMpDmC,KAAKsJ,UAAY,SAAU7R,GACvB,GAAI+I,MAAOR,IACXQ,MAAKoI,6BAA4B,EACjC,IAAIZ,OAAQ1G,cAAciI,kBAAkB,gBAC5CvB,OAAMwB,aACNxB,MAAMyB,eAENjJ,KAAKkC,IAAI,iBACTlC,KAAKkC,IAAI,YAAY,GACrBxI,EAAE,iBAAiBmP,OACnB7I,KAAKkC,IAAI,eAAe,GACxBlC,KAAKkC,IAAI,eAAe,GACxBxI,EAAE,aAAamP,OACfnP,EAAE,YAAYyP,IAAI,aAAc,WAChCnJ,KAAKkC,IAAI,qBAAqB,GAEmB,IAA7ClC,KAAK0C,IAAI,kBAAkBzH,OAAOhD,SAElC6I,cAAcM,SAAS,mBAAmB,GAC1CN,cAAcM,SAAS,oBAAoB,GAC3C1H,EAAE,YAAYyP,IAAI,aAAc,UAChCnJ,KAAKkC,IAAI,qBAAqB,IAI9B2E,QAEAnN,EAAE,oBAAoB0P,YAAY,YAItCpJ,KAAK2b,8BAITnc,KAAKoL,YAAc,SAAU3T,GACzB,GAAI+I,MAAOR,IAENqH,SAED7G,KAAK+J,mBAAmB9S,EAAEgE,MAI9B+E,KAAKoI,6BAA4B,EAEjC,IAAItJ,UAAWkB,KAAK0C,IAAI,mBAAmBmI,uBAC3C/L,UAAW,GAAIuJ,mBAAkBvJ,UACjCA,SAASkM,WAAY,EAErBhL,KAAKuI,gBACLvI,KAAKkC,IAAI,aAAcpD,UACvBkB,KAAKwI,aAAY,GACjBxI,KAAK4b,2BAA2B9c,UAChCkB,KAAKsb,oBAAoBxc,WAI7BU,KAAKoc,2BAA6B,SAAU5e,SACxC,GAAIgD,MAAOR,IAEPwH,sBAAqB6U,yCAErB/a,cAAciI,kBAAkB,iBAAiBkC,WACjDjL,KAAKkC,IAAI,oBAAoBlF,QAAQoe,8BAM7C5b,KAAKmc,2BAA6B,WAC9B,GAAI3b,MAAOR,IAEPwH,sBAAqB6U,wCAErB7b,KAAKkC,IAAI,oBAAoB,IAMrC1C,KAAK+I,cAAgB,SAAUtR,GAC3B,GAAI+I,MAAOR,IAEXQ,MAAKkC,IAAI,kBAAkB,GAC3BlC,KAAKkC,IAAI,eAAe,GACxBlC,KAAKkC,IAAI,iBAAiB,GAC1BlC,KAAKkC,IAAI,yBAAyB,GAClClC,KAAK0P,sBACLhW,EAAE,mBAAmBmE,IAAI,IACzBnE,EAAE,gBAAgByP,IAAI,UAAW,QACjCnJ,KAAKkC,IAAI,oBAAoB,IC/frC,QAASyoB,8BA4xBL,QAASC,gBAAe5qB,MAEpB,GAAI6qB,OAAQ7qB,KAAK0C,IAAI,kBACjB1C,KAAK0C,IAAI,qBACT1C,KAAK0C,IAAI,wBAEb,OAAOmoB,OAIX,QAASC,qBAELC,gBAAgB,QAAQ,GACxBA,gBAAgB,iBAAiB,GAIrC,QAASC,sBAELD,gBAAgB,QAAQ,GACxBA,gBAAgB,iBAAiB,GAIrC,QAASA,iBAAgBE,QAASC,WAE9B,GAAI5rB,OAAQ5F,EAAE,IAAMuxB,QAAU,SAC1BE,KAAOzxB,EAAE,IAAMuxB,QAAU,OAE7B3rB,OAAM,GAAGrB,MAAMmtB,YAAcF,UAAY,MAAQ,OACjDC,KAAK,GAAGltB,MAAMmtB,YAAcF,UAAY,OAAS,MAIrD,QAASG,WAAUpwB,KAAMsX,SAAU1a,OAC/B,IAAK,GAAIF,GAAI,EAAG2zB,IAAMrwB,KAAKhD,OAAQN,EAAI2zB,IAAK3zB,IACxC,GAAIsD,KAAKtD,GAAG4a,YAAc1a,MAAO,MAAOoD,MAAKtD,GAAGoB,GAEpD,UAGJ,QAASwyB,kBAAiBtwB,MAEtB,GAAIuwB,cAAgBzyB,IAAK,GAAIlB,MAAO,OAEpC,OADA2zB,YAAaA,WAAWC,OAAOxwB,MAr0BnC+H,wBAAwBkY,KAAK1b,MAG7BA,KAAKksB,YACLlsB,KAAKmsB,eAAgB,EACrBnsB,KAAKosB,eACLpsB,KAAKqsB,kBAAmB,EACxBrsB,KAAKssB,oBACLtsB,KAAKusB,uBAAwB,EAC7BvsB,KAAKwsB,iBACLxsB,KAAKysB,aACLzsB,KAAK0sB,gBAAiB,EACtB1sB,KAAK2sB,uBAAwB,EAC7B3sB,KAAK4sB,UAAY,EACjB5sB,KAAK6sB,aAAe,MAapB7sB,KAAK8sB,kBAAoB,SAAUC,UAE/B,GAAIvsB,MAAOR,KACPuG,IAAM,4BAA8B3K,KAAKoU,OAAS,iCAClDgd,QAAU1rB,cAAcC,eAAegF,OAAS,MAmDpD,OAjDA/F,MAAKkC,IAAI,YAAa,GACtBxI,EAAE,YAAYiP,KAAK,YAAY,GAE/B7H,cAAcM,SAAS,iBAAiB,GACxCorB,QACKnrB,KAAK,SAAUpG,MAEZ,GAA0B,MAAtBA,KAAKwxB,eAAsD,GAA7BxxB,KAAKwxB,cAAcx0B,OAAa,CAE9D,GAAIwQ,SAAU8iB,iBAAiBtwB,KAAKwxB,cAIpC,IAHAzsB,KAAKkC,IAAI,WAAYuG,SACrBzI,KAAKkC,IAAI,iBAAiB,GAEtBqqB,SAAU,CAEV,GAAIG,cAAe1sB,KAAK0C,IAAI,mBAC5B1C,MAAK2sB,qBAAqBD,aAAcH,cAIxC7yB,GAAE,iBAAiBmE,IAAImC,KAAK0C,IAAI,iBAChChJ,EAAE,qBAAqBmE,IAAImC,KAAK0C,IAAI,iBACpChJ,EAAE,0BAA0BmE,IAAImC,KAAK0C,IAAI,iBACzChJ,EAAE,mBAAmBmE,IAAImC,KAAK0C,IAAI,qBAKtC1C,MAAK4sB,eAIT5sB,MAAKkC,IAAI,YAAajH,KAAK4xB,WAC3B7sB,KAAK8sB,sBAEL/B,gBAAgB,OAAQ/qB,KAAK0C,IAAI,oBAGpChB,KAAK,SAAUC,SAAUL,OAAQM,SAE9B5B,KAAK4sB,kBAGRnrB,OAAO,WAEJX,cAAcM,SAAS,iBAAiB,KAIzCorB,SAIXhtB,KAAKstB,oBAAsB,WAEvB,GAAI9sB,MAAOR,IACXQ,MAAKkC,IAAI,wBAAmD,OAAzBlC,KAAK0C,IAAI,cAAyB1C,KAAK0C,IAAI,cAIlFlD,KAAKotB,cAAgB,WAEjB,GAAI5sB,MAAOR,IACXQ,MAAKkC,IAAI,iBAAiB,GAC1BlC,KAAKkC,IAAI,oBAAoB,GAC7BlC,KAAKkC,IAAI,yBAAyB,GAClClC,KAAKkC,IAAI,kBAAkB,IAI/B1C,KAAKutB,kBAAoB,WAErB,GAAI/sB,MAAOR,KACPktB,aAAe1sB,KAAK0C,IAAI,mBAC5B1C,MAAKgtB,0BAEDN,eAAiB1sB,KAAK0C,IAAI,iBAM9B1C,KAAK2sB,qBAAqBD,cAAc,IAI5CltB,KAAKwtB,wBAA0B,WAE3B,GAAIhtB,MAAOR,IAEXQ,MAAKkC,IAAI,kBAAmB,IAC5BlC,KAAKkC,IAAI,6BAA8B,IACvClC,KAAKkC,IAAI,qBAAsB,IAC/BlC,KAAKkC,IAAI,qBAAsB,GAE/B,IAAIwJ,YAAa6f,qBACb0B,gBAAkB1B,qBAClB2B,SAAW3B,oBAEfvrB,MAAKkC,IAAI,cAAewJ,YACxB1L,KAAKkC,IAAI,mBAAoB+qB,iBAC7BjtB,KAAKkC,IAAI,oBACTlC,KAAKkC,IAAI,YAAagrB,UAEtBxzB,EAAE,qBAAqBmE,IAAImC,KAAK0C,IAAI,iBACpChJ,EAAE,0BAA0BmE,IAAImC,KAAK0C,IAAI,iBACzChJ,EAAE,mBAAmBmE,IAAImC,KAAK0C,IAAI,kBAItClD,KAAKmtB,qBAAuB,SAAUD,aAAcH,UAEhD,GAAIvsB,MAAOR,KACP2tB,mBAAqB9B,UAAUrrB,KAAK0C,IAAI,YAAa,QAASgqB,cAC9D3mB,IAAM,4BAA8B3K,KAAKoU,OAAS,iCAAmC2d,kBAEzF,IAAIA,uBAQA,MANAzzB,GAAE,iBAAiBmE,IAAImC,KAAK0C,IAAI,iBAChChJ,EAAE,qBAAqBmE,IAAImC,KAAK0C,IAAI,iBACpChJ,EAAE,0BAA0BmE,IAAImC,KAAK0C,IAAI,iBACzChJ,EAAE,mBAAmBmE,IAAImC,KAAK0C,IAAI,iBAClC1C,KAAKgtB,8BACLhtB,MAAKotB,qBAKT,IAAIZ,SAAU1rB,cAAcC,eAAegF,OAAS,MA2CpD,OAzCAjF,eAAcM,SAAS,iBAAiB,GACxCorB,QACKnrB,KAAK,SAAUpG,MAEZ,GAA0B,MAAtBA,KAAKwxB,eAAsD,GAA7BxxB,KAAKwxB,cAAcx0B,OAAa,CAE9D,GAAIyT,YAAa6f,iBAAiBtwB,KAAKwxB,cAIvC,IAHAzsB,KAAKkC,IAAI,cAAewJ,YACxB1L,KAAKkC,IAAI,oBAAoB,GAEzBqqB,SAAU,CAEV,GAAIc,kBAAmBrtB,KAAK0C,IAAI,kBAChC1C,MAAKstB,0BAA0BD,iBAAkBd,cAIjD7yB,GAAE,qBAAqBmE,IAAImC,KAAK0C,IAAI,iBACpChJ,EAAE,0BAA0BmE,IAAImC,KAAK0C,IAAI,iBACzChJ,EAAE,mBAAmBmE,IAAImC,KAAK0C,IAAI,qBAMtC1C,MAAKkC,IAAI,oBAAoB,KAKpCR,KAAK,SAAUC,SAAUL,OAAQM,SAE9B5B,KAAKkC,IAAI,oBAAoB,KAGhCT,OAAO,WAEJX,cAAcM,SAAS,iBAAiB,KAIzCorB,SAIXhtB,KAAK+tB,sBAAwB,WAEzB,GAAIvtB,MAAOR,KACP6tB,iBAAmBrtB,KAAK0C,IAAI,kBAChC1C,MAAKwtB,8BAEDH,mBAAqBrtB,KAAK0C,IAAI,iBAMlC1C,KAAKstB,0BAA0BD,mBAInC7tB,KAAKguB,4BAA8B,WAE/B,GAAIxtB,MAAOR,IAEXQ,MAAKkC,IAAI,6BAA8B,IACvClC,KAAKkC,IAAI,qBAAsB,IAC/BlC,KAAKkC,IAAI,qBAAsB,GAE/B,IAAI+qB,iBAAkB1B,qBAClB2B,SAAW3B,oBAEfvrB,MAAKkC,IAAI,mBAAoB+qB,iBAC7BjtB,KAAKkC,IAAI,oBACTlC,KAAKkC,IAAI,YAAagrB,UAEtBxzB,EAAE,0BAA0BmE,IAAImC,KAAK0C,IAAI,iBACzChJ,EAAE,mBAAmBmE,IAAImC,KAAK0C,IAAI,kBAItClD,KAAK8tB,0BAA4B,SAAUD,iBAAkBd,UAEzD,GAAIvsB,MAAOR,KACPiuB,uBAAyBpC,UAAUrrB,KAAK0C,IAAI,eAAgB,QAAS2qB,kBACrEtnB,IAAM,4BAA8B3K,KAAKoU,OAAS,qCAAuCie,sBAE7F,IAAIA,2BAOA,MALA/zB,GAAE,qBAAqBmE,IAAImC,KAAK0C,IAAI,iBACpChJ,EAAE,0BAA0BmE,IAAImC,KAAK0C,IAAI,iBACzChJ,EAAE,mBAAmBmE,IAAImC,KAAK0C,IAAI,iBAClC1C,KAAKwtB,kCACLxtB,MAAKotB,qBAIT,IAAIZ,SAAU1rB,cAAcC,eAAegF,OAAS,MAgDpD,OA9CAjF,eAAcM,SAAS,iBAAiB,GACxCorB,QACKnrB,KAAK,SAAUpG,MAEZ,GAA0B,MAAtBA,KAAKwxB,eAAsD,GAA7BxxB,KAAKwxB,cAAcx0B,OAAa,CAE9D,GAAIg1B,iBAAkB1B,iBAAiBtwB,KAAKwxB,eACxCiB,oBAAsBzyB,KAAK0yB,cAK/B,IAJA3tB,KAAKkC,IAAI,mBAAoB+qB,iBAC7BjtB,KAAKkC,IAAI,gBAAiBwrB,qBAC1B1tB,KAAKkC,IAAI,yBAAyB,GAE9BqqB,SAAU,CAEV,GAAIqB,uBAAwB5tB,KAAK0C,IAAI,4BACrC1C,MAAK6tB,mBAAmBD,sBAAuBrB,UAC/CvsB,KAAK8tB,oBAILp0B,GAAE,0BAA0BmE,IAAImC,KAAK0C,IAAI,iBACzChJ,EAAE,mBAAmBmE,IAAImC,KAAK0C,IAAI,qBAMtC1C,MAAKkC,IAAI,yBAAyB,EAItC6oB,iBAAgB,gBAAiB/qB,KAAK0C,IAAI,4BAI7ChB,KAAK,SAAUC,SAAUL,OAAQM,SAE9B5B,KAAKkC,IAAI,yBAAyB,KAGrCT,OAAO,WAEJX,cAAcM,SAAS,iBAAiB,KAIzCorB,SAIXhtB,KAAKuuB,2BAA6B,SAAU92B,GAExC,GAAI+I,MAAOR,KACPouB,sBAAwB5tB,KAAK0C,IAAI,4BAGrC,OAFA1C,MAAKguB,mCAEDJ,wBAA0B5tB,KAAK0C,IAAI,iBAEnC1C,KAAKkC,IAAI,qBAAsB,QAC/BxI,GAAE,YAAYiP,KAAK,YAAY,KAKnC3I,KAAK6tB,mBAAmBD,uBAAuB,OAC/C5tB,MAAK8tB,kBAITtuB,KAAKwuB,iCAAmC,WAEpC,GAAIhuB,MAAOR,IACXQ,MAAKkC,IAAI,qBAAsB,GAE/B,IAAIgrB,UAAW3B,oBACfvrB,MAAKkC,IAAI,YAAagrB,UAEtBxzB,EAAE,mBAAmBmE,IAAImC,KAAK0C,IAAI,kBAItClD,KAAKsuB,cAAgB,WAEjB,GAAI9tB,MAAOR,KACPyuB,8BAAgClwB,SAASC,eAAe,yBAAyBkwB,aAErF,IAAID,kCAAqC,CAErC,GAAIE,oCAAqCnuB,KAAK0C,IAAI,iBAAiBurB,8BAEZ,IAAnDE,mCAAmCt2B,MAAMI,OAEzC+H,KAAKkC,IAAI,qBAAuB,IAAWisB,mCAAmCt2B,OAI9EmI,KAAKkC,IAAI,qBAAsBisB,mCAAmCt2B,OAGtEmI,KAAKouB,cAAc,cACnB10B,EAAE,YAAYiP,KAAK,YAAY,KAMvCnJ,KAAKquB,mBAAqB,SAAUD,sBAAuBrB,UAEvD,GAAIvsB,MAAOR,KACP6uB,4BAA8BhD,UAAUrrB,KAAK0C,IAAI,oBAAqB,QAASkrB,uBAC/E7nB,IAAM,4BAA8B3K,KAAKoU,OAAS,uCAAyC6e,2BAE/F,IAAIA,gCAMA,MAJA30B,GAAE,0BAA0BmE,IAAImC,KAAK0C,IAAI,iBACzChJ,EAAE,mBAAmBmE,IAAImC,KAAK0C,IAAI,iBAClC1C,KAAKguB,uCACLhuB,MAAKotB,qBAIT,IAAIZ,SAAU1rB,cAAcC,eAAegF,OAAS,MAmDpD,OAjDAjF,eAAcM,SAAS,iBAAiB,GACxCorB,QACKnrB,KAAK,SAAUpG,MAEZ,GAA0B,MAAtBA,KAAKwxB,cAAuB,CAE5B,GAAiC,GAA7BxxB,KAAKwxB,cAAcx0B,OAEnB+H,KAAKkC,IAAI,qBAAsBjH,KAAKwxB,cAAc,GAAG50B,OACrD6B,EAAE,WAAWiP,KAAK,YAAY,OAE3B,CAEH,GAAIukB,UAAW3B,iBAAiBtwB,KAAKwxB,cACrCzsB,MAAKkC,IAAI,YAAagrB,UAG1BltB,KAAKkC,IAAI,iBAAkBjH,KAAKwxB,cAAcx0B,OAAS,OAIvD+H,MAAKkC,IAAI,kBAAkB,EAI/B,IAAIqqB,SAAU,CAEV,GAAI+B,gBAAiBtuB,KAAK0C,IAAI,qBAC9B1C,MAAKuuB,oBAAoBD,gBACzBtuB,KAAKotB,0BAIL1zB,GAAE,mBAAmBmE,IAAImC,KAAK0C,IAAI,mBAKzChB,KAAK,SAAUC,SAAUL,OAAQM,SAE9B5B,KAAKkC,IAAI,kBAAkB,KAG9BT,OAAO,WAEJX,cAAcM,SAAS,iBAAiB,KAIzCorB,SAIXhtB,KAAK+uB,oBAAsB,SAAUD,gBAEjC,GAAItuB,MAAOR,KACPgvB,qBAAuBnD,UAAUrrB,KAAK0C,IAAI,aAAc,QAAS4rB,eAEjEE,2BAEA90B,EAAE,mBAAmBmE,IAAImC,KAAK0C,IAAI,kBAM1ClD,KAAK6H,qBAAuB,WACxB,GAAIrH,MAAOR,IAEXpE,MAAKwM,kBAEDkU,SAAU,SAAUxc,OAEhB,MAAOU,MAAK+b,mBAAmBzc,QAGnC0c,QAAS,SAAU1c,OAEf,MAAOU,MAAKic,kBAAkB3c,SAMtClE,KAAKuM,oBAEDmU,SAAU,SAAUxc,OAEhB,GAAIA,MAAM4I,GAAG,wBACT,MAAO9M,MAAK8gB,SAASuS,qBAI7BzS,QAAS,SAAU1c,OAEf,GAAIA,MAAM4I,GAAG,wBACT,MAAO9M,MAAK8gB,SAASwS,sBASrClvB,KAAKuc,mBAAqB,SAAUzc,OAChC,GAAIU,MAAOR,KACP+c,OAASjd,MAAMzB,KAEnB,OAAKmC,MAAK0C,IAAI,kBAAoBpD,MAAM4I,GAAG,0BACtClI,KAAK0C,IAAI,qBAAuBpD,MAAM4I,GAAG,8BACzClI,KAAK0C,IAAI,0BAA4BpD,MAAM4I,GAAG,mCAC9ClI,KAAK0C,IAAI,mBAAqBpD,MAAM4I,GAAG,6BAErB,OAAVqU,SAEAvc,KAAK0C,IAAI,kBAAoBpD,MAAM4I,GAAG,iCAE5B,IAAVqU,QAILjd,MAAM4I,GAAG,kBACT5I,MAAM4I,GAAG,4BACT5I,MAAM4I,GAAG,2BACT5I,MAAM4I,GAAG,qBAEwB,GAAxBqU,OAAOpiB,OAAOlC,UAM3BqH,MAAM4I,GAAG,qBACT5I,MAAM4I,GAAG,uBACT5I,MAAM4I,GAAG,sBACT5I,MAAM4I,GAAG,yBACR5I,MAAM4I,GAAG,wBAA0BlI,KAAK0C,IAAI,qBAEZ,GAAxB6Z,OAAOpiB,OAAOlC,SAQ/BuH,KAAKyc,kBAAoB,SAAU3c,OAE/B,GAAIU,MAAOR,IACX,IAAIF,MAAM4I,GAAG,qBACT5I,MAAM4I,GAAG,mBAAoB,CAE7B5I,MAAMzB,IAAIyB,MAAMzB,MAAM1D,OACtB,IAAIuD,UAAW4B,MAAMrE,KAAK,WAAa,GAAIuC,QAAO8B,MAAMrE,KAAK,YAAc,sCAC3E,OAAOyC,UAASrE,KAAKiG,MAAMzB,OAExB,GAAIyB,MAAM4I,GAAG,sBAAuB,CAEvC5I,MAAMzB,IAAIyB,MAAMzB,MAAM1D,OACtB,IAAIuD,UAAW4B,MAAMrE,KAAK,WAAa,GAAIuC,QAAO8B,MAAMrE,KAAK,YAAc,aAC3E,OAAOyC,UAASrE,KAAKiG,MAAMzB,OAExB,GAAIyB,MAAM4I,GAAG,sBAAwBlI,KAAK0C,IAAI,iBAAkB,CAEnEpD,MAAMzB,IAAIyB,MAAMzB,MAAM1D,OACtB,IAAIuD,UAAW4B,MAAMrE,KAAK,WAAa,GAAIuC,QAAO8B,MAAMrE,KAAK,YAAc,cAC3E,OAAOyC,UAASrE,KAAKiG,MAAMzB,OAI/B,OAAO,GAIX2B,KAAKqI,cAAgB,SAAU5Q,GAE3B,GAAI+I,MAAOR,KACPV,SAAW,GAAIuJ,oBAAoBnL,WAAW,GAClD4B,UAASwJ,UAAW,EAEpBtI,KAAKoI,6BAA4B,GACjCpI,KAAKuI,gBACLvI,KAAKkC,IAAI,aAAcpD,UACvBkB,KAAKwI,aAAY,GACjBxI,KAAKgtB,0BACLhtB,KAAKssB,mBAAkB,GAEvB5yB,EAAE,YAAYiP,KAAK,YAAY,GAE/BmiB,qBAIJtrB,KAAKsJ,UAAY,SAAU7R,GACvB,GAAI+I,MAAOR,IACXQ,MAAKoI,6BAA4B,EACjC,IAAIZ,OAAQ1G,cAAciI,kBAAkB,gBAC5CvB,OAAMwB,aACNxB,MAAMyB,eAENjJ,KAAKkC,IAAI,iBACTlC,KAAKkC,IAAI,YAAY,GACrBxI,EAAE,iBAAiBmP,OACnB7I,KAAKkC,IAAI,eAAe,GACxBlC,KAAKkC,IAAI,eAAe,GACxBlC,KAAKkC,IAAI,qBAAqB,GAC9BlC,KAAK8sB,uBAITttB,KAAKoL,YAAc,SAAU3T,GACzB,GAAI+I,MAAOR,IAENqH,SAED7G,KAAK+J,mBAAmB9S,EAAEgE,MAI9B+E,KAAKoI,6BAA4B,EAEjC,IAAItJ,UAAWkB,KAAK0C,IAAI,mBAAmBmI,uBAC3C/L,UAAW,GAAIuJ,mBAAkBvJ,UACjCA,SAASkM,WAAY,EACrBhL,KAAKuI,gBACLvI,KAAKkC,IAAI,aAAcpD,UACvBkB,KAAKwI,aAAY,GACjBxI,KAAK2uB,6BACL3uB,KAAK8sB,uBAITttB,KAAKmvB,2BAA6B,WAE9B,GAAI3uB,MAAOR,KACPqtB,UAAY7sB,KAAK0C,IAAI,YAER,MAAbmqB,UAEA7sB,KAAKssB,mBAAkB,GAIvBtB,sBAMRxrB,KAAK4uB,cAAgB,SAAUQ,WAE3B,GAAIC,MAAO/tB,cAAciI,kBAAkB,gBAEvC8lB,OAAQD,WAERC,KAAKC,cAAcp1B,EAAE,cAAgBk1B,UAAY,OAMzDpvB,KAAK4tB,oBAAsB,WAEvB,GAAIyB,MAAO/tB,cAAciI,kBAAkB,gBAEvC8lB,OAEAA,KAAK5jB,YAMbzL,KAAK4Q,KAAO,SAAUnZ,GAClB,GAAI+I,MAAOR,KACPgI,MAAQ1G,cAAciI,kBAAkB,gBAE5C,KAAKvB,MAAMyD,WAEP,OAAO,CAIX,IAAIjL,KAAK2P,yBAIL,MAFA3P,MAAKkC,IAAI,eAAe,GACxBlC,KAAKkC,IAAI,eAAgBvE,UAAU,oBAC5B,CAIX,IAAImB,UAAWkB,KAAK0C,IAAI,aACxB5D,UAASyU,eAAiBqX,eAAeprB,KAEzC,IACIkB,UACA8I,MACA4C,MAHA5B,SAAW,eAKfxK,MAAK+G,2BAA0B,GAC3BjI,SAASwJ,UAETkB,MAAQtI,KAAKC,UAAUrC,SAAS6L,sBAChCyB,MAAQ,SAIR5C,MAAQtI,KAAKC,UAAUrC,SAAS+L,yBAChCuB,MAAQ,OAIZ1L,SAAWI,cAAcC,eAAeC,SAASgF,aAAcwD,MAAO4C,OAEtEpM,KAAKuI,gBAELzH,cAAcM,SAASoJ,UAAU,GAEjC9J,SACKW,KAAK,SAAUpG,KAAMqG,OAAQC,MAE1BvB,KAAKyb,iCAAiCxgB,KAAM6D,YAG/C2C,OAAO,WACJX,cAAcM,SAASoJ,UAAU,KAEpC9I,KAAK,SAAUC,SAAUL,OAAQM,SAE9B5B,KAAK0b,kBAAkB/Z,SAAUL,OAAQM,YAMrDpC,KAAKic,iCAAmC,SAAUxgB,KAAM6D,UAEpD,GAAIkB,MAAOR,IACX,IAAIvE,MAAQA,KAAK8W,WAAY,CAEzB,GAAIvI,OAAQvO,KAAK+B,QACbuM,gBAAkBvJ,KAAK0C,IAAI,iBAG3B8G,OAAMtM,aAAc,GAEpB8C,KAAKgS,cAAcxI,OAKnB1K,SAASwJ,UAGTtI,KAAK+J,mBAAmBjL,SAASmT,qBAAqBzI,QACtDD,gBAAgB2I,OAAO,EAAGpT,SAAS6L,wBAKnC3K,KAAK+J,mBAAmBP,OAExBD,gBAAgB4I,WAAW3I,QAI/BD,gBAAgB+I,OAEQ,QAApBrX,KAAK8W,YAEL/R,KAAKkC,IAAI,yBAAyB,GAItClC,KAAKkC,IAAI,kBAAkB,GAC3BlC,KAAK8I,cAMbtJ,KAAKkc,kBAAoB,SAAU/Z,SAAUL,OAAQM,SAEjD,GAAI5B,MAAOR,KACPqC,QAAUF,SAASL,MAEvB,IAAyC,QAArCK,SAAS6Q,aAAaT,WAEtBjb,OAAO2b,SAASC,KAAO,iCAAmCtX,KAAKoU,WAE5D,IAAgB,MAAZ3N,QAEP7B,KAAKkC,IAAI,eAAe,GACxBlC,KAAKkC,IAAI,eAAgBN,aAEtB,IAAgB,MAAZC,QAAiB,CAExB,GAAIxE,OAAQsE,SAAS6Q,aAAaT,UAClC/R,MAAKkC,IAAI,eAAe,GACxBlC,KAAKkC,IAAI,eAAgBvE,UAAU,OAASN,UCpxBxD,QAAS0xB,sBAKL,GAAIvnB,OAGAwnB,WAAa,0JAGbC,aAAe,YAEnBzvB,MAAK0vB,iBACDC,YAAa,SAAU7vB,OAEnB,MADAA,OAAMzB,IAAIyB,MAAMzB,MAAM1D,SAClBmF,MAAM4I,GAAG,mBAAoB5I,MAAM8vB,SAAS,gBAErC,QAAQ/1B,KAAKiG,MAAMzB,QAKlCwxB,YAAa,SAAU/vB,OACnB,GAAIA,MAAM4I,GAAG,cAAe,CAExB,GAAIrQ,OAAQyH,MAAMzB,KAClB,IAAqB,IAAjBhG,MAAMI,SAAiBqH,MAAM8vB,SAAS,SAEtC,OAAO,CAIX,IAAI1xB,UAAW4B,MAAMrE,KAAK,WACtB,GAAIuC,QAAO8B,MAAMrE,KAAK,YAElBqE,MAAMqJ,KAAK,WACX,GAAInL,QAAO8B,MAAMqJ,KAAK,YACtB,IAER,IAAIjL,SAEA,MAAOA,UAASrE,KAAKxB,MAGzB,IAAIy3B,WAAYhwB,MAAMqJ,KAAK,YAC3B,IAAI2mB,WAAaz3B,MAAMI,OAASq3B,UAE5B,OAAO,CAGX,IAAIC,WAAYjwB,MAAMqJ,KAAK,YAC3B,IAAI4mB,WAAa13B,MAAMI,OAASs3B,UAE5B,OAAO,EAKf,OAAO,GAEXC,MAAO,SAAUlwB,OACb,OAAIA,MAAM4I,GAAG,iBAEF8mB,WAAW31B,KAAKiG,MAAMzB,QAKrCie,SAAU,SAAUxc,OAEhB,OAAIA,MAAM4I,GAAG,eAEF5I,MAAMzB,MAAM1D,OAAOlC,OAAS,GAK3Cw3B,WAAY,SAAUnwB,OAElB,GAAIzH,OAAQyH,MAAMzB,KAElB,IAAIyB,MAAM8vB,SAAS,SAAU,CAEzB,GAAI1xB,UAAW4B,MAAMrE,KAAK,WACtB,GAAIuC,QAAO8B,MAAMrE,KAAK,YAElBqE,MAAMqJ,KAAK,WACP,GAAInL,QAAO8B,MAAMqJ,KAAK,YACtB,IAEZ,IAAIjL,SAEA,MAAOA,UAASrE,KAAKxB,MAGzB,IAAIy3B,WAAYhwB,MAAMqJ,KAAK,YAC3B,IAAI2mB,WAAaz3B,MAAMI,OAASq3B,UAE5B,OAAO,CAGX,IAAIC,WAAYjwB,MAAMqJ,KAAK,YAC3B,IAAI4mB,WAAa13B,MAAMI,OAASs3B,UAE5B,OAAO,EAMf,OAAO,GAEXG,UAAW,SAAUpwB,OACjB,OAAIA,MAAM4I,GAAG,oBAAqB5I,MAAM8vB,SAAS,UAEtCH,aAAa51B,KAAKiG,MAAMzB,QAOvC8xB,SAAU,SAAUrwB,OAChB,OAAIA,MAAM4I,GAAG,mBAAoB5I,MAAM8vB,SAAS,UAErCH,aAAa51B,KAAKiG,MAAMzB,QAQvC+D,QAAS,SAAUtC,OACf,OAAIA,MAAM4I,GAAG,qBAAsB5I,MAAM8vB,SAAS,UAEvC9vB,MAAMzB,MAAM1D,OAAOlC,OAAS,IAY/CuH,KAAKO,KAAO,WACRyH,MAAQ1G,cAAc2G,WAAW,cACjC3G,cAAc4G,WACVF,MACCpM,KAAKuM,uBACLnI,KAAK0vB,oBACN;EAIR1vB,KAAKowB,SAAW,WACZ,GAAIC,OAAQ/uB,cAAciI,kBAAkBvB,MAC5C,OAAOqoB,OAAM5kB,YC9ErB,QAAS6kB,qBAAoBC,aACzB,IAEIA,YAAcA,YAAY14B,KAE1B,IAAI24B,MAAOD,YAAYE,QAAU,GAE7BC,IAAMH,YAAYI,OAAS,GAE3BpqB,IAAMgqB,YAAYK,UAAY,GAE9B9pB,MAAQypB,YAAYzpB,OAAS,GAE7B+pB,aAAeN,YAAYnuB,SAAW,GAEtC0uB,KAAO,GAAIC,MAEXC,OAASp1B,KAAKoU,QAAU,QAExBihB,iBAAmB,oBAAsBD,OAEzCE,UAAY,OACZ3qB,IACA,iBACAiqB,KACA,mBACAE,IACA,mBACAG,aACA,WACA/pB,MACA,UACAgqB,KAAKz3B,WAEL83B,6BAEAC,KAAQ,kCACRC,QAAWR,aACXS,SAAY,QACZC,KAAQL,UAIZh3B,GAAE+e,MACEtd,KAAM,OACN4K,IAAK0qB,iBACL3qB,SAAU,OACV7K,KAAM01B,8BAId,MAAO15B,IAKP,OAAO,EC3IX,QAAS+5B,6BAELxxB,KAAKyxB,WAAa,GAClBzxB,KAAKkE,aAAe,EAGpB,IAAI8D,OAAQ1G,cAAc2G,WAAW,2BAA2B,GAC5DypB,UAAW,EACXC,UAAY,EAChB3xB,MAAK4xB,QAAU,WACX,GAAIpxB,MAAOR,IACPwH,sBAAqBqqB,mCAErBrxB,KAAKsxB,aAIL9pB,MAAM+pB,UAKd/xB,KAAK8xB,WAAa,WACd,GAAItxB,MAAOR,KACPgyB,WAAaxxB,KAAK0C,IAAI,cAAcvI,MACxC,KAAKq3B,YAAeN,UAAYC,YAAcK,WAG1C,WADAhqB,OAAM+pB,QAIVL,WAAW,EACXC,UAAY,EACZ,IAAIM,QAAS,UAAYD,WACrB9wB,SAAWI,cAAcC,eAAeC,SAAS0wB,iBAAiBD,QACtEzxB,MAAKkC,IAAI,eAAgB,IAErBxB,WAEAI,cAAcM,SAASoG,OAAO,GAE9B9G,SAASW,KAAK,SAAUpG,MAChBA,OAEAi2B,UAAW,EACXC,UAAYK,WACRv2B,KAAK02B,4BAEL3xB,KAAKkC,IAAI,eAAgBvE,UAAU,0BACnC5D,gBAAgB,aAAc,MAI9ByN,MAAM+pB,YAMjB9vB,OAAO,WAEJX,cAAcM,SAASoG,OAAO,KAGjC9F,KAAK,SAAUC,SAAUL,OAAQM,SAE9B4F,MAAM+pB,aAOlB/xB,KAAKoyB,aAAe,SAAU36B,GAER,KAAdA,EAAEK,SAEFkI,KAAK4xB,QAAQn6B,IC7EzB,QAAS46B,oBAGLryB,KAAKsyB,cAAgB,EAIrB,IAAIC,WAAY,2CAKhBvyB,MAAKO,KAAO,WACR,GAAIC,MAAOR,IAEXQ,MAAKgyB,oBAITxyB,KAAKwyB,iBAAmB,WACpB,GAAIhyB,MAAOR,KACPyyB,iBAAmBF,UAAY,MAEnC/xB,MAAKkC,IAAI,gBAAiB+vB,mBCvBlC,GAAIjxB,UAAWA,YAEfzG,QAAO23B,OAAOlxB,UAEVC,QAAS,SAAUqO,QASf,MARAA,QAASA,QAAU,GAEfA,SAEAA,OAAS,kBAAoBA,QAI1B,oBAAsBlU,KAAKoU,OAASF,QAE/C9M,kBAAmB,SAAUD,KACzB,MAAO/C,MAAKyB,UAAY,QAAUsB,KAItC4vB,kBAAmB,SAAU5vB,KAGzB,MAFAA,KAAMA,KAAO,GAEN,6BAA+BnH,KAAKoU,OAAS,IAAMjN,KAE9DgK,SAAU,SAAUklB,QAEhB,MADAA,QAASA,QAAU,GACZ,kCAAoCA,QAE9CvkB,mBAAoB,SAAUukB,QAE3B,MADAA,QAASA,QAAU,GACZ,kCAAoCA,UVwHnD/3B,EAAE,WACEA,EAAE,eAAe04B,MAAM,WACnB,GAAIC,QAAS34B,EAAEA,EAAE8F,MAAMmJ,KAAK,YAE5B,IAAI0pB,OAAOp6B,OAKP,MAHAyB,GAAE,cAAcC,SACZC,UAAWy4B,OAAOx4B,SAASC,KAC5B,MACI,MAMnBtC,OAAO86B,UAAUl4B,iBAAmB,WAkBhC,IAAK,GAjBDm4B,cACC,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,UAAW,MACX,UAAW,MACX,UAAW,MACX,UAAW,MAEZ7sB,MAAQlG,KACH7H,EAAI,EAAGA,EAAI46B,WAAWt6B,OAAQN,IAEnC+N,MAAQA,MAAM5M,QAAQy5B,WAAW56B,GAAG,GAAI46B,WAAW56B,GAAG,GAG1D,OAAO+N,OAwEX,IAAI5E,eAAgB,SAAWpH,EAAG84B,SAU9B,GAAIC,SAAU,SAAU1sB,IAAK9K,KAAME,KAAM2K,SAAUG,YAAaysB,UAAYC,OAOxE,MANAx3B,MAAOA,MAAQ,MACf2K,SAAWA,UAAY,OACvBG,YAAcA,aAAe,kCAC7B2sB,QAAU13B,eAAeC,MACzBu3B,UAAYA,cACZC,MAA0B,mBAAX,QAAyBA,MACjCj5B,EAAE+e,MACLoa,OAAO,EACP13B,KAAMA,KACN2K,SAAUA,SACV6sB,MAAOA,MACP5sB,IAAKA,IACL9K,KAAMA,KACN23B,QAASA,QACTF,UAAWA,UACXzsB,YAAaA,eAUjB6sB,WAAa,SAAU94B,SAAU4O,KAAM4M,MACvC,GAIIud,OACAC,UACAC,iBACAC,oBACAC,aACAC,YACAC,WAVAC,UAAY55B,EAAEM,UACdu5B,KAAOD,UAAUE,KAAK,mBACtBC,QAAUz4B,MAAMy4B,QAChBC,QAAUD,QAAQC,OAQtBle,MAAOA,MAAQ,GAEX5M,KAEK2qB,KAAKt7B,SAEN86B,MAAQU,QAAQV,MAAMO,WACtBN,UAAYD,MAAQ,QAAU,OAC9BG,oBAAsBI,UAAUK,aAChCV,iBAAmBS,QAAQE,QACrBb,MAAYO,UAAU,GAAGO,YAAcP,UAAU5d,QAAU,EAAIwd,oBAC/D,EACNI,UAAUnqB,IAAI,WAAY,YAC1BoqB,KAAO75B,EAAE,2DACL8b,KAAO,2CACNE,MAAM,QAAQD,OAAO,QACrBtM,IAAI,MAAOmqB,UAAU15B,aACrBuP,IAAI6pB,UAAWre,KAAKmf,IAAIZ,qBAAuBD,kBAC/Cc,UAAUT,WAEfH,aAAeG,UAAUE,KAAK,oBAC9BH,WAAaF,aAAazd,QAC1B0d,YAAcD,aAAa1d,SAE3B0d,aAAahqB,KACT6qB,KAAUT,KAAK7d,QAAU,EAAM2d,WAAa,EAC5Cv5B,IAASy5B,KAAK9d,SAAW,EAAK,eAK/B8d,MAEPA,KAAKU,QAAQ,IAAK,WACdV,KAAK/0B,SACL80B,UAAUnqB,IAAI,WAAY,OAWlC+qB,QAAU,SAAUl6B,SAAU3C,OAC9B,MAAOqC,GAAEM,UAAUk6B,QAAQ78B,QAW3B88B,eAAiB,SAAUlJ,QAASmJ,cAAeC,WAAYC,oBAC3DrJ,QAAQhzB,OAAS,GACjBgzB,QAAQsJ,sBACJC,SAAUJ,cACVK,MAAOJ,WACPK,cAAeJ,sBAMvBK,mBAAqB,SAAU36B,UAC/B,MAAOgB,OAAMT,OAAOP,UAAUiB,KAAK,yBAQnC25B,cAAgB,SAAU56B,UAC1B,MAAON,GAAEM,UAGb,QACI+G,eAAgB0xB,QAChBrxB,SAAU0xB,WACV+B,aAAcX,QACdxsB,WAAYysB,eACZprB,kBAAmB4rB,mBACnBltB,WAAYmtB,gBAEjBr6B,OAAQiF,MAEPpE,KAAOA,QAEXA,MAAK05B,SAGDC,UACIC,QAAS,WACL,MAAOC,WAAUC,UAAUnlB,MAAM,aAErColB,WAAY,WACR,MAAOF,WAAUC,UAAUnlB,MAAM,gBAErCqlB,IAAK,WACD,MAAOH,WAAUC,UAAUnlB,MAAM,sBAErCslB,MAAO,WACH,MAAOJ,WAAUC,UAAUnlB,MAAM,gBAErCulB,QAAS,WACL,MAAOL,WAAUC,UAAUnlB,MAAM,cAErCwlB,IAAK,WACD,MAAQ/1B,MAAKw1B,WAAax1B,KAAK21B,cAAgB31B,KAAK41B,OAAS51B,KAAK61B,SAAW71B,KAAK81B,YAK1FE,aACIC,OAAQ,WACJ,MAAOR,WAAUC,UAAUnlB,MAAM,YAErC2lB,QAAS,WACL,MAAOT,WAAUC,UAAUnlB,MAAM,aAErC4lB,OAAQ,WACJ,MAAOV,WAAUC,UAAUnlB,MAAM,YAErC6lB,SAAU,WACN,MAAOX,WAAUC,UAAUnlB,MAAM,UAGrC8lB,IAAK,WACD,MAAQr2B,MAAKi2B,UAAYj2B,KAAKk2B,WAAal2B,KAAKm2B,UAAYn2B,KAAKo2B,aAIzEE,YACIC,OAAQ,WACJ,MAAOr8B,GAAE5C,QAAQ2e,UAErBugB,MAAO,WACH,MAAOt8B,GAAE5C,QAAQ4e,WAO7BvC,MAAMmf,UAAUh5B,UAAY6Z,MAAMmf,UAAUh5B,QAAU,SAAU28B,EAAGh/B,GAC/D,GAAIi/B,EACJ,IAAI,OAAS12B,KAAM,KAAM,IAAI22B,WAAU,gCACvC,IAAIC,GAAIj3B,OAAOK,MACX62B,EAAID,EAAEn+B,SAAW,CACrB,IAAI,IAAMo+B,EAAG,QAGb,IAFAH,GAAKj/B,GAAK,EACVq/B,EAAAA,IAAa3hB,KAAKmf,IAAIoC,KAAOA,EAAI,GAC7BA,GAAKG,EAAG,QACZ,KAAKH,EAAIvhB,KAAKzc,IAAI,GAAKg+B,EAAIA,EAAIG,EAAI1hB,KAAKmf,IAAIoC,GAAI,GAAIA,EAAIG,GAAI,CACxD,GAAIH,IAAKE,IAAKA,EAAEF,KAAOD,EAAG,MAAOC,EACjCA,KAEJ,WAGJK,QAAQjE,UAAU9zB,SAAW+3B,QAAQjE,UAAU9zB,OAAS,WACpDgB,KAAKiL,cAAc+rB,YAAYh3B,QAGnCi3B,SAASnE,UAAU9zB,SAAWi4B,SAASnE,UAAU9zB,OAASk4B,eAAepE,UAAU9zB,OAAS,WACxF,IAAK,GAAI7G,GAAI6H,KAAKvH,OAAS,EAAGN,GAAK,EAAGA,IAC9B6H,KAAK7H,IAAM6H,KAAK7H,GAAG8S,eACnBjL,KAAK7H,GAAG8S,cAAc+rB,YAAYh3B,KAAK7H,MA6LnD,SAAW+B,GACP,GAAIsB,MAAM27B,GAAGC,eAAe,aAAc,CAEtC,GAAIC,iBAAkB77B,MAAM27B,GAAGG,UAAU5E,QACrC6E,SACIC,KAAM,mBAEVhuB,WAAY,WACR,GAAIhJ,MAAOR,KACPsZ,OAAS,YACTmS,QAAUjrB,KAAKirB,OACfA,SAAQ/iB,GAAG,SAEX+iB,QAAQ7hB,YAAY0P,QAGpBmS,QAAQuI,KAAK,IAAM1a,QAAQ1P,YAAY0P,UAInD9d,OAAM27B,GAAGM,OAAOJ,mBAGrBt8B,QAIH,WACI,GAAI28B,QAASpgC,OAAOogC,MAEpBpgC,QAAOogC,OAAS,WACS,kBAAVA,SACPA,OAAOC,MAAM33B,KAAM43B,UAOvB,KAAK,GAJDC,WACAC,OAASv5B,SAASw5B,qBAAqB,SACvCC,UAAYz5B,SAASw5B,qBAAqB,YAErC5/B,EAAI,EAAGA,EAAI2/B,OAAOr/B,OAAQN,IAC/B0/B,OAAOvrB,KAAKwrB,OAAO3/B,GAGvB,KAAK,GAAIA,GAAI,EAAGA,EAAI6/B,UAAUv/B,OAAQN,IAClC0/B,OAAOvrB,KAAK0rB,UAAU7/B,GAG1B,KAAK,GAAIA,GAAI,EAAGA,EAAI0/B,OAAOp/B,OAAQN,IAAK,CACpC,GAAIsH,OAAQo4B,OAAO1/B,EAMnB,IAJ4B,kBAAjBsH,OAAMw4B,SAA2Bx4B,MAAMy4B,aAAa,aAC3Dz4B,MAAMw4B,QAAUE,KAAK,kBAAoB14B,MAAMy4B,aAAa,WAAa,QAGjD,kBAAjBz4B,OAAMw4B,QAAuB,CACpC,GAAIG,SAAU34B,MAAM24B,OAEpB34B,OAAM24B,QAAU,WACU,kBAAXA,UACPA,QAAQT,MAAM33B,KAAM43B,WAGS,mBAAtB53B,MAAKq4B,gBACZr4B,KAAKq4B,cAAgBr4B,KAAK3H,MAG9B,IAAIigC,QAAUnjB,KAAKmf,IAAIt0B,KAAKq4B,cAAc5/B,OAASuH,KAAK3H,MAAMI,QAAU,GAAmB,IAAduH,KAAK3H,KAE9EigC,UAAWt4B,KAAKi4B,QAAQN,MAAM33B,KAAM43B,aACpC53B,KAAK3H,MAAQ2H,KAAKq4B,eAGtBr4B,KAAKq4B,cAAgBr4B,KAAK3H,OAG1BoH,MAAM84B,iBACN94B,MAAM84B,iBAAiB,QAAS94B,MAAM24B,SAAS,GACxC34B,MAAM+4B,aACb/4B,MAAM+4B,YAAY,UAAW/4B,MAAM24B,eW7uBvD58B,MAAMC,KAAKg9B,QAAXj9B,SAA2BA,MAAMC,KAAKi9B,OAAOhG,QACzCiG,KAAM,SAAU9F,OAAQ+F,SAAUrB,SAC9B/7B,MAAMC,KAAKi9B,OAAOG,GAAGF,KAAKjd,KAAK1b,KAAM6yB,OAAQ+F,SAAUrB,SAGvDv3B,KAAK84B,WACL,KAAK,GAAIv/B,OAAOyG,MAAK44B,SAAL54B,SAAoB+4B,KAEhC/4B,KAAK84B,SAASxsB,MACV/S,IAAKA,IACLw/B,KAAM/4B,KAAK44B,SAAL54B,SAAoB+4B,KAAKx/B,QAM3Cy/B,QAAS,WAIL,IAAK,GAHDC,QACA5gC,MAEKF,EAAI,EAAGA,EAAI6H,KAAK84B,SAASrgC,OAAQN,IAEtC8gC,OAASj5B,KAAK84B,SAAS3gC,GAIvB6H,KAAK44B,SAAL54B,SAAoB+4B,KAAOE,OAAOF,KAClC1gC,MAAQ2H,KAAK44B,SAAL54B,SAAoBkD,MAGxB7K,MAEA6B,EAAE8F,KAAKyrB,SAASjS,SAASyf,OAAO1/B,KAIhCW,EAAE8F,KAAKyrB,SAAS7hB,YAAYqvB,OAAO1/B,QAQnDiC,MAAMC,KAAKg9B,QAAQS,OAAS19B,MAAMC,KAAKi9B,OAAOhG,QAC1CsG,QAAS,WACL,GAAI3gC,OAAQ2H,KAAK44B,SAAiB,OAAE11B,KAEhC7K,OAEA6B,EAAE8F,KAAKyrB,SAASyN,OAAO,KAIvBh/B,EAAE8F,KAAKyrB,SAASpiB,UAM5B7N,MAAMC,KAAKg9B,QAAQU,MAAQ39B,MAAMC,KAAKi9B,OAAOhG,QACzCsG,QAAS,WACL,GAAI3gC,OAAQ2H,KAAK44B,SAAgB,MAAE11B,KAE/B7K,OAEA6B,EAAE8F,KAAKyrB,SAAS2N,YAIhBl/B,EAAE8F,KAAKyrB,SAAS4N,aAK5B79B,MAAMC,KAAKg9B,QAAQa,eAAiB99B,MAAMC,KAAKi9B,OAAOhG,QAClDsG,QAAS,WACL,GAAI3gC,OAAQ2H,KAAK44B,SAAyB,eAAE11B,KAExC7K,QAEA6B,EAAE8F,KAAKyrB,SAAStiB,KAAK,YAAY,GACjCjP,EAAE8F,KAAKyrB,SAASuI,KAAK,aAAa7qB,KAAK,YAAY,KAInDjP,EAAE8F,KAAKyrB,SAAS8N,WAAW,YAC3Br/B,EAAE8F,KAAKyrB,SAASuI,KAAK,aAAauF,WAAW,gBAMzD/9B,MAAMC,KAAKg9B,QAAQe,cAAgBh+B,MAAMC,KAAKi9B,OAAOhG,QACjDsG,QAAS,WACL,GAAI3gC,OAAQ2H,KAAK44B,SAAwB,cAAE11B,KAEvC7K,QAEA6B,EAAE8F,KAAKyrB,SAASzsB,YAK5BxD,MAAMC,KAAKg9B,QAAQc,WAAa/9B,MAAMC,KAAKi9B,OAAOhG,QAC9CiG,KAAM,SAAU9F,OAAQ+F,SAAUrB,SAC9B/7B,MAAMC,KAAKi9B,OAAOG,GAAGF,KAAKjd,KAAK1b,KAAM6yB,OAAQ+F,SAAUrB,SAGvDv3B,KAAK84B,WACL,KAAK,GAAIv/B,OAAOyG,MAAK44B,SAASW,WAAWR,KAErC/4B,KAAK84B,SAASxsB,MACV/S,IAAKA,IACLw/B,KAAM/4B,KAAK44B,SAASW,WAAWR,KAAKx/B,QAMhDy/B,QAAS,WAIL,IAAK,GAHDC,QACA5gC,MAEKF,EAAI,EAAGA,EAAI6H,KAAK84B,SAASrgC,OAAQN,IAEtC8gC,OAASj5B,KAAK84B,SAAS3gC,GAIvB6H,KAAK44B,SAASW,WAAWR,KAAOE,OAAOF,KACvC1gC,MAAQ2H,KAAK44B,SAASW,WAAWr2B,MAG7B7K,OAEA6B,EAAE8F,KAAKyrB,SAAS8N,WAAWN,OAAO1/B,QAOlDiC,MAAMC,KAAKg9B,QAAQgB,MAAQj+B,MAAMC,KAAKi9B,OAAOhG,QACzCsG,QAAS,WACL,GAAI3gC,OAAQ2H,KAAK44B,SAAgB,MAAE11B,MAC/BuoB,QAAUzrB,KAAKyrB,OACnB,IAAIpzB,MAAO,CAEP6B,EAAEuxB,SAAS9hB,KAAM+vB,SAAY,YAC7B,KAAK,GAAIC,GAAI,EAAGA,GAAK,EAAGA,IAEpBz/B,EAAEuxB,SACGtxB,SAAUq6B,UAAa,IACvBr6B,SAAUq6B,KAAM,GAAK,IACrBr6B,SAAUq6B,KAAM,IAAM,IACtBr6B,SAAUq6B,KAAM,GAAK,QC1J1C,SAAWt6B,GAEP,GAAI0/B,aAAc,cAAeC,UAAY,YAAaC,OAAS,SAE/DC,kBAAoBv+B,MAAM27B,GAAG6C,OAAOtH,QACpCiG,KAAM,SAAUlhC,EAAGwiC,GACf,GAAIz5B,MAAOR,IAMX,IAJAxE,MAAM27B,GAAG6C,OAAOnB,GAAGF,KAAKjd,KAAK1b,KAAMvI,EAAGwiC,GACtCz5B,KAAK05B,eAAiBhgC,EAAEigC,MAAMn6B,KAAKo6B,QAASp6B,MAC5CQ,KAAKirB,QAAQ4O,GAAG,SAAU75B,KAAK05B,gBAET,mBAAXI,UAA2BA,OAAOC,KAAKC,OAE9C,KAAM,iFAINP,GAAEQ,oBAAsBR,EAAEQ,qBAAuBvgC,EAAEzC,GAAGgE,KAAK,wBAA0B,KACrFw+B,EAAES,MAAQT,EAAES,OAASxgC,EAAEzC,GAAGgE,KAAK,WAAY,CAC3C,IAAIk/B,QAASljC,EACTmjC,UAEAC,uBAAyBz9B,QAAS68B,EAAEQ,qBAIpCR,GAAES,QAEFE,SAASF,OAAST,EAAES,OAIxB,IAAII,YAAa,GAAIR,QAAOC,KAAKC,OAAOO,aAAaJ,OAAQC,SAI7DN,QAAOC,KAAK1iC,MAAMmjC,YAAYF,WAAY,gBAAiB,SAAUrjC,GACjE,GAAIwjC,QAASH,WAAWI,YAEpBngC,OAAOogC,cAAcF,SAAYA,OAAO7D,eAAe,aAM3D52B,KAAK05B,eAAee,OAAOzD,OAMnC,KAEIh8B,MAAM27B,GAAG6C,OAAOnB,GAAGF,KAAKjd,KAAK1b,KAAMvI,EAAGwiC,GAExC,MAAOxiC,GAEL2jC,OAAOC,IAAI5jC,GAIfyC,EAAEzC,GAAG+hB,SAASxZ,KAAKu3B,QAAQC,KAAKvlB,gBAEpCslB,SACIC,KAAM,sBAEV8D,QACI1B,YACAC,UACAC,QAEJzhC,MAAO,SAAUA,OACb,GAAImI,MAAOR,IAEX,OAAqB,mBAAV3H,OAEAmI,KAAKirB,QAAQptB,UAIxBmC,MAAKirB,QAAQptB,IAAIhG,QAGrB+hC,QAAS,SAAU/7B,KACf,GAAImC,MAAOR,IAEXQ,MAAKuc,OAASvc,KAAKirB,QAAQptB,MAC3BmC,KAAKk0B,QAAQ,YAIrBl5B,OAAM27B,GAAGM,OAAOsC,mBAGhBv+B,MAAMC,KAAKg9B,QAAQ8C,OAAOd,oBAC1Bj/B,MAAMC,KAAKg9B,QAAQ8C,OAAOb,MAC1Bl/B,MAAMC,KAAKi9B,OAAOhG,QACdsG,QAAS,WAEL,GAAIh5B,KAAKyrB,kBAAmBsO,mBAAmB,CAE3C,GAAIlD,IACA2E,GAAIx7B,KAAK44B,SAA8B,oBACvC8B,MAAO16B,KAAK44B,SAAgB,MAIhC54B,MAAKyrB,QAAQgQ,WACTD,KAAI3E,EAAE2E,IAAK3E,EAAE2E,GAAGt4B,MAChBw3B,QAAO7D,EAAE6D,OAAQ7D,EAAE6D,MAAMx3B,aAM1CnI,QCtHHb,EAAE,WACEwhC,SAAW,GAAIC,mBACfD,SAASE,cCEZ,SAAUnkC,EAAGokC,GAAK,gBAAmBC,UAAW,mBAAsBC,QAASA,OAAOD,QAAUD,IAAM,kBAAqBG,SAAUA,OAAOC,IAAMD,OAAOH,GAAKpkC,EAAEykC,OAASL,KAAM77B,KAAM,WAAc,YAAqB,SAASm8B,KAAM,MAAOC,GAAEzE,MAAM,KAAMC,WAAa,QAASyE,GAAE5kC,GAAK,MAAOA,aAAakc,QAAS,mBAAqBhU,OAAOmzB,UAAUz5B,SAASqiB,KAAKjkB,GAAK,QAAS6kC,GAAE7kC,GAAK,MAAO,OAAQA,GAAK,oBAAsBkI,OAAOmzB,UAAUz5B,SAASqiB,KAAKjkB,GAAK,QAASm/B,GAAEn/B,EAAGokC,GAAK,MAAOl8B,QAAOmzB,UAAUsE,eAAe1b,KAAKjkB,EAAGokC,GAAK,QAASU,GAAE9kC,GAAK,GAAIkI,OAAO68B,oBAAqB,MAAO,KAAM78B,OAAO68B,oBAAoB/kC,GAAGgB,MAAQ,KAAK,GAAIojC,KAAKpkC,GAAG,GAAIm/B,EAAEn/B,EAAGokC,GAAI,MAAQ,OAAO,GAAI,QAASY,GAAEhlC,GAAK,MAAO,UAAWA,EAAI,QAASilC,GAAEjlC,GAAK,MAAO,gBAAmBA,IAAK,oBAAsBkI,OAAOmzB,UAAUz5B,SAASqiB,KAAKjkB,GAAK,QAASklC,GAAEllC,GAAK,MAAOA,aAAas5B,OAAQ,kBAAoBpxB,OAAOmzB,UAAUz5B,SAASqiB,KAAKjkB,GAAK,QAASmlC,GAAEnlC,EAAGokC,GAAK,IAAK,GAAIgB,MAAQC,EAAIrlC,EAAEgB,OAAQN,EAAI,EAAGA,EAAI2kC,IAAK3kC,EAAE0kC,EAAEvwB,KAAKuvB,EAAEpkC,EAAEU,GAAIA,GAAK,OAAO0kC,GAAI,QAASE,GAAEtlC,EAAGokC,GAAK,IAAK,GAAIgB,KAAKhB,GAAGjF,EAAEiF,EAAGgB,KAAOplC,EAAEolC,GAAKhB,EAAEgB,GAAK,OAAOjG,GAAEiF,EAAG,cAAgBpkC,EAAE4B,SAAWwiC,EAAExiC,UAAWu9B,EAAEiF,EAAG,aAAepkC,EAAEulC,QAAUnB,EAAEmB,SAAUvlC,EAAI,QAASwlC,GAAExlC,EAAGokC,EAAGgB,EAAGC,GAAK,MAAOI,IAAGzlC,EAAGokC,EAAGgB,EAAGC,GAAG,GAAIK,MAAQ,QAASC,GAAE3lC,GAAK,MAAO,OAAQA,EAAE4lC,MAAQ5lC,EAAE4lC,KAAQC,OAAO,EAAIC,gBAAkBC,eAAiBC,YAAcC,cAAe,EAAGC,WAAW,EAAIC,WAAY,KAAMC,aAAc,KAAMC,eAAe,EAAIC,iBAAiB,EAAIC,KAAK,EAAIC,mBAAqBC,IAAK,KAAMC,SAAU,KAAMC,SAAS,EAAIC,iBAAiB,IAAO5mC,EAAE4lC,IAAM,QAASiB,GAAE7mC,GAAK,GAAIokC,GAAGgB,EAAGC,EAAIrlC,EAAE8mC,KAAOC,MAAM/mC,EAAE8mC,GAAGE,UAAY,OAAO3B,KAAMjB,EAAIuB,EAAE3lC,GAAIolC,EAAItpB,EAAEmI,KAAKmgB,EAAEoC,gBAAiB,SAAUxmC,GAAK,MAAO,OAAQA,IAAMqlC,EAAIjB,EAAE4B,SAAW,IAAM5B,EAAEyB,QAAUzB,EAAE+B,aAAe/B,EAAEgC,eAAiBhC,EAAE6C,iBAAmB7C,EAAEwC,kBAAoBxC,EAAE8B,YAAc9B,EAAEiC,gBAAkBjC,EAAEkC,mBAAqBlC,EAAEsC,UAAYtC,EAAEsC,UAAYtB,GAAIplC,EAAEknC,WAAa7B,EAAIA,GAAK,IAAMjB,EAAE6B,eAAiB,IAAM7B,EAAE0B,aAAa9kC,QAAU,SAAWojC,EAAE+C,SAAU,MAAQj/B,OAAOk/B,UAAYl/B,OAAOk/B,SAASpnC,GAAKqlC,GAAKrlC,EAAEqnC,SAAWhC,EAAGrlC,EAAEqnC,UAAY,QAASC,GAAEtnC,GAAK,GAAIokC,GAAIoB,EAAE+B,IAAM,OAAO,OAAQvnC,EAAIslC,EAAEK,EAAEvB,GAAIpkC,GAAK2lC,EAAEvB,GAAGkC,iBAAkB,EAAIlC,EAAyN,QAASoD,GAAExnC,EAAGokC,GAAK,GAAIgB,GAAGC,EAAG3kC,EAAG+mC,EAAIC,EAAE1mC,MAAQ,IAAIgkC,EAAEZ,EAAEuD,oBAAsB3nC,EAAE2nC,iBAAmBvD,EAAEuD,kBAAmB3C,EAAEZ,EAAE7uB,MAAQvV,EAAEuV,GAAK6uB,EAAE7uB,IAAKyvB,EAAEZ,EAAEwD,MAAQ5nC,EAAE4nC,GAAKxD,EAAEwD,IAAK5C,EAAEZ,EAAEyD,MAAQ7nC,EAAE6nC,GAAKzD,EAAEyD,IAAK7C,EAAEZ,EAAE8C,WAAalnC,EAAEknC,QAAU9C,EAAE8C,SAAUlC,EAAEZ,EAAE0D,QAAU9nC,EAAE8nC,KAAO1D,EAAE0D,MAAO9C,EAAEZ,EAAE2D,UAAY/nC,EAAE+nC,OAAS3D,EAAE2D,QAAS/C,EAAEZ,EAAE4D,WAAahoC,EAAEgoC,QAAU5D,EAAE4D,SAAUhD,EAAEZ,EAAEwB,OAAS5lC,EAAE4lC,IAAMD,EAAEvB,IAAKY,EAAEZ,EAAE6D,WAAajoC,EAAEioC,QAAU7D,EAAE6D,SAAU,EAAIR,EAAG,IAAKrC,EAAI,EAAGA,EAAIqC,EAAGrC,IAAIJ,EAAEtkC,EAAI0jC,EAAEiB,EAAIqC,EAAEtC,OAASplC,EAAEqlC,GAAK3kC,EAAI,OAAOV,GAAI,QAASyC,GAAEzC,GAAKwnC,EAAEj/B,KAAMvI,GAAIuI,KAAKu+B,GAAK,GAAIxN,MAAK,MAAQt5B,EAAE8mC,GAAK9mC,EAAE8mC,GAAGE,UAAYO,KAAMh/B,KAAK2/B,YAAc3/B,KAAKu+B,GAAK,GAAIxN,MAAKiO,OAAO,IAAOY,IAAMA,GAAI,EAAIzD,EAAE0D,aAAa7/B,MAAO4/B,GAAI,GAAM,QAAS1uB,GAAEzZ,GAAK,MAAOA,aAAayC,IAAK,MAAQzC,GAAK,MAAQA,EAAE2nC,iBAAmB,QAASU,GAAEroC,IAAK,IAAO0kC,EAAE4D,6BAA+B,mBAAsBC,UAAWA,QAAQC,MAAQD,QAAQC,KAAK,wBAA0BxoC,GAAK,QAASA,GAAEynC,EAAGxI,GAAK,GAAIuD,IAAI,CAAI,OAAO8C,GAAE,WAAc,GAAI,MAAQZ,EAAE+D,oBAAsB/D,EAAE+D,mBAAmB,KAAMhB,GAAIjF,EAAG,CAAE,IAAK,GAAIxiC,GAAGokC,EAAGgB,KAAQC,EAAIlF,UAAUn/B,OAAQN,EAAI,EAAGA,EAAI2kC,EAAG3kC,IAAK,CAAE,GAAIV,EAAI,GAAI,gBAAmBmgC,WAAUz/B,GAAI,CAAE,IAAK0jC,IAAKpkC,IAAK,MAAQU,EAAI,KAAMy/B,UAAU,GAAIhB,EAAEgB,UAAU,GAAIiE,KAAOpkC,GAAKokC,EAAI,KAAOjE,UAAU,GAAGiE,GAAK,KAAOpkC,GAAIA,EAAEkB,MAAM,UAAclB,GAAImgC,UAAUz/B,EAAI0kC,GAAEvwB,KAAK7U,GAAKqoC,EAAEZ,EAAI,gBAAkBvrB,MAAMmf,UAAUn6B,MAAM+iB,KAAKmhB,GAAGlsB,KAAK,IAAM,MAAO,GAAKwvB,QAAOC,OAAQnG,GAAI,EAAK,MAAOvD,GAAEiB,MAAM33B,KAAM43B,YAAclB,GAAiB,QAAS2J,GAAE5oC,EAAGokC,GAAK,MAAQM,EAAE+D,oBAAsB/D,EAAE+D,mBAAmBzoC,EAAGokC,GAAIyE,EAAE7oC,KAAOqoC,EAAEjE,GAAIyE,EAAE7oC,IAAK,GAAM,QAASi/B,GAAEj/B,GAAK,MAAO,mBAAsB8oC,WAAY9oC,YAAa8oC,WAAY,sBAAwB5gC,OAAOmzB,UAAUz5B,SAASqiB,KAAKjkB,GAAK,QAAS+oC,GAAE/oC,EAAGokC,GAAK,GAAIgB,GAAGC,EAAIC,KAAMtlC,EAAI,KAAKolC,IAAKhB,GAAGjF,EAAEiF,EAAGgB,KAAOP,EAAE7kC,EAAEolC,KAAOP,EAAET,EAAEgB,KAAOC,EAAED,MAASE,EAAED,EAAED,GAAIplC,EAAEolC,IAAKE,EAAED,EAAED,GAAIhB,EAAEgB,KAAO,MAAQhB,EAAEgB,GAAKC,EAAED,GAAKhB,EAAEgB,SAAYC,GAAED,GAAK,KAAKA,IAAKplC,GAAGm/B,EAAEn/B,EAAGolC,KAAOjG,EAAEiF,EAAGgB,IAAMP,EAAE7kC,EAAEolC,MAAQC,EAAED,GAAKE,KAAMD,EAAED,IAAM,OAAOC,GAAI,QAAS2D,GAAEhpC,GAAK,MAAQA,GAAKuI,KAAK0C,IAAIjL,GAA2K,QAASynC,GAAEznC,EAAGokC,EAAGgB,GAAK,GAAIC,GAAI,GAAK3nB,KAAKmf,IAAI78B,EAAI,QAAQ,GAAKA,EAAIolC,EAAI,IAAM,GAAK,KAAO1nB,KAAKurB,IAAI,GAAIvrB,KAAKzc,IAAI,EAAGmjC,EAAIiB,EAAErkC,SAASY,WAAWsnC,OAAO,GAAK7D,EAA4R,QAASA,GAAErlC,EAAGokC,EAAGgB,EAAGC,GAAK,GAAI3kC,GAAI,gBAAmB2kC,GAAI,WAAc,MAAO98B,MAAK88B,MAASA,CAAGrlC,KAAMmpC,GAAGnpC,GAAKU,GAAI0jC,IAAM+E,GAAG/E,EAAE,IAAM,WAAc,MAAOqD,GAAE/mC,EAAEw/B,MAAM33B,KAAM43B,WAAYiE,EAAE,GAAIA,EAAE,MAAQgB,IAAM+D,GAAG/D,GAAK,WAAc,MAAO78B,MAAK6gC,aAAaC,QAAQ3oC,EAAEw/B,MAAM33B,KAAM43B,WAAYngC,KAAQ,QAASspC,IAAGtpC,EAAGokC,GAAK,MAAOpkC,GAAEkoC,WAAa9D,EAAImF,GAAGnF,EAAGpkC,EAAEopC,cAAeI,GAAGpF,GAAKoF,GAAGpF,IAAM,SAAUiB,GAAK,IAAK,GAAIrlC,GAAGU,EAAI2kC,EAAEvsB,MAAM2wB,IAAKrF,EAAI,EAAGqD,EAAI/mC,EAAEM,OAAQojC,EAAIqD,EAAGrD,IAAI+E,GAAGzoC,EAAE0jC,IAAM1jC,EAAE0jC,GAAK+E,GAAGzoC,EAAE0jC,IAAM1jC,EAAE0jC,IAAMpkC,EAAIU,EAAE0jC,IAAItrB,MAAM,YAAc9Y,EAAE6B,QAAQ,WAAY,IAAM7B,EAAE6B,QAAQ,MAAO,GAAK,OAAO,UAAU7B,GAAK,IAAK,GAAIokC,GAAI,GAAIgB,EAAI,EAAGA,EAAIqC,EAAGrC,IAAIhB,GAAKnF,EAAEv+B,EAAE0kC,IAAM1kC,EAAE0kC,GAAGnhB,KAAKjkB,EAAGqlC,GAAK3kC,EAAE0kC,EAAI,OAAOhB,KAAMA,GAAIoF,GAAGpF,GAAGpkC,IAAMA,EAAEopC,aAAaM,cAAgB,QAASH,IAAGvpC,EAAGokC,GAAgB,QAASiB,GAAErlC,GAAK,MAAOokC,GAAEuF,eAAe3pC,IAAMA,EAAzD,GAAIolC,GAAI,CAAqD,KAAKwE,GAAGC,UAAY,EAAG,GAAKzE,GAAKwE,GAAGxnC,KAAKpC,IAAIA,EAAIA,EAAE6B,QAAQ+nC,GAAIvE,GAAIuE,GAAGC,UAAY,IAAKzE,CAAG,OAAOplC,GAAw2B,QAASwiC,GAAExiC,GAAK,MAAO,gBAAmBA,GAAI8pC,GAAG9pC,IAAM8pC,GAAG9pC,EAAEwa,eAAiB,OAAS,QAASuvB,IAAG/pC,GAAK,GAAIokC,GAAGgB,EAAGC,IAAQ,KAAKD,IAAKplC,GAAGm/B,EAAEn/B,EAAGolC,KAAOhB,EAAI5B,EAAE4C,MAAQC,EAAEjB,GAAKpkC,EAAEolC,GAAK,OAAOC,GAAiqB,QAAS2E,GAAEhqC,EAAGolC,EAAGC,GAAK4E,GAAGjqC,GAAKi/B,EAAEmG,GAAKA,EAAI,SAAUplC,EAAGokC,GAAK,MAAOpkC,IAAKqlC,EAAIA,EAAID,GAAM,QAAS8E,IAAGlqC,EAAGokC,GAAK,MAAOjF,GAAE8K,GAAIjqC,GAAKiqC,GAAGjqC,GAAGokC,EAAE8C,QAAS9C,EAAE6D,SAAW,GAAI1hC,QAAO4jC,EAAEnqC,EAAE6B,QAAQ,KAAM,IAAIA,QAAQ,sCAAuC,SAAU7B,EAAGokC,EAAGgB,EAAGC,EAAG3kC,GAAK,MAAO0jC,IAAKgB,GAAKC,GAAK3kC,MAAS,QAASypC,GAAEnqC,GAAK,MAAOA,GAAE6B,QAAQ,yBAA0B,QAAU,QAASuoC,GAAEpqC,GAAK,MAAOA,GAAI,EAAI0d,KAAK2sB,KAAKrqC,IAAM,EAAI0d,KAAK4sB,MAAMtqC,GAAK,QAASuqC,GAAEvqC,GAAK,GAAIA,IAAKA,EAAGokC,EAAI,CAAG,OAAOA,GAAI,GAAKpkC,GAAKwqC,SAASxqC,GAAKoqC,EAAEpqC,GAAKokC,EAA0B,QAASqG,GAAEzqC,EAAGolC,GAAK,GAAIhB,GAAGiB,EAAG3kC,EAAI0kC,CAAG,KAAK,gBAAmBplC,KAAMA,GAAKA,IAAKilC,EAAEG,KAAO1kC,EAAI,SAAUV,EAAGokC,GAAKA,EAAEgB,GAAKmF,EAAEvqC,KAAOqlC,EAAIrlC,EAAEgB,OAAQojC,EAAI,EAAGA,EAAIiB,EAAGjB,IAAIsG,GAAG1qC,EAAEokC,IAAM1jC,EAAI,QAASiqC,IAAG3qC,EAAGU,GAAK+pC,EAAEzqC,EAAG,SAAUA,EAAGokC,EAAGgB,EAAGC,GAAKD,EAAEvyB,GAAKuyB,EAAEvyB,OAAUnS,EAAEV,EAAGolC,EAAEvyB,GAAIuyB,EAAGC,KAAQ,QAASuF,IAAG5qC,GAAK,MAAOA,GAAI,GAAK,GAAKA,EAAI,KAAO,GAAKA,EAAI,KAAO,EAA0E,QAAS6qC,IAAG7qC,GAAK,MAAO4qC,IAAG5qC,GAAK,IAAM,IAAqqB,QAAS8qC,IAAG1G,EAAGgB,GAAK,MAAO,UAAUplC,GAAK,MAAO,OAAQA,GAAK+qC,GAAGxiC,KAAM67B,EAAGpkC,GAAI0kC,EAAE0D,aAAa7/B,KAAM68B,GAAI78B,MAAQyiC,GAAGziC,KAAM67B,IAAO,QAAS4G,IAAGhrC,EAAGokC,GAAK,IAAKpkC,EAAEkoC,UAAW,MAAOX,IAAK,IAAInC,GAAIplC,EAAE8mC,GAAIzB,EAAIrlC,EAAE+nC,MAAQ,QAAQ3D,GAAK,IAAK,eAAgB,MAAOiB,GAAID,EAAE6F,qBAAuB7F,EAAE8F,iBAAmB,KAAK,UAAW,MAAO7F,GAAID,EAAE+F,gBAAkB/F,EAAEgG,YAAc,KAAK,UAAW,MAAO/F,GAAID,EAAEiG,gBAAkBjG,EAAEkG,YAAc,KAAK,QAAS,MAAOjG,GAAID,EAAEmG,cAAgBnG,EAAEoG,UAAY,KAAK,OAAQ,MAAOnG,GAAID,EAAEqG,aAAerG,EAAEsG,SAAW,KAAK,MAAO,MAAOrG,GAAID,EAAEuG,YAAcvG,EAAEwG,QAAU,KAAK,QAAS,MAAOvG,GAAID,EAAEyG,cAAgBzG,EAAE0G,UAAY,KAAK,WAAY,MAAOzG,GAAID,EAAE2G,iBAAmB3G,EAAE4G,aAAe,SAAS,MAAOzE,MAAQ,QAASwD,IAAG/qC,EAAGokC,EAAGgB,GAAK,GAAIC,GAAG3kC,EAAG+mC,CAAG,IAAIznC,EAAEkoC,YAAcnB,MAAM3B,GAAI,CAAE,OAAQC,EAAIrlC,EAAE8mC,GAAIpmC,EAAIV,EAAE+nC,OAAQ3D,GAAK,IAAK,eAAgB,MAAO1jC,GAAI2kC,EAAE4G,mBAAmB7G,GAAKC,EAAE6G,gBAAgB9G,EAAI,KAAK,UAAW,MAAO1kC,GAAI2kC,EAAE8G,cAAc/G,GAAKC,EAAE+G,WAAWhH,EAAI,KAAK,UAAW,MAAO1kC,GAAI2kC,EAAEgH,cAAcjH,GAAKC,EAAEiH,WAAWlH,EAAI,KAAK,QAAS,MAAO1kC,GAAI2kC,EAAEkH,YAAYnH,GAAKC,EAAEmH,SAASpH,EAAI,KAAK,OAAQ,MAAO1kC,GAAI2kC,EAAEoH,WAAWrH,GAAKC,EAAEqH,QAAQtH,EAAI,KAAK,WAAY,KAAO,SAAS,OAAQhB,EAAIgB,EAAGqC,EAAIznC,EAAE2sC,QAAS3sC,EAAI,MAAQA,EAAIA,EAAEq5B,SAAW,IAAMoO,GAAKmD,GAAGxG,GAAKpkC,EAAI,GAAIU,EAAI2kC,EAAEuH,eAAexI,EAAGqD,EAAGznC,GAAKqlC,EAAEwH,YAAYzI,EAAGqD,EAAGznC,IAAO,QAAS8sC,IAAG9sC,EAAGokC,GAAK,GAAIgB,EAAG,OAAO2B,OAAM/mC,IAAM+mC,MAAM3C,GAAKmD,KAAOnC,GAAKhB,GAAKgB,EAAI,IAAMA,GAAKA,EAAGplC,IAAMokC,EAAIgB,GAAK,GAAI,GAAKA,EAAIwF,GAAG5qC,GAAK,GAAK,GAAK,GAAKolC,EAAI,EAAI,GAAo5B,QAAS2H,IAAG/sC,EAAGokC,GAAK,GAAIpkC,EAAEkoC,UAAW,CAAE,GAAI,gBAAmB9D,GAAG,GAAI,QAAQhiC,KAAKgiC,GAAIA,EAAImG,EAAEnG,OAAS,KAAKa,EAAEb,EAAIpkC,EAAEopC,aAAa4D,YAAY5I,IAAK,MAAQ,IAAIgB,IAAKA,EAAIplC,EAAEq5B,QAAU,GAAK+L,EAAI1nB,KAAKjc,IAAI2jC,EAAG0H,GAAG9sC,EAAEitC,OAAQ7I,GAAKpkC,GAAE+nC,OAAS/nC,EAAE8mC,GAAGoG,YAAY9I,EAAGgB,GAAKplC,EAAE8mC,GAAGqG,SAAS/I,EAAGgB,IAAO,QAASgI,IAAGptC,GAAK,MAAO,OAAQA,GAAK+sC,GAAGxkC,KAAMvI,GAAI0kC,EAAE0D,aAAa7/B,MAAM,GAAKA,MAAQyiC,GAAGziC,KAAM,SAAW,QAAS8kC,MAAO,QAASrtC,GAAEA,EAAGokC,GAAK,MAAOA,GAAEpjC,OAAShB,EAAEgB,OAAS,IAAK,GAAIojC,GAAGgB,EAAGC,KAAQ3kC,KAAQ+mC,KAAQxI,EAAI,EAAGA,EAAI,GAAIA,IAAImG,EAAII,GAAG,IAAKvG,IAAKmF,EAAI+F,EAAE5hC,KAAK+kC,YAAYlI,EAAG,KAAMA,EAAI+E,EAAE5hC,KAAKglC,OAAOnI,EAAG,KAAMC,EAAExwB,KAAKuvB,GAAI1jC,EAAEmU,KAAKuwB,GAAIqC,EAAE5yB,KAAKuwB,GAAIqC,EAAE5yB,KAAKuvB,EAAIiB,GAAEp2B,KAAKjP,GAAIU,EAAEuO,KAAKjP,GAAIynC,EAAEx4B,KAAKjP,GAAIuI,KAAKilC,aAAe,GAAIjnC,QAAO,KAAOkhC,EAAEvuB,KAAK,KAAO,IAAK,KAAM3Q,KAAKklC,kBAAoBllC,KAAKilC,aAAcjlC,KAAKmlC,mBAAqB,GAAInnC,QAAO,KAAO7F,EAAEwY,KAAK,KAAO,IAAK,KAAM3Q,KAAKolC,wBAA0B,GAAIpnC,QAAO,KAAO8+B,EAAEnsB,KAAK,KAAO,IAAK,KAAO,QAAS00B,IAAG5tC,EAAGokC,EAAGgB,EAAGC,EAAG3kC,EAAG+mC,EAAGxI,GAAK,GAAIuD,EAAG,OAAOxiC,GAAI,KAAO,GAAKA,GAAKwiC,EAAI,GAAIlJ,MAAKt5B,EAAI,IAAKokC,EAAGgB,EAAGC,EAAG3kC,EAAG+mC,EAAGxI,GAAIuL,SAAShI,EAAEwJ,gBAAkBxJ,EAAEqK,YAAY7sC,IAAMwiC,EAAI,GAAIlJ,MAAKt5B,EAAGokC,EAAGgB,EAAGC,EAAG3kC,EAAG+mC,EAAGxI,GAAIuD,EAAI,QAASqL,IAAG7tC,GAAK,GAAIokC,EAAG,OAAOpkC,GAAI,KAAO,GAAKA,IAAMokC,EAAIloB,MAAMmf,UAAUn6B,MAAM+iB,KAAKkc,YAAY,GAAKngC,EAAI,IAAKokC,EAAI,GAAI9K,MAAKA,KAAKwU,IAAI5N,MAAM,KAAMkE,IAAKoG,SAASpG,EAAE2H,mBAAqB3H,EAAEwI,eAAe5sC,IAAMokC,EAAI,GAAI9K,MAAKA,KAAKwU,IAAI5N,MAAM,KAAMC,YAAaiE,EAAI,QAAS2J,IAAG/tC,EAAGokC,EAAGgB,GAAoB,MAAfA,GAAI,EAAIhB,EAAIgB,EAAUA,GAAK,EAAIyI,GAAG7tC,EAAG,EAAGolC,GAAGuG,YAAcvH,GAAK,EAAI,EAAI,QAAS4J,IAAGhuC,EAAGokC,EAAGgB,EAAGC,EAAG3kC,GAAK,GAAI+mC,GAAGrD,EAAI,EAAI,GAAKA,EAAI,IAAM,EAAIgB,EAAIC,GAAK,EAAI0I,GAAG/tC,EAAGqlC,EAAG3kC,GAAI0kC,EAAIhB,GAAK,EAAIyG,GAAGpD,EAAIznC,EAAI,GAAKokC,EAAIA,EAAIyG,GAAG7qC,IAAMynC,EAAIznC,EAAI,EAAGokC,EAAIyG,GAAG7qC,KAAOynC,EAAIznC,EAAGokC,EAAI,QAAS6I,KAAMxF,EAAGwG,UAAW7I,GAAM,QAAS8I,IAAGluC,EAAGokC,EAAGgB,GAAK,GAAIC,GAAG3kC,EAAG+mC,EAAIsG,GAAG/tC,EAAEitC,OAAQ7I,EAAGgB,GAAIqC,EAAI/pB,KAAK4sB,OAAOtqC,EAAEiuC,YAAcxG,EAAI,GAAK,GAAK,CAAG,OAAOA,GAAI,EAAIpC,EAAIoC,EAAI0G,EAAEztC,EAAIV,EAAEitC,OAAS,EAAG7I,EAAGgB,GAAKqC,EAAI0G,EAAEnuC,EAAEitC,OAAQ7I,EAAGgB,IAAMC,EAAIoC,EAAI0G,EAAEnuC,EAAEitC,OAAQ7I,EAAGgB,GAAI1kC,EAAIV,EAAEitC,OAAS,IAAMvsC,EAAIV,EAAEitC,OAAQ5H,EAAIoC,IAAM2G,KAAM/I,EAAG4H,KAAMvsC,GAAM,QAASytC,GAAEnuC,EAAGokC,EAAGgB,GAAK,GAAIC,GAAI0I,GAAG/tC,EAAGokC,EAAGgB,GAAIhB,EAAI2J,GAAG/tC,EAAI,EAAGokC,EAAGgB,EAAI,QAAQyF,GAAG7qC,GAAKqlC,EAAIjB,GAAK,EAAmN,QAASiK,IAAGruC,EAAGokC,GAAK,MAAOpkC,GAAEkB,MAAMkjC,EAAG,GAAG5P,OAAOx0B,EAAEkB,MAAM,EAAGkjC,IAAm6B,QAASkK,MAAO,QAAStuC,GAAEA,EAAGokC,GAAK,MAAOA,GAAEpjC,OAAShB,EAAEgB,OAAS,IAAK,GAAIojC,GAAGgB,EAAGC,EAAG3kC,KAAQ+mC,KAAQxI,KAAQuD,KAAQ+L,EAAI,EAAGA,EAAI,EAAGA,IAAIlJ,EAAIG,GAAG,IAAK,IAAIgJ,IAAID,GAAInK,EAAI+F,EAAE5hC,KAAKkmC,YAAYpJ,EAAG,KAAMD,EAAI+E,EAAE5hC,KAAKmmC,cAAcrJ,EAAG,KAAMA,EAAI8E,EAAE5hC,KAAKomC,SAAStJ,EAAG,KAAM3kC,EAAEmU,KAAKuvB,GAAIqD,EAAE5yB,KAAKuwB,GAAInG,EAAEpqB,KAAKwwB,GAAI7C,EAAE3tB,KAAKuvB,GAAI5B,EAAE3tB,KAAKuwB,GAAI5C,EAAE3tB,KAAKwwB,EAAI3kC,GAAEuO,KAAKjP,GAAIynC,EAAEx4B,KAAKjP,GAAIi/B,EAAEhwB,KAAKjP,GAAIwiC,EAAEvzB,KAAKjP,GAAIuI,KAAKqmC,eAAiB,GAAIroC,QAAO,KAAOi8B,EAAEtpB,KAAK,KAAO,IAAK,KAAM3Q,KAAKsmC,oBAAsBtmC,KAAKqmC,eAAgBrmC,KAAKumC,kBAAoBvmC,KAAKqmC,eAAgBrmC,KAAKwmC,qBAAuB,GAAIxoC,QAAO,KAAO04B,EAAE/lB,KAAK,KAAO,IAAK,KAAM3Q,KAAKymC,0BAA4B,GAAIzoC,QAAO,KAAOkhC,EAAEvuB,KAAK,KAAO,IAAK,KAAM3Q,KAAK0mC,wBAA0B,GAAI1oC,QAAO,KAAO7F,EAAEwY,KAAK,KAAO,IAAK,KAAO,QAASg2B,MAAO,MAAO3mC,MAAK4mC,QAAU,IAAM,GAAK,QAASC,IAAGpvC,EAAGokC,GAAKiB,EAAErlC,EAAG,EAAG,EAAG,WAAc,MAAOuI,MAAK6gC,aAAa1C,SAASn+B,KAAK4mC,QAAS5mC,KAAK8mC,UAAWjL,KAAQ,QAASpoB,IAAGhc,EAAGokC,GAAK,MAAOA,GAAEkL,eAAm0E,QAASC,IAAGvvC,GAAK,MAAOA,IAAKA,EAAEwa,cAAc3Y,QAAQ,IAAK,KAAO,QAAS2tC,IAAGxvC,GAAK,IAAK,GAAIokC,GAAGgB,EAAGC,EAAG3kC,EAAG+mC,EAAI,EAAGA,EAAIznC,EAAEgB,QAAS,CAAE,IAAKojC,GAAK1jC,EAAI6uC,GAAGvvC,EAAEynC,IAAIvzB,MAAM,MAAMlT,OAAQokC,GAAKA,EAAImK,GAAGvvC,EAAEynC,EAAI,KAAOrC,EAAElxB,MAAM,KAAO,KAAM,EAAIkwB,GAAI,CAAE,GAAIiB,EAAIoK,GAAG/uC,EAAEQ,MAAM,EAAGkjC,GAAGlrB,KAAK,MAAO,MAAOmsB,EAAG,IAAID,GAAKA,EAAEpkC,QAAUojC,GAAK,SAAUpkC,EAAGokC,GAAK,IAAK,GAAIgB,GAAI1nB,KAAKjc,IAAIzB,EAAEgB,OAAQojC,EAAEpjC,QAASqkC,EAAI,EAAGA,EAAID,EAAGC,GAAK,EAAE,GAAIrlC,EAAEqlC,KAAOjB,EAAEiB,GAAI,MAAOA,EAAG,OAAOD,IAAI1kC,EAAG0kC,IAAMhB,EAAI,EAAG,KAAOA,KAAMqD,IAAM,MAAOiI,IAAK,QAASD,IAAGrL,GAAK,GAAIpkC,GAAGolC,CAAG,IAAI,SAAWuK,EAAEvL,IAAM,mBAAsBE,SAAUA,QAAUA,OAAOD,UAAYe,EAAIhB,IAAMgB,EAAEtsB,MAAM,eAAgB,IAAM9Y,EAAI0vC,GAAGE,MAAOC,QAAQ,YAAczL,GAAI0L,GAAG9vC,GAAK,MAAOA,GAAK2vC,EAAEvL,GAAK,KAAO,MAAOuL,GAAEvL,GAAK,QAAS0L,IAAG9vC,EAAGokC,GAAK,MAAOpkC,MAAOokC,EAAIY,EAAEZ,GAAK2L,EAAE/vC,GAAKgwC,GAAGhwC,EAAGokC,IAAMsL,GAAKtL,EAAI,mBAAsBmE,UAAWA,QAAQC,MAAQD,QAAQC,KAAK,UAAYxoC,EAAI,2CAA4C0vC,GAAGE,MAAQ,QAASI,IAAGhwC,EAAGokC,GAAK,GAAI,OAASA,EAAG,aAAcuL,GAAE3vC,GAAI,IAAM,IAAIolC,GAAGC,EAAI4K,EAAI,IAAI7L,EAAE8L,KAAOlwC,EAAG,MAAQ2vC,EAAE3vC,GAAI4oC,EAAE,uBAAwB,2OAA4OvD,EAAIsK,EAAE3vC,GAAGmwC,YAAc,IAAI,MAAQ/L,EAAEgM,aAAc,GAAI,MAAQT,EAAEvL,EAAEgM,cAAe/K,EAAIsK,EAAEvL,EAAEgM,cAAcD,YAAc,CAAE,GAAI,OAAS/K,EAAIqK,GAAGrL,EAAEgM,eAAgB,MAAOC,IAAGjM,EAAEgM,gBAAkBC,GAAGjM,EAAEgM,kBAAqBC,GAAGjM,EAAEgM,cAAcv7B,MAAOkrB,KAAM//B,EAAGswC,OAAQlM,IAAM,IAAMiB,GAAID,EAAE+K,QAAU,MAAOR,GAAE3vC,GAAK,GAAIgpC,GAAED,EAAE1D,EAAGjB,IAAKiM,GAAGrwC,IAAMqwC,GAAGrwC,GAAG4L,QAAQ,SAAU5L,GAAKgwC,GAAGhwC,EAAE+/B,KAAM//B,EAAEswC,UAAYR,GAAG9vC,GAAI2vC,EAAE3vC,GAAK,QAAS+vC,GAAE/vC,GAAK,GAAIokC,EAAG,MAAMpkC,EAAIA,GAAKA,EAAEioC,SAAWjoC,EAAEioC,QAAQ2H,MAAQ5vC,EAAEioC,QAAQ2H,MAAQ5vC,GAAI,MAAO0vC,GAAI,KAAK9K,EAAE5kC,GAAI,CAAE,GAAIokC,EAAIqL,GAAGzvC,GAAI,MAAOokC,EAAGpkC,IAAKA,GAAK,MAAOwvC,IAAGxvC,GAAK,QAASuwC,IAAGvwC,GAAK,GAAIokC,GAAIpkC,EAAEwwC,EAAI,OAAOpM,SAAYuB,EAAE3lC,GAAGgmC,WAAa5B,EAAIA,EAAEqM,GAAK,GAAK,GAAKrM,EAAEqM,GAAKA,EAAIrM,EAAEsM,GAAK,GAAKtM,EAAEsM,GAAK5D,GAAG1I,EAAEuM,GAAIvM,EAAEqM,IAAMC,EAAItM,EAAEwM,GAAK,GAAK,GAAKxM,EAAEwM,IAAM,KAAOxM,EAAEwM,KAAO,IAAMxM,EAAEhF,IAAM,IAAMgF,EAAEyM,IAAM,IAAMzM,EAAE0M,KAAOF,EAAIxM,EAAEhF,GAAK,GAAK,GAAKgF,EAAEhF,GAAKA,EAAIgF,EAAEyM,GAAK,GAAK,GAAKzM,EAAEyM,GAAKA,EAAIzM,EAAE0M,IAAM,GAAK,IAAM1M,EAAE0M,IAAMA,MAASnL,EAAE3lC,GAAG+wC,qBAAuB3M,EAAIuM,GAAKD,EAAItM,KAAOA,EAAIsM,GAAI/K,EAAE3lC,GAAGgxC,qBAAyB5M,IAAMA,EAAI6M,IAAKtL,EAAE3lC,GAAGkxC,uBAA2B9M,IAAMA,EAAI+M,IAAKxL,EAAE3lC,GAAGgmC,SAAW5B,GAAIpkC,EAA40C,QAASoxC,IAAGpxC,GAAK,GAAIokC,GAAGgB,EAAGC,EAAG3kC,EAAG+mC,EAAGxI,EAAGuD,EAAIxiC,EAAEuV,GAAIg5B,EAAI8C,GAAGC,KAAK9O,IAAM+O,GAAGD,KAAK9O,GAAIA,EAAIgP,GAAGxwC,OAAQwkC,EAAIiM,GAAGzwC,MAAQ,IAAIutC,EAAG,CAAE,IAAK5I,EAAE3lC,GAAGumC,KAAM,EAAInC,EAAI,EAAGgB,EAAI5C,EAAG4B,EAAIgB,EAAGhB,IAAI,GAAIoN,GAAGpN,GAAG,GAAGkN,KAAK/C,EAAE,IAAK,CAAE7tC,EAAI8wC,GAAGpN,GAAG,GAAIiB,GAAI,IAAOmM,GAAGpN,GAAG,EAAI,OAAQ,GAAI,MAAQ1jC,EAAGV,EAAEqnC,UAAW,MAAS,CAAE,GAAIkH,EAAE,GAAI,CAAE,IAAKnK,EAAI,EAAGgB,EAAII,EAAGpB,EAAIgB,EAAGhB,IAAI,GAAIqN,GAAGrN,GAAG,GAAGkN,KAAK/C,EAAE,IAAK,CAAE9G,GAAK8G,EAAE,IAAM,KAAOkD,GAAGrN,GAAG,EAAI,OAAQ,GAAI,MAAQqD,EAAG,YAAaznC,EAAEqnC,UAAW,GAAM,GAAIhC,GAAK,MAAQoC,EAAG,CAAE,GAAI8G,EAAE,GAAI,CAAE,IAAKmD,GAAGJ,KAAK/C,EAAE,IAAK,YAAavuC,EAAEqnC,UAAW,EAAKpI,GAAI,IAAMj/B,EAAE4nC,GAAKlnC,GAAK+mC,GAAK,KAAOxI,GAAK,IAAK0S,GAAG3xC,OAAUA,GAAEqnC,UAAW,OAAYrnC,GAAEqnC,UAAW,EAAK,QAASuK,IAAG5xC,EAAGokC,EAAGgB,EAAGC,EAAG3kC,EAAG+mC,GAA+L,MAA1LznC,IAAK,SAAUA,GAA4B,MAAvBA,GAAIsB,SAAStB,EAAG,IAAWA,GAAK,GAAW,IAAMA,EAAOA,GAAK,IAAY,KAAOA,EAAWA,GAAIA,GAAI6xC,GAAGxvC,QAAQ+hC,GAAI9iC,SAAS8jC,EAAG,IAAK9jC,SAAS+jC,EAAG,IAAK/jC,SAASZ,EAAG,KAAa+mC,GAAKznC,EAAE6U,KAAKvT,SAASmmC,EAAG,KAAMznC,EAAI,QAAS8xC,IAAG9xC,GAAK,GAAIokC,GAAGgB,EAAGC,EAAI0M,GAAGT,KAAKtxC,EAAEuV,GAAG1T,QAAQ,qBAAsB,KAAKA,QAAQ,WAAY,KAAKA,QAAQ,SAAU,IAAIA,QAAQ,SAAU,IAAMwjC,IAAKjB,EAAIwN,GAAGvM,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,IAAK,SAAUrlC,EAAGokC,EAAGgB,GAAK,MAAKplC,IAAKgyC,GAAG3vC,QAAQrC,KAAO,GAAIs5B,MAAK8K,EAAE,GAAIA,EAAE,GAAIA,EAAE,IAAIwH,UAAoBjG,EAAEP,GAAGwB,iBAAkB,OAAIxB,EAAEiC,UAAW,IAA3C,GAAgDhC,EAAE,GAAIjB,EAAGpkC,KAAOA,EAAEwwC,GAAKpM,EAAGpkC,EAAE8nC,MAAQ1D,EAAIiB,EAAE,GAAID,EAAIC,EAAE,GAAIA,EAAIA,EAAE,IAAKjB,EAAI6N,GAAG7N,GAAKgB,EAAI,EAAI,MAAQhB,EAAI9iC,SAAS+jC,EAAG,MAAQD,EAAIhB,EAAI,MAAQ,KAAOgB,GAAIplC,EAAE8mC,GAAK+G,GAAG3N,MAAM,KAAMlgC,EAAEwwC,IAAKxwC,EAAE8mC,GAAGuF,cAAcrsC,EAAE8mC,GAAGuE,gBAAkBrrC,EAAE8nC,MAAOnC,EAAE3lC,GAAG2mC,SAAU,IAAO3mC,EAAEqnC,UAAW,EAAK,QAAS6K,IAAGlyC,EAAGokC,EAAGgB,GAAK,MAAO,OAAQplC,EAAIA,EAAI,MAAQokC,EAAIA,EAAIgB,EAAI,QAAS+M,IAAGnyC,GAAK,GAAIokC,GAAGgB,EAAGC,EAAG3kC,EAAG+mC,EAAGxI,EAAGuD,EAAG+L,EAAG/I,EAAGxG,EAAGgL,EAAG7K,IAAQ,KAAKn/B,EAAE8mC,GAAI,CAAE,IAAKzB,EAAIrlC,EAAGU,EAAI,GAAI44B,MAAKoL,EAAE0N,OAAQhN,EAAIC,EAAEgN,SAAW3xC,EAAEqrC,iBAAkBrrC,EAAEmrC,cAAenrC,EAAE+qC,eAAiB/qC,EAAEsrC,cAAetrC,EAAEorC,WAAYprC,EAAEgrC,WAAY1rC,EAAE6S,IAAM,MAAQ7S,EAAEwwC,GAAGE,IAAM,MAAQ1wC,EAAEwwC,GAAGC,KAAO,OAAS/vC,GAAK2kC,EAAIrlC,GAAG6S,IAAIy/B,IAAM,MAAQ5xC,EAAEivC,GAAK,MAAQjvC,EAAE4kC,GAAKiJ,EAAI,EAAG/I,EAAI,EAAGiC,EAAIyK,GAAGxxC,EAAE4xC,GAAIjN,EAAEmL,GAAGG,GAAIzC,GAAGqE,IAAK,EAAG,GAAGtF,MAAOhO,EAAIiT,GAAGxxC,EAAEivC,EAAG,KAAMnN,EAAI0P,GAAGxxC,EAAE4kC,EAAG,IAAM,GAAK,EAAI9C,KAAOxD,GAAI,KAAQuP,EAAIlJ,EAAE4C,QAAQuK,MAAMC,IAAKjN,EAAIH,EAAE4C,QAAQuK,MAAME,IAAK1I,EAAIkE,GAAGqE,IAAKhE,EAAG/I,GAAIiC,EAAIyK,GAAGxxC,EAAEiyC,GAAItN,EAAEmL,GAAGG,GAAI3G,EAAEiD,MAAOhO,EAAIiT,GAAGxxC,EAAEukC,EAAG+E,EAAEoE,MAAO,MAAQ1tC,EAAEs+B,IAAMwD,EAAI9hC,EAAEs+B,GAAK,GAAK,EAAIwD,KAAOxD,GAAI,GAAM,MAAQt+B,EAAEV,GAAKwiC,EAAI9hC,EAAEV,EAAIuuC,GAAI7tC,EAAEV,EAAI,GAAK,EAAIU,EAAEV,KAAOg/B,GAAI,IAAOwD,EAAI+L,GAAItP,EAAI,GAAKA,EAAIkP,EAAE1G,EAAG8G,EAAG/I,GAAKG,EAAEN,GAAG2L,gBAAiB,EAAK,MAAQhS,EAAI2G,EAAEN,GAAG6L,kBAAmB,GAAMlH,EAAIgE,GAAGvG,EAAGxI,EAAGuD,EAAG+L,EAAG/I,GAAIH,EAAEmL,GAAGG,GAAK3G,EAAEiD,KAAM5H,EAAEuN,WAAa5I,EAAEiE,YAAa,MAAQjuC,EAAE4yC,aAAelyC,EAAIwxC,GAAGlyC,EAAEwwC,GAAGG,GAAIvL,EAAEuL,KAAM3wC,EAAE4yC,WAAa/H,GAAGnqC,IAAM,IAAMV,EAAE4yC,cAAgBjN,EAAE3lC,GAAG+wC,oBAAqB,GAAK/R,EAAI6O,GAAGntC,EAAG,EAAGV,EAAE4yC,YAAa5yC,EAAEwwC,GAAGC,GAAKzR,EAAE6M,cAAe7rC,EAAEwwC,GAAGE,GAAK1R,EAAEyM,cAAerH,EAAI,EAAGA,EAAI,GAAK,MAAQpkC,EAAEwwC,GAAGpM,KAAMA,EAAEpkC,EAAEwwC,GAAGpM,GAAKjF,EAAEiF,GAAKgB,EAAEhB,EAAI,MAAOA,EAAI,EAAGA,IAAIpkC,EAAEwwC,GAAGpM,GAAKjF,EAAEiF,GAAK,MAAQpkC,EAAEwwC,GAAGpM,GAAK,IAAMA,EAAI,EAAI,EAAIpkC,EAAEwwC,GAAGpM,EAAI,MAAOpkC,EAAEwwC,GAAGI,IAAM,IAAM5wC,EAAEwwC,GAAGpR,IAAM,IAAMp/B,EAAEwwC,GAAGK,IAAM,IAAM7wC,EAAEwwC,GAAGM,MAAQ9wC,EAAE6yC,UAAW,EAAI7yC,EAAEwwC,GAAGI,GAAK,GAAI5wC,EAAE8mC,IAAM9mC,EAAEqyC,QAAUxE,GAAKD,IAAI1N,MAAM,KAAMf,GAAIsI,EAAIznC,EAAEqyC,QAAUryC,EAAE8mC,GAAG6E,YAAc3rC,EAAE8mC,GAAG8E,SAAU,MAAQ5rC,EAAE8nC,MAAQ9nC,EAAE8mC,GAAGuF,cAAcrsC,EAAE8mC,GAAGuE,gBAAkBrrC,EAAE8nC,MAAO9nC,EAAE6yC,WAAa7yC,EAAEwwC,GAAGI,GAAK,IAAK5wC,EAAE6S,IAAM,SAAW7S,EAAE6S,GAAGmsB,GAAKh/B,EAAE6S,GAAGmsB,IAAMyI,IAAM9B,EAAE3lC,GAAG4mC,iBAAkB,IAAQ,QAAS+K,IAAG3xC,GAAK,GAAIA,EAAE4nC,KAAOlD,EAAEoO,SAAU1B,GAAGpxC,OAAS,IAAIA,EAAE4nC,KAAOlD,EAAEqO,SAAUjB,GAAG9xC,OAAS,CAAEA,EAAEwwC,MAAS7K,EAAE3lC,GAAG6lC,OAAQ,CAAI,KAAK,GAAIzB,GAAGgB,EAAGC,EAAG3kC,EAAG+mC,EAAGxI,EAAI,GAAKj/B,EAAEuV,GAAIitB,EAAIvD,EAAEj+B,OAAQutC,EAAI,EAAG/I,EAAI+D,GAAGvpC,EAAE4nC,GAAI5nC,EAAEioC,SAASnvB,MAAM2wB,QAAWzK,EAAIwG,EAAExkC,OAAQgpC,EAAI,EAAGA,EAAIhL,EAAGgL,IAAI5E,EAAII,EAAEwE,IAAK5F,GAAKnF,EAAEnmB,MAAMoxB,GAAG9E,EAAGplC,SAAW,MAAQ,GAAKqlC,EAAIpG,EAAEiK,OAAO,EAAGjK,EAAE58B,QAAQ+hC,KAAKpjC,QAAU2kC,EAAE3lC,GAAG+lC,YAAYlxB,KAAKwwB,GAAIpG,EAAIA,EAAE/9B,MAAM+9B,EAAE58B,QAAQ+hC,GAAKA,EAAEpjC,QAASutC,GAAKnK,EAAEpjC,QAASmoC,GAAG/D,IAAMhB,EAAIuB,EAAE3lC,GAAG6lC,OAAQ,EAAKF,EAAE3lC,GAAG8lC,aAAajxB,KAAKuwB,GAAIC,EAAID,EAAGqC,EAAIznC,EAAG,OAASU,EAAI0jC,IAAMjF,EAAEuL,GAAIrF,IAAMqF,GAAGrF,GAAG3kC,EAAG+mC,EAAE+I,GAAI/I,EAAGpC,IAAMrlC,EAAEknC,UAAY9C,GAAKuB,EAAE3lC,GAAG8lC,aAAajxB,KAAKuwB,EAAIO,GAAE3lC,GAAGimC,cAAgBzD,EAAI+L,EAAG,EAAItP,EAAEj+B,QAAU2kC,EAAE3lC,GAAG+lC,YAAYlxB,KAAKoqB,GAAIj/B,EAAEwwC,GAAGI,IAAM,KAAM,IAAOjL,EAAE3lC,GAAGmnC,SAAW,EAAInnC,EAAEwwC,GAAGI,KAAOjL,EAAE3lC,GAAGmnC,QAAU,QAASxB,EAAE3lC,GAAGwmC,gBAAkBxmC,EAAEwwC,GAAGtvC,MAAM,GAAIykC,EAAE3lC,GAAG0mC,SAAW1mC,EAAEgzC,UAAWhzC,EAAEwwC,GAAGI,GAAK,SAAU5wC,EAAGokC,EAAGgB,GAAK,MAAI,OAAQA,EAAUhB,EAAU,MAAQpkC,EAAEizC,aAAejzC,EAAEizC,aAAa7O,EAAGgB,GAAK,MAAQplC,EAAEkzC,OAASlzC,EAAIA,EAAEkzC,KAAK9N,KAAOhB,EAAI,KAAOA,GAAK,IAAKA,EAAIpkC,GAAK,KAAOokC,EAAIA,EAAI,GAAKA,GAAIpkC,EAAEioC,QAASjoC,EAAEwwC,GAAGI,GAAI5wC,EAAEgzC,WAAY,QAAUxQ,EAAImD,EAAE3lC,GAAGymC,OAASzmC,EAAEwwC,GAAGG,GAAK3wC,EAAEioC,QAAQkL,gBAAgB3Q,EAAGxiC,EAAEwwC,GAAGG,KAAMwB,GAAGnyC,GAAIuwC,GAAGvwC,IAAO,QAASozC,IAAGpzC,GAAK,GAAIokC,GAAGgB,EAAGC,EAAG3kC,EAAIV,EAAEuV,GAAIkyB,EAAIznC,EAAE4nC,EAAI,IAAI5nC,EAAEioC,QAAUjoC,EAAEioC,SAAW8H,EAAE/vC,EAAE6nC,IAAK,OAASnnC,GAAK,SAAW+mC,GAAK,KAAO/mC,EAAG,MAAO4mC,IAAIpB,WAAW,GAAO,IAAI,gBAAmBxlC,KAAMV,EAAEuV,GAAK7U,EAAIV,EAAEioC,QAAQoL,SAAS3yC,IAAK+Y,EAAE/Y,GAAI,MAAO,IAAI+B,GAAE8tC,GAAG7vC,GAAK,IAAIwkC,EAAExkC,GAAIV,EAAE8mC,GAAKpmC,MAAQ,IAAIkkC,EAAE6C,GAAI,CAAE,GAAIxI,GAAGuD,EAAG+L,EAAG/I,EAAGxG,EAAGgL,EAAG7K,EAAIn/B,EAAGmqC,GAAI,EAAIC,EAAIjL,EAAEyI,GAAG5mC,MAAQ,IAAI,IAAMopC,EAAGzE,EAAExG,GAAGkH,eAAgB,EAAIlH,EAAE2H,GAAK,GAAIxN,MAAKiO,SAAW,CAAE,IAAK/B,EAAI,EAAGA,EAAI4E,EAAG5E,IAAIxG,EAAI,EAAGgL,GAAI,EAAI/K,EAAIuI,KAAMrI,GAAI,MAAQA,EAAEkT,UAAYpT,EAAEoT,QAAUlT,EAAEkT,SAAUpT,EAAE2I,GAAKzI,EAAEyI,GAAGpC,GAAImM,GAAG1S,GAAI4H,EAAE5H,KAAO+K,GAAI,GAAKhL,GAAKA,GAAK2G,EAAE1G,GAAGgH,eAAiB,GAAKN,EAAE1G,GAAG6G,aAAa9kC,OAAQ2kC,EAAE1G,GAAGqU,MAAQtU,EAAGmL,EAAInL,EAAIuP,IAAMA,EAAIvP,EAAGwD,EAAIvD,IAAM,MAAQsP,GAAKvP,EAAIuP,GAAKvE,KAAOuE,EAAIvP,EAAGwD,EAAIvD,EAAG+K,KAAOG,GAAI,EAAK7E,GAAEnG,EAAGqD,GAAKvD,QAAgBwI,GAAGkK,GAAG3xC,GAAaglC,EAAEyC,GAAK/mC,EAAIV,GAAGuV,IAAK7U,EAAEomC,GAAK,GAAIxN,MAAKoL,EAAE0N,OAAalN,EAAEuC,GAAK/mC,EAAEomC,GAAK,GAAIxN,MAAKmO,EAAElC,WAAa,gBAAmBkC,IAAKrC,EAAI1kC,EAAG,QAAU0jC,EAAImP,GAAGjC,KAAKlM,EAAE7vB,KAAO6vB,EAAE0B,GAAK,GAAIxN,QAAM8K,EAAE,MAAOgN,GAAGhM,IAAI,IAAOA,EAAEiC,iBAAoBjC,GAAEiC,SAAUyK,GAAG1M,IAAI,IAAOA,EAAEiC,kBAAqBjC,GAAEiC,SAAUjC,EAAE8B,QAAU9B,EAAEiC,UAAW,EAAK3C,EAAE8O,wBAAwBpO,MAAQR,EAAE6C,IAAM/mC,EAAE8vC,GAAKrL,EAAEsC,EAAEvmC,MAAM,GAAI,SAAUlB,GAAK,MAAOsB,UAAStB,EAAG,MAAQmyC,GAAGzxC,IAAMmkC,EAAE4C,IAAMrD,EAAI1jC,GAAGomC,KAAOzB,EAAI,UAAYD,EAAI2E,GAAG3F,EAAE7uB,KAAKi5B,IAAMpJ,EAAE/L,KAAO+L,EAAEoJ,IAAKpK,EAAEoM,GAAKrL,GAAGC,EAAE6H,KAAM7H,EAAEuH,MAAOtH,EAAGD,EAAEqO,KAAMrO,EAAEsO,OAAQtO,EAAEuO,OAAQvO,EAAEwO,aAAc,SAAU5zC,GAAK,MAAOA,IAAKsB,SAAStB,EAAG,MAAQmyC,GAAG/N,IAAMa,EAAEwC,GAAK/mC,EAAEomC,GAAK,GAAIxN,MAAKmO,GAAK/C,EAAE8O,wBAAwB9yC,EAAI,OAAOmmC,GAAE7mC,KAAOA,EAAE8mC,GAAK,MAAO9mC,EAAI,QAASylC,IAAGzlC,EAAGokC,EAAGgB,EAAGC,EAAG3kC,GAAK,GAAI+mC,KAAQ,QAAO,IAAOrD,IAAK,IAAOA,IAAMiB,EAAIjB,EAAGA,EAAI,SAAS,IAAOgB,IAAK,IAAOA,IAAMC,EAAID,EAAGA,EAAI,SAAUP,EAAE7kC,IAAM8kC,EAAE9kC,IAAM4kC,EAAE5kC,IAAM,IAAMA,EAAEgB,UAAYhB,EAAI,QAASynC,EAAEE,kBAAmB,EAAIF,EAAE4K,QAAU5K,EAAEM,OAASrnC,EAAG+mC,EAAEI,GAAKzC,EAAGqC,EAAElyB,GAAKvV,EAAGynC,EAAEG,GAAKxD,EAAGqD,EAAEP,QAAU7B,GAAI3kC,EAAI,GAAI+B,GAAE8tC,GAAG6C,GAAG1yC,EAAI+mC,MAAMoL,WAAanyC,EAAE8G,IAAI,EAAG,KAAM9G,EAAEmyC,SAAW,QAASnyC,EAAI,QAAS6xC,GAAEvyC,EAAGokC,EAAGgB,EAAGC,GAAK,MAAOI,IAAGzlC,EAAGokC,EAAGgB,EAAGC,GAAG,GAA04B,QAASwO,IAAG7zC,EAAGokC,GAAK,GAAIgB,GAAGC,CAAG,MAAMjB,EAAI,IAAMA,EAAEpjC,QAAU4jC,EAAER,EAAE,IAAMA,EAAE,GAAKA,GAAGpjC,OAAQ,MAAOuxC,IAAK,KAAKnN,EAAIhB,EAAE,GAAIiB,EAAI,EAAGA,EAAIjB,EAAEpjC,SAAUqkC,EAAEjB,EAAEiB,GAAG6C,YAAc9D,EAAEiB,GAAGrlC,GAAGolC,KAAOA,EAAIhB,EAAEiB,GAAK,OAAOD,GAAqG,QAAS0O,IAAG9zC,GAAK,GAAIA,GAAI+pC,GAAG/pC,GAAIokC,EAAIpkC,EAAEitC,MAAQ,EAAG7H,EAAIplC,EAAE+zC,SAAW,EAAG1O,EAAIrlC,EAAE2sC,OAAS,EAAGjsC,EAAIV,EAAEouC,MAAQpuC,EAAEg0C,SAAW,EAAGvM,EAAIznC,EAAEwuC,KAAO,EAAGvP,EAAIj/B,EAAEyzC,MAAQ,EAAGjR,EAAIxiC,EAAE0zC,QAAU,EAAGnF,EAAIvuC,EAAE2zC,QAAU,EAAGnO,EAAIxlC,EAAE4zC,aAAe,CAAGrrC,MAAK8+B,SAAW,SAAUrnC,GAAK,GAAIokC,GAAGgB,EAAGC,GAAI,EAAI3kC,EAAIuzC,GAAGjzC,MAAQ,KAAKojC,IAAKpkC,GAAG,GAAIm/B,EAAEn/B,EAAGokC,UAAclC,EAAEje,KAAKgwB,GAAI7P,IAAM,MAAQpkC,EAAEokC,IAAM2C,MAAM/mC,EAAEokC,KAAM,OAAO,CAAI,KAAKgB,EAAI,EAAGA,EAAI1kC,IAAK0kC,EAAE,GAAIplC,EAAEi0C,GAAG7O,IAAK,CAAE,GAAIC,EAAG,OAAO,CAAI5hC,YAAWzD,EAAEi0C,GAAG7O,OAASmF,EAAEvqC,EAAEi0C,GAAG7O,OAASC,GAAI,GAAM,OAAO,GAAKrlC,GAAIuI,KAAK2rC,eAAiB1O,EAAI,IAAM+I,EAAI,IAAM/L,EAAI,IAAMvD,EAAI,GAAK,GAAI12B,KAAK4rC,OAAS1M,EAAI,EAAI/mC,EAAG6H,KAAK6rC,SAAW/O,EAAI,EAAID,EAAI,GAAKhB,EAAG77B,KAAKgK,SAAYhK,KAAK0/B,QAAU8H,IAAKxnC,KAAK8rC,UAAY,QAASC,IAAGt0C,GAAK,MAAOA,aAAa8zC,IAAK,QAASS,IAAGv0C,GAAK,MAAOA,GAAI,KAAS0d,KAAK82B,SAAWx0C,GAAK0d,KAAK82B,MAAMx0C,GAAK,QAASy0C,IAAGz0C,EAAGolC,GAAKC,EAAErlC,EAAG,EAAG,EAAG,WAAc,GAAIA,GAAIuI,KAAKmsC,YAAatQ,EAAI,GAAK,OAAOpkC,GAAI,IAAMA,GAAKA,EAAGokC,EAAI,KAAMA,EAAIqD,KAAKznC,EAAI,IAAK,GAAKolC,EAAIqC,IAAIznC,EAAI,GAAI,KAAoK,QAAS20C,IAAG30C,EAAGokC,GAAK,GAAIA,IAAKA,GAAK,IAAItrB,MAAM9Y,EAAI,OAAO,QAASokC,EAAI,KAAO,KAAOA,EAAI,IAAMpkC,IAAMokC,EAAEA,EAAEpjC,OAAS,QAAY,IAAI8X,MAAM87B,MAAQ,IAAK,EAAG,IAAI,GAAKrK,EAAEvqC,EAAE,KAAO,EAAI,MAAQA,EAAE,GAAKokC,GAAKA,EAAI,QAASyQ,IAAG70C,EAAGokC,GAAK,GAAIgB,EAAG,OAAOhB,GAAE2D,QAAU3D,EAAIA,EAAE0Q,QAAS1P,GAAK3rB,EAAEzZ,IAAMklC,EAAEllC,GAAKA,EAAIuyC,EAAEvyC,IAAIulC,UAAYnB,EAAEmB,UAAWnB,EAAE0C,GAAGiO,QAAQ3Q,EAAE0C,GAAGvB,UAAYH,GAAIV,EAAE0D,aAAahE,GAAG,GAAKA,GAAKmO,EAAEvyC,GAAGg1C,QAAU,QAASC,IAAGj1C,GAAK,OAAQ0d,KAAK82B,MAAMx0C,EAAE8mC,GAAGoO,qBAAuB,QAASC,MAAO,QAAS5sC,KAAK2/B,WAAa3/B,KAAKw/B,QAAU,IAAMx/B,KAAKy/B,QAA0R,QAASoN,GAAEp1C,EAAGokC,GAAK,GAAIgB,GAAGC,EAAIrlC,CAAG,OAAOs0C,IAAGt0C,GAAKqlC,GAAMgQ,GAAIr1C,EAAEk0C,cAAelV,EAAGh/B,EAAEm0C,MAAO5J,EAAGvqC,EAAEo0C,SAAYnP,EAAEjlC,KAAO+mC,OAAO/mC,IAAMqlC,KAAQjB,EAAIiB,EAAEjB,IAAMpkC,EAAIqlC,EAAEiQ,cAAgBt1C,IAAMokC,EAAImR,GAAGjE,KAAKtxC,KAAOolC,EAAI,MAAQhB,EAAE,MAAU,EAAGiB,GAAMT,EAAG,EAAG5F,EAAGuL,EAAEnG,EAAEsM,IAAMtL,EAAG4E,EAAGO,EAAEnG,EAAEwM,IAAMxL,EAAGgF,EAAGG,EAAEnG,EAAEhF,IAAMgG,EAAGC,EAAGkF,EAAEnG,EAAEyM,IAAMzL,EAAGiQ,GAAI9K,EAAEgK,GAAG,IAAMnQ,EAAE0M,MAAQ1L,KAAQhB,EAAIoR,GAAGlE,KAAKtxC,KAAOolC,EAAI,MAAQhB,EAAE,MAAU,EAAGiB,GAAMT,EAAG6Q,GAAGrR,EAAE,GAAIgB,GAAImF,EAAGkL,GAAGrR,EAAE,GAAIgB,GAAIH,EAAGwQ,GAAGrR,EAAE,GAAIgB,GAAIpG,EAAGyW,GAAGrR,EAAE,GAAIgB,GAAI4E,EAAGyL,GAAGrR,EAAE,GAAIgB,GAAIgF,EAAGqL,GAAGrR,EAAE,GAAIgB,GAAIC,EAAGoQ,GAAGrR,EAAE,GAAIgB,KAAQ,MAAQC,EAAIA,KAAS,gBAAmBA,KAAM,QAAUA,IAAK,MAAQA,MAAOjB,EAAI,SAAUpkC,EAAGokC,GAAK,GAAIgB,EAAG,OAAKplC,GAAEkoC,WAAc9D,EAAE8D,WAAkD9D,EAAIyQ,GAAGzQ,EAAGpkC,GAAIA,EAAE01C,SAAStR,GAAKgB,EAAIuQ,GAAG31C,EAAGokC,KAAOgB,EAAIuQ,GAAGvR,EAAGpkC,IAAIs1C,cAAgBlQ,EAAEkQ,aAAclQ,EAAEmI,QAAUnI,EAAEmI,QAAgBnI,IAAzJkQ,aAAc,EAAG/H,OAAQ,IAAoIgF,EAAElN,EAAEuQ,MAAOrD,EAAElN,EAAEwQ,MAAOxQ,MAAQgQ,GAAKjR,EAAEkR,aAAcjQ,EAAEkF,EAAInG,EAAEmJ,QAASnI,EAAI,GAAI0O,IAAGzO,GAAIiP,GAAGt0C,IAAMm/B,EAAEn/B,EAAG,aAAeolC,EAAE6C,QAAUjoC,EAAEioC,SAAUqM,GAAGt0C,IAAMm/B,EAAEn/B,EAAG,cAAgBolC,EAAEiC,SAAWrnC,EAAEqnC,UAAWjC,EAAI,QAASqQ,IAAGz1C,EAAGokC,GAA+C,MAA1CpkC,GAAIA,GAAKyD,WAAWzD,EAAE6B,QAAQ,IAAK,OAAeklC,MAAM/mC,GAAK,EAAIA,GAAKokC,EAAI,QAASuR,IAAG31C,EAAGokC,GAAK,GAAIgB,KAAQ,OAAOA,GAAEmI,OAASnJ,EAAEuI,QAAU3sC,EAAE2sC,QAAU,IAAMvI,EAAE6I,OAASjtC,EAAEitC,QAASjtC,EAAE80C,QAAQttC,IAAI49B,EAAEmI,OAAQ,KAAKuI,QAAQ1R,MAAQgB,EAAEmI,OAAQnI,EAAEkQ,cAAgBlR,GAAKpkC,EAAE80C,QAAQttC,IAAI49B,EAAEmI,OAAQ,KAAMnI,EAAI,QAAS2Q,IAAG1Q,EAAG3kC,GAAK,MAAO,UAAUV,EAAGokC,GAAK,GAAIgB,EAAG,OAAO,QAAShB,GAAK2C,OAAO3C,KAAOwE,EAAEloC,EAAG,YAAcA,EAAI,uDAAyDA,EAAI,kGAAmG0kC,EAAIplC,EAAGA,EAAIokC,EAAGA,EAAIgB,GAAI4Q,GAAGztC,KAAM6sC,EAAEp1C,EAAGokC,GAAIiB,GAAI98B,MAAS,QAASytC,IAAGh2C,EAAGokC,EAAGgB,EAAGC,GAAK,GAAI3kC,GAAI0jC,EAAE8P,cAAezM,EAAI8M,GAAGnQ,EAAE+P,OAAQ/P,EAAImQ,GAAGnQ,EAAEgQ,QAAUp0C,GAAEkoC,YAAc7C,EAAI,MAAQA,GAAKA,EAAGjB,GAAK2I,GAAG/sC,EAAGgrC,GAAGhrC,EAAG,SAAWokC,EAAIgB,GAAIqC,GAAKsD,GAAG/qC,EAAG,OAAQgrC,GAAGhrC,EAAG,QAAUynC,EAAIrC,GAAI1kC,GAAKV,EAAE8mC,GAAGiO,QAAQ/0C,EAAE8mC,GAAGvB,UAAY7kC,EAAI0kC,GAAIC,IAAMX,EAAE0D,aAAapoC,EAAGynC,GAAKrD,GAAiH,QAAS6R,IAAGj2C,GAAK,MAAO,gBAAmBA,IAAKA,YAAaO,QAAS,QAAS21C,IAAGl2C,GAAK,MAAOyZ,GAAEzZ,IAAMklC,EAAEllC,IAAMi2C,GAAGj2C,IAAMilC,EAAEjlC,IAAM,SAAUokC,GAAK,GAAIpkC,GAAI4kC,EAAER,GAAIgB,GAAI,CAA8E,OAA1EplC,KAAMolC,EAAI,IAAMhB,EAAE/rB,OAAO,SAAUrY,GAAK,OAAQilC,EAAEjlC,IAAMi2C,GAAG7R,KAAMpjC,QAAgBhB,GAAKolC,GAAIplC,IAAM,SAAUA,GAAK,GAAIokC,GAAGgB,EAAGC,EAAIR,EAAE7kC,KAAO8kC,EAAE9kC,GAAIU,GAAI,EAAI+mC,GAAK,QAAS,OAAQ,IAAK,SAAU,QAAS,IAAK,OAAQ,MAAO,IAAK,QAAS,OAAQ,IAAK,QAAS,OAAQ,IAAK,UAAW,SAAU,IAAK,UAAW,SAAU,IAAK,eAAgB,cAAe,MAAOxI,EAAIwI,EAAEzmC,MAAQ,KAAKojC,EAAI,EAAGA,EAAInF,EAAGmF,GAAK,EAAEgB,EAAIqC,EAAErD,GAAI1jC,EAAIA,GAAKy+B,EAAEn/B,EAAGolC,EAAI,OAAOC,IAAK3kC,GAAIV,IAAM,MAAQA,EAAI,QAASm2C,IAAGn2C,EAAGokC,GAAK,GAAIgB,GAAGC,CAAG,OAAOrlC,GAAEq5B,OAAS+K,EAAE/K,QAAU8c,GAAG/R,EAAGpkC,MAAQolC,EAAI,IAAMhB,EAAE6I,OAASjtC,EAAEitC,SAAW7I,EAAEuI,QAAU3sC,EAAE2sC,WAAavI,GAAKiB,EAAIrlC,EAAE80C,QAAQttC,IAAI49B,EAAG,WAAa,GAAKhB,EAAIiB,IAAMA,EAAIrlC,EAAE80C,QAAQttC,IAAI49B,EAAI,EAAG,YAAchB,EAAIiB,IAAMrlC,EAAE80C,QAAQttC,IAAI,EAAI49B,EAAG,UAAYC,MAAQ,EAAI,QAAS+Q,IAAGp2C,GAAK,MAAO,UAAWA,EAAIuI,KAAK0/B,QAAQ2H,OAAS,OAAS5vC,EAAI+vC,EAAE/vC,MAAQuI,KAAK0/B,QAAUjoC;AAAIuI,MAAuU,QAAS8tC,MAAO,MAAO9tC,MAAK0/B,QAAgC,QAASqO,IAAGt2C,EAAGokC,GAAK,OAAQpkC,EAAIokC,EAAIA,GAAKA,EAAI,QAASmS,IAAGv2C,EAAGokC,EAAGgB,GAAK,MAAOplC,GAAI,KAAO,GAAKA,EAAI,GAAIs5B,MAAKt5B,EAAI,IAAKokC,EAAGgB,GAAKoR,GAAK,GAAIld,MAAKt5B,EAAGokC,EAAGgB,GAAGG,UAAY,QAASkR,IAAGz2C,EAAGokC,EAAGgB,GAAK,MAAOplC,GAAI,KAAO,GAAKA,EAAIs5B,KAAKwU,IAAI9tC,EAAI,IAAKokC,EAAGgB,GAAKoR,GAAKld,KAAKwU,IAAI9tC,EAAGokC,EAAGgB,GAAK,QAASsR,IAAG12C,EAAGokC,GAAK,MAAOA,GAAEuS,cAAc32C,GAAK,QAAS42C,MAAO,IAAK,GAAI52C,GAAGokC,EAAGgB,EAAGC,KAAQ3kC,KAAQ+mC,KAAQxI,KAAQuD,EAAIj6B,KAAKsuC,OAAQtI,EAAI,EAAG/I,EAAIhD,EAAExhC,OAAQutC,EAAI/I,IAAK+I,EAAEvuC,EAAImqC,EAAE3H,EAAE+L,GAAGxO,MAAOqE,EAAI+F,EAAE3H,EAAE+L,GAAG2B,MAAO9K,EAAI+E,EAAE3H,EAAE+L,GAAGuI,QAASp2C,EAAEmU,KAAK7U,GAAIqlC,EAAExwB,KAAKuvB,GAAIqD,EAAE5yB,KAAKuwB,GAAInG,EAAEpqB,KAAK7U,GAAIi/B,EAAEpqB,KAAKuvB,GAAInF,EAAEpqB,KAAKuwB,EAAI78B,MAAKwuC,WAAa,GAAIxwC,QAAO,KAAO04B,EAAE/lB,KAAK,KAAO,IAAK,KAAM3Q,KAAKyuC,eAAiB,GAAIzwC,QAAO,KAAO7F,EAAEwY,KAAK,KAAO,IAAK,KAAM3Q,KAAK0uC,eAAiB,GAAI1wC,QAAO,KAAO8+B,EAAEnsB,KAAK,KAAO,IAAK,KAAM3Q,KAAK2uC,iBAAmB,GAAI3wC,QAAO,KAAOkhC,EAAEvuB,KAAK,KAAO,IAAK,KAAO,QAAS0pB,IAAG5iC,EAAGokC,GAAKiB,EAAE,GAAIrlC,EAAGA,EAAEgB,QAAS,EAAGojC,GAAK,QAAS+S,IAAGn3C,EAAGokC,EAAGgB,EAAGC,EAAG3kC,GAAK,GAAI+mC,EAAG,OAAO,OAAQznC,EAAIkuC,GAAG3lC,KAAM88B,EAAG3kC,GAAGusC,MAAQxF,EAAI0G,EAAEnuC,EAAGqlC,EAAG3kC,GAAI,SAAUV,EAAGokC,EAAGgB,EAAGC,EAAG3kC,GAA4D,MAAvDV,GAAIguC,GAAGhuC,EAAGokC,EAAGgB,EAAGC,EAAG3kC,GAAI0jC,EAAIyJ,GAAG7tC,EAAEitC,KAAM,EAAGjtC,EAAEiuC,WAAmB1lC,KAAK0kC,KAAK7I,EAAE2H,kBAAmBxjC,KAAKokC,MAAMvI,EAAEyH,eAAgBtjC,KAAK8wB,KAAK+K,EAAEqH,cAAeljC,MAAO0b,KAAK1b,KAAMvI,EAAGokC,EAAIqD,EAAIrD,EAAIqD,EAAIrD,EAAGgB,EAAGC,EAAG3kC,IAAm4F,QAAS02C,IAAGp3C,EAAGokC,GAAKA,EAAE0M,IAAMvG,EAAE,KAAO,KAAOvqC,IAA6J,QAASq3C,IAAGr3C,GAAK,MAAOA,GAA0oa,QAASs3C,IAAGt3C,EAAGokC,EAAGgB,EAAGC,GAAK,GAAI3kC,GAAIqvC,IAAK1K,EAAIG,IAAIv6B,IAAIo6B,EAAGjB,EAAI,OAAO1jC,GAAE0kC,GAAGC,EAAGrlC,GAAK,QAASohC,IAAGphC,EAAGokC,EAAGgB,GAAK,GAAIH,EAAEjlC,KAAOokC,EAAIpkC,EAAGA,EAAI,QAASA,EAAIA,GAAK,GAAI,MAAQokC,EAAG,MAAOkT,IAAGt3C,EAAGokC,EAAGgB,EAAG,QAAU,KAAK,GAAIC,MAAQ3kC,EAAI,EAAGA,EAAI,GAAIA,IAAI2kC,EAAE3kC,GAAK42C,GAAGt3C,EAAGU,EAAG0kC,EAAG,QAAU,OAAOC,GAAI,QAASkS,IAAGv3C,EAAGokC,EAAGgB,EAAGC,GAAU,iBAAoBrlC,GAAIilC,EAAEb,KAAOgB,EAAIhB,EAAGA,EAAI,SAAWA,EAAIpkC,EAAGA,GAAI,EAAIilC,EAAEG,EAAIhB,KAAOgB,EAAIhB,EAAGA,EAAI,SAAnGA,EAA6GA,GAAK,EAAK,IAAI1jC,GAAG+mC,EAAIsI,IAAK9Q,EAAIj/B,EAAIynC,EAAE+K,MAAMC,IAAM,EAAGjQ,IAAQ,IAAI,MAAQ4C,EAAG,MAAOkS,IAAGlT,GAAIgB,EAAInG,GAAK,EAAGoG,EAAG,MAAQ,KAAK3kC,EAAI,EAAGA,EAAI,EAAGA,IAAI8hC,EAAE9hC,GAAK42C,GAAGlT,GAAI1jC,EAAIu+B,GAAK,EAAGoG,EAAG,MAAQ,OAAO7C,GAAkoT,QAASgV,IAAGx3C,EAAGokC,EAAGgB,EAAGC,GAAkB,MAAbjB,GAAIgR,EAAEhR,EAAGgB,GAAWplC,EAAEk0C,eAAiB7O,EAAIjB,EAAE8P,cAAel0C,EAAEm0C,OAAS9O,EAAIjB,EAAE+P,MAAOn0C,EAAEo0C,SAAW/O,EAAIjB,EAAEgQ,QAASp0C,EAAEq0C,UAAY,QAASoD,IAAGz3C,GAAK,MAAOA,GAAI,EAAI0d,KAAK4sB,MAAMtqC,GAAK0d,KAAK2sB,KAAKrqC,GAAK,QAAS03C,IAAG13C,GAAK,MAAO,MAAOA,EAAI,OAAS,QAAS23C,IAAG33C,GAAK,MAAO,QAASA,EAAI,KAAO,QAAS43C,IAAG53C,GAAK,MAAO,YAAc,MAAOuI,MAAKsvC,GAAG73C,IAA6I,QAAS83C,IAAG93C,GAAK,MAAO,YAAc,MAAOuI,MAAK2/B,UAAY3/B,KAAKgK,MAAMvS,GAAKunC,KAAsO,QAASwQ,IAAG/3C,EAAGokC,EAAGgB,EAAGC,GAAK,GAAI3kC,GAAI00C,EAAEp1C,GAAG68B,MAAO4K,EAAIuQ,GAAGt3C,EAAEm3C,GAAG,MAAO5Y,EAAI+Y,GAAGt3C,EAAEm3C,GAAG,MAAOrV,EAAIwV,GAAGt3C,EAAEm3C,GAAG,MAAOtJ,EAAIyJ,GAAGt3C,EAAEm3C,GAAG,MAAOrS,EAAIwS,GAAGt3C,EAAEm3C,GAAG,MAAO7Y,EAAIgZ,GAAGt3C,EAAEm3C,GAAG,MAAOn3C,EAAIs3C,GAAGt3C,EAAEm3C,GAAG,MAAOpQ,GAAKA,GAAKrC,EAAE6S,IAAM,IAAKxQ,GAAKA,EAAIrC,EAAEC,IAAM,KAAMoC,MAAQxI,GAAK,GAAK,KAAOA,EAAImG,EAAEgF,IAAM,KAAMnL,MAAQuD,GAAK,GAAK,KAAOA,EAAI4C,EAAE4E,IAAM,KAAMxH,MAAQ+L,GAAK,GAAK,KAAOA,EAAInJ,EAAEpG,IAAM,KAAMuP,GAAK,QAAQ9G,GAAKA,EAAI,MAAQrC,EAAEH,EAAIwC,IAAMzI,GAAK,GAAK,KAAOA,EAAIoG,EAAEH,IAAM,KAAMjG,IAAMyI,KAAOjC,GAAK,GAAK,KAAOA,EAAIJ,EAAEmF,IAAM,KAAM/E,MAAQ9kC,GAAK,GAAK,MAAQ,KAAMA,KAAK,GAAK0jC,EAAGqD,EAAE,GAAK,GAAKznC,EAAGynC,EAAE,GAAKpC,EAAG,SAAUrlC,EAAGokC,EAAGgB,EAAGC,EAAG3kC,GAAK,MAAOA,GAAEw3C,aAAa9T,GAAK,IAAKgB,EAAGplC,EAAGqlC,IAAKnF,MAAM,KAAMuH,GAAwB,QAAS0Q,IAAGn4C,GAAK,OAAQ,EAAIA,IAAMA,EAAI,KAAOA,EAAI,QAASo4C,MAAO,GAAIp4C,GAAGokC,EAAGgB,EAAGC,EAAG3kC,EAAG+mC,EAAGxI,EAAGuD,EAAG+L,EAAG/I,EAAGxG,CAAG,OAAOz2B,MAAK2/B,WAAaloC,EAAIq4C,GAAG9vC,KAAK2rC,eAAiB,IAAK9P,EAAIiU,GAAG9vC,KAAK4rC,OAAQ/O,EAAIiT,GAAG9vC,KAAK6rC,UAAW5R,EAAIj6B,KAAK+vC,cAAgBjT,EAAI+E,EAAEpqC,EAAI,IAAKU,EAAI0pC,EAAE/E,EAAI,IAAKrlC,GAAK,GAAIqlC,GAAK,GAAIoC,EAAI2C,EAAEhF,EAAI,IAAKA,GAAK,GAAInG,EAAIj/B,EAAIA,EAAEu4C,QAAQ,GAAG12C,QAAQ,SAAU,IAAM,GAAI0sC,EAAI4J,GAAG5vC,KAAK6rC,WAAa+D,GAAG3V,GAAK,IAAM,GAAIgD,EAAI2S,GAAG5vC,KAAK4rC,SAAWgE,GAAG3V,GAAK,IAAM,GAAIxD,EAAImZ,GAAG5vC,KAAK2rC,iBAAmBiE,GAAG3V,GAAK,IAAM,IAAKA,EAAI,EAAI,IAAM,IAAM,KAAOiF,EAAI8G,EAAI9G,EAAI,IAAM,KAAOrC,EAAImJ,EAAInJ,EAAI,IAAM,KAAOhB,EAAIoB,EAAIpB,EAAI,IAAM,KAAO1jC,GAAK2kC,GAAKrlC,EAAI,IAAM,KAAOU,EAAIs+B,EAAIt+B,EAAI,IAAM,KAAO2kC,EAAIrG,EAAIqG,EAAI,IAAM,KAAOrlC,EAAIg/B,EAAIC,EAAI,IAAM,KAAO,OAAS12B,KAAK6gC,aAAaM,cAAry+D,GAAI/E,GAA68D7oB,EAAII,MAAMmf,UAAUmd,MAAQ,SAAUx4C,GAAK,IAAK,GAAIokC,GAAIl8B,OAAOK,MAAO68B,EAAIhB,EAAEpjC,SAAW,EAAGqkC,EAAI,EAAGA,EAAID,EAAGC,IAAI,GAAIA,IAAKjB,IAAKpkC,EAAEikB,KAAK1b,KAAM67B,EAAEiB,GAAIA,EAAGjB,GAAI,OAAO,CAAI,QAAO,GAAMsD,EAAIhD,EAAE+T,oBAAuBtQ,GAAI,EAAs7CU,IAAyiBnE,GAAE4D,6BAA8B,EAAI5D,EAAE+D,mBAAqB,IAAM,IAAIiQ,IAAKxwC,OAAOC,MAAQ,SAAUnI,GAAK,GAAIokC,GAAGgB,IAAQ,KAAKhB,IAAKpkC,GAAGm/B,EAAEn/B,EAAGokC,IAAMgB,EAAEvwB,KAAKuvB,EAAI,OAAOgB,IAAmKqE,GAAK,yMAA0MG,GAAK,6CAA8CJ,MAASL,MAAu5BW,IAAO6G,EAAG,OAAQgI,MAAO,OAAQtf,KAAM,OAAQ2F,EAAG,MAAO4Z,KAAM,MAAOpK,IAAK,MAAOxuC,EAAG,UAAW2uC,SAAU,UAAWkK,QAAS,UAAWvT,EAAG,aAAcwT,YAAa,aAAcC,WAAY,aAAcC,IAAK,YAAaC,WAAY,YAAaC,UAAW,YAAalP,EAAG,OAAQmF,MAAO,OAAQsE,KAAM,OAAQ4B,GAAI,cAAeC,aAAc,cAAe1B,YAAa,cAAexJ,EAAG,SAAUiF,QAAS,SAAUqE,OAAQ,SAAUnJ,EAAG,QAASgD,OAAQ,QAASZ,MAAO,QAAS/D,EAAG,UAAWuQ,SAAU,UAAWpF,QAAS,UAAW1O,EAAG,SAAU+T,QAAS,SAAUzF,OAAQ,SAAUhB,GAAI,WAAY0G,UAAW,WAAYC,SAAU,WAAYhH,GAAI,cAAeiH,aAAc,cAAeC,YAAa,cAAevU,EAAG,OAAQwU,MAAO,OAAQrL,KAAM,OAAQuB,EAAG,UAAW+J,SAAU,UAAWC,QAAS,UAAW/U,EAAG,OAAQgV,MAAO,OAAQ3M,KAAM,QAAuM4M,IAAOxgB,KAAM,EAAGmV,IAAK,GAAIqK,QAAS,GAAIiB,WAAY,GAAI7L,UAAW,EAAGwF,KAAM,GAAIG,YAAa,GAAIF,OAAQ,GAAI/G,MAAO,EAAGoH,QAAS,EAAGJ,OAAQ,GAAIoG,SAAU,EAAGC,YAAa,EAAG5L,KAAM,EAAG4F,QAAS,EAAG/G,KAAM,GAASgN,GAAK,KAAM7V,EAAI,OAAQ8V,GAAK,QAASC,GAAK,QAASC,GAAK,aAAchV,EAAI,QAASiV,GAAK,YAAahjC,GAAK,gBAAiBijC,GAAK,UAAWC,GAAK,UAAWC,GAAK,eAAgBC,GAAK,MAAOC,GAAK,WAAYC,GAAK,qBAAsBC,GAAK,0BAA2Bl6C,EAAI,wJAAyJ6tC,EAAI,YAAavP,EAAI,gBAAihBiL,MAASS,MAAsViG,EAAI,EAAGF,EAAI,EAAGC,EAAI,EAAGE,EAAI,EAAGxR,EAAI,EAAGyR,EAAI,EAAGC,GAAK,EAAGG,GAAK,EAAGE,GAAK,CAA+C9L,GAAE,IAAK,EAAG,EAAG,WAAc,GAAIrlC,GAAIuI,KAAK0kC,MAAQ,OAAOjtC,IAAK,KAAOynC,EAAEznC,EAAG,GAAK,IAAMA,IAAMqlC,EAAE,GAAI,KAAM,GAAI,EAAG,WAAc,MAAO98B,MAAK0kC,OAAS,MAAQ5H,EAAE,GAAI,OAAQ,GAAI,EAAG,QAASA,EAAE,GAAI,QAAS,GAAI,EAAG,QAASA,EAAE,GAAI,SAAU,GAAG,GAAK,EAAG,QAAS2E,EAAE,IAAK0Q,IAAK1Q,EAAE,KAAM5E,EAAGhB,GAAI4F,EAAE,OAAQuQ,GAAIJ,IAAKnQ,EAAE,QAASwQ,GAAIJ,IAAKpQ,EAAE,SAAUwQ,GAAIJ,IAAK3P,GAAG,QAAS,UAAWkG,GAAIlG,EAAE,OAAQ,SAAUzqC,EAAGokC,GAAKA,EAAEuM,GAAK,IAAM3wC,EAAEgB,OAAS0jC,EAAEmW,kBAAkB76C,GAAKuqC,EAAEvqC,KAAOyqC,EAAE,KAAM,SAAUzqC,EAAGokC,GAAKA,EAAEuM,GAAKjM,EAAEmW,kBAAkB76C,KAAOyqC,EAAE,IAAK,SAAUzqC,EAAGokC,GAAKA,EAAEuM,GAAKrvC,SAAStB,EAAG,MAAQ0kC,EAAEmW,kBAAoB,SAAU76C,GAAK,MAAOuqC,GAAEvqC,IAAM,GAAKuqC,EAAEvqC,GAAK,KAAO,KAAQ,IAAIkiC,GAAG4Y,GAAKhQ,GAAG,YAAY,EAA49C5I,GAAIhmB,MAAMmf,UAAUh5B,SAAW,SAAUrC,GAAK,IAAK,GAAIokC,GAAI,EAAGA,EAAI77B,KAAKvH,SAAUojC,EAAE,GAAI77B,KAAK67B,KAAOpkC,EAAG,MAAOokC,EAAG,WAAaiB,EAAE,KAAM,KAAM,GAAI,KAAM,WAAc,MAAO98B,MAAKokC,QAAU,IAAMtH,EAAE,MAAO,EAAG,EAAG,SAAUrlC,GAAK,MAAOuI,MAAK6gC,aAAakE,YAAY/kC,KAAMvI,KAAOqlC,EAAE,OAAQ,EAAG,EAAG,SAAUrlC,GAAK,MAAOuI,MAAK6gC,aAAamE,OAAOhlC,KAAMvI,KAAOgqC,EAAE,IAAK5E,EAAGmJ,GAAIvE,EAAE,KAAM5E,EAAGhB,GAAI4F,EAAE,MAAO,SAAUhqC,EAAGokC,GAAK,MAAOA,GAAE2W,iBAAiB/6C,KAAOgqC,EAAE,OAAQ,SAAUhqC,EAAGokC,GAAK,MAAOA,GAAE4W,YAAYh7C,KAAOyqC,GAAG,IAAK,MAAO,SAAUzqC,EAAGokC,GAAKA,EAAEqM,GAAKlG,EAAEvqC,GAAK,IAAMyqC,GAAG,MAAO,QAAS,SAAUzqC,EAAGokC,EAAGgB,EAAGC,GAAKA,EAAID,EAAE6C,QAAQ+E,YAAYhtC,EAAGqlC,EAAGD,EAAE8B,SAAU,MAAQ7B,EAAIjB,EAAEqM,GAAKpL,EAAIM,EAAEP,GAAGgB,aAAepmC,GAAM,IAAIi7C,IAAK,wFAAwF/mC,MAAM,KAAM29B,GAAK,kDAAkD39B,MAAM,KAAMgnC,GAAK,gCAAiCC,GAAKz6C,EAAG06C,GAAK16C,CAA8+D2kC,GAAE,KAAM,KAAM,GAAI,KAAM,QAASA,EAAE,KAAM,KAAM,GAAI,KAAM,WAAY2E,EAAE,IAAK5E,EAAGmJ,GAAIvE,EAAE,KAAM5E,EAAGhB,GAAI4F,EAAE,IAAK5E,EAAGmJ,GAAIvE,EAAE,KAAM5E,EAAGhB,GAAIuG,IAAI,IAAK,KAAM,IAAK,MAAO,SAAU3qC,EAAGokC,EAAGgB,EAAGC,GAAKjB,EAAEiB,EAAE6D,OAAO,EAAG,IAAMqB,EAAEvqC,KAAwEqlC,EAAE,IAAK,EAAG,KAAM,OAAQA,EAAE,KAAM,EAAG,EAAG,SAAUrlC,GAAK,MAAOuI,MAAK6gC,aAAaqF,YAAYlmC,KAAMvI,KAAOqlC,EAAE,MAAO,EAAG,EAAG,SAAUrlC,GAAK,MAAOuI,MAAK6gC,aAAasF,cAAcnmC,KAAMvI,KAAOqlC,EAAE,OAAQ,EAAG,EAAG,SAAUrlC,GAAK,MAAOuI,MAAK6gC,aAAauF,SAASpmC,KAAMvI,KAAOqlC,EAAE,IAAK,EAAG,EAAG,WAAYA,EAAE,IAAK,EAAG,EAAG,cAAe2E,EAAE,IAAK5E,GAAI4E,EAAE,IAAK5E,GAAI4E,EAAE,IAAK5E,GAAI4E,EAAE,KAAM,SAAUhqC,EAAGokC,GAAK,MAAOA,GAAEiX,iBAAiBr7C,KAAOgqC,EAAE,MAAO,SAAUhqC,EAAGokC,GAAK,MAAOA,GAAEkX,mBAAmBt7C,KAAOgqC,EAAE,OAAQ,SAAUhqC,EAAGokC,GAAK,MAAOA,GAAEmX,cAAcv7C,KAAO2qC,IAAI,KAAM,MAAO,QAAS,SAAU3qC,EAAGokC,EAAGgB,EAAGC,GAAKA,EAAID,EAAE6C,QAAQuT,cAAcx7C,EAAGqlC,EAAGD,EAAE8B,SAAU,MAAQ7B,EAAIjB,EAAEpF,EAAIqG,EAAIM,EAAEP,GAAG6B,eAAiBjnC,IAAM2qC,IAAI,IAAK,IAAK,KAAM,SAAU3qC,EAAGokC,EAAGgB,EAAGC,GAAKjB,EAAEiB,GAAKkF,EAAEvqC,IAAO,IAAIy7C,IAAK,2DAA2DvnC,MAAM,KAAM89B,GAAK,8BAA8B99B,MAAM,KAAMwnC,GAAK,uBAAuBxnC,MAAM,KAAMynC,GAAKj7C,EAAGk7C,GAAKl7C,EAAGm7C,GAAKn7C,CAA67B2kC,GAAE,KAAM,KAAM,GAAI,EAAG,QAASA,EAAE,KAAM,KAAM,GAAI,EAAG6J,IAAK7J,EAAE,KAAM,KAAM,GAAI,EAAG,WAAc,MAAO98B,MAAK4mC,SAAW,KAAO9J,EAAE,MAAO,EAAG,EAAG,WAAc,MAAO,GAAK6J,GAAGhP,MAAM33B,MAAQk/B,EAAEl/B,KAAK8mC,UAAW,KAAOhK,EAAE,QAAS,EAAG,EAAG,WAAc,MAAO,GAAK6J,GAAGhP,MAAM33B,MAAQk/B,EAAEl/B,KAAK8mC,UAAW,GAAK5H,EAAEl/B,KAAK6wC,UAAW,KAAO/T,EAAE,MAAO,EAAG,EAAG,WAAc,MAAO,GAAK98B,KAAK4mC,QAAU1H,EAAEl/B,KAAK8mC,UAAW,KAAOhK,EAAE,QAAS,EAAG,EAAG,WAAc,MAAO,GAAK98B,KAAK4mC,QAAU1H,EAAEl/B,KAAK8mC,UAAW,GAAK5H,EAAEl/B,KAAK6wC,UAAW,KAAOhK,GAAG,KAAK,GAAKA,GAAG,KAAK,GAAKpF,EAAE,IAAKhuB,IAAKguB,EAAE,IAAKhuB,IAAKguB,EAAE,IAAK5E,EAAGpG,GAAIgL,EAAE,IAAK5E,EAAGmJ,GAAIvE,EAAE,IAAK5E,EAAGmJ,GAAIvE,EAAE,KAAM5E,EAAGhB,GAAI4F,EAAE,KAAM5E,EAAGhB,GAAI4F,EAAE,KAAM5E,EAAGhB,GAAI4F,EAAE,MAAOqQ,IAAKrQ,EAAE,QAAS3yB,IAAK2yB,EAAE,MAAOqQ,IAAKrQ,EAAE,QAAS3yB,IAAKozB,GAAG,IAAK,MAAOmG,GAAInG,GAAG,IAAK,MAAO,SAAUzqC,EAAGokC,EAAGgB,GAAKplC,EAAIuqC,EAAEvqC,GAAIokC,EAAEwM,GAAK,KAAO5wC,EAAI,EAAIA,IAAMyqC,GAAG,IAAK,KAAM,SAAUzqC,EAAGokC,EAAGgB,GAAKA,EAAE0W,MAAQ1W,EAAE6C,QAAQiL,KAAKlzC,GAAIolC,EAAE4N,UAAYhzC,IAAMyqC,GAAG,IAAK,MAAO,SAAUzqC,EAAGokC,EAAGgB,GAAKhB,EAAEwM,GAAKrG,EAAEvqC,GAAI2lC,EAAEP,GAAG+B,SAAU,IAAOsD,EAAE,MAAO,SAAUzqC,EAAGokC,EAAGgB,GAAK,GAAIC,GAAIrlC,EAAEgB,OAAS,CAAGojC,GAAEwM,GAAKrG,EAAEvqC,EAAEkpC,OAAO,EAAG7D,IAAKjB,EAAEhF,GAAKmL,EAAEvqC,EAAEkpC,OAAO7D,IAAKM,EAAEP,GAAG+B,SAAU,IAAOsD,EAAE,QAAS,SAAUzqC,EAAGokC,EAAGgB,GAAK,GAAIC,GAAIrlC,EAAEgB,OAAS,EAAGN,EAAIV,EAAEgB,OAAS,CAAGojC,GAAEwM,GAAKrG,EAAEvqC,EAAEkpC,OAAO,EAAG7D,IAAKjB,EAAEhF,GAAKmL,EAAEvqC,EAAEkpC,OAAO7D,EAAG,IAAKjB,EAAEyM,GAAKtG,EAAEvqC,EAAEkpC,OAAOxoC,IAAKilC,EAAEP,GAAG+B,SAAU,IAAOsD,EAAE,MAAO,SAAUzqC,EAAGokC,EAAGgB,GAAK,GAAIC,GAAIrlC,EAAEgB,OAAS,CAAGojC,GAAEwM,GAAKrG,EAAEvqC,EAAEkpC,OAAO,EAAG7D,IAAKjB,EAAEhF,GAAKmL,EAAEvqC,EAAEkpC,OAAO7D,MAAQoF,EAAE,QAAS,SAAUzqC,EAAGokC,EAAGgB,GAAK,GAAIC,GAAIrlC,EAAEgB,OAAS,EAAGN,EAAIV,EAAEgB,OAAS,CAAGojC,GAAEwM,GAAKrG,EAAEvqC,EAAEkpC,OAAO,EAAG7D,IAAKjB,EAAEhF,GAAKmL,EAAEvqC,EAAEkpC,OAAO7D,EAAG,IAAKjB,EAAEyM,GAAKtG,EAAEvqC,EAAEkpC,OAAOxoC,MAAQA,EAAIoqC,GAAG,SAAS,EAAK,IAAI4E,IAAIO,IAAO8L,UAAYC,QAAS,gBAAiBC,QAAS,mBAAoBC,SAAU,eAAgBC,QAAS,oBAAqBC,SAAU,sBAAuBC,SAAU,KAAO1S,gBAAkB2S,IAAK,YAAa9sB,GAAI,SAAUsV,EAAG,aAAcyX,GAAI,eAAgBC,IAAK,sBAAuBC,KAAM,6BAA+B/S,YAAa,eAAgBL,QAAS,KAAMqT,uBAAwB,UAAWxE,cAAgByE,OAAQ,QAASC,KAAM,SAAUvX,EAAG,gBAAiB4S,GAAI,aAAc7N,EAAG,WAAYyS,GAAI,aAAc7S,EAAG,UAAW8S,GAAI,WAAY9d,EAAG,QAAS+d,GAAI,UAAW9X,EAAG,SAAU+X,GAAI,WAAYzS,EAAG,UAAW0S,GAAI,YAAarY,EAAG,SAAUsY,GAAI,YAAc3P,OAAQ0N,GAAI3N,YAAauE,GAAIzD,MAAQqE,IAAK,EAAGC,IAAK,GAAK/D,SAAU8M,GAAIhN,YAAaiN,GAAIhN,cAAesD,GAAImL,cAAe,iBAAmBxN,KAAQU,MAAwyEgB,GAAK,iJAAkJE,GAAK,6IAA8IG,GAAK,wBAAyBF,KAAO,eAAgB,wBAAyB,aAAc,oBAAqB,eAAgB,mBAAoB,aAAc,eAAe,IAAM,WAAY,gBAAiB,UAAW,cAAc,IAAM,aAAc,eAAgB,WAAY,UAAW,aAAc,gBAAiB,YAAa,eAAe,IAAM,UAAW,UAAW,SAAU,SAAS,IAAM,OAAQ,SAAS,IAAMC,KAAO,gBAAiB,wBAAyB,gBAAiB,uBAAwB,WAAY,mBAAoB,QAAS,cAAe,cAAe,sBAAuB,cAAe,qBAAsB,SAAU,iBAAkB,OAAQ,aAAc,KAAM,SAAU8B,GAAK,qBAAsBxB,GAAK,0LAA2LE,IAAOmL,GAAI,EAAGC,IAAK,EAAGC,SAAWC,SAAWC,SAAWC,SAAWC,SAAWC,SAAWC,SAAWC,SAAmjMnZ,GAAE8O,wBAA0BxzC,EAAE,gSAAiS,SAAUA,GAAKA,EAAE8mC,GAAK,GAAIxN,MAAKt5B,EAAEuV,IAAMvV,EAAEqyC,QAAU,OAAS,OAAS3N,EAAEoO,SAAW,aAAiBpO,EAAEqO,SAAW,aAAiBsH,GAAKr6C,EAAE,qGAAsG,WAAc,GAAIA,GAAIuyC,EAAErS,MAAM,KAAMC,UAAY,OAAO53B,MAAK2/B,WAAaloC,EAAEkoC,UAAYloC,EAAIuI,KAAOA,KAAOvI,EAAIsnC,MAAQjwB,GAAKrX,EAAE,qGAAsG,WAAc,GAAIA,GAAIuyC,EAAErS,MAAM,KAAMC,UAAY,OAAO53B,MAAK2/B,WAAaloC,EAAEkoC,UAAY3/B,KAAOvI,EAAIuI,KAAOvI,EAAIsnC,KAA0M,IAAI2M,KAAM,OAAQ,UAAW,QAAS,OAAQ,MAAO,OAAQ,SAAU,SAAU,cAAw8BQ,IAAG,IAAK,KAAMA,GAAG,KAAM,IAAKzK,EAAE,IAAK4Q,IAAK5Q,EAAE,KAAM4Q,IAAKnQ,GAAG,IAAK,MAAO,SAAUzqC,EAAGokC,EAAGgB,GAAKA,EAAEiN,SAAU,EAAIjN,EAAE0C,KAAO6M,GAAGiG,GAAI56C,IAAO,IAAI40C,IAAK,iBAAwiBlQ,GAAE0D,aAAe,YAAiB,IAAImN,IAAK,wDAAyDC,GAAK,qKAA2hEJ,GAAEhU,GAAK0S,GAAGzY,UAAW+Z,EAAE0I,QAAU,WAAc,MAAO1I,GAAE7N,MAAQ0T,GAAKlF,GAAG,EAAG,OAAQ0F,GAAK1F,MAAO,YAAkgCrR,EAAEqZ,cAAgB,uBAAwBrZ,EAAEsZ,iBAAmB,yBAA0BtC,GAAK17C,EAAE,kJAAmJ,SAAUA,GAAK,MAAO,UAAWA,EAAIuI,KAAK6gC,aAAe7gC,KAAKgxB,OAAOv5B,IAA6C,IAAIw2C,IAAK,WAAgqCnR,GAAE,IAAK,EAAG,EAAG,WAAYA,EAAE,KAAM,EAAG,EAAG,WAAYA,EAAE,MAAO,EAAG,EAAG,WAAYA,EAAE,OAAQ,EAAG,EAAG,WAAYA,EAAE,QAAS,EAAG,EAAG,aAAcA,EAAE,KAAM,IAAK,GAAI,KAAM,WAAYA,EAAE,KAAM,KAAM,GAAI,EAAG,WAAYA,EAAE,KAAM,MAAO,GAAI,EAAG,WAAYA,EAAE,KAAM,OAAQ,GAAI,EAAG,WAAY2E,EAAE,IAAK0M,IAAK1M,EAAE,KAAM0M,IAAK1M,EAAE,MAAO0M,IAAK1M,EAAE,OAAQ,SAAUhqC,EAAGokC,GAAK,MAAOA,GAAE6Z,cAAcj+C,KAAOgqC,EAAE,QAAS,SAAUhqC,EAAGokC,GAAK,MAAOA,GAAE8Z,gBAAgBl+C,KAAOyqC,GAAG,IAAK,KAAM,MAAO,OAAQ,SAAU,SAAUzqC,EAAGokC,EAAGgB,EAAGC,GAAKA,EAAID,EAAE6C,QAAQkW,UAAUn+C,EAAGqlC,EAAGD,EAAE8B,SAAU7B,EAAIM,EAAEP,GAAGqB,IAAMpB,EAAIM,EAAEP,GAAGe,WAAanmC,IAAMgqC,EAAE,IAAKyQ,IAAKzQ,EAAE,KAAMyQ,IAAKzQ,EAAE,MAAOyQ,IAAKzQ,EAAE,OAAQyQ,IAAKzQ,EAAE,KAAM,SAAUhqC,EAAGokC,GAAK,MAAOA,GAAEga,sBAAwB3D,KAAOhQ,GAAG,IAAK,KAAM,MAAO,QAASkG,GAAIlG,GAAG,MAAO,SAAUzqC,EAAGokC,EAAGgB,EAAGC,GAAK,GAAI3kC,EAAG0kC,GAAE6C,QAAQmW,uBAAyB19C,EAAIV,EAAE8Y,MAAMssB,EAAE6C,QAAQmW,uBAAwBhZ,EAAE6C,QAAQoW,oBAAsBja,EAAEuM,GAAKvL,EAAE6C,QAAQoW,oBAAoBr+C,EAAGU,GAAK0jC,EAAEuM,GAAKrvC,SAAStB,EAAG,MAAQqlC,EAAE,GAAI,KAAM,GAAI,EAAG,WAAc,MAAO98B,MAAKwxC,WAAa,MAAQ1U,EAAE,GAAI,KAAM,GAAI,EAAG,WAAc,MAAO98B,MAAKyxC,cAAgB,MAAQpX,GAAG,OAAQ,YAAaA,GAAG,QAAS,YAAaA,GAAG,OAAQ,eAAgBA,GAAG,QAAS,eAAgBoH,EAAE,IAAK0Q,IAAK1Q,EAAE,IAAK0Q,IAAK1Q,EAAE,KAAM5E,EAAGhB,GAAI4F,EAAE,KAAM5E,EAAGhB,GAAI4F,EAAE,OAAQuQ,GAAIJ,IAAKnQ,EAAE,OAAQuQ,GAAIJ,IAAKnQ,EAAE,QAASwQ,GAAIJ,IAAKpQ,EAAE,QAASwQ,GAAIJ,IAAKzP,IAAI,OAAQ,QAAS,OAAQ,SAAU,SAAU3qC,EAAGokC,EAAGgB,EAAGC,GAAKjB,EAAEiB,EAAE6D,OAAO,EAAG,IAAMqB,EAAEvqC,KAAO2qC,IAAI,KAAM,MAAO,SAAU3qC,EAAGokC,EAAGgB,EAAGC,GAAKjB,EAAEiB,GAAKX,EAAEmW,kBAAkB76C,KAAOqlC,EAAE,IAAK,EAAG,KAAM,WAAY2E,EAAE,IAAKiQ,IAAKxP,EAAE,IAAK,SAAUzqC,EAAGokC,GAAKA,EAAEqM,GAAK,GAAKlG,EAAEvqC,GAAK,KAAOqlC,EAAE,KAAM,KAAM,GAAI,KAAM,QAAS2E,EAAE,IAAK5E,EAAGmJ,GAAIvE,EAAE,KAAM5E,EAAGhB,GAAI4F,EAAE,KAAM,SAAUhqC,EAAGokC,GAAK,MAAOpkC,GAAIokC,EAAEka,yBAA2Bla,EAAEma,cAAgBna,EAAEoa,iCAAmC/T,GAAG,IAAK,MAAOiG,GAAIjG,EAAE,KAAM,SAAUzqC,EAAGokC,GAAKA,EAAEsM,GAAKnG,EAAEvqC,EAAE8Y,MAAMssB,GAAG,MAAQmV,GAAKzP,GAAG,QAAQ,GAAKzF,EAAE,OAAQ,OAAQ,GAAI,OAAQ,aAAc2E,EAAE,MAAOsQ,IAAKtQ,EAAE,OAAQkQ,IAAKzP,GAAG,MAAO,QAAS,SAAUzqC,EAAGokC,EAAGgB,GAAKA,EAAEwN,WAAarI,EAAEvqC,KAAOqlC,EAAE,KAAM,KAAM,GAAI,EAAG,UAAW2E,EAAE,IAAK5E,EAAGpG,GAAIgL,EAAE,KAAM5E,EAAGhB,GAAIqG,GAAG,IAAK,MAAOrL,EAAI,IAAIqf,IAAItE,GAAKrP,GAAG,WAAW,GAAK0P,IAAMnV,EAAE,KAAM,KAAM,GAAI,EAAG,UAAW2E,EAAE,IAAK5E,EAAGpG,GAAIgL,EAAE,KAAM5E,EAAGhB,GAAIqG,GAAG,IAAK,MAAOoG,GAAI/F,GAAG,WAAW,GAAM,KAAKzF,EAAE,IAAK,EAAG,EAAG,WAAc,SAAU98B,KAAKqrC,cAAgB,OAASvO,EAAE,GAAI,KAAM,GAAI,EAAG,WAAc,SAAU98B,KAAKqrC,cAAgB,MAAQvO,EAAE,GAAI,MAAO,GAAI,EAAG,eAAgBA,EAAE,GAAI,OAAQ,GAAI,EAAG,WAAc,MAAO,IAAK98B,KAAKqrC,gBAAkBvO,EAAE,GAAI,QAAS,GAAI,EAAG,WAAc,MAAO,KAAM98B,KAAKqrC,gBAAkBvO,EAAE,GAAI,SAAU,GAAI,EAAG,WAAc,MAAO,KAAM98B,KAAKqrC,gBAAkBvO,EAAE,GAAI,UAAW,GAAI,EAAG,WAAc,MAAO,KAAM98B,KAAKqrC,gBAAkBvO,EAAE,GAAI,WAAY,GAAI,EAAG,WAAc,MAAO,KAAM98B,KAAKqrC,gBAAkBvO,EAAE,GAAI,YAAa,GAAI,EAAG,WAAc,MAAO,KAAM98B,KAAKqrC,gBAAkB5J,EAAE,IAAKsQ,GAAIL,IAAKjQ,EAAE,KAAMsQ,GAAIlW,GAAI4F,EAAE,MAAOsQ,GAAIJ,IAAKuE,GAAK,OAAQA,GAAGz9C,QAAU,EAAGy9C,IAAM,IAAIzU,EAAEyU,GAAIhE,GAAuD,KAAKgE,GAAK,IAAKA,GAAGz9C,QAAU,EAAGy9C,IAAM,IAAIhU,EAAEgU,GAAIrH,GAAKgD,IAAKtP,GAAG,gBAAgB,GAAKzF,EAAE,IAAK,EAAG,EAAG,YAAaA,EAAE,KAAM,EAAG,EAAG,YAAakJ,EAAI9rC,EAAE44B,UAAuCkT,EAAE/mC,IAAMyzC,GAAI1M,EAAEwN,SAAW,SAAU/7C,EAAGokC,GAAK,IAAMjE,UAAUn/B,SAAWm/B,UAAU,GAAK+V,GAAG/V,UAAU,KAAOngC,EAAImgC,UAAU,GAAIiE,EAAI,QAAU,SAAUpkC,GAAK,IAAK,GAAIokC,GAAIS,EAAE7kC,KAAO8kC,EAAE9kC,GAAIolC,GAAI,EAAIC,GAAK,UAAW,UAAW,UAAW,WAAY,WAAY,YAAa3kC,EAAI,EAAGA,EAAI2kC,EAAErkC,OAAQN,GAAK,EAAE0kC,EAAIA,GAAKjG,EAAEn/B,EAAGqlC,EAAE3kC,GAAK,OAAO0jC,IAAKgB,GAAIjF,UAAU,MAAQiE,EAAIjE,UAAU,GAAIngC,EAAI,QAAUokC,EAAIpkC,EAAI,OAAS,IAAIA,GAAIA,GAAKuyC,IAAKnN,EAAIyP,GAAG70C,EAAGuI,MAAMm2C,QAAQ,OAAQtZ,EAAIV,EAAEia,eAAep2C,KAAM68B,IAAM,WAAYhB,EAAIA,IAAMnF,EAAEmF,EAAEgB,IAAMhB,EAAEgB,GAAGnhB,KAAK1b,KAAMvI,GAAKokC,EAAEgB,GAAK,OAAO78B,MAAKuZ,OAAOsiB,GAAK77B,KAAK6gC,aAAa2S,SAAS3W,EAAG78B,KAAMgqC,EAAEvyC,MAAQuuC,EAAEuG,MAAQ,WAAc,MAAO,IAAIryC,GAAE8F,OAASgmC,EAAEqQ,KAAO,SAAU5+C,EAAGokC,EAAGgB,GAAK,GAAIC,GAAG3kC,EAAG+mC,CAAG,KAAKl/B,KAAK2/B,UAAW,MAAOX,IAAK,MAAMlC,EAAIwP,GAAG70C,EAAGuI,OAAO2/B,UAAW,MAAOX,IAAK,QAAQ7mC,EAAI,KAAO2kC,EAAEqP,YAAcnsC,KAAKmsC,aAActQ,EAAI5B,EAAE4B,IAAM,IAAK,OAAQqD,EAAI0O,GAAG5tC,KAAM88B,GAAK,EAAI,MAAO,KAAK,QAASoC,EAAI0O,GAAG5tC,KAAM88B,EAAI,MAAO,KAAK,UAAWoC,EAAI0O,GAAG5tC,KAAM88B,GAAK,CAAG,MAAO,KAAK,SAAUoC,GAAKl/B,KAAO88B,GAAK,GAAK,MAAO,KAAK,SAAUoC,GAAKl/B,KAAO88B,GAAK,GAAK,MAAO,KAAK,OAAQoC,GAAKl/B,KAAO88B,GAAK,IAAM,MAAO,KAAK,MAAOoC,GAAKl/B,KAAO88B,EAAI3kC,GAAK,KAAO,MAAO,KAAK,OAAQ+mC,GAAKl/B,KAAO88B,EAAI3kC,GAAK,MAAQ,MAAO,SAAS+mC,EAAIl/B,KAAO88B,EAAG,MAAOD,GAAIqC,EAAI2C,EAAE3C,IAAM8G,EAAEsQ,MAAQ,SAAU7+C,GAAK,GAAIokC,GAAGgB,CAAG,IAAI,UAAYplC,EAAIwiC,EAAExiC,KAAO,gBAAkBA,GAAKuI,KAAK2/B,UAAW,CAAE,OAAQ9C,EAAI78B,KAAKw/B,OAAS0O,GAAKF,GAAIv2C,GAAK,IAAK,OAAQokC,EAAIgB,EAAE78B,KAAK0kC,OAAS,EAAG,EAAG,GAAK,CAAG,MAAO,KAAK,UAAW7I,EAAIgB,EAAE78B,KAAK0kC,OAAQ1kC,KAAKokC,QAAUpkC,KAAKokC,QAAU,EAAI,EAAG,GAAK,CAAG,MAAO,KAAK,QAASvI,EAAIgB,EAAE78B,KAAK0kC,OAAQ1kC,KAAKokC,QAAU,EAAG,GAAK,CAAG,MAAO,KAAK,OAAQvI,EAAIgB,EAAE78B,KAAK0kC,OAAQ1kC,KAAKokC,QAASpkC,KAAK8wB,OAAS9wB,KAAKswC,UAAY,GAAK,CAAG,MAAO,KAAK,UAAWzU,EAAIgB,EAAE78B,KAAK0kC,OAAQ1kC,KAAKokC,QAASpkC,KAAK8wB,QAAU9wB,KAAKuxC,aAAe,GAAK,GAAK,CAAG,MAAO,KAAK,MAAO,IAAK,OAAQ1V,EAAIgB,EAAE78B,KAAK0kC,OAAQ1kC,KAAKokC,QAASpkC,KAAK8wB,OAAS,GAAK,CAAG,MAAO,KAAK,OAAQ+K,EAAI77B,KAAKu+B,GAAGvB,UAAWnB,GAAK,KAAOkS,GAAGlS,GAAK77B,KAAKw/B,OAAS,EAAI,IAAMx/B,KAAKmsC,aAAc,MAAQ,CAAG,MAAO,KAAK,SAAUtQ,EAAI77B,KAAKu+B,GAAGvB,UAAWnB,GAAK,IAAMkS,GAAGlS,EAAG,KAAO,CAAG,MAAO,KAAK,SAAUA,EAAI77B,KAAKu+B,GAAGvB,UAAWnB,GAAK,IAAMkS,GAAGlS,EAAG,KAAO,EAAU77B,KAAKu+B,GAAGiO,QAAQ3Q,GAAIM,EAAE0D,aAAa7/B,MAAM,GAAM,MAAOA,OAAQgmC,EAAEzsB,OAAS,SAAU9hB,GAAK,MAAOA,GAAIA,IAAMuI,KAAKu2C,QAAUpa,EAAEsZ,iBAAmBtZ,EAAEqZ,eAAgB/9C,EAAIspC,GAAG/gC,KAAMvI,GAAIuI,KAAK6gC,aAAa2V,WAAW/+C,IAAMuuC,EAAEqH,KAAO,SAAU51C,EAAGokC,GAAK,MAAO77B,MAAK2/B,YAAczuB,EAAEzZ,IAAMA,EAAEkoC,WAAaqK,EAAEvyC,GAAGkoC,WAAakN,GAAIS,GAAIttC,KAAMqtC,KAAM51C,IAAKu5B,OAAOhxB,KAAKgxB,UAAUylB,UAAU5a,GAAK77B,KAAK6gC,aAAaM,eAAiB6E,EAAE0Q,QAAU,SAAUj/C,GAAK,MAAOuI,MAAKqtC,KAAKrD,IAAKvyC,IAAMuuC,EAAEsH,GAAK,SAAU71C,EAAGokC,GAAK,MAAO77B,MAAK2/B,YAAczuB,EAAEzZ,IAAMA,EAAEkoC,WAAaqK,EAAEvyC,GAAGkoC,WAAakN,GAAIQ,KAAMrtC,KAAMstC,GAAI71C,IAAKu5B,OAAOhxB,KAAKgxB,UAAUylB,UAAU5a,GAAK77B,KAAK6gC,aAAaM,eAAiB6E,EAAE2Q,MAAQ,SAAUl/C,GAAK,MAAOuI,MAAKstC,GAAGtD,IAAKvyC,IAAMuuC,EAAE9iC,IAAM,SAAUzL,GAAK,MAAOi/B,GAAE12B,KAAKvI,EAAIwiC,EAAExiC,KAAOuI,KAAKvI,KAAOuI,MAAQgmC,EAAE4Q,UAAY,WAAc,MAAOxZ,GAAEp9B,MAAMy9B,UAAYuI,EAAEuH,QAAU,SAAU91C,EAAGokC,GAAK,MAAOpkC,GAAIyZ,EAAEzZ,GAAKA,EAAIuyC,EAAEvyC,MAAOuI,KAAK2/B,YAAcloC,EAAEkoC,aAAe,iBAAmB9D,EAAI5B,EAAE4B,IAAM,eAAiB77B,KAAKg9B,UAAYvlC,EAAEulC,UAAYvlC,EAAEulC,UAAYh9B,KAAKusC,QAAQ4J,QAAQta,GAAGmB,YAAcgJ,EAAEmH,SAAW,SAAU11C,EAAGokC,GAAK,MAAOpkC,GAAIyZ,EAAEzZ,GAAKA,EAAIuyC,EAAEvyC,MAAOuI,KAAK2/B,YAAcloC,EAAEkoC,aAAe,iBAAmB9D,EAAI5B,EAAE4B,IAAM,eAAiB77B,KAAKg9B,UAAYvlC,EAAEulC,UAAYh9B,KAAKusC,QAAQ+J,MAAMza,GAAGmB,UAAYvlC,EAAEulC,YAAcgJ,EAAE6Q,UAAY,SAAUp/C,EAAGokC,EAAGgB,EAAGC,GAAK,MAAOrlC,GAAIyZ,EAAEzZ,GAAKA,EAAIuyC,EAAEvyC,GAAIokC,EAAI3qB,EAAE2qB,GAAKA,EAAImO,EAAEnO,MAAO77B,KAAK2/B,WAAaloC,EAAEkoC,WAAa9D,EAAE8D,aAAe,OAAS7C,EAAIA,GAAK,MAAM,GAAK98B,KAAKutC,QAAQ91C,EAAGolC,IAAM78B,KAAKmtC,SAAS11C,EAAGolC,MAAQ,MAAQC,EAAE,GAAK98B,KAAKmtC,SAAStR,EAAGgB,IAAM78B,KAAKutC,QAAQ1R,EAAGgB,KAAOmJ,EAAE8Q,OAAS,SAAUr/C,EAAGokC,GAAK,GAAIpkC,GAAIyZ,EAAEzZ,GAAKA,EAAIuyC,EAAEvyC,EAAI,UAAUuI,KAAK2/B,YAAcloC,EAAEkoC,aAAe,iBAAmB9D,EAAI5B,EAAE4B,IAAM,eAAiB77B,KAAKg9B,YAAcvlC,EAAEulC,WAAavlC,EAAIA,EAAEulC,UAAWh9B,KAAKusC,QAAQ4J,QAAQta,GAAGmB,WAAavlC,GAAKA,GAAKuI,KAAKusC,QAAQ+J,MAAMza,GAAGmB,aAAegJ,EAAE+Q,cAAgB,SAAUt/C,EAAGokC,GAAK,MAAO77B,MAAK82C,OAAOr/C,EAAGokC,IAAM77B,KAAKutC,QAAQ91C,EAAGokC,IAAMmK,EAAEgR,eAAiB,SAAUv/C,EAAGokC,GAAK,MAAO77B,MAAK82C,OAAOr/C,EAAGokC,IAAM77B,KAAKmtC,SAAS11C,EAAGokC,IAAMmK,EAAErG,QAAU,WAAc,MAAOrB,GAAEt+B,OAASgmC,EAAEiR,KAAO9D,GAAInN,EAAEhV,OAAS6c,GAAI7H,EAAEnF,WAAaiN,GAAI9H,EAAEttC,IAAMoW,GAAIk3B,EAAE9sC,IAAM44C,GAAI9L,EAAEkR,aAAe,WAAc,MAAOna,MAAMK,EAAEp9B,QAAUgmC,EAAEtjC,IAAM,SAAUjL,EAAGokC,GAAK,GAAI,gBAAmBpkC,GAAG,IAAK,GAAIolC,GAAI,SAAUplC,GAAK,GAAIokC,GAAGgB,IAAQ,KAAKhB,IAAKpkC,GAAGm/B,EAAEn/B,EAAGokC,IAAMgB,EAAEvwB,MAAO6qC,KAAMtb,EAAGub,SAAU9F,GAAGzV,IAAO,OAAOgB,GAAEn2B,KAAK,SAAUjP,EAAGokC,GAAK,MAAOpkC,GAAE2/C,SAAWvb,EAAEub,WAAava,GAAIplC,EAAI+pC,GAAG/pC,IAAKqlC,EAAID,EAAEpkC,OAAQN,EAAI,EAAGA,EAAI2kC,EAAG3kC,IAAI6H,KAAK68B,EAAE1kC,GAAGg/C,MAAM1/C,EAAEolC,EAAE1kC,GAAGg/C,WAAa,IAAIzgB,EAAE12B,KAAKvI,EAAIwiC,EAAExiC,KAAM,MAAOuI,MAAKvI,GAAGokC,EAAI,OAAO77B,OAAQgmC,EAAEmQ,QAAU,SAAU1+C,GAAK,GAAIokC,GAAGgB,CAAG,IAAI,UAAYplC,EAAIwiC,EAAExiC,KAAO,gBAAkBA,GAAKuI,KAAK2/B,UAAW,CAAE,OAAQ9C,EAAI78B,KAAKw/B,OAAS0O,GAAKF,GAAIv2C,GAAK,IAAK,OAAQokC,EAAIgB,EAAE78B,KAAK0kC,OAAQ,EAAG,EAAI,MAAO,KAAK,UAAW7I,EAAIgB,EAAE78B,KAAK0kC,OAAQ1kC,KAAKokC,QAAUpkC,KAAKokC,QAAU,EAAG,EAAI,MAAO,KAAK,QAASvI,EAAIgB,EAAE78B,KAAK0kC,OAAQ1kC,KAAKokC,QAAS,EAAI,MAAO,KAAK,OAAQvI,EAAIgB,EAAE78B,KAAK0kC,OAAQ1kC,KAAKokC,QAASpkC,KAAK8wB,OAAS9wB,KAAKswC,UAAY,MAAO,KAAK,UAAWzU,EAAIgB,EAAE78B,KAAK0kC,OAAQ1kC,KAAKokC,QAASpkC,KAAK8wB,QAAU9wB,KAAKuxC,aAAe,GAAK,MAAO,KAAK,MAAO,IAAK,OAAQ1V,EAAIgB,EAAE78B,KAAK0kC,OAAQ1kC,KAAKokC,QAASpkC,KAAK8wB,OAAS,MAAO,KAAK,OAAQ+K,EAAI77B,KAAKu+B,GAAGvB,UAAWnB,GAAKkS,GAAGlS,GAAK77B,KAAKw/B,OAAS,EAAI,IAAMx/B,KAAKmsC,aAAc,KAAO,MAAO,KAAK,SAAUtQ,EAAI77B,KAAKu+B,GAAGvB,UAAWnB,GAAKkS,GAAGlS,EAAG,IAAM,MAAO,KAAK,SAAUA,EAAI77B,KAAKu+B,GAAGvB,UAAWnB,GAAKkS,GAAGlS,EAAG,KAAa77B,KAAKu+B,GAAGiO,QAAQ3Q,GAAIM,EAAE0D,aAAa7/B,MAAM,GAAM,MAAOA,OAAQgmC,EAAEqR,SAAWnE,GAAIlN,EAAEsR,QAAU,WAAc,GAAI7/C,GAAIuI,IAAM,QAAQvI,EAAEitC,OAAQjtC,EAAE2sC,QAAS3sC,EAAEq5B,OAAQr5B,EAAEyzC,OAAQzzC,EAAE0zC,SAAU1zC,EAAE2zC,SAAU3zC,EAAE4zC,gBAAkBrF,EAAEuR,SAAW,WAAc,GAAI9/C,GAAIuI,IAAM,QAASqxC,MAAO55C,EAAEitC,OAAQM,OAAQvtC,EAAE2sC,QAAStT,KAAMr5B,EAAEq5B,OAAQ8V,MAAOnvC,EAAEmvC,QAASE,QAASrvC,EAAEqvC,UAAW+J,QAASp5C,EAAEo5C,UAAW9D,aAAct1C,EAAEs1C,iBAAoB/G,EAAEwR,OAAS,WAAc,MAAO,IAAIzmB,MAAK/wB,KAAKg9B,YAAcgJ,EAAEyR,YAAc,SAAUhgD,GAAK,GAAIokC,EAAG,OAAO77B,MAAK2/B,WAAa9D,GAAKpkC,GAAI,IAAOA,GAAKuI,KAAKusC,QAAQpP,MAAQn9B,MAAM0kC,OAAS,GAAK,KAAO7I,EAAE6I,OAAS3D,GAAGlF,EAAGpkC,EAAI,iCAAmC,gCAAkCi/B,EAAE3F,KAAK+B,UAAU2kB,aAAehgD,EAAIuI,KAAKw3C,SAASC,cAAgB,GAAI1mB,MAAK/wB,KAAKg9B,UAAY,GAAKh9B,KAAKmsC,YAAc,KAAKsL,cAAcn+C,QAAQ,IAAKynC,GAAGlF,EAAG,MAAQkF,GAAGlF,EAAGpkC,EAAI,+BAAiC,8BAAgC,MAAQuuC,EAAE0R,QAAU,WAAc,GAAIjgD,GAAGokC,EAAGgB,CAAG,OAAO78B,MAAK2/B,WAAa9D,EAAI,SAAUpkC,EAAI,GAAIuI,KAAK23C,YAAc9b,EAAI,IAAM77B,KAAKmsC,YAAc,aAAe,mBAAoB10C,EAAI,KAAMokC,EAAI,IAAMA,EAAI,MAAOgB,EAAI,GAAK78B,KAAK0kC,QAAU1kC,KAAK0kC,QAAU,KAAO,OAAS,SAAU1kC,KAAKuZ,OAAOsiB,EAAIgB,EAAI,yBAA2BplC,EAAI,UAAY,qBAAuBuI,KAAKgN,GAAK,QAAU,mBAAsB4qC,SAAU,MAAQA,OAAAA,SAAe5R,EAAE4R,OAAAA,OAAW,+BAAiC,WAAc,MAAO,UAAY53C,KAAKuZ,SAAW,MAAQysB,EAAE6R,OAAS,WAAc,MAAO73C,MAAK2/B,UAAY3/B,KAAKy3C,cAAgB,MAAQzR,EAAE3sC,SAAW,WAAc,MAAO2G,MAAKusC,QAAQvb,OAAO,MAAMzX,OAAO,qCAAuCysB,EAAE8R,KAAO,WAAc,MAAO3iC,MAAK4sB,MAAM/hC,KAAKg9B,UAAY,MAAQgJ,EAAEhJ,QAAU,WAAc,MAAOh9B,MAAKu+B,GAAGvB,UAAY,KAAOh9B,KAAKy/B,SAAW,IAAMuG,EAAE+R,aAAe,WAAc,OAASj4C,MAAOE,KAAKgN,GAAIuM,OAAQvZ,KAAKq/B,GAAIrO,OAAQhxB,KAAK0/B,QAASsY,MAAOh4C,KAAKw/B,OAAQyY,OAAQj4C,KAAK2+B,UAAaqH,EAAEkS,QAAU,WAAc,IAAK,GAAIzgD,GAAGokC,EAAI77B,KAAK6gC,aAAayN,OAAQzR,EAAI,EAAGC,EAAIjB,EAAEpjC,OAAQokC,EAAIC,IAAKD,EAAG,CAAE,GAAIplC,EAAIuI,KAAKusC,QAAQ4J,QAAQ,OAAOnZ,UAAWnB,EAAEgB,GAAGsb,OAAS1gD,GAAKA,GAAKokC,EAAEgB,GAAGub,MAAO,MAAOvc,GAAEgB,GAAGrF,IAAM,IAAIqE,EAAEgB,GAAGub,OAAS3gD,GAAKA,GAAKokC,EAAEgB,GAAGsb,MAAO,MAAOtc,GAAEgB,GAAGrF,KAAO,MAAO,IAAMwO,EAAEqS,UAAY,WAAc,IAAK,GAAI5gD,GAAGokC,EAAI77B,KAAK6gC,aAAayN,OAAQzR,EAAI,EAAGC,EAAIjB,EAAEpjC,OAAQokC,EAAIC,IAAKD,EAAG,CAAE,GAAIplC,EAAIuI,KAAKusC,QAAQ4J,QAAQ,OAAOnZ,UAAWnB,EAAEgB,GAAGsb,OAAS1gD,GAAKA,GAAKokC,EAAEgB,GAAGub,MAAO,MAAOvc,GAAEgB,GAAG0R,MAAQ,IAAI1S,EAAEgB,GAAGub,OAAS3gD,GAAKA,GAAKokC,EAAEgB,GAAGsb,MAAO,MAAOtc,GAAEgB,GAAG0R,OAAS,MAAO,IAAMvI,EAAEsS,QAAU,WAAc,IAAK,GAAI7gD,GAAGokC,EAAI77B,KAAK6gC,aAAayN,OAAQzR,EAAI,EAAGC,EAAIjB,EAAEpjC,OAAQokC,EAAIC,IAAKD,EAAG,CAAE,GAAIplC,EAAIuI,KAAKusC,QAAQ4J,QAAQ,OAAOnZ,UAAWnB,EAAEgB,GAAGsb,OAAS1gD,GAAKA,GAAKokC,EAAEgB,GAAGub,MAAO,MAAOvc,GAAEgB,GAAG8K,IAAM,IAAI9L,EAAEgB,GAAGub,OAAS3gD,GAAKA,GAAKokC,EAAEgB,GAAGsb,MAAO,MAAOtc,GAAEgB,GAAG8K,KAAO,MAAO,IAAM3B,EAAEuS,QAAU,WAAc,IAAK,GAAI9gD,GAAGokC,EAAGgB,EAAI78B,KAAK6gC,aAAayN,OAAQxR,EAAI,EAAG3kC,EAAI0kC,EAAEpkC,OAAQqkC,EAAI3kC,IAAK2kC,EAAE,GAAIrlC,EAAIolC,EAAEC,GAAGqb,OAAStb,EAAEC,GAAGsb,MAAQ,KAAQvc,EAAI77B,KAAKusC,QAAQ4J,QAAQ,OAAOnZ,UAAWH,EAAEC,GAAGqb,OAAStc,GAAKA,GAAKgB,EAAEC,GAAGsb,OAASvb,EAAEC,GAAGsb,OAASvc,GAAKA,GAAKgB,EAAEC,GAAGqb,MAAO,OAAQn4C,KAAK0kC,OAASvI,EAAEU,EAAEC,GAAGqb,OAAOzT,QAAUjtC,EAAIolC,EAAEC,GAAGziC,MAAQ,OAAO2F,MAAK0kC,QAAUsB,EAAEtB,KAAO6N,GAAIvM,EAAEwS,WAAa,WAAc,MAAOnW,IAAGriC,KAAK0kC,SAAWsB,EAAEwL,SAAW,SAAU/5C,GAAK,MAAOm3C,IAAGlzB,KAAK1b,KAAMvI,EAAGuI,KAAK6lC,OAAQ7lC,KAAKswC,UAAYtwC,KAAK6gC,aAAaoJ,MAAMC,IAAKlqC,KAAK6gC,aAAaoJ,MAAMC,IAAKlqC,KAAK6gC,aAAaoJ,MAAME,MAAQnE,EAAEyL,YAAc,SAAUh6C,GAAK,MAAOm3C,IAAGlzB,KAAK1b,KAAMvI,EAAGuI,KAAKyrC,UAAWzrC,KAAKuxC,aAAc,EAAG,IAAMvL,EAAEwF,QAAUxF,EAAE4K,SAAW,SAAUn5C,GAAK,MAAO,OAAQA,EAAI0d,KAAK2sB,MAAM9hC,KAAKokC,QAAU,GAAK,GAAKpkC,KAAKokC,MAAM,GAAK3sC,EAAI,GAAKuI,KAAKokC,QAAU,IAAM4B,EAAE5B,MAAQS,GAAImB,EAAEyS,YAAc,WAAc,MAAOlU,IAAGvkC,KAAK0kC,OAAQ1kC,KAAKokC,UAAY4B,EAAEH,KAAOG,EAAEkL,MAAQ,SAAUz5C,GAAK,GAAIokC,GAAI77B,KAAK6gC,aAAagF,KAAK7lC,KAAO,OAAO,OAAQvI,EAAIokC,EAAI77B,KAAKf,IAAI,GAAKxH,EAAIokC,GAAI,MAAQmK,EAAEyF,QAAUzF,EAAE0S,SAAW,SAAUjhD,GAAK,GAAIokC,GAAI8J,GAAG3lC,KAAM,EAAG,GAAG6lC,IAAM,OAAO,OAAQpuC,EAAIokC,EAAI77B,KAAKf,IAAI,GAAKxH,EAAIokC,GAAI,MAAQmK,EAAE2S,YAAc,WAAc,GAAIlhD,GAAIuI,KAAK6gC,aAAaoJ,KAAO,OAAOrE,GAAE5lC,KAAK0kC,OAAQjtC,EAAEyyC,IAAKzyC,EAAE0yC,MAAQnE,EAAE4S,gBAAkB,WAAc,GAAInhD,GAAIuI,KAAK6gC,aAAaoJ,KAAO,OAAOrE,GAAE5lC,KAAKwxC,WAAY/5C,EAAEyyC,IAAKzyC,EAAE0yC,MAAQnE,EAAE6S,eAAiB,WAAc,MAAOjT,GAAE5lC,KAAK0kC,OAAQ,EAAG,IAAMsB,EAAE8S,sBAAwB,WAAc,MAAOlT,GAAE5lC,KAAKyxC,cAAe,EAAG,IAAMzL,EAAElV,KAAOkhB,GAAIhM,EAAEC,IAAMD,EAAEqK,KAAO,SAAU54C,GAAK,GAAIokC,GAAGgB,EAAGC,CAAG,OAAO98B,MAAK2/B,WAAa9D,EAAI4G,GAAGziC,KAAM,OAAQ,MAAQvI,GAAKolC,EAAIplC,EAAGqlC,EAAI98B,KAAK6gC,aAAcppC,EAAI,gBAAmBolC,GAAIA,EAAI2B,MAAM3B,GAAK,iBAAoBA,EAAIC,EAAEmW,cAAcpW,IAAMA,EAAI,KAAO9jC,SAAS8jC,EAAG,IAAK78B,KAAKf,IAAIxH,EAAIokC,EAAG,MAAQA,GAAK,MAAQpkC,EAAIuI,KAAOg/B,KAAOgH,EAAEsK,QAAU,SAAU74C,GAAK,GAAIokC,EAAG,OAAO77B,MAAK2/B,WAAa9D,GAAK77B,KAAKimC,MAAQ,EAAIjmC,KAAK6gC,aAAaoJ,MAAMC,KAAO,EAAG,MAAQzyC,EAAIokC,EAAI77B,KAAKf,IAAIxH,EAAIokC,EAAG,MAAQ,MAAQpkC,EAAIuI,KAAOg/B,KAAOgH,EAAEuL,WAAa,SAAU95C,GAAK,GAAIokC,GAAGgB,CAAG,OAAO78B,MAAK2/B,UAAY,MAAQloC,GAAKokC,EAAIpkC,EAAGolC,EAAI78B,KAAK6gC,aAAchE,EAAI,gBAAmBhB,GAAIgB,EAAEoW,cAAcpX,GAAK,GAAK,EAAI2C,MAAM3C,GAAK,KAAOA,EAAG77B,KAAKimC,IAAIjmC,KAAKimC,MAAQ,EAAIpJ,EAAIA,EAAI,IAAM78B,KAAKimC,OAAS,EAAI,MAAQxuC,EAAIuI,KAAOg/B,KAAOgH,EAAEN,UAAY,SAAUjuC,GAAK,GAAIokC,GAAI1mB,KAAK82B,OAAOjsC,KAAKusC,QAAQ4J,QAAQ,OAASn2C,KAAKusC,QAAQ4J,QAAQ,SAAW,OAAS,CAAG,OAAO,OAAQ1+C,EAAIokC,EAAI77B,KAAKf,IAAIxH,EAAIokC,EAAG,MAAQmK,EAAEkF,KAAOlF,EAAEY,MAAQzuC,EAAG6tC,EAAEmF,OAASnF,EAAEc,QAAU8K,GAAI5L,EAAEoF,OAASpF,EAAE6K,QAAUoB,GAAIjM,EAAEqF,YAAcrF,EAAE+G,aAAe8E,GAAI7L,EAAEmG,UAAY,SAAU10C,EAAGokC,EAAGgB,GAAK,GAAIC,GAAG3kC,EAAI6H,KAAKy/B,SAAW,CAAG,KAAKz/B,KAAK2/B,UAAW,MAAO,OAAQloC,EAAIuI,KAAOg/B,GAAK,IAAI,MAAQvnC,EAAG,MAAOuI,MAAKw/B,OAASrnC,EAAIu0C,GAAG1sC,KAAO,IAAI,gBAAmBvI,IAAK,GAAI,QAAUA,EAAI20C,GAAGiG,GAAI56C,IAAK,MAAOuI,UAAYmV,MAAKmf,IAAI78B,GAAK,KAAOolC,IAAMplC,GAAK,GAAK,QAAQuI,KAAKw/B,QAAU3D,IAAMiB,EAAI4P,GAAG1sC,OAAQA,KAAKy/B,QAAUhoC,EAAGuI,KAAKw/B,QAAS,EAAI,MAAQ1C,GAAK98B,KAAKf,IAAI69B,EAAG,KAAM3kC,IAAMV,KAAOokC,GAAK77B,KAAK+4C,kBAAoBtL,GAAGztC,KAAM6sC,EAAEp1C,EAAIU,EAAG,KAAM,GAAG,GAAM6H,KAAK+4C,oBAAsB/4C,KAAK+4C,mBAAoB,EAAI5c,EAAE0D,aAAa7/B,MAAM,GAAKA,KAAK+4C,kBAAoB,OAAQ/4C,MAAQgmC,EAAE7I,IAAM,SAAU1lC,GAAK,MAAOuI,MAAKmsC,UAAU,EAAG10C,IAAMuuC,EAAEyG,MAAQ,SAAUh1C,GAAK,MAAOuI,MAAKw/B,SAAWx/B,KAAKmsC,UAAU,EAAG10C,GAAIuI,KAAKw/B,QAAS,EAAI/nC,IAAMuI,KAAKq3C,SAAS3K,GAAG1sC,MAAO,KAAMA,MAAQgmC,EAAEgT,UAAY,WAAc,GAAIvhD,EAAG,OAAO,OAAQuI,KAAKu/B,KAAOv/B,KAAKmsC,UAAUnsC,KAAKu/B,MAAM,GAAI,GAAM,gBAAmBv/B,MAAKgN,KAAO,OAASvV,EAAI20C,GAAGgG,GAAIpyC,KAAKgN,KAAOhN,KAAKmsC,UAAU10C,GAAKuI,KAAKmsC,UAAU,GAAG,IAAMnsC,MAAQgmC,EAAEiT,qBAAuB,SAAUxhD,GAAK,QAASuI,KAAK2/B,YAAcloC,EAAIA,EAAIuyC,EAAEvyC,GAAG00C,YAAc,GAAInsC,KAAKmsC,YAAc10C,GAAK,IAAM,IAAMuuC,EAAEkT,MAAQ,WAAc,MAAOl5C,MAAKmsC,YAAcnsC,KAAKusC,QAAQnI,MAAM,GAAG+H,aAAensC,KAAKmsC,YAAcnsC,KAAKusC,QAAQnI,MAAM,GAAG+H,aAAenG,EAAE2R,QAAU,WAAc,QAAS33C,KAAK2/B,YAAc3/B,KAAKw/B,QAAUwG,EAAEmT,YAAc,WAAc,QAASn5C,KAAK2/B,WAAa3/B,KAAKw/B,QAAUwG,EAAEuQ,MAAQ3J,GAAI5G,EAAEgS,MAAQpL,GAAI5G,EAAEoT,SAAW,WAAc,MAAOp5C,MAAKw/B,OAAS,MAAQ,IAAMwG,EAAEqT,SAAW,WAAc,MAAOr5C,MAAKw/B,OAAS,6BAA+B,IAAMwG,EAAEoK,MAAQ34C,EAAE,kDAAmDu6C,IAAKhM,EAAEhB,OAASvtC,EAAE,mDAAoDotC,IAAKmB,EAAEqL,MAAQ55C,EAAE,iDAAkD86C,IAAKvM,EAAEsT,KAAO7hD,EAAE,2GAA4G,SAAUA,EAAGokC,GAAK,MAAO,OAAQpkC,GAAKuI,KAAKmsC,UAAU10C,EAAI,gBAAmBA,IAAKA,EAAIA,EAAGokC,GAAI77B,OAASA,KAAKmsC,cAAgBnG,EAAEuT,aAAe9hD,EAAE,0GAA2G,WAAc,GAAIA,GAAGokC,CAAG,OAAOY,GAAEz8B,KAAKw5C,iBAAmBva,EAAExnC,KAAQuI,OAAQvI,EAAIozC,GAAGpzC,IAAIwwC,IAAMpM,GAAKpkC,EAAE+nC,OAASvC,EAAI+M,GAAGvyC,EAAEwwC,IAAKjoC,KAAKw5C,cAAgBx5C,KAAK2/B,WAAa,EAAI,SAAUloC,EAAGokC,EAAGgB,GAAK,IAAK,GAAIC,GAAI3nB,KAAKjc,IAAIzB,EAAEgB,OAAQojC,EAAEpjC,QAASN,EAAIgd,KAAKmf,IAAI78B,EAAEgB,OAASojC,EAAEpjC,QAASymC,EAAI,EAAGxI,EAAI,EAAGA,EAAIoG,EAAGpG,KAAKmG,GAAKplC,EAAEi/B,KAAOmF,EAAEnF,KAAOmG,GAAKmF,EAAEvqC,EAAEi/B,MAAQsL,EAAEnG,EAAEnF,MAAQwI,GAAK,OAAOA,GAAI/mC,GAAIV,EAAEwwC,GAAIpM,EAAEyb,YAAct3C,KAAKw5C,eAAgB,GAAKx5C,KAAKw5C,gBAAkB/iB,EAAIgK,EAAE3N,UAA+kB2D,EAAE+c,SAAW,SAAU/7C,EAAGokC,EAAGgB,GAAK,MAAOnG,GAAEj/B,EAAIuI,KAAKy5C,UAAUhiD,IAAMuI,KAAKy5C,UAAU3F,UAAYr8C,EAAEikB,KAAKmgB,EAAGgB,GAAKplC,GAAKg/B,EAAE2K,eAAiB,SAAU3pC,GAAK,GAAIokC,GAAI77B,KAAK05C,gBAAgBjiD,GAAIolC,EAAI78B,KAAK05C,gBAAgBjiD,EAAEuE,cAAgB,OAAO6/B,KAAMgB,EAAIhB,GAAK77B,KAAK05C,gBAAgBjiD,GAAKolC,EAAEtsB,MAAM2wB,IAAIyY,IAAI,SAAUliD,GAAK,MAAO,SAAWA,GAAK,OAASA,GAAK,OAASA,GAAK,SAAWA,EAAIA,EAAEkB,MAAM,GAAKlB,IAAKkZ,KAAK,IAAK3Q,KAAK05C,gBAAgBjiD,KAAOg/B,EAAE0K,YAAc,WAAc,MAAOnhC,MAAK45C,cAAgBnjB,EAAEqK,QAAU,SAAUrpC,GAAK,MAAOuI,MAAK65C,SAASvgD,QAAQ,KAAM7B,IAAMg/B,EAAEqU,SAAWgE,GAAIrY,EAAE+f,WAAa1H,GAAIrY,EAAEkZ,aAAe,SAAUl4C,EAAGokC,EAAGgB,EAAGC,GAAK,GAAI3kC,GAAI6H,KAAK85C,cAAcjd,EAAI,OAAOnG,GAAEv+B,GAAKA,EAAEV,EAAGokC,EAAGgB,EAAGC,GAAK3kC,EAAEmB,QAAQ,MAAO7B,IAAMg/B,EAAEsjB,WAAa,SAAUtiD,EAAGokC,GAAK,MAAOnF,GAAEj/B,EAAIuI,KAAK85C,cAAc,EAAIriD,EAAI,SAAW,SAAWA,EAAEokC,GAAKpkC,EAAE6B,QAAQ,MAAOuiC,IAAMpF,EAAE/zB,IAAM,SAAUjL,GAAK,GAAIokC,GAAGgB,CAAG,KAAKA,IAAKplC,GAAGm/B,EAAEn/B,EAAGolC,KAAOnG,EAAEmF,EAAIpkC,EAAEolC,IAAM78B,KAAK68B,GAAKhB,EAAI77B,KAAK,IAAM68B,GAAKhB,EAAI77B,MAAK4nC,QAAUnwC,EAAGuI,KAAKi2C,+BAAiC,GAAIj4C,SAAQgC,KAAK+1C,wBAAwBiE,QAAUh6C,KAAKg2C,cAAcgE,QAAU,IAAM,UAAUA,SAAWvjB,EAAE6X,KAAO,SAAU72C,EAAGokC,GAAK,IAAK,GAAIgB,GAAGC,EAAI98B,KAAKi6C,OAASzS,EAAE,MAAMyS,MAAO9hD,EAAI,EAAG+mC,EAAIpC,EAAErkC,OAAQN,EAAI+mC,IAAK/mC,EAAG,CAAE,aAAe2kC,GAAE3kC,GAAGggD,OAAS,IAAK,SAAUtb,EAAIV,EAAEW,EAAE3kC,GAAGggD,OAAOhC,QAAQ,OAAQrZ,EAAE3kC,GAAGggD,MAAQtb,EAAEG,UAAkB,aAAeF,GAAE3kC,GAAGigD,OAAS,IAAK,YAAatb,EAAE3kC,GAAGigD,MAAQ,EAAI,CAAG,MAAO,KAAK,SAAUvb,EAAIV,EAAEW,EAAE3kC,GAAGigD,OAAOjC,QAAQ,OAAOnZ,UAAWF,EAAE3kC,GAAGigD,MAAQvb,EAAEG,WAAqB,MAAOF,IAAKrG,EAAEmf,UAAY,SAAUn+C,EAAGokC,EAAGgB,GAAK,GAAIC,GAAG3kC,EAAG+mC,EAAGxI,EAAGuD,EAAG+L,EAAIhmC,KAAKsuC,MAAQ,KAAK72C,EAAIA,EAAEuE,cAAe8gC,EAAI,EAAG3kC,EAAI6tC,EAAEvtC,OAAQqkC,EAAI3kC,IAAK2kC,EAAE,GAAIoC,EAAI8G,EAAElJ,GAAGtF,KAAKx7B,cAAe06B,EAAIsP,EAAElJ,GAAG6K,KAAK3rC,cAAei+B,EAAI+L,EAAElJ,GAAGyR,OAAOvyC,cAAe6gC,EAAG,OAAQhB,GAAK,IAAK,IAAK,IAAK,KAAM,IAAK,MAAO,GAAInF,IAAMj/B,EAAG,MAAOuuC,GAAElJ,EAAI,MAAO,KAAK,OAAQ,GAAIoC,IAAMznC,EAAG,MAAOuuC,GAAElJ,EAAI,MAAO,KAAK,QAAS,GAAI7C,IAAMxiC,EAAG,MAAOuuC,GAAElJ,OAAiB,IAAI,IAAMoC,EAAGxI,EAAGuD,GAAGngC,QAAQrC,GAAI,MAAOuuC,GAAElJ,IAAMrG,EAAEmU,gBAAkB,SAAUnzC,EAAGokC,GAAK,GAAIgB,GAAIplC,EAAE0gD,OAAS1gD,EAAE2gD,MAAQ,IAAQ,OAAO,UAAWvc,EAAIM,EAAE1kC,EAAE0gD,OAAOzT,OAASvI,EAAE1kC,EAAE0gD,OAAOzT,QAAU7I,EAAIpkC,EAAE4C,QAAUwiC,GAAKpG,EAAE2X,cAAgB,SAAU32C,GAAK,MAAOm/B,GAAE52B,KAAM,mBAAqBquC,GAAG3yB,KAAK1b,MAAOvI,EAAIuI,KAAK0uC,eAAiB1uC,KAAKwuC,YAAc/X,EAAEif,cAAgB,SAAUj+C,GAAK,MAAOm/B,GAAE52B,KAAM,mBAAqBquC,GAAG3yB,KAAK1b,MAAOvI,EAAIuI,KAAKyuC,eAAiBzuC,KAAKwuC,YAAc/X,EAAEkf,gBAAkB,SAAUl+C,GAAK,MAAOm/B,GAAE52B,KAAM,qBAAuBquC,GAAG3yB,KAAK1b,MAAOvI,EAAIuI,KAAK2uC,iBAAmB3uC,KAAKwuC,YAAc/X,EAAEuO,OAAS,SAAUvtC,EAAGokC,GAAK,MAAOpkC,IAAK4kC,EAAEr8B,KAAK6rC,SAAW7rC,KAAK6rC,QAAU7rC,KAAK6rC,SAAS7rC,KAAK6rC,QAAQqO,UAAYvH,IAAI94C,KAAKgiC,GAAK,SAAW,eAAepkC,EAAE2sC,SAAW/H,EAAEr8B,KAAK6rC,SAAW7rC,KAAK6rC,QAAU7rC,KAAK6rC,QAAQsO,YAAc1jB,EAAEsO,YAAc,SAAUttC,EAAGokC,GAAK,MAAOpkC,IAAK4kC,EAAEr8B,KAAKo6C,cAAgBp6C,KAAKo6C,aAAep6C,KAAKo6C,aAAazH,GAAG94C,KAAKgiC,GAAK,SAAW,eAAepkC,EAAE2sC,SAAW/H,EAAEr8B,KAAKo6C,cAAgBp6C,KAAKo6C,aAAep6C,KAAKo6C,aAAaD,YAAc1jB,EAAEgO,YAAc,SAAUhtC,EAAGokC,EAAGgB,GAAK,GAAIC,GAAG3kC,CAAG,IAAI6H,KAAKq6C,kBAAmB,MAAO,UAAU5iD,EAAGokC,EAAGgB,GAAK,GAAIC,GAAG3kC,EAAG+mC,EAAGznC,EAAIA,EAAE6iD,mBAAqB,KAAKt6C,KAAKu6C,aAAc,IAAKv6C,KAAKu6C,gBAAmBv6C,KAAKw6C,oBAAuBx6C,KAAKy6C,qBAAwB3d,EAAI,EAAGA,EAAI,KAAMA,EAAEoC,EAAIjC,GAAG,IAAKH,IAAK98B,KAAKy6C,kBAAkB3d,GAAK98B,KAAK+kC,YAAY7F,EAAG,IAAIob,oBAAqBt6C,KAAKw6C,iBAAiB1d,GAAK98B,KAAKglC,OAAO9F,EAAG,IAAIob,mBAAqB,OAAOzd,GAAI,QAAUhB,QAAY1jC,EAAIwhC,EAAEje,KAAK1b,KAAKy6C,kBAAmBhjD,IAAMU,EAAI,WAAeA,EAAIwhC,EAAEje,KAAK1b,KAAKw6C,iBAAkB/iD,IAAMU,EAAI,KAAO,QAAU0jC,QAAY1jC,EAAIwhC,EAAEje,KAAK1b,KAAKy6C,kBAAmBhjD,WAAeU,EAAIwhC,EAAEje,KAAK1b,KAAKw6C,iBAAkB/iD,IAAMU,EAAI,WAAeA,EAAIwhC,EAAEje,KAAK1b,KAAKw6C,iBAAkB/iD,WAAeU,EAAIwhC,EAAEje,KAAK1b,KAAKy6C,kBAAmBhjD,IAAMU,EAAI,MAAOujB,KAAK1b,KAAMvI,EAAGokC,EAAGgB,EAAI,KAAK78B,KAAKu6C,eAAiBv6C,KAAKu6C,gBAAmBv6C,KAAKw6C,oBAAuBx6C,KAAKy6C,sBAAyB3d,EAAI,EAAGA,EAAI,GAAIA,IAAK,CAAE,GAAI3kC,EAAI8kC,GAAG,IAAKH,IAAKD,IAAM78B,KAAKw6C,iBAAiB1d,KAAO98B,KAAKw6C,iBAAiB1d,GAAK,GAAI9+B,QAAO,IAAMgC,KAAKglC,OAAO7sC,EAAG,IAAImB,QAAQ,IAAK,IAAM,IAAK,KAAM0G,KAAKy6C,kBAAkB3d,GAAK,GAAI9+B,QAAO,IAAMgC,KAAK+kC,YAAY5sC,EAAG,IAAImB,QAAQ,IAAK,IAAM,IAAK,MAAOujC,GAAK78B,KAAKu6C,aAAazd,KAAO3kC,EAAI,IAAM6H,KAAKglC,OAAO7sC,EAAG,IAAM,KAAO6H,KAAK+kC,YAAY5sC,EAAG,IAAK6H,KAAKu6C,aAAazd,GAAK,GAAI9+B,QAAO7F,EAAEmB,QAAQ,IAAK,IAAK,MAAOujC,GAAK,SAAWhB,GAAK77B,KAAKw6C,iBAAiB1d,GAAGjjC,KAAKpC,GAAI,MAAOqlC,EAAG,IAAID,GAAK,QAAUhB,GAAK77B,KAAKy6C,kBAAkB3d,GAAGjjC,KAAKpC,GAAI,MAAOqlC,EAAG,KAAKD,GAAK78B,KAAKu6C,aAAazd,GAAGjjC,KAAKpC,GAAI,MAAOqlC,KAAOrG,EAAEgc,YAAc,SAAUh7C,GAAK,MAAOuI,MAAKq6C,mBAAqBzjB,EAAE52B,KAAM,iBAAmB8kC,GAAGppB,KAAK1b,MAAOvI,EAAIuI,KAAKmlC,mBAAqBnlC,KAAKilC,eAAiBrO,EAAE52B,KAAM,kBAAoBA,KAAKilC,aAAe4N,IAAK7yC,KAAKmlC,oBAAsB1tC,EAAIuI,KAAKmlC,mBAAqBnlC,KAAKilC,eAAiBxO,EAAE+b,iBAAmB,SAAU/6C,GAAK,MAAOuI,MAAKq6C,mBAAqBzjB,EAAE52B,KAAM,iBAAmB8kC,GAAGppB,KAAK1b,MAAOvI,EAAIuI,KAAKolC,wBAA0BplC,KAAKklC,oBAAsBtO,EAAE52B,KAAM,uBAAyBA,KAAKklC,kBAAoB0N,IAAK5yC,KAAKolC,yBAA2B3tC,EAAIuI,KAAKolC,wBAA0BplC,KAAKklC,oBAAsBzO,EAAEoP,KAAO,SAAUpuC,GAAK,MAAOkuC,IAAGluC,EAAGuI,KAAKiqC,MAAMC,IAAKlqC,KAAKiqC,MAAME,KAAKtE,MAAQpP,EAAEikB,eAAiB,WAAc,MAAO16C,MAAKiqC,MAAME,KAAO1T,EAAEkkB,eAAiB,WAAc,MAAO36C,MAAKiqC,MAAMC,KAAOzT,EAAE2P,SAAW,SAAU3uC,EAAGokC,GAAK,MAAOA,GAAIQ,EAAEr8B,KAAK46C,WAAa56C,KAAK46C,UAAY56C,KAAK46C,UAAUnjD,IAAK,IAAOA,GAAKuI,KAAK46C,UAAUV,SAASrgD,KAAKgiC,GAAK,SAAW,eAAe,IAAOpkC,EAAIquC,GAAGjK,EAAG77B,KAAKiqC,MAAMC,KAAOzyC,EAAIokC,EAAEpkC,EAAEwuC,OAASpK,GAAKpF,EAAEyP,YAAc,SAAUzuC,GAAK,OAAO,IAAOA,EAAIquC,GAAG9lC,KAAK66C,aAAc76C,KAAKiqC,MAAMC,KAAOzyC,EAAIuI,KAAK66C,aAAapjD,EAAEwuC,OAASjmC,KAAK66C,cAAgBpkB,EAAE0P,cAAgB,SAAU1uC,GAAK,OAAO,IAAOA,EAAIquC,GAAG9lC,KAAK86C,eAAgB96C,KAAKiqC,MAAMC,KAAOzyC,EAAIuI,KAAK86C,eAAerjD,EAAEwuC,OAASjmC,KAAK86C,gBAAkBrkB,EAAEwc,cAAgB,SAAUx7C,EAAGokC,EAAGgB,GAAK,GAAIC,GAAG3kC,CAAG,IAAI6H,KAAK+6C,oBAAqB,MAAO,UAAUtjD,EAAGokC,EAAGgB,GAAK,GAAIC,GAAG3kC,EAAG+mC,EAAGznC,EAAIA,EAAE6iD,mBAAqB,KAAKt6C,KAAKg7C,eAAgB,IAAKh7C,KAAKg7C,kBAAqBh7C,KAAKi7C,uBAA0Bj7C,KAAKk7C,qBAAwBpe,EAAI,EAAGA,EAAI,IAAKA,EAAEoC,EAAIjC,GAAG,IAAK,IAAIgJ,IAAInJ,GAAI98B,KAAKk7C,kBAAkBpe,GAAK98B,KAAKkmC,YAAYhH,EAAG,IAAIob,oBAAqBt6C,KAAKi7C,oBAAoBne,GAAK98B,KAAKmmC,cAAcjH,EAAG,IAAIob,oBAAqBt6C,KAAKg7C,eAAele,GAAK98B,KAAKomC,SAASlH,EAAG,IAAIob,mBAAqB,OAAOzd,GAAI,SAAWhB,QAAY1jC,EAAIwhC,EAAEje,KAAK1b,KAAKg7C,eAAgBvjD,IAAMU,EAAI,KAAO,QAAU0jC,QAAY1jC,EAAIwhC,EAAEje,KAAK1b,KAAKi7C,oBAAqBxjD,IAAMU,EAAI,WAAeA,EAAIwhC,EAAEje,KAAK1b,KAAKk7C,kBAAmBzjD,IAAMU,EAAI,KAAO,SAAW0jC,QAAY1jC,EAAIwhC,EAAEje,KAAK1b,KAAKg7C,eAAgBvjD,WAAeU,EAAIwhC,EAAEje,KAAK1b,KAAKi7C,oBAAqBxjD,WAAeU,EAAIwhC,EAAEje,KAAK1b,KAAKk7C,kBAAmBzjD,IAAMU,EAAI,KAAO,QAAU0jC,QAAY1jC,EAAIwhC,EAAEje,KAAK1b,KAAKi7C,oBAAqBxjD,WAAeU,EAAIwhC,EAAEje,KAAK1b,KAAKg7C,eAAgBvjD,WAAeU,EAAIwhC,EAAEje,KAAK1b,KAAKk7C,kBAAmBzjD,IAAMU,EAAI,WAAeA,EAAIwhC,EAAEje,KAAK1b,KAAKk7C,kBAAmBzjD,WAAeU,EAAIwhC,EAAEje,KAAK1b,KAAKg7C,eAAgBvjD,WAAeU,EAAIwhC,EAAEje,KAAK1b,KAAKi7C,oBAAqBxjD,IAAMU,EAAI;EAAOujB,KAAK1b,KAAMvI,EAAGokC,EAAGgB,EAAI,KAAK78B,KAAKg7C,iBAAmBh7C,KAAKg7C,kBAAqBh7C,KAAKk7C,qBAAwBl7C,KAAKi7C,uBAA0Bj7C,KAAKm7C,uBAA0Bre,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAAE,GAAI3kC,EAAI8kC,GAAG,IAAK,IAAIgJ,IAAInJ,GAAID,IAAM78B,KAAKm7C,mBAAmBre,KAAO98B,KAAKm7C,mBAAmBre,GAAK,GAAI9+B,QAAO,IAAMgC,KAAKomC,SAASjuC,EAAG,IAAImB,QAAQ,IAAK,QAAU,IAAK,KAAM0G,KAAKi7C,oBAAoBne,GAAK,GAAI9+B,QAAO,IAAMgC,KAAKmmC,cAAchuC,EAAG,IAAImB,QAAQ,IAAK,QAAU,IAAK,KAAM0G,KAAKk7C,kBAAkBpe,GAAK,GAAI9+B,QAAO,IAAMgC,KAAKkmC,YAAY/tC,EAAG,IAAImB,QAAQ,IAAK,QAAU,IAAK,MAAO0G,KAAKg7C,eAAele,KAAO3kC,EAAI,IAAM6H,KAAKomC,SAASjuC,EAAG,IAAM,KAAO6H,KAAKmmC,cAAchuC,EAAG,IAAM,KAAO6H,KAAKkmC,YAAY/tC,EAAG,IAAK6H,KAAKg7C,eAAele,GAAK,GAAI9+B,QAAO7F,EAAEmB,QAAQ,IAAK,IAAK,MAAOujC,GAAK,SAAWhB,GAAK77B,KAAKm7C,mBAAmBre,GAAGjjC,KAAKpC,GAAI,MAAOqlC,EAAG,IAAID,GAAK,QAAUhB,GAAK77B,KAAKi7C,oBAAoBne,GAAGjjC,KAAKpC,GAAI,MAAOqlC,EAAG,IAAID,GAAK,OAAShB,GAAK77B,KAAKk7C,kBAAkBpe,GAAGjjC,KAAKpC,GAAI,MAAOqlC,EAAG,KAAKD,GAAK78B,KAAKg7C,eAAele,GAAGjjC,KAAKpC,GAAI,MAAOqlC,KAAOrG,EAAEuc,cAAgB,SAAUv7C,GAAK,MAAOuI,MAAK+6C,qBAAuBnkB,EAAE52B,KAAM,mBAAqB+lC,GAAGrqB,KAAK1b,MAAOvI,EAAIuI,KAAKwmC,qBAAuBxmC,KAAKqmC,iBAAmBzP,EAAE52B,KAAM,oBAAsBA,KAAKqmC,eAAiB+M,IAAKpzC,KAAKwmC,sBAAwB/uC,EAAIuI,KAAKwmC,qBAAuBxmC,KAAKqmC,iBAAmB5P,EAAEsc,mBAAqB,SAAUt7C,GAAK,MAAOuI,MAAK+6C,qBAAuBnkB,EAAE52B,KAAM,mBAAqB+lC,GAAGrqB,KAAK1b,MAAOvI,EAAIuI,KAAKymC,0BAA4BzmC,KAAKsmC,sBAAwB1P,EAAE52B,KAAM,yBAA2BA,KAAKsmC,oBAAsB+M,IAAKrzC,KAAKymC,2BAA6BhvC,EAAIuI,KAAKymC,0BAA4BzmC,KAAKsmC,sBAAwB7P,EAAEqc,iBAAmB,SAAUr7C,GAAK,MAAOuI,MAAK+6C,qBAAuBnkB,EAAE52B,KAAM,mBAAqB+lC,GAAGrqB,KAAK1b,MAAOvI,EAAIuI,KAAK0mC,wBAA0B1mC,KAAKumC,oBAAsB3P,EAAE52B,KAAM,uBAAyBA,KAAKumC,kBAAoB+M,IAAKtzC,KAAK0mC,yBAA2BjvC,EAAIuI,KAAK0mC,wBAA0B1mC,KAAKumC,oBAAsB9P,EAAEkU,KAAO,SAAUlzC,GAAK,MAAO,OAASA,EAAI,IAAIwa,cAAcmpC,OAAO,IAAM3kB,EAAE0H,SAAW,SAAU1mC,EAAGokC,EAAGgB,GAAK,MAAO,IAAKplC,EAAIolC,EAAI,KAAO,KAAOA,EAAI,KAAO,MAAQ0K,GAAG,MAAQ+G,OAAS6J,MAAO,aAAcC,MAAO,EAAI,EAAG/9C,OAAQ,EAAGm9B,KAAM,cAAe+W,OAAQ,KAAM5G,KAAM,OAAUwQ,MAAO,aAAcC,SAAY,EAAG/9C,OAAQ,EAAGm9B,KAAM,gBAAiB+W,OAAQ,KAAM5G,KAAM,OAASwM,uBAAwB,uBAAwBrT,QAAS,SAAUrpC,GAAK,GAAIokC,GAAIpkC,EAAI,EAAI,OAAOA,IAAK,IAAMuqC,EAAEvqC,EAAI,IAAM,IAAM,KAAO,GAAKokC,EAAI,KAAO,GAAKA,EAAI,KAAO,GAAKA,EAAI,KAAO,SAAYM,EAAE8a,KAAOx/C,EAAE,wDAAyD8vC,IAAKpL,EAAEkf,SAAW5jD,EAAE,gEAAiE+vC,EAAI,IAAI8T,IAAKnmC,KAAKmf,GAAgXod,IAAKrC,GAAG,MAAOxT,EAAIwT,GAAG,KAAM0C,GAAK1C,GAAG,KAAMsC,GAAKtC,GAAG,KAAMqD,GAAKrD,GAAG,KAAMvgC,GAAKugC,GAAG,KAAMyC,GAAKzC,GAAG,KAAM6D,GAAK7D,GAAG,KAAMl3C,EAAIk3C,GAAG,KAAMuC,GAAKF,EAA0F,IAAIO,IAAK1C,GAAG,gBAAiBsC,GAAKtC,GAAG,WAAYyC,GAAKzC,GAAG,WAAYgD,GAAKhD,GAAG,SAAU9Y,EAAI8Y,GAAG,QAASgM,GAAKhM,GAAG,UAAWiM,GAAKjM,GAAG,SAAcE,GAAKt6B,KAAK82B,MAAOwP,IAAO/L,GAAI,GAAI5S,EAAG,GAAI+E,EAAG,GAAIJ,EAAG,GAAIhL,EAAG,GAAIiG,EAAG,KAAMsF,EAAG,IAAsoB8N,GAAK36B,KAAKmf,IAAquBonB,EAAInQ,GAAGzY,SAAW,OAAO4oB,GAAE/b,QAAU,WAAc,MAAO3/B,MAAK8+B,UAAY4c,EAAEpnB,IAAM,WAAc,GAAI78B,GAAIuI,KAAKgK,KAAO,OAAOhK,MAAK2rC,cAAgB2P,GAAGt7C,KAAK2rC,eAAgB3rC,KAAK4rC,MAAQ0P,GAAGt7C,KAAK4rC,OAAQ5rC,KAAK6rC,QAAUyP,GAAGt7C,KAAK6rC,SAAUp0C,EAAEs1C,aAAeuO,GAAG7jD,EAAEs1C,cAAet1C,EAAEo5C,QAAUyK,GAAG7jD,EAAEo5C,SAAUp5C,EAAEqvC,QAAUwU,GAAG7jD,EAAEqvC,SAAUrvC,EAAEmvC,MAAQ0U,GAAG7jD,EAAEmvC,OAAQnvC,EAAEutC,OAASsW,GAAG7jD,EAAEutC,QAASvtC,EAAE45C,MAAQiK,GAAG7jD,EAAE45C,OAAQrxC,MAAQ07C,EAAEz8C,IAAM,SAAUxH,EAAGokC,GAAK,MAAOoT,IAAGjvC,KAAMvI,EAAGokC,EAAG,IAAM6f,EAAErE,SAAW,SAAU5/C,EAAGokC,GAAK,MAAOoT,IAAGjvC,KAAMvI,EAAGokC,OAAU6f,EAAEpM,GAAK,SAAU73C,GAAK,IAAKuI,KAAK2/B,UAAW,MAAOX,IAAK,IAAInD,GAAGgB,EAAGC,EAAI98B,KAAK2rC,aAAe,IAAI,WAAal0C,EAAIwiC,EAAExiC,KAAO,YAAcA,GAAK,SAAWA,EAAG,OAAQokC,EAAI77B,KAAK4rC,MAAQ9O,EAAI,MAAOD,EAAI78B,KAAK6rC,QAAUsD,GAAGtT,GAAIpkC,GAAK,IAAK,QAAS,MAAOolC,EAAG,KAAK,UAAW,MAAOA,GAAI,CAAG,KAAK,OAAQ,MAAOA,GAAI,OAAU,QAAQhB,EAAI77B,KAAK4rC,MAAQz2B,KAAK82B,MAAMmD,GAAGpvC,KAAK6rC,UAAWp0C,GAAK,IAAK,OAAQ,MAAOokC,GAAI,EAAIiB,EAAI,MAAQ,KAAK,MAAO,MAAOjB,GAAIiB,EAAI,KAAO,KAAK,OAAQ,MAAO,IAAKjB,EAAIiB,EAAI,IAAM,KAAK,SAAU,MAAO,MAAOjB,EAAIiB,EAAI,GAAK,KAAK,SAAU,MAAO,OAAQjB,EAAIiB,EAAI,GAAK,KAAK,cAAe,MAAO3nB,MAAK4sB,MAAM,MAAQlG,GAAKiB,CAAG,SAAS,KAAM,IAAIqD,OAAM,gBAAkB1oC,KAAQikD,EAAEC,eAAiBjK,GAAIgK,EAAE3L,UAAYlU,EAAG6f,EAAEE,UAAY7J,GAAI2J,EAAEG,QAAUlK,GAAI+J,EAAEI,OAASpJ,GAAIgJ,EAAEK,QAAUjtC,GAAI4sC,EAAEM,SAAWlK,GAAI4J,EAAEO,WAAa/I,GAAIwI,EAAEQ,QAAU/jD,EAAGujD,EAAE1e,QAAU4U,GAAI8J,EAAE5P,QAAU,WAAc,GAAIr0C,GAAIuI,KAAK2rC,cAAe9P,EAAI77B,KAAK4rC,MAAO/O,EAAI78B,KAAK6rC,QAAS/O,EAAI98B,KAAKgK,KAAO,OAAO,IAAKvS,GAAK,GAAKokC,GAAK,GAAKgB,GAAKplC,GAAK,GAAKokC,GAAK,GAAKgB,GAAK,IAAMplC,GAAK,MAAQy3C,GAAGE,GAAGvS,GAAKhB,GAAIgB,EAAIhB,EAAI,GAAIiB,EAAEiQ,aAAet1C,EAAI,IAAKA,EAAIoqC,EAAEpqC,EAAI,KAAMqlC,EAAE+T,QAAUp5C,EAAI,GAAIA,EAAIoqC,EAAEpqC,EAAI,IAAKqlC,EAAEgK,QAAUrvC,EAAI,GAAIA,EAAIoqC,EAAEpqC,EAAI,IAAKqlC,EAAE8J,MAAQnvC,EAAI,GAAIokC,GAAKgG,EAAEpqC,EAAI,IAAKolC,GAAKplC,EAAIoqC,EAAEsN,GAAGtT,IAAKA,GAAKqT,GAAGE,GAAG33C,IAAKA,EAAIoqC,EAAEhF,EAAI,IAAKA,GAAK,GAAIC,EAAEuT,KAAOxU,EAAGiB,EAAEkI,OAASnI,EAAGC,EAAEuU,MAAQ55C,EAAGuI,MAAQ07C,EAAEnP,MAAQ,WAAc,MAAOM,GAAE7sC,OAAS07C,EAAEx4C,IAAM,SAAUzL,GAAK,MAAOA,GAAIwiC,EAAExiC,GAAIuI,KAAK2/B,UAAY3/B,KAAKvI,EAAI,OAASunC,KAAO0c,EAAE3O,aAAekF,GAAIyJ,EAAE7K,QAAUgB,GAAI6J,EAAE5U,QAAUkL,GAAI0J,EAAE9U,MAAQ2L,GAAImJ,EAAErL,KAAO5Z,EAAGilB,EAAExK,MAAQ,WAAc,MAAOrP,GAAE7hC,KAAKqwC,OAAS,IAAMqL,EAAE1W,OAASuW,GAAIG,EAAErK,MAAQmK,GAAIE,EAAEjF,SAAW,SAAUh/C,EAAGokC,GAAK,GAAIgB,GAAGC,CAAG,OAAO98B,MAAK2/B,WAAa9C,GAAI,EAAIC,EAAI2e,GAAI,gBAAmBhkD,KAAMokC,EAAIpkC,EAAGA,GAAI,GAAK,iBAAoBA,KAAMolC,EAAIplC,GAAI,gBAAmBokC,KAAMiB,EAAIn9B,OAAOw8C,UAAWV,GAAI5f,GAAI,MAAQA,EAAEiB,IAAM,MAAQjB,EAAE6T,KAAO5S,EAAE4S,GAAK7T,EAAEiB,EAAI,GAAIrlC,EAAIuI,KAAK6gC,aAAchF,EAAI2T,GAAGxvC,MAAO68B,EAAGC,EAAGrlC,GAAIolC,IAAMhB,EAAIpkC,EAAEsiD,YAAY/5C,KAAM67B,IAAKpkC,EAAE++C,WAAW3a,IAAM77B,KAAK6gC,aAAaM,eAAiBua,EAAEjE,YAAc5H,GAAI6L,EAAEriD,SAAWw2C,GAAI6L,EAAE7D,OAAShI,GAAI6L,EAAE1qB,OAAS6c,GAAI6N,EAAE7a,WAAaiN,GAAI4N,EAAEU,YAAc3kD,EAAE,sFAAuFo4C,IAAK6L,EAAEzE,KAAO9D,GAAIrW,EAAE,IAAK,EAAG,EAAG,QAASA,EAAE,IAAK,EAAG,EAAG,WAAY2E,EAAE,IAAK0Q,IAAK1Q,EAAE,IAAK,wBAAyBS,EAAE,IAAK,SAAUzqC,EAAGokC,EAAGgB,GAAKA,EAAE0B,GAAK,GAAIxN,MAAK,IAAM71B,WAAWzD,MAAQyqC,EAAE,IAAK,SAAUzqC,EAAGokC,EAAGgB,GAAKA,EAAE0B,GAAK,GAAIxN,MAAKiR,EAAEvqC,MAAQ0kC,EAAEkgB,QAAU,SAAUjgB,EAAI4N,EAAG7N,EAAEtD,GAAKmN,EAAG7J,EAAEjjC,IAAM,WAAc,MAAOoyC,IAAG,cAAe3yC,MAAM+iB,KAAKkc,UAAW,KAAOuE,EAAEzjC,IAAM,WAAc,MAAO4yC,IAAG,aAAc3yC,MAAM+iB,KAAKkc,UAAW,KAAOuE,EAAE0N,IAAM,WAAc,MAAO9Y,MAAK8Y,IAAM9Y,KAAK8Y,OAAS,GAAI9Y,OAAQoL,EAAEgB,IAAMF,EAAGd,EAAE2b,KAAO,SAAUrgD,GAAK,MAAOuyC,GAAE,IAAMvyC,IAAM0kC,EAAE6I,OAAS,SAAUvtC,EAAGokC,GAAK,MAAOhD,IAAGphC,EAAGokC,EAAG,WAAaM,EAAEmgB,OAAS3f,EAAGR,EAAEnL,OAASuW,GAAIpL,EAAEoZ,QAAUxW,EAAG5C,EAAEliC,SAAW4yC,EAAG1Q,EAAEogB,SAAWrrC,EAAGirB,EAAEiK,SAAW,SAAU3uC,EAAGokC,EAAGgB,GAAK,MAAOmS,IAAGv3C,EAAGokC,EAAGgB,EAAG,aAAeV,EAAE6c,UAAY,WAAc,MAAOhP,GAAErS,MAAM,KAAMC,WAAWohB,aAAe7c,EAAE0E,WAAa2G,EAAGrL,EAAEqgB,WAAazQ,GAAI5P,EAAE4I,YAAc,SAAUttC,EAAGokC,GAAK,MAAOhD,IAAGphC,EAAGokC,EAAG,gBAAkBM,EAAE+J,YAAc,SAAUzuC,EAAGokC,EAAGgB,GAAK,MAAOmS,IAAGv3C,EAAGokC,EAAGgB,EAAG,gBAAkBV,EAAEsgB,aAAehV,GAAItL,EAAEugB,aAAe,SAAUjlD,EAAGokC,GAAK,GAAIgB,GAAGC,CAAG,OAAO,OAAQjB,GAAKiB,EAAI4K,GAAI,MAAQN,EAAE3vC,IAAM,MAAQ2vC,EAAE3vC,GAAGowC,aAAeT,EAAE3vC,GAAGiL,IAAI89B,EAAE4G,EAAE3vC,GAAGmwC,QAAS/L,KAAOA,EAAI2E,EAAE1D,EAAI,OAASD,EAAIqK,GAAGzvC,IAAMolC,EAAE+K,QAAU9K,EAAGjB,GAAI,MAAQgB,IAAMhB,EAAE8L,KAAOlwC,IAAKqlC,EAAI,GAAI2D,GAAE5E,IAAIgM,aAAeT,EAAE3vC,GAAI2vC,EAAE3vC,GAAKqlC,GAAIyK,GAAG9vC,IAAM,MAAQ2vC,EAAE3vC,KAAO,MAAQ2vC,EAAE3vC,GAAGowC,cAAgBT,EAAE3vC,GAAK2vC,EAAE3vC,GAAGowC,aAAcpwC,IAAM8vC,MAAQA,GAAG9vC,IAAM,MAAQ2vC,EAAE3vC,UAAa2vC,GAAE3vC,IAAK2vC,EAAE3vC,IAAM0kC,EAAEwgB,QAAU,WAAc,MAAOxM,IAAG/I,IAAMjL,EAAEgK,cAAgB,SAAU1uC,EAAGokC,EAAGgB,GAAK,MAAOmS,IAAGv3C,EAAGokC,EAAGgB,EAAG,kBAAoBV,EAAEygB,eAAiB3iB,EAAGkC,EAAE0gB,qBAAuB,SAAUplD,GAAK,MAAO,UAAWA,EAAIg4C,GAAK,kBAAqBh4C,KAAMg4C,GAAKh4C,GAAG,IAAO0kC,EAAE2gB,sBAAwB,SAAUrlD,EAAGokC,GAAK,MAAO,UAAW4f,GAAGhkD,KAAO,SAAWokC,EAAI4f,GAAGhkD,IAAMgkD,GAAGhkD,GAAKokC,EAAG,MAAQpkC,IAAMgkD,GAAG/L,GAAK7T,EAAI,IAAI,KAAQM,EAAEia,eAAiB,SAAU3+C,EAAGokC,GAAK,OAAQpkC,EAAIA,EAAE4+C,KAAKxa,EAAG,QAAQ,OAAY,WAAapkC,KAAS,WAAaA,EAAI,EAAI,UAAYA,EAAI,EAAI,UAAYA,EAAI,EAAI,UAAYA,EAAI,EAAI,WAAa,YAAc0kC,EAAErJ,UAAYkT,EAAG7J,EAAE4gB,WAAcC,eAAgB,mBAAoBC,uBAAwB,sBAAuBC,kBAAmB,0BAA2BC,KAAM,aAAcC,KAAM,QAASC,aAAc,WAAYC,QAAS,eAAgBC,KAAM,aAAcC,MAAO,WAAarhB,GCH56oE,IAAIshB,UAASC,SAASC,aAAa,SAASjnB,EAAEkL,EAAEhL,GAAGF,YAAa1+B,UAAS0+B,EAAE1+B,OAAO0+B,GAAI,KAAI,GAAIuG,GAAEvG,EAAEj+B,OAAOgkC,EAAE,EAAEA,EAAEQ,EAAER,IAAI,CAAC,GAAI5F,GAAEH,EAAE+F,EAAG,IAAGmF,EAAElmB,KAAKkb,EAAEC,EAAE4F,EAAE/F,GAAG,OAAOv+B,EAAEskC,EAAEyF,EAAErL,GAAG,OAAO1+B,KAAK+pC,EAAE,SAAUub,SAAQG,eAAe,kBAAmBj+C,QAAOk+C,iBAAiBl+C,OAAOi+C,eAAe,SAASlnB,EAAEkL,EAAEhL,GAAG,GAAGA,EAAE1zB,KAAK0zB,EAAEl0B,IAAI,KAAM,IAAIi0B,WAAU,4CAA6CD,IAAG/iB,MAAMmf,WAAW4D,GAAG/2B,OAAOmzB,YAAY4D,EAAEkL,GAAGhL,EAAEv+B,QACtaolD,QAAQK,UAAU,SAASpnB,GAAG,MAAM,mBAAoBp/B,SAAQA,SAASo/B,EAAEA,EAAE,mBAAoBqnB,SAAQ,MAAMA,OAAOA,OAAOrnB,GAAG+mB,QAAQM,OAAON,QAAQK,UAAU99C,MAAMy9C,QAAQO,SAAS,SAAStnB,EAAEkL,EAAEhL,EAAEqG,GAAG,GAAG2E,EAAE,CAAiC,IAAhChL,EAAE6mB,QAAQM,OAAOrnB,EAAEA,EAAE/qB,MAAM,KAASsxB,EAAE,EAAEA,EAAEvG,EAAEj+B,OAAO,EAAEwkC,IAAI,CAAC,GAAIR,GAAE/F,EAAEuG,EAAGR,KAAK7F,KAAIA,EAAE6F,OAAO7F,EAAEA,EAAE6F,GAAG/F,EAAEA,EAAEA,EAAEj+B,OAAO,GAAGwkC,EAAErG,EAAEF,GAAGkL,EAAEA,EAAE3E,GAAG2E,GAAG3E,GAAG,MAAM2E,GAAG6b,QAAQG,eAAehnB,EAAEF,GAAGunB,cAAa,EAAGC,UAAS,EAAG7lD,MAAMupC,MACzZ6b,QAAQO,SAAS,uBAAuB,SAAStnB,GAAG,MAAOA,GAAEA,EAAE,SAASA,EAAEE,GAAG,MAAO6mB,SAAQE,aAAa39C,KAAK02B,EAAEE,GAAGsL,IAAI,WAAW,OAClI,SAAUxL,EAAEkL,EAAEhL,GAAG,kBAAoBoF,SAAQA,OAAOC,IAAID,QAAQ,UAAUtF,GAAG,gBAAkBoF,SAAQC,OAAOD,QAAQpF,EAAE4Q,QAAQ,WAAW5Q,EAAEkL,GAAGhL,IAAK,SAASF,GAAG,GAAIkL,GAAE,SAAS/K,EAAE4K,EAAEhqC,GAAG,GAAIg/B,IAAG8e,WAAW4I,SAAS,WAAW,IAAI,GAAIznB,GAAEmG,EAAE,EAAE4E,EAAE5K,EAAE3zB,IAAI,GAAGzL,EAAE8G,SAAS6/C,UAAUltC,EAAEuwB,EAAE4c,cAAoK,OAAlJ5mD,SAAQg+B,UAAU6oB,WAAWxkD,QAAQ,YAAW48B,EAAEj/B,EAAE8mD,cAAc7nB,EAAE8nB,UAAU,aAAa/nB,EAAEp4B,MAAM5F,QAAQokC,EAAEnG,EAAE+nB,KAAKhmD,SAAeyY,GAAG,MAAMA,KAAE2rB,EAAE3rB,GAAS2rB,EAAE,MAAMyB,MAAMogB,SAAS,SAAShoB,GAAG,IAAI,GAAGG,EAAEnuB,GAAG,UAAU,CAAC,GAAI00B,GACxf3G,EAAEI,EAAE3zB,IAAI,EAAGuzB,GAAEkoB,kBAAkBloB,EAAEkoB,kBAAkBjoB,EAAEA,IAAI0G,EAAE3G,EAAEmoB,kBAAkBxhB,EAAEyhB,UAAS,GAAIzhB,EAAE0hB,QAAQ,YAAYpoB,GAAG0G,EAAEohB,UAAU,YAAY9nB,GAAG0G,EAAE2hB,WAAW,MAAMnf,MAAMtE,OAAO,WAAWzE,EAAEwD,GAAG,eAAe,SAAS3D,GAAGG,EAAEp7B,KAAK,eAAei7B,EAAE5+B,SAAS4+B,EAAE3+B,OAAO8+B,EAAEp7B,KAAK,qBAAqBo7B,EAAEx4B,SAASg8B,GAAG3D,EAAEsoB,aAAaC,SAAS,aAAa,aAAaxoB,EAAEyoB,WAAW7kB,GAAG,uBAAuB,WAAW8kB,WAAW,WAAWtoB,EAAEuoB,UAAUC,SAAS,OAAOhlB,GAAG,cAAc,WAAWxD,EAAEp7B,KAAK,WAAU,KAAM4+B,GAAG,YAC7f,WAAWzD,IAAIH,EAAEp4B,OAAOw4B,EAAEp7B,KAAK,YAAYo7B,EAAEnC,QAAQ,UAAUmC,EAAEp7B,KAAK,WAAU,KAAM4+B,GAAG,YAAY,WAAWzD,EAAEH,EAAEp4B,QAAQg8B,GAAG,aAAa,SAASxD,IAAG,IAAKp/B,EAAE6nD,eAAe5oB,EAAEG,EAAEhE,QAAQksB,WAAW1kB,GAAG,gBAAgB,WAAW5iC,EAAE8nD,kBAAkB9iB,EAAE5iC,KAAK48B,EAAEp4B,QAAQo4B,EAAEp4B,IAAI,OAAOmhD,aAAa,WAAW,IAAI,GAAS3oB,GAAEJ,EAAEh/B,EAAEyZ,EAAXwlB,KAAaE,EAAE,EAAEA,EAAE6K,EAAEhpC,OAAOm+B,KAAKC,EAAEgL,EAAE4d,YAAYhe,EAAE2Z,OAAOxkB,MAAMH,EAAEI,EAAEra,QAAQnjB,WAAWC,QAAQ,eAAe,IAAI7B,EAAEo/B,EAAE6oB,UAAU7oB,EAAEA,EAAE8oB,YAAYjpB,EAAEpqB,KAAKm1B,EAAE2Z,OAAOxkB,IAAI1lB,GAAG0uC,MAAMne,EAAE2Z,OAAOxkB,GAAGpa,QAAQia,IACtfC,EAAEpqB,KAAK7U,GAAGo/B,EAAEJ,EAAE,IAAIA,IAAIC,EAAEpqB,KAAKm1B,EAAE2Z,OAAOxkB,GAAGt9B,QAAQ,yBAAyB,QAAuI,OAA9Ho9B,GAAEA,EAAE/lB,KAAK,IAAIO,IAAIwlB,EAAEA,EAAEp9B,QAAQ,GAAI0E,QAAO,IAAIkT,EAAE0uC,MAAM,MAAM1uC,EAAE0uC,MAAM,OAAO,SAAStmD,QAAQ,GAAI0E,QAAOkT,EAAE0uC,MAAM,KAAK1uC,EAAEsL,UAAiB,GAAIxe,QAAO04B,IAAImpB,cAAc,WAAWhpB,EAAEipB,IAAI,gDAAgDn0C,MAAM,KAAKgF,KAAK,YAAYtS,IAAI,SAASq4B,GAAG,GAAID,GAAEI,EAAEnuB,GAAG,SAAS,MAAM,MAAsE,OAA5D,GAAEkvB,UAAUn/B,QAAWo+B,EAAEJ,OAAOC,GAAEG,EAAEJ,GAAGC,GAAGD,EAAEI,GAAOJ,EAAEI,EAAEJ,KAAYA,GAAGspB,uBAAuB,SAASrpB,EAAED,GAAG,GAAIgL,GACrfhL,EAAEh+B,OAAOhB,EAAEo/B,EAAEp7B,KAAK,sBAAsByV,EAAEzZ,EAAEgB,MAAkJ,OAA3I,KAAIo+B,EAAEp7B,KAAK,iBAAiBhE,IAAIg/B,EAAEC,GAAGD,EAAE99B,MAAM,EAAE+9B,GAAGj+B,OAAOhB,EAAEkB,MAAM,EAAE+9B,GAAGj+B,OAAOhB,IAAIg/B,IAAIC,EAAEA,GAAGxlB,EAAEuwB,EAAE/K,GAAGD,EAAE99B,MAAM,EAAE+9B,GAAGj+B,OAAOhB,EAAEkB,MAAM,EAAE+9B,GAAGj+B,SAAgBi+B,GAAGwoB,UAAU,SAASznD,GAAGA,EAAEA,GAAGH,OAAOO,MAAM4+B,EAAE8e,UAAW,IAAI9T,GAAE5K,EAAEp7B,KAAK,eAAgB,SAAQi7B,EAAEspB,QAAQve,EAAEI,EAAEoe,YAAY,CAAC,GAAIxe,GAAEhL,EAAEypB,YAAYtpB,EAAEH,EAAE0nB,UAA8G,OAAnGgB,YAAW,SAASzoB,EAAEG,GAAGJ,EAAEioB,SAASjoB,EAAEspB,uBAAuBrpB,EAAEG,KAAK,GAAGD,EAAE6K,GAAGhL,EAAEp4B,IAAIojC,GAAGhL,EAAEioB,SAAS9nB,GAAUH,EAAE0pB,UAAU1oD,KAAKyoD,UAAU,SAASxpB,EAAEG,GAAG,GACtaqI,GAAE8G,EADwapP,KACpfwG,EAAE,SAASvG,EAAEJ,EAAEp4B,MAAMw4B,EAAE,GAAG3lB,EAAE,EAAEurB,EAAEgF,EAAEhpC,OAAOmpC,EAAE,EAAE3E,EAAEG,EAAE3kC,OAAOokC,EAAE,EAAEqF,EAAE,OAAOxF,IAASjlC,GAAE2oD,SAASle,EAAE,UAAUrF,KAAKqC,EAAE,EAAEhuB,EAAEurB,EAAE,EAAEmF,EAAE3E,EAAE,EAAE+I,EAAE,WAAW,SAAS90B,MAAM0wB,KAAK1C,EAAEzC,EAAE,EAAEuJ,EAAE,WAAW,MAAO90B,GAAEurB,GAAGmF,EAAE3E,GAAI,KAAI,GAAIZ,GAAE2J,KAAK,CAAC,GAAIrM,GAAE8H,EAAE2Z,OAAOlqC,GAAG2qB,EAAEuB,EAAEge,OAAOxZ,GAAG3C,EAAE4C,EAAE4d,YAAY9lB,EAAMsF,IAAEpD,EAAEtrB,MAAM0uB,EAAEziB,UAAUoa,EAAEsL,GAAGrG,GAAGoD,EAAE0gB,iBAAiBjjB,EAAEA,EAAExrB,EAAEA,IAAIguB,IAAIhuB,EAAEwrB,EAAEG,GAAGqC,IAAIxC,IAAIxrB,GAAG2rB,IAAI3rB,GAAG2rB,GAAGhB,IAAIQ,EAAEA,EAAE,OAAO4C,EAAEygB,UAAUxuC,GAAG2rB,EAAE+E,GAAG/E,GAAGoC,EAAEohB,UAAUzpB,EAAEsL,GAAGjD,EAAEohB,UAAUnvC,GAAG2rB,EAAE+E,GAAG/E,GAAGpG,EAAE8e,QAAQjpC,MAAM8wB,EAAEwE,EAAEM,EAAErG,EAAEpkC,EAAEwnC,EAAEziB,UAAUolB,GAAG/E,IAAWnG,GAAEE,EAAEsL,GAAGvI,GAAGkC,IAAIlC,EACpfiI,GAAG/E,EAAER,EAAE1C,EAAEzoB,GAAG2rB,GAAsD,MAAnDO,GAAEqE,EAAE2Z,OAAOlc,GAAGzC,IAAIQ,EAAE,GAAG4E,EAAE4d,YAAYriB,IAAIxG,EAAEtqB,KAAK8wB,GAAUxG,EAAEjmB,KAAK,KAAKwvC,UAAU,SAASzpB,GAAG,GAAIkL,GAAEnL,EAAEp4B,MAAM++B,EAAEwE,IAAIhL,EAAE6F,GAAGmF,EAAElL,EAAEG,EAAEp/B,GAAGyZ,EAAE,SAASwlB,EAAEG,EAAEJ,GAAG,kBAAoBh/B,GAAEi/B,IAAIG,GAAGp/B,EAAEi/B,GAAGiB,MAAM33B,KAAKy2B,GAAIvlB,GAAE,YAAW,IAAKksB,EAAEX,GAAGvrB,EAAE,cAAa,IAAKksB,EAAEX,GAAGvrB,EAAE,aAAa0wB,EAAEnpC,SAASgpC,EAAEhpC,OAAOgkC,GAAGvrB,EAAE,YAAY,EAAEulB,EAAE8e,QAAQ98C,QAAQmpC,EAAElL,EAAEG,EAAEJ,EAAE8e,QAAQ99C,KAAMo/B,GAAEH,EAAEG,EAAG,IAAqB4F,GAAjBoF,EAAE7hC,KAAK42B,EAAEH,EAAEp4B,KAAQojC,GAAE,kBAAoBA,GAAEA,EAAEhL,EAAEp4B,MAAM,OAAOw4B,EAAEp/B,GAAGgqC,EAAEI,EAAE9N,KAAK0N,EAAEI,EAAEtK,QAAQ9/B,EAAEoqC,EAAE7iC,OAAO,WAAW,GAAI03B,GAAED,EAAE0nB,UACxb,OADmc1nB,GAAEopB,gBAC1eppB,EAAEp4B,IAAIwjC,EAAEye,eAAe7pB,EAAEioB,SAAShoB,GAAUG,GAAGgL,EAAEye,YAAY,WAAW,MAAO7pB,GAAEypB,WAAU,IAAKre,EAAE0e,aAAa,SAAS7pB,GAAG,MAAOD,GAAEypB,WAAU,EAAGxpB,IAAImL,EAAElJ,KAAK,SAAS/B,GAAwN,GAArNA,EAAEA,IAAG,EAAGn/B,EAAEA,MAAMoqC,EAAE0d,gBAAgB7oB,EAAEsoB,aAAaO,gBAAgB1d,EAAEoe,WAAWvpB,EAAEsoB,aAAaiB,WAAWpe,EAAE4d,YAAY/oB,EAAEhE,UAAUgE,EAAEsoB,aAAaS,YAAYhoD,EAAEgoD,aAAa5d,EAAEnL,EAAEhE,QAAO,KAAMmP,EAAEpqC,GAAGglC,EAAEhG,EAAE+oB,eAAkB5oB,EAAEH,EAAE6E,SAAS7E,EAAEp4B,IAAIo4B,EAAEypB,iBAAiB,CAACzoD,EAAE+oD,aAAa3pB,EAAE1tB,KAAK,cAAc1R,EAAE+oD,aAAa3pB,EAAEp7B,KAAK,SAASo7B,EAAE1tB,KAAK,eACjf,OAAOytB,EAAE,CAAE,KAAI,GAAIgL,IAAE,EAAGhL,EAAE6K,EAAEhpC,OAAOm+B,IAAI,CAAC,GAAIqG,GAAE4E,EAAE4d,YAAYhe,EAAE2Z,OAAOxkB,GAAI,IAAGqG,GAAGA,EAAE0iB,UAAU,CAAC/d,GAAE,CAAG,QAAOA,GAAG/K,EAAE1tB,KAAK,YAAYs4B,EAAEhpC,QAAQg+B,EAAEopB,gBAAgBppB,EAAE6E,SAAS1E,EAAEH,EAAE0nB,WAAW1nB,EAAEp4B,IAAIo4B,EAAEypB,aAAazpB,EAAEioB,SAAS9nB,KAAKiL,EAAElJ,MAAM9B,EAAEnuB,GAAG,UAAWguB,GAAE+pB,eAAgB,IAAI7pB,GAAE,WAAW,GAAIC,GAAEH,EAAE12B,MAAM42B,KAAKn/B,EAAEo/B,EAAE1tB,KAAK,YAAsL,IAAzK0tB,EAAE1tB,KAAK,uBAAuBytB,EAAEwpB,SAAQ,GAAIvpB,EAAE1tB,KAAK,+BAA+BytB,EAAE2oB,iBAAgB,GAAI,SAAS1oB,EAAE1tB,KAAK,6BAA6BytB,EAAE0oB,eAAc,GAAOriB,EAAEpG,EAAEp/B,EAAEm/B,GAAG,MAAOC,GAAEp7B,KAAK,OAChgB,GAAImmC,GAAE5hC,KAAKvI,EAAEm/B,KAAKqG,EAAE,SAASpG,EAAED,EAAEn/B,GAAGA,EAAEA,KAAM,IAAIg/B,GAAEC,EAAEG,GAAGp7B,KAAK,QAAQgmC,EAAE//B,KAAKC,SAAUk1B,GAAEH,EAAEG,GAAGx4B,OAAOq4B,EAAEG,GAAG4nB,MAAO,KAAI,MAAM,kBAAoB7nB,KAAIA,EAAEA,EAAEC,IAAI,gBAAkBJ,IAAGgL,EAAEhL,EAAEc,WAAWkK,EAAEhqC,IAAIg/B,EAAE1C,OAAO6C,EAAE,MAAMoP,MAAMvJ,EAAE,SAAS/F,GAAG,GAAoCE,GAAhCC,EAAEt4B,SAASmiD,cAAc,MAAuF,OAA9EhqB,GAAE,KAAKA,EAAEE,EAAEF,IAAKG,GAAED,IAAIC,EAAE/3B,aAAa43B,EAAE,WAAWE,EAAE,kBAAoBC,GAAEH,IAAWE,EAAGF,GAAEmC,GAAG9E,KAAK,SAAS8C,EAAED,GAAGA,EAAEA,KAAM,IAAIn/B,GAAEuI,KAAKxF,SAASi8B,EAAEC,EAAEsoB,aAAavd,EAAEhL,EAAEkqB,cAAclqB,EAAEG,EAAEgqB,aAAanqB,EAAEmqB,YAAYnkB,EAAE,WAAW,GAAGQ,EAAEj9B,KAAK62B,EACnfD,GAAG,MAAOF,GAAE12B,MAAMvE,KAAK,OAAO,GAAImmC,GAAE5hC,KAAK62B,EAAED,IAA+I,OAA1IF,GAAE12B,MAAM6gD,KAAKpkB,GAAGhlC,GAAG,KAAKA,GAAGg/B,IAAIqqB,cAAcpqB,EAAE+pB,aAAahpD,IAAIi/B,EAAE+pB,aAAahpD,GAAGspD,YAAY,WAAWrqB,EAAEn4B,UAAUy1B,KAAKv8B,GAAGopD,KAAKpkB,IAAIgF,IAAWzhC,MAAM02B,EAAEmC,GAAGmoB,OAAO,SAAStqB,GAAG,MAAO12B,MAAKvE,KAAK,QAAQ8kD,aAAa7pB,IAAIA,EAAEmC,GAAGooB,OAAO,WAA6F,MAAlFH,eAAcpqB,EAAE+pB,aAAazgD,KAAKxF,iBAAkBk8B,GAAE+pB,aAAazgD,KAAKxF,UAAiBwF,KAAK6gD,KAAK,WAAW,GAAIhqB,GAAEH,EAAE12B,MAAMvE,KAAK,OAAQo7B,IAAGA,EAAE73B,SAASkiD,WAAW,WAAWxqB,EAAEmC,GAAGsoB,SAAS,WAAW,MAAOnhD,MAAKvE,KAAK,QAAQ6kD,eAC/f5pB,EAAE0qB,cAAc,SAASvqB,GAAGA,EAAEA,GAAGH,EAAEsoB,aAAaqC,cAAcxqB,YAAaH,GAAEG,EAAEH,EAAEG,IAAI/mB,OAAO4mB,EAAEsoB,aAAasC,cAAcT,KAAKjqB,IAAI6F,GAAG4kB,aAAa,oBAAoBC,aAAa,eAAeC,UAAS,EAAGZ,cAAc,IAAIC,aAAY,EAAG3B,UAAU,aAAaplD,KAAKvC,OAAOm+B,UAAUC,YAAY+G,EAAE,SAAS+kB,eAAc,EAAGvB,YAAY,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAIR,aAAagC,GAAGjlC,QAAQ,MAAMklC,GAAGllC,QAAQ,KAAKkjC,UAAS,GAAIiC,KAAKnlC,QAAQ,KAAKmjC,WAAU,GAAIrhB,GAAG9hB,QAAQ,eAAe2rB,GAAG3rB,QAAQ,cAC9eka,EAAEsoB,aAAatoB,EAAEsoB,iBAAiBviB,EAAE/F,EAAEsoB,aAAatoB,EAAEhE,QAAO,KAAM+J,EAAE/F,EAAEsoB,cAAcviB,EAAE8kB,UAAU7qB,EAAE0qB,gBAAgBL,YAAY,WAAWrqB,EAAEsoB,aAAawC,eAAe9qB,EAAE0qB,iBAAiB3kB,EAAEkkB,gBAAgBrpD,OAAOyD,OAAOzD,OAAOsqD,OChB5N5pD,OAAO86B,UAAU+uB,WAElB7pD,OAAO86B,UAAU+uB,SAAW,SAAUC,OAAQC,OAE1C,YAOA,OANqB,gBAAVA,SAEPA,MAAQ,KAIRA,MAAQD,OAAOrpD,OAASuH,KAAKvH,SAMtBuH,KAAKlG,QAAQgoD,OAAQC,aAOxC,IAAIC,UACJA,QAAOC,QAAU,QCzBjB,IAAIzgD,UAAWA,YAEfzG,QAAO23B,OAAOlxB,UACVgF,WAAY,SAAUsJ,QASlB,MARAA,QAASA,QAAU,GAEfA,SAEAA,OAAS,qBAAuBA,QAI7B,0BAA4BlU,KAAKoU,OAASF,QAErD5E,iBAAkB,SAAUjF,IACxB,MAAO,0BAA4BrK,KAAKoU,OAAS,IAAM/J,IAE3Di8C,mBAAoB,SAAU7pD,OAC1B,MAAO,6BAA+BuD,KAAKoU,OAAS,yBAA2B3X,OAEnF0U,SAAU,SAAUklB,QAEhB,MADAA,QAASA,QAAU,GACZ,wBAA0Br2B,KAAKoU,OAAS,IAAMiiB,QAEzDC,iBAAkB,SAAUD,QAExB,MADAA,QAASA,QAAU,GACZ,mCAAqCr2B,KAAKoU,OAASiiB,QAE9DvkB,mBAAoB,SAAUukB,QAE1B,MADAA,QAASA,QAAU,GACZ,kCAAoCA,QAE/CkwB,YAAa,SAAU3kD,SACnB,GAAIy0B,QAASz0B,SAAW,EACxB,OAAO,4BAA8B5B,KAAKoU,OAASiiB,SflC3D,IAAI7b,kBAAkB,EAClB/O,QAAS,EACTC,gBAAiB,EACjBqN,mBKHJza,GAAEqE,UAAU6jD,MAAM,WAEdloD,EAAE,aAAamgC,GAAG,QAAS,WACvBngC,EAAE,oBAAoBmP,OACtBnP,EAAE,sBAAsBg/B,WAG5Bh/B,EAAE,sBAAsBmP,OAExBnP,EAAE,iBAAiBmgC,GAAG,QAAS,WAC3BngC,EAAE,yBAAyBmP,SAG/BnP,EAAE,eAAemgC,GAAG,QAAS,WACzBngC,EAAE,gBAAgBmP,SAGtBnP,EAAE,UAAUmgC,GAAG,QAAS,WACpBngC,EAAE,kBAAkBmP,SAGxBnP,EAAE,aAAamgC,GAAG,QAAS,WACvBngC,EAAE,qBAAqBmP,OACvBnP,EAAE,0BAA0BmP,SAGhCnP,EAAE,oBAAoBmgC,GAAG,QAAS,WAC9BngC,EAAE,4BAA4BmP,SAGlCnP,EAAE,cAAcmgC,GAAG,QAAS,WACxBngC,EAAE,iBAAiBmP,SAGvBnP,EAAE,aAAamgC,GAAG,QAAS,WACvBngC,EAAE,qBAAqBmP,SAG3BnP,EAAE,iBAAiBmgC,GAAG,QAAS,WAC3BngC,EAAE,yBAAyBmP,SAG/BnP,EAAE,gBAAgBmgC,GAAG,QAAS,WAC1BngC,EAAE,wBAAwBmP,SAE9BnP,EAAE,aAAamgC,GAAG,QAAS,WACvBngC,EAAE,qBAAqBmP,SAG3BnP,EAAE,gBAAgBmgC,GAAG,WAAY,WAC7Br6B,KAAKqiD,gBAAgB,cAGzBnoD,EAAE,yBAAyBmgC,GAAG,WAAY,WACtC,GAAIioB,OAAQpoD,EAAE8F,KACdsiD,OAAMjkD,IAAIikD,MAAMjkD,MAAM1D,UAG1BT,EAAE,yBAAyB04B,MAAM,SAAUn7B,GACvCA,EAAEC,iBACFwC,EAAE,aAAa63B,SACf73B,EAAE8F,MAAMmJ,KAAK,WAAY,cAG7BjP,EAAE,+BAA+B04B,MAAM,WACnC14B,EAAE,kBAAkB63B,SACpB73B,EAAE8F,MAAMmJ,KAAK,WAAY,cAG7BjP,EAAE,wCAAwC04B,MAAM,WACxC14B,EAAE8F,MAAM0I,GAAG,YAEXxO,EAAE,yBAAyBq/B,WAAW,YAItCr/B,EAAE,yBAAyBiP,KAAK,WAAY","file":"common.js","sourcesContent":["\r\n// === Send to print === //\r\nfunction SendToPrint() {\r\n window.print();\r\n}\r\n\r\n// === Prevent Paste Event === //\r\nfunction PreventPasteEvent(e) {\r\n e.preventDefault();\r\n}\r\n\r\nfunction myKeyPress(e) {\r\n var keynum;\r\n\r\n // IE\r\n if (window.event) {\r\n\r\n keynum = e.keyCode;\r\n // Opera/Safari/Chrome\r\n } else if (e.which) {\r\n\r\n keynum = e.which;\r\n\r\n }\r\n\r\n return String.fromCharCode(keynum);\r\n}\r\n\r\n// Return the value of the input\r\n// Params: \r\n// - Object\r\n// - Event\r\nfunction GetInputValue(i, e) {\r\n var inputValue = i.value;\r\n var keyPressed = myKeyPress(e);\r\n\r\n inputValue += keyPressed;\r\n return inputValue;\r\n}\r\n\r\nfunction MaxLengthCheck(object, event) {\r\n var inputValue = GetInputValue(object, event);\r\n if (inputValue.length > object.max.length) {\r\n\r\n object.value = object.value.slice(0, object.max.length);\r\n\r\n }\r\n}\r\n\r\n// Set the input value at min and max attribute\r\nfunction InputValuesCheck(object, event) {\r\n var currentValue = object.value;\r\n var newValue = parseInt(GetInputValue(object, event));\r\n var maxValue = parseInt(object.max, 10);\r\n var minValue = parseInt(object.min, 10);\r\n var sel = window.getSelection().toString();\r\n\r\n if (sel === currentValue) {\r\n\r\n return true;\r\n\r\n } else if (sel) {\r\n\r\n newValue = currentValue.replace(sel, '');\r\n newValue = parseInt((newValue + event.key), 10);\r\n if (newValue >= maxValue || newValue <= minValue) {\r\n\r\n event.preventDefault();\r\n\r\n }\r\n return true;\r\n }\r\n\r\n if (newValue > maxValue || newValue < minValue) {\r\n\r\n event.preventDefault();\r\n\r\n }\r\n}\r\n\r\n// Set the default value on inputs if is empty value\r\nfunction SetInputDefault(object) {\r\n var inputValue = object.value;\r\n var minValue = parseInt(object.min);\r\n\r\n if (inputValue === '') {\r\n\r\n object.value = minValue;\r\n\r\n }\r\n}\r\n\r\nfunction IsNumeric(e, object) {\r\n var event = e || window.event;\r\n var key = event.keyCode || event.which;\r\n if (event.keyCode === 8 || event.keyCode === 37 || event.keyCode === 39 ||\r\n event.keyCode === 36 || event.keyCode === 35 || event.keyCode === 9 || event.keyCode === 46 ||\r\n (event.ctrlKey && key === 97)\r\n ) {\r\n\r\n event.returnValue = true;\r\n return true;\r\n\r\n }\r\n\r\n key = String.fromCharCode(key);\r\n var regex = /[0-9]|\\./;\r\n if (!regex.test(key) ||\r\n (object && key === '.' && object.value === '') ||\r\n (object && key === '.' && object.value.indexOf('.') >= 0)) {\r\n\r\n event.returnValue = false;\r\n if (event.preventDefault) {\r\n\r\n event.preventDefault();\r\n\r\n }\r\n\r\n }\r\n}\r\n\r\nfunction OnlyNumbers(e) {\r\n var event = e || window.event;\r\n var key = event.keyCode || event.which;\r\n if (event.keyCode === 8 || event.keyCode === 37 || event.keyCode === 38 ||\r\n event.keyCode === 39 || event.keyCode === 40 || event.keyCode === 36 ||\r\n event.keyCode === 35 || event.keyCode === 9 || (event.keyCode === 46 && event.key != '.') ||\r\n (event.ctrlKey && key === 97)) {\r\n\r\n return true;\r\n\r\n } else if (key < 48 || key > 57) {\r\n\r\n return false;\r\n\r\n } else {\r\n\r\n return true;\r\n\r\n }\r\n}\r\n\r\nfunction MyScrollTo(e, duration) {\r\n $('html, body').animate({\r\n scrollTop: $(e).offset().top\r\n }, duration);\r\n}\r\n\r\nfunction ScrollInElement(selector, duration) {\r\n $(selector).animate({ scrollTop: 0 }, duration);\r\n}\r\n\r\n$(function () {\r\n $('a[scrollTo]').click(function () {\r\n var target = $($(this).attr('scrollTo'));\r\n\r\n if (target.length) {\r\n\r\n $('html, body').animate({\r\n scrollTop: target.offset().top\r\n }, 500);\r\n return false;\r\n\r\n }\r\n });\r\n});\r\n\r\nString.prototype.removeDiacritics = function () {\r\n var diacritics = [\r\n [/[\\300-\\306]/g, 'A'],\r\n [/[\\340-\\346]/g, 'a'],\r\n [/[\\310-\\313]/g, 'E'],\r\n [/[\\350-\\353]/g, 'e'],\r\n [/[\\314-\\317]/g, 'I'],\r\n [/[\\354-\\357]/g, 'i'],\r\n [/[\\322-\\330]/g, 'O'],\r\n [/[\\362-\\370]/g, 'o'],\r\n [/[\\331-\\334]/g, 'U'],\r\n [/[\\371-\\374]/g, 'u'],\r\n [/[\\321]/g, 'N'],\r\n [/[\\361]/g, 'n'],\r\n [/[\\307]/g, 'C'],\r\n [/[\\347]/g, 'c']\r\n ];\r\n var _self = this;\r\n for (var i = 0; i < diacritics.length; i++) {\r\n\r\n _self = _self.replace(diacritics[i][0], diacritics[i][1]);\r\n\r\n }\r\n return _self;\r\n};\r\n\r\nfunction SanitizeString(str) {\r\n str = str.trim()\r\n .removeDiacritics()\r\n .replace(/[^a-z0-9 \\.,_-]/gim, '')\r\n .replace(/[^a-z0-9\\.,_-]/gim, '-')\r\n .trim();\r\n\r\n return str;\r\n}\r\n\r\nfunction CleanString(str) {\r\n str = str.trim()\r\n .replace(/&/g, '')\r\n .replace(/</g, '')\r\n .replace(/>/g, '')\r\n .replace(/"/g, '')\r\n .replace(/'/g, '')\r\n .replace(/<\\/?[^>]+(>|$)/g, '');\r\n\r\n return str;\r\n}\r\n\r\nfunction SetFocus(selector) {\r\n jQuery(selector).focus();\r\n}\r\n\r\nfunction MaxAttrCheck(object) {\r\n var inputValue = parseFloat(object.value);\r\n var maxValue = parseFloat(object.max);\r\n if (inputValue > maxValue) {\r\n\r\n object.value = object.value.slice(0, object.value.length - 1);\r\n\r\n }\r\n}\r\n\r\nfunction MaxLengthAttrCheck(object) {\r\n if (object.value.length > object.maxLength) {\r\n\r\n object.value = object.value.slice(0, object.maxLength);\r\n\r\n }\r\n}\r\n\r\nfunction ZeroCheck(object) {\r\n if (object.value.length > 1 && object.value === '00') {\r\n\r\n object.value = '0';\r\n\r\n }\r\n}\r\n\r\nfunction zeroAndMaxCheck(object) {\r\n ZeroCheck(object);\r\n MaxLengthAttrCheck(object);\r\n MaxAttrCheck(object);\r\n}\r\n\r\nfunction GetKendoWindow(selector) {\r\n return kendo.jQuery(selector).data('kendoWindow');\r\n}\r\nfunction tokenizeHeader(type) {\r\n Shop = Shop || {};\r\n var _types = ['POST', 'PUT', 'PATCH', 'DELETE'];\r\n var _token = Shop.AntiforgeryToken;\r\n type = type.toUpperCase();\r\n return (_types.indexOf(type) !== -1) ? { 'RequestVerificationToken': _token } : {};\r\n};\r\n// jscs:disable\r\nvar CommonMethods = (function ($, context) {\r\n // jscs:enable\r\n /// \r\n /// Perform ajax request call\r\n /// \r\n /// Url to perform request\r\n /// Data to send to the server\r\n /// Request type (GET, PUT, PATCH, DELETE, etc)\r\n /// Data type for request, default 'JSON'\r\n /// \r\n var process = function (url, data, type, dataType, contentType, xhrFields, async) {\r\n type = type || 'GET';\r\n dataType = dataType || 'JSON';\r\n contentType = contentType || 'application/json; charset=utf-8';\r\n headers = tokenizeHeader(type);\r\n xhrFields = xhrFields || {};\r\n async = typeof (async) != \"undefined\" ? async : true;\r\n return $.ajax({\r\n cache: false,\r\n type: type,\r\n dataType: dataType,\r\n async: async,\r\n url: url,\r\n data: data,\r\n headers: headers,\r\n xhrFields: xhrFields,\r\n contentType: contentType\r\n });\r\n };\r\n /// \r\n /// Added UI Spinner to certain element, the entire element will be blocked with an spinner inside it.\r\n /// \r\n /// jQuery Element to which will be append loading spinner.\r\n /// Either to show spinner or remove it.\r\n /// Spinner size, available values 'small', 'large', 'hl', 'small hl' and 'large hl'.\r\n /// \r\n var uiprogress = function (selector, show, size) {\r\n var container = $(selector);\r\n var mask = container.find('.k-loading-mask');\r\n var support = kendo.support;\r\n var browser = support.browser;\r\n var isRtl;\r\n var leftRight;\r\n var webkitCorrection;\r\n var containerScrollLeft;\r\n var loadingImage;\r\n var imageHeight;\r\n var imageWidth;\r\n size = size || '';\r\n\r\n if (show) {\r\n\r\n if (!mask.length) {\r\n\r\n isRtl = support.isRtl(container);\r\n leftRight = isRtl ? 'right' : 'left';\r\n containerScrollLeft = container.scrollLeft();\r\n webkitCorrection = browser.webkit ?\r\n (!isRtl ? 0 : container[0].scrollWidth - container.width() - 2 * containerScrollLeft)\r\n : 0;\r\n container.css('position', 'relative');\r\n mask = $('
')\r\n .width('100%').height('100%')\r\n .css('top', container.scrollTop())\r\n .css(leftRight, Math.abs(containerScrollLeft) + webkitCorrection)\r\n .prependTo(container);\r\n\r\n loadingImage = container.find('.k-loading-image');\r\n imageWidth = loadingImage.width();\r\n imageHeight = loadingImage.height();\r\n\r\n loadingImage.css({\r\n 'left': ((mask.width() / 2) - (imageWidth / 2)),\r\n 'top': ((mask.height() / 2) - (imageHeight))\r\n });\r\n\r\n }\r\n\r\n } else if (mask) {\r\n\r\n mask.fadeOut(150, function () {\r\n mask.remove();\r\n container.css('position', '');\r\n });\r\n\r\n }\r\n };\r\n /// \r\n /// Trgiger an event\r\n /// \r\n /// css selector\r\n /// the event to trigger\r\n /// \r\n var trigger = function (selector, event) {\r\n return $(selector).trigger(event);\r\n };\r\n\r\n /// \r\n /// Init Kendo Validator\r\n /// \r\n /// valid jquery element\r\n /// Object with kendo custom messages\r\n /// Object with kendo custom rules \r\n /// string template to display errors\r\n /// \r\n var kendoValidator = function (element, kendomessages, kendorules, kendoerrorTemplate) {\r\n if (element.length > 0) {\r\n element.kendoCustomValidator({\r\n messages: kendomessages,\r\n rules: kendorules,\r\n errorTemplate: kendoerrorTemplate\r\n });\r\n }\r\n };\r\n\r\n // get Kendo Modal Window\r\n var dataKendoValidator = function (selector) {\r\n return kendo.jQuery(selector).data('kendoCustomValidator');\r\n };\r\n\r\n /// \r\n /// Get an element\r\n /// \r\n /// css selector\r\n /// \r\n var getBySelector = function (selector) {\r\n return $(selector);\r\n };\r\n\r\n return {\r\n ProcessRequest: process,\r\n Progress: uiprogress,\r\n TriggerEvent: trigger,\r\n KValidator: kendoValidator,\r\n GetKendoValidator: dataKendoValidator,\r\n GetElement: getBySelector,\r\n };\r\n})(jQuery, this);\r\n\r\nvar Shop = Shop || {};\r\n\r\nShop.Browser = {\r\n\r\n //simple dirty mobile OS detection\r\n isMobile: {\r\n Android: function () {\r\n return navigator.userAgent.match(/Android/i);\r\n },\r\n BlackBerry: function () {\r\n return navigator.userAgent.match(/BlackBerry/i);\r\n },\r\n iOS: function () {\r\n return navigator.userAgent.match(/iPhone|iPad|iPod/i);\r\n },\r\n Opera: function () {\r\n return navigator.userAgent.match(/Opera Mini/i);\r\n },\r\n Windows: function () {\r\n return navigator.userAgent.match(/IEMobile/i);\r\n },\r\n any: function () {\r\n return (this.Android() || this.BlackBerry() || this.iOS() || this.Opera() || this.Windows());\r\n }\r\n },\r\n\r\n //simple dirty browser detection\r\n whatBrowser: {\r\n Chrome: function () {\r\n return navigator.userAgent.match(/Chrome/i);\r\n },\r\n Firefox: function () {\r\n return navigator.userAgent.match(/Firefox/i);\r\n },\r\n Safari: function () {\r\n return navigator.userAgent.match(/Safari/i);\r\n },\r\n Explorer: function () {\r\n return navigator.userAgent.match(/MSIE/i);\r\n },\r\n //detection for the 4 major supported browsers\r\n all: function () {\r\n return (this.Chrome() || this.Firefox() || this.Safari() || this.Explorer());\r\n }\r\n },\r\n\r\n dimensions: {\r\n Height: function () {\r\n return $(window).height();\r\n },\r\n Width: function () {\r\n return $(window).width();\r\n }\r\n\r\n }\r\n};\r\n/* jshint ignore:start */\r\n// jscs:disable\r\nArray.prototype.indexOf || (Array.prototype.indexOf = function (d, e) {\r\n var a;\r\n if (null === this) throw new TypeError('\"this\" is null or not defined');\r\n var c = Object(this),\r\n b = c.length >>> 0;\r\n if (0 === b) return -1;\r\n a = +e || 0;\r\n Infinity === Math.abs(a) && (a = 0);\r\n if (a >= b) return -1;\r\n for (a = Math.max(0 <= a ? a : b - Math.abs(a), 0); a < b;) {\r\n if (a in c && c[a] === d) return a;\r\n a++\r\n }\r\n return -1\r\n});\r\n\r\nElement.prototype.remove || (Element.prototype.remove = function () {\r\n this.parentElement.removeChild(this);\r\n});\r\n\r\nNodeList.prototype.remove || (NodeList.prototype.remove = HTMLCollection.prototype.remove = function () {\r\n for (var i = this.length - 1; i >= 0; i--) {\r\n if (this[i] && this[i].parentElement) {\r\n this[i].parentElement.removeChild(this[i]);\r\n }\r\n }\r\n});\r\n// jscs:enable\r\n/* jshint ignore:end */\r\n\r\nfunction GetDisplayName(data) {\r\n var _name = '';\r\n\r\n _name = data.recipient ||\r\n (data.firstName ? data.firstName + (data.lastName ? ' ' + data.lastName : '') : '');\r\n\r\n return (_name ? _name += ' ' : '');\r\n};\r\n\r\nfunction GetFullAddress(data) { \r\n var _street = ((data.line1 && data.line1 !== null) ? data.line1 + ' ' : '') +\r\n ((data.line2 && data.line2 !== null) ? data.line2 + ' ' : '') +\r\n ((data.line3 && data.line3 !== null) ? data.line3 + ' ' : '');\r\n\r\n var _usaddress = ((data.city && data.city !== null) ? data.city + ', ' : '') +\r\n ((data.stateProvinceTerritory && data.stateProvinceTerritory !== null) ? data.stateProvinceTerritory + ' ' : '') +\r\n ((data.postalCode && data.postalCode !== null) ? data.postalCode : '');\r\n\r\n var countyDistrictOther = ((data.countyDistrict && data.countyDistrict !== null && data.countyDistrict != Shop.Localization.countyDistrictOption) ? data.countyDistrict + ', ' : '');\r\n\r\n if (data.country != 'ID') {\r\n if (_street) { _street += '
'; }\r\n }\r\n\r\n if (data.country === 'US') {\r\n return _street + _usaddress;\r\n }\r\n\r\n if (data.country === 'JP') {\r\n var _usaddressJP = ((data.postalCode && data.postalCode !== null) ? data.postalCode + ', ' : '') +\r\n ((data.stateProvinceTerritory && data.stateProvinceTerritory !== null) ? data.stateProvinceTerritory + ', ' : '') +\r\n ((data.city && data.city !== null) ? data.city + ', ' : '') +\r\n ((data.countyDistrict && data.countyDistrict !== null) ? data.countyDistrict + ', ' : '');\r\n\r\n var _streetJP = ((data.line1 && data.line1 !== null) ? data.line1 + ', ' : '') +\r\n ((data.line2 && data.line2 !== null) ? data.line2 + ' ' : '') ;\r\n \r\n return _usaddressJP + '
' + _streetJP;\r\n }\r\n\r\n if (data.country === 'PE') {\r\n return _street + \r\n (countyDistrictOther) +\r\n ((data.city && data.city !== null) ? data.city + ', ' : '') +\r\n ((data.stateProvinceTerritory && data.stateProvinceTerritory !== null) ? data.stateProvinceTerritory + ', ' : '') +\r\n ((data.line4 && data.line4 !== null) ? data.line4 + ', ' : '')+\r\n ((data.postalCode && data.postalCode !== null) ? data.postalCode : '');\r\n }\r\n \r\n if (data.country === 'ID') {\r\n return _street +','+ '
'+ \r\n ((data.line4 && data.line4 !== null) ? data.line4 + ', ' : '') +\r\n ((data.countyDistrict && data.countyDistrict !== null) ? data.countyDistrict + ', ' : '') + '
'+\r\n ((data.city && data.city !== null) ? data.city + ', ' : '') +\r\n ((data.stateProvinceTerritory && data.stateProvinceTerritory !== null) ? data.stateProvinceTerritory + ', ' : '') + \r\n ((data.postalCode && data.postalCode !== null) ? data.postalCode : '');\r\n }\r\n\r\n if (data.country === 'AU') {\r\n return \"\" + \r\n ((data.line3 && data.line3 !== null) ? data.line3 + ', ' : '') +\r\n ((data.line4 && data.line4 !== null) ? data.line4 + ',
' : '') +\r\n ((data.line2 && data.line2 !== null) ? data.line2 + ', ' : '') +\r\n ((data.line1 && data.line1 !== null) ? data.line1 + ',
' : '') +\r\n ((data.city && data.city !== null) ? data.city + ', ' : '') +\r\n ((data.stateProvinceTerritory && data.stateProvinceTerritory !== null) ? data.stateProvinceTerritory + ', ' : '') +\r\n ((data.postalCode && data.postalCode !== null) ? data.postalCode : '');\r\n }\r\n\r\n if (data.country === 'NL') {\r\n return \"\" +\r\n ((data.line1 && data.line1 !== null) ? data.line1 + ', ' : '') +\r\n ((data.line2 && data.line2 !== null) ? data.line2 + ',
' : '') +\r\n ((data.city && data.city !== null) ? data.city + ', ' : '') +\r\n 'Nederland,' + \r\n ((data.postalCode && data.postalCode !== null) ? data.postalCode : '');\r\n }\r\n\r\n if (data.country === 'TR') {\r\n var address = ((data.countyDistrict && data.countyDistrict !== null) ? data.countyDistrict + ' ' : '') +\r\n ((data.line1 && data.line1 !== null) ? data.line1 + '' : '') + '
' +\r\n ((data.line2 && data.line2 !== null) ? data.line2 + ' ' : '') + '
' +\r\n ((data.stateProvinceTerritory && data.stateProvinceTerritory !== null) ? data.stateProvinceTerritory + ' ' : '') +\r\n ((data.city && data.city !== null) ? data.city + ' ' : '') +\r\n ((data.postalCode && data.postalCode !== null) ? data.postalCode : '');\r\n return address;\r\n\r\n }\r\n\r\n return _street +\r\n (countyDistrictOther) +\r\n ((data.city && data.city !== null) ? data.city + ', ' : '') +\r\n ((data.stateProvinceTerritory && data.stateProvinceTerritory !== null) ? data.stateProvinceTerritory + ' ' : '') +\r\n ((data.postalCode && data.postalCode !== null) ? data.postalCode : '');\r\n \r\n}\r\n\r\nfunction GetPrimaryAddress(data) {\r\n\r\n if (data.length > 0) {\r\n var i = 0;\r\n\r\n for (; i < data.length; i++) {\r\n\r\n if (data[i].isPrimary) {\r\n\r\n return data[i];\r\n\r\n }\r\n\r\n }\r\n\r\n return data[0];\r\n\r\n }\r\n\r\n return {};\r\n}\r\nfunction SpecialChars(e, object) {\r\n\r\n var _key = e.which || e.keyCode || 0;\r\n var _code = !e.charCode ? e.which : e.charCode;\r\n\r\n var _allowedKeys = [8, 46]; // Left / Right / Backspace, Delete keys\r\n if (_allowedKeys.indexOf(_key) !== -1 || !_code) {\r\n\r\n return true;\r\n\r\n }\r\n\r\n if (object.value.length == 0 && _key == 32) {\r\n\r\n e.preventDefault();\r\n return false;\r\n\r\n }\r\n\r\n var regex = new RegExp(\"^[a-zA-ZÀ-ž\\s ]+$\");\r\n var str = String.fromCharCode(_code);\r\n if (regex.test(str)) {\r\n\r\n return true;\r\n\r\n }\r\n\r\n e.preventDefault();\r\n return false;\r\n}\r\n/// \r\n/// Validate keypress input based on sent regex, if input doesn't match regex, it will prevent default.\r\n/// \r\n/// Input event\r\n/// Input itself\r\n/// \r\nfunction OnInputKeyPress(e, object) {\r\n\r\n if (object.value.length == 0 && e.which == 32) {\r\n\r\n e.preventDefault();\r\n return false;\r\n\r\n }\r\n\r\n var _pattern = object.data('pattern');\r\n\r\n if (!_pattern) {\r\n\r\n return true;\r\n\r\n }\r\n\r\n var regex = new RegExp(_pattern);\r\n var str = String.fromCharCode(!e.charCode ? e.which : e.charCode);\r\n if (regex.test(str)) {\r\n\r\n return true;\r\n\r\n }\r\n\r\n e.preventDefault();\r\n return false;\r\n}\r\n(function ($) {\r\n if (kendo.ui.hasOwnProperty('Validator')) {\r\n\r\n var CustomValidator = kendo.ui.Validator.extend({\r\n options: {\r\n name: 'CustomValidator'\r\n },\r\n hideErrors: function () {\r\n var that = this;\r\n var _class = 'k-invalid';\r\n var element = that.element;\r\n if (element.is('input')) {\r\n\r\n element.removeClass(_class);\r\n } else {\r\n\r\n element.find('.' + _class).removeClass(_class);\r\n }\r\n }\r\n });\r\n kendo.ui.plugin(CustomValidator);\r\n\r\n }\r\n})(jQuery);\r\n// Reference http://stackoverflow.com/questions/1226574/disable-pasting-text-into-html-form\r\n// Register onpaste on inputs and textareas in browsers that don't\r\n// natively support it.\r\n(function () {\r\n var onload = window.onload;\r\n\r\n window.onload = function () {\r\n if (typeof onload == \"function\") {\r\n onload.apply(this, arguments);\r\n }\r\n\r\n var fields = [];\r\n var inputs = document.getElementsByTagName(\"input\");\r\n var textareas = document.getElementsByTagName(\"textarea\");\r\n\r\n for (var i = 0; i < inputs.length; i++) {\r\n fields.push(inputs[i]);\r\n }\r\n\r\n for (var i = 0; i < textareas.length; i++) {\r\n fields.push(textareas[i]);\r\n }\r\n\r\n for (var i = 0; i < fields.length; i++) {\r\n var field = fields[i];\r\n\r\n if (typeof field.onpaste != \"function\" && !!field.getAttribute(\"onpaste\")) {\r\n field.onpaste = eval(\"(function () { \" + field.getAttribute(\"onpaste\") + \" })\");\r\n }\r\n\r\n if (typeof field.onpaste == \"function\") {\r\n var oninput = field.oninput;\r\n\r\n field.oninput = function () {\r\n if (typeof oninput == \"function\") {\r\n oninput.apply(this, arguments);\r\n }\r\n\r\n if (typeof this.previousValue == \"undefined\") {\r\n this.previousValue = this.value;\r\n }\r\n\r\n var pasted = (Math.abs(this.previousValue.length - this.value.length) > 1 && this.value != \"\");\r\n\r\n if (pasted && !this.onpaste.apply(this, arguments)) {\r\n this.value = this.previousValue;\r\n }\r\n\r\n this.previousValue = this.value;\r\n };\r\n\r\n if (field.addEventListener) {\r\n field.addEventListener(\"input\", field.oninput, false);\r\n } else if (field.attachEvent) {\r\n field.attachEvent(\"oninput\", field.oninput);\r\n }\r\n }\r\n }\r\n }\r\n})();\r\nfunction Localizer(key) {\r\n Shop = Shop || {};\r\n Shop.Localization = Shop.Localization || {};\r\n\r\n return Shop.Localization[key] || ('Missing-' + key);\r\n}\r\n\r\nfunction TrimTextboxContent(str) {\r\n $(str).val(CleanString(str.value));\r\n}\r\n\r\nfunction showPasswordHelpText() {\r\n document.getElementById(\"password-help\").style.display = \"block\";\r\n}\r\n\r\nfunction toggle_password(ctrlname) {\r\n if (document.getElementById(\"show-pass\").className == 'showpass') {\r\n document.getElementById(ctrlname).setAttribute('type', 'text');\r\n document.getElementById(\"show-pass\").classList.remove('showpass');\r\n document.getElementById(\"show-pass\").classList.add('hidepass');\r\n document.getElementById(\"show-pass\").innerHTML = Shop.Localization.hidepassword;\r\n } else {\r\n document.getElementById(ctrlname).setAttribute('type', 'password');\r\n document.getElementById(\"show-pass\").classList.remove('hidepass');\r\n document.getElementById(\"show-pass\").classList.add('showpass');\r\n document.getElementById(\"show-pass\").innerHTML = Shop.Localization.showpassword;\r\n }\r\n}\r\n\r\nfunction GetSearchAddress(data) {\r\n var _address = data.suggestion;\r\n\r\n if (_address) { _address += '
'; }\r\n\r\n return _address;\r\n}\r\n\r\nfunction GetValueFromProperty(data, field) {\r\n var value = null;\r\n if (data && data.length > 0 && field) {\r\n for (var i = 0; i < data.length; i++) {\r\n var props = (Object.keys(data[i]));\r\n if (props && props.length > 0 && props[0] == field) {\r\n return GetFieldValue(data[i], field);\r\n }\r\n }\r\n\r\n }\r\n return value;\r\n}\r\n\r\nfunction GetFieldValue(input, field) {\r\n return input[field];\r\n}","\r\nfunction CartViewModel() {\r\n // === Public Properties\r\n this.CartDetails = false;\r\n this.CartSkus = [];\r\n this.CartItemsCounter = 0;\r\n this.CartItems = new kendo.data.DataSource({ data: [] });\r\n this.GlobalError = false;\r\n // === /Public Properties\r\n\r\n // === Private Properties\r\n // === /Private Properties\r\n\r\n // === Public Methods\r\n this.load = function () {\r\n var that = this;\r\n\r\n var _IsLogged = Shop.IsLoggedIn || false;\r\n if (_IsLogged) {\r\n simpleMediator.attachTo(that);\r\n that.subscribe('AddItemsToCart', 'AddItemsToCart');\r\n that.subscribe('RemoveItemFromCart', 'RemoveItemFromCart');\r\n that.subscribe('ClearCartItems', 'ClearCartItems');\r\n that.subscribe('ApplyCartCoupon', 'ApplyCartCoupon');\r\n that.subscribe('GetActiveCartEvt', 'GetActiveCart');\r\n }\r\n };\r\n\r\n this.ApplyCartCoupon = function (couponCode, callback, toBlock) {\r\n var _promise;\r\n callback = callback || false;\r\n toBlock = toBlock || 'body';\r\n\r\n var _body = {\r\n '$type': 'Shop.Storefront.Cart.Web.Models.Patches.CouponCartPatch, Shop.Storefront.Cart.Web',\r\n 'Code': couponCode\r\n };\r\n\r\n _promise = CommonMethods.ProcessRequest(ShopUrls.CartAPI(), JSON.stringify(_body), 'PATCH');\r\n\r\n if (_promise) {\r\n\r\n CommonMethods.Progress(toBlock, true);\r\n\r\n _promise.done(function (data, status, jXHR) {\r\n\r\n simpleMediator.publish('ActiveCartLoaded', data);\r\n\r\n if (callback) {\r\n\r\n callback(data);\r\n\r\n }\r\n\r\n })\r\n .always(function () {\r\n CommonMethods.Progress(toBlock, false);\r\n })\r\n .fail(function (response, status, message) {\r\n var _status = response.status;\r\n\r\n if (callback) {\r\n\r\n callback(response, message);\r\n\r\n }\r\n\r\n if (_status === 500) {\r\n\r\n simpleMediator.publish('CartGlobalError', true, message, response);\r\n\r\n }\r\n });\r\n\r\n }\r\n };\r\n\r\n this.ClearCartItems = function (callback, toBlock) {\r\n var _promise;\r\n callback = callback || false;\r\n toBlock = toBlock || 'body';\r\n\r\n _promise = CommonMethods.ProcessRequest(ShopUrls.CartAPI('Clearcart'), null, 'DELETE');\r\n\r\n if (_promise) {\r\n\r\n CommonMethods.Progress(toBlock, true);\r\n\r\n _promise.done(function (data, status, jXHR) {\r\n\r\n simpleMediator.publish('SetCartCount', _CountCartItems(data.products));\r\n simpleMediator.publish('ActiveCartLoaded', data);\r\n\r\n if (callback) {\r\n\r\n callback(data);\r\n\r\n }\r\n\r\n })\r\n .always(function () {\r\n CommonMethods.Progress(toBlock, false);\r\n })\r\n .fail(function (response, status, message) {\r\n var _status = response.status;\r\n\r\n if (callback) {\r\n\r\n callback(response, message);\r\n\r\n }\r\n\r\n if (_status === 500) {\r\n\r\n simpleMediator.publish('CartGlobalError', true, message, response);\r\n\r\n }\r\n });\r\n\r\n }\r\n };\r\n\r\n this.GetActiveCart = function () {\r\n var that = this;\r\n var _promise;\r\n\r\n _promise = CommonMethods.ProcessRequest(ShopUrls.CartAPI());\r\n\r\n if (_promise) {\r\n\r\n _promise.done(function (data, status, jXHR) {\r\n\r\n that.set('ActiveCartDetails', data);\r\n that.SetItemsInfo();\r\n simpleMediator.publish('ActiveCartLoaded', data, true);\r\n\r\n })\r\n .always(function () { })\r\n .fail(function (response, status, message) {\r\n var _status = response.status;\r\n\r\n if (_status === 500) {\r\n\r\n that.set('GlobalError', true);\r\n simpleMediator.publish('CartGlobalError', true, message, response);\r\n\r\n }\r\n });\r\n\r\n }\r\n };\r\n\r\n this.AddItemsToCart = function (items, callback, toBlock, type) {\r\n var _promise;\r\n callback = callback || false;\r\n toBlock = toBlock || 'body';\r\n type = type || 'POST';\r\n\r\n _promise = CommonMethods.ProcessRequest(ShopUrls.CartAPI(), items, type);\r\n\r\n if (_promise) {\r\n\r\n CommonMethods.Progress(toBlock, true);\r\n\r\n _promise.done(function (data, status, jXHR) {\r\n\r\n simpleMediator.publish('SetCartCount', _CountCartItems(data.products));\r\n simpleMediator.publish('ActiveCartLoaded', data);\r\n\r\n if (callback) {\r\n\r\n callback(data);\r\n\r\n }\r\n\r\n })\r\n .always(function () {\r\n CommonMethods.Progress(toBlock, false);\r\n })\r\n .fail(function (response, status, message) {\r\n var _status = response.status;\r\n\r\n if (callback) {\r\n\r\n callback(response, message);\r\n\r\n }\r\n\r\n if (_status === 500) {\r\n\r\n simpleMediator.publish('CartGlobalError', true, message, response);\r\n\r\n }\r\n });\r\n\r\n }\r\n };\r\n\r\n this.RemoveItemFromCart = function (sku, callback, toBlock) {\r\n var _promise;\r\n callback = callback || false;\r\n toBlock = toBlock || 'body';\r\n\r\n _promise = CommonMethods.ProcessRequest(ShopUrls.RemoveCartItemAPI(sku), null, 'DELETE');\r\n\r\n if (_promise) {\r\n\r\n CommonMethods.Progress(toBlock, true);\r\n\r\n _promise.done(function (data, status, jXHR) {\r\n\r\n simpleMediator.publish('SetCartCount', _CountCartItems(data.products));\r\n simpleMediator.publish('ActiveCartLoaded', data);\r\n\r\n if (callback) {\r\n\r\n callback(data);\r\n\r\n }\r\n\r\n })\r\n .always(function () {\r\n CommonMethods.Progress(toBlock, false);\r\n })\r\n .fail(function (response, status, message) {\r\n var _status = response.status;\r\n\r\n if (callback) {\r\n\r\n callback(response, message);\r\n\r\n }\r\n\r\n if (_status === 500) {\r\n\r\n simpleMediator.publish('CartGlobalError', true, message, response);\r\n\r\n }\r\n });\r\n\r\n }\r\n };\r\n\r\n this.SetItemsInfo = function (e) {\r\n var that = this;\r\n var _cartDetails = that.get('ActiveCartDetails');\r\n var _itemsInCart = 0;\r\n\r\n if (_cartDetails && _cartDetails.products && _cartDetails.products.length > 0) {\r\n\r\n _itemsInCart = _CountCartItems(_cartDetails.products);\r\n that.get('CartItems').data(_cartDetails.products);\r\n }\r\n\r\n that.set('CartItemsCounter', _itemsInCart);\r\n\r\n simpleMediator.publish('SetCartCount', _itemsInCart);\r\n };\r\n // === /Public Methods\r\n\r\n // === Private Methods\r\n var _CountCartItems = function (cartItems) {\r\n var _itemsInCart = 0;\r\n if (cartItems && cartItems.length > 0) {\r\n\r\n cartItems.forEach(function (item) {\r\n _itemsInCart += item.quantity;\r\n });\r\n\r\n }\r\n return _itemsInCart;\r\n };\r\n // === /Private Methods\r\n}","\r\nvar IsSavingAddress = false;\r\nvar IsCart = false;\r\nvar isCartVertical = false;\r\nvar _blockedMessages = [];\r\n\r\nfunction AccountAddressViewModel() {\r\n \r\n // === Public Properties\r\n this.DeletedCorrectly = false;\r\n this.DisplayName = '';\r\n this.EditMode = false;\r\n this.ErrorMessage = '';\r\n this.ErrorOnSave = false;\r\n this.ErrorExpPhone = false;\r\n this.ErrorOnExpSearch = false;\r\n this.FullAddress = '';\r\n this.GlobalError = false;\r\n this.SavedCorrectly = false;\r\n this.SavedNotExpValidPhone = false;\r\n this.ShippingAddress = false;\r\n this.States = [];\r\n this.TheAddress = {};\r\n this.Cities = [];\r\n this.CountyDistricts = [];\r\n this.ZipCodes = [];\r\n this.Area = [];\r\n this.CityWithStateList = [];\r\n this.Counties = [];\r\n this.DisplayAbbreviationList = true;\r\n this.Coloniavisible = true;\r\n this.CurrentPostalCode = '';\r\n this.CurrentLine4 = '';\r\n this.AllowSendSms = Shop.AllowSendSms;\r\n this.ContinueMessage = '';\r\n this.WarningMessage = '';\r\n this.ShowNotificationsContainer = false;\r\n this.ToValidate = true;\r\n this.District = [];\r\n this.Subdistrict = [];\r\n this.AddressValidated = false;\r\n\r\n // Data Sources\r\n this.SavedAddresses = new kendo.data.DataSource({\r\n\r\n schema: {\r\n model: {\r\n id: 'id'\r\n },\r\n data: function (response) {\r\n return _self.ValidateAddressData(response);\r\n }\r\n },\r\n transport: {\r\n read: {\r\n dataType: 'JSON',\r\n type: 'GET',\r\n url: ShopUrls.AddressAPI('all'),\r\n contentType: 'application/json'\r\n }\r\n },\r\n sort: { field: 'isPrimary', dir: 'desc' },\r\n requestStart: function (e) {\r\n CommonMethods.Progress('#select-address', true);\r\n },\r\n requestEnd: function (e) {\r\n CommonMethods.Progress('#select-address', false);\r\n },\r\n error: function (e) {\r\n var _Self = viewModelHelpers.wire.getInstance('AccountAddressViewModel', 'shared');\r\n var eCode = e.xhr.status;\r\n\r\n if (eCode === 500) {\r\n\r\n _Self.set('GlobalError', true);\r\n\r\n }\r\n\r\n _Self.set('SavedAddresses', []);\r\n }\r\n });\r\n // === /Public Properties\r\n\r\n // === Private Properties\r\n var _self = this;\r\n // === /Private Properties\r\n\r\n // === Public Methods\r\n this.load = function () {\r\n var that = this;\r\n IsCart = isCartVertical;\r\n _self = that;\r\n that.SetStatusForSavingAddress(false); \r\n CommonMethods.Progress('#select-address', true);\r\n CommonMethods.Progress('#current-address', true);\r\n\r\n if (AccountCountryConfig.RequestStateLookupNeeded())\r\n { \r\n \r\n that.RequestStatesLookup();\r\n\r\n } else if (AccountCountryConfig.RequestStateNeeded()) {\r\n\r\n that.RequestStates();\r\n\r\n }\r\n\r\n that.InitAddressFormRules();\r\n that.BindAddressFormValidator();\r\n\r\n };\r\n\r\n this.InitAddressFormRules = function () {\r\n var that = this;\r\n\r\n that.ZipCodeValidation();\r\n\r\n };\r\n\r\n this.BindAddressFormValidator = function () {\r\n\r\n var _form = CommonMethods.GetElement('#address-form');\r\n CommonMethods.KValidator(\r\n _form,\r\n (Shop.KValidatorMessages || {}),\r\n (Shop.AddressFormRules || {}),\r\n ('#: message #'));\r\n\r\n };\r\n\r\n this.BindAddressFormValidator = function () {\r\n\r\n var _form = CommonMethods.GetElement('#address-form');\r\n CommonMethods.KValidator(\r\n _form,\r\n (Shop.KValidatorMessages || {}),\r\n (Shop.AddressFormRules || {}),\r\n ('#: message #'));\r\n\r\n };\r\n\r\n this.ValidateAddressData = function (response) {\r\n var that = this;\r\n if (response == null || response.length === 0) {\r\n\r\n that.AddNewAddress();\r\n return [];\r\n\r\n }\r\n\r\n if (IsCart) {\r\n\r\n that.FetchShippingAddress(response);\r\n\r\n }\r\n\r\n return response;\r\n };\r\n\r\n this.ZipCodeValidation = function () {\r\n var that = this;\r\n var _zipCode = CommonMethods.GetElement('#zipCode');\r\n CommonMethods.KValidator(\r\n _zipCode,\r\n (Shop.KValidatorMessages || {}),\r\n ({\r\n zipcode: function (input) {\r\n return that.ValidateZipCode(_zipCode);\r\n }\r\n }),\r\n ('#: message #')\r\n );\r\n };\r\n\r\n this.ValidateZipCode = function (input) {\r\n var that = this;\r\n if (input.is('[role=zipcode]')) {\r\n\r\n var _pattern;\r\n\r\n if (Shop.CountryCode === 'IN') {\r\n\r\n _pattern = input.data('pattern') ? new RegExp(input.data('pattern')) : /^\\d{6}$/;\r\n\r\n } else {\r\n\r\n _pattern = input.data('pattern') ? new RegExp(input.data('pattern')) : /^\\d{5}$/;\r\n\r\n }\r\n\r\n return !that.get('InvalidZipCode') && _pattern.test(input.val());\r\n\r\n }\r\n return true;\r\n };\r\n\r\n this.AddNewAddress = function (e) {\r\n \r\n var that = this;\r\n that.ShowHideEmailFormOnCartPage(false);\r\n var _address;\r\n\r\n _address = new AddressModelMaker({ isPrimary: false });\r\n _address.IsAdding = true;\r\n \r\n that.ResetMessages();\r\n that.set('TheAddress', _address);\r\n that.set('Cities', []); \r\n\r\n if (!AccountCountryConfig.RequestStateNeeded()) {\r\n\r\n that.set('States', []);\r\n\r\n }\r\n that.SetEditMode(true);\r\n var _cities = [];\r\n that.set('Cities', _cities);\r\n that.set('TheAddress.city', _cities.shift());\r\n that.set('Colonia', []);\r\n that.set('Counties', []);\r\n\r\n if (Shop.CountryCode === 'AU') {\r\n\r\n $('#street').attr('readonly', false);\r\n\r\n }\r\n\r\n };\r\n this.SetEditMode = function (value) {\r\n var that = this;\r\n that.set('EditMode', value);\r\n if (value) {\r\n\r\n $('#address-form').show();\r\n\r\n } else {\r\n\r\n $('#address-form').hide();\r\n\r\n }\r\n simpleMediator.publish('EditModeEvt', value);\r\n };\r\n this.CloseForm = function (e) {\r\n var that = this;\r\n that.ShowHideEmailFormOnCartPage(true);\r\n var _form = CommonMethods.GetKendoValidator('#address-form');\r\n _form.hideErrors();\r\n _form.hideMessages();\r\n\r\n that.HideErrorsAddress();\r\n that.set('ErrorExpPhone', false);\r\n that.set('TheAddress', {}); \r\n that.set('EditMode', false);\r\n $('#address-form').hide();\r\n that.set('ErrorOnSave', false);\r\n that.set('GlobalError', false);\r\n $('#wrapDaum').hide();\r\n $('#ship-to').css('visibility', 'visible');\r\n that.set('HasSavedAddresses', true);\r\n if (that.get('SavedAddresses').data().length === 0) {\r\n\r\n CommonMethods.Progress('#select-address', false);\r\n CommonMethods.Progress('#current-address', false);\r\n $('#ship-to').css('visibility', 'hidden');\r\n that.set('HasSavedAddresses', false);\r\n\r\n }\r\n\r\n if (IsCart) {\r\n\r\n $('.right-content a').removeClass('disabled');\r\n\r\n }\r\n\r\n if (AccountCountryConfig.IsAVSAddressValidationEnabled()) {\r\n \r\n that.set('ShowNotificationsContainer', false);\r\n\r\n }\r\n\r\n };\r\n\r\n this.ChangeAddress = function (e) {\r\n var that = this;\r\n that.ShowHideEmailFormOnCartPage(false);\r\n var _savedAddresses = that.get('SavedAddresses');\r\n var _data = _savedAddresses.data();\r\n that.set('POBoxError', false);\r\n\r\n if (_data.length === 0) {\r\n\r\n _savedAddresses.read().then(function () {\r\n _data = _savedAddresses.data();\r\n });\r\n\r\n }\r\n\r\n that.SetEditMode(true);\r\n that.set('ChangeMode', true);\r\n };\r\n\r\n this.CloseModal = function (e) {\r\n var that = this;\r\n that.ShowHideEmailFormOnCartPage(false);\r\n var id = e.currentTarget.dataset.windowTarget;\r\n var _w = GetKendoWindow(id);\r\n\r\n that.SetShippingAddress({});\r\n\r\n _w.close();\r\n };\r\n\r\n this.OpenModal = function (e) {\r\n var that = this;\r\n if (that.AbleToDelete()) {\r\n\r\n var id = e.currentTarget.dataset.windowTarget;\r\n var _w = GetKendoWindow(id);\r\n\r\n that.ResetMessages();\r\n that.SetShippingAddress(e.data);\r\n\r\n _w.center().open();\r\n\r\n }\r\n };\r\n\r\n this.AbleToDelete = function () {\r\n var that = this;\r\n var _addresses = that.get('SavedAddresses').data();\r\n return (_addresses.length > 1) ? true : false;\r\n };\r\n\r\n this.DeleteAddress = function (e) {\r\n var that = this;\r\n var _addressData = that.get('ShippingAddress');\r\n var _toBlock = e.currentTarget.parentElement;\r\n\r\n var _promise = CommonMethods.ProcessRequest(ShopUrls.DeleteAddressAPI(_addressData.id), null, 'DELETE');\r\n\r\n if (_promise) {\r\n\r\n CommonMethods.Progress(_toBlock, true);\r\n that.set('DeletedCorrectly', false);\r\n _promise.done(function (data, status, jXHR) {\r\n\r\n if (data) {\r\n\r\n var _savedAddresses = that.get('SavedAddresses');\r\n\r\n _savedAddresses.remove(_addressData.toAddressViewModel());\r\n\r\n _savedAddresses.read();\r\n\r\n that.set('DeletedCorrectly', true);\r\n that.CloseModal(e);\r\n\r\n }\r\n\r\n })\r\n .always(function () {\r\n CommonMethods.Progress(_toBlock, false);\r\n })\r\n .fail(function (response, status, message) {\r\n var _status = response.status;\r\n\r\n if (_status === 500) {\r\n\r\n simpleMediator.publish('CartGlobalError', true, message, response);\r\n\r\n }\r\n });\r\n\r\n }\r\n };\r\n\r\n this.EditAddress = function (e) { \r\n var that = this;\r\n \r\n if (!IsCart) {\r\n\r\n that.SetShippingAddress(e.data);\r\n\r\n }\r\n\r\n that.ShowHideEmailFormOnCartPage(false);\r\n\r\n var _address = that.get('ShippingAddress').toNewAddressViewModel();\r\n var _requestFunctionName = AccountCountryConfig.RequestAddressFunction();\r\n\r\n _address = new AddressModelMaker(_address);\r\n _address.IsEditing = true;\r\n that.ResetMessages();\r\n that.set('TheAddress', _address);\r\n that.SetEditMode(true);\r\n\r\n if (Shop.CountryCode === 'JP' || Shop.CountryCode === 'AU') {\r\n\r\n CommonMethods.GetKendoValidator('#address-form').validate();\r\n\r\n }\r\n\r\n if (_requestFunctionName && _requestFunctionName.indexOf(',') > -1) {\r\n\r\n var functions = _requestFunctionName.split(',');\r\n for (var i = 0; i < functions.length; i++) {\r\n\r\n if (functions[i] && typeof that[functions[i]] === 'function') {\r\n\r\n that[functions[i]]();\r\n\r\n }\r\n\r\n }\r\n\r\n } else {\r\n\r\n if (_requestFunctionName && typeof that[_requestFunctionName] === 'function') {\r\n\r\n that[_requestFunctionName]();\r\n\r\n }\r\n\r\n }\r\n\r\n if ($('#ddlColonia').length > 0) {\r\n\r\n that.set('Colonia', []);\r\n that.RequestColoniCityAndStatesByZip();\r\n\r\n }\r\n\r\n if (Shop.CountryCode === 'AU') {\r\n\r\n $('#street').attr('readonly', true);\r\n\r\n }\r\n\r\n };\r\n\r\n this.ResetCity = function (e) {\r\n var getCity = this.get('TheAddress.city') || '';\r\n if (getCity === '') {\r\n\r\n this.set('TheAddress.city', Shop.Localization.cityOption);\r\n\r\n }\r\n\r\n this.set('TheAddress.countyDistrict', Shop.Localization.countyDistrictOption);\r\n var zipOption = Shop.Localization.zipOption || '';\r\n if (zipOption !== '') {\r\n\r\n this.set('TheAddress.zipCode', Shop.Localization.zipOption);\r\n\r\n }\r\n };\r\n this.ResetDistrict = function () {\r\n var _districts = [];\r\n var districtoption = { value: Shop.Localization.districtOption, isDisabled: true };\r\n _districts.push(districtoption);\r\n this.set('Districts', _districts);\r\n this.set('TheAddress.countyDistrict', ''); \r\n this.ResetSubdist();\r\n };\r\n this.ResetSubdist = function () {\r\n var _subdistricts = [];\r\n var subdistoption = { value: Shop.Localization.subdistrictOption, isDisabled: true };\r\n _subdistricts.push(subdistoption);\r\n this.set('Subdistricts', _subdistricts);\r\n this.set('TheAddress.line4', '');\r\n this.set('TheAddress.zipCode', ''); \r\n };\r\n this.RequestZipByCounty = function (e) {\r\n var that = this;\r\n var _toBlock = '#address-form';\r\n var _promise;\r\n var _type = 'GET';\r\n var _params = '?countryCode=' + Shop.CountryCode + '&filterValue=' +\r\n that.get('TheAddress.state') + '|' + that.get('TheAddress.city') + '|' +\r\n that.get('TheAddress.county') + '&filter=' + 'GetZipsForCounty';\r\n\r\n if (e) {\r\n\r\n that.set('TheAddress.zipCode', '');\r\n\r\n }\r\n\r\n that.set('ZipCodes', []);\r\n\r\n _promise = CommonMethods.ProcessRequest(encodeURI(ShopUrls.Shipping(_params)), null, _type);\r\n\r\n if (_promise) {\r\n\r\n CommonMethods.Progress(_toBlock, true);\r\n _promise.done(function (data, status, jXHR) {\r\n\r\n if (data) {\r\n\r\n var _i;\r\n var _length = data.length;\r\n var _zipcodes = [];\r\n var zipcodeOption = { value: Shop.Localization.countyOption, isDisabled: true };\r\n _zipcodes.push(zipcodeOption);\r\n for (_i = 0; _i < _length; _i++) {\r\n\r\n if (data[_i] !== null) {\r\n\r\n _zipcodes.push({ value: data[_i].trim(), isDisabled: false });\r\n\r\n }\r\n\r\n }\r\n that.set('ZipCodes', _zipcodes);\r\n\r\n }\r\n })\r\n .always(function () {\r\n CommonMethods.Progress(_toBlock, false);\r\n });\r\n\r\n }\r\n };\r\n\r\n // To populate the cities based on state selected\r\n this.RequestCities = function (e) { \r\n var that = this;\r\n that.set('Cities', []); \r\n var _toBlock = '#address-form';\r\n var _promise;\r\n var _type = 'GET';\r\n \r\n var _params = '?countryCode=' + Shop.CountryCode + '&filterValue=' +\r\n that.get('TheAddress.state') + '&filter=' + 'GetCitiesForState';\r\n if (e) {\r\n\r\n that.set('TheAddress.city', '');\r\n\r\n }\r\n\r\n _promise = CommonMethods.ProcessRequest(encodeURI(ShopUrls.Shipping(_params)), null, _type); \r\n\r\n if (_promise) {\r\n\r\n CommonMethods.Progress(_toBlock, true);\r\n\r\n _promise.done(function (data, status, jXHR) {\r\n\r\n if (data) { \r\n\r\n var _i;\r\n var _length = data.length;\r\n var _cities = [];\r\n var cityoption = { value: Shop.Localization.cityOption, isDisabled: true };\r\n _cities.push(cityoption);\r\n for (_i = 0; _i < _length; _i++) {\r\n\r\n _cities.push({ value: data[_i].trim(), isDisabled: false });\r\n\r\n }\r\n that.set('Cities', _cities);\r\n if (e === undefined) {\r\n\r\n that.RequestCounties(e);\r\n\r\n } else {\r\n\r\n that.ResetCounties();\r\n\r\n } \r\n\r\n }\r\n })\r\n .always(function () {\r\n CommonMethods.Progress(_toBlock, false);\r\n });\r\n\r\n }\r\n\r\n };\r\n this.RequestCitiesLookup = function (e) { \r\n var that = this;\r\n that.set('Cities', []);\r\n var _toBlock = '#address-form';\r\n var _promise;\r\n var _type = 'GET'; \r\n var _params = '?countryCode=' + Shop.CountryCode + '&filterValue=' +\r\n that.get('TheAddress.state') + '&filter=' + 'GetCitiesForStateLookup';\r\n if (e) {\r\n\r\n that.set('TheAddress.city', '');\r\n\r\n }\r\n\r\n _promise = CommonMethods.ProcessRequest(encodeURI(ShopUrls.AccountShippingUrl(_params)), null, _type);\r\n\r\n if (_promise) {\r\n\r\n CommonMethods.Progress(_toBlock, true);\r\n\r\n _promise.done(function (data, status, jXHR) {\r\n if (data) { \r\n\r\n var _i;\r\n var _length = data.length;\r\n var _cities = [];\r\n var cityoption = { value: Shop.Localization.cityOption, isDisabled: true };\r\n _cities.push(cityoption);\r\n for (_i = 0; _i < _length; _i++) {\r\n\r\n _cities.push({ value: data[_i].trim(), isDisabled: false });\r\n\r\n }\r\n that.set('Cities', _cities); \r\n if (e === undefined) {\r\n\r\n that.RequestDistrictLookup(e);\r\n\r\n }else {\r\n\r\n that.ResetDistrict();\r\n\r\n } \r\n\r\n }\r\n })\r\n .always(function () {\r\n CommonMethods.Progress(_toBlock, false);\r\n });\r\n\r\n }\r\n\r\n };\r\n this.RequestDistrictLookup = function (e) { \r\n var that = this;\r\n that.set('Districts', []);\r\n var _toBlock = '#address-form';\r\n var _promise;\r\n var _type = 'GET'; \r\n var _params = '?countryCode=' + Shop.CountryCode + '&filterValue=' +\r\n that.get('TheAddress.state') + '|' + that.get('TheAddress.city') +\r\n '&filter=' + 'GetDistsForCityLookup';\r\n if (e) {\r\n\r\n that.set('TheAddress.countyDistrict', '');\r\n\r\n }\r\n\r\n _promise = CommonMethods.ProcessRequest(encodeURI(ShopUrls.AccountShippingUrl(_params)), null, _type);\r\n\r\n if (_promise) {\r\n\r\n CommonMethods.Progress(_toBlock, true);\r\n\r\n _promise.done(function (data, status, jXHR) {\r\n\r\n if (data) {\r\n \r\n var _i;\r\n var _length = data.length;\r\n var _districts = [];\r\n var districtoption = { value: Shop.Localization.districtOption, isDisabled: true };\r\n _districts.push(districtoption);\r\n for (_i = 0; _i < _length; _i++) {\r\n\r\n _districts.push({ value: data[_i].trim(), isDisabled: false });\r\n\r\n }\r\n that.set('Districts', _districts); \r\n if (e === undefined) {\r\n\r\n that.RequestSubdistLookup(e);\r\n\r\n }else {\r\n\r\n that.ResetSubdist();\r\n\r\n }\r\n\r\n }\r\n })\r\n .always(function () {\r\n CommonMethods.Progress(_toBlock, false);\r\n });\r\n\r\n }\r\n }; \r\n this.RequestSubdistLookup = function (e) { \r\n var that = this;\r\n that.set('Subdistricts', []);\r\n var _toBlock = '#address-form';\r\n var _promise;\r\n var _type = 'GET'; \r\n var _params = '?countryCode=' + Shop.CountryCode + '&filterValue=' + that.get('TheAddress.state') +\r\n '|' + that.get('TheAddress.city') + '|' + that.get('TheAddress.countyDistrict') + '&filter=' + \r\n 'GetSubdistForDistLookup';\r\n \r\n if (e) {\r\n\r\n that.set('TheAddress.line4', '');\r\n that.set('TheAddress.zipCode', '');\r\n\r\n }\r\n\r\n _promise = CommonMethods.ProcessRequest(encodeURI(ShopUrls.AccountShippingUrl(_params)), null, _type); \r\n\r\n if (_promise) {\r\n\r\n CommonMethods.Progress(_toBlock, true);\r\n\r\n _promise.done(function (data, status, jXHR) {\r\n\r\n if (data) { \r\n \r\n var _i;\r\n var _length = data.length;\r\n var _subdistricts = [];\r\n var subdistrictoption = { value: Shop.Localization.subdistrictOption, isDisabled: true };\r\n _subdistricts.push(subdistrictoption);\r\n for (_i = 0; _i < _length; _i++) {\r\n\r\n _subdistricts.push({ value: data[_i].trim(), isDisabled: false });\r\n\r\n }\r\n that.set('Subdistricts', _subdistricts); \r\n\r\n }\r\n })\r\n .always(function () {\r\n CommonMethods.Progress(_toBlock, false);\r\n });\r\n\r\n }\r\n\r\n };\r\n this.RequestPostalCodeLookup = function (e) { \r\n var that = this; \r\n var _toBlock = '#address-form';\r\n var _promise;\r\n var _type = 'GET'; \r\n var _params = '?countryCode=' + Shop.CountryCode + '&filterValue=' +\r\n that.get('TheAddress.state') + '|' + that.get('TheAddress.city') +\r\n '|' + that.get('TheAddress.countyDistrict') + '|' +\r\n that.get('TheAddress.line4') + '&filter=' + 'GetZipForSubdistLookup'; \r\n\r\n if (e) {\r\n\r\n that.set('TheAddress.zipCode', '');\r\n\r\n }\r\n\r\n _promise = CommonMethods.ProcessRequest(encodeURI(ShopUrls.AccountShippingUrl(_params)), null, _type); \r\n\r\n if (_promise) {\r\n\r\n CommonMethods.Progress(_toBlock, true);\r\n\r\n _promise.done(function (data, status, jXHR) {\r\n\r\n if (data) {\r\n \r\n that.set('TheAddress.zipCode', data);\r\n\r\n }\r\n })\r\n .always(function () {\r\n CommonMethods.Progress(_toBlock, false);\r\n });\r\n\r\n }\r\n\r\n };\r\n this.RequestZipsAndStreetsForCity = function () {\r\n var that = this;\r\n that.RequestStreetsForCity();\r\n that.RequestZipsForCity();\r\n };\r\n\r\n this.RequestZipsForCity = function (e) {\r\n var that = this;\r\n that.set('Zipcodes', []);\r\n var _toBlock = '#address-form';\r\n var _promise;\r\n var _type = 'GET';\r\n var _params = '?countryCode=' + Shop.CountryCode + '&filterValue=' +\r\n that.get('TheAddress.state') + '|' + that.get('TheAddress.city') + '&filter=' + 'GetZipsForCity';\r\n\r\n if (e) {\r\n\r\n that.set('TheAddress.zipCode', '');\r\n\r\n }\r\n\r\n var apiUrl = ShopUrls.AccountShippingUrl(_params);\r\n _promise = CommonMethods.ProcessRequest(apiUrl, null, _type);\r\n\r\n if (_promise) {\r\n\r\n CommonMethods.Progress(_toBlock, true);\r\n\r\n _promise.done(function (data, status, jXHR) {\r\n\r\n if (data) {\r\n\r\n var _i;\r\n var _length = data.length;\r\n var _zipcode = [];\r\n var zipCodeOption = { value: Shop.Localization.zipOption, isDisabled: true };\r\n _zipcode.push(zipCodeOption);\r\n for (_i = 0; _i < _length; _i++) {\r\n\r\n _zipcode.push({ value: data[_i].trim(), isDisabled: false });\r\n\r\n }\r\n that.set('Zipcodes', _zipcode);\r\n\r\n }\r\n })\r\n .always(function () {\r\n CommonMethods.Progress(_toBlock, false);\r\n });\r\n\r\n }\r\n\r\n };\r\n\r\n this.RequestStreetsForCity = function (e) {\r\n var that = this;\r\n that.set('Area', []);\r\n var _toBlock = '#address-form';\r\n var _promise;\r\n var _type = 'GET';\r\n var _params = '?countryCode=' + Shop.CountryCode + '&filterValue=' +\r\n that.get('TheAddress.state') + '|' + that.get('TheAddress.city') + '&filter=' + 'GetStreetsForCity';\r\n\r\n if (e) {\r\n\r\n that.set('TheAddress.area', '');\r\n\r\n }\r\n\r\n var apiUrl = ShopUrls.AccountShippingUrl(_params);\r\n _promise = CommonMethods.ProcessRequest(apiUrl, null, _type);\r\n\r\n if (_promise) {\r\n\r\n CommonMethods.Progress(_toBlock, true);\r\n\r\n _promise.done(function (data, status, jXHR) {\r\n\r\n if (data) {\r\n\r\n var _i;\r\n var _length = data.length;\r\n var _area = [];\r\n var areaOption = { value: Shop.Localization.countyOption, isDisabled: false };\r\n _area.push(areaOption);\r\n for (_i = 0; _i < _length; _i++) {\r\n\r\n _area.push({ value: data[_i].trim(), isDisabled: false });\r\n\r\n }\r\n that.set('Area', _area);\r\n\r\n }\r\n })\r\n .always(function () {\r\n CommonMethods.Progress(_toBlock, false);\r\n });\r\n\r\n }\r\n\r\n };\r\n\r\n // To populate the counties based on state and city selected\r\n this.RequestCounties = function (e) {\r\n var that = this;\r\n that.set('Counties', []); \r\n var _toBlock = '#address-form';\r\n var _promise;\r\n var _type = 'GET';\r\n var _params = '?countryCode=' + Shop.CountryCode + '&filterValue=' +\r\n that.get('TheAddress.state') + '|' + that.get('TheAddress.city') + '&filter=' + 'GetCountiesForCity';\r\n\r\n if (e) {\r\n\r\n that.set('TheAddress.county', '');\r\n\r\n }\r\n\r\n that.set('Counties', []);\r\n\r\n _promise = CommonMethods.ProcessRequest(encodeURI(ShopUrls.Shipping(_params)), null, _type);\r\n\r\n if (_promise) {\r\n\r\n CommonMethods.Progress(_toBlock, true);\r\n _promise.done(function (data, status, jXHR) {\r\n\r\n if (data) {\r\n\r\n var _i;\r\n var _length = data.length;\r\n var _counties = [];\r\n var countyoption = { value: Shop.Localization.countyOption, isDisabled: true };\r\n _counties.push(countyoption);\r\n for (_i = 0; _i < _length; _i++) {\r\n\r\n if (data[_i] !== null) {\r\n\r\n _counties.push({ value: data[_i].trim(), isDisabled: false });\r\n\r\n }\r\n\r\n }\r\n that.set('Counties', _counties); \r\n if (e === undefined) {\r\n\r\n that.RequestZipCodes(e);\r\n\r\n } else {\r\n\r\n that.ResetZipCode();\r\n\r\n } \r\n\r\n }\r\n })\r\n .always(function () {\r\n CommonMethods.Progress(_toBlock, false);\r\n });\r\n\r\n }\r\n };\r\n\r\n this.ResetZipCode = function () {\r\n \r\n this.set('TheAddress.zipCode', '');\r\n\r\n }; \r\n\r\n this.ResetCounties = function () {\r\n var _districts = [];\r\n var districtoption = { value: Shop.Localization.cityOption, isDisabled: true };\r\n _districts.push(districtoption);\r\n this.set('Counties', _districts);\r\n this.set('TheAddress.county', '');\r\n this.set('TheAddress.zipCode', ''); \r\n }; \r\n\r\n this.RequestZipCodes = function (e) {\r\n var that = this;\r\n that.set('zipCode', []);\r\n var _toBlock = '#address-form';\r\n var _promise;\r\n var _type = 'GET';\r\n var _params = '?countryCode=' + Shop.CountryCode + '&filterValue=' +\r\n that.get('TheAddress.state') + '|' + that.get('TheAddress.city') + '|' +\r\n that.get('TheAddress.county') + '&filter=' + 'GetZipsForCounty';\r\n\r\n if (e) {\r\n\r\n that.set('TheAddress.zipCode', '');\r\n\r\n }\r\n\r\n _promise = CommonMethods.ProcessRequest(encodeURI(ShopUrls.AccountShippingUrl(_params)), null, _type);\r\n\r\n if (_promise) {\r\n\r\n CommonMethods.Progress(_toBlock, true);\r\n _promise.done(function (data, status, jXHR) {\r\n\r\n if (data) {\r\n\r\n that.set('TheAddress.zipCode', data[0]);\r\n\r\n }\r\n })\r\n .always(function () {\r\n CommonMethods.Progress(_toBlock, false);\r\n });\r\n\r\n }\r\n };\r\n\r\n // To populate the Zips based on county, city, state and country selected\r\n this.RequestZips = function (e) {\r\n var that = this;\r\n that.set('ZipCodes', []);\r\n var _toBlock = '#ZipCodes';\r\n var _promise;\r\n var _type = 'GET';\r\n\r\n var _params = '?countryCode=' + Shop.CountryCode + '&filterValue=' +\r\n that.get('TheAddress.state') + '|' + that.get('TheAddress.city') + '|' +\r\n that.get('TheAddress.countyDistrict') + '&filter=' + 'GetZipsForCounty';\r\n\r\n if (e) {\r\n\r\n that.set('TheAddress.zipCode', '');\r\n\r\n }\r\n\r\n that.set('ZipCodes', []);\r\n\r\n _promise = CommonMethods.ProcessRequest(encodeURI(ShopUrls.Shipping(_params)), null, _type);\r\n\r\n if (_promise) {\r\n\r\n CommonMethods.Progress(_toBlock, true);\r\n\r\n _promise.done(function (data, status, jXHR) {\r\n\r\n if (data) {\r\n\r\n var _i;\r\n var _length = data.length;\r\n var _zips = [];\r\n var zipoption = { value: Shop.Localization.zipOption, isDisabled: true };\r\n _zips.push(zipoption);\r\n for (_i = 0; _i < _length; _i++) {\r\n\r\n _zips.push({ value: data[_i].trim(), isDisabled: false });\r\n\r\n }\r\n that.set('ZipCodes', _zips);\r\n\r\n }\r\n })\r\n\r\n .always(function () {\r\n CommonMethods.Progress(_toBlock, false);\r\n });\r\n\r\n }\r\n\r\n };\r\n\r\n this.RequestStates = function (e) { \r\n var that = this;\r\n that.set('States', []); \r\n var _toBlock = '#States';\r\n var _promise;\r\n var _type = 'GET';\r\n var _e = e;\r\n var _params = '?countryCode=' + Shop.CountryCode + '&filterValue=' +\r\n Shop.CountryCode + '&filter=' + 'GetStatesForCountry';\r\n var disallowedStates = '';\r\n\r\n _promise = CommonMethods.ProcessRequest(ShopUrls.Shipping(_params), null, _type);\r\n\r\n if (_promise) {\r\n\r\n CommonMethods.Progress(_toBlock, true);\r\n\r\n _promise.done(function (data, status, jXHR) {\r\n\r\n if (data) {\r\n\r\n var _i;\r\n var _j;\r\n var _states = [];\r\n var stateoption = { value: Shop.Localization.stateOption, isDisabled: true };\r\n _states.push(stateoption);\r\n var isDisallowedStatesAvailable = typeof (disallowedStates) !== 'undefined' ? true : false;\r\n if (isDisallowedStatesAvailable) {\r\n\r\n for (_j = 0; _j < disallowedStates.length; _j++) {\r\n\r\n var removeStatesIndex = data.indexOf(disallowedStates[_j]);\r\n if (removeStatesIndex >= 0) {\r\n\r\n data.splice(removeStatesIndex, 1);\r\n\r\n }\r\n\r\n }\r\n\r\n }\r\n var _length = data.length;\r\n for (_i = 0; _i < _length; _i++) {\r\n\r\n _states.push({ value: data[_i], isDisabled: false });\r\n\r\n }\r\n that.set('States', _states);\r\n if (_states.length > 0 && _e) {\r\n\r\n that.set('TheAddress.state', _states[0]);\r\n that.ResetCity(e); \r\n\r\n }\r\n\r\n }\r\n\r\n })\r\n .always(function () {\r\n CommonMethods.Progress(_toBlock, false);\r\n });\r\n\r\n }\r\n\r\n };\r\n this.RequestStatesLookup = function (e) {\r\n var that = this;\r\n that.set('States', []);\r\n var _toBlock = '#States';\r\n var _promise;\r\n var _type = 'GET';\r\n var _e = e;\r\n var _params = '?countryCode=' + Shop.CountryCode + '&filterValue=' +\r\n Shop.CountryCode + '&filter=' + 'GetStatesForCountryLookup';\r\n var disallowedStates = '';\r\n\r\n _promise = CommonMethods.ProcessRequest(ShopUrls.AccountShippingUrl(_params), null, _type);\r\n\r\n if (_promise) {\r\n\r\n CommonMethods.Progress(_toBlock, true);\r\n\r\n _promise.done(function (data, status, jXHR) {\r\n\r\n if (data) {\r\n\r\n var _i;\r\n var _j;\r\n var _states = [];\r\n var stateoption = { value: Shop.Localization.stateOption, isDisabled: true };\r\n _states.push(stateoption);\r\n var isDisallowedStatesAvailable = typeof (disallowedStates) !== 'undefined' ? true : false;\r\n if (isDisallowedStatesAvailable) {\r\n\r\n for (_j = 0; _j < disallowedStates.length; _j++) {\r\n\r\n var removeStatesIndex = data.indexOf(disallowedStates[_j]);\r\n if (removeStatesIndex >= 0) {\r\n\r\n data.splice(removeStatesIndex, 1);\r\n\r\n }\r\n\r\n }\r\n\r\n }\r\n var _length = data.length;\r\n for (_i = 0; _i < _length; _i++) {\r\n\r\n _states.push({ value: data[_i], isDisabled: false });\r\n\r\n }\r\n that.set('States', _states);\r\n if (_states.length > 0 && _e) {\r\n\r\n that.set('TheAddress.state', _states[0]);\r\n that.ResetCity(e);\r\n\r\n }\r\n\r\n }\r\n\r\n })\r\n .always(function () {\r\n CommonMethods.Progress(_toBlock, false);\r\n });\r\n\r\n }\r\n\r\n };\r\n\r\n this.RequestStatesByZip = function (e) {\r\n var that = this;\r\n var _e = e;\r\n that.set('States', []);\r\n if (_e) {\r\n\r\n that.set('TheAddress.state', '');\r\n\r\n }\r\n var _callback = function (data) {\r\n var _i;\r\n var _length = data.length;\r\n var _states = [];\r\n for (_i = 0; _i < _length; _i++) {\r\n\r\n _states.push(data[_i].state);\r\n\r\n }\r\n that.set('States', _states);\r\n if (_states.length > 0) {\r\n\r\n if (_e) {\r\n\r\n that.set('TheAddress.state', _states[0]);\r\n\r\n }\r\n\r\n } else {\r\n\r\n that.set('InvalidZipCode', true);\r\n\r\n }\r\n };\r\n that.RequestInfoAddressByZip(_callback);\r\n };\r\n this.RequestCitiesByZip = function (e) {\r\n var that = this;\r\n that.set('Cities', []);\r\n var _e = e;\r\n if (_e) {\r\n\r\n that.set('TheAddress.city', '');\r\n\r\n }\r\n var _callback = function (data) {\r\n var _i;\r\n var _length = data.length;\r\n var _cities = [];\r\n for (_i = 0; _i < _length; _i++) {\r\n\r\n _cities.push(data[_i].city);\r\n\r\n }\r\n that.set('Cities', _cities);\r\n if (_cities.length > 0) {\r\n\r\n if (_e) {\r\n\r\n that.set('TheAddress.city', _cities[0]);\r\n\r\n }\r\n\r\n } else {\r\n\r\n that.set('InvalidZipCode', true);\r\n\r\n }\r\n };\r\n that.RequestInfoAddressByZip(_callback);\r\n };\r\n this.RequestCitiesAndStatesByZip = function (e) {\r\n var that = this;\r\n var _e = e;\r\n that.set('States', []);\r\n that.set('Cities', []);\r\n that.set('CityWithStateList', []);\r\n if (_e) {\r\n\r\n that.set('TheAddress.city', '');\r\n that.set('TheAddress.state', '');\r\n\r\n }\r\n var _callback = function (data) {\r\n var _i;\r\n var _length = data.length;\r\n var _states = [];\r\n var _cities = [];\r\n var _CityWithStateList = [];\r\n for (_i = 0; _i < _length; _i++) {\r\n\r\n var state = data[_i].state || '';\r\n\r\n if (state !== '') {\r\n\r\n _states.push(data[_i].state);\r\n\r\n } else {\r\n\r\n state = data[_i].stateProvinceTerritory || '';\r\n _states.push(state);\r\n\r\n }\r\n\r\n _cities.push(data[_i].city.toUpperCase());\r\n _CityWithStateList.push({ 'city': data[_i].city.toUpperCase(), 'state': state });\r\n\r\n }\r\n that.set('CityWithStateList', _CityWithStateList);\r\n that.set('States', _states.filter(uniqueValues));\r\n that.set('Cities', _cities);\r\n if (_states.length > 0 && _cities.length > 0) {\r\n\r\n that.set('InvalidZipCode', false);\r\n\r\n if (_e) {\r\n\r\n that.set('TheAddress.state', _states[0]);\r\n that.set('TheAddress.city', _cities[0]);\r\n\r\n }\r\n\r\n } else {\r\n\r\n that.set('InvalidZipCode', true);\r\n\r\n }\r\n };\r\n that.RequestInfoAddressByZip(_callback);\r\n };\r\n this.RequestInfoAddressByZip = function (_callback) {\r\n var that = this;\r\n that.set('InvalidZipCode', false);\r\n var _strZipCode = that.get('TheAddress.zipCode') ? that.get('TheAddress.zipCode').trim() : '';\r\n var _zipCode = CommonMethods.GetKendoValidator('#zipCode');\r\n\r\n if (_strZipCode && _zipCode.validate()) {\r\n\r\n _strZipCode = (Shop.Locale.toUpperCase() === 'RU-RU') ? _strZipCode.substring(0, 3) : _strZipCode;\r\n var _toBlock = '#address-form';\r\n var _promise;\r\n var _type = 'GET';\r\n var _params = Shop.Locale.toUpperCase() === 'EN-IN' ? '?filterValue=' + _strZipCode +\r\n '&filter=' + 'GetStateAndCityFromAddressByZipcode' : '?filterValue=' + _strZipCode +\r\n '&filter=' + 'GetStateAndCityByZipcode';\r\n \r\n var apiUrl = Shop.Locale.toUpperCase() === 'PT-PT' ? '/Account/api/ShippingServicev1' + _params +\r\n '&countryCode=PT' : ShopUrls.Shipping(_params);\r\n\r\n _promise = CommonMethods.ProcessRequest(apiUrl, null, _type);\r\n\r\n if (_promise) {\r\n\r\n CommonMethods.Progress(_toBlock, true);\r\n\r\n _promise.done(function (data, status, jXHR) {\r\n\r\n if (data) {\r\n\r\n _callback(data);\r\n\r\n } else {\r\n\r\n that.set('InvalidZipCode', true);\r\n\r\n }\r\n _zipCode.validate();\r\n })\r\n .always(function () {\r\n CommonMethods.Progress(_toBlock, false);\r\n });\r\n\r\n }\r\n\r\n }\r\n };\r\n this.ResetMessages = function (e) {\r\n\r\n var that = this;\r\n\r\n that.set('SavedCorrectly', false);\r\n that.set('ErrorOnSave', false);\r\n that.set('ErrorExpPhone', false);\r\n that.set('SavedNotExpValidPhone', false);\r\n that.HideSuggestionsList();\r\n $('#search-address').val('');\r\n $('#spnMatching').css('display', 'none');\r\n\r\n };\r\n\r\n this.CheckForNumbersInNames = function (e) {\r\n\r\n var that = this;\r\n\r\n var fName = that.get('TheAddress.firstName') || '';\r\n var lName = that.get('TheAddress.lastName') || '';\r\n var fullName = that.get('TheAddress.fullName') || fName;\r\n\r\n var lastName = lName.match(/\\d+/g);\r\n var flName = fullName.match(/\\d+/g);\r\n\r\n var digitsLastName = 0;\r\n var digitsFullName = 0;\r\n\r\n if (lastName != null) {\r\n\r\n digitsLastName = lastName.join('').length;\r\n\r\n }\r\n\r\n if (flName != null) {\r\n\r\n digitsFullName = flName.join('').length;\r\n\r\n }\r\n\r\n if (digitsLastName > 1 || digitsFullName > 1) {\r\n\r\n return true;\r\n\r\n }\r\n\r\n return false;\r\n\r\n };\r\n\r\n this.Save = function (e) { \r\n var that = this;\r\n var _form = CommonMethods.GetKendoValidator('#address-form');\r\n\r\n if (!_form.validate()) {\r\n\r\n return false;\r\n\r\n } \r\n \r\n if (that.CheckForNumbersInNames()) {\r\n\r\n that.set('GlobalError', true);\r\n that.set('ErrorMessage', Localizer('NameWithDigits'));\r\n return false;\r\n\r\n }\r\n\r\n if (Shop.CountryCode === 'PR') {\r\n\r\n that.HideErrorsAddress();\r\n var _streetbox = that.get('TheAddress.street') || '';\r\n var streetBox = _streetbox.toUpperCase();\r\n\r\n var poboxregexHCBox = /(H(\\s|\\.|)C(\\s|\\d|\\w|)B(OX|UZON|UZ\\u00D3N|ZN)|HC(\\W|\\s|\\.|))/i;\r\n if (poboxregexHCBox.test(streetBox)) {\r\n\r\n var streetHCBoxValues = streetBox.split(' ');\r\n var allowedHCBoxKeywordsInAddress = /((\\d|\\w|\\s|)HITCHCOCK(\\d|\\w|\\s|))/i;\r\n for (var k = 0; k < streetHCBoxValues.length; k++) {\r\n\r\n var val = streetHCBoxValues[k];\r\n var hasHCBox = poboxregexHCBox.test(val);\r\n var hasAllowedWord = allowedHCBoxKeywordsInAddress.test(val);\r\n if (hasHCBox && !hasAllowedWord) {\r\n\r\n that.set('GlobalError', true);\r\n that.set('ErrorMessage', Localizer('hcboxstreetvalidation'));\r\n return false;\r\n\r\n }\r\n\r\n }\r\n\r\n }\r\n \r\n var boxregex = /(P(\\s|\\.|)O.B(OX|UZON|UZ\\u00D3N))/i;\r\n if (boxregex.test(streetBox)) {\r\n\r\n that.set('GlobalError', true);\r\n that.set('ErrorMessage', Localizer('poboxstreetvalidation'));\r\n return false;\r\n\r\n }\r\n\r\n var poboxregexBox = /((\\d|\\w|\\s|)B(UZON|UZ\\u00D3N|ZN)(\\d|\\w|\\s|))/i;\r\n if (poboxregexBox.test(streetBox)) {\r\n\r\n that.set('GlobalError', true);\r\n that.set('ErrorMessage', Localizer('boxstreetvalidation'));\r\n return false;\r\n\r\n }\r\n\r\n var poboxregexOnlyBox = /((\\d|\\w|\\s|)B(OX)(\\d|\\w|\\s|))/i;\r\n if (poboxregexOnlyBox.test(streetBox)) {\r\n\r\n if (Shop.CountryCode === 'US') {\r\n\r\n var streetBoxValues = streetBox.split(' ');\r\n var allowedBoxKeywordsInAddress = /((\\d|\\w|\\s|)BOXWOOD(\\d|\\w|\\s|))/i;\r\n for (var counter = 0; counter < streetBoxValues.length; counter++) {\r\n\r\n var value = streetBoxValues[counter];\r\n var hasBox = poboxregexOnlyBox.test(value);\r\n var hasBoxWood = allowedBoxKeywordsInAddress.test(value);\r\n if (hasBox && !hasBoxWood) {\r\n\r\n that.set('GlobalError', true);\r\n that.set('ErrorMessage', Localizer('boxstreetvalidation'));\r\n return false;\r\n\r\n }\r\n\r\n }\r\n\r\n } else {\r\n\r\n that.set('GlobalError', true);\r\n that.set('ErrorMessage', Localizer('boxstreetvalidation'));\r\n return false;\r\n\r\n }\r\n \r\n }\r\n\r\n boxregex = /^P(\\.|\\s|)O(\\.|\\s|)$/i;\r\n if (boxregex.test(streetBox)) {\r\n\r\n that.set('GlobalError', true);\r\n that.set('ErrorMessage', Localizer('code10004'));\r\n return false;\r\n\r\n }\r\n\r\n }\r\n\r\n if (CommonMethods.GetElement('.poboxdisallowed').length > 0) {\r\n\r\n var street = that.get('TheAddress.street') || '';\r\n var street2 = that.get('TheAddress.street2') || '';\r\n var poboxRestrictionRegex = new RegExp(Shop.Localization.poboxRestrictionRegex);\r\n var poboxNonRestrictedStateList = Shop.Localization.poboxNonRestrictedStateList || '';\r\n street = street !== '' ? poboxRestrictionRegex.test(street.toLowerCase().replace(/ /g, ''))\r\n : false;\r\n street2 = street2 !== '' ? poboxRestrictionRegex.test(street2.toLowerCase().replace(/ /g, ''))\r\n : false;\r\n var validatePOBox = true;\r\n if (poboxNonRestrictedStateList !== '') {\r\n\r\n var stateList = poboxNonRestrictedStateList.split(',');\r\n for (var i = 0; i < stateList.length; i++) {\r\n\r\n if (stateList[i] === that.get('TheAddress.state')) {\r\n\r\n validatePOBox = false;\r\n break;\r\n\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n if (validatePOBox && (street || street2)) {\r\n\r\n that.set('GlobalError', true);\r\n that.set('ErrorMessage', Localizer('poboxdisallowed'));\r\n return false;\r\n\r\n }\r\n\r\n that.set('ErrorOnSave', false);\r\n\r\n }\r\n var _address = that.get('TheAddress');\r\n var _toBlock = '#address-form';\r\n var _promise;\r\n var _data;\r\n var _type;\r\n var _url;\r\n\r\n that.SetGlobalError(false, '');\r\n that.SetStatusForSavingAddress(true);\r\n if (_address.IsAdding) {\r\n\r\n _data = JSON.stringify(_address.toAddressViewModel());\r\n _type = 'POST';\r\n\r\n } else {\r\n\r\n _data = JSON.stringify(_address.toNewAddressViewModel());\r\n _type = 'PUT';\r\n\r\n }\r\n\r\n var _toValidate = that.get('ToValidate');\r\n if (AccountCountryConfig.IsAVSAddressValidationEnabled()) {\r\n\r\n _url = '/Account/API/AddressV1/' + Shop.Locale + '?ToValidate=' + _toValidate;\r\n\r\n } else {\r\n\r\n _url = ShopUrls.AddressAPI();\r\n\r\n }\r\n\r\n _promise = CommonMethods.ProcessRequest(_url, _data, _type);\r\n\r\n that.ResetMessages();\r\n\r\n if (_promise) {\r\n\r\n CommonMethods.Progress(_toBlock, true);\r\n\r\n _promise.done(function (data, status, jXHR) {\r\n\r\n if (data && data.statusCode) {\r\n\r\n _data = data.address;\r\n var _savedAddresses = that.get('SavedAddresses');\r\n\r\n // Prevent repeated primary tag\r\n if (_data.isPrimary === true) {\r\n\r\n that.SetPrimaryTag(_data);\r\n\r\n }\r\n\r\n // Add address to datasource\r\n if (_address.IsAdding) {\r\n\r\n // Set New Shipping Address\r\n that.SetShippingAddress(_address.fromAddressViewModel(_data));\r\n _savedAddresses.insert(0, _address.toAddressViewModel());\r\n\r\n } else {\r\n\r\n // Set Updated Values\r\n that.SetShippingAddress(_data);\r\n // Update in datasource\r\n _savedAddresses.pushUpdate(_data);\r\n\r\n }\r\n \r\n var _addressUpdate = that.get('ShippingAddress');\r\n that.PublishAddressUpdateEvt(_addressUpdate);\r\n that.set('WarningMessage', '');\r\n\r\n _savedAddresses.sync();\r\n\r\n if (data.statusCode === 10009) {\r\n\r\n that.set('SavedNotExpValidPhone', true);\r\n that.set('SavedCorrectly', true);\r\n\r\n } else {\r\n\r\n that.set('SavedCorrectly', true);\r\n\r\n }\r\n that.CloseForm();\r\n simpleMediator.publish(\r\n 'UpdateNotificationEvt',\r\n [\r\n { property: 'WasAddressValidated', value: true }\r\n ]\r\n );\r\n simpleMediator.publish('HideErrorsAddressEvt');\r\n\r\n }\r\n })\r\n .always(function () {\r\n that.set('ToValidate', true);\r\n CommonMethods.Progress(_toBlock, false);\r\n })\r\n .fail(function (response, status, message) {\r\n var _status = response.status;\r\n\r\n if (response.responseJSON.statusCode === 10006) {\r\n\r\n window.location.href = '/Account/Authentication/Login/' + Shop.Locale;\r\n\r\n }\r\n\r\n if (response.responseJSON.statusCode === 10004) {\r\n\r\n that.set('GlobalError', true);\r\n that.set('ErrorMessage', Localizer('code10004'));\r\n\r\n } else if (response.responseJSON.statusCode === 10005) {\r\n\r\n that.set('GlobalError', true);\r\n that.set('ErrorMessage', Localizer('avsaddresserrormsg'));\r\n\r\n } else if (response.responseJSON.statusCode === 10008) {\r\n\r\n //that.set('GlobalError', true); \r\n that.set('ErrorExpPhone', true);\r\n that.set('ExpPhoneErrorMsg', Localizer('code10008'));\r\n\r\n } else if (response.responseJSON.statusCode === 10011) {\r\n\r\n that.set('GlobalError', true);\r\n that.set('ErrorMessage', Localizer('poboxstreetvalidation'));\r\n\r\n } else if (_status === 500) {\r\n\r\n that.set('GlobalError', true);\r\n that.set('ErrorMessage', message);\r\n\r\n } else if (_status === 400) {\r\n\r\n if (AccountCountryConfig.IsAVSAddressValidationEnabled()) {\r\n\r\n that.ShowWarningErrorMessagesForUsPr(response);\r\n that.UpdateCurrentAddressWithResponse(response);\r\n\r\n } else {\r\n\r\n var _code = response.responseJSON.statusCode; \r\n that.set('GlobalError', true);\r\n that.set('ErrorMessage', Localizer('code' + _code));\r\n\r\n }\r\n\r\n }\r\n\r\n });\r\n\r\n }\r\n\r\n that.SetStatusForSavingAddress(false);\r\n that.ShowHideEmailFormOnCartPage();\r\n\r\n if (IsCart) {\r\n\r\n $('.right-content a').removeClass('disabled');\r\n\r\n }\r\n };\r\n\r\n this.SetPrimaryTag = function (data) {\r\n\r\n var that = this;\r\n var _savedAddresses = that.get('SavedAddresses');\r\n var _total = _savedAddresses.total();\r\n\r\n if (_total > 0) {\r\n\r\n for (var j = 0; j < _total; j++) {\r\n\r\n var _theAddress = _savedAddresses.at(j);\r\n if (_theAddress.isPrimary === true && _theAddress.id !== data.id) {\r\n\r\n _theAddress.isPrimary = false;\r\n\r\n }\r\n\r\n }\r\n\r\n }\r\n };\r\n\r\n this.PublishAddressUpdateEvt = function (addressUpdate) {\r\n simpleMediator.publish('AddressUpdateNotificationEvt', [\r\n { property: 'addressUpdate', value: addressUpdate }\r\n ]); \r\n };\r\n\r\n this.UpdateCurrentAddressWithResponse = function (response) {\r\n\r\n var that = this;\r\n\r\n if (response.responseJSON instanceof Array && response.responseJSON.length > 0) {\r\n\r\n var data = response.responseJSON;\r\n that.set('TheAddress.fusionAddressType', data[0].address.fusionAddressType);\r\n that.set('TheAddress.clubType', data[0].address.clubType);\r\n that.set('TheAddress.isAVSValid', data[0].address.isAVSValid);\r\n that.set('TheAddress.isValidAddress', data[0].address.isValidAddress);\r\n\r\n }\r\n\r\n };\r\n\r\n this.ShowWarningErrorMessagesForUsPr = function (response) {\r\n var that = this;\r\n if (response.responseJSON instanceof Array) {\r\n\r\n var _blocked = false;\r\n var data = response.responseJSON;\r\n var _modal = GetKendoWindow('#modal-address-warning-account');\r\n var _shouldShowModal = that.get('EditMode');\r\n\r\n for (var _i = 0; _i < data.length; _i++) {\r\n\r\n if (data[_i].messageType === 1) {\r\n\r\n // Popup/Warning\r\n var _warningMessage = Shop.AddressErrors.warning[data[_i].elementMatching];\r\n var _continueMessage = Shop.AddressErrors.continueButton[data[_i].elementMatching];\r\n\r\n // To show popup/warning for DS address type.\r\n if (_shouldShowModal) {\r\n\r\n that.set('ContinueWarningMessage', _warningMessage);\r\n that.set('ContinueMessage', _continueMessage);\r\n\r\n } else {\r\n\r\n that.set('WarningMessage', _warningMessage);\r\n\r\n }\r\n\r\n } else if (data[_i].messageType === 2) {\r\n\r\n //blocking\r\n var _matching = data[_i].elementMatching;\r\n _blockedMessages.push(_matching);\r\n that.set('BlockingMessage' + _matching, Shop.AddressErrors.block[_matching]);\r\n _blocked = true;\r\n that.set('ShowNotificationsContainer', true);\r\n\r\n }\r\n\r\n }\r\n\r\n if (!_blocked && _shouldShowModal) {\r\n\r\n _modal.center().open();\r\n\r\n }\r\n\r\n } else {\r\n\r\n var _code = response.responseJSON.statusCode; \r\n that.set('GlobalError', true);\r\n that.set('ErrorMessage', Localizer('code' + _code));\r\n\r\n }\r\n\r\n };\r\n\r\n this.HideErrorsAddress = function () {\r\n var that = this;\r\n for (var _i = 0; _i < _blockedMessages.length; _i++) {\r\n\r\n that.set('BlockingMessage' + _blockedMessages[_i], '');\r\n\r\n }\r\n _blockedMessages = [];\r\n };\r\n\r\n this.CloseAddressModal = function () {\r\n var _modal = GetKendoWindow('#modal-address-warning-account');\r\n _modal.close();\r\n };\r\n\r\n this.ContinueWithWarning = function () {\r\n var that = this;\r\n that.set('ToValidate', false);\r\n that.CloseAddressModal();\r\n that.Save();\r\n };\r\n\r\n this.SelectAddress = function (e) {\r\n var that = this;\r\n var _selectedAddress = e.data;\r\n\r\n // Set New Shipping Address\r\n that.SetShippingAddress(_selectedAddress);\r\n\r\n that.SetEditMode(false);\r\n that.set('ChangeMode', false);\r\n that.ShowHideEmailFormOnCartPage(true);\r\n\r\n var _addressUpdate = that.get('ShippingAddress');\r\n that.PublishAddressUpdateEvt(_addressUpdate);\r\n };\r\n\r\n this.SetGlobalError = function (value, message) {\r\n var that = this;\r\n message = message || ''; \r\n \r\n that.set('GlobalError', value);\r\n that.set('ErrorMessage', message);\r\n };\r\n\r\n this.DaumAddressSearch = function (e) {\r\n\r\n var that = this;\r\n $('#wrapDaum').show();\r\n var currentScroll = Math.max(document.body.scrollTop, document.documentElement.scrollTop);\r\n var elementWrap = document.getElementById('wrapDaum');\r\n new daum.Postcode({\r\n oncomplete: function (data) {\r\n\r\n that.set('TheAddress.stateProvinceTerritory', data.sido);\r\n that.set('TheAddress.city', data.sigungu);\r\n that.set('TheAddress.street', data.sigungu + ' ' + data.roadAddress);\r\n that.set('TheAddress.zipCode', data.zonecode);\r\n $('#stateProvinceTerritory,#street,#zipCode').focusout();\r\n elementWrap.style.display = 'none';\r\n document.body.scrollTop = currentScroll;\r\n\r\n },\r\n onresize: function (size) {\r\n\r\n elementWrap.style.height = size.height + 'px';\r\n\r\n },\r\n width: '100%',\r\n height: '100%'\r\n }).embed(elementWrap);\r\n $('#wrapDaum').css('display', 'block');\r\n };\r\n this.SetStatusForSavingAddress = function (value) {\r\n\r\n IsSavingAddress = value;\r\n\r\n };\r\n\r\n this.OpenAbbreviationList = function () {\r\n\r\n this.set('DisplayAbbreviationList', false);\r\n\r\n };\r\n\r\n this.CloseAbbreviationList = function () {\r\n\r\n this.set('DisplayAbbreviationList', true);\r\n\r\n };\r\n\r\n this.ChangeState = function (e) {\r\n var that = this;\r\n var CityWithStateList = that.get('CityWithStateList');\r\n var SelectedCity = that.get('TheAddress.city');\r\n for (var i = 0; i < CityWithStateList.length; i++) {\r\n\r\n if (CityWithStateList[i].city === SelectedCity) {\r\n\r\n that.set('TheAddress.state', CityWithStateList[i].state);\r\n break;\r\n\r\n }\r\n\r\n }\r\n };\r\n\r\n this.RequestCitiesCountiesAndZips = function () {\r\n this.RequestCities();\r\n this.RequestCounties();\r\n this.RequestZipByCounty();\r\n };\r\n this.RequestInfoAddressMuncipalityByZip = function (_callback) {\r\n var that = this;\r\n that.set('InvalidZipCode', false);\r\n var _strZipCode = that.get('TheAddress.zipCode') ? that.get('TheAddress.zipCode').trim() : '';\r\n\r\n if (_strZipCode === '') {\r\n\r\n _strZipCode = that.get('CurrentPostalCode') !== '' ? that.get('CurrentPostalCode') : '';\r\n\r\n }\r\n\r\n if (_strZipCode && _strZipCode.length > 4) {\r\n\r\n var _toBlock = '#address-form';\r\n var _promise;\r\n var _type = 'GET';\r\n\r\n var _params = '/Account/API/ShippingServicev1?countryCode=' + Shop.CountryCode + '&filterValue=' +\r\n that.get('TheAddress.zipCode') + '&filter=' + 'GetStateCityAndMuncipalityByZipcode';\r\n\r\n _promise = CommonMethods.ProcessRequest(_params, null, _type);\r\n\r\n if (_promise) {\r\n\r\n CommonMethods.Progress(_toBlock, true);\r\n\r\n _promise.done(function (data, status, jXHR) {\r\n\r\n if (data) {\r\n\r\n _callback(data);\r\n\r\n } else {\r\n\r\n that.set('InvalidZipCode', true);\r\n\r\n }\r\n })\r\n .always(function () {\r\n CommonMethods.Progress(_toBlock, false);\r\n });\r\n\r\n }\r\n\r\n } else {\r\n\r\n that.set('InvalidZipCode', true);\r\n\r\n }\r\n };\r\n\r\n this.RequestColoniCityAndStatesByZip = function (e) {\r\n var that = this;\r\n var _e = e;\r\n var _colonia = [];\r\n that.set('Coloniavisible', true);\r\n that.set('Colonia', []);\r\n\r\n if (_e) {\r\n\r\n that.set('TheAddress.colonia', '');\r\n that.set('TheAddress.city', '');\r\n that.set('TheAddress.state', '');\r\n that.set('TheAddress.street', '');\r\n that.set('TheAddress.countyDistrict', '');\r\n that.set('TheAddress.statecode', '');\r\n\r\n }\r\n\r\n var _callback = function (data) {\r\n\r\n if (!!!data) {\r\n\r\n return;\r\n\r\n }\r\n\r\n for (var _i = 0; _i < data.length; _i++) {\r\n\r\n _colonia.push({ value: data[_i].neighbourhood, label: data[_i].neighbourhood });\r\n\r\n }\r\n _colonia.push({ value: 'notFound', label: Localizer('othersOptionInDropDown') });\r\n that.set('Colonia', _colonia);\r\n if (data.length > 0) {\r\n\r\n that.set('InvalidZipCode', false);\r\n\r\n if (_e) {\r\n\r\n that.set('TheAddress.city', data[0].city);\r\n that.set('TheAddress.state', data[0].state);\r\n that.set('TheAddress.colonia', _colonia[0].value);\r\n that.set('TheAddress.countyDistrict', data[0].neighbourhood);\r\n that.set('TheAddress.street', data[0].street);\r\n that.set('TheAddress.statecode', data[0].stateCode);\r\n\r\n }\r\n\r\n } else {\r\n\r\n that.set('TheAddress.colonia', 'notFound');\r\n\r\n }\r\n };\r\n that.RequestInfoAddressMuncipalityByZip(_callback);\r\n };\r\n\r\n this.OnColoniaChange = function () {\r\n var that = this;\r\n that.set('TheAddress.line4', '');\r\n };\r\n\r\n this.ShowLine4 = function () {\r\n var that = this;\r\n return that.get('TheAddress.colonia') === 'notFound';\r\n };\r\n\r\n this.FetchShippingAddress = function (CartDetails) {\r\n var that = this;\r\n var _savedAddresses;\r\n\r\n CommonMethods.Progress('#current-address', false);\r\n\r\n _savedAddresses = CartDetails;\r\n //_savedAddresses.read().then(function () {\r\n var _data = CartDetails;\r\n var _address;\r\n var _defaultAddress;\r\n var _hasSavedAddresses = false;\r\n if (_data.length > 0) {\r\n\r\n _defaultAddress = CartDetails.shippingAddress || false;\r\n var _isDefaultAddressValid = (_defaultAddress && _defaultAddress.id);\r\n if (_isDefaultAddressValid && _savedAddresses.get(_defaultAddress.id)) {\r\n\r\n _address = _savedAddresses.get(_defaultAddress.id);\r\n\r\n }// else {\r\n\r\n // _address = GetPrimaryAddress(_data); // This was commented due it doesn't exist.\r\n\r\n //} \r\n that.SetShippingAddress(_address);\r\n var ShoppingCartViewModel = viewModelHelpers.wire.getInstance('ShoppingCartViewModel', 'shared');\r\n that.set('Email', ShoppingCartViewModel.Email);\r\n _hasSavedAddresses = true;\r\n\r\n } else {\r\n\r\n that.AddNewAddress();\r\n\r\n }\r\n\r\n that.set('HasSavedAddresses', _hasSavedAddresses);\r\n\r\n //});\r\n\r\n };\r\n\r\n this.SetShippingAddress = function (address) {\r\n var that = this;\r\n\r\n if (address) {\r\n\r\n that.set('ShippingAddress', new AddressModelMaker(address));\r\n that.set('DisplayName', that.get('ShippingAddress').displayName());\r\n that.set('FullAddress', that.get('ShippingAddress').fullAddress());\r\n that.set('ShippingAddressError', false); \r\n\r\n } else {\r\n\r\n that.set('ShippingAddressError', true);\r\n\r\n }\r\n\r\n };\r\n\r\n this.ShowHideEmailFormOnCartPage = function (visible) {\r\n\r\n if (IsCart) {\r\n\r\n if (visible) {\r\n\r\n $('[wire-model=ShoppingCartViewModel]').show();\r\n\r\n } else {\r\n\r\n $('[wire-model=ShoppingCartViewModel]').hide();\r\n\r\n }\r\n\r\n }\r\n\r\n };\r\n\r\n this.RequestAddressNicknameCitiesAndStatesByZip = function (e) {\r\n var that = this;\r\n var _e = e;\r\n that.set('States', []);\r\n that.set('Cities', []);\r\n that.set('streetnumber', []);\r\n that.set('nickname', []);\r\n\r\n if (_e) {\r\n\r\n that.set('TheAddress.city', '');\r\n that.set('TheAddress.States', '');\r\n that.set('TheAddress.streetnumber', '');\r\n that.set('TheAddress.nickname', '');\r\n\r\n }\r\n var _callback = function (data) {\r\n if (!!!data) {\r\n\r\n return;\r\n\r\n }\r\n var _i;\r\n var _length = data.length;\r\n var _states = [];\r\n var _cities = [];\r\n var _streetnumber = [];\r\n var _nickname = [];\r\n var _zipCode = [];\r\n\r\n for (_i = 0; _i < _length; _i++) {\r\n\r\n var state = data[_i].State || '';\r\n\r\n if (state === '') {\r\n\r\n state = data[_i].stateProvinceTerritory || '';\r\n\r\n }\r\n\r\n _states.push(state);\r\n _cities.push(data[_i].city);\r\n _streetnumber.push(data[_i].line1);\r\n _nickname.push(data[_i].nickname);\r\n _zipCode.push(data[_i].postalCode.substring(0, 5) + '-' + data[_i].postalCode.substring(5));\r\n\r\n }\r\n\r\n that.set('States', _states);\r\n that.set('Cities', _cities);\r\n that.set('nickname', _nickname);\r\n that.set('streetnumber', _streetnumber);\r\n that.set('zipCode', _zipCode);\r\n\r\n if (_states.length > 0 && _cities.length > 0) {\r\n\r\n that.set('InvalidZipCode', false);\r\n\r\n if (_e) {\r\n\r\n that.set('TheAddress.States', _states[0]);\r\n that.set('TheAddress.city', _cities[0]);\r\n that.set('TheAddress.nickname', _nickname[0]);\r\n that.set('TheAddress.streetnumber', _streetnumber[0]);\r\n that.set('TheAddress.zipCode', _zipCode[0]);\r\n\r\n }\r\n\r\n } else {\r\n\r\n that.set('InvalidZipCode', true);\r\n\r\n }\r\n };\r\n\r\n that.RequestInfoAddressWithStreetByZip(_callback);\r\n };\r\n this.GetShippingUrl = function (param) {\r\n\r\n return ShopUrls.AccountShippingUrl(param);\r\n\r\n };\r\n\r\n this.RequestInfoAddressWithStreetByZip = function (_callback) {\r\n var that = this;\r\n that.set('InvalidZipCode', false);\r\n var _strZipCode = that.get('TheAddress.zipCode') ? that.get('TheAddress.zipCode').trim() : '';\r\n var _zipCode = CommonMethods.GetKendoValidator('#zipCode');\r\n\r\n if (_zipCode.validate()) {\r\n\r\n var _toBlock = '#address-form';\r\n var _promise;\r\n var _type = 'GET';\r\n var _params = '?filterValue=' + _strZipCode + '&countryCode=' + Shop.CountryCode +\r\n '&filter=GetStreetAddressCityStateByZip';\r\n var apiUrl = that.GetShippingUrl(_params);\r\n _promise = CommonMethods.ProcessRequest(apiUrl, null, _type);\r\n\r\n if (_promise) {\r\n\r\n CommonMethods.Progress(_toBlock, true);\r\n\r\n _promise.done(function (data, status, jXHR) {\r\n\r\n if (data) {\r\n\r\n _callback(data);\r\n\r\n } else {\r\n\r\n that.set('InvalidZipCode', true);\r\n\r\n }\r\n\r\n })\r\n .always(function () {\r\n CommonMethods.Progress(_toBlock, false);\r\n });\r\n\r\n }\r\n\r\n }\r\n\r\n };\r\n\r\n this.AddressesDataSource = new kendo.data.DataSource({\r\n schema: {\r\n parse: function (response) {\r\n var _dsList = [];\r\n\r\n for (var i = 0; i < response.length; i++) {\r\n\r\n _dsList.push({\r\n 'stateProvinceTerritory': response[i].stateProvinceTerritory || '',\r\n 'line1': response[i].line1 || '',\r\n 'line2': response[i].line2 || '',\r\n 'countyDistrict': response[i].countyDistrict || '',\r\n 'postalCode': response[i].postalCode || '',\r\n 'city': response[i].city || ''\r\n });\r\n\r\n }\r\n response.data = _dsList;\r\n return response;\r\n },\r\n data: 'data'\r\n },\r\n transport: {\r\n read: {\r\n url: ShopUrls.AccountShippingUrl()\r\n },\r\n parameterMap: function (data, action) {\r\n return {\r\n countryCode: Shop.CountryCode,\r\n filterValue: _self.get('state'),\r\n filter: 'GetAddressListByState'\r\n };\r\n }\r\n },\r\n requestStart: function (e) {\r\n CommonMethods.Progress('#addressListdiv', true);\r\n },\r\n requestEnd: function (e) {\r\n CommonMethods.Progress('#addressListdiv', false);\r\n }\r\n });\r\n\r\n this.OnClickSearchAddresses = function () {\r\n var that = this;\r\n var id = '#addressListdiv';\r\n var _w = GetKendoWindow(id);\r\n _w.center().open();\r\n\r\n that.RequestStatesByCourierTable();\r\n\r\n };\r\n\r\n this.SearchAddress = function (e) {\r\n var that = this;\r\n var _search = $('#search-address').val();\r\n if (_search.length === 0) {\r\n\r\n $('#spnMatching').css('display', 'none');\r\n\r\n }\r\n\r\n var _countryCode = AccountCountryConfig.ISO_3_CountryCode(Shop.CountryCode);\r\n var _params = _search + '&country=' + _countryCode + '&take=10&auth-token=';\r\n var _url = Shop.ExperianApi + _params + Shop.ExperianTokenKey;\r\n\r\n var callback = function (data) {\r\n\r\n if (_search.length >= 3 && data.length === 0) {\r\n\r\n $('#spnMatching').css('display', 'block');\r\n $('#spnMatching').css('color', 'red');\r\n\r\n } else {\r\n\r\n $('#spnMatching').css('display', 'none');\r\n\r\n }\r\n \r\n if (data.length !== 0) {\r\n\r\n that.set('Suggestions', data);\r\n that.set('NotFound', false);\r\n that.set('SuggestionsList', true);\r\n $('#spnMatching').css('display', 'none'); \r\n\r\n } else {\r\n\r\n that.set('SuggestionsList', false);\r\n that.set('NotFound', true);\r\n //that.set('ErrorMessage', Shop.ExperianErrors.addressNotFound);\r\n\r\n }\r\n };\r\n\r\n that.HideSuggestionsList();\r\n\r\n if (_search !== '' && _search.length >= 3) {\r\n\r\n $.ajax({\r\n url: _url,\r\n success: function (result) {\r\n var data = result;\r\n callback(data.results);\r\n }\r\n });\r\n\r\n }\r\n };\r\n\r\n this.HideSuggestionsList = function () {\r\n\r\n var that = this;\r\n that.set('SuggestionsList', false);\r\n\r\n };\r\n\r\n this.OnSearchAddress = function (e) {\r\n var that = this; \r\n var _class = 'selected';\r\n var _url = e.data.format + '&auth-token=' + Shop.ExperianTokenKey;\r\n\r\n $('#search-address>li.' + _class).removeClass(_class);\r\n $(e.currentTarget).addClass(_class);\r\n that.set('SuggestionsList', false);\r\n that.set('NotFound', false);\r\n $.ajax({\r\n url: _url,\r\n success: function (result) {\r\n var data = result;\r\n var array = data.components;\r\n var _street2 = data.address[1].addressLine2;\r\n var _state = data.address[4].province;\r\n var _city = data.address[3].locality;\r\n var _zipcode = data.address[5].postalCode;\r\n var _neighbourhood = array[2].locality2;\r\n var _poboxnumber = '';\r\n var _streetName = '';\r\n var _buildingName = ''; \r\n var _suiteNumber = '';\r\n\r\n if (Shop.CountryCode === 'AU') {\r\n\r\n for (var i = 0; i < array.length; i++) {\r\n\r\n if (array[i].street1 !== undefined) {\r\n\r\n $('#street').attr('readonly', true);\r\n _streetName = array[i].street1;\r\n\r\n }\r\n if (!_streetName) {\r\n\r\n $('#street').attr('readonly', false);\r\n\r\n if (array[i].deliveryService1 !== undefined) {\r\n\r\n _streetName = array[i].deliveryService1;\r\n\r\n }\r\n\r\n }\r\n if (array[i].building1 !== undefined) {\r\n\r\n _buildingName = array[i].building1;\r\n\r\n }\r\n if (array[i].streetNumber1 !== undefined) {\r\n\r\n _poboxnumber = array[i].streetNumber1;\r\n\r\n }\r\n if (array[i].streetNumber2 !== undefined) {\r\n\r\n _poboxnumber = array[i].streetNumber2;\r\n\r\n }\r\n if (array[i].locality1 !== undefined) {\r\n\r\n _city = array[i].locality1;\r\n\r\n }\r\n if (array[i].provinceCode1 !== undefined) {\r\n\r\n _state = array[i].provinceCode1;\r\n\r\n }\r\n if (array[i].postalCode1 !== undefined) {\r\n\r\n _zipcode = array[i].postalCode1;\r\n\r\n }\r\n if (array[i].subBuilding1 !== undefined) {\r\n\r\n _suiteNumber = array[i].subBuilding1;\r\n\r\n }\r\n\r\n } \r\n that.set('TheAddress.pobox', _poboxnumber); \r\n that.set('TheAddress.street', _streetName); \r\n that.set('TheAddress.buildingName', _buildingName); \r\n that.set('TheAddress.suiteNumber', _suiteNumber);\r\n\r\n }\r\n\r\n if (Shop.CountryCode !== 'AU') {\r\n\r\n var _street = data.address[0].addressLine1;\r\n if (isSet($('input[name=\"street\"]').val())) {\r\n\r\n that.set('TheAddress.street1', $('input[name=\"street\"]').val());\r\n\r\n } else {\r\n\r\n that.set('TheAddress.street1', _street);\r\n $('input[name=\"street\"]').val(_street);\r\n\r\n }\r\n\r\n }\r\n\r\n if (isSet($('input[name=\"street2\"]').val())) {\r\n\r\n that.set('TheAddress.street2', $('input[name=\"street2\"]').val());\r\n\r\n } else {\r\n\r\n that.set('TheAddress.street2', _street2);\r\n $('input[name=\"street2\"]').val(_street2);\r\n\r\n }\r\n\r\n that.set('TheAddress.state', _state); \r\n that.set('TheAddress.city', _city); \r\n that.set('TheAddress.zipCode', _zipcode); \r\n that.set('TheAddress.countyDistrict', _neighbourhood); \r\n\r\n $('#search-address').val('');\r\n that.set('SuggestionsList', false);\r\n $('input[name=\"zipCode\"]').focus();\r\n $('input[name=\"zipCode\"]').blur();\r\n $('input[name=\"city\"]').focus();\r\n $('input[name=\"city\"]').blur();\r\n $('input[name=\"state\"]').focus();\r\n $('input[name=\"state\"]').blur();\r\n $('input[name=\"street\"]').focus();\r\n $('input[name=\"street\"]').blur(); \r\n $('input[name=\"street2\"]').focus();\r\n $('input[name=\"street2\"]').blur();\r\n }\r\n\r\n });\r\n\r\n that.HideAddressFormErrors();\r\n\r\n };\r\n\r\n this.HideAddressFormErrors = function () {\r\n\r\n var _validator = CommonMethods.GetKendoValidator('#address-form');\r\n\r\n if (_validator) {\r\n\r\n _validator.hideErrors();\r\n\r\n }\r\n\r\n };\r\n function isSet(value) {\r\n\r\n var isDataNull = false;\r\n if (value !== '' && value !== undefined && value !== null) {\r\n\r\n isDataNull = true;\r\n\r\n }\r\n return isDataNull;\r\n }\r\n\r\n this.RequestStatesByCourierTable = function () {\r\n\r\n var that = this;\r\n that.set('States', []);\r\n var _toBlock = '#addressListdiv';\r\n var _promise;\r\n var _type = 'GET';\r\n var _params = '?countryCode=' + Shop.CountryCode + '&filter=' +\r\n 'GetStatesForCountryUsingCourierTable&filterValue=' + Shop.CountryCode;\r\n var apiUrl = ShopUrls.AccountShippingUrl(_params);\r\n\r\n _promise = CommonMethods.ProcessRequest(apiUrl, null, _type);\r\n\r\n if (_promise) {\r\n\r\n CommonMethods.Progress(_toBlock, true);\r\n\r\n _promise.done(function (data, status, jXHR) {\r\n\r\n if (data) {\r\n\r\n var _i;\r\n var _length = data.length;\r\n var _states = [];\r\n\r\n _states.push(Shop.Localization.stateOption);\r\n\r\n for (_i = 0; _i < _length; _i++) {\r\n\r\n _states.push(data[_i]);\r\n\r\n }\r\n that.set('States', _states);\r\n if (_states.length > 0) {\r\n\r\n that.set('state', _states[0]);\r\n\r\n }\r\n\r\n }\r\n\r\n }).always(function () {\r\n CommonMethods.Progress(_toBlock, false);\r\n });\r\n\r\n }\r\n\r\n };\r\n\r\n this.LoadAddressList = function () {\r\n\r\n var that = this;\r\n\r\n that.get('AddressesDataSource').read();\r\n };\r\n\r\n this.SelectCurrentPickupAddress = function (e) {\r\n var that = this;\r\n var _selectedAddress = e.data;\r\n var getCurrentAddress = that.get('ShippingAddress');\r\n\r\n getCurrentAddress.street = _selectedAddress.line1;\r\n getCurrentAddress.street2 = _selectedAddress.line1;\r\n getCurrentAddress.zipCode = _selectedAddress.postalCode;\r\n getCurrentAddress.city = _selectedAddress.city;\r\n getCurrentAddress.addressType = '2';\r\n\r\n that.set('ShippingAddress', getCurrentAddress);\r\n that.set('DisplayName', that.get('ShippingAddress').displayName());\r\n that.set('FullAddress', that.get('ShippingAddress').fullAddress());\r\n that.set('ShippingAddressError', false);\r\n\r\n var _w = GetKendoWindow('#addressListdiv');\r\n _w.close();\r\n };\r\n\r\n // === /Public Methods\r\n\r\n // === Private Methods\r\n\r\n function uniqueValues(value, index, self) {\r\n return self.indexOf(value) === index;\r\n }\r\n // === /Private Methods\r\n}","function AccountAddressViewModel_IT() {\r\n\r\n // Extends from AccountAddressViewModel\r\n AccountAddressViewModel.call(this);\r\n\r\n // Public properties\r\n this.AddressValidated = false;\r\n this.DataForSelectedAddress = {};\r\n\r\n this.AddNewAddress = function (e) {\r\n var that = this;\r\n var _address;\r\n\r\n _address = new AddressModelMaker({ isPrimary: false });\r\n _address.IsAdding = true;\r\n\r\n that.ResetMessages();\r\n that.set('TheAddress', _address);\r\n that.set('Cities', []);\r\n that.set('AddressValidated', false);\r\n\r\n that.SetEditMode(true);\r\n var _cities = [];\r\n that.set('Cities', _cities);\r\n that.set('TheAddress.city', _cities.shift());\r\n that.set('Colonia', []);\r\n that.set('Counties', []);\r\n };\r\n\r\n this.SetShippingAddress = function (address) {\r\n var that = this;\r\n\r\n if (address) {\r\n\r\n if (address.isExperianAddressValidated === true) {\r\n\r\n that.set('AddressValidated', !address.isExperianAddressValidated);\r\n\r\n }\r\n\r\n that.set('ShippingAddress', new AddressModelMaker(address));\r\n that.set('DisplayName', that.get('ShippingAddress').displayName());\r\n that.set('FullAddress', that.get('ShippingAddress').fullAddress());\r\n that.set('ShippingAddressError', false);\r\n\r\n } else {\r\n\r\n that.set('ShippingAddressError', true);\r\n\r\n }\r\n };\r\n\r\n this.SearchAddress = function (e) {\r\n var that = this;\r\n var _search = $('#search-address').val();\r\n that.set('Suggestions', []);\r\n that.set('ErrorOnExpSearch', false);\r\n that.HideSuggestionsList();\r\n var _toBlock = '#address-form';\r\n var _promise;\r\n\r\n var _countryCode = AccountCountryConfig.ISO_3_CountryCode(Shop.CountryCode);\r\n var _params = _search + '&country=' + _countryCode + '&take=10&auth-token=';\r\n var _url = Shop.ExperianApi + _params + Shop.ExperianTokenKey;\r\n\r\n var callback = function (data) {\r\n\r\n if (_search.length >= 3 && data.length === 0) {\r\n\r\n that.set('ErrorOnExpSearch', true);\r\n\r\n } else {\r\n\r\n that.set('ErrorOnExpSearch', false);\r\n\r\n }\r\n\r\n if (data.length !== 0) {\r\n\r\n that.set('Suggestions', data);\r\n that.set('NotFound', false);\r\n that.set('SuggestionsList', true);\r\n that.set('ErrorOnExpSearch', false);\r\n\r\n } else {\r\n\r\n that.set('SuggestionsList', false);\r\n that.set('NotFound', true);\r\n\r\n }\r\n };\r\n\r\n that.HideSuggestionsList();\r\n\r\n if (_search !== '' && _search.length >= 3) {\r\n\r\n _promise = CommonMethods.ProcessRequest(_url, {});\r\n CommonMethods.Progress(_toBlock, true);\r\n _promise\r\n .done(function (data, status, jXHR) {\r\n\r\n callback(data.results);\r\n\r\n })\r\n .always(function () {\r\n\r\n CommonMethods.Progress(_toBlock, false);\r\n\r\n })\r\n .fail(function (response, status, message) {\r\n\r\n that.set('ErrorOnExpSearch', true);\r\n\r\n });\r\n\r\n }\r\n };\r\n\r\n this.OnSearchAddress = function (e) {\r\n var that = this;\r\n var _class = 'selected';\r\n var _url = e.data.format + '&auth-token=' + Shop.ExperianTokenKey;\r\n\r\n $('#search-address>li.' + _class).removeClass(_class);\r\n $(e.currentTarget).addClass(_class);\r\n that.set('SuggestionsList', false);\r\n that.set('NotFound', false);\r\n\r\n var _toBlock = '#address-form';\r\n var _promise = CommonMethods.ProcessRequest(_url, {});\r\n\r\n CommonMethods.Progress(_toBlock, true);\r\n _promise\r\n .done(function (result, status, jXHR) {\r\n\r\n var data = result;\r\n var _state = data.address[4].province;\r\n var _city = data.address[3].locality;\r\n var _zipCode = data.address[5].postalCode;\r\n var _streetName = '';\r\n\r\n if (data.address[0].addressLine1.trim().length > 1) {\r\n\r\n _streetName = data.address[0].addressLine1;\r\n that.set('TheAddress.SelectedStreet', _streetName);\r\n\r\n }\r\n that.set('TheAddress.street', _streetName);\r\n that.set('TheAddress.state', that.GetStateCode(_state));\r\n that.set('TheAddress.city', _city);\r\n that.set('TheAddress.zipCode', _zipCode);\r\n\r\n $('#search-address').val('');\r\n that.set('SuggestionsList', false);\r\n $('input[name=\"zipCode\"]').focus();\r\n $('input[name=\"zipCode\"]').blur();\r\n $('input[name=\"city\"]').focus();\r\n $('input[name=\"city\"]').blur();\r\n $('input[name=\"state\"]').focus();\r\n $('input[name=\"state\"]').blur();\r\n $('input[name=\"street\"]').focus();\r\n $('input[name=\"street\"]').blur();\r\n that.set('TheAddress.isExperianAddressValidated', true);\r\n that.HoldSelectedAddress(_streetName, _zipCode);\r\n\r\n })\r\n .always(function () {\r\n\r\n CommonMethods.Progress(_toBlock, false);\r\n\r\n })\r\n .fail(function (response, status, message) {\r\n\r\n that.set('ErrorOnExpSearch', true);\r\n\r\n });\r\n\r\n that.HideAddressFormErrors();\r\n\r\n };\r\n\r\n\r\n this.HoldSelectedAddress = function (street, postalCode) {\r\n var that = this;\r\n var dataForSelectedAddress = {\r\n street: street,\r\n postalCode: postalCode\r\n };\r\n\r\n that.set('DataForSelectedAddress', dataForSelectedAddress);\r\n\r\n };\r\n\r\n this.UpdatedAddress = function () {\r\n var that = this;\r\n\r\n return (that.get('DataForSelectedAddress.street') !== that.get('TheAddress.street') ||\r\n that.get('DataForSelectedAddress.postalCode') !== that.get('TheAddress.zipCode'));\r\n\r\n };\r\n\r\n\r\n this.Save = function () {\r\n var that = this;\r\n var _validator = CommonMethods.GetKendoValidator('#address-form');\r\n\r\n if (!_validator.validate()) {\r\n\r\n return;\r\n\r\n }\r\n\r\n if (that.CheckForNumbersInNames()) {\r\n\r\n that.set('GlobalError', true);\r\n that.set('ErrorMessage', Localizer('NameWithDigits'));\r\n return false;\r\n\r\n }\r\n\r\n var _address = that.get('TheAddress');\r\n var _toBlock = '#address-form';\r\n var _promise;\r\n var _data;\r\n var _type;\r\n\r\n that.SetStatusForSavingAddress(true);\r\n\r\n _address.state = this.GetStateCode(_address.state);\r\n _address.isExperianAddressValidated = (!that.UpdatedAddress() && _address.isExperianAddressValidated);\r\n if (_address.IsAdding) {\r\n\r\n _data = JSON.stringify(_address.toAddressViewModel());\r\n _type = 'POST';\r\n\r\n } else {\r\n\r\n _data = JSON.stringify(_address.toNewAddressViewModel());\r\n _type = 'PUT';\r\n\r\n }\r\n\r\n _promise = CommonMethods.ProcessRequest(ShopUrls.AddressAPI(), _data, _type);\r\n\r\n that.ResetMessages();\r\n\r\n CommonMethods.Progress(_toBlock, true);\r\n\r\n _promise\r\n .done(function (data, status, jXHR) {\r\n\r\n that.UpdateDataSourceWithIncomingData(data, _address);\r\n\r\n })\r\n .always(function () {\r\n\r\n CommonMethods.Progress(_toBlock, false);\r\n\r\n })\r\n .fail(function (response, status, message) {\r\n\r\n that.ShowAddressErrors(response);\r\n\r\n });\r\n\r\n };\r\n\r\n this.UpdateDataSourceWithIncomingData = function (data, address) {\r\n var that = this;\r\n\r\n if (data && data.statusCode) {\r\n\r\n var _data = data.address;\r\n var _savedAddresses = that.get('SavedAddresses');\r\n\r\n // Prevent repeated primary tag\r\n if (_data.isPrimary === true) {\r\n\r\n that.SetPrimaryTag(_data);\r\n\r\n }\r\n\r\n // Add address to datasource\r\n if (address.IsAdding) {\r\n\r\n // Set New Shipping Address\r\n that.SetShippingAddress(address.fromAddressViewModel(_data));\r\n _savedAddresses.insert(0, address.toAddressViewModel());\r\n\r\n } else {\r\n\r\n // Set Updated Values\r\n that.SetShippingAddress(_data);\r\n // Update in datasource\r\n _savedAddresses.pushUpdate(_data);\r\n\r\n }\r\n\r\n _savedAddresses.sync();\r\n\r\n if (data.statusCode === 10009) {\r\n\r\n that.set('SavedNotExpValidPhone', true);\r\n that.set('SavedCorrectly', true);\r\n that.CloseForm();\r\n\r\n } else {\r\n\r\n that.set('SavedCorrectly', true);\r\n that.CloseForm();\r\n\r\n }\r\n\r\n }\r\n\r\n };\r\n\r\n this.SetPrimaryTag = function (data) {\r\n\r\n var that = this;\r\n var _savedAddresses = that.get('SavedAddresses');\r\n var _total = _savedAddresses.total();\r\n\r\n if (_total > 0) {\r\n\r\n for (var j = 0; j < _total; j++) {\r\n\r\n var _theAddress = _savedAddresses.at(j);\r\n if (_theAddress.isPrimary === true && _theAddress.id !== data.id) {\r\n\r\n _theAddress.isPrimary = false;\r\n\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n };\r\n\r\n this.ShowAddressErrors = function (response) {\r\n var that = this;\r\n\r\n var _status = response.status;\r\n\r\n if (response.responseJSON.statusCode === 10006) {\r\n\r\n window.location.href = '/Account/Authentication/Login/' + Shop.Locale;\r\n\r\n }\r\n\r\n if (response.responseJSON.statusCode === 10004) {\r\n\r\n that.set('GlobalError', true);\r\n that.set('ErrorMessage', Localizer('code10004'));\r\n\r\n } else if (response.responseJSON.statusCode === 10005) {\r\n\r\n that.set('GlobalError', true);\r\n that.set('ErrorMessage', Localizer('avsaddresserrormsg'));\r\n\r\n } else if (_status === 500) {\r\n\r\n that.set('GlobalError', true);\r\n that.set('ErrorMessage', \"\");\r\n\r\n } else if (_status === 400) {\r\n\r\n var _code = response.responseJSON.statusCode;\r\n that.set('ErrorOnSave', true);\r\n that.set('ErrorMessage', Localizer('code' + _code));\r\n\r\n }\r\n\r\n };\r\n\r\n this.CloseForm = function (e) {\r\n var that = this;\r\n that.ShowHideEmailFormOnCartPage(true);\r\n var _form = CommonMethods.GetKendoValidator('#address-form');\r\n _form.hideErrors();\r\n _form.hideMessages();\r\n\r\n that.set('TheAddress', {});\r\n that.set('EditMode', false);\r\n $('#address-form').hide();\r\n that.set('ErrorOnSave', false);\r\n that.set('GlobalError', false);\r\n $('#wrapDaum').hide();\r\n $('#ship-to').css('visibility', 'visible');\r\n that.set('HasSavedAddresses', true);\r\n\r\n if (that.get('SavedAddresses').data().length === 0) {\r\n\r\n CommonMethods.Progress('#select-address', false);\r\n CommonMethods.Progress('#current-address', false);\r\n $('#ship-to').css('visibility', 'hidden');\r\n that.set('HasSavedAddresses', false);\r\n\r\n }\r\n\r\n if (IsCart) {\r\n\r\n $('.right-content a').removeClass('disabled');\r\n\r\n }\r\n\r\n that.HideVerifiedWarningMessage();\r\n\r\n };\r\n\r\n this.EditAddress = function (e) {\r\n var that = this;\r\n\r\n if (!IsCart) {\r\n\r\n that.SetShippingAddress(e.data);\r\n\r\n }\r\n\r\n that.ShowHideEmailFormOnCartPage(false);\r\n\r\n var _address = that.get('ShippingAddress').toNewAddressViewModel();\r\n _address = new AddressModelMaker(_address);\r\n _address.IsEditing = true;\r\n _address.state = this.GetStateCode(_address.state);\r\n that.ResetMessages();\r\n that.set('TheAddress', _address);\r\n that.SetEditMode(true);\r\n that.IsExperianAddressValidated(_address);\r\n that.HoldSelectedAddress(_address.street, _address.zipCode);\r\n\r\n };\r\n\r\n this.IsExperianAddressValidated = function (address) {\r\n var that = this;\r\n\r\n if (AccountCountryConfig.IsExperianAddressVerificationEnabled()) {\r\n\r\n CommonMethods.GetKendoValidator('#address-form').validate();\r\n that.set('AddressValidated', address.isExperianAddressValidated ? false : true);\r\n\r\n }\r\n\r\n };\r\n\r\n this.HideVerifiedWarningMessage = function () {\r\n var that = this;\r\n\r\n if (AccountCountryConfig.IsExperianAddressVerificationEnabled()) {\r\n\r\n that.set('AddressValidated', false);\r\n\r\n }\r\n\r\n };\r\n\r\n this.ResetMessages = function (e) {\r\n var that = this;\r\n\r\n that.set('SavedCorrectly', false);\r\n that.set('ErrorOnSave', false);\r\n that.set('ErrorExpPhone', false);\r\n that.set('SavedNotExpValidPhone', false);\r\n that.HideSuggestionsList();\r\n $('#search-address').val('');\r\n $('#spnMatching').css('display', 'none');\r\n that.set('AddressValidated', false);\r\n\r\n };\r\n\r\n this.InitAddressFormRules = function () {\r\n var that = this;\r\n\r\n Shop.AddressFormRules = { \r\n required: function (input) {\r\n\r\n return that.RequiredValidation(input);\r\n\r\n },\r\n pattern: function (input) {\r\n\r\n return that.PatternValidation(input);\r\n\r\n }\r\n };\r\n\r\n Shop.KValidatorMessages.required = function (input) {\r\n\r\n if (input.is('[name=\"zipCode\"]')) {\r\n\r\n return Shop.Messages.RequiredPostalCode;\r\n\r\n } else if (input.is('[name=\"state\"]')) {\r\n\r\n return Shop.Messages.RequiredState;\r\n\r\n } else if (input.is('[name=\"street\"]')) {\r\n\r\n return Shop.Messages.RequiredStreet;\r\n\r\n }\r\n\r\n };\r\n\r\n Shop.KValidatorMessages.pattern = function (input) {\r\n\r\n if (input.is('[name=\"zipCode\"]')) {\r\n return Shop.Messages.InvalidPostalCode;\r\n }\r\n\r\n };\r\n\r\n }\r\n\r\n this.RequiredValidation = function (input) { \r\n var _value = input.val();\r\n\r\n if (input.is('[name=\"zipCode\"]') ||\r\n input.is('[name=\"state\"]') ||\r\n input.is('[name=\"street\"]') ||\r\n input.is('[name=\"city\"]')) {\r\n\r\n return !(_value.trim().length == 0);\r\n\r\n }\r\n\r\n return true;\r\n\r\n }\r\n\r\n this.PatternValidation = function (input) {\r\n\r\n if (input.is(\"[name=zipCode]\")) {\r\n\r\n input.val(input.val().trim());\r\n var _pattern = input.data('pattern') ? new RegExp(input.data('pattern')) : /^\\d{5}$/;\r\n return _pattern.test(input.val());\r\n\r\n } else if (input.is(\"[role=phonenumber]\")) {\r\n\r\n input.val(input.val().trim());\r\n var _pattern = input.data('pattern') ? new RegExp(input.data('pattern')) : /^\\s?(\\d{8,11})$/;\r\n return _pattern.test(input.val().trim());\r\n\r\n } else if (input.is(\"[role=fullname]\")) {\r\n\r\n input.val(input.val().trim());\r\n var _pattern = input.data('pattern') ? new RegExp(input.data('pattern')) : /^([\\sA-Za-zÀ-ÿ0-9']+)$/;\r\n return _pattern.test(input.val());\r\n\r\n }\r\n \r\n return true;\r\n\r\n }\r\n\r\n\r\n this.GetStateCode = function (stateName) {\r\n\r\n if (stateName && stateName.length === 2) {\r\n\r\n return stateName;\r\n\r\n }\r\n\r\n if (stateName) {\r\n\r\n return this.StateCodeList[stateName.toUpperCase().trim()];\r\n\r\n }\r\n\r\n return '';\r\n\r\n };\r\n\r\n this.GetStateName = function (stateCode) {\r\n\r\n if (stateCode && stateCode.length > 2) {\r\n\r\n return stateCode;\r\n\r\n }\r\n\r\n if (stateCode) {\r\n\r\n return this.StateCodeList[stateCode.toUpperCase().trim()];\r\n\r\n }\r\n\r\n return '';\r\n\r\n };\r\n\r\n this.StateCodeList = {\r\n \"AGRIGENTO\": \"AG\",\r\n \"ALESSANDRIA\": \"AL\",\r\n \"ANCONA\": \"AN\",\r\n \"AOSTA\": \"AO\",\r\n \"ASCOLI PICENO\": \"AP\",\r\n \"LAQUILA\": \"AQ\",\r\n \"AREZZO\": \"AR\",\r\n \"ASTI\": \"AT\",\r\n \"AVELLINO\": \"AV\",\r\n \"BARI\": \"BA\",\r\n \"BERGAMO\": \"BG\",\r\n \"BIELLA\": \"BI\",\r\n \"BELLUNO\": \"BL\",\r\n \"BENEVENTO\": \"BN\",\r\n \"BOLOGNA\": \"BO\",\r\n \"BRINDISI\": \"BR\",\r\n \"BRESCIA\": \"BS\",\r\n \"BARLETTA-ANDRIA-TRANI\": \"BT\",\r\n \"BOLZANO\": \"BZ\",\r\n \"CAGLIARI\": \"CA\",\r\n \"CAMPOBASSO\": \"CB\",\r\n \"CASERTA\": \"CE\",\r\n \"CHIETI\": \"CH\",\r\n \"CALTANISSETTA\": \"CL\",\r\n \"CUNEO\": \"CN\",\r\n \"COMO\": \"CO\",\r\n \"CREMONA\": \"CR\",\r\n \"COSENZA\": \"CS\",\r\n \"CATANIA\": \"CT\",\r\n \"CATANZARO\": \"CZ\",\r\n \"ENNA\": \"EN\",\r\n \"FORLÌ-CESENA\": \"FC\",\r\n \"FERRARA\": \"FE\",\r\n \"FOGGIA\": \"FG\",\r\n \"FIRENZE\": \"FI\",\r\n \"FERMO\": \"FM\",\r\n \"FROSINONE\": \"FR\",\r\n \"GENOVA\": \"GE\",\r\n \"GORIZIA\": \"GO\",\r\n \"GROSSETO\": \"GR\",\r\n \"IMPERIA\": \"IM\",\r\n \"ISERNIA\": \"IS\",\r\n \"CROTONE\": \"KR\",\r\n \"LECCO\": \"LC\",\r\n \"LECCE\": \"LE\",\r\n \"LIVORNO\": \"LI\",\r\n \"LODI\": \"LO\",\r\n \"LATINA\": \"LT\",\r\n \"LUCCA\": \"LU\",\r\n \"MONZA E BRIANZA\": \"MB\",\r\n \"MACERATA\": \"MC\",\r\n \"MESSINA\": \"ME\",\r\n \"MILANO\": \"MI\",\r\n \"MANTOVA\": \"MN\",\r\n \"MODENA\": \"MO\",\r\n \"MASSA\": \"MS\",\r\n \"MATERA\": \"MT\",\r\n \"NAPOLI\": \"NA\",\r\n \"NOVARA\": \"NO\",\r\n \"NUORO\": \"NU\",\r\n \"ORISTANO\": \"OR\",\r\n \"PALERMO\": \"PA\",\r\n \"PIACENZA\": \"PC\",\r\n \"PADOVA\": \"PD\",\r\n \"PESCARA\": \"PE\",\r\n \"PERUGIA\": \"PG\",\r\n \"PISA\": \"PI\",\r\n \"PORDENONE\": \"PN\",\r\n \"PRATO\": \"PO\",\r\n \"PARMA\": \"PR\",\r\n \"PISTOIA\": \"PT\",\r\n \"PESARO E URBINO\": \"PU\",\r\n \"PAVIA\": \"PV\",\r\n \"POTENZA\": \"PZ\",\r\n \"RAVENNA\": \"RA\",\r\n \"REGGIO DI CALABRIA\": \"RC\",\r\n \"REGGIO NELL'EMILIA\": \"RE\",\r\n \"RAGUSA\": \"RG\",\r\n \"RIETI\": \"RI\",\r\n \"ROMA\": \"RM\",\r\n \"RIMINI\": \"RN\",\r\n \"ROVIGO\": \"RO\",\r\n \"SALERNO\": \"SA\",\r\n \"SIENA\": \"SI\",\r\n \"SONDRIO\": \"SO\",\r\n \"LA SPEZIA\": \"SP\",\r\n \"SIRACUSA\": \"SR\",\r\n \"SASSARI\": \"SS\",\r\n \"SUD SARDEGNA\": \"SU\",\r\n \"SAVONA\": \"SV\",\r\n \"TARANTO\": \"TA\",\r\n \"TERAMO\": \"TE\",\r\n \"TRENTO\": \"TN\",\r\n \"TORINO\": \"TO\",\r\n \"TRAPANI\": \"TP\",\r\n \"TERNI\": \"TR\",\r\n \"TRIESTE\": \"TS\",\r\n \"TREVISO\": \"TV\",\r\n \"UDINE\": \"UD\",\r\n \"VARESE\": \"VA\",\r\n \"VERBANO-CUSIO-OSSOLA\": \"VB\",\r\n \"VERCELLI\": \"VC\",\r\n \"VENEZIA\": \"VE\",\r\n \"VICENZA\": \"VI\",\r\n \"VERONA\": \"VR\",\r\n \"VITERBO\": \"VT\",\r\n \"VIBO VALENTIA\": \"VV\",\r\n \"CARBONIA IGLESIAS\": \"CI\",\r\n \"OGLIASTRA\": \"OG\",\r\n \"OLBIA\": \"OT\",\r\n \"AG\": \"AGRIGENTO\",\r\n \"AL\": \"ALESSANDRIA\",\r\n \"AN\": \"ANCONA\",\r\n \"AO\": \"AOSTA\",\r\n \"AP\": \"ASCOLI PICENO\",\r\n \"AQ\": \"LAQUILA\",\r\n \"AR\": \"AREZZO\",\r\n \"AT\": \"ASTI\",\r\n \"AV\": \"AVELLINO\",\r\n \"BA\": \"BARI\",\r\n \"BG\": \"BERGAMO\",\r\n \"BI\": \"BIELLA\",\r\n \"BL\": \"BELLUNO\",\r\n \"BN\": \"BENEVENTO\",\r\n \"BO\": \"BOLOGNA\",\r\n \"BR\": \"BRINDISI\",\r\n \"BS\": \"BRESCIA\",\r\n \"BT\": \"BARLETTA ANDRIA TRANI\",\r\n \"BZ\": \"BOLZANO\",\r\n \"CA\": \"CAGLIARI\",\r\n \"CB\": \"CAMPOBASSO\",\r\n \"CE\": \"CASERTA\",\r\n \"CH\": \"CHIETI\",\r\n \"CI\": \"CARBONIA IGLESIAS\",\r\n \"CL\": \"CALTANISSETTA\",\r\n \"CN\": \"CUNEO\",\r\n \"CO\": \"COMO\",\r\n \"CR\": \"CREMONA\",\r\n \"CS\": \"COSENZA\",\r\n \"CT\": \"CATANIA\",\r\n \"CZ\": \"CATANZARO\",\r\n \"EN\": \"ENNA\",\r\n \"FC\": \"FORLI CESENA\",\r\n \"FE\": \"FERRARA\",\r\n \"FG\": \"FOGGIA\",\r\n \"FI\": \"FIRENZE\",\r\n \"FM\": \"FERMO\",\r\n \"FR\": \"FROSINONE\",\r\n \"GE\": \"GENOVA\",\r\n \"GO\": \"GORIZIA\",\r\n \"GR\": \"GROSSETO\",\r\n \"IM\": \"IMPERIA\",\r\n \"IS\": \"ISERNIA\",\r\n \"KR\": \"CROTONE\",\r\n \"LC\": \"LECCO\",\r\n \"LE\": \"LECCE\",\r\n \"LI\": \"LIVORNO\",\r\n \"LO\": \"LODI\",\r\n \"LT\": \"LATINA\",\r\n \"LU\": \"LUCCA\",\r\n \"MB\": \"MONZA E DELLA BRIANZA\",\r\n \"MC\": \"MACERATA\",\r\n \"ME\": \"MESSINA\",\r\n \"MI\": \"MILANO\",\r\n \"MN\": \"MANTOVA\",\r\n \"MO\": \"MODENA\",\r\n \"MS\": \"MASSA\",\r\n \"MT\": \"MATERA\",\r\n \"NA\": \"NAPOLI\",\r\n \"NO\": \"NOVARA\",\r\n \"NU\": \"NUORO\",\r\n \"OG\": \"OGLIASTRA\",\r\n \"OT\": \"OLBIA\",\r\n \"OR\": \"ORISTANO\",\r\n \"PA\": \"PALERMO\",\r\n \"PC\": \"PIACENZA\",\r\n \"PD\": \"PADOVA\",\r\n \"PE\": \"PESCARA\",\r\n \"PG\": \"PERUGIA\",\r\n \"PI\": \"PISA\",\r\n \"PN\": \"PORDENONE\",\r\n \"PO\": \"PRATO\",\r\n \"PR\": \"PARMA\",\r\n \"PT\": \"PISTOIA\",\r\n \"PU\": \"PESARO E URBINO\",\r\n \"PV\": \"PAVIA\",\r\n \"PZ\": \"POTENZA\",\r\n \"RA\": \"RAVENNA\",\r\n \"RC\": \"REGGIO CALABRIA\",\r\n \"RE\": \"REGGIO EMILIA\",\r\n \"RG\": \"RAGUSA\",\r\n \"RI\": \"RIETI\",\r\n \"RM\": \"ROMA\",\r\n \"RN\": \"RIMINI\",\r\n \"RO\": \"ROVIGO\",\r\n \"SA\": \"SALERNO\",\r\n \"SI\": \"SIENA\",\r\n \"SO\": \"SONDRIO\",\r\n \"SP\": \"LA SPEZIA\",\r\n \"SR\": \"SIRACUSA\",\r\n \"SS\": \"SASSARI\",\r\n \"SU\": \"SUD SARDEGNA\",\r\n \"SV\": \"SAVONA\",\r\n \"TA\": \"TARANTO\",\r\n \"TE\": \"TERAMO\",\r\n \"TN\": \"TRENTO\",\r\n \"TO\": \"TORINO\",\r\n \"TP\": \"TRAPANI\",\r\n \"TR\": \"TERNI\",\r\n \"TS\": \"TRIESTE\",\r\n \"TV\": \"TREVISO\",\r\n \"UD\": \"UDINE\",\r\n \"VA\": \"VARESE\",\r\n \"VB\": \"VERBANO CUSIO OSSOLA\",\r\n \"VC\": \"VERCELLI\",\r\n \"VE\": \"VENEZIA\",\r\n \"VI\": \"VICENZA\",\r\n \"VR\": \"VERONA\",\r\n \"VT\": \"VITERBO\",\r\n \"VV\": \"VIBO VALENTIA\"\r\n };\r\n}","function AccountAddressViewModel_NL() {\r\n\r\n // Extends from AccountAddressViewModel\r\n AccountAddressViewModel.call(this);\r\n\r\n // Public properties\r\n this.AddressValidated = false;\r\n this.DataForSelectedAddress = {};\r\n\r\n this.AddNewAddress = function (e) {\r\n var that = this;\r\n var _address;\r\n\r\n _address = new AddressModelMaker({ isPrimary: false });\r\n _address.IsAdding = true;\r\n\r\n that.ResetMessages();\r\n that.set('TheAddress', _address);\r\n that.set('Cities', []);\r\n that.set('AddressValidated', false);\r\n\r\n that.SetEditMode(true);\r\n var _cities = [];\r\n that.set('Cities', _cities);\r\n that.set('TheAddress.city', _cities.shift());\r\n that.set('Colonia', []);\r\n that.set('Counties', []);\r\n };\r\n\r\n this.SetShippingAddress = function (address) {\r\n var that = this;\r\n\r\n if (address) {\r\n\r\n if (address.isExperianAddressValidated === true) {\r\n\r\n that.set('AddressValidated', !address.isExperianAddressValidated);\r\n\r\n }\r\n\r\n that.set('ShippingAddress', new AddressModelMaker(address));\r\n that.set('DisplayName', that.get('ShippingAddress').displayName());\r\n that.set('FullAddress', that.get('ShippingAddress').fullAddress());\r\n that.set('ShippingAddressError', false);\r\n\r\n } else {\r\n\r\n that.set('ShippingAddressError', true);\r\n\r\n }\r\n };\r\n\r\n this.SearchAddress = function (e) {\r\n var that = this;\r\n var _search = $('#search-address').val();\r\n that.set('Suggestions', []);\r\n that.set('ErrorOnExpSearch', false);\r\n that.HideSuggestionsList();\r\n var _toBlock = '#address-form';\r\n var _promise;\r\n\r\n var _countryCode = AccountCountryConfig.ISO_3_CountryCode(Shop.CountryCode);\r\n var _params = _search + '&country=' + _countryCode + '&take=10&auth-token=';\r\n var _url = Shop.ExperianApi + _params + Shop.ExperianTokenKey;\r\n\r\n var callback = function (data) {\r\n\r\n if (_search.length >= 3 && data.length === 0) {\r\n\r\n that.set('ErrorOnExpSearch', true);\r\n\r\n } else {\r\n\r\n that.set('ErrorOnExpSearch', false);\r\n\r\n }\r\n\r\n if (data.length !== 0) {\r\n\r\n that.set('Suggestions', data);\r\n that.set('NotFound', false);\r\n that.set('SuggestionsList', true);\r\n that.set('ErrorOnExpSearch', false);\r\n\r\n } else {\r\n\r\n that.set('SuggestionsList', false);\r\n that.set('NotFound', true);\r\n\r\n }\r\n };\r\n\r\n that.HideSuggestionsList();\r\n\r\n if (_search !== '' && _search.length >= 3) {\r\n\r\n _promise = CommonMethods.ProcessRequest(_url, {});\r\n CommonMethods.Progress(_toBlock, true);\r\n _promise\r\n .done(function (data, status, jXHR) {\r\n\r\n callback(data.results);\r\n\r\n })\r\n .always(function () {\r\n\r\n CommonMethods.Progress(_toBlock, false);\r\n\r\n })\r\n .fail(function (response, status, message) {\r\n\r\n that.set('ErrorOnExpSearch', true);\r\n\r\n });\r\n\r\n }\r\n }; \r\n\r\n this.OnSearchAddress = function (e) {\r\n var that = this;\r\n var _class = 'selected';\r\n var _url = e.data.format + '&auth-token=' + Shop.ExperianTokenKey;\r\n\r\n $('#search-address>li.' + _class).removeClass(_class);\r\n $(e.currentTarget).addClass(_class);\r\n that.set('SuggestionsList', false);\r\n that.set('NotFound', false);\r\n\r\n var _toBlock = '#address-form';\r\n var _promise = CommonMethods.ProcessRequest(_url, {});\r\n\r\n CommonMethods.Progress(_toBlock, true);\r\n _promise\r\n .done(function (result, status, jXHR) {\r\n\r\n var data = result;\r\n var array = data.components;\r\n var _state = data.address[4].province;\r\n var _city = data.address[3].locality;\r\n var _zipcode = data.address[5].postalCode;\r\n var _neighbourhood = array[2].locality2;\r\n var _streetName, _poboxnumber = '';\r\n\r\n if (data && data.components && data.components.length > 0) {\r\n\r\n _streetName = GetValueFromProperty(array, 'street1') || '';\r\n\r\n } else {\r\n\r\n _streetName = GetValueFromProperty(data.address, 'addressLine1') || '';\r\n\r\n }\r\n\r\n for (var i = 0; i < array.length; i++) {\r\n\r\n if (array[i].streetNumber1 !== undefined) {\r\n\r\n _poboxnumber = array[i].streetNumber1;\r\n\r\n }\r\n if (array[i].streetNumber2 !== undefined) {\r\n\r\n _poboxnumber = array[i].streetNumber2;\r\n\r\n }\r\n\r\n }\r\n if (_poboxnumber !== '') {\r\n\r\n that.set('TheAddress.street2', _poboxnumber);\r\n that.set('TheAddress.SelectedHouse', _poboxnumber);\r\n\r\n } else {\r\n\r\n that.set('TheAddress.street2', '');\r\n that.set('TheAddress.SelectedHouse', '');\r\n\r\n }\r\n\r\n that.set('TheAddress.street', _streetName);\r\n that.set('TheAddress.state', _state);\r\n that.set('TheAddress.city', _city);\r\n that.set('TheAddress.zipCode', _zipcode);\r\n that.set('TheAddress.countyDistrict', _neighbourhood);\r\n that.set('TheAddress.isExperianAddressValidated', true);\r\n\r\n $('#search-address').val('');\r\n that.set('SuggestionsList', false);\r\n $('input[name=\"zipCode\"]').focus();\r\n $('input[name=\"zipCode\"]').blur();\r\n $('input[name=\"city\"]').focus();\r\n $('input[name=\"city\"]').blur();\r\n $('input[name=\"state\"]').focus();\r\n $('input[name=\"state\"]').blur();\r\n $('input[name=\"street\"]').focus();\r\n $('input[name=\"street\"]').blur();\r\n $('input[name=\"street2\"]').focus();\r\n $('input[name=\"street2\"]').blur();\r\n\r\n var _address = that.get('TheAddress');\r\n that.HoldSelectedAddress(_address);\r\n\r\n })\r\n .always(function () {\r\n\r\n CommonMethods.Progress(_toBlock, false);\r\n\r\n })\r\n .fail(function (response, status, message) {\r\n\r\n that.set('ErrorOnExpSearch', true);\r\n\r\n });\r\n\r\n that.HideAddressFormErrors();\r\n\r\n };\r\n\r\n this.HoldSelectedAddress = function (address) {\r\n var that = this;\r\n var dataForSelectedAddress = {\r\n street: address.street,\r\n street2: address.street2,\r\n city: address.city,\r\n zipCode: address.zipCode\r\n };\r\n\r\n that.set('DataForSelectedAddress', dataForSelectedAddress);\r\n\r\n };\r\n\r\n this.IsAddressEdited = function () {\r\n var that = this;\r\n\r\n return (that.get('DataForSelectedAddress.street') !== that.get('TheAddress.street') ||\r\n that.get('DataForSelectedAddress.street2') !== that.get('TheAddress.street2') ||\r\n that.get('DataForSelectedAddress.city') !== that.get('TheAddress.city') ||\r\n that.get('DataForSelectedAddress.zipCode') !== that.get('TheAddress.zipCode'));\r\n\r\n };\r\n\r\n this.UpdateAddressModelBeforeSave = function (saveAddressModel) {\r\n var that = this;\r\n saveAddressModel.isExperianAddressValidated = (saveAddressModel.isExperianAddressValidated && !that.IsAddressEdited());\r\n saveAddressModel.street = saveAddressModel.street.substring(0, (35 - saveAddressModel.street2.length));\r\n\r\n };\r\n\r\n this.Save = function () {\r\n var that = this;\r\n var _validator = CommonMethods.GetKendoValidator('#address-form');\r\n\r\n if (!_validator.validate()) {\r\n\r\n return;\r\n\r\n }\r\n\r\n if (that.CheckForNumbersInNames()) {\r\n\r\n that.set('GlobalError', true);\r\n that.set('ErrorMessage', Localizer('NameWithDigits'));\r\n return false;\r\n\r\n }\r\n\r\n var _address = that.get('TheAddress');\r\n var _toBlock = '#address-form';\r\n var _promise;\r\n var _data;\r\n var _type;\r\n\r\n that.SetStatusForSavingAddress(true);\r\n that.UpdateAddressModelBeforeSave(_address);\r\n\r\n if (_address.IsAdding) {\r\n\r\n _data = JSON.stringify(_address.toAddressViewModel());\r\n _type = 'POST';\r\n\r\n } else {\r\n\r\n _data = JSON.stringify(_address.toNewAddressViewModel());\r\n _type = 'PUT';\r\n\r\n }\r\n\r\n _promise = CommonMethods.ProcessRequest(ShopUrls.AddressAPI(), _data, _type);\r\n\r\n that.ResetMessages();\r\n\r\n CommonMethods.Progress(_toBlock, true);\r\n\r\n _promise\r\n .done(function (data, status, jXHR) {\r\n\r\n that.UpdateDataSourceWithIncomingData(data, _address);\r\n\r\n })\r\n .always(function () {\r\n\r\n CommonMethods.Progress(_toBlock, false);\r\n\r\n })\r\n .fail(function (response, status, message) {\r\n\r\n that.ShowAddressErrors();\r\n\r\n });\r\n\r\n };\r\n\r\n this.UpdateDataSourceWithIncomingData = function (data, address) {\r\n var that = this;\r\n\r\n if (data && data.statusCode) {\r\n\r\n var _data = data.address;\r\n var _savedAddresses = that.get('SavedAddresses');\r\n\r\n // Prevent repeated primary tag\r\n if (_data.isPrimary === true) {\r\n\r\n that.SetPrimaryTag(_data);\r\n\r\n }\r\n\r\n // Add address to datasource\r\n if (address.IsAdding) {\r\n\r\n // Set New Shipping Address\r\n that.SetShippingAddress(address.fromAddressViewModel(_data));\r\n _savedAddresses.insert(0, address.toAddressViewModel());\r\n\r\n } else {\r\n\r\n // Set Updated Values\r\n that.SetShippingAddress(_data);\r\n // Update in datasource\r\n _savedAddresses.pushUpdate(_data);\r\n\r\n }\r\n\r\n _savedAddresses.sync();\r\n\r\n if (data.statusCode === 10009) {\r\n\r\n that.set('SavedNotExpValidPhone', true);\r\n that.set('SavedCorrectly', true);\r\n that.CloseForm();\r\n\r\n } else {\r\n\r\n that.set('SavedCorrectly', true);\r\n that.CloseForm();\r\n\r\n }\r\n\r\n }\r\n\r\n };\r\n\r\n this.SetPrimaryTag = function (data) {\r\n\r\n var that = this;\r\n var _savedAddresses = that.get('SavedAddresses');\r\n var _total = _savedAddresses.total();\r\n\r\n if (_total > 0) {\r\n\r\n for (var j = 0; j < _total; j++) {\r\n\r\n var _theAddress = _savedAddresses.at(j);\r\n if (_theAddress.isPrimary === true && _theAddress.id !== data.id) {\r\n\r\n _theAddress.isPrimary = false;\r\n\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n };\r\n\r\n this.ShowAddressErrors = function (response) {\r\n var that = this;\r\n\r\n var _status = response.status;\r\n\r\n if (response.responseJSON.statusCode === 10006) {\r\n\r\n window.location.href = '/Account/Authentication/Login/' + Shop.Locale;\r\n\r\n }\r\n\r\n if (response.responseJSON.statusCode === 10004) {\r\n\r\n that.set('GlobalError', true);\r\n that.set('ErrorMessage', Localizer('code10004'));\r\n\r\n } else if (response.responseJSON.statusCode === 10005) {\r\n\r\n that.set('GlobalError', true);\r\n that.set('ErrorMessage', Localizer('avsaddresserrormsg'));\r\n\r\n } else if (_status === 500) {\r\n\r\n that.set('GlobalError', true);\r\n that.set('ErrorMessage', \"\");\r\n\r\n } else if (_status === 400) {\r\n\r\n var _code = response.responseJSON.statusCode;\r\n that.set('ErrorOnSave', true);\r\n that.set('ErrorMessage', Localizer('code' + _code));\r\n\r\n }\r\n\r\n };\r\n\r\n this.CloseForm = function (e) {\r\n var that = this;\r\n that.ShowHideEmailFormOnCartPage(true);\r\n var _form = CommonMethods.GetKendoValidator('#address-form');\r\n _form.hideErrors();\r\n _form.hideMessages();\r\n\r\n that.set('TheAddress', {});\r\n that.set('EditMode', false);\r\n $('#address-form').hide();\r\n that.set('ErrorOnSave', false);\r\n that.set('GlobalError', false);\r\n $('#wrapDaum').hide();\r\n $('#ship-to').css('visibility', 'visible');\r\n that.set('HasSavedAddresses', true);\r\n\r\n if (that.get('SavedAddresses').data().length === 0) {\r\n\r\n CommonMethods.Progress('#select-address', false);\r\n CommonMethods.Progress('#current-address', false);\r\n $('#ship-to').css('visibility', 'hidden');\r\n that.set('HasSavedAddresses', false);\r\n\r\n }\r\n\r\n if (IsCart) {\r\n\r\n $('.right-content a').removeClass('disabled');\r\n\r\n }\r\n\r\n that.HideVerifiedWarningMessage();\r\n\r\n };\r\n\r\n this.EditAddress = function (e) {\r\n var that = this;\r\n\r\n if (!IsCart) {\r\n\r\n that.SetShippingAddress(e.data);\r\n\r\n }\r\n\r\n that.ShowHideEmailFormOnCartPage(false);\r\n\r\n var _address = that.get('ShippingAddress').toNewAddressViewModel();\r\n _address = new AddressModelMaker(_address);\r\n _address.IsEditing = true;\r\n\r\n that.ResetMessages();\r\n that.set('TheAddress', _address);\r\n that.SetEditMode(true);\r\n that.IsExperianAddressValidated(_address);\r\n that.HoldSelectedAddress(_address);\r\n\r\n };\r\n\r\n this.IsExperianAddressValidated = function (address) {\r\n var that = this;\r\n\r\n if (AccountCountryConfig.IsExperianAddressVerificationEnabled()) {\r\n\r\n CommonMethods.GetKendoValidator('#address-form').validate();\r\n that.set('AddressValidated', address.isExperianAddressValidated ? false : true);\r\n\r\n }\r\n\r\n };\r\n\r\n this.HideVerifiedWarningMessage = function () {\r\n var that = this;\r\n\r\n if (AccountCountryConfig.IsExperianAddressVerificationEnabled()) {\r\n\r\n that.set('AddressValidated', false);\r\n\r\n }\r\n\r\n };\r\n\r\n this.ResetMessages = function (e) {\r\n var that = this;\r\n\r\n that.set('SavedCorrectly', false);\r\n that.set('ErrorOnSave', false);\r\n that.set('ErrorExpPhone', false);\r\n that.set('SavedNotExpValidPhone', false);\r\n that.HideSuggestionsList();\r\n $('#search-address').val('');\r\n $('#spnMatching').css('display', 'none');\r\n that.set('AddressValidated', false);\r\n\r\n };\r\n}","\r\nfunction AccountAddressViewModel_TR() {\r\n\r\n // Extends from AccountAddressViewModel\r\n AccountAddressViewModel.call(this);\r\n\r\n // === Public properties\r\n this.TRCities = [];\r\n this.TRCitiesFound = true;\r\n this.TRDistricts = [];\r\n this.TRDistrictsFound = true;\r\n this.TRNeighbourhoods = [];\r\n this.TRNeighbourhoodsFound = true;\r\n this.TRPostalCodes = [];\r\n this.TRStreets = [];\r\n this.TRStreetsFound = true;\r\n this.ToShowDowntimeMessage = false;\r\n this.ErrorCode = 0;\r\n this.SelectOption = 'Seç';\r\n\r\n // === Private Properties\r\n \r\n // === Public methods\r\n\r\n /*\r\n * Cities > City > basarsoftCountryCode\r\n * District > StateProvinceTerritory > basarsoftStateCode\r\n * Neighbourhood > CountryDistrict > basarsoftCityCode\r\n * Roads > Line1 > basarSoftNeighbourhoodCode\r\n */\r\n\r\n this.OnLoadCitiesForTR = function (editMode) {\r\n\r\n var that = this;\r\n var url = '/Account/api/BasarsoftV1/' + Shop.Locale + '/Cities?basarsoftCountryCode=0';\r\n var request = CommonMethods.ProcessRequest(url, {}, 'GET');\r\n\r\n that.set('ErrorCode', 0);\r\n $('#zipCode').attr('readonly', false);\r\n\r\n CommonMethods.Progress('#address-form', true);\r\n request\r\n .done(function (data) {\r\n\r\n if (data.dropdownlists != null && data.dropdownlists.length != 0) {\r\n\r\n var _cities = AddSelectElement(data.dropdownlists); \r\n that.set('TRCities', _cities); \r\n that.set('TRCitiesFound', true);\r\n\r\n if (editMode) {\r\n\r\n var selectedCity = that.get('TheAddress.state');\r\n that.OnLoadDistrictsForTR(selectedCity, editMode);\r\n\r\n } else {\r\n\r\n $('#cityDropdown').val(that.get('SelectOption'));\r\n $('#districtDropdown').val(that.get('SelectOption'));\r\n $('#neighbourhoodDropdown').val(that.get('SelectOption'));\r\n $('#streetDropdown').val(that.get('SelectOption'));\r\n }\r\n\r\n } else {\r\n\r\n that.ShowTextBoxes();\r\n\r\n }\r\n\r\n that.set('ErrorCode', data.errorCode);\r\n that.ShowDowntimeMessage();\r\n\r\n UpdateStylesFor('city', that.get('TRCitiesFound'));\r\n\r\n })\r\n .fail(function (response, status, message) {\r\n\r\n that.ShowTextBoxes();\r\n\r\n })\r\n .always(function () {\r\n\r\n CommonMethods.Progress('#address-form', false);\r\n\r\n });\r\n\r\n return request;\r\n\r\n }\r\n\r\n this.ShowDowntimeMessage = function () {\r\n\r\n var that = this;\r\n that.set('ToShowDowntimeMessage', (that.get('ErrorCode') == 60001 && that.get('EditMode')));\r\n\r\n }\r\n\r\n this.ShowTextBoxes = function () {\r\n\r\n var that = this;\r\n that.set('TRCitiesFound', false);\r\n that.set('TRDistrictsFound', false);\r\n that.set('TRNeighbourhoodsFound', false);\r\n that.set('TRStreetsFound', false);\r\n\r\n }\r\n\r\n this.OnSelectCityForTR = function () {\r\n\r\n var that = this;\r\n var selectedCity = that.get('TheAddress.state');\r\n that.ResetDescendantsForCity();\r\n\r\n if (selectedCity === that.get('SelectOption')) {\r\n\r\n return;\r\n\r\n }\r\n\r\n that.OnLoadDistrictsForTR(selectedCity, false);\r\n\r\n }\r\n\r\n this.ResetDescendantsForCity = function () {\r\n\r\n var that = this;\r\n\r\n that.set('TheAddress.city', '');\r\n that.set('TheAddress.countryDistrict', '');\r\n that.set('TheAddress.zipCode', '');\r\n that.set('TheAddress.street1', '');\r\n\r\n var _districts = AddSelectElement([]);\r\n var _neighbourhoods = AddSelectElement([]);\r\n var _streets = AddSelectElement([]);\r\n\r\n that.set('TRDistricts', _districts);\r\n that.set('TRNeighbourhoods', _neighbourhoods);\r\n that.set('TRPostalCodes', []);\r\n that.set('TRStreets', _streets);\r\n\r\n $('#districtDropdown').val(that.get('SelectOption'));\r\n $('#neighbourhoodDropdown').val(that.get('SelectOption'));\r\n $('#streetDropdown').val(that.get('SelectOption'));\r\n\r\n }\r\n\r\n this.OnLoadDistrictsForTR = function (selectedCity, editMode) {\r\n\r\n var that = this;\r\n var keyForSelectedCity = GetKeyFor(that.get('TRCities'), 'value', selectedCity);\r\n var url = '/Account/api/BasarsoftV1/' + Shop.Locale + '/Districts?basarSoftStateCode=' + keyForSelectedCity;\r\n\r\n if (keyForSelectedCity == -1) {\r\n\r\n $('#cityDropdown').val(that.get('SelectOption'));\r\n $('#districtDropdown').val(that.get('SelectOption'));\r\n $('#neighbourhoodDropdown').val(that.get('SelectOption'));\r\n $('#streetDropdown').val(that.get('SelectOption'));\r\n that.ResetDescendantsForCity();\r\n that.ValidateAddressForm();\r\n return;\r\n\r\n }\r\n\r\n var request = CommonMethods.ProcessRequest(url, {}, 'GET');\r\n\r\n CommonMethods.Progress('#address-form', true);\r\n request\r\n .done(function (data) {\r\n\r\n if (data.dropdownlists != null && data.dropdownlists.length != 0) {\r\n\r\n var _districts = AddSelectElement(data.dropdownlists); \r\n that.set('TRDistricts', _districts);\r\n that.set('TRDistrictsFound', true);\r\n \r\n if (editMode) {\r\n\r\n var selectedDistrict = that.get('TheAddress.city');\r\n that.OnLoadNeighbourhoodsForTR(selectedDistrict, editMode);\r\n\r\n } else {\r\n\r\n $('#districtDropdown').val(that.get('SelectOption')); \r\n $('#neighbourhoodDropdown').val(that.get('SelectOption'));\r\n $('#streetDropdown').val(that.get('SelectOption'));\r\n\r\n }\r\n\r\n } else {\r\n\r\n that.set('TRDistrictsFound', false);\r\n\r\n }\r\n\r\n })\r\n .fail(function (response, status, message) {\r\n\r\n that.set('TRDistrictsFound', false);\r\n\r\n })\r\n .always(function () {\r\n\r\n CommonMethods.Progress('#address-form', false);\r\n\r\n });\r\n\r\n return request;\r\n\r\n }\r\n\r\n this.OnSelectDistrictForTR = function () {\r\n\r\n var that = this;\r\n var selectedDistrict = that.get('TheAddress.city');\r\n that.ResetDescendantsForDistrict();\r\n\r\n if (selectedDistrict === that.get('SelectOption')) {\r\n\r\n return;\r\n\r\n }\r\n\r\n that.OnLoadNeighbourhoodsForTR(selectedDistrict);\r\n\r\n }\r\n\r\n this.ResetDescendantsForDistrict = function () {\r\n\r\n var that = this;\r\n\r\n that.set('TheAddress.countryDistrict', '');\r\n that.set('TheAddress.zipCode', '');\r\n that.set('TheAddress.street1', '');\r\n\r\n var _neighbourhoods = AddSelectElement([]);\r\n var _streets = AddSelectElement([]);\r\n\r\n that.set('TRNeighbourhoods', _neighbourhoods);\r\n that.set('TRPostalCodes', []);\r\n that.set('TRStreets', _streets);\r\n\r\n $('#neighbourhoodDropdown').val(that.get('SelectOption'));\r\n $('#streetDropdown').val(that.get('SelectOption'));\r\n\r\n }\r\n\r\n this.OnLoadNeighbourhoodsForTR = function (selectedDistrict, editMode) {\r\n\r\n var that = this;\r\n var keyForSelectedDistrict = GetKeyFor(that.get('TRDistricts'), 'value', selectedDistrict);\r\n var url = '/Account/api/BasarsoftV1/' + Shop.Locale + '/Neighbourhoods?basarSoftCityCode=' + keyForSelectedDistrict;\r\n\r\n if (keyForSelectedDistrict == -1) {\r\n \r\n $('#districtDropdown').val(that.get('SelectOption'));\r\n $('#neighbourhoodDropdown').val(that.get('SelectOption'));\r\n $('#streetDropdown').val(that.get('SelectOption'));\r\n that.ResetDescendantsForDistrict();\r\n that.ValidateAddressForm();\r\n return;\r\n }\r\n\r\n var request = CommonMethods.ProcessRequest(url, {}, 'GET');\r\n\r\n CommonMethods.Progress('#address-form', true);\r\n request\r\n .done(function (data) {\r\n\r\n if (data.dropdownlists != null && data.dropdownlists.length != 0) {\r\n\r\n var _neighbourhoods = AddSelectElement(data.dropdownlists); \r\n var _dataForPostalCodes = data.dropdownlists2;\r\n that.set('TRNeighbourhoods', _neighbourhoods);\r\n that.set('TRPostalCodes', _dataForPostalCodes);\r\n that.set('TRNeighbourhoodsFound', true); \r\n \r\n if (editMode) {\r\n\r\n var selectedNeighbourhood = that.get('TheAddress.countyDistrict');\r\n that.OnLoadStreetsForTR(selectedNeighbourhood, editMode);\r\n that.SetPostalCode();\r\n\r\n } else {\r\n \r\n $('#neighbourhoodDropdown').val(that.get('SelectOption'));\r\n $('#streetDropdown').val(that.get('SelectOption'));\r\n\r\n }\r\n\r\n } else {\r\n\r\n that.set('TRNeighbourhoodsFound', false);\r\n\r\n }\r\n\r\n UpdateStylesFor('neighbourhood', that.get('TRNeighbourhoodsFound'));\r\n\r\n\r\n })\r\n .fail(function (response, status, message) {\r\n\r\n that.set('TRNeighbourhoodsFound', false);\r\n\r\n })\r\n .always(function () {\r\n\r\n CommonMethods.Progress('#address-form', false);\r\n\r\n });\r\n\r\n return request;\r\n\r\n }\r\n\r\n this.OnSelectNeighbourhoodForTR = function (e) {\r\n\r\n var that = this;\r\n var selectedNeighbourhood = that.get('TheAddress.countyDistrict');\r\n that.ResetDescendantsForNeighbourhood();\r\n\r\n if (selectedNeighbourhood === that.get('SelectOption')) {\r\n\r\n that.set('TheAddress.zipCode', '');\r\n $('#zipCode').attr('readonly', true);\r\n return;\r\n\r\n }\r\n\r\n that.OnLoadStreetsForTR(selectedNeighbourhood, false);\r\n that.SetPostalCode();\r\n\r\n }\r\n\r\n this.ResetDescendantsForNeighbourhood = function () {\r\n\r\n var that = this;\r\n that.set('TheAddress.street1', '');\r\n \r\n var _streets = AddSelectElement([]); \r\n that.set('TRStreets', _streets);\r\n \r\n $('#streetDropdown').val(that.get('SelectOption'));\r\n\r\n }\r\n\r\n this.SetPostalCode = function () {\r\n\r\n var that = this;\r\n var indexForSelectedNeighbourhood = document.getElementById('neighbourhoodDropdown').selectedIndex;\r\n\r\n if (indexForSelectedNeighbourhood != -1) {\r\n\r\n var postalCodeForSelectedNeighbourhood = that.get('TRPostalCodes')[indexForSelectedNeighbourhood];\r\n\r\n if (postalCodeForSelectedNeighbourhood.value.length == 4) {\r\n\r\n that.set('TheAddress.zipCode', ('0' + '' + postalCodeForSelectedNeighbourhood.value));\r\n\r\n } else {\r\n\r\n that.set('TheAddress.zipCode', postalCodeForSelectedNeighbourhood.value);\r\n }\r\n\r\n that.ValidateInput('postalcode');\r\n $('#zipCode').attr('readonly', true);\r\n\r\n }\r\n\r\n }\r\n\r\n this.OnLoadStreetsForTR = function (selectedNeighbourhood, editMode) {\r\n\r\n var that = this;\r\n var keyForSelectedNeighbourhood = GetKeyFor(that.get('TRNeighbourhoods'), 'value', selectedNeighbourhood);\r\n var url = '/Account/api/BasarsoftV1/' + Shop.Locale + '/Streets?basarSoftNeighbourhoodCode=' + keyForSelectedNeighbourhood;\r\n \r\n if (keyForSelectedNeighbourhood == -1) {\r\n \r\n $('#neighbourhoodDropdown').val(that.get('SelectOption'));\r\n $('#streetDropdown').val(that.get('SelectOption'));\r\n that.ResetDescendantsForNeighbourhood();\r\n that.ValidateAddressForm();\r\n return;\r\n }\r\n\r\n var request = CommonMethods.ProcessRequest(url, {}, 'GET');\r\n\r\n CommonMethods.Progress('#address-form', true);\r\n request\r\n .done(function (data) {\r\n\r\n if (data.dropdownlists != null) {\r\n\r\n if (data.dropdownlists.length == 1) {\r\n\r\n that.set('TheAddress.street1', data.dropdownlists[0].value);\r\n $('#street').attr('readonly', true);\r\n\r\n } else {\r\n\r\n var _streets = AddSelectElement(data.dropdownlists);\r\n that.set('TRStreets', _streets);\r\n }\r\n\r\n that.set('TRStreetsFound', data.dropdownlists.length > 1);\r\n\r\n } else {\r\n\r\n that.set('TRStreetsFound', false);\r\n\r\n }\r\n\r\n if (editMode) {\r\n\r\n var selectedStreet = that.get('TheAddress.street1');\r\n that.OnSelectStreetForTR(selectedStreet);\r\n that.ValidateAddressForm();\r\n\r\n } else {\r\n\r\n $('#streetDropdown').val(that.get('SelectOption'));\r\n\r\n }\r\n\r\n })\r\n .fail(function (response, status, message) {\r\n\r\n that.set('TRStreetsFound', false);\r\n\r\n })\r\n .always(function () {\r\n\r\n CommonMethods.Progress('#address-form', false);\r\n\r\n });\r\n\r\n return request;\r\n\r\n }\r\n\r\n this.OnSelectStreetForTR = function (selectedStreet) {\r\n\r\n var that = this;\r\n var keyForSelectedStreet = GetKeyFor(that.get('TRStreets'), 'value', selectedStreet);\r\n \r\n if (keyForSelectedStreet == -1) {\r\n\r\n $('#streetDropdown').val(that.get('SelectOption')); \r\n \r\n }\r\n\r\n }\r\n\r\n this.InitAddressFormRules = function () {\r\n var that = this;\r\n\r\n Shop.AddressFormRules = {\r\n\r\n required: function (input) {\r\n\r\n return that.RequiredValidation(input);\r\n\r\n },\r\n pattern: function (input) {\r\n\r\n return that.PatternValidation(input);\r\n\r\n }\r\n\r\n };\r\n\r\n Shop.KValidatorMessages = {\r\n\r\n required: function (input) {\r\n\r\n if (input.is('[name=\"phoneNumber\"]')) {\r\n return Shop.Messages.RequiredPhoneNumber;\r\n }\r\n\r\n },\r\n pattern: function (input) {\r\n\r\n if (input.is('[name=\"phoneNumber\"]')) {\r\n return Shop.Messages.InvalidPhoneNumber;\r\n }\r\n\r\n }\r\n\r\n };\r\n\r\n }\r\n\r\n this.RequiredValidation = function (input) {\r\n var that = this;\r\n var _value = input.val();\r\n\r\n if ((that.get('TRCitiesFound') && input.is('[name=\"cityDropdown\"]')) ||\r\n (that.get('TRDistrictsFound') && input.is('[name=\"districtDropdown\"]')) ||\r\n (that.get('TRNeighbourhoodsFound') && input.is('[name=\"neighbourhoodDropdown\"]')) ||\r\n (that.get('TRStreetsFound') && input.is('[name=\"streetDropdown\"]'))) {\r\n\r\n return !(_value == 'Seç');\r\n\r\n } else if ((!that.get('TRCitiesFound') && input.is('[name=\"postalCodeDropdown\"]'))) {\r\n\r\n return !(_value == '');\r\n\r\n } else {\r\n\r\n if (input.is('[name=\"city\"]') ||\r\n input.is('[name=\"countyDistrict\"]') ||\r\n input.is('[name=\"neighbourhood\"]') ||\r\n input.is('[name=\"street\"]')) {\r\n\r\n return !(_value.trim().length == 0);\r\n\r\n }\r\n\r\n }\r\n\r\n if (input.is('[name=\"street2\"]') ||\r\n input.is('[name=\"firstName\"]') ||\r\n input.is('[name=\"lastName\"]') ||\r\n input.is('[name=\"phoneNumber\"]') ||\r\n (input.is('[name=\"postalcode\"]') && that.get('TRCitiesFound'))) {\r\n\r\n return !(_value.trim().length == 0);\r\n\r\n }\r\n\r\n return true;\r\n\r\n }\r\n\r\n this.PatternValidation = function (input) {\r\n\r\n var that = this;\r\n if (input.is(\"[name=firstName]\") ||\r\n input.is(\"[name=lastName]\")) {\r\n\r\n input.val(input.val().trim());\r\n var _pattern = input.data('pattern') ? new RegExp(input.data('pattern')) : /^[a-zA-ZÇĞİÖŞÜçğıöşüâûîÂÎÛ\\s]{3,20}$/;\r\n return _pattern.test(input.val());\r\n\r\n } else if (input.is(\"[name=phoneNumber]\")) {\r\n\r\n input.val(input.val().trim());\r\n var _pattern = input.data('pattern') ? new RegExp(input.data('pattern')) : /^[0-9]{10}$/;\r\n return _pattern.test(input.val());\r\n\r\n } else if (input.is(\"[name=postalcode]\") && that.get('TRCitiesFound')) {\r\n\r\n input.val(input.val().trim());\r\n var _pattern = input.data('pattern') ? new RegExp(input.data('pattern')) : /^[0-9]{5,5}$/;\r\n return _pattern.test(input.val());\r\n\r\n }\r\n\r\n return true;\r\n\r\n }\r\n\r\n this.AddNewAddress = function (e) {\r\n\r\n var that = this;\r\n var _address = new AddressModelMaker({ isPrimary: false });\r\n _address.IsAdding = true;\r\n\r\n that.ShowHideEmailFormOnCartPage(false);\r\n that.ResetMessages();\r\n that.set('TheAddress', _address);\r\n that.SetEditMode(true);\r\n that.ResetDescendantsForCity();\r\n that.OnLoadCitiesForTR(false);\r\n\r\n $('#zipCode').attr('readonly', false);\r\n\r\n AddStylesForLists();\r\n\r\n }\r\n\r\n this.CloseForm = function (e) {\r\n var that = this;\r\n that.ShowHideEmailFormOnCartPage(true);\r\n var _form = CommonMethods.GetKendoValidator('#address-form');\r\n _form.hideErrors();\r\n _form.hideMessages();\r\n\r\n that.set('TheAddress', {});\r\n that.set('EditMode', false);\r\n $('#address-form').hide();\r\n that.set('ErrorOnSave', false);\r\n that.set('GlobalError', false);\r\n that.set('HasSavedAddresses', true);\r\n that.ShowDowntimeMessage();\r\n\r\n }\r\n\r\n this.EditAddress = function (e) {\r\n var that = this;\r\n\r\n if (!IsCart) {\r\n\r\n that.SetShippingAddress(e.data);\r\n\r\n }\r\n\r\n that.ShowHideEmailFormOnCartPage(false);\r\n\r\n var _address = that.get('ShippingAddress').toNewAddressViewModel();\r\n _address = new AddressModelMaker(_address);\r\n _address.IsEditing = true;\r\n that.ResetMessages();\r\n that.set('TheAddress', _address);\r\n that.SetEditMode(true);\r\n that.LoadDataForSelectedAddress();\r\n that.ShowDowntimeMessage();\r\n\r\n }\r\n\r\n this.LoadDataForSelectedAddress = function () {\r\n\r\n var that = this; \r\n var errorCode = that.get('ErrorCode');\r\n\r\n if (errorCode != 422) {\r\n\r\n that.OnLoadCitiesForTR(true);\r\n\r\n } else {\r\n\r\n AddStylesForInputs();\r\n\r\n }\r\n\r\n }\r\n\r\n this.ValidateInput = function (inputName) {\r\n \r\n var form = CommonMethods.GetKendoValidator('#address-form');\r\n\r\n if (form && inputName) {\r\n\r\n form.validateInput($(\"input[name=\" + inputName + \"]\"));\r\n\r\n }\r\n \r\n }\r\n\r\n this.ValidateAddressForm = function () {\r\n\r\n var form = CommonMethods.GetKendoValidator('#address-form');\r\n\r\n if (form) {\r\n\r\n form.validate();\r\n\r\n }\r\n\r\n }\r\n\r\n this.Save = function (e) {\r\n var that = this;\r\n var _form = CommonMethods.GetKendoValidator('#address-form');\r\n\r\n if (!_form.validate()) {\r\n\r\n return false;\r\n\r\n }\r\n\r\n if (that.CheckForNumbersInNames()) {\r\n\r\n that.set('GlobalError', true);\r\n that.set('ErrorMessage', Localizer('NameWithDigits'));\r\n return false;\r\n\r\n }\r\n\r\n var _address = that.get('TheAddress');\r\n _address.isValidAddress = IsValidAddress(this);\r\n\r\n var _toBlock = '#address-form';\r\n var _promise;\r\n var _data;\r\n var _type;\r\n\r\n that.SetStatusForSavingAddress(true);\r\n if (_address.IsAdding) {\r\n\r\n _data = JSON.stringify(_address.toAddressViewModel());\r\n _type = 'POST';\r\n\r\n } else {\r\n\r\n _data = JSON.stringify(_address.toNewAddressViewModel());\r\n _type = 'PUT';\r\n\r\n }\r\n\r\n _promise = CommonMethods.ProcessRequest(ShopUrls.AddressAPI(), _data, _type);\r\n\r\n that.ResetMessages();\r\n\r\n CommonMethods.Progress(_toBlock, true);\r\n\r\n _promise\r\n .done(function (data, status, jXHR) {\r\n\r\n that.UpdateDataSourceWithIncomingData(data, _address);\r\n\r\n })\r\n .always(function () {\r\n CommonMethods.Progress(_toBlock, false);\r\n })\r\n .fail(function (response, status, message) {\r\n\r\n that.ShowAddressErrors(response, status, message);\r\n\r\n });\r\n\r\n }\r\n\r\n this.UpdateDataSourceWithIncomingData = function (data, _address) {\r\n\r\n var that = this;\r\n if (data && data.statusCode) {\r\n\r\n var _data = data.address;\r\n var _savedAddresses = that.get('SavedAddresses');\r\n\r\n // Prevent repeated primary tag\r\n if (_data.isPrimary === true) {\r\n\r\n that.SetPrimaryTag(_data);\r\n\r\n }\r\n\r\n // Add address to datasource\r\n if (_address.IsAdding) {\r\n\r\n // Set New Shipping Address\r\n that.SetShippingAddress(_address.fromAddressViewModel(_data));\r\n _savedAddresses.insert(0, _address.toAddressViewModel());\r\n\r\n } else {\r\n\r\n // Set Updated Values\r\n that.SetShippingAddress(_data);\r\n // Update in datasource\r\n _savedAddresses.pushUpdate(_data);\r\n\r\n }\r\n\r\n _savedAddresses.sync();\r\n\r\n if (data.statusCode === 10009) {\r\n \r\n that.set('SavedNotExpValidPhone', true); \r\n\r\n }\r\n\r\n that.set('SavedCorrectly', true);\r\n that.CloseForm();\r\n\r\n }\r\n\r\n }\r\n\r\n this.ShowAddressErrors = function (response, status, message) {\r\n\r\n var that = this;\r\n var _status = response.status;\r\n\r\n if (response.responseJSON.statusCode === 10006) {\r\n\r\n window.location.href = '/Account/Authentication/Login/' + Shop.Locale;\r\n\r\n } else if (_status === 500) {\r\n\r\n that.set('GlobalError', true);\r\n that.set('ErrorMessage', message);\r\n\r\n } else if (_status === 400) {\r\n\r\n var _code = response.responseJSON.statusCode;\r\n that.set('ErrorOnSave', true);\r\n that.set('ErrorMessage', Localizer('code' + _code));\r\n\r\n }\r\n\r\n }\r\n\r\n // === Private methods\r\n\r\n function IsValidAddress(that) {\r\n\r\n var valid = that.get('TRCitiesFound') &&\r\n that.get('TRDistrictsFound') &&\r\n that.get('TRNeighbourhoodsFound');\r\n\r\n return valid;\r\n\r\n };\r\n\r\n function AddStylesForLists() {\r\n\r\n UpdateStylesFor('city', true);\r\n UpdateStylesFor('neighbourhood', true);\r\n\r\n };\r\n\r\n function AddStylesForInputs() {\r\n\r\n UpdateStylesFor('city', false);\r\n UpdateStylesFor('neighbourhood', false);\r\n\r\n };\r\n\r\n function UpdateStylesFor(element, dataFound) {\r\n\r\n var input = $(\"#\" + element + \"Input\");\r\n var list = $(\"#\" + element + \"List\");\r\n\r\n input[0].style.marginRight = dataFound ? '0px' : '16px';\r\n list[0].style.marginRight = dataFound ? '16px' : '0px';\r\n\r\n };\r\n\r\n function GetKeyFor(data, property, value) {\r\n for (var i = 0, len = data.length; i < len; i++) {\r\n if (data[i][property] === value) return data[i].key;\r\n }\r\n return -1;\r\n };\r\n\r\n function AddSelectElement(data) {\r\n\r\n var collection = [{ key: '', value: 'Seç' }]; \r\n collection = collection.concat(data);\r\n return collection;\r\n\r\n }\r\n\r\n}","\r\nfunction ContactUsViewModel() {\r\n // === Public Properties\r\n // === /Public Properties\r\n\r\n // === Private Properties\r\n var _form;\r\n\r\n // jscs:disable\r\n var emailRegex = /^([a-zA-Z0-9_\\!\\#\\$\\%\\&\\'\\*\\-\\/\\=\\?\\^\\`\\{\\|\\}\\~\\.\\+]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([a-zA-Z0-9_\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})$/;\r\n // jscs:enable\r\n\r\n var lettersRegex = /[a-zA-Z]+$/;\r\n\r\n this._validatorRules = {\r\n onlynumbers: function (input) {\r\n input.val(input.val().trim());\r\n if (input.is('[type=number]') || input.hasClass('onlynumbers')) {\r\n\r\n return /^\\d*$/.test(input.val());\r\n\r\n }\r\n return true;\r\n },\r\n phonenumber: function (input) {\r\n if (input.is('[type=tel]')) {\r\n\r\n var value = input.val();\r\n if (value.length === 0 && !input.hasClass('es-CL')) {\r\n\r\n return true;\r\n\r\n }\r\n\r\n var _pattern = input.data('pattern') ?\r\n new RegExp(input.data('pattern')) :\r\n (\r\n input.attr('pattern') ?\r\n new RegExp(input.attr('pattern')) :\r\n null\r\n );\r\n if (_pattern) {\r\n\r\n return _pattern.test(value);\r\n\r\n }\r\n var minlength = input.attr('minlength');\r\n if (minlength && value.length < minlength) {\r\n\r\n return false;\r\n\r\n }\r\n var maxlength = input.attr('maxlength');\r\n if (maxlength && value.length > maxlength) {\r\n\r\n return false;\r\n\r\n }\r\n\r\n }\r\n return true;\r\n },\r\n email: function (input) {\r\n if (input.is('[type=email]')) {\r\n\r\n return emailRegex.test(input.val());\r\n\r\n }\r\n return true;\r\n },\r\n required: function (input) {\r\n\r\n if (input.is('[required]')) {\r\n\r\n return input.val().trim().length > 0;\r\n\r\n }\r\n return true;\r\n },\r\n fieldnames: function (input) {\r\n\r\n var value = input.val();\r\n\r\n if (input.hasClass('es-CL')) {\r\n\r\n var _pattern = input.data('pattern') ?\r\n new RegExp(input.data('pattern')) :\r\n (\r\n input.attr('pattern') ?\r\n new RegExp(input.attr('pattern')) :\r\n null\r\n );\r\n if (_pattern) {\r\n\r\n return _pattern.test(value);\r\n\r\n }\r\n var minlength = input.attr('minlength');\r\n if (minlength && value.length < minlength) {\r\n\r\n return false;\r\n\r\n }\r\n var maxlength = input.attr('maxlength');\r\n if (maxlength && value.length > maxlength) {\r\n\r\n return false;\r\n\r\n }\r\n\r\n }\r\n\r\n return true;\r\n },\r\n firstname: function (input) {\r\n if (input.is('[id=FirstName]') && input.hasClass('es-CL')) {\r\n\r\n return lettersRegex.test(input.val());\r\n\r\n }\r\n\r\n return true;\r\n\r\n },\r\n lastname: function (input) {\r\n if (input.is('[id=LastName]') && input.hasClass('es-CL')) {\r\n\r\n return lettersRegex.test(input.val());\r\n\r\n }\r\n\r\n return true;\r\n\r\n },\r\n\r\n message: function (input) {\r\n if (input.is('[id=contactMsg]') && input.hasClass('es-CL')) {\r\n\r\n return input.val().trim().length > 0;\r\n\r\n }\r\n\r\n return true;\r\n\r\n }\r\n\r\n };\r\n // === /Private Properties\r\n\r\n // === Public Methods\r\n this.load = function () {\r\n _form = CommonMethods.GetElement('#contactMe');\r\n CommonMethods.KValidator(\r\n _form,\r\n (Shop.KValidatorMessages || {}),\r\n (this._validatorRules || {}),\r\n ('#: message #')\r\n );\r\n };\r\n\r\n this.Validate = function () {\r\n var kform = CommonMethods.GetKendoValidator(_form);\r\n return kform.validate();\r\n };\r\n // === /Public Methods\r\n\r\n // === Private Methods\r\n // === /Private Methods\r\n}","\r\n$(document).ready(function () {\r\n\r\n $('#btn-next').on('click', function () {\r\n $('#forgot-password').hide();\r\n $('#retrieve-password').fadeIn();\r\n });\r\n\r\n $('#retrieve-password').hide();\r\n\r\n $('#contactEmail').on('keyup', function () {\r\n $('#requiredContactEmail').hide();\r\n });\r\n\r\n $('#contactMsg').on('keyup', function () {\r\n $('#requiredMsg').hide();\r\n });\r\n\r\n $('#Email').on('keyup', function () {\r\n $('#requiredEmail').hide();\r\n });\r\n\r\n $('#Password').on('keyup', function () {\r\n $('#requiredPassword').hide();\r\n $('div.notification-error').hide();\r\n });\r\n\r\n $('#ConfirmPassword').on('keyup', function () {\r\n $('#requiredConfirmPassword').hide();\r\n });\r\n\r\n $('#FirstName').on('keyup', function () {\r\n $('#requiredName').hide();\r\n });\r\n\r\n $('#LastName').on('keyup', function () {\r\n $('#requiredLastName').hide();\r\n });\r\n\r\n $('#ConfirmEmail').on('keyup', function () {\r\n $('#requiredConfirmEmail').hide();\r\n });\r\n\r\n $('#PhoneNumber').on('keyup', function () {\r\n $('#requiredPhoneNumber').hide();\r\n });\r\n $('#AreaCode').on('keyup', function () {\r\n $('#requiredAreaCode').hide();\r\n });\r\n\r\n $('#NewPassword').on('keypress', function () {\r\n this.removeAttribute('readonly');\r\n });\r\n\r\n $('#Email, #ConfirmEmail').on('keypress', function () {\r\n var $this = $(this);\r\n $this.val($this.val().trim());\r\n });\r\n\r\n $('#register #btn-submit').click(function (e) {\r\n e.preventDefault();\r\n $('#register').submit();\r\n $(this).attr('disabled', 'disabled');\r\n });\r\n\r\n $('#accountUpdate .btn-login-1').click(function () {\r\n $('#accountUpdate').submit();\r\n $(this).attr('disabled', 'disabled');\r\n });\r\n\r\n $('#isTermsAndConditionAcceptedCheckBox').click(function () {\r\n if ($(this).is(':checked')) {\r\n\r\n $('#register #btn-submit').removeAttr('disabled');\r\n\r\n } else {\r\n\r\n $('#register #btn-submit').attr('disabled', 'disabled');\r\n\r\n }\r\n });\r\n \r\n});\r\n\r\nfunction WindowErrorFunction(errorObject) {\r\n try {\r\n\r\n errorObject = errorObject.event;\r\n\r\n var line = errorObject.lineno || '';\r\n\r\n var col = errorObject.colno || '';\r\n\r\n var url = errorObject.filename || '';\r\n\r\n var error = errorObject.error || '';\r\n\r\n var errorMessage = errorObject.message || '';\r\n\r\n var date = new Date();\r\n\r\n var locale = Shop.Locale || 'en-US';\r\n\r\n var splunkLoggingUrl = '/Account/api/Log/' + locale;\r\n\r\n var errorData = 'URL:' +\r\n url +\r\n ', line number:' +\r\n line +\r\n ', column number:' +\r\n col +\r\n ', Error.message:' +\r\n errorMessage +\r\n ', Error:' +\r\n error +\r\n ', Date:' +\r\n date.toString();\r\n\r\n var sendDataForLoggingForSplunk =\r\n {\r\n 'Name': 'Exception Occured in JavaScript',\r\n 'Message': errorMessage,\r\n 'LogLevel': 'ERROR',\r\n 'Data': errorData\r\n };\r\n\r\n // TODO: Report this error via ajax so you can keep track\r\n $.ajax({\r\n type: 'POST',\r\n url: splunkLoggingUrl,\r\n dataType: 'json',\r\n data: sendDataForLoggingForSplunk\r\n });\r\n\r\n }\r\n catch (e) {\r\n }\r\n\r\n // If you return true, then error alerts (like in older versions of\r\n // Internet Explorer) will be suppressed.\r\n return true;\r\n\r\n}","\r\nfunction DistributorEmailViewModel() {\r\n // Public Properties\r\n this.LoginEmail = '';\r\n this.ErrorMessage = '';\r\n\r\n // private properties\r\n var _form = CommonMethods.GetElement('[data-form=\"checkform\"]')[0];\r\n var _itsDone = false;\r\n var _tempMail = '';\r\n this.OnLogin = function () {\r\n var that = this;\r\n if (AccountCountryConfig.IsCustomerEmailValidationEnabled()) {\r\n\r\n that.CheckEmail();\r\n\r\n } else {\r\n\r\n _form.submit();\r\n\r\n }\r\n };\r\n\r\n this.CheckEmail = function () {\r\n var that = this;\r\n var loginEmail = that.get('LoginEmail').trim();\r\n if (!loginEmail || (_itsDone && _tempMail === loginEmail)) {\r\n\r\n _form.submit();\r\n return;\r\n\r\n }\r\n _itsDone = false;\r\n _tempMail = '';\r\n var params = '?email=' + loginEmail;\r\n var _promise = CommonMethods.ProcessRequest(ShopUrls.DistributorEmail(params));\r\n that.set('ErrorMessage', '');\r\n\r\n if (_promise) {\r\n\r\n CommonMethods.Progress(_form, true);\r\n\r\n _promise.done(function (data) {\r\n if (data) {\r\n\r\n _itsDone = true;\r\n _tempMail = loginEmail;\r\n if (data.hasDistributorEmailAddress) {\r\n\r\n that.set('ErrorMessage', Localizer('distributorRegistered'));\r\n ScrollInElement('html, body', 500);\r\n\r\n } else {\r\n\r\n _form.submit();\r\n\r\n }\r\n\r\n }\r\n })\r\n .always(function () {\r\n\r\n CommonMethods.Progress(_form, false);\r\n\r\n })\r\n .fail(function (response, status, message) {\r\n\r\n _form.submit();\r\n\r\n });\r\n\r\n }\r\n };\r\n\r\n this.OnEnterPress = function (e) {\r\n\r\n if (e.keyCode === 13) {\r\n\r\n this.OnLogin(e);\r\n\r\n }\r\n\r\n };\r\n}","\r\nfunction AccountViewModel() {\r\n // === Public Properties\r\n\r\n this.LogoImagePath = '';\r\n // === /Public Properties\r\n\r\n // === Private Properties\r\n var _BasePath = '/Account/images/Herbalife_Logo_BrandGreen';\r\n\r\n // === /Private Properties\r\n\r\n // === Public Methods\r\n this.load = function () {\r\n var that = this;\r\n\r\n that.GetLogoImagePath();\r\n\r\n };\r\n\r\n this.GetLogoImagePath = function () {\r\n var that = this;\r\n var _defaulLogoImage = _BasePath + '.png';\r\n \r\n that.set('LogoImagePath', _defaulLogoImage);\r\n\r\n };\r\n}","\r\nvar ShopUrls = ShopUrls || {};\r\n\r\njQuery.extend(ShopUrls, {\r\n // === API ===\r\n CartAPI: function (filter) {\r\n filter = filter || '';\r\n\r\n if (filter) {\r\n\r\n filter = '?cartApiFilter=' + filter;\r\n\r\n }\r\n\r\n return '/Cart/API/CartV1/' + Shop.Locale + filter;\r\n },\r\n RemoveCartItemAPI: function (sku) {\r\n return this.CartAPI() + '?sku=' + sku;\r\n },\r\n // === /API ===\r\n\r\n ProductDetailPage: function (sku) {\r\n sku = sku || '';\r\n\r\n return '/Catalog/Products/Details/' + Shop.Locale + '/' + sku;\r\n },\r\n Shipping: function (params) {\r\n params = params || '';\r\n return '/Account/API/ShippingServiceV1/' + params\r\n },\r\n AccountShippingUrl: function (params) {\r\n params = params || '';\r\n return '/Account/API/ShippingServiceV1/' + params;\r\n } \r\n});","\r\nkendo.data.binders.class = kendo.data.Binder.extend({\r\n init: function (target, bindings, options) {\r\n kendo.data.Binder.fn.init.call(this, target, bindings, options);\r\n\r\n // get list of class names from our complex binding path object\r\n this._lookups = [];\r\n for (var key in this.bindings.class.path) {\r\n\r\n this._lookups.push({\r\n key: key,\r\n path: this.bindings.class.path[key]\r\n });\r\n\r\n }\r\n },\r\n\r\n refresh: function () {\r\n var lookup;\r\n var value;\r\n\r\n for (var i = 0; i < this._lookups.length; i++) {\r\n\r\n lookup = this._lookups[i];\r\n\r\n // set the binder's path to the one for this lookup,\r\n // because this is what .get() acts on.\r\n this.bindings.class.path = lookup.path;\r\n value = this.bindings.class.get();\r\n\r\n // add or remove CSS class based on if value is truthy\r\n if (value) {\r\n\r\n $(this.element).addClass(lookup.key);\r\n\r\n } else {\r\n\r\n $(this.element).removeClass(lookup.key);\r\n\r\n }\r\n\r\n }\r\n }\r\n});\r\n\r\nkendo.data.binders.fadeIn = kendo.data.Binder.extend({\r\n refresh: function () {\r\n var value = this.bindings['fadeIn'].get();\r\n\r\n if (value) {\r\n\r\n $(this.element).fadeIn(500);\r\n\r\n } else {\r\n\r\n $(this.element).hide();\r\n\r\n }\r\n }\r\n});\r\n\r\nkendo.data.binders.slide = kendo.data.Binder.extend({\r\n refresh: function () {\r\n var value = this.bindings['slide'].get();\r\n\r\n if (value) {\r\n\r\n $(this.element).slideDown();\r\n\r\n } else {\r\n\r\n $(this.element).slideUp();\r\n\r\n }\r\n }\r\n});\r\nkendo.data.binders.disableContent = kendo.data.Binder.extend({\r\n refresh: function () {\r\n var value = this.bindings['disableContent'].get();\r\n\r\n if (value) {\r\n\r\n $(this.element).attr('disabled', true);\r\n $(this.element).find(':input, a').attr('disabled', true);\r\n\r\n } else {\r\n\r\n $(this.element).removeAttr('disabled');\r\n $(this.element).find(':input, a').removeAttr('disabled');\r\n\r\n }\r\n }\r\n});\r\n\r\nkendo.data.binders.removeElement = kendo.data.Binder.extend({\r\n refresh: function () {\r\n var value = this.bindings['removeElement'].get();\r\n\r\n if (value) {\r\n\r\n $(this.element).remove();\r\n\r\n }\r\n }\r\n});\r\nkendo.data.binders.removeAttr = kendo.data.Binder.extend({\r\n init: function (target, bindings, options) {\r\n kendo.data.Binder.fn.init.call(this, target, bindings, options);\r\n\r\n // get list of class names from our complex binding path object\r\n this._lookups = [];\r\n for (var key in this.bindings.removeAttr.path) {\r\n\r\n this._lookups.push({\r\n key: key,\r\n path: this.bindings.removeAttr.path[key]\r\n });\r\n\r\n }\r\n },\r\n\r\n refresh: function () {\r\n var lookup;\r\n var value;\r\n\r\n for (var i = 0; i < this._lookups.length; i++) {\r\n\r\n lookup = this._lookups[i];\r\n\r\n // set the binder's path to the one for this lookup,\r\n // because this is what .get() acts on.\r\n this.bindings.removeAttr.path = lookup.path;\r\n value = this.bindings.removeAttr.get();\r\n\r\n // add or remove attributes based on if value is truthy\r\n if (value) {\r\n\r\n $(this.element).removeAttr(lookup.key);\r\n\r\n }\r\n\r\n }\r\n }\r\n});\r\nkendo.data.binders.shake = kendo.data.Binder.extend({\r\n refresh: function () {\r\n var value = this.bindings['shake'].get();\r\n var element = this.element;\r\n if (value) {\r\n\r\n $(element).css({ 'position': 'relative' });\r\n for (var x = 1; x <= 3; x++) {\r\n\r\n $(element)\r\n .animate({ left: -10 }, 10)\r\n .animate({ left: 0 }, 50)\r\n .animate({ left: 10 }, 10)\r\n .animate({ left: 0 }, 50);\r\n\r\n }\r\n\r\n }\r\n }\r\n});","\r\n\r\n// ========================================================================================================== //\r\n(function ($) {\r\n //Define event constants\r\n var DATABINDING = \"dataBinding\", DATABOUND = \"dataBound\", CHANGE = \"change\";\r\n //Define the widget\r\n var gMapsAutocomplete = kendo.ui.Widget.extend({\r\n init: function (e, o) {\r\n var that = this;\r\n\r\n kendo.ui.Widget.fn.init.call(this, e, o);\r\n that._changeHandler = $.proxy(this._change, this);\r\n that.element.on(\"change\", that._changeHandler);\r\n\r\n if (typeof google === 'undefined' || !google.maps.places) {\r\n\r\n throw \"Google Maps javascript reference (Places) required for this widget to function!\";\r\n\r\n } else {\r\n // Create the search box and link it to the UI element.\r\n o.countryrestrictions = o.countryrestrictions || $(e).data(\"countryrestrictions\") || 'us';\r\n o.types = o.types || $(e).data(\"types\") || false;\r\n var _input = e;\r\n var _options = {\r\n\r\n componentRestrictions: { country: o.countryrestrictions }\r\n\r\n };\r\n\r\n if (o.types) {\r\n\r\n _options.types = [o.types];\r\n\r\n }\r\n\r\n var _searchBox = new google.maps.places.Autocomplete(_input, _options);\r\n\r\n // Listen for the event fired when the user selects a prediction and retrieve\r\n // more details for that place.\r\n google.maps.event.addListener(_searchBox, 'place_changed', function (e) {\r\n var _place = _searchBox.getPlace();\r\n\r\n if (jQuery.isEmptyObject(_place) || !_place.hasOwnProperty('geometry')) {\r\n\r\n return;\r\n\r\n }\r\n\r\n that._changeHandler(_place.name);\r\n\r\n });\r\n\r\n }\r\n\r\n try {\r\n\r\n kendo.ui.Widget.fn.init.call(this, e, o);\r\n\r\n } catch (e) {\r\n\r\n logger.log(e);\r\n\r\n }\r\n\r\n $(e).addClass(this.options.name.toLowerCase());\r\n },\r\n options: {\r\n name: \"HGMapsAutocomplete\"\r\n },\r\n events: [\r\n DATABINDING,\r\n DATABOUND,\r\n CHANGE\r\n ],\r\n value: function (value) { //change event that gets or sets the value\r\n var that = this;\r\n\r\n if (typeof value === 'undefined') {\r\n\r\n return that.element.val();\r\n\r\n }\r\n\r\n that.element.val(value);\r\n\r\n },\r\n _change: function (val) {\r\n var that = this;\r\n\r\n that._value = that.element.val();\r\n that.trigger(\"change\");\r\n\r\n },\r\n });\r\n kendo.ui.plugin(gMapsAutocomplete); //Register the gMapsAutocomplete widget as a plugin\r\n\r\n //Define binders for the widget\r\n kendo.data.binders.widget.countryrestrictions =\r\n kendo.data.binders.widget.types =\r\n kendo.data.Binder.extend({\r\n refresh: function () {\r\n //Make sure we’re dealing with a binding for our custom Widget\r\n if (this.element instanceof gMapsAutocomplete) {\r\n\r\n var b = { //Get relevant bindings\r\n cr: this.bindings[\"countryrestrictions\"],\r\n types: this.bindings[\"types\"]\r\n };\r\n\r\n //Get values and pass to the Widget's setValues method\r\n this.element.setValues({\r\n cr: b.cr ? b.cr.get() : false,\r\n types: b.types ? b.types.get() : false\r\n });\r\n\r\n }\r\n }\r\n });\r\n})(jQuery);","\r\n$(function () {\r\n coreMvvm = new MvvmConfiguration();\r\n coreMvvm.Activate();\r\n});","//! moment.js\r\n//! version : 2.30.1\r\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\r\n//! license : MIT\r\n//! momentjs.com\r\n!function (e, t) { \"object\" == typeof exports && \"undefined\" != typeof module ? module.exports = t() : \"function\" == typeof define && define.amd ? define(t) : e.moment = t() }(this, function () { \"use strict\"; var H; function _() { return H.apply(null, arguments) } function y(e) { return e instanceof Array || \"[object Array]\" === Object.prototype.toString.call(e) } function F(e) { return null != e && \"[object Object]\" === Object.prototype.toString.call(e) } function c(e, t) { return Object.prototype.hasOwnProperty.call(e, t) } function L(e) { if (Object.getOwnPropertyNames) return 0 === Object.getOwnPropertyNames(e).length; for (var t in e) if (c(e, t)) return; return 1 } function g(e) { return void 0 === e } function w(e) { return \"number\" == typeof e || \"[object Number]\" === Object.prototype.toString.call(e) } function V(e) { return e instanceof Date || \"[object Date]\" === Object.prototype.toString.call(e) } function G(e, t) { for (var n = [], s = e.length, i = 0; i < s; ++i)n.push(t(e[i], i)); return n } function E(e, t) { for (var n in t) c(t, n) && (e[n] = t[n]); return c(t, \"toString\") && (e.toString = t.toString), c(t, \"valueOf\") && (e.valueOf = t.valueOf), e } function l(e, t, n, s) { return Wt(e, t, n, s, !0).utc() } function p(e) { return null == e._pf && (e._pf = { empty: !1, unusedTokens: [], unusedInput: [], overflow: -2, charsLeftOver: 0, nullInput: !1, invalidEra: null, invalidMonth: null, invalidFormat: !1, userInvalidated: !1, iso: !1, parsedDateParts: [], era: null, meridiem: null, rfc2822: !1, weekdayMismatch: !1 }), e._pf } function A(e) { var t, n, s = e._d && !isNaN(e._d.getTime()); return s && (t = p(e), n = j.call(t.parsedDateParts, function (e) { return null != e }), s = t.overflow < 0 && !t.empty && !t.invalidEra && !t.invalidMonth && !t.invalidWeekday && !t.weekdayMismatch && !t.nullInput && !t.invalidFormat && !t.userInvalidated && (!t.meridiem || t.meridiem && n), e._strict) && (s = s && 0 === t.charsLeftOver && 0 === t.unusedTokens.length && void 0 === t.bigHour), null != Object.isFrozen && Object.isFrozen(e) ? s : (e._isValid = s, e._isValid) } function I(e) { var t = l(NaN); return null != e ? E(p(t), e) : p(t).userInvalidated = !0, t } var j = Array.prototype.some || function (e) { for (var t = Object(this), n = t.length >>> 0, s = 0; s < n; s++)if (s in t && e.call(this, t[s], s, t)) return !0; return !1 }, Z = _.momentProperties = [], z = !1; function q(e, t) { var n, s, i, r = Z.length; if (g(t._isAMomentObject) || (e._isAMomentObject = t._isAMomentObject), g(t._i) || (e._i = t._i), g(t._f) || (e._f = t._f), g(t._l) || (e._l = t._l), g(t._strict) || (e._strict = t._strict), g(t._tzm) || (e._tzm = t._tzm), g(t._isUTC) || (e._isUTC = t._isUTC), g(t._offset) || (e._offset = t._offset), g(t._pf) || (e._pf = p(t)), g(t._locale) || (e._locale = t._locale), 0 < r) for (n = 0; n < r; n++)g(i = t[s = Z[n]]) || (e[s] = i); return e } function $(e) { q(this, e), this._d = new Date(null != e._d ? e._d.getTime() : NaN), this.isValid() || (this._d = new Date(NaN)), !1 === z && (z = !0, _.updateOffset(this), z = !1) } function k(e) { return e instanceof $ || null != e && null != e._isAMomentObject } function B(e) { !1 === _.suppressDeprecationWarnings && \"undefined\" != typeof console && console.warn && console.warn(\"Deprecation warning: \" + e) } function e(r, a) { var o = !0; return E(function () { if (null != _.deprecationHandler && _.deprecationHandler(null, r), o) { for (var e, t, n = [], s = arguments.length, i = 0; i < s; i++) { if (e = \"\", \"object\" == typeof arguments[i]) { for (t in e += \"\\n[\" + i + \"] \", arguments[0]) c(arguments[0], t) && (e += t + \": \" + arguments[0][t] + \", \"); e = e.slice(0, -2) } else e = arguments[i]; n.push(e) } B(r + \"\\nArguments: \" + Array.prototype.slice.call(n).join(\"\") + \"\\n\" + (new Error).stack), o = !1 } return a.apply(this, arguments) }, a) } var J = {}; function Q(e, t) { null != _.deprecationHandler && _.deprecationHandler(e, t), J[e] || (B(t), J[e] = !0) } function a(e) { return \"undefined\" != typeof Function && e instanceof Function || \"[object Function]\" === Object.prototype.toString.call(e) } function X(e, t) { var n, s = E({}, e); for (n in t) c(t, n) && (F(e[n]) && F(t[n]) ? (s[n] = {}, E(s[n], e[n]), E(s[n], t[n])) : null != t[n] ? s[n] = t[n] : delete s[n]); for (n in e) c(e, n) && !c(t, n) && F(e[n]) && (s[n] = E({}, s[n])); return s } function K(e) { null != e && this.set(e) } _.suppressDeprecationWarnings = !1, _.deprecationHandler = null; var ee = Object.keys || function (e) { var t, n = []; for (t in e) c(e, t) && n.push(t); return n }; function r(e, t, n) { var s = \"\" + Math.abs(e); return (0 <= e ? n ? \"+\" : \"\" : \"-\") + Math.pow(10, Math.max(0, t - s.length)).toString().substr(1) + s } var te = /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g, ne = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g, se = {}, ie = {}; function s(e, t, n, s) { var i = \"string\" == typeof s ? function () { return this[s]() } : s; e && (ie[e] = i), t && (ie[t[0]] = function () { return r(i.apply(this, arguments), t[1], t[2]) }), n && (ie[n] = function () { return this.localeData().ordinal(i.apply(this, arguments), e) }) } function re(e, t) { return e.isValid() ? (t = ae(t, e.localeData()), se[t] = se[t] || function (s) { for (var e, i = s.match(te), t = 0, r = i.length; t < r; t++)ie[i[t]] ? i[t] = ie[i[t]] : i[t] = (e = i[t]).match(/\\[[\\s\\S]/) ? e.replace(/^\\[|\\]$/g, \"\") : e.replace(/\\\\/g, \"\"); return function (e) { for (var t = \"\", n = 0; n < r; n++)t += a(i[n]) ? i[n].call(e, s) : i[n]; return t } }(t), se[t](e)) : e.localeData().invalidDate() } function ae(e, t) { var n = 5; function s(e) { return t.longDateFormat(e) || e } for (ne.lastIndex = 0; 0 <= n && ne.test(e);)e = e.replace(ne, s), ne.lastIndex = 0, --n; return e } var oe = { D: \"date\", dates: \"date\", date: \"date\", d: \"day\", days: \"day\", day: \"day\", e: \"weekday\", weekdays: \"weekday\", weekday: \"weekday\", E: \"isoWeekday\", isoweekdays: \"isoWeekday\", isoweekday: \"isoWeekday\", DDD: \"dayOfYear\", dayofyears: \"dayOfYear\", dayofyear: \"dayOfYear\", h: \"hour\", hours: \"hour\", hour: \"hour\", ms: \"millisecond\", milliseconds: \"millisecond\", millisecond: \"millisecond\", m: \"minute\", minutes: \"minute\", minute: \"minute\", M: \"month\", months: \"month\", month: \"month\", Q: \"quarter\", quarters: \"quarter\", quarter: \"quarter\", s: \"second\", seconds: \"second\", second: \"second\", gg: \"weekYear\", weekyears: \"weekYear\", weekyear: \"weekYear\", GG: \"isoWeekYear\", isoweekyears: \"isoWeekYear\", isoweekyear: \"isoWeekYear\", w: \"week\", weeks: \"week\", week: \"week\", W: \"isoWeek\", isoweeks: \"isoWeek\", isoweek: \"isoWeek\", y: \"year\", years: \"year\", year: \"year\" }; function o(e) { return \"string\" == typeof e ? oe[e] || oe[e.toLowerCase()] : void 0 } function ue(e) { var t, n, s = {}; for (n in e) c(e, n) && (t = o(n)) && (s[t] = e[n]); return s } var le = { date: 9, day: 11, weekday: 11, isoWeekday: 11, dayOfYear: 4, hour: 13, millisecond: 16, minute: 14, month: 8, quarter: 7, second: 15, weekYear: 1, isoWeekYear: 1, week: 5, isoWeek: 5, year: 1 }; var de = /\\d/, t = /\\d\\d/, he = /\\d{3}/, ce = /\\d{4}/, fe = /[+-]?\\d{6}/, n = /\\d\\d?/, me = /\\d\\d\\d\\d?/, _e = /\\d\\d\\d\\d\\d\\d?/, ye = /\\d{1,3}/, ge = /\\d{1,4}/, we = /[+-]?\\d{1,6}/, pe = /\\d+/, ke = /[+-]?\\d+/, Me = /Z|[+-]\\d\\d:?\\d\\d/gi, ve = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, i = /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i, u = /^[1-9]\\d?/, d = /^([1-9]\\d|\\d)/; function h(e, n, s) { Ye[e] = a(n) ? n : function (e, t) { return e && s ? s : n } } function De(e, t) { return c(Ye, e) ? Ye[e](t._strict, t._locale) : new RegExp(f(e.replace(\"\\\\\", \"\").replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, function (e, t, n, s, i) { return t || n || s || i }))) } function f(e) { return e.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, \"\\\\$&\") } function m(e) { return e < 0 ? Math.ceil(e) || 0 : Math.floor(e) } function M(e) { var e = +e, t = 0; return t = 0 != e && isFinite(e) ? m(e) : t } var Ye = {}, Se = {}; function v(e, n) { var t, s, i = n; for (\"string\" == typeof e && (e = [e]), w(n) && (i = function (e, t) { t[n] = M(e) }), s = e.length, t = 0; t < s; t++)Se[e[t]] = i } function Oe(e, i) { v(e, function (e, t, n, s) { n._w = n._w || {}, i(e, n._w, n, s) }) } function be(e) { return e % 4 == 0 && e % 100 != 0 || e % 400 == 0 } var D = 0, Y = 1, S = 2, O = 3, b = 4, T = 5, Te = 6, xe = 7, Ne = 8; function We(e) { return be(e) ? 366 : 365 } s(\"Y\", 0, 0, function () { var e = this.year(); return e <= 9999 ? r(e, 4) : \"+\" + e }), s(0, [\"YY\", 2], 0, function () { return this.year() % 100 }), s(0, [\"YYYY\", 4], 0, \"year\"), s(0, [\"YYYYY\", 5], 0, \"year\"), s(0, [\"YYYYYY\", 6, !0], 0, \"year\"), h(\"Y\", ke), h(\"YY\", n, t), h(\"YYYY\", ge, ce), h(\"YYYYY\", we, fe), h(\"YYYYYY\", we, fe), v([\"YYYYY\", \"YYYYYY\"], D), v(\"YYYY\", function (e, t) { t[D] = 2 === e.length ? _.parseTwoDigitYear(e) : M(e) }), v(\"YY\", function (e, t) { t[D] = _.parseTwoDigitYear(e) }), v(\"Y\", function (e, t) { t[D] = parseInt(e, 10) }), _.parseTwoDigitYear = function (e) { return M(e) + (68 < M(e) ? 1900 : 2e3) }; var x, Pe = Re(\"FullYear\", !0); function Re(t, n) { return function (e) { return null != e ? (Ue(this, t, e), _.updateOffset(this, n), this) : Ce(this, t) } } function Ce(e, t) { if (!e.isValid()) return NaN; var n = e._d, s = e._isUTC; switch (t) { case \"Milliseconds\": return s ? n.getUTCMilliseconds() : n.getMilliseconds(); case \"Seconds\": return s ? n.getUTCSeconds() : n.getSeconds(); case \"Minutes\": return s ? n.getUTCMinutes() : n.getMinutes(); case \"Hours\": return s ? n.getUTCHours() : n.getHours(); case \"Date\": return s ? n.getUTCDate() : n.getDate(); case \"Day\": return s ? n.getUTCDay() : n.getDay(); case \"Month\": return s ? n.getUTCMonth() : n.getMonth(); case \"FullYear\": return s ? n.getUTCFullYear() : n.getFullYear(); default: return NaN } } function Ue(e, t, n) { var s, i, r; if (e.isValid() && !isNaN(n)) { switch (s = e._d, i = e._isUTC, t) { case \"Milliseconds\": return i ? s.setUTCMilliseconds(n) : s.setMilliseconds(n); case \"Seconds\": return i ? s.setUTCSeconds(n) : s.setSeconds(n); case \"Minutes\": return i ? s.setUTCMinutes(n) : s.setMinutes(n); case \"Hours\": return i ? s.setUTCHours(n) : s.setHours(n); case \"Date\": return i ? s.setUTCDate(n) : s.setDate(n); case \"FullYear\": break; default: return }t = n, r = e.month(), e = 29 !== (e = e.date()) || 1 !== r || be(t) ? e : 28, i ? s.setUTCFullYear(t, r, e) : s.setFullYear(t, r, e) } } function He(e, t) { var n; return isNaN(e) || isNaN(t) ? NaN : (n = (t % (n = 12) + n) % n, e += (t - n) / 12, 1 == n ? be(e) ? 29 : 28 : 31 - n % 7 % 2) } x = Array.prototype.indexOf || function (e) { for (var t = 0; t < this.length; ++t)if (this[t] === e) return t; return -1 }, s(\"M\", [\"MM\", 2], \"Mo\", function () { return this.month() + 1 }), s(\"MMM\", 0, 0, function (e) { return this.localeData().monthsShort(this, e) }), s(\"MMMM\", 0, 0, function (e) { return this.localeData().months(this, e) }), h(\"M\", n, u), h(\"MM\", n, t), h(\"MMM\", function (e, t) { return t.monthsShortRegex(e) }), h(\"MMMM\", function (e, t) { return t.monthsRegex(e) }), v([\"M\", \"MM\"], function (e, t) { t[Y] = M(e) - 1 }), v([\"MMM\", \"MMMM\"], function (e, t, n, s) { s = n._locale.monthsParse(e, s, n._strict); null != s ? t[Y] = s : p(n).invalidMonth = e }); var Fe = \"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"), Le = \"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec\".split(\"_\"), Ve = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/, Ge = i, Ee = i; function Ae(e, t) { if (e.isValid()) { if (\"string\" == typeof t) if (/^\\d+$/.test(t)) t = M(t); else if (!w(t = e.localeData().monthsParse(t))) return; var n = (n = e.date()) < 29 ? n : Math.min(n, He(e.year(), t)); e._isUTC ? e._d.setUTCMonth(t, n) : e._d.setMonth(t, n) } } function Ie(e) { return null != e ? (Ae(this, e), _.updateOffset(this, !0), this) : Ce(this, \"Month\") } function je() { function e(e, t) { return t.length - e.length } for (var t, n, s = [], i = [], r = [], a = 0; a < 12; a++)n = l([2e3, a]), t = f(this.monthsShort(n, \"\")), n = f(this.months(n, \"\")), s.push(t), i.push(n), r.push(n), r.push(t); s.sort(e), i.sort(e), r.sort(e), this._monthsRegex = new RegExp(\"^(\" + r.join(\"|\") + \")\", \"i\"), this._monthsShortRegex = this._monthsRegex, this._monthsStrictRegex = new RegExp(\"^(\" + i.join(\"|\") + \")\", \"i\"), this._monthsShortStrictRegex = new RegExp(\"^(\" + s.join(\"|\") + \")\", \"i\") } function Ze(e, t, n, s, i, r, a) { var o; return e < 100 && 0 <= e ? (o = new Date(e + 400, t, n, s, i, r, a), isFinite(o.getFullYear()) && o.setFullYear(e)) : o = new Date(e, t, n, s, i, r, a), o } function ze(e) { var t; return e < 100 && 0 <= e ? ((t = Array.prototype.slice.call(arguments))[0] = e + 400, t = new Date(Date.UTC.apply(null, t)), isFinite(t.getUTCFullYear()) && t.setUTCFullYear(e)) : t = new Date(Date.UTC.apply(null, arguments)), t } function qe(e, t, n) { n = 7 + t - n; return n - (7 + ze(e, 0, n).getUTCDay() - t) % 7 - 1 } function $e(e, t, n, s, i) { var r, t = 1 + 7 * (t - 1) + (7 + n - s) % 7 + qe(e, s, i), n = t <= 0 ? We(r = e - 1) + t : t > We(e) ? (r = e + 1, t - We(e)) : (r = e, t); return { year: r, dayOfYear: n } } function Be(e, t, n) { var s, i, r = qe(e.year(), t, n), r = Math.floor((e.dayOfYear() - r - 1) / 7) + 1; return r < 1 ? s = r + N(i = e.year() - 1, t, n) : r > N(e.year(), t, n) ? (s = r - N(e.year(), t, n), i = e.year() + 1) : (i = e.year(), s = r), { week: s, year: i } } function N(e, t, n) { var s = qe(e, t, n), t = qe(e + 1, t, n); return (We(e) - s + t) / 7 } s(\"w\", [\"ww\", 2], \"wo\", \"week\"), s(\"W\", [\"WW\", 2], \"Wo\", \"isoWeek\"), h(\"w\", n, u), h(\"ww\", n, t), h(\"W\", n, u), h(\"WW\", n, t), Oe([\"w\", \"ww\", \"W\", \"WW\"], function (e, t, n, s) { t[s.substr(0, 1)] = M(e) }); function Je(e, t) { return e.slice(t, 7).concat(e.slice(0, t)) } s(\"d\", 0, \"do\", \"day\"), s(\"dd\", 0, 0, function (e) { return this.localeData().weekdaysMin(this, e) }), s(\"ddd\", 0, 0, function (e) { return this.localeData().weekdaysShort(this, e) }), s(\"dddd\", 0, 0, function (e) { return this.localeData().weekdays(this, e) }), s(\"e\", 0, 0, \"weekday\"), s(\"E\", 0, 0, \"isoWeekday\"), h(\"d\", n), h(\"e\", n), h(\"E\", n), h(\"dd\", function (e, t) { return t.weekdaysMinRegex(e) }), h(\"ddd\", function (e, t) { return t.weekdaysShortRegex(e) }), h(\"dddd\", function (e, t) { return t.weekdaysRegex(e) }), Oe([\"dd\", \"ddd\", \"dddd\"], function (e, t, n, s) { s = n._locale.weekdaysParse(e, s, n._strict); null != s ? t.d = s : p(n).invalidWeekday = e }), Oe([\"d\", \"e\", \"E\"], function (e, t, n, s) { t[s] = M(e) }); var Qe = \"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"), Xe = \"Sun_Mon_Tue_Wed_Thu_Fri_Sat\".split(\"_\"), Ke = \"Su_Mo_Tu_We_Th_Fr_Sa\".split(\"_\"), et = i, tt = i, nt = i; function st() { function e(e, t) { return t.length - e.length } for (var t, n, s, i = [], r = [], a = [], o = [], u = 0; u < 7; u++)s = l([2e3, 1]).day(u), t = f(this.weekdaysMin(s, \"\")), n = f(this.weekdaysShort(s, \"\")), s = f(this.weekdays(s, \"\")), i.push(t), r.push(n), a.push(s), o.push(t), o.push(n), o.push(s); i.sort(e), r.sort(e), a.sort(e), o.sort(e), this._weekdaysRegex = new RegExp(\"^(\" + o.join(\"|\") + \")\", \"i\"), this._weekdaysShortRegex = this._weekdaysRegex, this._weekdaysMinRegex = this._weekdaysRegex, this._weekdaysStrictRegex = new RegExp(\"^(\" + a.join(\"|\") + \")\", \"i\"), this._weekdaysShortStrictRegex = new RegExp(\"^(\" + r.join(\"|\") + \")\", \"i\"), this._weekdaysMinStrictRegex = new RegExp(\"^(\" + i.join(\"|\") + \")\", \"i\") } function it() { return this.hours() % 12 || 12 } function rt(e, t) { s(e, 0, 0, function () { return this.localeData().meridiem(this.hours(), this.minutes(), t) }) } function at(e, t) { return t._meridiemParse } s(\"H\", [\"HH\", 2], 0, \"hour\"), s(\"h\", [\"hh\", 2], 0, it), s(\"k\", [\"kk\", 2], 0, function () { return this.hours() || 24 }), s(\"hmm\", 0, 0, function () { return \"\" + it.apply(this) + r(this.minutes(), 2) }), s(\"hmmss\", 0, 0, function () { return \"\" + it.apply(this) + r(this.minutes(), 2) + r(this.seconds(), 2) }), s(\"Hmm\", 0, 0, function () { return \"\" + this.hours() + r(this.minutes(), 2) }), s(\"Hmmss\", 0, 0, function () { return \"\" + this.hours() + r(this.minutes(), 2) + r(this.seconds(), 2) }), rt(\"a\", !0), rt(\"A\", !1), h(\"a\", at), h(\"A\", at), h(\"H\", n, d), h(\"h\", n, u), h(\"k\", n, u), h(\"HH\", n, t), h(\"hh\", n, t), h(\"kk\", n, t), h(\"hmm\", me), h(\"hmmss\", _e), h(\"Hmm\", me), h(\"Hmmss\", _e), v([\"H\", \"HH\"], O), v([\"k\", \"kk\"], function (e, t, n) { e = M(e); t[O] = 24 === e ? 0 : e }), v([\"a\", \"A\"], function (e, t, n) { n._isPm = n._locale.isPM(e), n._meridiem = e }), v([\"h\", \"hh\"], function (e, t, n) { t[O] = M(e), p(n).bigHour = !0 }), v(\"hmm\", function (e, t, n) { var s = e.length - 2; t[O] = M(e.substr(0, s)), t[b] = M(e.substr(s)), p(n).bigHour = !0 }), v(\"hmmss\", function (e, t, n) { var s = e.length - 4, i = e.length - 2; t[O] = M(e.substr(0, s)), t[b] = M(e.substr(s, 2)), t[T] = M(e.substr(i)), p(n).bigHour = !0 }), v(\"Hmm\", function (e, t, n) { var s = e.length - 2; t[O] = M(e.substr(0, s)), t[b] = M(e.substr(s)) }), v(\"Hmmss\", function (e, t, n) { var s = e.length - 4, i = e.length - 2; t[O] = M(e.substr(0, s)), t[b] = M(e.substr(s, 2)), t[T] = M(e.substr(i)) }); i = Re(\"Hours\", !0); var ot, ut = { calendar: { sameDay: \"[Today at] LT\", nextDay: \"[Tomorrow at] LT\", nextWeek: \"dddd [at] LT\", lastDay: \"[Yesterday at] LT\", lastWeek: \"[Last] dddd [at] LT\", sameElse: \"L\" }, longDateFormat: { LTS: \"h:mm:ss A\", LT: \"h:mm A\", L: \"MM/DD/YYYY\", LL: \"MMMM D, YYYY\", LLL: \"MMMM D, YYYY h:mm A\", LLLL: \"dddd, MMMM D, YYYY h:mm A\" }, invalidDate: \"Invalid date\", ordinal: \"%d\", dayOfMonthOrdinalParse: /\\d{1,2}/, relativeTime: { future: \"in %s\", past: \"%s ago\", s: \"a few seconds\", ss: \"%d seconds\", m: \"a minute\", mm: \"%d minutes\", h: \"an hour\", hh: \"%d hours\", d: \"a day\", dd: \"%d days\", w: \"a week\", ww: \"%d weeks\", M: \"a month\", MM: \"%d months\", y: \"a year\", yy: \"%d years\" }, months: Fe, monthsShort: Le, week: { dow: 0, doy: 6 }, weekdays: Qe, weekdaysMin: Ke, weekdaysShort: Xe, meridiemParse: /[ap]\\.?m?\\.?/i }, W = {}, lt = {}; function dt(e) { return e && e.toLowerCase().replace(\"_\", \"-\") } function ht(e) { for (var t, n, s, i, r = 0; r < e.length;) { for (t = (i = dt(e[r]).split(\"-\")).length, n = (n = dt(e[r + 1])) ? n.split(\"-\") : null; 0 < t;) { if (s = ct(i.slice(0, t).join(\"-\"))) return s; if (n && n.length >= t && function (e, t) { for (var n = Math.min(e.length, t.length), s = 0; s < n; s += 1)if (e[s] !== t[s]) return s; return n }(i, n) >= t - 1) break; t-- } r++ } return ot } function ct(t) { var e, n; if (void 0 === W[t] && \"undefined\" != typeof module && module && module.exports && (n = t) && n.match(\"^[^/\\\\\\\\]*$\")) try { e = ot._abbr, require(\"./locale/\" + t), ft(e) } catch (e) { W[t] = null } return W[t] } function ft(e, t) { return e && ((t = g(t) ? P(e) : mt(e, t)) ? ot = t : \"undefined\" != typeof console && console.warn && console.warn(\"Locale \" + e + \" not found. Did you forget to load it?\")), ot._abbr } function mt(e, t) { if (null === t) return delete W[e], null; var n, s = ut; if (t.abbr = e, null != W[e]) Q(\"defineLocaleOverride\", \"use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info.\"), s = W[e]._config; else if (null != t.parentLocale) if (null != W[t.parentLocale]) s = W[t.parentLocale]._config; else { if (null == (n = ct(t.parentLocale))) return lt[t.parentLocale] || (lt[t.parentLocale] = []), lt[t.parentLocale].push({ name: e, config: t }), null; s = n._config } return W[e] = new K(X(s, t)), lt[e] && lt[e].forEach(function (e) { mt(e.name, e.config) }), ft(e), W[e] } function P(e) { var t; if (!(e = e && e._locale && e._locale._abbr ? e._locale._abbr : e)) return ot; if (!y(e)) { if (t = ct(e)) return t; e = [e] } return ht(e) } function _t(e) { var t = e._a; return t && -2 === p(e).overflow && (t = t[Y] < 0 || 11 < t[Y] ? Y : t[S] < 1 || t[S] > He(t[D], t[Y]) ? S : t[O] < 0 || 24 < t[O] || 24 === t[O] && (0 !== t[b] || 0 !== t[T] || 0 !== t[Te]) ? O : t[b] < 0 || 59 < t[b] ? b : t[T] < 0 || 59 < t[T] ? T : t[Te] < 0 || 999 < t[Te] ? Te : -1, p(e)._overflowDayOfYear && (t < D || S < t) && (t = S), p(e)._overflowWeeks && -1 === t && (t = xe), p(e)._overflowWeekday && -1 === t && (t = Ne), p(e).overflow = t), e } var yt = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/, gt = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/, wt = /Z|[+-]\\d\\d(?::?\\d\\d)?/, pt = [[\"YYYYYY-MM-DD\", /[+-]\\d{6}-\\d\\d-\\d\\d/], [\"YYYY-MM-DD\", /\\d{4}-\\d\\d-\\d\\d/], [\"GGGG-[W]WW-E\", /\\d{4}-W\\d\\d-\\d/], [\"GGGG-[W]WW\", /\\d{4}-W\\d\\d/, !1], [\"YYYY-DDD\", /\\d{4}-\\d{3}/], [\"YYYY-MM\", /\\d{4}-\\d\\d/, !1], [\"YYYYYYMMDD\", /[+-]\\d{10}/], [\"YYYYMMDD\", /\\d{8}/], [\"GGGG[W]WWE\", /\\d{4}W\\d{3}/], [\"GGGG[W]WW\", /\\d{4}W\\d{2}/, !1], [\"YYYYDDD\", /\\d{7}/], [\"YYYYMM\", /\\d{6}/, !1], [\"YYYY\", /\\d{4}/, !1]], kt = [[\"HH:mm:ss.SSSS\", /\\d\\d:\\d\\d:\\d\\d\\.\\d+/], [\"HH:mm:ss,SSSS\", /\\d\\d:\\d\\d:\\d\\d,\\d+/], [\"HH:mm:ss\", /\\d\\d:\\d\\d:\\d\\d/], [\"HH:mm\", /\\d\\d:\\d\\d/], [\"HHmmss.SSSS\", /\\d\\d\\d\\d\\d\\d\\.\\d+/], [\"HHmmss,SSSS\", /\\d\\d\\d\\d\\d\\d,\\d+/], [\"HHmmss\", /\\d\\d\\d\\d\\d\\d/], [\"HHmm\", /\\d\\d\\d\\d/], [\"HH\", /\\d\\d/]], Mt = /^\\/?Date\\((-?\\d+)/i, vt = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/, Dt = { UT: 0, GMT: 0, EDT: -240, EST: -300, CDT: -300, CST: -360, MDT: -360, MST: -420, PDT: -420, PST: -480 }; function Yt(e) { var t, n, s, i, r, a, o = e._i, u = yt.exec(o) || gt.exec(o), o = pt.length, l = kt.length; if (u) { for (p(e).iso = !0, t = 0, n = o; t < n; t++)if (pt[t][1].exec(u[1])) { i = pt[t][0], s = !1 !== pt[t][2]; break } if (null == i) e._isValid = !1; else { if (u[3]) { for (t = 0, n = l; t < n; t++)if (kt[t][1].exec(u[3])) { r = (u[2] || \" \") + kt[t][0]; break } if (null == r) return void (e._isValid = !1) } if (s || null == r) { if (u[4]) { if (!wt.exec(u[4])) return void (e._isValid = !1); a = \"Z\" } e._f = i + (r || \"\") + (a || \"\"), xt(e) } else e._isValid = !1 } } else e._isValid = !1 } function St(e, t, n, s, i, r) { e = [function (e) { e = parseInt(e, 10); { if (e <= 49) return 2e3 + e; if (e <= 999) return 1900 + e } return e }(e), Le.indexOf(t), parseInt(n, 10), parseInt(s, 10), parseInt(i, 10)]; return r && e.push(parseInt(r, 10)), e } function Ot(e) { var t, n, s = vt.exec(e._i.replace(/\\([^()]*\\)|[\\n\\t]/g, \" \").replace(/(\\s\\s+)/g, \" \").replace(/^\\s\\s*/, \"\").replace(/\\s\\s*$/, \"\")); s ? (t = St(s[4], s[3], s[2], s[5], s[6], s[7]), function (e, t, n) { if (!e || Xe.indexOf(e) === new Date(t[0], t[1], t[2]).getDay()) return 1; p(n).weekdayMismatch = !0, n._isValid = !1 }(s[1], t, e) && (e._a = t, e._tzm = (t = s[8], n = s[9], s = s[10], t ? Dt[t] : n ? 0 : 60 * (((t = parseInt(s, 10)) - (n = t % 100)) / 100) + n), e._d = ze.apply(null, e._a), e._d.setUTCMinutes(e._d.getUTCMinutes() - e._tzm), p(e).rfc2822 = !0)) : e._isValid = !1 } function bt(e, t, n) { return null != e ? e : null != t ? t : n } function Tt(e) { var t, n, s, i, r, a, o, u, l, d, h, c = []; if (!e._d) { for (s = e, i = new Date(_.now()), n = s._useUTC ? [i.getUTCFullYear(), i.getUTCMonth(), i.getUTCDate()] : [i.getFullYear(), i.getMonth(), i.getDate()], e._w && null == e._a[S] && null == e._a[Y] && (null != (i = (s = e)._w).GG || null != i.W || null != i.E ? (u = 1, l = 4, r = bt(i.GG, s._a[D], Be(R(), 1, 4).year), a = bt(i.W, 1), ((o = bt(i.E, 1)) < 1 || 7 < o) && (d = !0)) : (u = s._locale._week.dow, l = s._locale._week.doy, h = Be(R(), u, l), r = bt(i.gg, s._a[D], h.year), a = bt(i.w, h.week), null != i.d ? ((o = i.d) < 0 || 6 < o) && (d = !0) : null != i.e ? (o = i.e + u, (i.e < 0 || 6 < i.e) && (d = !0)) : o = u), a < 1 || a > N(r, u, l) ? p(s)._overflowWeeks = !0 : null != d ? p(s)._overflowWeekday = !0 : (h = $e(r, a, o, u, l), s._a[D] = h.year, s._dayOfYear = h.dayOfYear)), null != e._dayOfYear && (i = bt(e._a[D], n[D]), (e._dayOfYear > We(i) || 0 === e._dayOfYear) && (p(e)._overflowDayOfYear = !0), d = ze(i, 0, e._dayOfYear), e._a[Y] = d.getUTCMonth(), e._a[S] = d.getUTCDate()), t = 0; t < 3 && null == e._a[t]; ++t)e._a[t] = c[t] = n[t]; for (; t < 7; t++)e._a[t] = c[t] = null == e._a[t] ? 2 === t ? 1 : 0 : e._a[t]; 24 === e._a[O] && 0 === e._a[b] && 0 === e._a[T] && 0 === e._a[Te] && (e._nextDay = !0, e._a[O] = 0), e._d = (e._useUTC ? ze : Ze).apply(null, c), r = e._useUTC ? e._d.getUTCDay() : e._d.getDay(), null != e._tzm && e._d.setUTCMinutes(e._d.getUTCMinutes() - e._tzm), e._nextDay && (e._a[O] = 24), e._w && void 0 !== e._w.d && e._w.d !== r && (p(e).weekdayMismatch = !0) } } function xt(e) { if (e._f === _.ISO_8601) Yt(e); else if (e._f === _.RFC_2822) Ot(e); else { e._a = [], p(e).empty = !0; for (var t, n, s, i, r, a = \"\" + e._i, o = a.length, u = 0, l = ae(e._f, e._locale).match(te) || [], d = l.length, h = 0; h < d; h++)n = l[h], (t = (a.match(De(n, e)) || [])[0]) && (0 < (s = a.substr(0, a.indexOf(t))).length && p(e).unusedInput.push(s), a = a.slice(a.indexOf(t) + t.length), u += t.length), ie[n] ? (t ? p(e).empty = !1 : p(e).unusedTokens.push(n), s = n, r = e, null != (i = t) && c(Se, s) && Se[s](i, r._a, r, s)) : e._strict && !t && p(e).unusedTokens.push(n); p(e).charsLeftOver = o - u, 0 < a.length && p(e).unusedInput.push(a), e._a[O] <= 12 && !0 === p(e).bigHour && 0 < e._a[O] && (p(e).bigHour = void 0), p(e).parsedDateParts = e._a.slice(0), p(e).meridiem = e._meridiem, e._a[O] = function (e, t, n) { if (null == n) return t; return null != e.meridiemHour ? e.meridiemHour(t, n) : null != e.isPM ? ((e = e.isPM(n)) && t < 12 && (t += 12), t = e || 12 !== t ? t : 0) : t }(e._locale, e._a[O], e._meridiem), null !== (o = p(e).era) && (e._a[D] = e._locale.erasConvertYear(o, e._a[D])), Tt(e), _t(e) } } function Nt(e) { var t, n, s, i = e._i, r = e._f; if (e._locale = e._locale || P(e._l), null === i || void 0 === r && \"\" === i) return I({ nullInput: !0 }); if (\"string\" == typeof i && (e._i = i = e._locale.preparse(i)), k(i)) return new $(_t(i)); if (V(i)) e._d = i; else if (y(r)) { var a, o, u, l, d, h, c = e, f = !1, m = c._f.length; if (0 === m) p(c).invalidFormat = !0, c._d = new Date(NaN); else { for (l = 0; l < m; l++)d = 0, h = !1, a = q({}, c), null != c._useUTC && (a._useUTC = c._useUTC), a._f = c._f[l], xt(a), A(a) && (h = !0), d = (d += p(a).charsLeftOver) + 10 * p(a).unusedTokens.length, p(a).score = d, f ? d < u && (u = d, o = a) : (null == u || d < u || h) && (u = d, o = a, h) && (f = !0); E(c, o || a) } } else if (r) xt(e); else if (g(r = (i = e)._i)) i._d = new Date(_.now()); else V(r) ? i._d = new Date(r.valueOf()) : \"string\" == typeof r ? (n = i, null !== (t = Mt.exec(n._i)) ? n._d = new Date(+t[1]) : (Yt(n), !1 === n._isValid && (delete n._isValid, Ot(n), !1 === n._isValid) && (delete n._isValid, n._strict ? n._isValid = !1 : _.createFromInputFallback(n)))) : y(r) ? (i._a = G(r.slice(0), function (e) { return parseInt(e, 10) }), Tt(i)) : F(r) ? (t = i)._d || (s = void 0 === (n = ue(t._i)).day ? n.date : n.day, t._a = G([n.year, n.month, s, n.hour, n.minute, n.second, n.millisecond], function (e) { return e && parseInt(e, 10) }), Tt(t)) : w(r) ? i._d = new Date(r) : _.createFromInputFallback(i); return A(e) || (e._d = null), e } function Wt(e, t, n, s, i) { var r = {}; return !0 !== t && !1 !== t || (s = t, t = void 0), !0 !== n && !1 !== n || (s = n, n = void 0), (F(e) && L(e) || y(e) && 0 === e.length) && (e = void 0), r._isAMomentObject = !0, r._useUTC = r._isUTC = i, r._l = n, r._i = e, r._f = t, r._strict = s, (i = new $(_t(Nt(i = r))))._nextDay && (i.add(1, \"d\"), i._nextDay = void 0), i } function R(e, t, n, s) { return Wt(e, t, n, s, !1) } _.createFromInputFallback = e(\"value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.\", function (e) { e._d = new Date(e._i + (e._useUTC ? \" UTC\" : \"\")) }), _.ISO_8601 = function () { }, _.RFC_2822 = function () { }; me = e(\"moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/\", function () { var e = R.apply(null, arguments); return this.isValid() && e.isValid() ? e < this ? this : e : I() }), _e = e(\"moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/\", function () { var e = R.apply(null, arguments); return this.isValid() && e.isValid() ? this < e ? this : e : I() }); function Pt(e, t) { var n, s; if (!(t = 1 === t.length && y(t[0]) ? t[0] : t).length) return R(); for (n = t[0], s = 1; s < t.length; ++s)t[s].isValid() && !t[s][e](n) || (n = t[s]); return n } var Rt = [\"year\", \"quarter\", \"month\", \"week\", \"day\", \"hour\", \"minute\", \"second\", \"millisecond\"]; function Ct(e) { var e = ue(e), t = e.year || 0, n = e.quarter || 0, s = e.month || 0, i = e.week || e.isoWeek || 0, r = e.day || 0, a = e.hour || 0, o = e.minute || 0, u = e.second || 0, l = e.millisecond || 0; this._isValid = function (e) { var t, n, s = !1, i = Rt.length; for (t in e) if (c(e, t) && (-1 === x.call(Rt, t) || null != e[t] && isNaN(e[t]))) return !1; for (n = 0; n < i; ++n)if (e[Rt[n]]) { if (s) return !1; parseFloat(e[Rt[n]]) !== M(e[Rt[n]]) && (s = !0) } return !0 }(e), this._milliseconds = +l + 1e3 * u + 6e4 * o + 1e3 * a * 60 * 60, this._days = +r + 7 * i, this._months = +s + 3 * n + 12 * t, this._data = {}, this._locale = P(), this._bubble() } function Ut(e) { return e instanceof Ct } function Ht(e) { return e < 0 ? -1 * Math.round(-1 * e) : Math.round(e) } function Ft(e, n) { s(e, 0, 0, function () { var e = this.utcOffset(), t = \"+\"; return e < 0 && (e = -e, t = \"-\"), t + r(~~(e / 60), 2) + n + r(~~e % 60, 2) }) } Ft(\"Z\", \":\"), Ft(\"ZZ\", \"\"), h(\"Z\", ve), h(\"ZZ\", ve), v([\"Z\", \"ZZ\"], function (e, t, n) { n._useUTC = !0, n._tzm = Vt(ve, e) }); var Lt = /([\\+\\-]|\\d\\d)/gi; function Vt(e, t) { var t = (t || \"\").match(e); return null === t ? null : 0 === (t = 60 * (e = ((t[t.length - 1] || []) + \"\").match(Lt) || [\"-\", 0, 0])[1] + M(e[2])) ? 0 : \"+\" === e[0] ? t : -t } function Gt(e, t) { var n; return t._isUTC ? (t = t.clone(), n = (k(e) || V(e) ? e : R(e)).valueOf() - t.valueOf(), t._d.setTime(t._d.valueOf() + n), _.updateOffset(t, !1), t) : R(e).local() } function Et(e) { return -Math.round(e._d.getTimezoneOffset()) } function At() { return !!this.isValid() && this._isUTC && 0 === this._offset } _.updateOffset = function () { }; var It = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/, jt = /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/; function C(e, t) { var n, s = e; return Ut(e) ? s = { ms: e._milliseconds, d: e._days, M: e._months } : w(e) || !isNaN(+e) ? (s = {}, t ? s[t] = +e : s.milliseconds = +e) : (t = It.exec(e)) ? (n = \"-\" === t[1] ? -1 : 1, s = { y: 0, d: M(t[S]) * n, h: M(t[O]) * n, m: M(t[b]) * n, s: M(t[T]) * n, ms: M(Ht(1e3 * t[Te])) * n }) : (t = jt.exec(e)) ? (n = \"-\" === t[1] ? -1 : 1, s = { y: Zt(t[2], n), M: Zt(t[3], n), w: Zt(t[4], n), d: Zt(t[5], n), h: Zt(t[6], n), m: Zt(t[7], n), s: Zt(t[8], n) }) : null == s ? s = {} : \"object\" == typeof s && (\"from\" in s || \"to\" in s) && (t = function (e, t) { var n; if (!e.isValid() || !t.isValid()) return { milliseconds: 0, months: 0 }; t = Gt(t, e), e.isBefore(t) ? n = zt(e, t) : ((n = zt(t, e)).milliseconds = -n.milliseconds, n.months = -n.months); return n }(R(s.from), R(s.to)), (s = {}).ms = t.milliseconds, s.M = t.months), n = new Ct(s), Ut(e) && c(e, \"_locale\") && (n._locale = e._locale), Ut(e) && c(e, \"_isValid\") && (n._isValid = e._isValid), n } function Zt(e, t) { e = e && parseFloat(e.replace(\",\", \".\")); return (isNaN(e) ? 0 : e) * t } function zt(e, t) { var n = {}; return n.months = t.month() - e.month() + 12 * (t.year() - e.year()), e.clone().add(n.months, \"M\").isAfter(t) && --n.months, n.milliseconds = +t - +e.clone().add(n.months, \"M\"), n } function qt(s, i) { return function (e, t) { var n; return null === t || isNaN(+t) || (Q(i, \"moment().\" + i + \"(period, number) is deprecated. Please use moment().\" + i + \"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.\"), n = e, e = t, t = n), $t(this, C(e, t), s), this } } function $t(e, t, n, s) { var i = t._milliseconds, r = Ht(t._days), t = Ht(t._months); e.isValid() && (s = null == s || s, t && Ae(e, Ce(e, \"Month\") + t * n), r && Ue(e, \"Date\", Ce(e, \"Date\") + r * n), i && e._d.setTime(e._d.valueOf() + i * n), s) && _.updateOffset(e, r || t) } C.fn = Ct.prototype, C.invalid = function () { return C(NaN) }; Fe = qt(1, \"add\"), Qe = qt(-1, \"subtract\"); function Bt(e) { return \"string\" == typeof e || e instanceof String } function Jt(e) { return k(e) || V(e) || Bt(e) || w(e) || function (t) { var e = y(t), n = !1; e && (n = 0 === t.filter(function (e) { return !w(e) && Bt(t) }).length); return e && n }(e) || function (e) { var t, n, s = F(e) && !L(e), i = !1, r = [\"years\", \"year\", \"y\", \"months\", \"month\", \"M\", \"days\", \"day\", \"d\", \"dates\", \"date\", \"D\", \"hours\", \"hour\", \"h\", \"minutes\", \"minute\", \"m\", \"seconds\", \"second\", \"s\", \"milliseconds\", \"millisecond\", \"ms\"], a = r.length; for (t = 0; t < a; t += 1)n = r[t], i = i || c(e, n); return s && i }(e) || null == e } function Qt(e, t) { var n, s; return e.date() < t.date() ? -Qt(t, e) : -((n = 12 * (t.year() - e.year()) + (t.month() - e.month())) + (t - (s = e.clone().add(n, \"months\")) < 0 ? (t - s) / (s - e.clone().add(n - 1, \"months\")) : (t - s) / (e.clone().add(1 + n, \"months\") - s))) || 0 } function Xt(e) { return void 0 === e ? this._locale._abbr : (null != (e = P(e)) && (this._locale = e), this) } _.defaultFormat = \"YYYY-MM-DDTHH:mm:ssZ\", _.defaultFormatUtc = \"YYYY-MM-DDTHH:mm:ss[Z]\"; Ke = e(\"moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.\", function (e) { return void 0 === e ? this.localeData() : this.locale(e) }); function Kt() { return this._locale } var en = 126227808e5; function tn(e, t) { return (e % t + t) % t } function nn(e, t, n) { return e < 100 && 0 <= e ? new Date(e + 400, t, n) - en : new Date(e, t, n).valueOf() } function sn(e, t, n) { return e < 100 && 0 <= e ? Date.UTC(e + 400, t, n) - en : Date.UTC(e, t, n) } function rn(e, t) { return t.erasAbbrRegex(e) } function an() { for (var e, t, n, s = [], i = [], r = [], a = [], o = this.eras(), u = 0, l = o.length; u < l; ++u)e = f(o[u].name), t = f(o[u].abbr), n = f(o[u].narrow), i.push(e), s.push(t), r.push(n), a.push(e), a.push(t), a.push(n); this._erasRegex = new RegExp(\"^(\" + a.join(\"|\") + \")\", \"i\"), this._erasNameRegex = new RegExp(\"^(\" + i.join(\"|\") + \")\", \"i\"), this._erasAbbrRegex = new RegExp(\"^(\" + s.join(\"|\") + \")\", \"i\"), this._erasNarrowRegex = new RegExp(\"^(\" + r.join(\"|\") + \")\", \"i\") } function on(e, t) { s(0, [e, e.length], 0, t) } function un(e, t, n, s, i) { var r; return null == e ? Be(this, s, i).year : (r = N(e, s, i), function (e, t, n, s, i) { e = $e(e, t, n, s, i), t = ze(e.year, 0, e.dayOfYear); return this.year(t.getUTCFullYear()), this.month(t.getUTCMonth()), this.date(t.getUTCDate()), this }.call(this, e, t = r < t ? r : t, n, s, i)) } s(\"N\", 0, 0, \"eraAbbr\"), s(\"NN\", 0, 0, \"eraAbbr\"), s(\"NNN\", 0, 0, \"eraAbbr\"), s(\"NNNN\", 0, 0, \"eraName\"), s(\"NNNNN\", 0, 0, \"eraNarrow\"), s(\"y\", [\"y\", 1], \"yo\", \"eraYear\"), s(\"y\", [\"yy\", 2], 0, \"eraYear\"), s(\"y\", [\"yyy\", 3], 0, \"eraYear\"), s(\"y\", [\"yyyy\", 4], 0, \"eraYear\"), h(\"N\", rn), h(\"NN\", rn), h(\"NNN\", rn), h(\"NNNN\", function (e, t) { return t.erasNameRegex(e) }), h(\"NNNNN\", function (e, t) { return t.erasNarrowRegex(e) }), v([\"N\", \"NN\", \"NNN\", \"NNNN\", \"NNNNN\"], function (e, t, n, s) { s = n._locale.erasParse(e, s, n._strict); s ? p(n).era = s : p(n).invalidEra = e }), h(\"y\", pe), h(\"yy\", pe), h(\"yyy\", pe), h(\"yyyy\", pe), h(\"yo\", function (e, t) { return t._eraYearOrdinalRegex || pe }), v([\"y\", \"yy\", \"yyy\", \"yyyy\"], D), v([\"yo\"], function (e, t, n, s) { var i; n._locale._eraYearOrdinalRegex && (i = e.match(n._locale._eraYearOrdinalRegex)), n._locale.eraYearOrdinalParse ? t[D] = n._locale.eraYearOrdinalParse(e, i) : t[D] = parseInt(e, 10) }), s(0, [\"gg\", 2], 0, function () { return this.weekYear() % 100 }), s(0, [\"GG\", 2], 0, function () { return this.isoWeekYear() % 100 }), on(\"gggg\", \"weekYear\"), on(\"ggggg\", \"weekYear\"), on(\"GGGG\", \"isoWeekYear\"), on(\"GGGGG\", \"isoWeekYear\"), h(\"G\", ke), h(\"g\", ke), h(\"GG\", n, t), h(\"gg\", n, t), h(\"GGGG\", ge, ce), h(\"gggg\", ge, ce), h(\"GGGGG\", we, fe), h(\"ggggg\", we, fe), Oe([\"gggg\", \"ggggg\", \"GGGG\", \"GGGGG\"], function (e, t, n, s) { t[s.substr(0, 2)] = M(e) }), Oe([\"gg\", \"GG\"], function (e, t, n, s) { t[s] = _.parseTwoDigitYear(e) }), s(\"Q\", 0, \"Qo\", \"quarter\"), h(\"Q\", de), v(\"Q\", function (e, t) { t[Y] = 3 * (M(e) - 1) }), s(\"D\", [\"DD\", 2], \"Do\", \"date\"), h(\"D\", n, u), h(\"DD\", n, t), h(\"Do\", function (e, t) { return e ? t._dayOfMonthOrdinalParse || t._ordinalParse : t._dayOfMonthOrdinalParseLenient }), v([\"D\", \"DD\"], S), v(\"Do\", function (e, t) { t[S] = M(e.match(n)[0]) }); ge = Re(\"Date\", !0); s(\"DDD\", [\"DDDD\", 3], \"DDDo\", \"dayOfYear\"), h(\"DDD\", ye), h(\"DDDD\", he), v([\"DDD\", \"DDDD\"], function (e, t, n) { n._dayOfYear = M(e) }), s(\"m\", [\"mm\", 2], 0, \"minute\"), h(\"m\", n, d), h(\"mm\", n, t), v([\"m\", \"mm\"], b); var ln, ce = Re(\"Minutes\", !1), we = (s(\"s\", [\"ss\", 2], 0, \"second\"), h(\"s\", n, d), h(\"ss\", n, t), v([\"s\", \"ss\"], T), Re(\"Seconds\", !1)); for (s(\"S\", 0, 0, function () { return ~~(this.millisecond() / 100) }), s(0, [\"SS\", 2], 0, function () { return ~~(this.millisecond() / 10) }), s(0, [\"SSS\", 3], 0, \"millisecond\"), s(0, [\"SSSS\", 4], 0, function () { return 10 * this.millisecond() }), s(0, [\"SSSSS\", 5], 0, function () { return 100 * this.millisecond() }), s(0, [\"SSSSSS\", 6], 0, function () { return 1e3 * this.millisecond() }), s(0, [\"SSSSSSS\", 7], 0, function () { return 1e4 * this.millisecond() }), s(0, [\"SSSSSSSS\", 8], 0, function () { return 1e5 * this.millisecond() }), s(0, [\"SSSSSSSSS\", 9], 0, function () { return 1e6 * this.millisecond() }), h(\"S\", ye, de), h(\"SS\", ye, t), h(\"SSS\", ye, he), ln = \"SSSS\"; ln.length <= 9; ln += \"S\")h(ln, pe); function dn(e, t) { t[Te] = M(1e3 * (\"0.\" + e)) } for (ln = \"S\"; ln.length <= 9; ln += \"S\")v(ln, dn); fe = Re(\"Milliseconds\", !1), s(\"z\", 0, 0, \"zoneAbbr\"), s(\"zz\", 0, 0, \"zoneName\"); u = $.prototype; function hn(e) { return e } u.add = Fe, u.calendar = function (e, t) { 1 === arguments.length && (arguments[0] ? Jt(arguments[0]) ? (e = arguments[0], t = void 0) : function (e) { for (var t = F(e) && !L(e), n = !1, s = [\"sameDay\", \"nextDay\", \"lastDay\", \"nextWeek\", \"lastWeek\", \"sameElse\"], i = 0; i < s.length; i += 1)n = n || c(e, s[i]); return t && n }(arguments[0]) && (t = arguments[0], e = void 0) : t = e = void 0); var e = e || R(), n = Gt(e, this).startOf(\"day\"), n = _.calendarFormat(this, n) || \"sameElse\", t = t && (a(t[n]) ? t[n].call(this, e) : t[n]); return this.format(t || this.localeData().calendar(n, this, R(e))) }, u.clone = function () { return new $(this) }, u.diff = function (e, t, n) { var s, i, r; if (!this.isValid()) return NaN; if (!(s = Gt(e, this)).isValid()) return NaN; switch (i = 6e4 * (s.utcOffset() - this.utcOffset()), t = o(t)) { case \"year\": r = Qt(this, s) / 12; break; case \"month\": r = Qt(this, s); break; case \"quarter\": r = Qt(this, s) / 3; break; case \"second\": r = (this - s) / 1e3; break; case \"minute\": r = (this - s) / 6e4; break; case \"hour\": r = (this - s) / 36e5; break; case \"day\": r = (this - s - i) / 864e5; break; case \"week\": r = (this - s - i) / 6048e5; break; default: r = this - s }return n ? r : m(r) }, u.endOf = function (e) { var t, n; if (void 0 !== (e = o(e)) && \"millisecond\" !== e && this.isValid()) { switch (n = this._isUTC ? sn : nn, e) { case \"year\": t = n(this.year() + 1, 0, 1) - 1; break; case \"quarter\": t = n(this.year(), this.month() - this.month() % 3 + 3, 1) - 1; break; case \"month\": t = n(this.year(), this.month() + 1, 1) - 1; break; case \"week\": t = n(this.year(), this.month(), this.date() - this.weekday() + 7) - 1; break; case \"isoWeek\": t = n(this.year(), this.month(), this.date() - (this.isoWeekday() - 1) + 7) - 1; break; case \"day\": case \"date\": t = n(this.year(), this.month(), this.date() + 1) - 1; break; case \"hour\": t = this._d.valueOf(), t += 36e5 - tn(t + (this._isUTC ? 0 : 6e4 * this.utcOffset()), 36e5) - 1; break; case \"minute\": t = this._d.valueOf(), t += 6e4 - tn(t, 6e4) - 1; break; case \"second\": t = this._d.valueOf(), t += 1e3 - tn(t, 1e3) - 1; break }this._d.setTime(t), _.updateOffset(this, !0) } return this }, u.format = function (e) { return e = e || (this.isUtc() ? _.defaultFormatUtc : _.defaultFormat), e = re(this, e), this.localeData().postformat(e) }, u.from = function (e, t) { return this.isValid() && (k(e) && e.isValid() || R(e).isValid()) ? C({ to: this, from: e }).locale(this.locale()).humanize(!t) : this.localeData().invalidDate() }, u.fromNow = function (e) { return this.from(R(), e) }, u.to = function (e, t) { return this.isValid() && (k(e) && e.isValid() || R(e).isValid()) ? C({ from: this, to: e }).locale(this.locale()).humanize(!t) : this.localeData().invalidDate() }, u.toNow = function (e) { return this.to(R(), e) }, u.get = function (e) { return a(this[e = o(e)]) ? this[e]() : this }, u.invalidAt = function () { return p(this).overflow }, u.isAfter = function (e, t) { return e = k(e) ? e : R(e), !(!this.isValid() || !e.isValid()) && (\"millisecond\" === (t = o(t) || \"millisecond\") ? this.valueOf() > e.valueOf() : e.valueOf() < this.clone().startOf(t).valueOf()) }, u.isBefore = function (e, t) { return e = k(e) ? e : R(e), !(!this.isValid() || !e.isValid()) && (\"millisecond\" === (t = o(t) || \"millisecond\") ? this.valueOf() < e.valueOf() : this.clone().endOf(t).valueOf() < e.valueOf()) }, u.isBetween = function (e, t, n, s) { return e = k(e) ? e : R(e), t = k(t) ? t : R(t), !!(this.isValid() && e.isValid() && t.isValid()) && (\"(\" === (s = s || \"()\")[0] ? this.isAfter(e, n) : !this.isBefore(e, n)) && (\")\" === s[1] ? this.isBefore(t, n) : !this.isAfter(t, n)) }, u.isSame = function (e, t) { var e = k(e) ? e : R(e); return !(!this.isValid() || !e.isValid()) && (\"millisecond\" === (t = o(t) || \"millisecond\") ? this.valueOf() === e.valueOf() : (e = e.valueOf(), this.clone().startOf(t).valueOf() <= e && e <= this.clone().endOf(t).valueOf())) }, u.isSameOrAfter = function (e, t) { return this.isSame(e, t) || this.isAfter(e, t) }, u.isSameOrBefore = function (e, t) { return this.isSame(e, t) || this.isBefore(e, t) }, u.isValid = function () { return A(this) }, u.lang = Ke, u.locale = Xt, u.localeData = Kt, u.max = _e, u.min = me, u.parsingFlags = function () { return E({}, p(this)) }, u.set = function (e, t) { if (\"object\" == typeof e) for (var n = function (e) { var t, n = []; for (t in e) c(e, t) && n.push({ unit: t, priority: le[t] }); return n.sort(function (e, t) { return e.priority - t.priority }), n }(e = ue(e)), s = n.length, i = 0; i < s; i++)this[n[i].unit](e[n[i].unit]); else if (a(this[e = o(e)])) return this[e](t); return this }, u.startOf = function (e) { var t, n; if (void 0 !== (e = o(e)) && \"millisecond\" !== e && this.isValid()) { switch (n = this._isUTC ? sn : nn, e) { case \"year\": t = n(this.year(), 0, 1); break; case \"quarter\": t = n(this.year(), this.month() - this.month() % 3, 1); break; case \"month\": t = n(this.year(), this.month(), 1); break; case \"week\": t = n(this.year(), this.month(), this.date() - this.weekday()); break; case \"isoWeek\": t = n(this.year(), this.month(), this.date() - (this.isoWeekday() - 1)); break; case \"day\": case \"date\": t = n(this.year(), this.month(), this.date()); break; case \"hour\": t = this._d.valueOf(), t -= tn(t + (this._isUTC ? 0 : 6e4 * this.utcOffset()), 36e5); break; case \"minute\": t = this._d.valueOf(), t -= tn(t, 6e4); break; case \"second\": t = this._d.valueOf(), t -= tn(t, 1e3); break }this._d.setTime(t), _.updateOffset(this, !0) } return this }, u.subtract = Qe, u.toArray = function () { var e = this; return [e.year(), e.month(), e.date(), e.hour(), e.minute(), e.second(), e.millisecond()] }, u.toObject = function () { var e = this; return { years: e.year(), months: e.month(), date: e.date(), hours: e.hours(), minutes: e.minutes(), seconds: e.seconds(), milliseconds: e.milliseconds() } }, u.toDate = function () { return new Date(this.valueOf()) }, u.toISOString = function (e) { var t; return this.isValid() ? (t = (e = !0 !== e) ? this.clone().utc() : this).year() < 0 || 9999 < t.year() ? re(t, e ? \"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]\" : \"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ\") : a(Date.prototype.toISOString) ? e ? this.toDate().toISOString() : new Date(this.valueOf() + 60 * this.utcOffset() * 1e3).toISOString().replace(\"Z\", re(t, \"Z\")) : re(t, e ? \"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]\" : \"YYYY-MM-DD[T]HH:mm:ss.SSSZ\") : null }, u.inspect = function () { var e, t, n; return this.isValid() ? (t = \"moment\", e = \"\", this.isLocal() || (t = 0 === this.utcOffset() ? \"moment.utc\" : \"moment.parseZone\", e = \"Z\"), t = \"[\" + t + '(\"]', n = 0 <= this.year() && this.year() <= 9999 ? \"YYYY\" : \"YYYYYY\", this.format(t + n + \"-MM-DD[T]HH:mm:ss.SSS\" + (e + '[\")]'))) : \"moment.invalid(/* \" + this._i + \" */)\" }, \"undefined\" != typeof Symbol && null != Symbol.for && (u[Symbol.for(\"nodejs.util.inspect.custom\")] = function () { return \"Moment<\" + this.format() + \">\" }), u.toJSON = function () { return this.isValid() ? this.toISOString() : null }, u.toString = function () { return this.clone().locale(\"en\").format(\"ddd MMM DD YYYY HH:mm:ss [GMT]ZZ\") }, u.unix = function () { return Math.floor(this.valueOf() / 1e3) }, u.valueOf = function () { return this._d.valueOf() - 6e4 * (this._offset || 0) }, u.creationData = function () { return { input: this._i, format: this._f, locale: this._locale, isUTC: this._isUTC, strict: this._strict } }, u.eraName = function () { for (var e, t = this.localeData().eras(), n = 0, s = t.length; n < s; ++n) { if (e = this.clone().startOf(\"day\").valueOf(), t[n].since <= e && e <= t[n].until) return t[n].name; if (t[n].until <= e && e <= t[n].since) return t[n].name } return \"\" }, u.eraNarrow = function () { for (var e, t = this.localeData().eras(), n = 0, s = t.length; n < s; ++n) { if (e = this.clone().startOf(\"day\").valueOf(), t[n].since <= e && e <= t[n].until) return t[n].narrow; if (t[n].until <= e && e <= t[n].since) return t[n].narrow } return \"\" }, u.eraAbbr = function () { for (var e, t = this.localeData().eras(), n = 0, s = t.length; n < s; ++n) { if (e = this.clone().startOf(\"day\").valueOf(), t[n].since <= e && e <= t[n].until) return t[n].abbr; if (t[n].until <= e && e <= t[n].since) return t[n].abbr } return \"\" }, u.eraYear = function () { for (var e, t, n = this.localeData().eras(), s = 0, i = n.length; s < i; ++s)if (e = n[s].since <= n[s].until ? 1 : -1, t = this.clone().startOf(\"day\").valueOf(), n[s].since <= t && t <= n[s].until || n[s].until <= t && t <= n[s].since) return (this.year() - _(n[s].since).year()) * e + n[s].offset; return this.year() }, u.year = Pe, u.isLeapYear = function () { return be(this.year()) }, u.weekYear = function (e) { return un.call(this, e, this.week(), this.weekday() + this.localeData()._week.dow, this.localeData()._week.dow, this.localeData()._week.doy) }, u.isoWeekYear = function (e) { return un.call(this, e, this.isoWeek(), this.isoWeekday(), 1, 4) }, u.quarter = u.quarters = function (e) { return null == e ? Math.ceil((this.month() + 1) / 3) : this.month(3 * (e - 1) + this.month() % 3) }, u.month = Ie, u.daysInMonth = function () { return He(this.year(), this.month()) }, u.week = u.weeks = function (e) { var t = this.localeData().week(this); return null == e ? t : this.add(7 * (e - t), \"d\") }, u.isoWeek = u.isoWeeks = function (e) { var t = Be(this, 1, 4).week; return null == e ? t : this.add(7 * (e - t), \"d\") }, u.weeksInYear = function () { var e = this.localeData()._week; return N(this.year(), e.dow, e.doy) }, u.weeksInWeekYear = function () { var e = this.localeData()._week; return N(this.weekYear(), e.dow, e.doy) }, u.isoWeeksInYear = function () { return N(this.year(), 1, 4) }, u.isoWeeksInISOWeekYear = function () { return N(this.isoWeekYear(), 1, 4) }, u.date = ge, u.day = u.days = function (e) { var t, n, s; return this.isValid() ? (t = Ce(this, \"Day\"), null != e ? (n = e, s = this.localeData(), e = \"string\" != typeof n ? n : isNaN(n) ? \"number\" == typeof (n = s.weekdaysParse(n)) ? n : null : parseInt(n, 10), this.add(e - t, \"d\")) : t) : null != e ? this : NaN }, u.weekday = function (e) { var t; return this.isValid() ? (t = (this.day() + 7 - this.localeData()._week.dow) % 7, null == e ? t : this.add(e - t, \"d\")) : null != e ? this : NaN }, u.isoWeekday = function (e) { var t, n; return this.isValid() ? null != e ? (t = e, n = this.localeData(), n = \"string\" == typeof t ? n.weekdaysParse(t) % 7 || 7 : isNaN(t) ? null : t, this.day(this.day() % 7 ? n : n - 7)) : this.day() || 7 : null != e ? this : NaN }, u.dayOfYear = function (e) { var t = Math.round((this.clone().startOf(\"day\") - this.clone().startOf(\"year\")) / 864e5) + 1; return null == e ? t : this.add(e - t, \"d\") }, u.hour = u.hours = i, u.minute = u.minutes = ce, u.second = u.seconds = we, u.millisecond = u.milliseconds = fe, u.utcOffset = function (e, t, n) { var s, i = this._offset || 0; if (!this.isValid()) return null != e ? this : NaN; if (null == e) return this._isUTC ? i : Et(this); if (\"string\" == typeof e) { if (null === (e = Vt(ve, e))) return this } else Math.abs(e) < 16 && !n && (e *= 60); return !this._isUTC && t && (s = Et(this)), this._offset = e, this._isUTC = !0, null != s && this.add(s, \"m\"), i !== e && (!t || this._changeInProgress ? $t(this, C(e - i, \"m\"), 1, !1) : this._changeInProgress || (this._changeInProgress = !0, _.updateOffset(this, !0), this._changeInProgress = null)), this }, u.utc = function (e) { return this.utcOffset(0, e) }, u.local = function (e) { return this._isUTC && (this.utcOffset(0, e), this._isUTC = !1, e) && this.subtract(Et(this), \"m\"), this }, u.parseZone = function () { var e; return null != this._tzm ? this.utcOffset(this._tzm, !1, !0) : \"string\" == typeof this._i && (null != (e = Vt(Me, this._i)) ? this.utcOffset(e) : this.utcOffset(0, !0)), this }, u.hasAlignedHourOffset = function (e) { return !!this.isValid() && (e = e ? R(e).utcOffset() : 0, (this.utcOffset() - e) % 60 == 0) }, u.isDST = function () { return this.utcOffset() > this.clone().month(0).utcOffset() || this.utcOffset() > this.clone().month(5).utcOffset() }, u.isLocal = function () { return !!this.isValid() && !this._isUTC }, u.isUtcOffset = function () { return !!this.isValid() && this._isUTC }, u.isUtc = At, u.isUTC = At, u.zoneAbbr = function () { return this._isUTC ? \"UTC\" : \"\" }, u.zoneName = function () { return this._isUTC ? \"Coordinated Universal Time\" : \"\" }, u.dates = e(\"dates accessor is deprecated. Use date instead.\", ge), u.months = e(\"months accessor is deprecated. Use month instead\", Ie), u.years = e(\"years accessor is deprecated. Use year instead\", Pe), u.zone = e(\"moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/\", function (e, t) { return null != e ? (this.utcOffset(e = \"string\" != typeof e ? -e : e, t), this) : -this.utcOffset() }), u.isDSTShifted = e(\"isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information\", function () { var e, t; return g(this._isDSTShifted) && (q(e = {}, this), (e = Nt(e))._a ? (t = (e._isUTC ? l : R)(e._a), this._isDSTShifted = this.isValid() && 0 < function (e, t, n) { for (var s = Math.min(e.length, t.length), i = Math.abs(e.length - t.length), r = 0, a = 0; a < s; a++)(n && e[a] !== t[a] || !n && M(e[a]) !== M(t[a])) && r++; return r + i }(e._a, t.toArray())) : this._isDSTShifted = !1), this._isDSTShifted }); d = K.prototype; function cn(e, t, n, s) { var i = P(), s = l().set(s, t); return i[n](s, e) } function fn(e, t, n) { if (w(e) && (t = e, e = void 0), e = e || \"\", null != t) return cn(e, t, n, \"month\"); for (var s = [], i = 0; i < 12; i++)s[i] = cn(e, i, n, \"month\"); return s } function mn(e, t, n, s) { t = (\"boolean\" == typeof e ? w(t) && (n = t, t = void 0) : (t = e, e = !1, w(n = t) && (n = t, t = void 0)), t || \"\"); var i, r = P(), a = e ? r._week.dow : 0, o = []; if (null != n) return cn(t, (n + a) % 7, s, \"day\"); for (i = 0; i < 7; i++)o[i] = cn(t, (i + a) % 7, s, \"day\"); return o } d.calendar = function (e, t, n) { return a(e = this._calendar[e] || this._calendar.sameElse) ? e.call(t, n) : e }, d.longDateFormat = function (e) { var t = this._longDateFormat[e], n = this._longDateFormat[e.toUpperCase()]; return t || !n ? t : (this._longDateFormat[e] = n.match(te).map(function (e) { return \"MMMM\" === e || \"MM\" === e || \"DD\" === e || \"dddd\" === e ? e.slice(1) : e }).join(\"\"), this._longDateFormat[e]) }, d.invalidDate = function () { return this._invalidDate }, d.ordinal = function (e) { return this._ordinal.replace(\"%d\", e) }, d.preparse = hn, d.postformat = hn, d.relativeTime = function (e, t, n, s) { var i = this._relativeTime[n]; return a(i) ? i(e, t, n, s) : i.replace(/%d/i, e) }, d.pastFuture = function (e, t) { return a(e = this._relativeTime[0 < e ? \"future\" : \"past\"]) ? e(t) : e.replace(/%s/i, t) }, d.set = function (e) { var t, n; for (n in e) c(e, n) && (a(t = e[n]) ? this[n] = t : this[\"_\" + n] = t); this._config = e, this._dayOfMonthOrdinalParseLenient = new RegExp((this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) + \"|\" + /\\d{1,2}/.source) }, d.eras = function (e, t) { for (var n, s = this._eras || P(\"en\")._eras, i = 0, r = s.length; i < r; ++i) { switch (typeof s[i].since) { case \"string\": n = _(s[i].since).startOf(\"day\"), s[i].since = n.valueOf(); break }switch (typeof s[i].until) { case \"undefined\": s[i].until = 1 / 0; break; case \"string\": n = _(s[i].until).startOf(\"day\").valueOf(), s[i].until = n.valueOf(); break } } return s }, d.erasParse = function (e, t, n) { var s, i, r, a, o, u = this.eras(); for (e = e.toUpperCase(), s = 0, i = u.length; s < i; ++s)if (r = u[s].name.toUpperCase(), a = u[s].abbr.toUpperCase(), o = u[s].narrow.toUpperCase(), n) switch (t) { case \"N\": case \"NN\": case \"NNN\": if (a === e) return u[s]; break; case \"NNNN\": if (r === e) return u[s]; break; case \"NNNNN\": if (o === e) return u[s]; break } else if (0 <= [r, a, o].indexOf(e)) return u[s] }, d.erasConvertYear = function (e, t) { var n = e.since <= e.until ? 1 : -1; return void 0 === t ? _(e.since).year() : _(e.since).year() + (t - e.offset) * n }, d.erasAbbrRegex = function (e) { return c(this, \"_erasAbbrRegex\") || an.call(this), e ? this._erasAbbrRegex : this._erasRegex }, d.erasNameRegex = function (e) { return c(this, \"_erasNameRegex\") || an.call(this), e ? this._erasNameRegex : this._erasRegex }, d.erasNarrowRegex = function (e) { return c(this, \"_erasNarrowRegex\") || an.call(this), e ? this._erasNarrowRegex : this._erasRegex }, d.months = function (e, t) { return e ? (y(this._months) ? this._months : this._months[(this._months.isFormat || Ve).test(t) ? \"format\" : \"standalone\"])[e.month()] : y(this._months) ? this._months : this._months.standalone }, d.monthsShort = function (e, t) { return e ? (y(this._monthsShort) ? this._monthsShort : this._monthsShort[Ve.test(t) ? \"format\" : \"standalone\"])[e.month()] : y(this._monthsShort) ? this._monthsShort : this._monthsShort.standalone }, d.monthsParse = function (e, t, n) { var s, i; if (this._monthsParseExact) return function (e, t, n) { var s, i, r, e = e.toLocaleLowerCase(); if (!this._monthsParse) for (this._monthsParse = [], this._longMonthsParse = [], this._shortMonthsParse = [], s = 0; s < 12; ++s)r = l([2e3, s]), this._shortMonthsParse[s] = this.monthsShort(r, \"\").toLocaleLowerCase(), this._longMonthsParse[s] = this.months(r, \"\").toLocaleLowerCase(); return n ? \"MMM\" === t ? -1 !== (i = x.call(this._shortMonthsParse, e)) ? i : null : -1 !== (i = x.call(this._longMonthsParse, e)) ? i : null : \"MMM\" === t ? -1 !== (i = x.call(this._shortMonthsParse, e)) || -1 !== (i = x.call(this._longMonthsParse, e)) ? i : null : -1 !== (i = x.call(this._longMonthsParse, e)) || -1 !== (i = x.call(this._shortMonthsParse, e)) ? i : null }.call(this, e, t, n); for (this._monthsParse || (this._monthsParse = [], this._longMonthsParse = [], this._shortMonthsParse = []), s = 0; s < 12; s++) { if (i = l([2e3, s]), n && !this._longMonthsParse[s] && (this._longMonthsParse[s] = new RegExp(\"^\" + this.months(i, \"\").replace(\".\", \"\") + \"$\", \"i\"), this._shortMonthsParse[s] = new RegExp(\"^\" + this.monthsShort(i, \"\").replace(\".\", \"\") + \"$\", \"i\")), n || this._monthsParse[s] || (i = \"^\" + this.months(i, \"\") + \"|^\" + this.monthsShort(i, \"\"), this._monthsParse[s] = new RegExp(i.replace(\".\", \"\"), \"i\")), n && \"MMMM\" === t && this._longMonthsParse[s].test(e)) return s; if (n && \"MMM\" === t && this._shortMonthsParse[s].test(e)) return s; if (!n && this._monthsParse[s].test(e)) return s } }, d.monthsRegex = function (e) { return this._monthsParseExact ? (c(this, \"_monthsRegex\") || je.call(this), e ? this._monthsStrictRegex : this._monthsRegex) : (c(this, \"_monthsRegex\") || (this._monthsRegex = Ee), this._monthsStrictRegex && e ? this._monthsStrictRegex : this._monthsRegex) }, d.monthsShortRegex = function (e) { return this._monthsParseExact ? (c(this, \"_monthsRegex\") || je.call(this), e ? this._monthsShortStrictRegex : this._monthsShortRegex) : (c(this, \"_monthsShortRegex\") || (this._monthsShortRegex = Ge), this._monthsShortStrictRegex && e ? this._monthsShortStrictRegex : this._monthsShortRegex) }, d.week = function (e) { return Be(e, this._week.dow, this._week.doy).week }, d.firstDayOfYear = function () { return this._week.doy }, d.firstDayOfWeek = function () { return this._week.dow }, d.weekdays = function (e, t) { return t = y(this._weekdays) ? this._weekdays : this._weekdays[e && !0 !== e && this._weekdays.isFormat.test(t) ? \"format\" : \"standalone\"], !0 === e ? Je(t, this._week.dow) : e ? t[e.day()] : t }, d.weekdaysMin = function (e) { return !0 === e ? Je(this._weekdaysMin, this._week.dow) : e ? this._weekdaysMin[e.day()] : this._weekdaysMin }, d.weekdaysShort = function (e) { return !0 === e ? Je(this._weekdaysShort, this._week.dow) : e ? this._weekdaysShort[e.day()] : this._weekdaysShort }, d.weekdaysParse = function (e, t, n) { var s, i; if (this._weekdaysParseExact) return function (e, t, n) { var s, i, r, e = e.toLocaleLowerCase(); if (!this._weekdaysParse) for (this._weekdaysParse = [], this._shortWeekdaysParse = [], this._minWeekdaysParse = [], s = 0; s < 7; ++s)r = l([2e3, 1]).day(s), this._minWeekdaysParse[s] = this.weekdaysMin(r, \"\").toLocaleLowerCase(), this._shortWeekdaysParse[s] = this.weekdaysShort(r, \"\").toLocaleLowerCase(), this._weekdaysParse[s] = this.weekdays(r, \"\").toLocaleLowerCase(); return n ? \"dddd\" === t ? -1 !== (i = x.call(this._weekdaysParse, e)) ? i : null : \"ddd\" === t ? -1 !== (i = x.call(this._shortWeekdaysParse, e)) ? i : null : -1 !== (i = x.call(this._minWeekdaysParse, e)) ? i : null : \"dddd\" === t ? -1 !== (i = x.call(this._weekdaysParse, e)) || -1 !== (i = x.call(this._shortWeekdaysParse, e)) || -1 !== (i = x.call(this._minWeekdaysParse, e)) ? i : null : \"ddd\" === t ? -1 !== (i = x.call(this._shortWeekdaysParse, e)) || -1 !== (i = x.call(this._weekdaysParse, e)) || -1 !== (i = x.call(this._minWeekdaysParse, e)) ? i : null : -1 !== (i = x.call(this._minWeekdaysParse, e)) || -1 !== (i = x.call(this._weekdaysParse, e)) || -1 !== (i = x.call(this._shortWeekdaysParse, e)) ? i : null }.call(this, e, t, n); for (this._weekdaysParse || (this._weekdaysParse = [], this._minWeekdaysParse = [], this._shortWeekdaysParse = [], this._fullWeekdaysParse = []), s = 0; s < 7; s++) { if (i = l([2e3, 1]).day(s), n && !this._fullWeekdaysParse[s] && (this._fullWeekdaysParse[s] = new RegExp(\"^\" + this.weekdays(i, \"\").replace(\".\", \"\\\\.?\") + \"$\", \"i\"), this._shortWeekdaysParse[s] = new RegExp(\"^\" + this.weekdaysShort(i, \"\").replace(\".\", \"\\\\.?\") + \"$\", \"i\"), this._minWeekdaysParse[s] = new RegExp(\"^\" + this.weekdaysMin(i, \"\").replace(\".\", \"\\\\.?\") + \"$\", \"i\")), this._weekdaysParse[s] || (i = \"^\" + this.weekdays(i, \"\") + \"|^\" + this.weekdaysShort(i, \"\") + \"|^\" + this.weekdaysMin(i, \"\"), this._weekdaysParse[s] = new RegExp(i.replace(\".\", \"\"), \"i\")), n && \"dddd\" === t && this._fullWeekdaysParse[s].test(e)) return s; if (n && \"ddd\" === t && this._shortWeekdaysParse[s].test(e)) return s; if (n && \"dd\" === t && this._minWeekdaysParse[s].test(e)) return s; if (!n && this._weekdaysParse[s].test(e)) return s } }, d.weekdaysRegex = function (e) { return this._weekdaysParseExact ? (c(this, \"_weekdaysRegex\") || st.call(this), e ? this._weekdaysStrictRegex : this._weekdaysRegex) : (c(this, \"_weekdaysRegex\") || (this._weekdaysRegex = et), this._weekdaysStrictRegex && e ? this._weekdaysStrictRegex : this._weekdaysRegex) }, d.weekdaysShortRegex = function (e) { return this._weekdaysParseExact ? (c(this, \"_weekdaysRegex\") || st.call(this), e ? this._weekdaysShortStrictRegex : this._weekdaysShortRegex) : (c(this, \"_weekdaysShortRegex\") || (this._weekdaysShortRegex = tt), this._weekdaysShortStrictRegex && e ? this._weekdaysShortStrictRegex : this._weekdaysShortRegex) }, d.weekdaysMinRegex = function (e) { return this._weekdaysParseExact ? (c(this, \"_weekdaysRegex\") || st.call(this), e ? this._weekdaysMinStrictRegex : this._weekdaysMinRegex) : (c(this, \"_weekdaysMinRegex\") || (this._weekdaysMinRegex = nt), this._weekdaysMinStrictRegex && e ? this._weekdaysMinStrictRegex : this._weekdaysMinRegex) }, d.isPM = function (e) { return \"p\" === (e + \"\").toLowerCase().charAt(0) }, d.meridiem = function (e, t, n) { return 11 < e ? n ? \"pm\" : \"PM\" : n ? \"am\" : \"AM\" }, ft(\"en\", { eras: [{ since: \"0001-01-01\", until: 1 / 0, offset: 1, name: \"Anno Domini\", narrow: \"AD\", abbr: \"AD\" }, { since: \"0000-12-31\", until: -1 / 0, offset: 1, name: \"Before Christ\", narrow: \"BC\", abbr: \"BC\" }], dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/, ordinal: function (e) { var t = e % 10; return e + (1 === M(e % 100 / 10) ? \"th\" : 1 == t ? \"st\" : 2 == t ? \"nd\" : 3 == t ? \"rd\" : \"th\") } }), _.lang = e(\"moment.lang is deprecated. Use moment.locale instead.\", ft), _.langData = e(\"moment.langData is deprecated. Use moment.localeData instead.\", P); var _n = Math.abs; function yn(e, t, n, s) { t = C(t, n); return e._milliseconds += s * t._milliseconds, e._days += s * t._days, e._months += s * t._months, e._bubble() } function gn(e) { return e < 0 ? Math.floor(e) : Math.ceil(e) } function wn(e) { return 4800 * e / 146097 } function pn(e) { return 146097 * e / 4800 } function kn(e) { return function () { return this.as(e) } } de = kn(\"ms\"), t = kn(\"s\"), ye = kn(\"m\"), he = kn(\"h\"), Fe = kn(\"d\"), _e = kn(\"w\"), me = kn(\"M\"), Qe = kn(\"Q\"), i = kn(\"y\"), ce = de; function Mn(e) { return function () { return this.isValid() ? this._data[e] : NaN } } var we = Mn(\"milliseconds\"), fe = Mn(\"seconds\"), ge = Mn(\"minutes\"), Pe = Mn(\"hours\"), d = Mn(\"days\"), vn = Mn(\"months\"), Dn = Mn(\"years\"); var Yn = Math.round, Sn = { ss: 44, s: 45, m: 45, h: 22, d: 26, w: null, M: 11 }; function On(e, t, n, s) { var i = C(e).abs(), r = Yn(i.as(\"s\")), a = Yn(i.as(\"m\")), o = Yn(i.as(\"h\")), u = Yn(i.as(\"d\")), l = Yn(i.as(\"M\")), d = Yn(i.as(\"w\")), i = Yn(i.as(\"y\")), r = (r <= n.ss ? [\"s\", r] : r < n.s && [\"ss\", r]) || (a <= 1 ? [\"m\"] : a < n.m && [\"mm\", a]) || (o <= 1 ? [\"h\"] : o < n.h && [\"hh\", o]) || (u <= 1 ? [\"d\"] : u < n.d && [\"dd\", u]); return (r = (r = null != n.w ? r || (d <= 1 ? [\"w\"] : d < n.w && [\"ww\", d]) : r) || (l <= 1 ? [\"M\"] : l < n.M && [\"MM\", l]) || (i <= 1 ? [\"y\"] : [\"yy\", i]))[2] = t, r[3] = 0 < +e, r[4] = s, function (e, t, n, s, i) { return i.relativeTime(t || 1, !!n, e, s) }.apply(null, r) } var bn = Math.abs; function Tn(e) { return (0 < e) - (e < 0) || +e } function xn() { var e, t, n, s, i, r, a, o, u, l, d; return this.isValid() ? (e = bn(this._milliseconds) / 1e3, t = bn(this._days), n = bn(this._months), (o = this.asSeconds()) ? (s = m(e / 60), i = m(s / 60), e %= 60, s %= 60, r = m(n / 12), n %= 12, a = e ? e.toFixed(3).replace(/\\.?0+$/, \"\") : \"\", u = Tn(this._months) !== Tn(o) ? \"-\" : \"\", l = Tn(this._days) !== Tn(o) ? \"-\" : \"\", d = Tn(this._milliseconds) !== Tn(o) ? \"-\" : \"\", (o < 0 ? \"-\" : \"\") + \"P\" + (r ? u + r + \"Y\" : \"\") + (n ? u + n + \"M\" : \"\") + (t ? l + t + \"D\" : \"\") + (i || s || e ? \"T\" : \"\") + (i ? d + i + \"H\" : \"\") + (s ? d + s + \"M\" : \"\") + (e ? d + a + \"S\" : \"\")) : \"P0D\") : this.localeData().invalidDate() } var U = Ct.prototype; return U.isValid = function () { return this._isValid }, U.abs = function () { var e = this._data; return this._milliseconds = _n(this._milliseconds), this._days = _n(this._days), this._months = _n(this._months), e.milliseconds = _n(e.milliseconds), e.seconds = _n(e.seconds), e.minutes = _n(e.minutes), e.hours = _n(e.hours), e.months = _n(e.months), e.years = _n(e.years), this }, U.add = function (e, t) { return yn(this, e, t, 1) }, U.subtract = function (e, t) { return yn(this, e, t, -1) }, U.as = function (e) { if (!this.isValid()) return NaN; var t, n, s = this._milliseconds; if (\"month\" === (e = o(e)) || \"quarter\" === e || \"year\" === e) switch (t = this._days + s / 864e5, n = this._months + wn(t), e) { case \"month\": return n; case \"quarter\": return n / 3; case \"year\": return n / 12 } else switch (t = this._days + Math.round(pn(this._months)), e) { case \"week\": return t / 7 + s / 6048e5; case \"day\": return t + s / 864e5; case \"hour\": return 24 * t + s / 36e5; case \"minute\": return 1440 * t + s / 6e4; case \"second\": return 86400 * t + s / 1e3; case \"millisecond\": return Math.floor(864e5 * t) + s; default: throw new Error(\"Unknown unit \" + e) } }, U.asMilliseconds = de, U.asSeconds = t, U.asMinutes = ye, U.asHours = he, U.asDays = Fe, U.asWeeks = _e, U.asMonths = me, U.asQuarters = Qe, U.asYears = i, U.valueOf = ce, U._bubble = function () { var e = this._milliseconds, t = this._days, n = this._months, s = this._data; return 0 <= e && 0 <= t && 0 <= n || e <= 0 && t <= 0 && n <= 0 || (e += 864e5 * gn(pn(n) + t), n = t = 0), s.milliseconds = e % 1e3, e = m(e / 1e3), s.seconds = e % 60, e = m(e / 60), s.minutes = e % 60, e = m(e / 60), s.hours = e % 24, t += m(e / 24), n += e = m(wn(t)), t -= gn(pn(e)), e = m(n / 12), n %= 12, s.days = t, s.months = n, s.years = e, this }, U.clone = function () { return C(this) }, U.get = function (e) { return e = o(e), this.isValid() ? this[e + \"s\"]() : NaN }, U.milliseconds = we, U.seconds = fe, U.minutes = ge, U.hours = Pe, U.days = d, U.weeks = function () { return m(this.days() / 7) }, U.months = vn, U.years = Dn, U.humanize = function (e, t) { var n, s; return this.isValid() ? (n = !1, s = Sn, \"object\" == typeof e && (t = e, e = !1), \"boolean\" == typeof e && (n = e), \"object\" == typeof t && (s = Object.assign({}, Sn, t), null != t.s) && null == t.ss && (s.ss = t.s - 1), e = this.localeData(), t = On(this, !n, s, e), n && (t = e.pastFuture(+this, t)), e.postformat(t)) : this.localeData().invalidDate() }, U.toISOString = xn, U.toString = xn, U.toJSON = xn, U.locale = Xt, U.localeData = Kt, U.toIsoString = e(\"toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)\", xn), U.lang = Ke, s(\"X\", 0, 0, \"unix\"), s(\"x\", 0, 0, \"valueOf\"), h(\"x\", ke), h(\"X\", /[+-]?\\d+(\\.\\d{1,3})?/), v(\"X\", function (e, t, n) { n._d = new Date(1e3 * parseFloat(e)) }), v(\"x\", function (e, t, n) { n._d = new Date(M(e)) }), _.version = \"2.30.1\", H = R, _.fn = u, _.min = function () { return Pt(\"isBefore\", [].slice.call(arguments, 0)) }, _.max = function () { return Pt(\"isAfter\", [].slice.call(arguments, 0)) }, _.now = function () { return Date.now ? Date.now() : +new Date }, _.utc = l, _.unix = function (e) { return R(1e3 * e) }, _.months = function (e, t) { return fn(e, t, \"months\") }, _.isDate = V, _.locale = ft, _.invalid = I, _.duration = C, _.isMoment = k, _.weekdays = function (e, t, n) { return mn(e, t, n, \"weekdays\") }, _.parseZone = function () { return R.apply(null, arguments).parseZone() }, _.localeData = P, _.isDuration = Ut, _.monthsShort = function (e, t) { return fn(e, t, \"monthsShort\") }, _.weekdaysMin = function (e, t, n) { return mn(e, t, n, \"weekdaysMin\") }, _.defineLocale = mt, _.updateLocale = function (e, t) { var n, s; return null != t ? (s = ut, null != W[e] && null != W[e].parentLocale ? W[e].set(X(W[e]._config, t)) : (t = X(s = null != (n = ct(e)) ? n._config : s, t), null == n && (t.abbr = e), (s = new K(t)).parentLocale = W[e], W[e] = s), ft(e)) : null != W[e] && (null != W[e].parentLocale ? (W[e] = W[e].parentLocale, e === ft() && ft(e)) : null != W[e] && delete W[e]), W[e] }, _.locales = function () { return ee(W) }, _.weekdaysShort = function (e, t, n) { return mn(e, t, n, \"weekdaysShort\") }, _.normalizeUnits = o, _.relativeTimeRounding = function (e) { return void 0 === e ? Yn : \"function\" == typeof e && (Yn = e, !0) }, _.relativeTimeThreshold = function (e, t) { return void 0 !== Sn[e] && (void 0 === t ? Sn[e] : (Sn[e] = t, \"s\" === e && (Sn.ss = t - 1), !0)) }, _.calendarFormat = function (e, t) { return (e = e.diff(t, \"days\", !0)) < -6 ? \"sameElse\" : e < -1 ? \"lastWeek\" : e < 0 ? \"lastDay\" : e < 1 ? \"sameDay\" : e < 2 ? \"nextDay\" : e < 7 ? \"nextWeek\" : \"sameElse\" }, _.prototype = u, _.HTML5_FMT = { DATETIME_LOCAL: \"YYYY-MM-DDTHH:mm\", DATETIME_LOCAL_SECONDS: \"YYYY-MM-DDTHH:mm:ss\", DATETIME_LOCAL_MS: \"YYYY-MM-DDTHH:mm:ss.SSS\", DATE: \"YYYY-MM-DD\", TIME: \"HH:mm\", TIME_SECONDS: \"HH:mm:ss\", TIME_MS: \"HH:mm:ss.SSS\", WEEK: \"GGGG-[W]WW\", MONTH: \"YYYY-MM\" }, _ });\r\n//# sourceMappingURL=moment.min.js.map","// jQuery Mask Plugin v1.14.8\r\n// github.com/igorescobar/jQuery-Mask-Plugin\r\nvar $jscomp={scope:{},findInternal:function(a,f,c){a instanceof String&&(a=String(a));for(var l=a.length,g=0;g=k?h:a+(d.slice(0,a).length-e.slice(0,a).length));return a},behaviour:function(e){e=e||window.event;d.invalid=[];var h=b.data(\"mask-keycode\");if(-1===a.inArray(h,m.byPassKeys)){var h=d.getMasked(),c=d.getCaret();setTimeout(function(a,b){d.setCaret(d.calculateCaretPosition(a,b))},10,c,h);d.val(h);d.setCaret(c);return d.callbacks(e)}},getMasked:function(a,b){var c=\r\n[],p=void 0===b?d.val():b+\"\",k=0,g=h.length,f=0,l=p.length,n=1,v=\"push\",w=-1,r,u;e.reverse?(v=\"unshift\",n=-1,r=0,k=g-1,f=l-1,u=function(){return-1 this.length) {\r\n\r\n return false;\r\n\r\n } else {\r\n\r\n return this.indexOf(search, start) !== -1;\r\n\r\n }\r\n\r\n };\r\n\r\n}\r\nvar SOASTA = {};\r\nSOASTA.ab_test = 'VS2017';","\r\nvar ShopUrls = ShopUrls || {};\r\n\r\njQuery.extend(ShopUrls, {\r\n AddressAPI: function (filter) {\r\n filter = filter || '';\r\n\r\n if (filter) {\r\n\r\n filter = '?addressapifilter=' + filter;\r\n\r\n }\r\n\r\n return '/Account/API/AddressV1/' + Shop.Locale + filter;\r\n },\r\n DeleteAddressAPI: function (id) {\r\n return '/Account/API/AddressV1/' + Shop.Locale + '/' + id;\r\n },\r\n EmailComplianceAPI: function (value) {\r\n return '/Account/API/ComplianceV1/' + Shop.Locale + '?checking=email&value=' + value;\r\n },\r\n Shipping: function (params) {\r\n params = params || '';\r\n return '/Cart/API/Shippingv1/' + Shop.Locale + '/' + params; \r\n },\r\n DistributorEmail: function (params) {\r\n params = params || '';\r\n return '/Account/api/DistributorEmailV1/' + Shop.Locale + params;\r\n },\r\n AccountShippingUrl: function (params) {\r\n params = params || '';\r\n return '/Account/API/ShippingServiceV1/' + params;\r\n },\r\n BasasoftAPI: function (address) {\r\n var params = address || '';\r\n return '/Account/api/BasarsoftV1/' + Shop.Locale + params;\r\n }\r\n});"]}