{"version":3,"sources":["webpack:///./aan/node_modules/bootstrap/js/src/tools/sanitizer.js","webpack:///./aan/node_modules/bootstrap/js/src/tooltip.js","webpack:///./aan/node_modules/ui-theme/plugins/product/index.js","webpack:///./aan/node_modules/ui-theme/components/back-to-top/index.ts","webpack:///./aan/node_modules/ui-theme/components/dialog/index.ts","webpack:///./aan/node_modules/ui-theme/widgets/raa/js/password-equality-validation.ts","webpack:///./aan/node_modules/ui-theme/widgets/raa/js/password-format-validation.ts","webpack:///./aan/node_modules/ui-theme/widgets/raa/js/registration.ts","webpack:///./aan/node_modules/ui-theme/widgets/raa/js/change-password.ts","webpack:///./aan/node_modules/ui-theme/widgets/raa/js/show-password.ts","webpack:///./aan/node_modules/ui-theme/widgets/raa/js/reset-password.ts","webpack:///./aan/node_modules/ui-theme/widgets/raa/index.ts","webpack:///./aan/node_modules/@atypon/ui-bundle-generator/.generated/lazy-imports.js","webpack:///./aan/node_modules/ui-theme/plugins/pop-notification/index.ts","webpack:///./aan/node_modules/ui-theme/utility/scrollToTarget/index.ts","webpack:///./aan/node_modules/ui-theme/utility/custom-file/index.ts","webpack:///./aan/node_modules/ui-theme/utility/lockScreenOnToggle/index.ts","webpack:///./aan/node_modules/ui-theme/js/_publicpath.js","webpack:///./aan/node_modules/ui-theme/widgets/raa/js/username-request.js","webpack:///./aan/node_modules/ui-theme/widgets/raa/js/verify-phone.js"],"names":["uriAttrs","DefaultWhitelist","a","area","b","br","col","code","div","em","hr","h1","h2","h3","h4","h5","h6","i","img","li","ol","p","pre","s","small","span","sub","sup","strong","u","ul","SAFE_URL_PATTERN","DATA_URL_PATTERN","sanitizeHtml","unsafeHtml","whiteList","sanitizeFn","length","createdDocument","window","DOMParser","parseFromString","whitelistKeys","Object","keys","elements","slice","call","body","querySelectorAll","_loop","el","elName","nodeName","toLowerCase","indexOf","parentNode","removeChild","attributeList","attributes","whitelistedAttributes","concat","forEach","attr","allowedAttribute","allowedAttributeList","attrName","Boolean","nodeValue","match","regExp","filter","attrRegex","RegExp","len","removeAttribute","innerHTML","NAME","EVENT_KEY","JQUERY_NO_CONFLICT","$","fn","BSCLS_PREFIX_REGEX","DISALLOWED_ATTRIBUTES","DefaultType","animation","template","title","trigger","delay","html","selector","placement","offset","container","fallbackPlacement","boundary","sanitize","popperConfig","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","Default","Event","HIDE","HIDDEN","SHOW","SHOWN","INSERTED","CLICK","FOCUSIN","FOCUSOUT","MOUSEENTER","MOUSELEAVE","Tooltip","element","config","_classCallCheck","Popper","TypeError","this","_isEnabled","_timeout","_hoverState","_activeTrigger","_popper","_getConfig","tip","_setListeners","_createClass","key","value","enable","disable","toggleEnabled","toggle","event","dataKey","constructor","DATA_KEY","context","currentTarget","data","_getDelegateConfig","click","_isWithActiveTrigger","_enter","_leave","getTipElement","hasClass","dispose","clearTimeout","removeData","off","closest","_hideModalHandler","remove","destroy","show","_this","css","Error","showEvent","isWithContent","shadowRoot","Util","findShadowRoot","isInTheDom","contains","ownerDocument","documentElement","isDefaultPrevented","tipId","getUID","setAttribute","setContent","addClass","attachment","_getAttachment","addAttachmentClass","_getContainer","appendTo","_getPopperConfig","document","children","on","noop","complete","_fixTransition","prevHoverState","transitionDuration","getTransitionDurationFromElement","one","TRANSITION_END","emulateTransitionEnd","hide","callback","_this2","hideEvent","_cleanTipClass","removeClass","update","scheduleUpdate","getTitle","setElementContent","$element","content","_typeof","nodeType","jquery","text","parent","is","empty","append","getAttribute","_this3","_objectSpread","modifiers","_getOffset","flip","behavior","arrow","preventOverflow","boundariesElement","onCreate","originalPlacement","_handlePopperPlacementChange","onUpdate","_this4","offsets","isElement","find","toUpperCase","_this5","split","eventIn","eventOut","_fixTitle","titleType","type","setTimeout","dataAttributes","dataAttr","toString","typeCheckConfig","$tip","tabClass","join","popperData","instance","popper","initConfigAnimation","get","_jQueryInterface","each","_config","test","Constructor","noConflict","pbAjax","args","widgetId","pbContext","showJson","searchParams","url","objURL","replace","$0","$1","$2","$3","location","href","hasOwnProperty","targetUrl","requestMethod","requestDataType","asyncRequest","successFunction","failFunction","ajax","dataType","async","success","error","console","log","jQuery","load","$widget","init","observer","observe","IntersectionObserver","entries","entry","isIntersecting","target","unobserve","PB","ready","listenersMap","literatum","events","register","eventName","listeners","push","deregisterAll","notify","listener","Widget","widgetDef","state","registerListeners","prototype","resize","e","render","model","params","renderer","action","widgets","getWidget","lostFocus","updateView","view","$this","$html","trim","replaceWith","triggerInfoHandlers","widget","infoHandlers","infoHandler","unbind","bind","result","id","utils","hasErrors","loaded","Deferred","resolve","thisWidget","binders","binderName","binder","collectForms","$elements","forms","name","form","val","updateForm","formName","sourceForm","merge","$form","prop","initialize","loading","reset","getNotifications","item","literatumNotification","getNotification","notifications","notification","notificationType","service","commerce","cart","widgetDefs","re","elem","SelectableDropdown","all","collapse","WidgetDef","create","Loading","deferred","start","when","then","done","FullPageLoading","fadingTime","message","navigator","userAgent","fadeIn","$overlay","fadeOut","setMessage","loadRecaptcha","grecaptcha","clearCapcha","captchaChallengeSubmit","response","submit","renderJsonViewer","json","options","collapsed","jsonViewer","getWidgetType","$jsonEl","widgetType","JSON","parse","widgetName","$jsonElement","getWidgetId","prepend","openShowJsonDialog","$jsonElements","getJsonElementOfWidget","requestedJsonEl","index","jsonString","$buttonIcon","copyStringToClipboard","str","createElement","style","position","left","appendChild","select","execCommand","stringify","toggleClass","toggleFullscreen","querySelector","HTMLElement","isFullscreen","webkitIsFullScreen","mozFullScreen","requestFullScreen","webkitRequestFullScreen","mozRequestFullScreen","cancelFullScreen","webkitCancelFullScreen","mozCancelFullScreen","$timers","interval","setInterval","increment","$value","original","parseInt","format","total","hours","Math","floor","minutes","seconds","change","checked","serialize","jsonData","errorMsg","resultCount","preventDefault","loginSuggestionsInitSearch","fun","$el","ms","magicSuggest","allowFreeEntries","hideTrigger","maxSelection","placeholder","institutionUrl","federationName","page","send","request","ajaxRequest","contentType","crossDomain","xhrFields","withCredentials","copyForm","source","to","clearForm","hasAttributes","scroll","speed","$object","top","animate","scrollTop","nextCheckoutSection","width","getCountryState","iso2Alpha","country","$target","slideUp","serializeObject","o","serializeArray","undefined","discounts","buyingList","billing","editing","slideToggle","countryCode","$state","slideDown","LoginSuggestionsWidget","login","siblings","$errorMessage","$message","redirect","firstTry","loginAction","redirectUri","canSwitch","newUser","errorMessage","submitCode","remember","$hiddenMessage","submitPassword","password","usePassword","useCode","back","showIndiv","currentView","initIndividualView","showOrg","showPass","initPasswordView","error2","localLogin","prevView","showAllInstitutions","removeAccount","userId","cloudId","next","showFed","fedName","showHistory","$result","getPrototypeOf","$login","$submit","removeAttr","which","keyCode","defaultAjaxSettings","extend","sendBeacon","defaultOptions","methods","Track","verifyAddress","pattern1","pattern2","pattern3","pattern4","pattern5","after","asynchronous","cache","timeout","requestTimeout","dst","src","iterator","object","jQueryBind","oldJQueryBind","callbackToUse","prototypeBind","$$","bindAsEventListener","jQueryUnbind","oldJQueryUnbind","prototypeUnbind","stopObserving","formData","FormData","ajaxOptions","useBeacon","parameters","Ajax","Request","fire","defaultFire","ajaxSettings","acceptEvent","setup","array","onEvent","addData","ex","method","apply","Array","arguments","extractData","requestId","OriginRequestId","OriginUrl","date","Date","setTime","getTime","expires","toGMTString","cookie","LinkText","LinkHref","doi","innerFound","add","parents","$ancestor","d","property","collectData","attrib","substring","g","func","isFunction","extra","linkIndex","LinkIndex","ClickPageX","pageX","ClickPageY","pageY","TrackPageTransitions","captureAllPageTransitions","EventType","Prototype","TrackSearchResults","resultSelectorAction","extractDataSearchResult","extractCommonData","searchResultRows","clickedRow","$searchResultRow","searchPageRank","$container","$selectedPage","resultPageNum","$paginationElements","first","$innerMostChildOfPagination","end","isInt","n","startPageFromSearchForm","$articleEntry","pii","includes","multiSelect","defaults","actcls","except","statics","last","scope","initEvent","checkStatics","dom","self","shiftKey","temp","getSelection","removeAllRanges","selection","ctrlKey","metaKey","initRemoveButton","topicCode","ids","selectedItems","subAction","isNeg","status","alert","reload","SpecifyMembershipWidget","showPubs","marker","cancel_function","hidePubs","doTitleSearch","markup","result_table","DOI","Title","forward","saveAndRefresh","max","cartInfo","errorHandler","callbacks","triggerRefresh","updatedCartInfo","refresh","identity","guest","email","acceptTermsConditions","registration","clear","changed","identityHash","addItem","itemId","decreaseQuantity","increaseQuantity","updateQuantity","currentQuantity","requiredQuantity","buyingItemHash","restoreAccess","discountCode","discount","cartHash","summary","shipping","getShippingCosts","shippingHash","tax","billingHash","savedItems","saveById","saveByDoi","savedItemsHash","serviceName","sessionChanged","sessionHash","clone","clearCallbacks","setErrorHandler","handler","addCallback","validators","creditCardsPattern","creditcard","number","invalid","k","creditcardDate","currentDate","currentMonth","getMonth","currentYear","getFullYear","monthExpiry","yearExpiry","expireMonth","expireYear","expireDate","setMonth","setYear","notEmpty","validate","validateField","field","$field","validatorName","validator","securityCode","Notification","$p","dummy","showFlex","warning","info","FieldNotification","$label","$show","BuyingItemWidget","applyDiscount","removeDiscount","disableDiscount","enableDiscount","saveItem","removeItem","MAXIMUM_ALLOWED_VALUE","Number","discountError","$error","discountInfo","$info","savedItemError","$applyButton","$discountField","SavedItemsWidget","removeSavedItem","expand","offerVisibility","subject","stopPropagation","RecommendedWidget","RecentlyViewedWidget","OrderSummaryWidget","IdentityWidget","showUserLogin","$loginForm","focus","encodeURIComponent","cancelLogin","userLogin","resetCart","$loginInput","$passwordInput","$continueButton","errorName","identityError","emailError","acceptTermsConditionsError","ShippingWidget","givennames","surname","phone","organization","address1","address2","city","zipCode","shippingCost","editShipping","submitShipping","shippingOptions","countryChanged","$country","$states","$input","$select","states","description","selectAddress","addressUuid","uuid","addressError","TaxWidget","updateTax","BillingWidget","submitBilling","editBilling","PaymentWidget","sameAsShipping","shippingWidget","identityWidget","placeOrder","shippingForm","$toggle","validateForm","not","holderName","realNumber","secNumber","expandPayment","valid","$group","fieldsValidation","$header","stop","$date","thisVal","numChars","dateValue","$cElement","$cont","$contError","registerAdditionalListeners","$confirmOrderMsg","scrollIntoView","PurchaseOptionsWidget","$obj","$expandSection","expandSection","savedItemInfo","nextAction","CartIndicatorWidget","$cartSize","size","AddToCartWidget","addToCart","overlay","CartInfoWidget","IdentityBarWidget","$popups","$popup","RestoreAccessWidget","restoreError","$inputGroup","fieldNotification","checkoutButton","$leftCol","checkout","hash","expandedMargin","height","ajaxComplete","Tabs","$content","RedeemAllowanceWidget","functions","lower","upper","special","numeric","getBaseScore","score","updateIndicator","$indicator","min","$lang_selector","too__short","weak","too__long","pass_selector","diff","strength","prependTo","pswd","pswd_req","pswd_length","pswd_max","translate_msg","lang","pswd_l","pswd_r","strength_list","list_items_strength","blur","guestEmail","visible","expr","filters","addBack","focusable","isTabIndexNotNaN","map","mapName","disabled","isNaN","$confirmation","fail","$pass","$email","lastItem","$password","$eye","$remember","items","revers","$close","tabRevers","tabEvent","pattern","$email2","prevAll","$token","toggleAddButton","list","addButton","$emails","current","count","$drawers","$drawer","$success","$failure","$old","$new","$clone","$phones","$change","$edit","$addresses","$address","$holder","$editAddress","$current","$social","$section","$search","$link","keyup","$institution","$federation","$purchase","nextAll","$deepdyve","affid","issn","docId","fieldName","journal","affiliateId","jsonp","hideSocietyStatusDialog","raa","shibbolethInitSearch","$bottomSection","userIndicator","minChars","mode","minCharsRenderer","v","extraMSContent","noSuggestionText","resultsField","entityId","closeButton","helper","recentID","input","hideExtraMSContent","m","warn","getValue","EntitlementsWidget","reloadTab","tab","$tabContent","$query","$sort","sort","query","selectedTab","series","groups","submitSearch","addEventListener","twoFactorAuthentication","getElementById","visibility","display","passPin","getElementsByClassName","className","pinForm","pinValue","isNumeric","parseFloat","isFinite","selectElement","selectbox","tfaResetAuthentication","getElementsByName","encodeURI","$resultsTarget","tooltip","effect","VISIBLE","SNAPPED","backToTop","backToTopAction","backToTopRing","selectors","initElements","initElementsByLoop","isSquareAction","dataset","square","wrapper","snap","snapElementSelector","snapElement","showAfter","borderLength","getTotalLength","String","addEventListeners","onClick","onScroll","scrollTo","classList","isSnapElScrolledBy","getScrollPercent","offsetToSet","snapEl","docViewBottom","h","st","sh","clientHeight","BackToTop","Selectors","ClassList","Texts","dialogCloseBtn","openDialogBtnExample","setWrapper","focusables","showModalHandler","button","closeModalHandler","createObserver","onOpenHandler","focusTrapHandler","showModal","close","MutationObserver","recs","observedDialog","open","onOpen","from","firstFocusable","lastFocusable","activeElement","Dialog","emailsDontMatch","displayNone","displayFlex","isValid","isInvalid","passwordInput","passwordInputs","passwords","passwordFormat","checkPasswordEquality","passwordInputsArray","base","convertToArray","isFilled","reduce","isEqual","destroyTooltip","setTooltip","texts","PasswordEqualityValidation","passwordWrongFormat","passwordInputFormatValidate","onChangePassword","checkPasswordFormat","regexp","PasswordFormatValidation","initPasswordFormatValidation","initPasswordEqualityValidation","passwordFormatValidation","passwordEqualityValidation","onSubmit","checkPasswords","Registration","modal","alertDanger","alertSuccess","initPasswordValidation","jqXHR","err","always","ChangePassword","iconEye","iconEyeOff","eyeElement","eye","parentElement","onEyeClick","ShowPassword","gRecaptcha","recaptcha","_classList","DISPLAY_NONE","ResetPassword","main","UX","$popNotification","$backToTop","$dialog","popNotification","PopNotification","dialog","relatedContent","popupFloatAfter","popupFloatAfterPassed","popupFloatAfterPlaceholder","transitioned","closeBtn","footer","TIMER","FOOTER_OFFSET","TRANSITION","FLOAT_EL_OFFSET","_visibility","_constants","constants","_popupFloatAfter","visibleAfter","_focusableElements","setPopupFloatAfterPlaceholder","checkElPassedScroll","checkVisibility","checkA11y","_checkVisibilityEvent","_checkElPassedScrollEvent","setVisibility","destinationHeight","getBoundingClientRect","pageYOffset","footerRect","footerDist","scrollY","elOffset","offsetTop","offsetHeight","setFloat","showFloated","shouldShow","setA11yState","passed","removeEventListener","popupPlaceholder","popupFloatAfterDummyId","random","insertAdjacentElement","Elements","scrollToTarget","history","pushState","fileName","files","nextElementSibling","innerText","resourcePath","node","releasedAssetsPath","__webpack_public_path__","$modals","$modal","$original","$alert","$recaptcha","link"],"mappings":"iKAOMA,EAAW,CACf,aACA,OACA,OACA,WACA,WACA,SACA,MACA,cAKWC,EAAmB,CAE9B,IAAK,CAAC,QAAS,MAAO,KAAM,OAAQ,OAJP,kBAK7BC,EAAG,CAAC,SAAU,OAAQ,QAAS,OAC/BC,KAAM,GACNC,EAAG,GACHC,GAAI,GACJC,IAAK,GACLC,KAAM,GACNC,IAAK,GACLC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,EAAG,GACHC,IAAK,CAAC,MAAO,SAAU,MAAO,QAAS,QAAS,UAChDC,GAAI,GACJC,GAAI,GACJC,EAAG,GACHC,IAAK,GACLC,EAAG,GACHC,MAAO,GACPC,KAAM,GACNC,IAAK,GACLC,IAAK,GACLC,OAAQ,GACRC,EAAG,GACHC,GAAI,IAQAC,EAAmB,8DAOnBC,EAAmB,qIAyBlB,SAASC,aAAaC,EAAYC,EAAWC,GAClD,GAA0B,IAAtBF,EAAWG,OACb,OAAOH,EAGT,GAAIE,GAAoC,mBAAfA,EACvB,OAAOA,EAAWF,GAQpB,IALA,IACMI,GADY,IAAIC,OAAOC,WACKC,gBAAgBP,EAAY,aACxDQ,EAAgBC,OAAOC,KAAKT,GAC5BU,EAAW,GAAGC,MAAMC,KAAKT,EAAgBU,KAAKC,iBAAiB,MAAKC,EAAA,SAAAA,QAGxE,IAAMC,EAAKN,EAAS5B,GACdmC,EAASD,EAAGE,SAASC,cAE3B,IAA0D,IAAtDZ,EAAca,QAAQJ,EAAGE,SAASC,eACP,OAA7BH,EAAGK,WAAWC,YAAYN,GAAG,EAK/B,IAAMO,EAAgB,GAAGZ,MAAMC,KAAKI,EAAGQ,YACjCC,EAAwB,GAAGC,OAAO1B,EAAU,MAAQ,GAAIA,EAAUiB,IAAW,IAEnFM,EAAcI,SAAQ,SAACC,IAlD3B,SAASC,iBAAiBD,EAAME,GAC9B,IAAMC,EAAWH,EAAKV,SAASC,cAE/B,IAAgD,IAA5CW,EAAqBV,QAAQW,GAC/B,OAAoC,IAAhClE,EAASuD,QAAQW,IACZC,QAAQJ,EAAKK,UAAUC,MAAMtC,IAAqBgC,EAAKK,UAAUC,MAAMrC,IASlF,IAHA,IAAMsC,EAASL,EAAqBM,QAAO,SAACC,GAAS,OAAKA,aAAqBC,UAGtExD,EAAI,EAAGyD,EAAMJ,EAAOjC,OAAQpB,EAAIyD,EAAKzD,IAC5C,GAAIiD,EAASG,MAAMC,EAAOrD,IACxB,OAAO,EAIX,OAAO,GA+BE+C,CAAiBD,EAAMH,IAC1BT,EAAGwB,gBAAgBZ,EAAKV,cAfrBpC,EAAI,EAAGyD,EAAM7B,EAASR,OAAQpB,EAAIyD,EAAKzD,IAAGiC,IAoBnD,OAAOZ,EAAgBU,KAAK4B,U,koBCxG9B,IAAMC,EAAwB,UAGxBC,EAAS,IAAAjB,OADe,cAExBkB,EAAwBC,IAAEC,GAAGJ,GAE7BK,EAAwB,IAAIT,OAAO,UAADZ,OADV,aACiC,QAAQ,KACjEsB,EAAwB,CAAC,WAAY,YAAa,cAElDC,EAAc,CAClBC,UAAoB,UACpBC,SAAoB,SACpBC,MAAoB,4BACpBC,QAAoB,SACpBC,MAAoB,kBACpBC,KAAoB,UACpBC,SAAoB,mBACpBC,UAAoB,oBACpBC,OAAoB,2BACpBC,UAAoB,2BACpBC,kBAAoB,iBACpBC,SAAoB,mBACpBC,SAAoB,UACpB7D,WAAoB,kBACpBD,UAAoB,SACpB+D,aAAoB,iBAGhBC,EAAgB,CACpBC,KAAS,OACTC,IAAS,MACTC,MAAS,QACTC,OAAS,SACTC,KAAS,QAGLC,EAAU,CACdpB,WAAoB,EACpBC,SAAoB,uGAGpBE,QAAoB,cACpBD,MAAoB,GACpBE,MAAoB,EACpBC,MAAoB,EACpBC,UAAoB,EACpBC,UAAoB,MACpBC,OAAoB,EACpBC,WAAoB,EACpBC,kBAAoB,OACpBC,SAAoB,eACpBC,UAAoB,EACpB7D,WAAoB,KACpBD,UAAoBlC,EACpBiG,aAAoB,MAMhBQ,EAAQ,CACZC,KAAI,OAAA9C,OAAgBiB,GACpB8B,OAAM,SAAA/C,OAAgBiB,GACtB+B,KAAI,OAAAhD,OAAgBiB,GACpBgC,MAAK,QAAAjD,OAAgBiB,GACrBiC,SAAQ,WAAAlD,OAAgBiB,GACxBkC,MAAK,QAAAnD,OAAgBiB,GACrBmC,QAAO,UAAApD,OAAgBiB,GACvBoC,SAAQ,WAAArD,OAAgBiB,GACxBqC,WAAU,aAAAtD,OAAgBiB,GAC1BsC,WAAU,aAAAvD,OAAgBiB,IAoBtBuC,EAAO,WACX,SAAAA,QAAYC,EAASC,GACnB,GAD2BC,IAAA,KAAAH,cACL,IAAXI,IACT,MAAM,IAAIC,UAAU,mEAItBC,KAAKC,YAAiB,EACtBD,KAAKE,SAAiB,EACtBF,KAAKG,YAAiB,GACtBH,KAAKI,eAAiB,GACtBJ,KAAKK,QAAiB,KAGtBL,KAAKL,QAAUA,EACfK,KAAKJ,OAAUI,KAAKM,WAAWV,GAC/BI,KAAKO,IAAU,KAEfP,KAAKQ,gBAGP,OAAAC,IAAAf,QAAA,EAAAgB,IAAA,SAAAC,MAgCA,SAAAC,SACEZ,KAAKC,YAAa,IACnB,CAAAS,IAAA,UAAAC,MAED,SAAAE,UACEb,KAAKC,YAAa,IACnB,CAAAS,IAAA,gBAAAC,MAED,SAAAG,gBACEd,KAAKC,YAAcD,KAAKC,aACzB,CAAAS,IAAA,SAAAC,MAED,SAAAI,OAAOC,GACL,GAAKhB,KAAKC,WAIV,GAAIe,EAAO,CACT,IAAMC,EAAUjB,KAAKkB,YAAYC,SAC7BC,EAAU/D,IAAE2D,EAAMK,eAAeC,KAAKL,GAErCG,IACHA,EAAU,IAAIpB,KAAKkB,YACjBF,EAAMK,cACNrB,KAAKuB,sBAEPlE,IAAE2D,EAAMK,eAAeC,KAAKL,EAASG,IAGvCA,EAAQhB,eAAeoB,OAASJ,EAAQhB,eAAeoB,MAEnDJ,EAAQK,uBACVL,EAAQM,OAAO,KAAMN,GAErBA,EAAQO,OAAO,KAAMP,OAElB,CACL,GAAI/D,IAAE2C,KAAK4B,iBAAiBC,SA1GV,QA4GhB,YADA7B,KAAK2B,OAAO,KAAM3B,MAIpBA,KAAK0B,OAAO,KAAM1B,SAErB,CAAAU,IAAA,UAAAC,MAED,SAAAmB,UACEC,aAAa/B,KAAKE,UAElB7C,IAAE2E,WAAWhC,KAAKL,QAASK,KAAKkB,YAAYC,UAE5C9D,IAAE2C,KAAKL,SAASsC,IAAIjC,KAAKkB,YAAY/D,WACrCE,IAAE2C,KAAKL,SAASuC,QAAQ,UAAUD,IAAI,gBAAiBjC,KAAKmC,mBAExDnC,KAAKO,KACPlD,IAAE2C,KAAKO,KAAK6B,SAGdpC,KAAKC,WAAiB,KACtBD,KAAKE,SAAiB,KACtBF,KAAKG,YAAiB,KACtBH,KAAKI,eAAiB,KAClBJ,KAAKK,SACPL,KAAKK,QAAQgC,UAGfrC,KAAKK,QAAU,KACfL,KAAKL,QAAU,KACfK,KAAKJ,OAAU,KACfI,KAAKO,IAAU,OAChB,CAAAG,IAAA,OAAAC,MAED,SAAA2B,OAAO,IAAAC,EAAA,KACL,GAAuC,SAAnClF,IAAE2C,KAAKL,SAAS6C,IAAI,WACtB,MAAM,IAAIC,MAAM,uCAGlB,IAAMC,EAAYrF,IAAE0B,MAAMiB,KAAKkB,YAAYnC,MAAMG,MACjD,GAAIc,KAAK2C,iBAAmB3C,KAAKC,WAAY,CAC3C5C,IAAE2C,KAAKL,SAAS9B,QAAQ6E,GAExB,IAAME,EAAaC,IAAKC,eAAe9C,KAAKL,SACtCoD,EAAa1F,IAAE2F,SACJ,OAAfJ,EAAsBA,EAAa5C,KAAKL,QAAQsD,cAAcC,gBAC9DlD,KAAKL,SAGP,GAAI+C,EAAUS,uBAAyBJ,EACrC,OAGF,IAAMxC,EAAQP,KAAK4B,gBACbwB,EAAQP,IAAKQ,OAAOrD,KAAKkB,YAAYhE,MAE3CqD,EAAI+C,aAAa,KAAMF,GACvBpD,KAAKL,QAAQ2D,aAAa,mBAAoBF,GAE9CpD,KAAKuD,aAEDvD,KAAKJ,OAAOlC,WACdL,IAAEkD,GAAKiD,SA1KS,QA6KlB,IAAMvF,EAA8C,mBAA1B+B,KAAKJ,OAAO3B,UAClC+B,KAAKJ,OAAO3B,UAAU7C,KAAK4E,KAAMO,EAAKP,KAAKL,SAC3CK,KAAKJ,OAAO3B,UAEVwF,EAAazD,KAAK0D,eAAezF,GACvC+B,KAAK2D,mBAAmBF,GAExB,IAAMtF,EAAY6B,KAAK4D,gBACvBvG,IAAEkD,GAAKe,KAAKtB,KAAKkB,YAAYC,SAAUnB,MAElC3C,IAAE2F,SAAShD,KAAKL,QAAQsD,cAAcC,gBAAiBlD,KAAKO,MAC/DlD,IAAEkD,GAAKsD,SAAS1F,GAGlBd,IAAE2C,KAAKL,SAAS9B,QAAQmC,KAAKkB,YAAYnC,MAAMK,UAE/CY,KAAKK,QAAU,IAAIP,IAAOE,KAAKL,QAASY,EAAKP,KAAK8D,iBAAiBL,IAEnEpG,IAAEkD,GAAKiD,SA9LW,QAoMd,iBAAkBO,SAASb,iBAC7B7F,IAAE0G,SAAS1I,MAAM2I,WAAWC,GAAG,YAAa,KAAM5G,IAAE6G,MAGtD,IAAMC,EAAW,SAAXA,WACA5B,EAAK3C,OAAOlC,WACd6E,EAAK6B,iBAEP,IAAMC,EAAiB9B,EAAKpC,YAC5BoC,EAAKpC,YAAkB,KAEvB9C,IAAEkF,EAAK5C,SAAS9B,QAAQ0E,EAAKrB,YAAYnC,MAAMI,OA/N9B,QAiObkF,GACF9B,EAAKZ,OAAO,KAAMY,IAItB,GAAIlF,IAAE2C,KAAKO,KAAKsB,SAvNE,QAuNyB,CACzC,IAAMyC,EAAqBzB,IAAK0B,iCAAiCvE,KAAKO,KAEtElD,IAAE2C,KAAKO,KACJiE,IAAI3B,IAAK4B,eAAgBN,GACzBO,qBAAqBJ,QAExBH,OAGL,CAAAzD,IAAA,OAAAC,MAED,SAAAgE,KAAKC,GAAU,IAAAC,EAAA,KACPtE,EAAYP,KAAK4B,gBACjBkD,EAAYzH,IAAE0B,MAAMiB,KAAKkB,YAAYnC,MAAMC,MAC3CmF,EAAW,SAAXA,WAtPe,SAuPfU,EAAK1E,aAAoCI,EAAI1E,YAC/C0E,EAAI1E,WAAWC,YAAYyE,GAG7BsE,EAAKE,iBACLF,EAAKlF,QAAQ3C,gBAAgB,oBAC7BK,IAAEwH,EAAKlF,SAAS9B,QAAQgH,EAAK3D,YAAYnC,MAAME,QAC1B,OAAjB4F,EAAKxE,SACPwE,EAAKxE,QAAQgC,UAGXuC,GACFA,KAMJ,GAFAvH,IAAE2C,KAAKL,SAAS9B,QAAQiH,IAEpBA,EAAU3B,qBAAd,CAgBA,GAZA9F,IAAEkD,GAAKyE,YA5Pa,QAgQhB,iBAAkBjB,SAASb,iBAC7B7F,IAAE0G,SAAS1I,MAAM2I,WAAW/B,IAAI,YAAa,KAAM5E,IAAE6G,MAGvDlE,KAAKI,eAA4B,OAAI,EACrCJ,KAAKI,eAA4B,OAAI,EACrCJ,KAAKI,eAA4B,OAAI,EAEjC/C,IAAE2C,KAAKO,KAAKsB,SAzQI,QAyQuB,CACzC,IAAMyC,EAAqBzB,IAAK0B,iCAAiChE,GAEjElD,IAAEkD,GACCiE,IAAI3B,IAAK4B,eAAgBN,GACzBO,qBAAqBJ,QAExBH,IAGFnE,KAAKG,YAAc,MACpB,CAAAO,IAAA,SAAAC,MAED,SAAAsE,SACuB,OAAjBjF,KAAKK,SACPL,KAAKK,QAAQ6E,mBAIjB,CAAAxE,IAAA,gBAAAC,MAEA,SAAAgC,gBACE,OAAOnG,QAAQwD,KAAKmF,cACrB,CAAAzE,IAAA,qBAAAC,MAED,SAAAgD,mBAAmBF,GACjBpG,IAAE2C,KAAK4B,iBAAiB4B,SAAS,GAADtH,OAvWN,aAuWsB,KAAAA,OAAIuH,MACrD,CAAA/C,IAAA,gBAAAC,MAED,SAAAiB,gBAEE,OADA5B,KAAKO,IAAMP,KAAKO,KAAOlD,IAAE2C,KAAKJ,OAAOjC,UAAU,GACxCqC,KAAKO,MACb,CAAAG,IAAA,aAAAC,MAED,SAAA4C,aACE,IAAMhD,EAAMP,KAAK4B,gBACjB5B,KAAKoF,kBAAkB/H,IAAEkD,EAAIjF,iBA1SF,mBA0S6C0E,KAAKmF,YAC7E9H,IAAEkD,GAAKyE,YAAY,GAAD9I,OA9SE,OA8SiB,KAAAA,OA7SjB,WA8SrB,CAAAwE,IAAA,oBAAAC,MAED,SAAAyE,kBAAkBC,EAAUC,GACH,WAAnBC,IAAOD,KAAyBA,EAAQE,WAAYF,EAAQG,OAa5DzF,KAAKJ,OAAO7B,MACViC,KAAKJ,OAAOtB,WACdgH,EAAUhL,aAAagL,EAAStF,KAAKJ,OAAOpF,UAAWwF,KAAKJ,OAAOnF,aAGrE4K,EAAStH,KAAKuH,IAEdD,EAASK,KAAKJ,GAlBVtF,KAAKJ,OAAO7B,KACTV,IAAEiI,GAASK,SAASC,GAAGP,IAC1BA,EAASQ,QAAQC,OAAOR,GAG1BD,EAASK,KAAKrI,IAAEiI,GAASI,UAe9B,CAAAhF,IAAA,WAAAC,MAED,SAAAwE,WACE,IAAIvH,EAAQoC,KAAKL,QAAQoG,aAAa,uBAQtC,OANKnI,IACHA,EAAqC,mBAAtBoC,KAAKJ,OAAOhC,MACvBoC,KAAKJ,OAAOhC,MAAMxC,KAAK4E,KAAKL,SAC5BK,KAAKJ,OAAOhC,OAGXA,IAGT,CAAA8C,IAAA,mBAAAC,MAEA,SAAAmD,iBAAiBL,GAAY,IAAAuC,EAAA,KAuB3B,OAAAC,4BAAA,GAtBwB,CACtBhI,UAAWwF,EACXyC,UAAW,CACThI,OAAQ8B,KAAKmG,aACbC,KAAM,CACJC,SAAUrG,KAAKJ,OAAOxB,mBAExBkI,MAAO,CACL3G,QA7VqB,UA+VvB4G,gBAAiB,CACfC,kBAAmBxG,KAAKJ,OAAOvB,WAGnCoI,SAAU,SAAVA,SAAWnF,GACLA,EAAKoF,oBAAsBpF,EAAKrD,WAClC+H,EAAKW,6BAA6BrF,IAGtCsF,SAAU,SAAVA,SAAWtF,GAAI,OAAK0E,EAAKW,6BAA6BrF,MAKnDtB,KAAKJ,OAAOrB,gBAElB,CAAAmC,IAAA,aAAAC,MAED,SAAAwF,aAAa,IAAAU,EAAA,KACL3I,EAAS,GAef,MAbkC,mBAAvB8B,KAAKJ,OAAO1B,OACrBA,EAAOZ,GAAK,SAACgE,GAMX,OALAA,EAAKwF,QAAOb,4BAAA,GACP3E,EAAKwF,SACLD,EAAKjH,OAAO1B,OAAOoD,EAAKwF,QAASD,EAAKlH,UAAY,IAGhD2B,GAGTpD,EAAOA,OAAS8B,KAAKJ,OAAO1B,OAGvBA,IACR,CAAAwC,IAAA,gBAAAC,MAED,SAAAiD,gBACE,OAA8B,IAA1B5D,KAAKJ,OAAOzB,UACP4F,SAAS1I,KAGdwH,IAAKkE,UAAU/G,KAAKJ,OAAOzB,WACtBd,IAAE2C,KAAKJ,OAAOzB,WAGhBd,IAAE0G,UAAUiD,KAAKhH,KAAKJ,OAAOzB,aACrC,CAAAuC,IAAA,iBAAAC,MAED,SAAA+C,eAAezF,GACb,OAAOO,EAAcP,EAAUgJ,iBAChC,CAAAvG,IAAA,gBAAAC,MAED,SAAAH,gBAAgB,IAAA0G,EAAA,KACGlH,KAAKJ,OAAO/B,QAAQsJ,MAAM,KAElChL,SAAQ,SAAC0B,GAChB,GAAgB,UAAZA,EACFR,IAAE6J,EAAKvH,SAASsE,GACdiD,EAAKhG,YAAYnC,MAAMM,MACvB6H,EAAKtH,OAAO5B,UACZ,SAACgD,GAAK,OAAKkG,EAAKnG,OAAOC,WAEpB,GAzZU,WAyZNnD,EAA4B,CACrC,IAAMuJ,EA7ZS,UA6ZCvJ,EACZqJ,EAAKhG,YAAYnC,MAAMS,WACvB0H,EAAKhG,YAAYnC,MAAMO,QACrB+H,EAhaS,UAgaExJ,EACbqJ,EAAKhG,YAAYnC,MAAMU,WACvByH,EAAKhG,YAAYnC,MAAMQ,SAE3BlC,IAAE6J,EAAKvH,SACJsE,GAAGmD,EAASF,EAAKtH,OAAO5B,UAAU,SAACgD,GAAK,OAAKkG,EAAKxF,OAAOV,MACzDiD,GAAGoD,EAAUH,EAAKtH,OAAO5B,UAAU,SAACgD,GAAK,OAAKkG,EAAKvF,OAAOX,UAIjEhB,KAAKmC,kBAAoB,WACnB+E,EAAKvH,SACPuH,EAAKvC,QAITtH,IAAE2C,KAAKL,SAASuC,QAAQ,UAAU+B,GAAG,gBAAiBjE,KAAKmC,mBAEvDnC,KAAKJ,OAAO5B,SACdgC,KAAKJ,OAAMqG,4BAAA,GACNjG,KAAKJ,QAAM,IACd/B,QAAS,SACTG,SAAU,KAGZgC,KAAKsH,cAER,CAAA5G,IAAA,YAAAC,MAED,SAAA2G,YACE,IAAMC,EAAShC,IAAUvF,KAAKL,QAAQoG,aAAa,yBAE/C/F,KAAKL,QAAQoG,aAAa,UAA0B,WAAdwB,KACxCvH,KAAKL,QAAQ2D,aACX,sBACAtD,KAAKL,QAAQoG,aAAa,UAAY,IAGxC/F,KAAKL,QAAQ2D,aAAa,QAAS,OAEtC,CAAA5C,IAAA,SAAAC,MAED,SAAAe,OAAOV,EAAOI,GACZ,IAAMH,EAAUjB,KAAKkB,YAAYC,UACjCC,EAAUA,GAAW/D,IAAE2D,EAAMK,eAAeC,KAAKL,MAG/CG,EAAU,IAAIpB,KAAKkB,YACjBF,EAAMK,cACNrB,KAAKuB,sBAEPlE,IAAE2D,EAAMK,eAAeC,KAAKL,EAASG,IAGnCJ,IACFI,EAAQhB,eACS,YAAfY,EAAMwG,KAvdS,QADA,UAydb,GAGFnK,IAAE+D,EAAQQ,iBAAiBC,SAjeX,SAjBC,SAkfuCT,EAAQjB,YAClEiB,EAAQjB,YAnfW,QAufrB4B,aAAaX,EAAQlB,UAErBkB,EAAQjB,YAzfa,OA2fhBiB,EAAQxB,OAAO9B,OAAUsD,EAAQxB,OAAO9B,MAAMwE,KAKnDlB,EAAQlB,SAAWuH,YAAW,WAhgBT,SAigBfrG,EAAQjB,aACViB,EAAQkB,SAETlB,EAAQxB,OAAO9B,MAAMwE,MARtBlB,EAAQkB,UASX,CAAA5B,IAAA,SAAAC,MAED,SAAAgB,OAAOX,EAAOI,GACZ,IAAMH,EAAUjB,KAAKkB,YAAYC,UACjCC,EAAUA,GAAW/D,IAAE2D,EAAMK,eAAeC,KAAKL,MAG/CG,EAAU,IAAIpB,KAAKkB,YACjBF,EAAMK,cACNrB,KAAKuB,sBAEPlE,IAAE2D,EAAMK,eAAeC,KAAKL,EAASG,IAGnCJ,IACFI,EAAQhB,eACS,aAAfY,EAAMwG,KA9fS,QADA,UAggBb,GAGFpG,EAAQK,yBAIZM,aAAaX,EAAQlB,UAErBkB,EAAQjB,YA9hBa,MAgiBhBiB,EAAQxB,OAAO9B,OAAUsD,EAAQxB,OAAO9B,MAAM6G,KAKnDvD,EAAQlB,SAAWuH,YAAW,WAriBT,QAsiBfrG,EAAQjB,aACViB,EAAQuD,SAETvD,EAAQxB,OAAO9B,MAAM6G,MARtBvD,EAAQuD,UASX,CAAAjE,IAAA,uBAAAC,MAED,SAAAc,uBACE,IAAK,IAAM5D,KAAWmC,KAAKI,eACzB,GAAIJ,KAAKI,eAAevC,GACtB,OAAO,EAIX,OAAO,IACR,CAAA6C,IAAA,aAAAC,MAED,SAAAL,WAAWV,GACT,IAAM8H,EAAiBrK,IAAE2C,KAAKL,SAAS2B,OAwCvC,OAtCAtG,OAAOC,KAAKyM,GACTvL,SAAQ,SAACwL,IACyC,IAA7CnK,EAAsB5B,QAAQ+L,WACzBD,EAAeC,MAUA,iBAN5B/H,EAAMqG,0CAAA,GACDjG,KAAKkB,YAAYpC,SACjB4I,GACkB,WAAlBnC,IAAO3F,IAAuBA,EAASA,EAAS,KAGnC9B,QAChB8B,EAAO9B,MAAQ,CACbwE,KAAM1C,EAAO9B,MACb6G,KAAM/E,EAAO9B,QAIW,iBAAjB8B,EAAOhC,QAChBgC,EAAOhC,MAAQgC,EAAOhC,MAAMgK,YAGA,iBAAnBhI,EAAO0F,UAChB1F,EAAO0F,QAAU1F,EAAO0F,QAAQsC,YAGlC/E,IAAKgF,gBACH3K,EACA0C,EACAI,KAAKkB,YAAYzD,aAGfmC,EAAOtB,WACTsB,EAAOjC,SAAWrD,aAAasF,EAAOjC,SAAUiC,EAAOpF,UAAWoF,EAAOnF,aAGpEmF,IACR,CAAAc,IAAA,qBAAAC,MAED,SAAAY,qBACE,IAAM3B,EAAS,GAEf,GAAII,KAAKJ,OACP,IAAK,IAAMc,KAAOV,KAAKJ,OACjBI,KAAKkB,YAAYpC,QAAQ4B,KAASV,KAAKJ,OAAOc,KAChDd,EAAOc,GAAOV,KAAKJ,OAAOc,IAKhC,OAAOd,IACR,CAAAc,IAAA,iBAAAC,MAED,SAAAoE,iBACE,IAAM+C,EAAOzK,IAAE2C,KAAK4B,iBACdmG,EAAWD,EAAK1L,KAAK,SAASM,MAAMa,GACzB,OAAbwK,GAAqBA,EAASrN,QAChCoN,EAAK9C,YAAY+C,EAASC,KAAK,OAElC,CAAAtH,IAAA,+BAAAC,MAED,SAAAgG,6BAA6BsB,GAC3BjI,KAAKO,IAAM0H,EAAWC,SAASC,OAC/BnI,KAAK+E,iBACL/E,KAAK2D,mBAAmB3D,KAAK0D,eAAeuE,EAAWhK,cACxD,CAAAyC,IAAA,iBAAAC,MAED,SAAAyD,iBACE,IAAM7D,EAAMP,KAAK4B,gBACXwG,EAAsBpI,KAAKJ,OAAOlC,UAEA,OAApC6C,EAAIwF,aAAa,iBAIrB1I,IAAEkD,GAAKyE,YAvnBa,QAwnBpBhF,KAAKJ,OAAOlC,WAAY,EACxBsC,KAAK2E,OACL3E,KAAKsC,OACLtC,KAAKJ,OAAOlC,UAAY0K,MAG1B,EAAA1H,IAAA,UAAA2H,IAtlBA,SAAAA,MACE,MAjH0B,UAkH3B,CAAA3H,IAAA,UAAA2H,IAED,SAAAA,MACE,OAAOvJ,IACR,CAAA4B,IAAA,OAAA2H,IAED,SAAAA,MACE,OAAOnL,IACR,CAAAwD,IAAA,WAAA2H,IAED,SAAAA,MACE,MA5H0B,eA6H3B,CAAA3H,IAAA,QAAA2H,IAED,SAAAA,MACE,OAAOtJ,IACR,CAAA2B,IAAA,YAAA2H,IAED,SAAAA,MACE,OAAOlL,IACR,CAAAuD,IAAA,cAAA2H,IAED,SAAAA,MACE,OAAO5K,IACR,CAAAiD,IAAA,mBAAAC,MA8jBD,SAAO2H,iBAAiB1I,GACtB,OAAOI,KAAKuI,MAAK,WACf,IAAIjH,EAAOjE,IAAE2C,MAAMsB,KAzsBK,cA0sBlBkH,EAA4B,WAAlBjD,IAAO3F,IAAuBA,EAE9C,IAAK0B,IAAQ,eAAemH,KAAK7I,MAI5B0B,IACHA,EAAO,IAAI5B,QAAQM,KAAMwI,GACzBnL,IAAE2C,MAAMsB,KAltBc,aAktBCA,IAGH,iBAAX1B,GAAqB,CAC9B,QAA4B,IAAjB0B,EAAK1B,GACd,MAAM,IAAIG,UAAU,oBAAD7D,OAAqB0D,EAAM,MAEhD0B,EAAK1B,aAjoBA,GA6oBbvC,IAAEC,GAAGJ,GAAQwC,EAAQ4I,iBACrBjL,IAAEC,GAAGJ,GAAMwL,YAAchJ,EACzBrC,IAAEC,GAAGJ,GAAMyL,WAAa,WAEtB,OADAtL,IAAEC,GAAGJ,GAAQE,EACNsC,EAAQ4I,mB,+FC3vBjB,SAAWjL,GACPA,EAAEC,GAAGsL,OAAS,SAAUC,GACpB,IAAIC,EAAWzL,EAAE2C,MAAM5D,KAAK,aACvB0M,IACDA,EAAWzL,EAAE2C,MAAMsB,KAAK,cAEvBwH,IACDA,EAAWzL,EAAE2C,MAAM5D,KAAK,OAE5B,IAAI2M,EAAY1L,EAAE,sBAAsBjB,KAAK,WAC7C,GAAI0M,QAA6C,CAC7C,IAAIxH,EAAOuH,EAAW,KAAIA,EAAW,KAAI,GACzCvH,EAAgB,UAAIyH,EACpBzH,EAAe,SAAIwH,EACnB,IAAIE,EAqBR,SAASC,aAAaC,GAClB,IAAIC,EAAS,GAIb,OAHAD,EAAIE,QAAQ,IAAItM,OAAO,uBAAwB,MAAM,SAAUuM,EAAIC,EAAIC,EAAIC,GACvEL,EAAOG,GAAME,KAEVL,EA1BQF,CAAarO,OAAO6O,SAASC,MACxCV,EAASW,eAAe,cAAarI,EAAe,SAAI0H,EAAmB,UAAK,IACpF,IAAIY,EAAYf,EAAU,IACtBgB,EAAgBhB,EAAKc,eAAe,QAAUd,EAAW,KAAI,MAC7DiB,EAAkBjB,EAAKc,eAAe,YAAcd,EAAe,SAAI,OACvEkB,GAAelB,EAAKc,eAAe,UAAWd,EAAY,MAC1DmB,EAAkBnB,EAAc,QAChCoB,EAAepB,EAAY,MAC/B,OAAOxL,EAAE6M,KAAK,CACV1C,KAAMqC,EACNM,SAAUL,EACVM,MAAOL,EACPb,IAAKU,EACLtI,KAAMA,EACN+I,QAASL,EACTM,MAAOL,IAGXM,QAAQC,IAAI,uBAhCxB,CA2CGC,QACH,SAAWpN,GACP,GAAIA,EAAG,KACMqN,EAAT,SAASA,KAAKC,GACVA,EAAQ5M,KAAK,cACb4M,EAAQ/B,OAAO,CACXpB,KAAM,MACN0B,IAAK,wBACLiB,SAAU,OACVE,QAAS,SAATA,QAAmB/I,GACfqJ,EAAQ5M,KAAKuD,GACbjE,EAAE,QAAQQ,QAAQ,iBAEtByM,MAAO,SAAPA,QACIK,EAAQ5M,KAAK,QAkBhB6M,EAAT,SAASA,OACLvN,EAAE,oBAAoBkL,MAAK,WACvB,IAAIoC,EAAUtN,EAAE2C,MACZ2K,EAAQ/E,GAAG,oBAAsBiF,EACjCA,EAASC,QAAQ9K,MAEjB0K,EAAKC,OAnBbE,EAAW,KACX,yBAA0BjQ,SAC1BiQ,EAAW,IAAIE,sBAAqB,SAAUC,EAASH,GACnDG,EAAQ7O,SAAQ,SAAU8O,GACtB,GAAIA,EAAMC,eAAgB,CACtB,IAAIP,EAAUtN,EAAE4N,EAAME,QACtBN,EAASO,UAAUH,EAAME,QACzBT,EAAKC,WAiBjB/P,OAAOyQ,IAAMzQ,OAAOyQ,GAAGhO,GACvBzC,OAAOyQ,GAAGhO,EAAE0G,SAASb,iBAAiBe,GAAG,iBAAkB2G,GAE/DvN,EAAE0G,UAAUuH,MAAMV,IA7C1B,CA+CGH,QACH,IAEQvC,EACAqD,EAHJC,EAAY,GAChBA,EAAUC,QAEFF,EAAe,IADfrD,EAAW,IAGNwD,SAAW,SAAUC,EAAW/G,GACrC,IAAIgH,EAAYL,EAAaI,GACxBC,IACDL,EAAaI,GAAaC,EAAY,IAE1CA,EAAUC,KAAKjH,IAGnBsD,EAAS4D,cAAgB,WACrBP,EAAe,IAGnBrD,EAAS6D,OAAS,SAAUJ,EAAWrK,GAEnC,IAAIsK,EAAYL,EAAaI,GACzBC,GACAA,EAAUzP,SAAQ,SAAU6P,GACxBA,EAAS1K,OAKd4G,GAEXsD,EAAUS,OAAS,SAAUC,EAAWvM,GACpCK,KAAKmM,OAAS,EACdnM,KAAKqF,SAAWhI,EAAEsC,GAClBK,KAAKkM,UAAYA,EACbA,GACAlM,KAAKoM,qBAIbZ,EAAUS,OAAOI,UAAUhE,IAAM,WAC7B,OAAOrI,KAAKqF,UAGhBmG,EAAUS,OAAOI,UAAUC,OAAS,SAAUC,KAE9Cf,EAAUS,OAAOI,UAAUG,OAAS,SAAUC,EAAOC,EAAQ9H,EAAU+H,GACnE,GAAI3M,KAAKkM,UAAUU,OACf,OAAOpB,EAAUqB,QAAQC,UAAU9M,KAAMyM,EAAOC,EAAQ9H,EAAU+H,IAI1EnB,EAAUS,OAAOI,UAAUU,UAAY,aAIvCvB,EAAUS,OAAOI,UAAUW,WAAa,SAAUC,EAAMR,GACpD,IAAIS,EAAQlN,KAAKqI,MACb8E,EAAQ9P,EAAE4P,EAAKG,QACfD,EAAMzS,OAAS,GACfwS,EAAMG,YAAYF,GAClBnN,KAAKqF,SAAWhI,EAAE,gBAAkB8P,EAAM/Q,KAAK,aAAe,MACjC,IAAzB4D,KAAKqF,SAAS3K,QAAgByS,EAAM/Q,KAAK,QACzC4D,KAAKqF,SAAWhI,EAAE,IAAM8P,EAAM/Q,KAAK,QAEV,IAAzB4D,KAAKqF,SAAS3K,SACdsF,KAAKqF,SAAWhI,EAAE,qBAAuB8P,EAAM/Q,KAAK,kBAAoB,QAG5E4D,KAAKqF,SAAStH,KAAK,IAEvBiC,KAAKoM,oBACLpM,KAAKsN,oBAAoBtN,KAAMyM,IAGnCjB,EAAUS,OAAOI,UAAUiB,oBAAsB,SAAUC,EAAQd,GAC/D,IAAIe,EAAeD,EAAOrB,UAAUsB,aAChCf,GAASA,EAAMzQ,YAAcwR,GAC7BxS,OAAOC,KAAKwR,EAAMzQ,YAAYG,SAAQ,SAAUuE,GAC5C,IAAI+M,EAAcD,EAAa9M,GAC3B+M,GACAA,EAAYhB,EAAMzQ,WAAW0E,GAAM6M,EAAQd,OAM3DjB,EAAUS,OAAOI,UAAUD,kBAAoB,WAC3C,IACIpM,KAAK0N,SACP,MAAOnB,GACLhC,QAAQC,IAAI+B,GAEhB,IACIvM,KAAK2N,OACP,MAAOpB,GACLhC,QAAQC,IAAI,0CACZxK,KAAK0N,WAIblC,EAAUS,OAAOI,UAAUpH,OAAS,SAAUwH,GAC1C,IAAImB,EAWJ,OAVArD,QAAQC,IAAI,YAAcxK,KAAKkM,UAAU2B,GAAK,OACzCrC,EAAUsC,MAAMC,UAAUtB,EAAMzQ,aAIjCgE,KAAKsN,oBAAoBtN,KAAMyM,GAC/BzM,KAAKgO,SACLzD,QAAQC,IAAI,YAAcxK,KAAKkM,UAAU2B,GAAK,YAC9CD,EAASvQ,EAAE4Q,WAAWC,YANtBN,EAAS5N,KAAKwM,OAAOC,EAAO,IAC5BlC,QAAQC,IAAI,YAAcxK,KAAKkM,UAAU2B,GAAK,gBAO3CD,GAGXpC,EAAUS,OAAOI,UAAUsB,KAAO,WAC9B,IAAIQ,EAAanO,KAEZmO,EAAWjC,UAAUkC,UAE1BpO,KAAKgH,KAAK,gBAAgBuB,MAAK,WAC3B,IAAI8F,EAAahR,EAAE2C,MAAMsB,KAAK,QAC1BgN,EAASH,EAAWjC,UAAUkC,QAAQC,GACtCC,GACAjR,EAAE2C,MAAMiE,GAAG,SAAS,SAAUsI,GAE1B+B,EAAOlT,KAAK4E,KAAMuM,EAAG4B,SAKjCnO,KAAKgH,KAAK,uBAAuBuB,MAAK,WAClC,IAAI8F,EAAahR,EAAE2C,MAAMsB,KAAK,QAC1BgN,EAASH,EAAWjC,UAAUkC,QAAQC,GACtCC,GACAjR,EAAE2C,MAAMiE,GAAG,UAAU,SAAUsI,GAC3Bf,EAAUC,OAAOM,OAAO,eACxBuC,EAAOlT,KAAK4E,KAAMuM,EAAG4B,WAMrC3C,EAAUS,OAAOI,UAAUqB,OAAS,WAChC1N,KAAKgH,KAAK,gBAAgBuB,MAAK,WAC3BlL,EAAE2C,MAAMiC,UAIhBuJ,EAAUS,OAAOI,UAAUrF,KAAO,SAAUhJ,GACxC,OAAOgC,KAAKqI,MAAMrB,KAAKhJ,IAG3BwN,EAAUS,OAAOI,UAAUkC,aAAe,WACtC,IAAIC,EAAYxO,KAAKgH,KAAK,QACtByH,EAAQ,GAuCZ,OAtCAD,EAAUjG,MAAK,WACX,IAAI2E,EAAQ7P,EAAE2C,MACV0O,EAAOrR,EAAE2C,MAAM5D,KAAK,QACxB,GAAIsS,EAAM,CACN,IAAIC,EAAO,GACXF,EAAMC,GAAQC,EACdzB,EAAMlG,KAAK,qCAAqCuB,MAAK,WACjDoG,EAAKtR,EAAE2C,MAAM5D,KAAK,SAAWiB,EAAE2C,MAAM4O,SAGzC1B,EAAMlG,KAAK,0BAA0BuB,MAAK,WAClClL,EAAE2C,MAAM4F,GAAG,cACX+I,EAAKtR,EAAE2C,MAAM5D,KAAK,SAAWiB,EAAE2C,MAAM4O,UAI7C1B,EAAMlG,KAAK,UAAUuB,MAAK,WACtBoG,EAAKtR,EAAE2C,MAAM5D,KAAK,SAAWiB,EAAE2C,MAAMgH,KAAK,mBAAmB4H,aAIzE5O,KAAKgH,KAAK,gBAAgBuB,MAAK,WAC3B,IAAImG,EAAOrR,EAAE2C,MAAMsB,KAAK,QACxB,GAAIoN,EAAM,CACN,IAAIC,EAAO,GACXF,EAAMC,GAAQC,EACdtR,EAAE2C,MACGgH,KAAK,iBACLuB,MAAK,WACF,IAAI2E,EAAQ7P,EAAE2C,MACVW,EAAQuM,EAAM5L,KAAK,SAClBX,IACDA,EAAQuM,EAAMxH,OAAO0H,QAEzBuB,EAAKzB,EAAM5L,KAAK,UAAYX,SAIrC8N,GAGXjD,EAAUS,OAAOI,UAAUwC,WAAa,SAAUC,EAAUC,EAAYC,GACpE,IAAIP,EAAQzO,KAAKgH,KAAK,cAAgB8H,EAAW,MACjD,GAAIL,EAAO,CACP,IAAIE,EAAOF,EAAM,GACjB,GAAIE,EAAM,CACN,IAAIM,EAAQ5R,EAAEsR,GACdM,EAAMjI,KAAK,SAASuB,MAAK,WACrB,IAAI2E,EAAQ7P,EAAE2C,MACd,GAA0B,UAAtBkN,EAAM9Q,KAAK,QAAf,CAIA,IAAIuE,EAAQoO,EAAW7B,EAAM9Q,KAAK,SAC9B4S,IAAUrO,GAEduM,EAAM0B,IAAIjO,OAGAsO,EAAMjI,KAAK,UACjBuB,MAAK,WACT,IAAI2E,EAAQ7P,EAAE2C,MACVW,EAAQoO,EAAW7B,EAAM9Q,KAAK,SAE9B4S,IAAUrO,IAEVA,GACAuM,EAAMhL,QAAQ,gBAAgBI,OAGlC4K,EAAMlG,KAAK,UAAUkI,KAAK,YAAY,GACtChC,EAAMlG,KAAK,iBAAmBrG,EAAQ,MAAMuO,KAAK,YAAY,UAM7E1D,EAAUS,OAAOI,UAAU8C,WAAa,WACpCnP,KAAKoM,qBAGTZ,EAAUS,OAAOI,UAAU+C,QAAU,WACjC/R,EAAE,QAAQmG,SAAS,mBAGvBgI,EAAUS,OAAOI,UAAU/B,MAAQ,aAInCkB,EAAUS,OAAOI,UAAU2B,OAAS,WAChC3Q,EAAE,QAAQ2H,YAAY,mBAG1BwG,EAAUS,OAAOI,UAAUgD,MAAQ,WAC/BrP,KAAKsP,mBAAmBnT,SAAQ,SAAUoT,GACtCA,EAAKF,YAIb7D,EAAUS,OAAOI,UAAUiD,iBAAmB,WAC1C,IAAI1B,EAAS,GAMb,OALA5N,KAAKgH,KAAK,wBAAwBuB,MAAK,WAC/BvI,KAAKwP,uBACL5B,EAAO/B,KAAK7L,KAAKwP,0BAGlB5B,GAGXpC,EAAUS,OAAOI,UAAUoD,gBAAkB,SAAUf,GACnD,IAAK1O,KAAKkM,UAAUwD,cAAe,OAAO,KAE1C,IAAIvB,EAAanO,KAEb2P,EAAe,KAUnB,OARA3P,KAAKgH,KAAK,wBAA0B0H,EAAO,MAAMnG,MAAK,WAClD,IAAIqH,EAAmBzB,EAAWjC,UAAUwD,cAAchB,GACrD1O,KAAKwP,wBACNxP,KAAKwP,sBAAwB,IAAII,EAAiB5P,OAEtD2P,EAAe3P,KAAKwP,yBAGjBG,GAGXnE,EAAUS,OAAOI,UAAUX,SAAW,SAAUmE,GAC5C,IAAI1B,EAAanO,KACjB8P,EAASC,KAAKrE,SAASmE,GAAS,SAAUpD,GACtC,OAAO0B,EAAWlJ,OAAOwH,OAGjCjB,EAAUqB,QAAW,WACjB,IAAI3E,EAAW,GACX8H,EAAa,GACbnD,EAAU,GA8Fd,OAnFAxP,EAAEzC,QAAQqJ,GAAG,UAAU,SAAUsI,GAC7BM,EAAQ1Q,SAAQ,SAAUoR,GACtBA,EAAOjB,OAAOC,SAItBrE,EAASsE,OAAS,SAAUe,EAAQd,EAAOC,EAAQ9H,EAAU+H,GAEzD,OAAOY,EAAOf,OAAOC,EAAOC,EAAQ9H,EAAU+H,IAGlDzE,EAAS4E,UAAY,SAAUS,EAAQd,EAAOC,EAAQ9H,EAAU+H,GAC5D,OAAOY,EAAOlF,MAAMO,OAAO,CACvBpB,KAAM,MACN0B,IAAKqE,EAAOrB,UAAUU,OACtBzC,SAAU,OACV7I,KAAMoL,EACNtC,OAAO,EACPC,QAAS,SAATA,QAAmBtM,GACf,IAAI6P,EA5BhB,SAASpB,OAAO7O,EAAU8O,GAMtB,OALAzR,OAAOC,KAAKwR,GAAOtQ,SAAQ,SAAUuE,GACjC,IAAIuP,EAAK,IAAInT,OAAO,OAAS4D,EAAM,OAAQ,KAC3C/C,EAAWA,EAASyL,QAAQ6G,EAAIxD,EAAM/L,OAE1C/C,EAAWA,EAASyL,QAAQ,WAAY,IAuBnBoD,CAAOzO,EAAM0O,GACtBE,EACAA,EAAS5O,EAAM0O,IAEZc,GAAqC,IAA3BA,EAAOlI,SAAS3K,QACzB+M,YAAW,WACPpK,EAAEkQ,EAAOlI,SAAS,IAAI2B,KAAK,wBAAwBuB,MAAK,SAAUjP,EAAG4W,GACjE,IAAIC,IAAmBD,GAAMf,mBAIzC5B,EAAOP,WAAWY,EAAQnB,IAG9Bc,EAAOS,SACHpJ,GACAA,IAEJ4G,EAAUC,OAAOM,OAAO,oBAE5BzB,MAAO,SAAPA,MAAiBhJ,GACbiM,EAAOjD,YAKnBpC,EAASG,IAAM,SAAUwF,GACrB,IAAID,EAAS,GAIb,OAHAf,EAAQ1Q,SAAQ,SAAUoT,GAClBA,EAAKrD,UAAU2B,IAAMA,GAAID,EAAO/B,KAAK0D,MAEtC3B,GASX1F,EAASkI,IAAM,WACX,OAAOvD,EAAQ1R,MAAM,IAGzB+M,EAASmI,SAAW,WAChBxD,EAAQ1Q,SAAQ,SAAUoR,GACtBA,EAAO5I,WAIfuD,EAASwD,SAAW,SAAUQ,GAC1B8D,EAAWnE,KAAKK,IAGpBhE,EAASiH,WAAa,WAClBa,EAAW7T,SAAQ,SAAUmU,GACzBA,EAAUtJ,OAAOuB,MAAK,WAClB,IAAIL,EAAWlN,OAAOuV,OAAOD,EAAUjE,WACvCiE,EAAUlV,KAAK8M,EAAUoI,EAAWtQ,MACpC6M,EAAQhB,KAAK3D,UAKlBA,EAjGU,GAoGrBqC,QAAQC,IAAI,wBACZgB,EAAUgF,QAAU,SAAUC,GAC1BzQ,KAAK0Q,QACL1Q,KAAKyQ,SAAWA,EAChBpT,EAAEsT,KAAKF,GAAUG,KAAK5Q,KAAK6Q,OAE/BrF,EAAUgF,QAAQnE,UAAUqE,MAAQ,aACpClF,EAAUgF,QAAQnE,UAAUwE,KAAO,aACnCrF,EAAUsF,gBAAkB,SAAUC,GAClC/Q,KAAKgR,QAAU,GACfhR,KAAK+Q,WAAaA,GAAc,KAGpCvF,EAAUsF,gBAAgBzE,UAAY,IAAIb,EAAUgF,QACpDhF,EAAUsF,gBAAgBzE,UAAUqE,MAAQ,WAcxC,OAbArT,EAAE,QAAQyI,OACN,iDACI9F,KAAK+Q,WACL,4FACA/Q,KAAKgR,QACL,4BAEIC,UAAUC,UAAUxU,MAAM,qBAIlCW,EAAE,oBAAoBiF,OAFtBjF,EAAE,oBAAoB8T,OAAOnR,KAAK+Q,YAI/B/Q,MAGXwL,EAAUsF,gBAAgBzE,UAAUwE,KAAO,WACvC,IAAIO,EAAW/T,EAAE,oBACL4T,UAAUC,UAAUxU,MAAM,qBAMlC0U,EAASzM,OAAOvC,SAJhBgP,EAASC,QAAQD,EAAS9P,KAAK,eAAe,WAC1C8P,EAAShP,aAOrBoJ,EAAUsF,gBAAgBzE,UAAUiF,WAAa,SAAUN,GACvDhR,KAAKgR,QAAUA,GAGnBpW,OAAO2W,cAAgB,WACM,oBAAdC,aACXnU,EAAE,gBACGT,QAAO,WACJ,OAAQS,EAAE2C,MAAM6B,SAAS,eAE5B0G,MAAK,WACFiJ,WAAWhF,OAAOnP,EAAE2C,MAAM,GAAI3C,EAAE2C,MAAMsB,WAE9CjE,EAAE,uBAAuBjB,KAAK,QAAS,eAE3CxB,OAAO6W,YAAc,WACQ,oBAAdD,YAA2BA,WAAWnC,MAAM,IAE3DzU,OAAO8W,uBAAyB,SAASA,uBAAuBC,GAC5DtU,EAAE,iCAAiCkL,MAAK,WAChClL,EAAE2C,MAAM4O,QAAU+C,GAClBtU,EAAE2C,MAAMkC,QAAQ,QAAQ0P,aAIpCvU,GAAE,WA4EE,SAASwU,iBAAiBC,GAClBA,EAAMzU,EAAE,wBAAwBiE,KAAK,OAAQwQ,GAC5CA,EAAOzU,EAAE,wBAAwBiE,KAAK,QAC3C,IAAIyQ,EAAU,CAACC,UAAyE,GAA9D3U,EAAE,kDAAkD3C,QAC9E2C,EAAE,oDAAoD4U,WAAWH,EAAMC,GAG3E,SAASG,cAAcC,GACnB,IAAIC,EAAaD,EAAQxM,SAASvJ,KAAK,mBAClCgW,GACgBC,KAAKC,MAAMjV,EAAE8U,GAASzM,QAAQyI,aAE3CiE,EAAaC,KAAKC,MAAMjV,EAAE8U,GAASzM,QAAQyI,WAAWoE,YAG9D,OAAOH,EA1FX/U,EAAE,iBAAiBkL,MAAK,WACpB,IAAIiK,EAAenV,EAAE2C,MACrBwS,EAAa7M,SAASnC,SAAS,oBAC/B,IAAI4O,EAAaF,cAAcM,GAC3B1J,EAyFR,SAAS2J,YAAYN,GACjB,IAAIrJ,EAAWqJ,EAAQxM,SAASvJ,KAAK,kBACrC,IAAK0M,EAAU,CACX,IAAIqF,EAAakE,KAAKC,MAAMjV,EAAE8U,GAASzM,QAAQyI,WAC3CA,IACArF,EAAWqF,EAAWN,IAG9B,OAAO/E,EAjGQ2J,CAAYD,GAC3BnV,EAAE2C,MACG2F,SACA+M,QACG,4HACI5J,EACA,yBACAsJ,EACA,uBAGhB/U,EAAE,kBAAkBmE,OAAM,SAASmR,qBAC/B,IAAIC,EAAgBvV,EAAE2C,MAAM2F,SAASqB,KAAK,eACtC4L,EAAclY,OAAS,IACvBkY,EAsFR,SAASC,uBAAuBL,EAAc1J,GAC1C,IAAIgK,EAOJ,OANAN,EAAajK,MAAK,SAAUwK,GACxB,GAAIV,KAAKC,MAAMjV,EAAE2C,MAAM0F,QAAQyI,WAAWN,IAAM/E,EAE5C,OADAgK,EAAkBzV,EAAE2C,OACb,KAGR8S,EA9FaD,CAAuBD,EAAevV,EAAE2C,MAAMsB,KAAK,cAEvE,IAAI0R,EAAaJ,EAAc,GAAG3V,UAC9BmV,EAAaF,cAAcU,GAC/Bf,iBAAiBQ,KAAKC,MAAMU,IAC5B3V,EAAE,0CAA0CU,KAAK,YAAcqU,MAEnE/U,EAAE,sCAAsCmE,OAAM,SAAU+K,GACpD,IAAI0G,EAAc5V,EAAE2C,MAAMgH,KAAK,cAC3BiM,EAAYpR,SAAS,kBACrBoR,EAAYjO,YAAY,kCAAkCxB,SAAS,gCAClEyP,EAAYjO,YAAY,gCAAgCxB,SAAS,kCACtEqO,sBAEJxU,EAAE,kCAAkCmE,OAAM,SAAU+K,GAChD,IAAIuF,EAAOzU,EAAE,wBAAwBiE,KAAK,SA+B9C,SAAS4R,sBAAsBC,GAC3B,IAAI3X,EAAKuI,SAASqP,cAAc,YAChC5X,EAAGmF,MAAQwS,EACX3X,EAAG8H,aAAa,WAAY,IAC5B9H,EAAG6X,MAAQ,CAACC,SAAU,WAAYC,KAAM,WACxCxP,SAAS1I,KAAKmY,YAAYhY,GAC1BA,EAAGiY,SACH1P,SAAS2P,YAAY,QACrB3P,SAAS1I,KAAKS,YAAYN,GAtC1B0X,CAAsBb,KAAKsB,UAAU7B,OAEzCzU,EAAE,uCAAuCmE,OAAM,SAAU+K,GACrDlP,EAAE,qCAAqCuW,YAAY,uBAEvDvW,EAAE,mBAAmBmE,OAErB,SAASqS,iBAAiB7S,GACtB,IAAIrB,EAAUoE,SAAS+P,cAAc,4BACjC9S,aAAiB+S,cACjBpU,EAAUqB,GAEd,IAAIgT,EAAejQ,SAASkQ,oBAAsBlQ,SAASmQ,gBAAiB,EAC5EvU,EAAQwU,kBACJxU,EAAQwU,mBACRxU,EAAQyU,yBACRzU,EAAQ0U,sBACR,WACI,OAAO,GAEftQ,SAASuQ,iBACLvQ,SAASuQ,kBACTvQ,SAASwQ,wBACTxQ,SAASyQ,qBACT,WACI,OAAO,GAEfR,EAAejQ,SAASuQ,mBAAqB3U,EAAQwU,0BAsD7D9W,GAAE,eACFA,GAAE,WACE,IAAIoX,EAAUpX,EAAE,iBAChB,GAAIoX,EAAQ/Z,OAAQ,CAChB,IAAIga,EAAW,EAoBfC,aATgB,SAAZC,YACAF,IACArX,EAAEgL,IAAI,yBAA2BhL,EAAE,+BAA+BuR,OAClE6F,EAAQlM,MAAK,WACT,IAAIsM,EAASxX,EAAE2C,MACX8U,EAAWC,SAASF,EAAOvT,OAAOX,MAAO,IAC7CkU,EAAO9W,KAhBF,SAATiX,OAAmBC,GACnB,IAAIC,EAAQC,KAAKC,MAAMH,EAAQ,MAC3BI,EAAUF,KAAKC,OAAOH,EAAgB,KAARC,GAAgB,IAC9CI,EAAUL,EAAgB,KAARC,EAAyB,GAAVG,EAKrC,OAHIH,EAAQ,KAAIA,EAAQ,IAAMA,GAC1BG,EAAU,KAAIA,EAAU,IAAMA,GAC9BC,EAAU,KAAIA,EAAU,IAAMA,GAC3BJ,EAAQ,IAAMG,EAAU,IAAMC,EAQrBN,CAAOF,EAAWJ,SAGf,SAI/BrX,GAAE,WACEA,EAAE,kBAAkBkY,QAAO,WACvBlY,EAAE,mBAAmB2H,YAAY,aAErC3H,EAAE,kBAAkBkY,QAAO,WACvBlY,EAAE,mBAAmBmG,SAAS,gBAItCnG,GAAE,WACEA,EAAE,eAAekY,QAAO,WACpBlY,EAAE,gBAAgB2H,YAAY,aAElC3H,EAAE,eAAekY,QAAO,WACpBlY,EAAE,gBAAgBmG,SAAS,UAC3BnG,EAAE,mBAAmB,GAAGmY,SAAU,EAClCnY,EAAE,mBAAmB,GAAGmY,SAAU,EAClCnY,EAAE,mBAAmB,GAAGmY,SAAU,QAI1CnY,GAAE,WACEA,EAAE,wBAAwBmE,OAAM,SAAU+K,GAEtClP,EAAE6M,KAAK,CACH1C,KAAM,OACN0B,IAHM,wCAIN5H,KAAMjE,EAAE,uBAAuBoY,YAC/BpL,QAAS,SAATA,QAAmB/I,GACf,IAAIoU,EAAWrD,KAAKC,MAAMhR,GACtBoU,EAASC,UACTtY,EAAE,aAAaqI,KAAKgQ,EAASC,UAC7BtY,EAAE,qBAAqBqI,KAAK,MAE5BrI,EAAE,qBAAqBqI,KAAK,cAAgBgQ,EAASE,YAAc,yBACnEvY,EAAE,aAAaqI,KAAK,QAIhC6G,EAAEsJ,uBAGV,IAAI/F,EAAW,GAymBf,SAASgG,2BAA2BC,GAChC,IAAIC,EAAM3Y,EAAE,iCACZ,GAAI2Y,EAAItb,OAAQ,CACZ,IAAIub,EAAKD,EAAIE,aAAa,CACtBC,kBAAkB,EAClB7U,KAAM,mBACN8U,aAAa,EACbC,aAAc,EACdC,YAAa,qCACb3J,SAAU,SAAVA,SAAoBrL,GAChB,MACI,oDAEAA,EAAKiV,eAFL,qCAKAjV,EAAKoN,KALL,4DAQApN,EAAKkV,eARL,sBAeZnZ,EAAE4Y,GAAIhS,GAAG,OAAQ8R,IAloBzBjG,EAAS2G,KAAO,GAChB3G,EAAS2G,KAAK1G,KAAO,GACrBvE,EAAUsC,MAAQ,CACd4I,KAAM,SAANA,KAAgBC,EAAS/R,EAAU0F,GAC/B,GAAKqM,EAIL,OADAA,EAAQC,aAAc,EACfvZ,EAAE6M,KAAK,CACVhB,IAAK,WAAayN,EAAQ/J,OAC1BpF,KAAM,OACNqP,YAAa,oCACbC,aAAa,EACbC,UAAW,CAACC,iBAAiB,GAC7B1V,KAAMqV,EACNtM,QAASzF,EACT0F,MAAOA,KAGf2M,SAAU,SAAVA,SAAoBC,EAAQC,GACxB9Z,EAAE6Z,GACGlQ,KAAK,SACLuB,MAAK,WACF,IAAImG,EAAOrR,EAAE2C,MAAM5D,KAAK,QACNiB,EAAE8Z,GAAInQ,KAAK,eAAiB0H,EAAO,MACzCE,IAAIvR,EAAE2C,MAAM4O,UAGhCvR,EAAE6Z,GACGlQ,KAAK,UACLuB,MAAK,WACF,IAAI5H,EAAQtD,EAAE2C,MAAMgH,KAAK,mBAAmB4H,MAC5CvR,EAAE8Z,GACGnQ,KAAK,gBAAkB3J,EAAE2C,MAAM5D,KAAK,QAAU,MAC9C4K,KAAK,iBAAmBrG,EAAQ,MAChCvE,KAAK,WAAY,QAGlCgb,UAAW,SAAXA,UAAqBzI,GACjBtR,EAAEsR,GAAMnN,OAAM,WACVnE,EAAE2C,MAAMgH,KAAK,sCAAsC4H,IAAI,QAG/Db,UAAW,SAAXA,UAAqB/R,GACjB,IAAI+R,WAAY,EAIhB,OAHA/S,OAAOC,KAAKe,GAAYG,SAAQ,SAAUuE,GACtCqN,WAAarN,EAAI/E,cAAcC,QAAQ,UAAY,KAEhDmS,WAEXsJ,cAAe,SAAfA,cAAyBrb,GACrB,OAAOA,GAAchB,OAAOC,KAAKe,GAAYtB,OAAS,GAE1D4c,OAAQ,SAARA,OAAkBtZ,EAAUuZ,EAAOrZ,GAC/B,IAAIsZ,EAAU,MAGVA,EADAxZ,aAAoByM,OACVzM,EAEAX,EAAEW,KAGkB,GAAlBwZ,EAAQ9c,cAEH,IAAV6c,IACPA,EAAQ,KAIRrZ,OADkB,IAAXA,EACEsZ,EAAQtZ,SAASuZ,IAEjBD,EAAQtZ,SAASuZ,IAAMvZ,EAGpCb,EAAE,cAAcqa,QACZ,CACIC,UAAWzZ,GAEfqZ,KAGRK,oBAAqB,SAArBA,sBACI,IAAIjN,EAAUtN,EAAE,gDAAgD6E,QAAQ,WACpE7E,EAAEzC,QAAQid,QAAU,IACpBrM,EAAUsC,MAAMwJ,OAAO3M,EAAS,IAAK,IAErCa,EAAUsC,MAAMwJ,OAAO3M,EAAS,IAAK,KAG7CmN,gBAAiB,SAAjBA,gBAA2BC,EAAWnT,GAClC,OAAO4G,EAAUsC,MAAM4I,KACnB,CACI9J,OAAQ,mBACRoL,QAASD,GAEbnT,KAiBRvH,EAAE,gBAAgB3C,OAAS,GAC3B2C,EAAE,QAAQmE,OAAM,SAAU+K,GACtB,IAAI0L,EAAU5a,EAAEkP,EAAEpB,QACb8M,EAAQpW,SAAS,gBAA4D,GAA1CoW,EAAQ/V,QAAQ,gBAAgBxH,SACpE2C,EAAE,gBAAgB2H,YAAY,UAC9B3H,EAAE,gBAAgB2J,KAAK,iBAAiBkR,cAMpD7a,EAAEC,GAAG6a,gBAAkB,WACnB,IAAIC,EAAI,GACJ7f,EAAIyH,KAAKqY,iBAWb,OAVAhb,EAAEkL,KAAKhQ,GAAG,gBACe+f,IAAjBF,EAAEpY,KAAK0O,OACF0J,EAAEpY,KAAK0O,MAAM7C,OACduM,EAAEpY,KAAK0O,MAAQ,CAAC0J,EAAEpY,KAAK0O,QAE3B0J,EAAEpY,KAAK0O,MAAM7C,KAAK7L,KAAKW,OAAS,KAEhCyX,EAAEpY,KAAK0O,MAAQ1O,KAAKW,OAAS,MAG9ByX,GAEXtI,EAAS1B,QAAW,WAChB,IAAIlG,EAAW,CAEfA,eAA0B,SAAUqE,GAChCA,EAAEsJ,iBACF/F,EAASC,KAAKwI,UAAUnW,OAAO/E,EAAE2C,MAAMsB,KAAK,cAGhD4G,gBAA2B,SAAUqE,GACjCA,EAAEsJ,iBACF/F,EAASC,KAAKwI,UAAU1X,QAAQxD,EAAE2C,MAAMsB,KAAK,cAGjD4G,WAAsB,SAAUqE,GAC5BA,EAAEsJ,iBACF/F,EAASC,KAAKyI,WAAWpW,OAAO/E,EAAE2C,MAAMsB,KAAK,aAGjD4G,cAAyB,SAAUqE,GAC/BA,EAAEsJ,iBACF/F,EAASC,KAAK0I,QAAQxT,OAAO5H,EAAE,gBAAgB8a,oBAGnDjQ,YAAuB,SAAUqE,GAC7BA,EAAEsJ,iBACFrK,EAAUqB,QAAQ4L,QAAQjM,OAAO,GAAI,CAACkM,SAAS,KAGnDxQ,cAAyB,SAAUqE,GAC/BA,EAAEsJ,iBACFxY,EAAE,mBAAmBsb,eAGzBzQ,eAA0B,SAAUqE,GAC5BlP,EAAE2C,MAAM4F,GAAG,YACX4F,EAAUsC,MAAMmJ,SAAS,yBAA0B,wBAEnDzL,EAAUsC,MAAMsJ,UAAU,yBAIlClP,eAA0B,SAAUqE,GAEhC,IAAIqM,EAAcvb,EAAE2C,MAAM4O,MAEtBiK,EAASxb,EAAE2C,MAAMkC,QAAQ,QAAQ8E,KAAK,wBAEtC6R,EAAO7R,KAAK,wBAA0B4R,EAAc,MAAMle,OAAS,GACnEme,EAAO7R,KAAK,6BAA+B4R,EAAc,OAAOpV,SAAS,UACzEqV,EAAO7R,KAAK,wBAA0B4R,EAAc,MAAM5T,YAAY,UACjE6T,EAAOjT,GAAG,aACXiT,EAAOlT,SAASmT,aAGpBD,EAAOlT,SAASuS,UAGpBW,EAAOjK,IAAI,OAGf1G,KAAgB,WACZ7K,EAAE,gBAAgBkL,MAAK,WACnB,IAAI8F,EAAahR,EAAE2C,MAAMsB,KAAK,QAC9BiJ,QAAQC,IAAI,YAAc6D,EAAa,iBAAmBrO,KAAO,KACjE,IAAIsO,EAASpG,EAASmG,GACtB9D,QAAQC,IAAIxK,MACZ3C,EAAE2C,MAAMiE,GAAG,QAASqK,OAI5BpG,OAAkB,WACd7K,EAAE,gBAAgBkL,MAAK,WACnB,IACI,IAAI8F,EAAahR,EAAE2C,MAAMsB,KAAK,QAC9BiJ,QAAQC,IAAI,cAAgB6D,EAAa,iBAAmBrO,KAAO,KACnE,IAAIsO,EAASpG,EAASmG,GACtBhR,EAAE2C,MAAMiC,IAAI,QAASqM,GACvB,MAAO/B,GACLhC,QAAQC,IAAI+B,SAKxB,OAAOrE,EAnFS,GAsFpBtN,OAAOwR,kBAAoB,WAEvB,IACI0D,EAAS1B,QAAQV,SACnB,MAAOnB,GACLhC,QAAQC,IAAI+B,GAEhB,IAEIuD,EAAS1B,QAAQT,OACnB,MAAOpB,GAELuD,EAAS1B,QAAQV,WAGzBlC,EAAUuN,uBAAyB,SAAU7M,EAAWvM,GACpD6L,EAAUS,OAAO7Q,KAAK4E,KAAMkM,EAAWvM,IAE3C6L,EAAUuN,uBAAuB1M,UAAY,IAAIb,EAAUS,OAC3DT,EAAUuN,uBAAuBlL,GAAK,mBACtCrC,EAAUuN,uBAAuBnM,OAAS,wCAC1CpB,EAAUuN,uBAAuB3K,QAAU,CACvCsC,MAAO,SAAPA,MAAiBnE,EAAGgB,GAChBhB,EAAEsJ,iBACF,IAAIzG,EAAU,IAAI5D,EAAUsF,gBAC5B1B,EAAQsB,QACR,IAAIsI,EAAQ3b,EAAE2C,MAAMiZ,SAAS,gBAAgBrK,MACxCoK,IACDA,EAAQzL,EAAOvG,KAAK,gBAAgB4H,OAExC,IAAIf,EAAKN,EAAOvG,KAAK,aAAa4H,MAC9BsK,EAAgB3L,EAAOvG,KAAK,kBAC5BmS,EAAW5L,EAAOvG,KAAK,iBACvBoS,EAAW7L,EAAOvG,KAAK,sBAAsB4H,MAC7CyK,EAAW9L,EAAOvG,KAAK,mBAAmB4H,MAC9CpD,EAAUsC,MAAM4I,KACZ,CACI9J,OAAQ,sBACRoM,MAAOA,EACPM,YAAa,QACbzL,GAAIA,EACJ0L,YAAaH,EACbC,SAAUA,IAEd,SAAU/X,GACN,GAAIA,EAAK+I,QAAS,CACd,IAAIiP,EAAchY,EAAkB,YACpCiM,EAAOf,OACH,GACA,CACIS,KAAMqM,EACNE,UAAWlY,EAAKkY,UAChBC,QAASnY,EAAKmY,QACdzI,QAAS1P,EAAK0P,QACd0I,aAAcpY,EAAKoY,aACnBV,MAAOA,EACPO,YAAajY,EAAK8X,SAClBC,SAAU/X,EAAK0X,OAASA,SAIhCE,EAAcnb,KAAKuD,EAAKoY,cACxBP,EAASpb,KAAKuD,EAAK0P,SAGvB5B,EAAQyB,WAIpB8I,WAAY,SAAZA,WAAsBpN,EAAGgB,GACrBhB,EAAEsJ,iBACF,IAAIzG,EAAU,IAAI5D,EAAUsF,gBAC5B1B,EAAQsB,QACR,IAAI9X,EAAO2U,EAAOvG,KAAK,SAAS4H,MAC5BgL,EAAWrM,EAAOvG,KAAK,mBAAmB4H,MAC1Cf,EAAKN,EAAOvG,KAAK,aAAa4H,MAC9BwK,EAAW7L,EAAOvG,KAAK,sBAAsB4H,MACjDpD,EAAUsC,MAAM4I,KACZ,CACI9J,OAAQ,sBACRhU,KAAMA,EACN0gB,YAAa,OACbzL,GAAIA,EACJ+L,SAAUA,EACVL,YAAaH,IAEjB,SAAU9X,GACN,IAAI6X,EAAW5L,EAAOvG,KAAK,iBACvB6S,EAAiBtM,EAAOvG,KAAK,wBAC7BkS,EAAgB3L,EAAOvG,KAAK,uBAC5B1F,EAAK+I,QACD/I,EAAKmY,QACLlM,EAAOf,OAAO,GAAI,CAACS,KAAM,QAEzBrS,OAAO6O,SAASC,KAAOpI,EAAK8X,UAGhCF,EAAcnb,KAAKuD,EAAKoY,cACxBP,EAASpb,KAAKuD,EAAK0P,SACnBkI,EAAclU,YAAY,UAC1B6U,EAAerW,SAAS,UACxB+J,EAAOnB,qBAGXgD,EAAQyB,WAIpBiJ,eAAgB,SAAhBA,eAA0BvN,EAAGgB,GACzBhB,EAAEsJ,iBACF,IAAIzG,EAAU,IAAI5D,EAAUsF,gBAC5B1B,EAAQsB,QACR,IAAI7C,EAAKN,EAAOvG,KAAK,aAAa4H,MAC9BmL,EAAWxM,EAAOvG,KAAK,mBAAmB4H,MAC1CgL,EAAWrM,EAAOvG,KAAK,mBAAmB4H,MAC1CuK,EAAW5L,EAAOvG,KAAK,iBACvBkS,EAAgB3L,EAAOvG,KAAK,kBAC5BoS,EAAW7L,EAAOvG,KAAK,sBAAsB4H,MACjDpD,EAAUsC,MAAM4I,KACZ,CACI9J,OAAQ,sBACRmN,SAAUA,EACVT,YAAa,WACbzL,GAAIA,EACJ+L,SAAUA,EACVL,YAAaH,IAEjB,SAAU9X,GACFA,EAAK+I,QACLzP,OAAO6O,SAASC,KAAOpI,EAAK8X,UAE5BF,EAAcnb,KAAKuD,EAAKoY,cACxBP,EAASpb,KAAKuD,EAAK0P,UAEvB5B,EAAQyB,WAIpBmJ,YAAa,SAAbA,YAAuBzN,EAAGgB,GACtBhB,EAAEsJ,iBACF,IAAIuD,EAAW7L,EAAOvG,KAAK,sBAAsB4H,MAC7CoK,EAAQzL,EAAOvG,KAAK,gBAAgB4H,MACxCrB,EAAOf,OAAO,GAAI,CAACS,KAAM,eAAgBuM,WAAW,EAAMD,YAAaH,EAAUJ,MAAOA,KAE5FiB,QAAS,SAATA,QAAmB1N,EAAGgB,GAClBhB,EAAEsJ,iBACF,IAAImD,EAAQzL,EAAOvG,KAAK,gBAAgB4H,MACpCf,EAAKN,EAAOvG,KAAK,aAAa4H,MAC9BsK,EAAgB3L,EAAOvG,KAAK,kBAC5BmS,EAAW5L,EAAOvG,KAAK,iBACvBoS,EAAW7L,EAAOvG,KAAK,sBAAsB4H,MACjDpD,EAAUsC,MAAM4I,KACZ,CACI9J,OAAQ,sBACRoM,MAAOA,EACPM,YAAa,WACbzL,GAAIA,EACJ0L,YAAaH,IAEjB,SAAU9X,GACN,GAAIA,EAAK+I,QAAS,CACd,IAAIiP,EAAchY,EAAkB,YACpCiM,EAAOf,OACH,GACA,CACIS,KAAMqM,EACNE,WAAW,EACXxI,QAAS1P,EAAK0P,QACd0I,aAAcpY,EAAKoY,aACnBV,MAAOA,EACPO,YAAaH,SAIrBF,EAAcnb,KAAKuD,EAAKoY,cACxBP,EAASpb,KAAKuD,EAAK0P,aAKnCkJ,KAAM,SAANA,KAAgB3N,EAAGgB,GACfhB,EAAEsJ,iBACF,IAAIzG,EAAU,IAAI5D,EAAUsF,gBAC5B1B,EAAQsB,QACRnD,EAAOf,OAAO,GAAI,IAAI,WAClB4C,EAAQyB,WAGhBsJ,UAAW,SAAXA,UAAqB5N,EAAGgB,GACpBhB,EAAEsJ,iBACF,IAAIzG,EAAU,IAAI5D,EAAUsF,gBAC5B1B,EAAQsB,QACR,IAAI0J,EAAc7M,EAAOvG,KAAK,sBAAsB4H,MACpDrB,EAAOf,OAAO,GAAI,CAACS,KAAM,aAAcmN,YAAaA,IAAc,WAC9DC,qBACAjL,EAAQyB,WAGhByJ,QAAS,SAATA,QAAmB/N,EAAGgB,GAClBhB,EAAEsJ,iBACF,IAAIzG,EAAU,IAAI5D,EAAUsF,gBAC5B1B,EAAQsB,QACR,IAAI0J,EAAc7M,EAAOvG,KAAK,sBAAsB4H,MACpDrB,EAAOf,OAAO,GAAI,CAACS,KAAM,iBAAkBmN,YAAaA,IAAc,WAClEtE,4BAA2B,WACvB1G,EAAQyB,cAIpB0J,SAAU,SAAVA,SAAoBhO,EAAGgB,GACnBhB,EAAEsJ,iBACF,IAAIzG,EAAU,IAAI5D,EAAUsF,gBAC5B1B,EAAQsB,QACR,IAAIsI,EAAQzL,EAAOvG,KAAK,gBAAgB4H,MAIxC,GAFI,yJAEYnG,KAAKuQ,IADJ,aAC0BvQ,KAAKuQ,GAAhD,CAOA,IAAIoB,EAAc7M,EAAOvG,KAAK,sBAAsB4H,MACpDrB,EAAOf,OAAO,GAAI,CAACS,KAAM,WAAY+L,MAAOA,EAAOoB,YAAaA,IAAc,WAC1EI,mBACApL,EAAQyB,eATRtD,EAAOf,OAAO,GAAI,CAACS,KAAM,aAAc+L,MAAOA,EAAOyB,QAAQ,IAAO,WAChEJ,qBACAjL,EAAQyB,WAUpB6J,WAAY,SAAZA,WAAsBnO,EAAGgB,GACrBhB,EAAEsJ,iBACF,IAAIzG,EAAU,IAAI5D,EAAUsF,gBAC5B1B,EAAQsB,QACR,IAAIsI,EAAQzL,EAAOvG,KAAK,gBAAgB4H,MACpCmL,EAAWxM,EAAOvG,KAAK,mBAAmB4H,MAC1CgL,EAAWrM,EAAOvG,KAAK,mBAAmBpB,GAAG,YACjD4F,EAAUsC,MAAM4I,KACZ,CACI9J,OAAQ,UACRoM,MAAOA,EACPe,SAAUA,EACVH,SAAUA,EACVL,YAAa,MAEjB,SAAUjY,GACN,GAAIA,EAAK+I,QAASzP,OAAO6O,SAASC,KAAO,QACpC,CACD,IAAIiR,EAAWpN,EAAOvG,KAAK,mBAAmB4H,MAC9CrB,EAAOf,OACH,GACA,CAACS,KAAM,WAAY3C,OAAO,EAAM0O,MAAOA,EAAOoB,YAAaO,IAC3D,WACIH,mBACApL,EAAQyB,eAOhC+J,oBAAqB,SAArBA,oBAA+BrO,EAAGgB,GAC9BhB,EAAEsJ,iBACF,IAAIzG,EAAU,IAAI5D,EAAUsF,gBAC5B1B,EAAQsB,QACRnD,EAAOf,OAAO,GAAI,CAACS,KAAM,aAAa,WAClCmC,EAAQyB,WAGhBgK,cAAe,SAAfA,cAAyBtO,EAAGgB,GACxBhB,EAAEsJ,iBACF,IAAIzG,EAAU,IAAI5D,EAAUsF,gBAC5B1B,EAAQsB,QACR,IAAIoK,EAASzd,EAAE2C,MAAMiZ,SAAS,iBAAiBrK,MAC3CmM,EAAU1d,EAAE2C,MAAMkC,QAAQ,oBAAoB8E,KAAK,kBAAkB4H,MACzErB,EAAOf,OAAO,GAAI,CAACsO,OAAQA,EAAQC,QAASA,IAAU,WAClDjF,4BAA2B,WACvB1G,EAAQyB,cAIpBmK,KAAM,SAANA,KAAgBzO,EAAGgB,GACfhB,EAAEsJ,iBACF,IAAIzG,EAAU,IAAI5D,EAAUsF,gBAC5B1B,EAAQsB,QACR,IAAIxH,EAAM7L,EAAE2C,MAAMkC,QAAQ,oBAAoB8E,KAAK,cAAc4H,MACjE,GAAI1F,EACAtO,OAAO6O,SAASC,KAAOR,MACpB,CACH,IAAI8P,EAAQ3b,EAAE2C,MAAMiZ,SAAS,gBAAgBrK,MACzCwL,EAAc7M,EAAOvG,KAAK,sBAAsB4H,MACpDrB,EAAOf,OAAO,GAAI,CAACS,KAAM,WAAY+L,MAAOA,EAAOoB,YAAaA,IAAc,WAC1EhL,EAAQyB,YAIpBoK,QAAS,SAATA,QAAmB1O,EAAGgB,GAClBhB,EAAEsJ,iBACF,IAAIzG,EAAU,IAAI5D,EAAUsF,gBAC5B1B,EAAQsB,QACR,IAAIwK,EAAU7d,EAAE2C,MAAMgH,KAAK,kBAAkB4H,MAC7CrB,EAAOf,OAAO,GAAI,CAACS,KAAM,MAAOiO,QAASA,IAAU,WAC/C9L,EAAQyB,WAGhBsK,YAAa,SAAbA,YAAuB5O,EAAGgB,GACtBhB,EAAEsJ,iBACF,IAAIzG,EAAU,IAAI5D,EAAUsF,gBAC5B1B,EAAQsB,QACRnD,EAAOf,OAAO,GAAI,IAAI,WAClB4C,EAAQyB,YAIpBrF,EAAUuN,uBAAuB/R,KAAO,WACpC,IAAIoU,EAAU/d,EAAE,sBAAwBmO,EAAUuN,uBAAuBlL,GAAK,MAC9E,OAAIuN,EAAQ1gB,OAAS,IAGrB0gB,EAAU/d,EAAE,iBAAmBmO,EAAUuN,uBAAuBlL,GAAK,OACzDnT,OAAS,EAHV0gB,EAMJ/d,EAAE,IAAMmO,EAAUuN,uBAAuBlL,KAEpDrC,EAAUuN,uBAAuB1M,UAAUD,kBAAoB,WAC3DpR,OAAOqgB,eAAe7P,EAAUuN,uBAAuB1M,WAAWD,kBAAkBhR,KAAK4E,MACzFA,KAAKgH,KAAK,mBAAmBuB,MAAK,WAC9B,IAAI0G,EAAQ5R,EAAE2C,MACVsb,EAASrM,EAAMjI,KAAK,UACpBuU,EAAUtM,EAAMjI,KAAK,iBACzBsU,EAAOrX,GAAG,SAAS,WACVqX,EAAO1M,MAGR2M,EAAQC,WAAW,YAFnBD,EAAQnf,KAAK,YAAY,SAMrC4D,KAAKgH,KAAK,mBAAmBuB,MAAK,WAC9B,IAAI0G,EAAQ5R,EAAE2C,MACVsb,EAASrM,EAAMjI,KAAK,SACpBuU,EAAUtM,EAAMjI,KAAK,iBACzBsU,EAAOrX,GAAG,SAAS,WACVqX,EAAO1M,MAGR2M,EAAQC,WAAW,YAFnBD,EAAQnf,KAAK,YAAY,SAMrC4D,KAAKgH,KAAK,mBAAmBuB,MAAK,WAC9B,IAAI0G,EAAQ5R,EAAE2C,MACV6Z,EAAiB5K,EAAMjI,KAAK,wBAC5BkS,EAAgBjK,EAAMjI,KAAK,uBAC/BS,YAAW,WACPoS,EAAe7U,YAAY,UAC3BkU,EAAc1V,SAAS,YACxB,SAGXgI,EAAUqB,QAAQnB,SAASF,EAAUuN,wBACrC1b,EAAE0G,UAAUuH,OAAM,WACdwK,gCAGJlb,OAAO4f,iBAAmB,WACtBnd,EAAE,2BAA2B6R,KAAK,YAAa7R,EAAE,8BAA8BuR,OAC/EvR,EAAE,8BAA8B4G,GAAG,YAAY,SAAUsI,GAEzC,MADFA,EAAEkP,OAASlP,EAAEmP,UAEnBre,EAAE,2BAA2BQ,QAAQ,YAG7CR,EAAE,8BAA8B4G,GAAG,SAAS,WACxC5G,EAAE,2BAA2B6R,KAAK,YAAa7R,EAAE2C,MAAM4O,WAI/DhU,OAAOyf,mBAAqB,WACxBhd,EAAE,iCAAiC6R,KAAK,YAAa7R,EAAE,sCAAsCuR,OAC7FvR,EAAE,sCAAsC4G,GAAG,YAAY,SAAUsI,GAEjD,MADFA,EAAEkP,OAASlP,EAAEmP,UAEnBre,EAAE,iCAAiCQ,QAAQ,YAGnDR,EAAE,sCAAsC4G,GAAG,SAAS,WAChD5G,EAAE,iCAAiC6R,KAAK,YAAa7R,EAAE2C,MAAM4O,WAiCrE,IAEQnJ,EACAvK,EACAgW,EACAyK,EASAC,EAQArT,EA2BAoF,EA6CAD,EAkCAmO,EASA3R,EAkBA4R,EAQAC,EAnKJC,EAAQ,GAq+FZ,SAASC,gBACL5e,EAAE,QAAQ4G,GAAG,gBAAiB,4BAA4B,SAAUsI,GAChE,IAAI2P,EAAW,IAAIpf,OAAO,eAAgB,KACtCqf,EAAW,IAAIrf,OAAO,qBAAsB,KAC5Csf,EAAW,IAAItf,OAAO,iBAAkB,KACxCuf,EAAW,IAAIvf,OAAO,qBAAsB,KAC5Cwf,EAAW,IAAIxf,OAAO,qBAAsB,KAC5CO,EAAE2C,MAAM4O,MAAMlS,MAAMwf,KAEhB7e,EAAE2C,MAAM4O,MAAMlS,MAAMyf,IACpB9e,EAAE2C,MAAM4O,MAAMlS,MAAM0f,IACpB/e,EAAE2C,MAAM4O,MAAMlS,MAAM2f,IACpBhf,EAAE2C,MAAM4O,MAAMlS,MAAM4f,KAEpBjf,EAAE2C,MAAMwD,SAAS,SAC2B,GAAxCnG,EAAE2C,MAAMiZ,SAAS,aAAave,QAC9B2C,EAAE2C,MAAMuc,MAAM,+EAMtBlf,EAAE2C,MAAMgF,YAAY,SACpB3H,EAAE2C,MAAMiZ,SAAS,aAAa7W,aA1/FlCqD,EAA0B,oBAAVgF,OAChBvP,EAAW,GACXgW,EAAYD,UAAUC,UAAUvV,cAChCggB,EAAsB,CACtBvR,OAAQ,SAAS3B,KAAKyI,GACtBsL,cAAe,SAAS/T,KAAKyI,GAC7BuL,OAAO,EACPC,QAAS,OAAOjU,KAAKyI,GAAa,EAAI,IACtCyL,eAAgB,OAAOlU,KAAKyI,GAAa,EAAI,IAC7C2F,YAAa,oCACb3N,IAAK,wBAEL0S,EAAS,SAATA,OAAmBgB,EAAKC,GAMxB,OAJIjB,EADAnW,EACSgF,OAAOmR,OAEP5gB,OAAO4gB,QAENgB,EAAKC,IAEnBtU,EAAO,SAAPA,KAAiB6P,EAAG0E,GAyBpB,OAvBIvU,EADA9C,EACOgF,OAAOlC,KAEP,SAAPA,KAAiBwU,EAAQnY,GACrB,IAAI8J,EACApV,EAAI,EACJoB,EAASqiB,EAAOriB,OAEpB,QA9BhB,IA6B4BA,GAA0C,mBAAXqiB,GAEvC,IAAKrO,KAAQqO,EACT,IAAwD,IAApDnY,EAASxJ,KAAK2hB,EAAOrO,GAAOA,EAAMqO,EAAOrO,IACzC,WAIR,IACI,IAAI/N,EAAQoc,EAAO,GACnBzjB,EAAIoB,IAA6C,IAAnCkK,EAASxJ,KAAKuF,EAAOrH,EAAGqH,GACtCA,EAAQoc,IAASzjB,IAGzB,OAAOyjB,IAGH3E,EAAG0E,IAEfnP,EAAO,SAAPA,KAAiB3P,EAAU+T,EAASnN,GA2CpC,OAPQ+I,EAFJlI,EACIgF,OAAOnN,GAAG2G,GAlCD,SAAb+Y,WAAuBhf,EAAU+T,EAASnN,GACtCmN,EAAQ/T,SACRyM,OAAOzM,GAAUiG,GAAG8N,EAAQ9N,GAAI8N,EAAQ/T,SAAU+T,EAASnN,GAE3D6F,OAAOzM,GAAUiG,GAAG8N,EAAQ9N,GAAI8N,EAASnN,IAG7B,SAAhBqY,cAA0Bjf,EAAU+T,EAASnN,GAC7C,IAAIsY,EAAgBtY,EAChBmN,EAAQ/T,WACRkf,EAAgB,SAAhBA,cAA0Blc,GAEtB,IADA,IAAIiX,EAAU5a,EAAE2D,EAAMK,gBACd4W,EAAQrS,GAAGmM,EAAQ/T,WAAaia,EAAQjU,WAAWtJ,QACvDud,EAAQjU,WAAWuE,MAAK,WAEpB,IADA0P,EAAU5a,EAAE2C,OACA4F,GAAGmM,EAAQ/T,UACnB,OAAO,KAIfia,EAAQrS,GAAGmM,EAAQ/T,WACnB4G,EAASxJ,KAAK4F,EAAMmK,OAAQnK,EAAO+Q,IAG3CtH,OAAOzM,GAAUsD,KAAK,gBAAiB4b,IAE3CzS,OAAOzM,GAAU2P,KAAKoE,EAAQ9N,GAAI8N,EAASmL,IAE3B,SAAhBC,cAA0Bnf,EAAU+T,EAASnN,GAC7CwY,GAAGpf,GAAUuK,MAAK,SAAU/M,GACxBuD,MAAM+L,QAAQtP,EAAIuW,EAAQ9N,GAAIW,EAASyY,oBAAoBrd,KAAM+R,SAY7D/T,EAAU+T,EAASnN,IAE/B8I,EAAS,SAATA,OAAmB1P,EAAU+T,EAASnN,GAgCtC,OAPQ8I,EAFJjI,EACIgF,OAAOnN,GAAG2G,GAvBC,SAAfqZ,aAAyBtf,EAAU+T,EAASnN,GACxCmN,EAAQ/T,SACRyM,OAAOzM,GAAUiE,IAAI8P,EAAQ9N,GAAI8N,EAAQ/T,SAAU+T,EAASnN,GAE5D6F,OAAOzM,GAAUiE,IAAI8P,EAAQ9N,GAAI8N,EAASnN,IAG5B,SAAlB2Y,gBAA4Bvf,EAAU+T,EAASnN,GAC3CmN,EAAQ/T,WACR4G,EAAW6F,OAAOzM,GAAUsD,KAAK,kBAEjCsD,EACA6F,OAAOzM,GAAU0P,OAAOqE,EAAQ9N,GAAIW,GAEpC6F,OAAOzM,GAAU0P,OAAOqE,EAAQ9N,KAGlB,SAAlBuZ,gBAA4Bxf,EAAU+T,EAASnN,GAC/CwY,GAAGpf,GAAUuK,MAAK,SAAU/M,GACxBuD,MAAM0e,cAAcjiB,EAAIuW,EAAQ9N,SAY1BjG,EAAU+T,EAASnN,IAEjCiX,EAAa,SAAbA,WAAuB9J,GACvB,IAAI2L,EAAW,IAAIC,SACnB,IAAK,IAAIjd,KAAOqR,EAAQzQ,KAChByQ,EAAQzQ,KAAKqI,eAAejJ,IAC5Bgd,EAAS5X,OAAOpF,EAAKqR,EAAQzQ,KAAKZ,IAG1CuQ,UAAU4K,WAAW9J,EAAQ7I,IAAKwU,IAElCxT,EAAO,SAAPA,KAAiB0T,IAEb1T,EADA0T,EAAYC,WAAa5M,UAAU4K,WAC5BA,EACApW,EACAgF,OAAOP,KAEP,SAAPA,KAAiB6H,GACbA,EAAQ+L,WAAa/L,EAAQzQ,KAC7B,IAAIyc,KAAKC,QAAQjM,EAAQ7I,IAAK6I,KAGjC6L,IAOL9B,EAAiB,CACjB7X,GAAI,UACJga,KAPc,SAAdC,YAAwBnM,EAASzQ,GACjC,IAAI6c,EAAevC,EAAOA,EAAO,GAAID,GAAsB5J,EAAQoM,cACnEA,EAAa7c,KAAOsa,EAAOA,EAAO,GAAIuC,EAAa7c,MAAOA,GAC1D4I,EAAKiU,IAKLC,YAAa,SAAbA,YAAuB7R,GACnB,OAAmB,IAAZA,EAAEkP,OAA2B,IAAZlP,EAAEkP,OAE9Bna,KAAM,IAENya,EAAU,CACVsC,MAAO,SAAPA,MAAiBtM,QAnKzB,IAoKgBA,EAAQkM,MACMlM,EAAQkM,UArKtC,IAuKgBlM,EAAQA,UACR+J,EAAiBF,EAAOA,EAAO,GAAIE,GAAiB/J,EAAQA,eAxK5E,IA0KgBA,EAAQ7H,OACRyR,EAAsBC,EAAOA,EAAO,GAAID,GAAsB5J,EAAQ7H,QAG9EU,KAAM,SAANA,KAAgBpP,GAkBZ,OAjBA+M,EAAMrN,EAAWM,GAAK,SAAUwC,EAAU+T,GACtC,GAAgD,mBAA5C/W,OAAOqR,UAAUzE,SAASxM,KAAK2W,GAE/B,IADA,IAAIuM,EAAQvM,EACHzY,EAAI,EAAGA,EAAIglB,EAAM5jB,SAAUpB,EAChCyY,EAAUuM,EAAMhlB,QAnLxC,KAoLwByY,EAAU6J,EAAOA,EAAO,GAAIE,GAAiB/J,IACjCkM,MACRtQ,EAAK3P,EAAU+T,EAASgK,EAAQwC,mBAtL5D,KA0LoBxM,EAAU6J,EAAOA,EAAO,GAAIE,GAAiB/J,IACjCkM,MACRtQ,EAAK3P,EAAU+T,EAASgK,EAAQwC,YAIrCve,MAEXqC,QAAS,SAATA,UAII,OAHAnH,EAASqN,MAAK,SAAUvK,EAAU+T,GAC9BrE,EAAO1P,EAAU+T,EAAQ9N,GAAI8N,EAAQkM,SAElCje,MAEXue,QAAS,SAATA,QAAmBvd,EAAO+Q,GAxMlC,MAyMgBA,IACAA,EAAU/Q,EAAMM,MAEpB,IAAIA,EAAOyQ,EAAQzQ,KACnB,GAAkC,mBAAvByQ,EAAQqM,cAA8BrM,EAAQqM,YAAYpd,GACjE,OAAO,EAEX,IAAIwd,EAAUzM,EAAQyM,QACtB,GAAsB,mBAAXA,EACP,IACI5C,EAAOta,EAAMkd,EAAQpjB,KAAK4F,EAAMmK,OAAQ4G,EAAS/Q,IACnD,MAAOyd,GACL,GAAIlU,SAAWA,QAAQC,IAEnB,YADAD,QAAQC,IAAI,0BAA4BiU,GAMpD,OADA1M,EAAQkM,KAAKlM,EAASzQ,IACf,IAGf0a,EAAQ,SAARA,MAAkB0C,GACd,OAAI3C,EAAQ2C,GACD3C,EAAQ2C,GAAQC,MAAM3e,KAAM4e,MAAMvS,UAAUlR,MAAMC,KAAKyjB,UAAW,IAChD,WAAlBtZ,IAAOmZ,IAAwBA,OAAnC,EACI3C,EAAQnR,KAAK+T,MAAM3e,KAAM6e,YAI5C,WAwDI,SAASC,YAAY/M,EAAS/Q,GAC1B,IAAIM,EAAO,GAEPyd,EADQ1hB,EAAE0G,SAASb,iBACD5B,KAAK,aAC3B,GAAIyd,EAAW,CACXzd,EAAK0d,gBAAkBD,EACvBzd,EAAK2d,UAAYrkB,OAAO6O,SAASC,KACjC,IAAIwV,EAAO,IAAIC,KACfD,EAAKE,QAAQF,EAAKG,UAAY,KAC9B,IAAIC,EAAUJ,EAAKK,cACnBxb,SAASyb,OAAS,mBAAqBT,EAAY,aAAeO,EAAU,WAEhF,IACI5V,EADAwD,EAAQ7P,EAAE2C,MAEVkN,EAAMtH,GAAG,MACTtE,EAAKme,SAAWvS,EAAMxH,OACtBgE,EAAOwD,EAAM9Q,KAAK,SACX8Q,EAAMtH,GAAG,UAChB8D,EAAOwD,EAAM9Q,KAAK,WAElBsN,IACApI,EAAKoe,SAAWhW,GACc,GAA1BA,EAAK9N,QAAQ,WACb0F,EAAKqe,IAAMjW,EAAKvC,MAAM,SAAS,KAGvC,IAAIyY,GAAa,EAgDjB,OA/CAviB,EAAEkL,KAAK2E,EAAM2S,IAAI3S,EAAM4S,YAAY,WAC/B,IAAIC,EAAY1iB,EAAE2C,MACdggB,EAAI,KACR,IACIA,EAAID,EAAUze,OAChB,MAAOmd,GACLuB,GAAI,EAKR,IAAK,IAAIC,KAHC,IAAND,IACAA,EAnDZ,SAASE,YAAY1kB,GACjB,IAAIwkB,EAAI,GAWR,OAVA3iB,EAAEkL,KAAK/M,EAAGQ,YAAY,SAAU1C,EAAG6mB,GAC/B,IAAIzR,EAAOyR,EAAOzR,KACW,GAAzBA,EAAK9S,QAAQ,WAEb8S,GADAA,EAAOA,EAAK0R,UAAU,QAAQ1lB,SAClB0O,QAAQ,aAAa,SAAUiX,GACvC,OAAOA,EAAE,GAAGpZ,iBAEhB+Y,EAAEtR,GAAQyR,EAAOxf,UAGlBqf,EAuCKE,CAAYH,EAAU1X,IAAI,KAEb2X,EACjB,GAAIA,EAAErW,eAAesW,IAA0C,GAA7BA,EAASrkB,QAAQ,SAAe,CAC9D,IAAI8S,EAAOuR,EAASG,UAAU,QAAQ1lB,QACtC,GAAY,QAARgU,GAAkBsR,EAAEC,GAAW,CAC/B,IAAIK,EAAO1lB,OAAOolB,EAAEC,IACpB,GAAI5iB,EAAEkjB,WAAWD,GACb,IACI,IAAIE,EAAQF,EAAKllB,KAAK2kB,GAClBS,GACAnjB,EAAEue,OAAOta,EAAMkf,GAErB,MAAO/B,IAEb,SAKJ,GAHI/P,EAAKhU,SACL4G,EAAK,QAAUoN,GAAQsR,EAAEC,KAExBL,IACDA,GAAa,EACT1S,EAAMtH,GAAG,MAAM,CACf,IAAI6a,EAAYpjB,EAAE,oDAAqD0iB,GAAWhN,MAC9E7F,GAEAuT,GAAa,IACbnf,EAAKof,UAAYD,EAAY,QAOlC,GAAfzf,EAAMya,QACNna,EAAKqf,WAAa3f,EAAM4f,MACxBtf,EAAKuf,WAAa7f,EAAM8f,OAErBxf,EAjIX1G,OAAOmmB,qBAAuB,SAAU/E,EAAO3e,EAAG+a,GAG9C,GAFAA,EAAIA,GAAK,GACO/a,EAAE,iBACH3C,OAAf,CAGAshB,EAAM,QAAS,CAAC9R,KAAM,CAAChB,IAAKkP,EAAElP,KAAO,oBAAqBwV,OAAQ,OAAQb,WAAW,KACrF,IAAImD,EAA4D,GAAhC3jB,EAAE,oBAAoB3C,OACtDshB,EAAM,CACF3gB,KAAM,CACF,CACI4I,GAAI,oBACJjG,SAAUgjB,EAA4B,UAAY,6CAClDxC,QAASM,YACTV,YAAa,SAAbA,YAAuB7R,GACnB,OAAkB,GAAXA,EAAEkP,OAA2B,IAAblP,EAAEmP,SAE7Bpa,KAAM,CAAC2f,UAAW,mBAEtB,CACIhd,GAAI,SACJjG,SAAUgjB,EAA4B,OAAS,uCAC/CxC,QAASM,YACTxd,KAAM,CAAC2f,UAAW,6BAKd,IAATjF,IACc,oBAAVvR,OACPA,OAAO1G,UAAUuH,OAAM,WACnByV,qBAAqB/E,EAAOvR,gBAEE,IAApB7P,OAAOsmB,WACrBnd,SAAS+G,QAAQ,cAAc,WAC3BiW,qBAAqB/E,EAAOoB,QApC5C,GAqIA,WACI,IAAI+D,EAAqB,SAArBA,mBAA+BnF,EAAO3e,EAAGib,GAIzC,GAHqBjb,EACjB,iJAEgB3C,OAApB,CAGAshB,EAAM,QAAS,CAAC9R,KAAM,CAAChB,IAAK,oBAAqB2U,WAAW,KAC5D,IAAIuD,EAAuB,CACvBpjB,SAAU,uCACVwgB,QAAS6C,wBACT/f,KAAM,CAAC2f,UAAW,wBAEtBjF,EAAM,CACF,8FACIoF,EACJ,oFAAqFA,EACrF,oHACIA,EACJ,0FACIA,EACJ,kFAAmFA,EACnF,4EAA6EA,EAC7E,qFAAsFA,EACtF,+IACIA,MAeZ,SAASE,kBAAkBhgB,EAAMyQ,EAAS/Q,GACtC,IACIugB,EACAC,EAFAtU,EAAQ7P,EAAE2C,MAGVyhB,EAAmBvU,EAAMhL,QACzB,wJAEAuf,EAAiB/mB,QACjB6mB,EAAmBE,EAAiBza,KAChC,8HAEJwa,EAAatU,EAAMhL,QACf,gIAGJuf,EAAmBvU,EAAMhL,QAAQ,wDACZxH,SACjB6mB,EAAmBE,EAAiBzd,SAAS,MAC7Cwd,EAAatU,EAAMhL,QAAQ,OAG/Bqf,EAAiB7mB,QAAU8mB,EAAW9mB,SACtC4G,EAAKogB,eAAiBH,EAAiBxO,MAAMyO,GAAc,GAE/D,IAAIG,EAAazU,EAAMhL,QACnB,iHAKJ,GAHKyf,EAAWjnB,SACZinB,EAAatkB,EAAE,8DAEfskB,EAAWjnB,OAAQ,CACnB,IAAIknB,EAAgBD,EAAW3a,KAC3B,mOAEJ,GAAI4a,EAAclnB,OACd4G,EAAKugB,cAAgB9M,SAAS6M,EAAclc,YACzC,CACH,IAAIoc,EAAsBH,EACrB3a,KAAK,yCACL+a,QACA/a,KAAK,mBACN8a,EAAoBpnB,QACpBonB,EAAoBvZ,MAAK,WAErB,IADA,IAAIyZ,EAA8B3kB,EAAE2C,MAAMgE,WACnCge,EAA4BtnB,QAC/BsnB,EAA8BA,EAA4Bhe,WAG9D,IADA4d,EAAgBvkB,EAAE+P,KAAK4U,EAA4BC,MAAMvc,SACvChL,QAkBtC,SAASwnB,MAAMC,GACX,OAAOpN,SAASoN,GAAK,IAAMpN,SAASoN,GAnBQD,CAAMN,GAE9B,OADAtgB,EAAKugB,cAAgB9M,SAAS6M,IACvB,MAM3B,IAAKtgB,EAAKugB,cAAe,CACrB,IAAIO,EAA0B/kB,EAAE,oDAAoD2J,KAChF,yBAEAob,EAAwB1nB,SACxB4G,EAAKugB,cAAgB9M,SAASqN,EAAwBxT,OAAS,IAS3E,SAASyS,wBAAwBtP,EAAS/Q,GACtC,IAAIM,EAAO,GACP4L,EAAQ7P,EAAE2C,MACVqiB,EAAgBnV,EAAMhL,QAAQ,iEAOlC,GANImgB,EAAc3nB,SACd4G,EAAKqe,IAAM0C,EAAcrb,KAAK,sBAAsB4H,MAC/CtN,EAAKqe,MACNre,EAAKghB,IAAMD,EAAcrb,KAAK,sBAAsB4H,SAGvDtN,EAAKqe,MAAQre,EAAKghB,IAAK,CACxB,IAAI5Y,EAAOwD,EAAM9Q,KAAK,QACtB,QAAmB,IAARsN,EAEPA,EADWwD,EAAMhL,QAAQ,KACb9F,KAAK,QAErB,GAAIsN,EAAK6Y,SAAS,OAAQ,CACtB,IAAI5C,EAAMjW,EAAKvC,MAAM,SAAS,GACb,IAAIrK,OAAO,iCACb2L,KAAKkX,GAChBre,EAAKqe,IAAMA,EAEXre,EAAKqe,IAAMA,EAAIS,UAAUT,EAAI/jB,QAAQ,KAAO,QAE7C,GAAI8N,EAAK6Y,SAAS,YAAa,CAClC,IAAID,EAAM5Y,EAAKvC,MAAM,aAAa,GAClC7F,EAAKghB,IAAMA,EAAIlC,UAAU,EAAGkC,EAAI1mB,QAAQ,OAIhD,OADA0lB,kBAAkBlmB,KAAK4E,KAAMsB,EAAMyQ,EAAS/Q,GACrCM,OAhHS,IAAT0a,IACc,oBAAVvR,OACPA,OAAO1G,UAAUuH,OAAM,WACnB6V,EAAmBnF,EAAOvR,gBAEI,IAApB7P,OAAOsmB,WACrBnd,SAAS+G,QAAQ,cAAc,WAC3BqW,EAAmBnF,EAAOoB,QApC1C,GAgJA/f,EAAE0G,UAAUuH,OAAM,WACdjO,EAAE,uBAAuBmE,OAAM,WAC3BnE,EAAE,oBAAoBuW,YAAY,UAClCvW,EAAE,kCAAkCuW,YAAY,oBAEpDvW,EAAE,mBAAmBmE,OAAM,WACvBnE,EAAE,yBAAyB2H,YAAY,UACvC3H,EAAE,cAAcmG,SAAS,eAE7BnG,EAAE,mGAAmGmE,OACjG,WACInE,EAAE,yBAAyBmG,SAAS,UACpCnG,EAAE,cAAc2H,YAAY,kBAIxC,SAAW3H,GACPA,EAAEC,GAAGklB,YAAc,SAAUzQ,GACzB1U,EAAEC,GAAGklB,YAAY5X,KAAKvN,EAAE2C,MAAO+R,IAEnC1U,EAAEue,OAAOve,EAAEC,GAAGklB,YAAa,CACvBC,SAAU,CAACC,OAAQ,SAAU1kB,SAAU,WAAY2kB,OAAQ,CAAC,SAAUC,QAAS,CAAC,WAAYhe,UAAU,GACtGmd,MAAO,KACPc,KAAM,KACNjY,KAAM,SAANA,KAAgBkY,EAAO/Q,GACnB/R,KAAK8iB,MAAQA,EACb9iB,KAAK+R,QAAU1U,EAAEue,OAAO,GAAI5b,KAAKyiB,SAAU1Q,GAC3C/R,KAAK+iB,aAETC,aAAc,SAAdA,aAAwBC,GACpB,IAAK,IAAI3pB,KAAK0G,KAAK+R,QAAQ6Q,QACvB,GAAIK,EAAIrd,GAAG5F,KAAK+R,QAAQ6Q,QAAQtpB,IAC5B,OAAO,GAInBypB,UAAW,SAAXA,YACI,IAAIG,EAAOljB,KACP8iB,EAAQI,EAAKJ,MACb/Q,EAAUmR,EAAKnR,QACfnN,EAAWmN,EAAQnN,SACnB8d,EAAS3Q,EAAQ2Q,OACrBI,EAAM7e,GAAG,gBAAiB8N,EAAQ/T,UAAU,SAAUuO,GAClD,GAAKA,EAAE4W,WAAYD,EAAKF,aAAa3lB,EAAE2C,OAAvC,CAQA,GALI3C,EAAE2C,MAAM6B,SAAS6gB,GACjBrlB,EAAE2C,MAAMgF,YAAY0d,GAEpBrlB,EAAE2C,MAAMwD,SAASkf,GAEjBnW,EAAE4W,UAAYD,EAAKL,KAAM,CACpBK,EAAKnB,QACNmB,EAAKnB,MAAQmB,EAAKL,MAEtB,IAAInS,EAAQwS,EAAKnB,MAAMhP,QACnBkP,EAAM5kB,EAAE2C,MAAM+S,QAClB,GAAIrC,EAAQuR,EAAK,CACb,IAAImB,EAAO1S,EACXA,EAAQuR,EACRA,EAAMmB,EAEV/lB,EAAE0U,EAAQ/T,SAAU8kB,GACf9d,YAAY0d,GACZvnB,MAAMuV,EAAOuR,EAAM,GACnB1Z,MAAK,WACG2a,EAAKF,aAAa3lB,EAAE2C,QACrB3C,EAAE2C,MAAMwD,SAASkf,MAG7B9nB,OAAOyoB,aAAezoB,OAAOyoB,eAAeC,kBAAoBvf,SAASwf,UAAU1d,aAC3E0G,EAAEiX,SAAYjX,EAAEkX,SACxBpmB,EAAE2C,MAAMiZ,WAAWjU,YAAY0d,GAEnCQ,EAAKL,KAAOxlB,EAAE2C,MACd3C,EAAEkjB,WAAW3b,IAAaA,EAASvH,EAAE0U,EAAQ/T,SAAW,IAAM0kB,EAAQI,QAE1EzlB,EAAE0G,UAAUE,GAAG,iBAAiB,SAAUsI,GACtC,IAAK,IAAIjT,KAAKyY,EAAQ4Q,OAAQ,CAC1B,IAAIA,EAAS5Q,EAAQ4Q,OAAOrpB,GAC5B,GAAI+D,EAAEkP,EAAEpB,QAAQvF,GAAG+c,IAAWtlB,EAAEkP,EAAEpB,QAAQ2U,QAAQ6C,GAAQjoB,OACtD,OAGRooB,EAAM9b,KAAK+K,EAAQ/T,UAAUuK,MAAK,WACzB2a,EAAKF,aAAa3lB,EAAE2C,QACrB3C,EAAE2C,MAAMgF,YAAY0d,MAG5BrlB,EAAEkjB,WAAW3b,IAAaA,EAASvH,EAAE0U,EAAQ/T,SAAW,IAAM0kB,EAAQI,OAE1EzlB,EAAE0G,UAAUE,GAAG,mBAAmB,SAAUsI,GACxC,GAAiB,IAAbA,EAAEmP,UAAkBnP,EAAEkX,SAAWlX,EAAEiX,SAQnC,OAPAnmB,EAAE0U,EAAQ/T,SAAU8kB,GAAOva,MAAK,WACvB2a,EAAKF,aAAa3lB,EAAE2C,QACrB3C,EAAE2C,MAAMwD,SAASkf,MAGzBrlB,EAAEkjB,WAAW3b,IAAaA,EAASvH,EAAE0U,EAAQ/T,SAAW,IAAM0kB,EAAQI,IACtEvW,EAAEsJ,kBACK,KAGfxY,EAAE0G,UAAUE,GAAG,iBAAiB,SAAUsI,GACrB,IAAbA,EAAEmP,UACFwH,EAAKnB,MAAQ,YAzFjC,CA8FGtX,QAEH7P,OAAO8oB,iBAAmB,SAAUhV,EAAMiV,GACtCtmB,EAAE,sCAAwCqR,GAAMlN,OAAM,WAClD,IAAI4N,EAAU,IAAI5D,EAAUsF,gBAC5B1B,EAAQsB,QACR,IAAIkT,EAAM,GACNC,EAAgBxmB,EAAE,wBAA0BqR,EAAO,oBACvDrR,EAAE,wBAA0BqR,EAAO,mCAAmCnG,MAAK,WACvEqb,EAAI/X,KAAKxO,EAAE2C,MAAMjC,WAErByN,EAAUsC,MAAM4I,KACZ,CACI9J,OAAQ,oBACRkX,UAAW,SACXC,MAAgB,QAATrV,EACPb,GAAI+V,EACJD,UAAWA,IAEf,SAAUriB,GACc,UAAhBA,EAAK0iB,OACLC,MAAM,4CACiB,iBAAhB3iB,EAAK0iB,OACZppB,OAAO6O,SAASL,QAAQ,oBACD,YAAhB9H,EAAK0iB,OACZva,SAASya,SAETL,EAAczhB,SAElBgN,EAAQyB,UAEZ,WACIoT,MAAM,4CACN7U,EAAQyB,cAMxBrF,EAAU2Y,wBAA0B,SAAUjY,EAAWvM,GACrD6L,EAAUS,OAAO7Q,KAAK4E,KAAMkM,EAAWvM,IAE3C6L,EAAU2Y,wBAAwB9X,UAAY,IAAIb,EAAUS,OAC5DT,EAAU2Y,wBAAwBtW,GAAK,oBACvCrC,EAAU2Y,wBAAwBvX,OAAS,mDAC3CpB,EAAU2Y,wBAAwB/V,QAAU,CACxCgW,SAAU,SAAVA,SAAoB7X,EAAGgB,GACnBhB,EAAEsJ,iBACF,IAAIzG,EAAU,IAAI5D,EAAUsF,gBAC5B1B,EAAQsB,QACR,IAAIiT,EAAYpW,EAAOvG,KAAK,oBAAoB4H,MAChDrB,EAAOf,OAAO,GAAI,CAAC4X,UAAU,EAAMT,UAAWA,IAAY,WACtDtmB,EAAE,kCAAkCmlB,cACpCnlB,EAAE,kCAAkCmlB,cACpCnlB,EAAE,0CAA0CmlB,cAC5CkB,iBAAiB,MAAOC,GACxBD,iBAAiB,MAAOC,GACxBtmB,EAAE,uCAAuCmE,OAAM,WAC3CnE,EAAE,iBAAiB2H,YAAY,UAC/B3H,EAAE,iBAAiBmG,SAAS,OAC5BnG,EAAE,QAAQmG,SAAS,qBAEvBnG,EAAE,uCAAuCmE,OAAM,WAC3CnE,EAAE,iBAAiB2H,YAAY,UAC/B3H,EAAE,iBAAiBmG,SAAS,OAC5BnG,EAAE,QAAQmG,SAAS,qBAEvB,IAOI6gB,EAPAC,EAAkB,SAAlBA,kBACAjnB,EAAE,iBAAiBmG,SAAS,UAC5BnG,EAAE,iBAAiB2H,YAAY,OAC/B3H,EAAE,iBAAiB2H,YAAY,OAC/B3H,EAAE,QAAQ2H,YAAY,mBAE1B3H,EAAE,yBAAyBmE,MAAM8iB,GAEjCjnB,EAAE,sBAAsBmE,OAAM,WAC1B,IAAIkN,EAAOrR,EAAE,iBAAiBwE,SAAS,OAAS,MAAQ,MACpDuN,EAAU,IAAI5D,EAAUsF,gBAC5B1B,EAAQsB,QACR,IAAIkT,EAAM,GACVvmB,EAAE,4DAA4DkL,MAAK,WAC/Dqb,EAAI/X,KAAKxO,EAAE2C,MAAMjC,WAErB,IAAI8lB,EAAgBxmB,EAAE,6CACtBinB,IACA9Y,EAAUsC,MAAM4I,KACZ,CACI9J,OAAQ,oBACRkX,UAAW,MACXjW,GAAI+V,EACJG,MAAgB,QAATrV,EACPiV,UAAWA,IAEf,SAAUriB,GACc,UAAhBA,EAAK0iB,OACLC,MAAM,0CACiB,iBAAhB3iB,EAAK0iB,OACZppB,OAAO6O,SAASL,QAAQ,oBACD,YAAhB9H,EAAK0iB,OACZva,SAASya,SAETL,EAActb,MAAK,WAEf8b,EAAS,QADTA,EAAShnB,EAAE2C,MAAMjC,OAAS,aACC,QAC3BV,EAAE,wBAA0BqR,EAAO,gBAAgBgE,QAAQ2R,MAGnEjV,EAAQyB,UAEZ,WACIoT,MAAM,0CACN7U,EAAQyB,aAIpBzB,EAAQyB,WAGhB0T,SAAU,SAAVA,SAAoBhY,EAAGgB,GACnBhB,EAAEsJ,kBAC8D,GAA5DxY,EAAE,+BAA+BU,OAAOnC,QAAQ,QAChDyB,EAAE,+BAA+BU,KAAK,2BAEtCV,EAAE,+BAA+BU,KAAK,2BAE1CV,EAAE,yCAAyCuW,YAAY,WAE3D4Q,cAAe,SAAfA,cAAyBjY,EAAGgB,GACxBhB,EAAEsJ,iBACF,IAAIzG,EAAU,IAAI5D,EAAUsF,gBACxBlT,EAAQ2P,EAAOvG,KAAK,uBAAuB4H,MAC/CpD,EAAUsC,MAAM4I,KACZ,CAAC9J,OAAQ,gBAAiBhP,MAAOA,IACjC,SAAU0D,GACNiM,EAAOvG,KAAK,6CAA6C4M,YAAY,UACrErG,EAAOvG,KAAK,8CAA8C4M,YAAY,UACtErG,EAAOvG,KAAK,0DAA0DhC,YAAY,gBAClFuI,EAAOvG,KAAK,6DAA6DxD,SAAS,gBAClF+J,EAAOvG,KAAK,iCAAiChC,YAAY,UACzD,IAEIyf,EAFAC,EAAenX,EAAOvG,KAAK,gDAC/B0d,EAAa7e,QAEb,IAAK,IAAIvM,EAAI,EAAGA,EAAIgI,EAAK5G,OAAQpB,IAC7BmrB,EAAS,WAAanjB,EAAKhI,GAAGqrB,IAAM,YAAcrjB,EAAKhI,GAAGsrB,MAAQ,aAClEF,EAAa5e,OAAO2e,GAExBrV,EAAQyB,UAEZ,WACItG,QAAQD,MAAM,2EACd8E,EAAQyB,WAIpBgU,QAAS,SAATA,QAAmBtY,EAAGgB,GACdA,EAAOvG,KAAK,6DAA6DnF,SAAS,kBACtF0L,EAAOvG,KAAK,6CAA6CxD,SAAS,UAClE+J,EAAOvG,KAAK,8CAA8ChC,YAAY,UACtEuI,EAAOvG,KAAK,0DAA0DhC,YAAY,gBAClFuI,EAAOvG,KAAK,6DAA6DxD,SAAS,gBAClF+J,EAAOvG,KAAK,iCAAiChC,YAAY,YAE7DkV,KAAM,SAANA,KAAgB3N,EAAGgB,GACXA,EAAOvG,KAAK,0DAA0DnF,SAAS,kBACnF0L,EAAOvG,KAAK,6CAA6ChC,YAAY,UACrEuI,EAAOvG,KAAK,8CAA8CxD,SAAS,UACnE+J,EAAOvG,KAAK,0DAA0DxD,SAAS,gBAC/E+J,EAAOvG,KAAK,6DAA6DhC,YAAY,gBACrFuI,EAAOvG,KAAK,iCAAiCxD,SAAS,YAE1D6L,MAAO,SAAPA,MAAiB9C,EAAGgB,GAChB,IAAI6B,EAAU,IAAI5D,EAAUsF,gBAC5B1B,EAAQsB,QACR,IAAIiT,EAAYpW,EAAOvG,KAAK,oBAAoB4H,MAChDpD,EAAUsC,MAAM4I,KACZ,CAAC9J,OAAQ,oBAAqBkX,UAAW,QAASH,UAAWA,IAC7D,SAAUriB,GACc,YAAhBA,EAAK0iB,OACLva,SAASya,SACc,iBAAhB5iB,EAAK0iB,OACZppB,OAAO6O,SAASL,QAAQ,oBACD,UAAhB9H,EAAK0iB,QACZC,MAAM,2BAEV7U,EAAQyB,UAEZ,WACIoT,MAAM,2BACN7U,EAAQyB,WAIpBiU,eAAgB,SAAhBA,eAA0BvY,EAAGgB,GACzB,IAAI6B,EAAU,IAAI5D,EAAUsF,gBAC5B1B,EAAQsB,QACR,IAAIiT,EAAYpW,EAAOvG,KAAK,oBAAoB4H,MAChDpD,EAAUsC,MAAM4I,KACZ,CAAC9J,OAAQ,oBAAqBkX,UAAW,OAAQH,UAAWA,IAC5D,SAAUriB,GACc,YAAhBA,EAAK0iB,OACLva,SAASya,SACc,iBAAhB5iB,EAAK0iB,OACZppB,OAAO6O,SAASL,QAAQ,oBACD,UAAhB9H,EAAK0iB,QACZC,MAAM,4BAEV7U,EAAQyB,UAEZ,WACIoT,MAAM,4BACN7U,EAAQyB,YAKxBrF,EAAU2Y,wBAAwBnd,KAAO,WACrC,IAAIoU,EAAU/d,EAAE,sBAAwBmO,EAAU2Y,wBAAwBtW,GAAK,MAC/E,OAAIuN,EAAQ1gB,OAAS,IAGrB0gB,EAAU/d,EAAE,iBAAmBmO,EAAU2Y,wBAAwBtW,GAAK,OAC1DnT,OAAS,EAHV0gB,EAMJ/d,EAAE,IAAMmO,EAAU2Y,wBAAwBtW,KAErDrC,EAAU2Y,wBAAwB9X,UAAUD,kBAAoB,WAC5DpR,OAAOqgB,eAAe7P,EAAU2Y,wBAAwB9X,WAAWD,kBAAkBhR,KAAK4E,OAE9FwL,EAAUqB,QAAQnB,SAASF,EAAU2Y,yBAErC9mB,EAAE0G,UAAUuH,OAAM,WACdjO,EAAE,kCAAkC4G,GAAG,SAAS,WAC5C,IAAI8gB,EAAM1nB,EAAE,oCAAoCiE,KAAK,YACrDjE,EAAE,0CAA4C0nB,EAAM,KAAKnR,YAAY,UACrE,IAAIrb,EAAI8E,EAAE2C,MAAMgH,KAAK,KACrBzO,EAAEwF,KAAkB,SAAbxF,EAAEwF,OAAoB,WAAa,QAC1C,IAAIuI,EAAQjJ,EAAE2C,MAAMgH,KAAK,OACzBV,EAAMsN,YAAY,cAClBtN,EAAMsN,YAAY,kBAI1B9D,EAASC,KAAQ,WACb,IACIiV,EAGAC,EAJA/c,EAAW,GAEX0D,EAAY,GACZsZ,EAAY,GAGhB,SAASC,eAAeC,GACpB7a,QAAQC,IAAI,2CACZxP,OAAOC,KAAK2Q,GAAWzP,SAAQ,SAAUuE,GACrCoP,EAASC,KAAKhE,OAAOrL,EAAK0kB,MAE9BJ,EAAWI,EA6Sf,OA1SAld,EAASmd,QAAU,WACf7Z,EAAUsC,MAAM4I,KAAK,CAAC9J,OAAQ,YAAauY,eAAgBF,IAE/D/c,EAASod,SAAW,CAChB5W,KAAM,WACN6W,MAAO,SAAPA,MAAiBC,EAAOC,GACpBja,EAAUsC,MAAM4I,KACZ,CACI9J,OAAQ,gBACR4Y,MAAOA,EACPC,sBAAuBA,GAE3B3V,EAASC,KAAKuV,SAASD,QACvBJ,IAGRjM,MAAO,SAAPA,MAAiBwM,EAAOzL,GACpBvO,EAAUsC,MAAM4I,KACZ,CACI9J,OAAQ,UACR4Y,MAAOA,EACPzL,SAAUA,GAEdjK,EAASC,KAAKuV,SAASD,QACvBJ,IAGRS,aAAc,SAAdA,aAAwBF,GACpBha,EAAUsC,MAAM4I,KAAK,CAAC9J,OAAQ,WAAY4Y,MAAOA,GAAQ1V,EAASC,KAAKuV,SAASD,QAASJ,IAE7FU,MAAO,SAAPA,QACIna,EAAUsC,MAAM4I,KAAK,CAAC9J,OAAQ,mBAAoBkD,EAASC,KAAKuV,SAASD,QAASJ,IAEtFI,QAAS,SAATA,QAAmBL,GACflV,EAASC,KAAKhE,OAAO+D,EAASC,KAAKuV,SAAUN,IAEjDY,QAAS,SAATA,QAAmBR,GACf,OAAmB,MAAZJ,GAAoBA,EAASa,cAAgBT,EAAgBS,eAG5E3d,EAASsQ,WAAa,CAClB9J,KAAM,aACNoX,QAAS,SAATA,QAAmBC,GACfva,EAAUsC,MAAM4I,KAAK,CAAC9J,OAAQ,YAAaiB,GAAIkY,GAASjW,EAASC,KAAKyI,WAAW6M,QAASJ,IAE9F7iB,OAAQ,SAARA,OAAkB2jB,GACdva,EAAUsC,MAAM4I,KACZ,CACI9J,OAAQ,iBACRiB,GAAIkY,GAERjW,EAASC,KAAKyI,WAAW6M,QACzBJ,IAGRe,iBAAkB,SAAlBA,iBAA4BD,GACxBva,EAAUsC,MAAM4I,KACZ,CAAC9J,OAAQ,mBAAoBiB,GAAIkY,IACjC,SAAUf,GACNlV,EAASC,KAAKhE,OAAO,oBAAqBiZ,KAE9CC,IAGRgB,iBAAkB,SAAlBA,iBAA4BF,GACxBva,EAAUsC,MAAM4I,KACZ,CAAC9J,OAAQ,mBAAoBiB,GAAIkY,IACjC,SAAUf,GACNlV,EAASC,KAAKhE,OAAO,oBAAqBiZ,KAE9CC,IAGRiB,eAAgB,SAAhBA,eAA0BH,EAAQI,EAAiBC,GAC/C5a,EAAUsC,MAAM4I,KACZ,CACI9J,OAAQ,iBACRiB,GAAIkY,EACJI,gBAAiBA,EACjBC,iBAAkBA,IAEtB,SAAUpB,GACNlV,EAASC,KAAKhE,OAAO,iBAAkBiZ,KAE3ClV,EAASC,KAAKyI,WAAW6M,QACzBJ,IAGRI,QAAS,SAATA,QAAmBL,GACflV,EAASC,KAAKhE,OAAO+D,EAASC,KAAKyI,WAAYwM,IAEnDY,QAAS,SAATA,QAAmBR,GACf,OAAmB,MAAZJ,GAAoBA,EAASqB,gBAAkBjB,EAAgBiB,iBAG9Ene,EAASoe,cAAgB,CACrB5X,KAAM,gBACNiI,QAAS,SAATA,QAAmB6O,GACfha,EAAUsC,MAAM4I,KACZ,CACI9J,OAAQ,uBACR4Y,MAAOA,GAEX1V,EAASC,KAAKuW,cAAcjB,QAC5BJ,IAGRI,QAAS,SAATA,QAAmBL,GACflV,EAASC,KAAKhE,OAAO+D,EAASC,KAAKuW,cAAetB,IAEtDY,QAAS,SAATA,QAAmBR,GACf,OAAO,IAGfld,EAASqQ,UAAY,CACjB7J,KAAM,YACNiQ,MAAO,SAAPA,MAAiB4H,GACb/a,EAAUsC,MAAM4I,KACZ,CACI9J,OAAQ,gBACR4Z,SAAUD,GAEdzW,EAASC,KAAKwI,UAAU8M,QACxBJ,IAGR7iB,OAAQ,SAARA,OAAkBmkB,GACd/a,EAAUsC,MAAM4I,KACZ,CACI9J,OAAQ,iBACR4Z,SAAUD,GAEdzW,EAASC,KAAKwI,UAAU8M,QACxBJ,IAGRrkB,OAAQ,SAARA,OAAkB2lB,GACd/a,EAAUsC,MAAM4I,KACZ,CACI9J,OAAQ,iBACR4Z,SAAUD,GAEdzW,EAASC,KAAKwI,UAAU8M,QACxBJ,IAGRpkB,QAAS,SAATA,QAAmB0lB,GACf/a,EAAUsC,MAAM4I,KACZ,CACI9J,OAAQ,kBACR4Z,SAAUD,GAEdzW,EAASC,KAAKwI,UAAU8M,QACxBJ,IAGRI,QAAS,SAATA,QAAmBL,GACflV,EAASC,KAAKhE,OAAO+D,EAASC,KAAKwI,UAAWyM,IAElDY,QAAS,SAATA,QAAmBR,GACf,OAAmB,MAAZJ,GAAoBA,EAASyB,UAAYrB,EAAgBqB,WAGxEve,EAASwe,QAAU,CACfhY,KAAM,UACN2W,QAAS,SAATA,UACIvV,EAASC,KAAKhE,OAAO+D,EAASC,KAAK2W,QAAS1B,IAEhDY,QAAS,SAATA,QAAmBR,GACf,OAAmB,MAAZJ,GAAoBA,EAASyB,UAAYrB,EAAgBqB,WAGxEve,EAASye,SAAW,CAChBjY,KAAM,WACNzJ,OAAQ,SAARA,OAAkB0J,GACd,IAAIgI,EAAU,GACdtZ,EAAEue,OAAOjF,EAAS,CAAC/J,OAAQ,yBAA0B+B,GACrDnD,EAAUsC,MAAM4I,KAAKC,EAAS7G,EAASC,KAAK4W,SAAStB,QAASJ,IAElE2B,iBAAkB,SAAlBA,iBAA4B5O,EAAS7L,EAAOvH,GACxC4G,EAAUsC,MAAM4I,KAAK,CAAC9J,OAAQ,mBAAoBoL,QAASA,EAAS7L,MAAOA,GAAQvH,IAEvFygB,QAAS,SAATA,QAAmBL,GACflV,EAASC,KAAKhE,OAAO+D,EAASC,KAAK4W,SAAU3B,IAEjDY,QAAS,SAATA,QAAmBR,GACf,OACgB,MAAZJ,GACAA,EAAS6B,cAAgBzB,EAAgByB,cACzC7B,EAASqB,gBAAkBjB,EAAgBiB,iBAIvDne,EAAS4e,IAAM,CACXpY,KAAM,MACNzJ,OAAQ,SAARA,OAAkB0J,GACd,IAAIgI,EAAU,GACdtZ,EAAEue,OAAOjF,EAAS,CAAC/J,OAAQ,aAAc+B,GACzCnD,EAAUsC,MAAM4I,KAAKC,EAAS7G,EAASC,KAAK+W,IAAIzB,QAASJ,IAE7DI,QAAS,SAATA,QAAmBL,GACflV,EAASC,KAAKhE,OAAO+D,EAASC,KAAK+W,IAAK9B,IAE5CY,QAAS,SAATA,QAAmBR,GACf,OAAmB,MAAZJ,GAAoBA,EAASyB,UAAYrB,EAAgBqB,WAGxEve,EAASuQ,QAAU,CACf/J,KAAM,UACNzJ,OAAQ,SAARA,OAAkB0J,GACd,IAAIgI,EAAU,GACdtZ,EAAEue,OAAOjF,EAAS,CAAC/J,OAAQ,wBAAyB+B,GACpDnD,EAAUsC,MAAM4I,KAAKC,EAAS7G,EAASC,KAAK0I,QAAQ4M,QAASJ,IAEjEI,QAAS,SAATA,QAAmBL,GACflV,EAASC,KAAKhE,OAAO+D,EAASC,KAAK0I,QAASuM,IAEhDY,QAAS,SAATA,QAAmBR,GACf,OAAmB,MAAZJ,GAAoBA,EAAS+B,aAAe3B,EAAgB2B,cAG3E7e,EAAS8e,WAAa,CAClBtY,KAAM,aACNuY,SAAU,SAAVA,SAAoBlB,GAChBva,EAAUsC,MAAM4I,KAAK,CAAC9J,OAAQ,WAAYiB,GAAIkY,GAASjW,EAASC,KAAKiX,WAAW3B,QAASJ,IAE7FiC,UAAW,SAAXA,UAAqBvH,GACjBnU,EAAUsC,MAAM4I,KAAK,CAAC9J,OAAQ,WAAY+S,IAAKA,GAAM7P,EAASC,KAAKiX,WAAW3B,QAASJ,IAE3F7iB,OAAQ,SAARA,OAAkByL,GACdrC,EAAUsC,MAAM4I,KAAK,CAAC9J,OAAQ,kBAAmBiB,GAAIA,GAAKiC,EAASC,KAAKiX,WAAW3B,QAASJ,IAEhGI,QAAS,SAATA,QAAmBL,GACflV,EAASC,KAAKhE,OAAO+D,EAASC,KAAKiX,WAAYhC,IAEnDY,QAAS,SAATA,QAAmBR,GACf,OAAmB,MAAZJ,GAAoBA,EAASmC,gBAAkB/B,EAAgB+B,iBAG9Ejf,EAASwD,SAAW,SAAUmE,EAASjL,GAEnC,GADA2F,QAAQC,IAAI,wCAA0CqF,EAAQnB,KAAO,gBACjEmB,EAAS,CACT,IAAIuX,EAAiC,iBAAZvX,EAAuBA,EAAUA,EAAQnB,KAC7D9C,EAAUwb,KACXxb,EAAUwb,GAAe,IAE7Bxb,EAAUwb,GAAavb,KAAKjH,KAGpCsD,EAAS6D,OAAS,SAAU8D,EAASuV,GACjC,GAAIA,EAAiB,CACjB,GAAIA,EAAgBiC,eAEhB,YADA5d,SAASya,SAGb,GAAIc,GACIA,EAASsC,aAAelC,EAAgBkC,YAExC,YADA7d,SAASya,SAMrB,IAAItW,EAAS,GACTwZ,EAAiC,iBAAZvX,EAAuBA,EAAUA,EAAQnB,KAClEnE,QAAQC,IAAI,8BAAgC4c,EAAc,kBAE/B,iBAAhBA,GACNvX,GAAWA,EAAQ+V,SAAW/V,EAAQ+V,QAAQR,IAC/C5Z,EAAUsC,MAAMuJ,cAAc+N,EAAgBppB,cAE1C4P,EAAUwb,IACVxb,EAAUwb,GAAajrB,SAAQ,SAAU6P,GACrC,IAAIrL,EAAQqL,EAASoZ,GACrBxX,EAAO/B,KAAKlL,MAIxB,IAAI4mB,EAAQrC,EACZ7nB,EAAEsT,KAAKgO,MAAMthB,EAAGuQ,GAAQgD,MAAK,WACzB2W,EAAMprB,SAAQ,SAAUyI,GACpBA,UAGRkL,EAASC,KAAKyX,iBACVpC,IACAJ,EAAWI,IAGnBld,EAASuf,gBAAkB,SAAUC,GACjCzC,EAAeyC,GAEnBxf,EAASyf,YAAc,SAAU/iB,GAC7BsgB,EAAUrZ,KAAKjH,IAEnBsD,EAASsf,eAAiB,WACtBtC,EAAY,IAEThd,EAzTM,GA2TjBqC,QAAQC,IAAI,6BACZsF,EAAS8X,WAAc,WACnB,IAAI1f,EAAW,GACX2f,EAAqB,GA0EzB,OAzEAA,EAAyB,KAAI,IAAI/qB,OAAO,6BACxC+qB,EAA+B,WAAI,IAAI/qB,OAAO,wBAC9C+qB,EAAyB,KAAI,IAAI/qB,OAAO,oBACxC+qB,EAA2B,OAAI,IAAI/qB,OAAO,oCAC1C+qB,EAA6B,SAAI,IAAI/qB,OAAO,iCAC5C+qB,EAAwB,IAAI,IAAI/qB,OAAO,mCACvC+qB,EAA4B,QAAI,IAAI/qB,OAAO,+DAC3CoL,EAAS4f,WAAa,SAAUnnB,EAAOhB,GACnC,IAAIooB,EAASpnB,EAAMjE,MAAM,OACzB,IAAKqrB,EAAQ,OAAO,EACpBpnB,EAAQonB,EAAO/f,KAAK,IACpB,IAAIggB,GAAU,EAQd,OAPA3qB,EAAEsC,GAASuC,QAAQ,gBAAgBgN,KAAK,QAAS,yBACjDlU,OAAOC,KAAK4sB,GAAoB1rB,SAAQ,SAAU8rB,GAC1CJ,EAAmBI,GAAGxf,KAAK9H,IAAUqnB,GAAW,QAAQvf,KAAKpL,EAAE,eAAeuR,SAC9EoZ,GAAU,EACV3qB,EAAEsC,GAASuC,QAAQ,gBAAgBsB,SAASykB,OAG7CD,GAEX9f,EAASggB,eAAiB,SAAUvnB,EAAOhB,EAASgP,GAChD,IAAIwZ,EAAc,IAAIhJ,KAClBiJ,EAAeD,EAAYE,SAAS,GAAK,EACzCC,EAAcH,EAAYI,cAC1BC,EAAc7Z,EAAK3H,KAAK,qBAAqB4H,MAC7C6Z,EAAa9Z,EAAK3H,KAAK,oBAAoB4H,MAC3C8Z,EAAc3T,SAASyT,GACvBG,EAAa5T,SAAS0T,GACtBG,EAAa,IAAIzJ,KAGrB,OAFAyJ,EAAWC,SAASH,EAAc,GAClCE,EAAWE,QAAQH,GACD,QAAdA,GAAuC,MAAfD,IACxBJ,EAAcK,IAGdP,EAAeM,GAA8B,MAAfF,GAG3BI,EAAaT,KAExBjgB,EAAS6gB,SAAW,SAAUpoB,GAC1B,OAAQA,GAEZuH,EAAS8gB,SAAW,SAAUra,GAC1B,IAAIM,EAAQ,KACR+Y,GAAU,EAUd,OARI/Y,EADAN,aAAgBlE,OACRkE,EAEAtR,EAAEsR,IAER3H,KAAK,wBAAwBuB,MAAK,WACpC,IAAI2E,EAAQ7P,EAAE2C,MACdgoB,EAAUlY,EAAS8X,WAAWqB,cAAc/b,EAAO+B,IAAU+Y,KAE1DA,GAEX9f,EAAS+gB,cAAgB,SAAUC,EAAOva,GACtC,IAAIwa,EAAS,KAMTC,GAJAD,EADAD,aAAiBze,OACRye,EAEA7rB,EAAE6rB,IAEY5nB,KAAK,YAGhC,OAAO+nB,EAFSnhB,EAASkhB,IACbD,EAAOva,MACKua,EAAQxa,IAEpCzG,EAASohB,aAAe,SAAU3oB,GAC9B,OAAQ,eAAe8H,KAAK9H,IAEzBuH,EA5EY,GA8EvB4H,EAASyZ,aAAe,SAAU5pB,GAC1BA,aAAmB8K,OACnBzK,KAAKqF,SAAW1F,EAEhBK,KAAKqF,SAAWhI,EAAEsC,GAEtBK,KAAKwpB,GAAKnsB,EAAE2C,KAAKqF,SAAS2B,KAAK,OAEnC8I,EAASyZ,aAAaE,MAAQ,IAAI3Z,EAASyZ,aAAa,eACxDzZ,EAASyZ,aAAald,UAAU/J,KAAO,WACnCtC,KAAKqF,SAAS/C,QAElBwN,EAASyZ,aAAald,UAAUqd,SAAW,WACvC1pB,KAAKqF,SAAS7C,IAAI,UAAW,SAEjCsN,EAASyZ,aAAalhB,IAAM,SAAU1I,GAClC,OAAO,IAAImQ,EAASyZ,aAAa5pB,IAErCmQ,EAASyZ,aAAahZ,OAAS,SAAU5Q,GAKrC,OAJMA,aAAmB8K,SACrB9K,EAAUtC,EAAEsC,IAEhBA,EAAQ5B,KAAK,WACN,IAAI+R,EAASyZ,aAAa5pB,IAErCmQ,EAASyZ,aAAald,UAAU1H,KAAO,WACnC3E,KAAKqF,SAAS7B,SAAS,WAE3BsM,EAASyZ,aAAald,UAAUgD,MAAQ,WACpCrP,KAAKwpB,GAAGxkB,YAAY,mBACpBhF,KAAKwpB,GAAGxkB,YAAY,eACpBhF,KAAKqF,SAAS7B,SAAS,WAE3BsM,EAASyZ,aAAald,UAAU/B,MAAQ,WACpCtK,KAAKwpB,GAAGxkB,YAAY,mBACpBhF,KAAKwpB,GAAGhmB,SAAS,eACjBxD,KAAKwpB,GAAG7jB,OAAO,oBAAoBnC,SAAS,mBAEhDsM,EAASyZ,aAAald,UAAUsd,QAAU,WACtC3pB,KAAKwpB,GAAGxkB,YAAY,mBACpBhF,KAAKwpB,GAAGhmB,SAAS,gBAErBsM,EAASyZ,aAAald,UAAUud,KAAO,WACnC5pB,KAAKwpB,GAAGxkB,YAAY,eACpBhF,KAAKwpB,GAAGhmB,SAAS,oBAErBsM,EAASyZ,aAAald,UAAUiF,WAAa,SAAUN,GACnDhR,KAAKwpB,GAAGzrB,KAAKiT,IAEjBlB,EAAS+Z,kBAAoB,SAAUlqB,GAC/BA,aAAmB8K,OACnBzK,KAAKqF,SAAW1F,EAEhBK,KAAKqF,SAAWhI,EAAEsC,GAEtBK,KAAKmZ,SAAW9b,EAAE2C,KAAKqF,SAAS2B,KAAK,aACrChH,KAAK8pB,OAASzsB,EAAE2C,KAAKqF,SAAS2B,KAAK,WACnChH,KAAK+pB,MAAQ1sB,EAAE2C,KAAKqF,SAAS2B,KAAK,iBAEtC8I,EAAS+Z,kBAAkBxd,UAAU/J,KAAO,WACpCtC,KAAKmZ,SAASzT,OAAOhL,OAAS,EAC9BsF,KAAK+pB,MAAM/kB,YAAY,UAEvBhF,KAAK+pB,MAAMvmB,SAAS,WAG5BsM,EAAS+Z,kBAAkBxhB,IAAM,SAAU1I,GACvC,OAAO,IAAImQ,EAAS+Z,kBAAkBlqB,IAE1CmQ,EAAS+Z,kBAAkBxd,UAAU1H,KAAO,WACxC3E,KAAK+pB,MAAMvmB,SAAS,WAExBsM,EAAS+Z,kBAAkBxd,UAAU/B,MAAQ,WACzCtK,KAAK8pB,OAAO9kB,YAAY,WACxBhF,KAAK8pB,OAAO9kB,YAAY,QACxBhF,KAAK8pB,OAAOtmB,SAAS,UAEzBsM,EAAS+Z,kBAAkBxd,UAAUsd,QAAU,WAC3C3pB,KAAK8pB,OAAO9kB,YAAY,SACxBhF,KAAK8pB,OAAO9kB,YAAY,QACxBhF,KAAK8pB,OAAOtmB,SAAS,YAEzBsM,EAAS+Z,kBAAkBxd,UAAUud,KAAO,WACxC5pB,KAAK8pB,OAAO9kB,YAAY,WACxBhF,KAAK8pB,OAAO9kB,YAAY,SACxBhF,KAAK8pB,OAAOtmB,SAAS,SAEzBsM,EAAS+Z,kBAAkBxd,UAAUgD,MAAQ,WACzCrP,KAAK2E,OACL3E,KAAK8pB,OAAO9kB,YAAY,WACxBhF,KAAK8pB,OAAO9kB,YAAY,SACxBhF,KAAK8pB,OAAO9kB,YAAY,QACxBhF,KAAKsR,WAAW,KAEpBxB,EAAS+Z,kBAAkBxd,UAAUiF,WAAa,SAAUN,GACxDhR,KAAKmZ,SAASpb,KAAKiT,IAEvBlB,EAASka,iBAAmB,SAAU9d,EAAWvM,GAC7C6L,EAAUS,OAAO7Q,KAAK4E,KAAMkM,EAAWvM,GACvCK,KAAK0L,SAASoE,EAASC,KAAKyI,YAC5BxY,KAAK0L,SAASoE,EAASC,KAAKwI,WAC5BvY,KAAK0L,SAASoE,EAASC,KAAKiX,YAC5BhnB,KAAK0L,SAASoE,EAASC,KAAK2W,SAC5B1mB,KAAK0L,SAAS,qBACd1L,KAAK0L,SAAS,qBACd1L,KAAK0L,SAAS,mBAElBoE,EAASka,iBAAiB3d,UAAY,IAAIb,EAAUS,OACpD6D,EAASka,iBAAiBnc,GAAK,qCAC/BiC,EAASka,iBAAiBpd,OAAS,mCACnCkD,EAASka,iBAAiBta,cAAgB,CAACka,KAAM9Z,EAASyZ,cAC1DzZ,EAASka,iBAAiB5b,QAAU,CAChC6b,cAAe,SAAfA,cAAyB1d,EAAGgB,GACxB,IAAI6B,EAAU,IAAI5D,EAAUsF,gBAC5B1B,EAAQsB,QACRZ,EAASC,KAAK4X,YAAYvY,EAAQyB,MAClCtE,EAAEsJ,iBACF/F,EAASC,KAAKwI,UAAUoG,MAAMpR,EAAOvG,KAAK,0BAA0B4H,QAExEsb,eAAgB,SAAhBA,eAA0B3d,GACtB,IAAI6C,EAAU,IAAI5D,EAAUsF,gBAC5B1B,EAAQsB,QACRZ,EAASC,KAAK4X,YAAYvY,EAAQyB,MAClCtE,EAAEsJ,iBACF/F,EAASC,KAAKwI,UAAUnW,OAAO/E,EAAE2C,MAAMsB,KAAK,cAEhD6oB,gBAAiB,SAAjBA,gBAA2B5d,GACvB,IAAI6C,EAAU,IAAI5D,EAAUsF,gBAC5B1B,EAAQsB,QACRZ,EAASC,KAAK4X,YAAYvY,EAAQyB,MAClCtE,EAAEsJ,iBACF/F,EAASC,KAAKwI,UAAU1X,QAAQxD,EAAE2C,MAAMsB,KAAK,cAEjD8oB,eAAgB,SAAhBA,eAA0B7d,GACtB,IAAI6C,EAAU,IAAI5D,EAAUsF,gBAC5B1B,EAAQsB,QACRZ,EAASC,KAAK4X,YAAYvY,EAAQyB,MAClCtE,EAAEsJ,iBACF/F,EAASC,KAAKwI,UAAU3X,OAAOvD,EAAE2C,MAAMsB,KAAK,cAEhD+oB,SAAU,SAAVA,SAAoB9d,GAChB,IAAI6C,EAAU,IAAI5D,EAAUsF,gBAC5B1B,EAAQsB,QACRZ,EAASC,KAAK4X,YAAYvY,EAAQyB,MAClCtE,EAAEsJ,iBACF,IAAIkQ,EAAS1oB,EAAE2C,MAAMsB,KAAK,WACtBykB,EACAjW,EAASC,KAAKiX,WAAWC,SAASlB,GAElCjW,EAASC,KAAKiX,WAAWE,UAAU7pB,EAAE2C,MAAMsB,KAAK,cAGxDgpB,WAAY,SAAZA,WAAsB/d,GAClB,IAAI6C,EAAU,IAAI5D,EAAUsF,gBAC5B1B,EAAQsB,QACRZ,EAASC,KAAK4X,YAAYvY,EAAQyB,MAClCtE,EAAEsJ,iBACF/F,EAASC,KAAKyI,WAAWpW,OAAO/E,EAAE2C,MAAMsB,KAAK,aAEjD2kB,iBAAkB,SAAlBA,iBAA4B1Z,GACxB,IAAI6C,EAAU,IAAI5D,EAAUsF,gBAC5B1B,EAAQsB,QACRZ,EAASC,KAAK4X,YAAYvY,EAAQyB,MAClCtE,EAAEsJ,iBACF/F,EAASC,KAAKyI,WAAWyN,iBAAiB5oB,EAAE2C,MAAMsB,KAAK,aAE3D0kB,iBAAkB,SAAlBA,iBAA4BzZ,GACxB,IAAI6C,EAAU,IAAI5D,EAAUsF,gBAC5B1B,EAAQsB,QACRZ,EAASC,KAAK4X,YAAYvY,EAAQyB,MAClCtE,EAAEsJ,iBACF/F,EAASC,KAAKyI,WAAWwN,iBAAiB3oB,EAAE2C,MAAMsB,KAAK,aAE3D4kB,eAAgB,SAAhBA,eAA0B3Z,GACtB,IAAI4Z,EAAkB9oB,EAAE2C,MAAM2F,SAASqB,KAAK,aAAa5K,KAAK,SAC1DgqB,EAAmB/oB,EAAE2C,MAAM2F,SAASqB,KAAK,aAAa4H,MACtD2b,EAAwBltB,EAAE2C,MAAM5D,KAAK,wBACzC,GAAIouB,OAAOpE,GAAoB,GAAKoE,OAAOpE,GAAoBoE,OAAOD,GAClEltB,EAAE2C,MAAM2F,SAASqB,KAAK,0BAA0BhC,YAAY,eAG5D,GADA3H,EAAE2C,MAAM2F,SAASqB,KAAK,0BAA0BxD,SAAS,UACrD2iB,GAAmBC,EAAkB,CACrC,IAAIhX,EAAU,IAAI5D,EAAUsF,gBAC5B1B,EAAQsB,QACRZ,EAASC,KAAK4X,YAAYvY,EAAQyB,MAClCtE,EAAEsJ,iBACF/F,EAASC,KAAKyI,WAAW0N,eAAe7oB,EAAE2C,MAAMsB,KAAK,WAAY6kB,EAAiBC,MAKlGtW,EAASka,iBAAiB3d,UAAUgD,MAAQ,WACxCrU,OAAOqgB,eAAevL,EAASka,iBAAiB3d,WAAWgD,MAAMjU,KAAK4E,MACtEA,KAAKgH,KAAK,0BAA0BhC,YAAY,YAChDhF,KAAKgH,KAAK,2BAA2BrC,OACrC3E,KAAKgH,KAAK,0BAA0BrC,QAExCmL,EAASka,iBAAiBxc,aAAe,CACrCid,cAAe,SAAfA,cAAyBzZ,EAASzD,GAC9BA,EAAOvG,KAAK,0BAA0BrC,OACtC4I,EAAOvG,KAAK,0BAA0BxD,SAAS,YAC/C,IAAIknB,EAASnd,EAAOvG,KAAK,2BACzB0jB,EAAO3sB,KAAKiT,GACZ0Z,EAAOpoB,QAEXqoB,aAAc,SAAdA,aAAwB3Z,EAASzD,GAC7BA,EAAOvG,KAAK,2BAA2BrC,OACvC4I,EAAOvG,KAAK,0BAA0BhC,YAAY,YAClD,IAAI4lB,EAAQrd,EAAOvG,KAAK,0BACxB4jB,EAAM7sB,KAAKiT,GACX4Z,EAAMtoB,QAEVkkB,SAAU,SAAVA,SAAoBxV,EAASzD,GACzBlQ,EAAEkQ,EAAOvG,KAAK,4BAA4B4H,IAAIoC,IAElD6Z,eAAgB,SAAhBA,eAA0B7Z,EAASzD,GAC/B,IAAIoC,EAAepC,EAAOkC,gBAAgB,QACtCE,IACAA,EAAarF,QACbqF,EAAa2B,WAAWN,GACxBrB,EAAarN,SAGrBgI,MAAO,SAAPA,MAAiB0G,EAASzD,GACtB,IAAIoC,EAAepC,EAAOkC,gBAAgB,QACtCE,IACAA,EAAarF,QACbqF,EAAa2B,WAAWN,GACxBrB,EAAarN,UAIzBwN,EAASka,iBAAiB3d,UAAUD,kBAAoB,WACpDpR,OAAOqgB,eAAevL,EAASka,iBAAiB3d,WAAWD,kBAAkBhR,KAAK4E,MAClF,IAAIuN,EAASvN,KACT8qB,EAAe9qB,KAAKgH,KAAK,0CACzB+jB,EAAiB/qB,KAAKgH,KAAK,0BAC/B+jB,EAAe9mB,GAAG,SAAS,WACvB,GAAI8mB,EAAenc,MACfkc,EAAatnB,SAAS,WACtBsnB,EAAa5b,KAAK,YAAY,OAC3B,CACH4b,EAAa9lB,YAAY,WACzB8lB,EAAa5b,KAAK,YAAY,GAC9B3B,EAAOvG,KAAK,2BAA2BrC,OACvC4I,EAAOvG,KAAK,0BAA0BhC,YAAY,YAClD,IAAI4lB,EAAQrd,EAAOvG,KAAK,0BACxB4jB,EAAM7sB,KAAKiT,SACX4Z,EAAMtoB,YAIlBwN,EAASka,iBAAiBhjB,KAAO,WAC7B,IAAIoU,EAAU/d,EAAE,sBAAwByS,EAASka,iBAAiBnc,GAAK,MACvE,OAAIuN,EAAQ1gB,OAAS,EACV0gB,EAEJ/d,EAAE,IAAMyS,EAASka,iBAAiBnc,KAE7CrC,EAAUqB,QAAQnB,SAASoE,EAASka,kBACpCla,EAASkb,iBAAmB,SAAU9e,EAAWvM,GAC7C6L,EAAUS,OAAO7Q,KAAK4E,KAAMkM,EAAWvM,GACvCK,KAAK0L,SAASoE,EAASC,KAAKyI,YAC5BxY,KAAK0L,SAASoE,EAASC,KAAKiX,YAC5BhnB,KAAK0L,SAASoE,EAASC,KAAKuV,WAEhCxV,EAASkb,iBAAiB3e,UAAY,IAAIb,EAAUS,OACpD6D,EAASkb,iBAAiBnd,GAAK,4CAC/BiC,EAASkb,iBAAiBpe,OAAS,kCACnCkD,EAASkb,iBAAiBtb,cAAgB,CAACka,KAAM9Z,EAASyZ,cAC1DzZ,EAASkb,iBAAiB5c,QAAU,CAChCic,SAAU,SAAVA,SAAoB9d,GAChB,IAAI6C,EAAU,IAAI5D,EAAUsF,gBAC5B1B,EAAQsB,QACRZ,EAASC,KAAK4X,YAAYvY,EAAQyB,MAClCtE,EAAEsJ,iBACF,IAAIkQ,EAAS1oB,EAAE2C,MAAMsB,KAAK,WACtBykB,EACAjW,EAASC,KAAKiX,WAAWC,SAASlB,GAElCjW,EAASC,KAAKiX,WAAWE,UAAU7pB,EAAE2C,MAAMsB,KAAK,cAGxD2pB,gBAAiB,SAAjBA,gBAA2B1e,EAAGgB,GAC1B,IAAI6B,EAAU,IAAI5D,EAAUsF,gBAC5B1B,EAAQsB,QACRZ,EAASC,KAAK4X,YAAYvY,EAAQyB,MAClCtE,EAAEsJ,iBACF/F,EAASC,KAAKiX,WAAW5kB,OAAO/E,EAAE2C,MAAMsB,KAAK,aAEjD4pB,OAAQ,SAARA,OAAkB3e,GACdA,EAAEsJ,iBACFxY,EAAE2C,MAAMkC,QAAQ,gBAAgB0R,YAAY,UAC5C,IAAIuX,EAAkB9tB,EAAE2C,MAAMgb,KAAK,iBAAiBpV,GAAG,YAEvD,GADAvI,EAAE,iBAAiB6a,WACdiT,EAAiB,CAClB9tB,EAAE2C,MAAMgb,KAAK,iBAAiBrC,cAC9B,IAAIyS,EAAU/tB,EAAE,SACZkP,EAAEpB,OAAO0C,IAAMud,EAAQhvB,KAAK,OAC5BgvB,EAAQ9oB,SAIpBwjB,QAAS,SAATA,QAAmBvZ,EAAGgB,GAClB,IAAKlQ,EAAEkP,EAAEpB,QAAQ2U,QAAQ,kBAAkBplB,OAAQ,CAC/C,IAAI0U,EAAU,IAAI5D,EAAUsF,gBAC5B1B,EAAQsB,QACRZ,EAASC,KAAK4X,YAAYvY,EAAQyB,MAClCtE,EAAEsJ,iBACF,IAAInV,EAAMrD,EAAE2C,MAAM5D,KAAK,YACvB0T,EAASC,KAAKyI,WAAWsN,QAAQplB,MAI7CoP,EAASkb,iBAAiB3e,UAAUD,kBAAoB,WACpDpR,OAAOqgB,eAAevL,EAASkb,iBAAiB3e,WAAWD,kBAAkBhR,KAAK4E,MAC9E3C,EAAEzC,QAAQid,SAAW,KACrBxa,EAAE0G,UAAUE,GAAG,kBAAkB,SAAUsI,GACvC,IAAIpO,EAAYd,EAAE,kBACbA,EAAEkP,EAAEpB,QAAQjJ,QAAQ,cAAcxH,SACnC2C,EAAE,uBAAuB2H,YAAY,UACrC7G,EAAUwG,OACVxG,EAAU6I,KAAK,wBAAwBhC,YAAY,iBACnD7G,EAAU6I,KAAK,+BAA+BhC,YAAY,QAC1D7G,EAAU6I,KAAK,wBAAwBxE,IAAI,gBAAiB,QAC5D+J,EAAE8e,uBAKlBvb,EAASkb,iBAAiBxd,aAAe,CACrCqd,eAAgB,SAAhBA,eAA0B7Z,EAASzD,GAC/B,IAAIoC,EAAepC,EAAOkC,gBAAgB,QACtCE,IACAA,EAAa2B,WAAWN,GACxBrB,EAAarF,QACbqF,EAAarN,UAIzBwN,EAASkb,iBAAiBhkB,KAAO,WAC7B,IAAIoU,EAAU/d,EAAE,sBAAwByS,EAASkb,iBAAiBnd,GAAK,MACvE,OAAIuN,EAAQ1gB,OAAS,EACV0gB,EAEJ/d,EAAE,IAAMyS,EAASkb,iBAAiBnd,KAE7CrC,EAAUqB,QAAQnB,SAASoE,EAASkb,kBACpClb,EAASwb,kBAAoB,SAAUpf,EAAWvM,GAC9C6L,EAAUS,OAAO7Q,KAAK4E,KAAMkM,EAAWvM,GACvCK,KAAK0L,SAASoE,EAASC,KAAKuV,UAC5BtlB,KAAK0L,SAASoE,EAASC,KAAKyI,YAC5BxY,KAAK0L,SAASoE,EAASC,KAAKiX,aAEhClX,EAASwb,kBAAkBjf,UAAY,IAAIb,EAAUS,OACrD6D,EAASwb,kBAAkBzd,GAAK,0CAChCiC,EAASwb,kBAAkB1e,OAAS,mCACpCkD,EAASwb,kBAAkBld,QAAU,CACjC8c,OAAQ,SAARA,OAAkB3e,GACdA,EAAEsJ,iBACFxY,EAAE2C,MAAMkC,QAAQ,gBAAgB0R,YAAY,UAC5C,IAAIuX,EAAkB9tB,EAAE2C,MAAMgb,KAAK,iBAAiBpV,GAAG,YAEvD,GADAvI,EAAE,iBAAiB6a,WACdiT,EAAiB,CAClB9tB,EAAE2C,MAAMgb,KAAK,iBAAiBrC,cAC9B,IAAIyS,EAAU/tB,EAAE,SACZkP,EAAEpB,OAAO0C,IAAMud,EAAQhvB,KAAK,OAC5BgvB,EAAQ9oB,SAIpBwjB,QAAS,SAATA,QAAmBvZ,GACf,IAAKlP,EAAEkP,EAAEpB,QAAQ2U,QAAQ,kBAAkBplB,OAAQ,CAC/C,IAAI0U,EAAU,IAAI5D,EAAUsF,gBAC5B1B,EAAQsB,QACRZ,EAASC,KAAK4X,YAAYvY,EAAQyB,MAClCtE,EAAEsJ,iBACF,IAAInV,EAAMrD,EAAE2C,MAAM5D,KAAK,YACvB0T,EAASC,KAAKyI,WAAWsN,QAAQplB,KAGzC2pB,SAAU,SAAVA,SAAoB9d,GAChB,IAAI6C,EAAU,IAAI5D,EAAUsF,gBAC5B1B,EAAQsB,QACRZ,EAASC,KAAK4X,YAAYvY,EAAQyB,MAClCtE,EAAEsJ,iBACF,IAAIkQ,EAAS1oB,EAAE2C,MAAMsB,KAAK,WACtBykB,EACAjW,EAASC,KAAKiX,WAAWC,SAASlB,GAElCjW,EAASC,KAAKiX,WAAWE,UAAU7pB,EAAE2C,MAAMsB,KAAK,eAI5DwO,EAASwb,kBAAkBjf,UAAUD,kBAAoB,WACrDpR,OAAOqgB,eAAevL,EAASwb,kBAAkBjf,WAAWD,kBAAkBhR,KAAK4E,MAC/E3C,EAAEzC,QAAQid,SAAW,KACrBxa,EAAE0G,UAAUE,GAAG,kBAAkB,SAAUsI,GACvC,IAAIpO,EAAYd,EAAE,kBACbA,EAAEkP,EAAEpB,QAAQjJ,QAAQ,cAAcxH,SACnC2C,EAAE,uBAAuB2H,YAAY,UACrC7G,EAAUwG,OACVxG,EAAU6I,KAAK,wBAAwBhC,YAAY,iBACnD7G,EAAU6I,KAAK,+BAA+BhC,YAAY,QAC1D7G,EAAU6I,KAAK,6BAA6BrC,OAC5CxG,EAAU6I,KAAK,wBAAwBxE,IAAI,gBAAiB,QAC5D+J,EAAE8e,uBAKlBvb,EAASwb,kBAAkBtkB,KAAO,WAC9B,IAAIoU,EAAU/d,EAAE,sBAAwByS,EAASwb,kBAAkBzd,GAAK,MACxE,OAAIuN,EAAQ1gB,OAAS,EACV0gB,EAEJ/d,EAAE,IAAMyS,EAASwb,kBAAkBzd,KAE9CrC,EAAUqB,QAAQnB,SAASoE,EAASwb,mBACpCxb,EAASyb,qBAAuB,SAAUrf,EAAWvM,GACjD6L,EAAUS,OAAO7Q,KAAK4E,KAAMkM,EAAWvM,GACvCK,KAAK0L,SAASoE,EAASC,KAAKuV,UAC5BtlB,KAAK0L,SAASoE,EAASC,KAAKyI,YAC5BxY,KAAK0L,SAASoE,EAASC,KAAKiX,aAEhClX,EAASyb,qBAAqBlf,UAAY,IAAIb,EAAUS,OACxD6D,EAASyb,qBAAqB1d,GAAK,6CACnCiC,EAASyb,qBAAqB3e,OAAS,sCACvCkD,EAASyb,qBAAqBnd,QAAU,CACpC8c,OAAQ,SAARA,OAAkB3e,GACdA,EAAEsJ,iBACFxY,EAAE2C,MAAMkC,QAAQ,gBAAgB0R,YAAY,UAC5C,IAAIuX,EAAkB9tB,EAAE2C,MAAMgb,KAAK,iBAAiBpV,GAAG,YAEvD,GADAvI,EAAE,iBAAiB6a,WACdiT,EAAiB,CAClB9tB,EAAE2C,MAAMgb,KAAK,iBAAiBrC,cAC9B,IAAIyS,EAAU/tB,EAAE,SACZkP,EAAEpB,OAAO0C,IAAMud,EAAQhvB,KAAK,OAC5BgvB,EAAQ9oB,SAIpBwjB,QAAS,SAATA,QAAmBvZ,EAAGgB,GAClB,IAAKlQ,EAAEkP,EAAEpB,QAAQ2U,QAAQ,kBAAkBplB,OAAQ,CAC/C,IAAI0U,EAAU,IAAI5D,EAAUsF,gBAC5B1B,EAAQsB,QACRZ,EAASC,KAAK4X,YAAYvY,EAAQyB,MAClCtE,EAAEsJ,iBACF,IAAInV,EAAMrD,EAAE2C,MAAM5D,KAAK,YACvB0T,EAASC,KAAKyI,WAAWsN,QAAQplB,KAGzC2pB,SAAU,SAAVA,SAAoB9d,EAAGgB,GACnB,IAAI6B,EAAU,IAAI5D,EAAUsF,gBAC5B1B,EAAQsB,QACRZ,EAASC,KAAK4X,YAAYvY,EAAQyB,MAClCtE,EAAEsJ,iBACF,IAAIkQ,EAAS1oB,EAAE2C,MAAMsB,KAAK,WACtBykB,EACAjW,EAASC,KAAKiX,WAAWC,SAASlB,GAElCjW,EAASC,KAAKiX,WAAWE,UAAU7pB,EAAE2C,MAAMsB,KAAK,eAI5DwO,EAASyb,qBAAqBlf,UAAUD,kBAAoB,WACxDpR,OAAOqgB,eAAevL,EAASyb,qBAAqBlf,WAAWD,kBAAkBhR,KAAK4E,MAClF3C,EAAEzC,QAAQid,SAAW,KACrBxa,EAAE0G,UAAUE,GAAG,YAAY,SAAUsI,GACjC,IAAIpO,EAAYd,EAAE,kBACbA,EAAEkP,EAAEpB,QAAQjJ,QAAQ,cAAcxH,SACnC2C,EAAE,uBAAuB2H,YAAY,UACrC7G,EAAUwG,OACVxG,EAAU6I,KAAK,wBAAwBhC,YAAY,iBACnD7G,EAAU6I,KAAK,+BAA+BhC,YAAY,QAC1D7G,EAAU6I,KAAK,6BAA6BrC,OAC5CxG,EAAU6I,KAAK,wBAAwBxE,IAAI,gBAAiB,QAC5D+J,EAAE8e,uBAKlBvb,EAASyb,qBAAqBvkB,KAAO,WACjC,IAAIoU,EAAU/d,EAAE,sBAAwByS,EAASyb,qBAAqB1d,GAAK,MAC3E,OAAIuN,EAAQ1gB,OAAS,EACV0gB,EAEJ/d,EAAE,IAAMyS,EAASyb,qBAAqB1d,KAEjDrC,EAAUqB,QAAQnB,SAASoE,EAASyb,sBACpCzb,EAAS0b,mBAAqB,SAAUtf,EAAWvM,GAC/C6L,EAAUS,OAAO7Q,KAAK4E,KAAMkM,EAAWvM,GACvCK,KAAK0L,SAASoE,EAASC,KAAKuV,UAC5BtlB,KAAK0L,SAASoE,EAASC,KAAKyI,YAC5BxY,KAAK0L,SAASoE,EAASC,KAAKwI,WAC5BvY,KAAK0L,SAASoE,EAASC,KAAKiX,YAC5BhnB,KAAK0L,SAASoE,EAASC,KAAK4W,UAC5B3mB,KAAK0L,SAASoE,EAASC,KAAK0I,SAC5BzY,KAAK0L,SAASoE,EAASC,KAAK+W,KAC5B9mB,KAAK0L,SAASoE,EAASC,KAAK2W,SAC5B1mB,KAAK0L,SAAS,qBACd1L,KAAK0L,SAAS,qBACd1L,KAAK0L,SAAS,mBAElBoE,EAAS0b,mBAAmBnf,UAAY,IAAIb,EAAUS,OACtD6D,EAAS0b,mBAAmB3d,GAAK,iCACjCiC,EAAS0b,mBAAmB5e,OAAS,oCACrCkD,EAAS0b,mBAAmBxkB,KAAO,WAC/B,IAAIoU,EAAU/d,EAAE,sBAAwByS,EAAS0b,mBAAmB3d,GAAK,MACzE,OAAIuN,EAAQ1gB,OAAS,EACV0gB,EAEJ/d,EAAE,IAAMyS,EAAS0b,mBAAmB3d,KAE/CrC,EAAUqB,QAAQnB,SAASoE,EAAS0b,oBACpC1b,EAAS2b,eAAiB,SAAUvf,EAAWvM,GAC3C6L,EAAUS,OAAO7Q,KAAK4E,KAAMkM,EAAWvM,GACvCK,KAAK0L,SAASoE,EAASC,KAAKuV,UAC5BtlB,KAAK0L,SAASoE,EAASC,KAAKyI,YAC5BxY,KAAK0L,SAASoE,EAASC,KAAKiX,aAEhClX,EAAS2b,eAAepf,UAAY,IAAIb,EAAUS,OAClD6D,EAAS2b,eAAe5d,GAAK,kCAC7BiC,EAAS2b,eAAe7e,OAAS,gCACjCkD,EAAS2b,eAAezkB,KAAO,WAC3B,IAAIoU,EAAU/d,EAAE,sBAAwByS,EAAS2b,eAAe5d,GAAK,MACrE,OAAIuN,EAAQ1gB,OAAS,EACV0gB,EAEJ/d,EAAE,IAAMyS,EAAS2b,eAAe5d,KAE3CiC,EAAS2b,eAAe/b,cAAgB,CACpC4V,SAAUxV,EAASyZ,aACnB/D,MAAO1V,EAAS+Z,kBAChBpE,sBAAuB3V,EAAS+Z,mBAEpC/Z,EAAS2b,eAAerd,QAAU,CAC9BmX,MAAO,SAAPA,MAAiBhZ,EAAGgB,GAChBhB,EAAEsJ,iBACF,IAAIzG,EAAU,IAAI5D,EAAUsF,gBAC5B1B,EAAQsB,QACRZ,EAASC,KAAK4X,YAAYnc,EAAUsC,MAAM8J,qBAC1C9H,EAASC,KAAK4X,YAAYvY,EAAQyB,MAClC,IAAI4U,EAAwBlY,EAAOvG,KAAK,0BAA0BpB,GAAG,YACjE4f,EAAQjY,EAAOvG,KAAK,UAAU4H,MAClCkB,EAASC,KAAKuV,SAASC,MAAMC,EAAOC,IAExCiG,cAAe,SAAfA,cAAyBnf,EAAGgB,GACxBhB,EAAEsJ,iBACF,IAAI8V,EAAape,EAAOvG,KAAK,aACzBwe,EAAQjY,EAAOvG,KAAK,uBAAuB4H,MAC/CrB,EAAOvG,KAAK,kBAAkBxD,SAAS,UACnCmoB,EAAWjxB,OAAS,IACpBixB,EAAW3mB,YAAY,UACVsT,MAATkN,GACAmG,EAAW3kB,KAAK,uBAAuB4H,IAAI4W,GAAOoG,UAI9DlgB,SAAU,SAAVA,SAAoBa,EAAGgB,GACnB,IAAIiY,EAAQjY,EAAOvG,KAAK,uBAAuB4H,MAC3C4W,IACAjZ,EAAEsJ,iBACFjb,OAAO6O,SACH,8BACAoiB,mBAAmBrG,GACnB,gBACAqG,mBAAmBpiB,SAASC,QAGxCoiB,YAAa,SAAbA,YAAuBvf,EAAGgB,GACtBhB,EAAEsJ,iBACF,IAAIlG,EAAepC,EAAOkC,gBAAgB,YACtCE,GACAA,EAAaN,QAEjB9B,EAAOvG,KAAK,kBAAkB5E,SAC9BmL,EAAOvG,KAAK,kBAAkBhC,YAAY,UACtCuI,EAAOvG,KAAK,aAAatM,OAAS,GAClC6S,EAAOvG,KAAK,aAAaxD,SAAS,WAG1CuoB,UAAW,SAAXA,UAAqBxf,IACH,IAAIf,EAAUsF,iBACpBJ,SAEZsb,UAAW,SAAXA,UAAqBzf,IACH,IAAIf,EAAUsF,iBACpBJ,SAEZwa,OAAQ,SAARA,OAAkB3e,EAAGgB,GACjBA,EAAOvG,KAAK,oBAAoB2R,gBAGxC7I,EAAS2b,eAAepf,UAAUD,kBAAoB,WAElD,GADApR,OAAOqgB,eAAevL,EAAS2b,eAAepf,WAAWD,kBAAkBhR,KAAK4E,MAC5EA,KAAKgH,KAAK,aAAatM,OAAS,EAAG,CACnC,IAAIuxB,EAAcjsB,KAAKgH,KAAK,oBACxBklB,EAAiBlsB,KAAKgH,KAAK,uBAC3BmlB,EAAkBnsB,KAAKgH,KAAK,kCAChCmlB,EAAgBnnB,YAAY,WAC5BmnB,EAAgBjd,KAAK,YAAY,GACjC+c,EAAYhoB,GAAG,SAAS,WAChBgoB,EAAYrd,OAASsd,EAAetd,OACpCud,EAAgB3oB,SAAS,WACzB2oB,EAAgBjd,KAAK,YAAY,KAEjCid,EAAgBnnB,YAAY,WAC5BmnB,EAAgBjd,KAAK,YAAY,OAGzCgd,EAAejoB,GAAG,SAAS,WACnBgoB,EAAYrd,OAASsd,EAAetd,OACpCud,EAAgB3oB,SAAS,WACzB2oB,EAAgBjd,KAAK,YAAY,KAEjCid,EAAgBnnB,YAAY,WAC5BmnB,EAAgBjd,KAAK,YAAY,SAKjDY,EAAS2b,eAAepf,UAAUiB,oBAAsB,SAAUC,EAAQd,GACtEzR,OAAOqgB,eAAevL,EAAS2b,eAAepf,WAAWiB,oBAAoBlS,KAAK4E,KAAMuN,EAAQd,GAChGc,EAAOvG,KAAK,gBAAgBuB,MAAK,WAC7B,IACImG,EADQrR,EAAE2C,MACG5D,KAAK,QAClBgwB,EAAY1d,EAAO,QACnBiB,EAAepC,EAAOkC,gBAAgBf,GACtCiB,IACAA,EAAaN,QACT5C,GAASA,EAAMzQ,YAAcyQ,EAAMzQ,WAAWowB,KAC9Czc,EAAarF,QACbqF,EAAa2B,WAAW7E,EAAMzQ,WAAWowB,IACzCzc,EAAarN,aAK7BwN,EAAS2b,eAAeje,aAAe,CACnC6e,cAAe,SAAfA,cAAyBrb,EAASzD,GAC9B,IAAIoC,EAAepC,EAAOkC,gBAAgB,YACtCE,IACAA,EAAa2B,WAAWN,GACxBrB,EAAarF,QACbqF,EAAarN,SAGrBgqB,WAAY,SAAZA,WAAsBtb,EAASzD,GAC3B,IAAIoC,EAAepC,EAAOkC,gBAAgB,SACtCE,IACAA,EAAarF,QACbqF,EAAa2B,WAAWN,GACxBrB,EAAarN,SAGrBiqB,2BAA4B,SAA5BA,2BAAsCvb,EAASzD,GAC3C,IAAIoC,EAAepC,EAAOkC,gBAAgB,yBACtCE,IACAA,EAAarF,QACbqF,EAAa2B,WAAWN,GACxBrB,EAAarN,UAIzBkJ,EAAUqB,QAAQnB,SAASoE,EAAS2b,gBACpC3b,EAAS0c,eAAiB,SAAUtgB,EAAWvM,GAC3C6L,EAAUS,OAAO7Q,KAAK4E,KAAMkM,EAAWvM,GACvCK,KAAK0L,SAASoE,EAASC,KAAKuV,UAC5BtlB,KAAK0L,SAASoE,EAASC,KAAKyI,YAC5BxY,KAAK0L,SAASoE,EAASC,KAAKiX,YAC5BhnB,KAAK0L,SAASoE,EAASC,KAAK4W,WAEhC7W,EAAS0c,eAAengB,UAAY,IAAIb,EAAUS,OAClD6D,EAAS0c,eAAe3e,GAAK,kCAC7BiC,EAAS0c,eAAe5f,OAAS,gCACjCkD,EAAS0c,eAAe9c,cAAgB,CACpCka,KAAM9Z,EAASyZ,aACfkD,WAAY3c,EAAS+Z,kBACrB6C,QAAS5c,EAAS+Z,kBAClBrE,MAAO1V,EAAS+Z,kBAChB8C,MAAO7c,EAAS+Z,kBAChB+C,aAAc9c,EAAS+Z,kBACvBgD,SAAU/c,EAAS+Z,kBACnBiD,SAAUhd,EAAS+Z,kBACnBkD,KAAMjd,EAAS+Z,kBACf7R,QAASlI,EAAS+Z,kBAClB1d,MAAO2D,EAAS+Z,kBAChBmD,QAASld,EAAS+Z,kBAClBoD,aAAcnd,EAAS+Z,mBAE3B/Z,EAAS0c,eAAengB,UAAUU,UAAY,WAC1C,GAAI/M,KAAKgH,KAAK,QAAQtM,OAClB,OAAO8Q,EAAUqB,QAAQL,OAAOxM,KAAM,GAAI,KAGlD8P,EAAS0c,eAAepe,QAAU,CAC9B8e,aAAc,SAAdA,aAAwB3gB,EAAGgB,GACvB,IAAI6B,EAAU,IAAI5D,EAAUsF,gBAC5B1B,EAAQsB,QACRZ,EAASC,KAAK4X,YAAYnc,EAAUsC,MAAM8J,qBAC1C9H,EAASC,KAAK4X,YAAYvY,EAAQyB,MAClCtE,EAAEsJ,iBACF,IAAImK,EAAIxU,EAAUqB,QAAQL,OAAOe,EAAQ,GAAI,CAACmL,SAAS,IACvDlN,EAAUqB,QAAQuD,MAAMjU,SAAQ,SAAUoT,GAClChC,EAAOrB,UAAU2B,IAAM0B,EAAKrD,UAAU2B,KACtCmS,EAAIA,EAAEpP,KAAKrB,EAAKxC,iBAGxBiT,EAAEpP,MAAK,WACHpF,EAAUsC,MAAM8J,sBAChBxI,EAAQyB,WAGhBsc,eAAgB,SAAhBA,eAA0B5gB,EAAGgB,GACzBhB,EAAEsJ,iBACF,IAAIzG,EAAU,IAAI5D,EAAUsF,gBAC5B1B,EAAQsB,QACRZ,EAASC,KAAK4X,YAAYnc,EAAUsC,MAAM8J,qBAC1C9H,EAASC,KAAK4X,YAAYvY,EAAQyB,MAClCf,EAASC,KAAK4W,SAAS1hB,OAAOsI,EAAOvG,KAAK,QAAQmR,oBAEtDiV,gBAAiB,SAAjBA,gBAA2B7gB,EAAGgB,GAC1BhB,EAAEsJ,iBACF,IAAIpH,EAAQlB,EAAOgB,eACnBuB,EAASC,KAAK4W,SAASyG,gBAAgB3e,EAAMkY,SAAS3O,QAASvJ,EAAMkY,SAASxa,QAElF+e,OAAQ,SAARA,OAAkB3e,EAAGgB,GACjBA,EAAOvG,KAAK,oBAAoB2R,eAEpC0U,eAAgB,SAAhBA,eAA0B9gB,EAAGgB,GACzB,GAAe,WAAXhB,EAAE/E,KAAmB,CACrB,IAAI4H,EAAU,IAAI5D,EAAUsF,gBAC5B1B,EAAQsB,QACR,IAAIf,EAAepC,EAAOkC,gBAAgB,gBACtCE,GACAA,EAAaN,QAEjB,IAAIie,EAAW/f,EAAOvG,KAAK,0BAEvB4R,GADSrL,EAAOvG,KAAK,0BACPsmB,EAAS1e,OAE3BpD,EAAUsC,MAAMgK,gBAAgBc,GAAa,SAAUnM,GACnD,IAAI8gB,EAAUhgB,EAAOvG,KAAK,+BACtBwmB,EAASD,EAAQvmB,KAAK,SACtBymB,EAAUF,EAAQvmB,KAAK,kBAC3BwmB,EAAO5e,IAAI,MACX6e,EAAQ,GAAGxwB,UAAY,GAEnBwP,EAAMihB,OAAOhzB,OAAS,GACtB+R,EAAMihB,OAAOvxB,SAAQ,SAAUoT,GAC3Bke,EAAQ3nB,OACJ,2BACIyJ,EAAS,GACT,+BACAA,EAAkB,YAClB,WAGZge,EAAQvoB,YAAY,WAEpBuoB,EAAQ/pB,SAAS,UAGrBsM,EAASC,KAAK4W,SAASC,iBAAiBhO,EAAa6U,EAAQ7e,OAAO,SAAUnC,GAC1E,GAAoC,GAAhCA,EAAM2gB,gBAAgB1yB,OAAa,CACnC,IACI+yB,EADmBlgB,EAAOvG,KAAK,yBACJA,KAAK,UACpCymB,EAAQzmB,KAAK,4BAA4B5E,SACzCqK,EAAM2gB,gBAAgBjxB,SAAQ,SAAUoT,GACpCke,EAAQ3nB,OAAO,kBAAoByJ,EAAS,GAAI,KAAOA,EAAkB,YAAI,gBAE7E9C,EAAMnC,QACNqF,EAAaN,QACbM,EAAarF,QACbqF,EAAa2B,WAAW7E,EAAMnC,OAC9BqF,EAAarN,QAEjBiL,EAAOvG,KAAK,4BAA4BkI,KAAK,YAAY,GACzD3B,EAAOvG,KAAK,gCAAgCkI,KAAK,YAAY,GAC7D3B,EAAOvG,KAAK,sBAAsBrC,OAClC4I,EAAOvG,KAAK,yBAAyB1E,YAErCiL,EAAOvG,KAAK,gCAAgCkI,KAAK,YAAY,GAC7D3B,EAAOvG,KAAK,iDAAiDkI,KAAK,YAAY,GAC9E3B,EAAOvG,KAAK,yBAAyBrC,OACrC4I,EAAOvG,KAAK,8BAA8B4H,IAAInC,EAAM2gB,gBAAgB,GAAGvf,IACvEN,EAAOvG,KAAK,yCAAyC4H,IAAInC,EAAM2gB,gBAAgB,GAAGO,aAClFpgB,EAAOvG,KAAK,sBAAsB1E,OAEtC8M,EAAQyB,eAKxB+c,cAAe,SAAfA,cAAyBrhB,EAAGgB,GACxB,IAAIsgB,EAAcxwB,EAAE2C,MAAM4O,MAC1B,GAAc,UAAVrC,EAAE/E,KACF,GAAmB,MAAfqmB,EAAqB,CACrB,IAAIze,EAAU,IAAI5D,EAAUsF,gBAC5B1B,EAAQsB,QACRnD,EAAOf,OAAO,GAAI,CAACkM,SAAS,EAAMoV,KAAMD,IAAc,WAClD,IAAIP,EAAW/f,EAAOvG,KAAK,0BACvB6R,EAAStL,EAAOvG,KAAK,wBACH,IAAlBsmB,EAAS1e,MACTkB,EAASC,KAAK4W,SAASC,iBAAiB0G,EAAS1e,MAAOiK,EAAOjK,OAAO,SAAUnC,GAC5E,GAAoC,GAAhCA,EAAM2gB,gBAAgB1yB,OAAa,CACnC,IACI+yB,EADmBlgB,EAAOvG,KAAK,yBACJA,KAAK,UACpCymB,EAAQzmB,KAAK,4BAA4B5E,SACzCqK,EAAM2gB,gBAAgBjxB,SAAQ,SAAUoT,GACpCke,EAAQ3nB,OACJ,kBAAoByJ,EAAS,GAAI,KAAOA,EAAkB,YAAI,gBAGlE9C,EAAMnC,QACNqF,aAAaN,QACbM,aAAarF,QACbqF,aAAa2B,WAAW7E,EAAMnC,OAC9BqF,aAAarN,QAEjBiL,EAAOvG,KAAK,4BAA4BkI,KAAK,YAAY,GACzD3B,EAAOvG,KAAK,gCAAgCkI,KAAK,YAAY,GAC7D3B,EAAOvG,KAAK,sBAAsBrC,OAClC4I,EAAOvG,KAAK,yBAAyB1E,YAErCiL,EAAOvG,KAAK,gCAAgCkI,KAAK,YAAY,GAC7D3B,EAAOvG,KAAK,iDAAiDkI,KAAK,YAAY,GAC9E3B,EAAOvG,KAAK,yBAAyBrC,OACrC4I,EAAOvG,KAAK,8BAA8B4H,IAAInC,EAAM2gB,gBAAgB,GAAGvf,IACvEN,EACKvG,KAAK,yCACL4H,IAAInC,EAAM2gB,gBAAgB,GAAGO,aAClCpgB,EAAOvG,KAAK,sBAAsB1E,OAEtC8M,EAAQyB,UAGZzB,EAAQyB,eAIhBtD,EAAOsB,WAAW,WAAY,MAK9CiB,EAAS0c,eAAehf,aAAe,CACnCugB,aAAc,SAAdA,aAAwB/c,EAASzD,GAC7B,IAAIoC,EAAepC,EAAOkC,gBAAgB,QACtCE,IACAA,EAAarF,QACbqF,EAAa2B,WAAWN,GACxBrB,EAAarN,QAEjBkJ,EAAUsC,MAAMwJ,OAAO,uBAAwB,KAGvDxH,EAAS0c,eAAengB,UAAUiB,oBAAsB,SAAUC,EAAQd,GACtEzR,OAAOqgB,eAAevL,EAAS0c,eAAengB,WAAWiB,oBAAoBlS,KAAK4E,KAAMuN,EAAQd,GAChGc,EAAOvG,KAAK,gBAAgBuB,MAAK,WAC7B,IACImG,EADQrR,EAAE2C,MACG5D,KAAK,QAClBgwB,EAAY1d,EAAO,QACnBiB,EAAepC,EAAOkC,gBAAgBf,GACtCiB,IACAA,EAAaN,QACT5C,GAASA,EAAMzQ,YAAcyQ,EAAMzQ,WAAWowB,KAC9Czc,EAAarF,QACbqF,EAAa2B,WAAW7E,EAAMzQ,WAAWowB,IACzCzc,EAAarN,aAK7BwN,EAAS0c,eAAexlB,KAAO,WAC3B,IAAIoU,EAAU/d,EAAE,sBAAwByS,EAAS0c,eAAe3e,GAAK,MACrE,OAAIuN,EAAQ1gB,OAAS,EACV0gB,EAEJ/d,EAAE,IAAMyS,EAAS0c,eAAe3e,KAE3CrC,EAAUqB,QAAQnB,SAASoE,EAAS0c,gBACpC1c,EAASke,UAAY,SAAU9hB,EAAWvM,GACtC6L,EAAUS,OAAO7Q,KAAK4E,KAAMkM,EAAWvM,GACvCK,KAAK0L,SAASoE,EAASC,KAAKyI,YAC5BxY,KAAK0L,SAASoE,EAASC,KAAKiX,YAC5BhnB,KAAK0L,SAASoE,EAASC,KAAK0I,SAC5BzY,KAAK0L,SAASoE,EAASC,KAAK4W,UAC5B3mB,KAAK0L,SAASoE,EAASC,KAAK+W,MAEhChX,EAASke,UAAU3hB,UAAY,IAAIb,EAAUS,OAC7C6D,EAASke,UAAUngB,GAAK,6BACxBiC,EAASke,UAAUphB,OAAS,2BAC5BkD,EAASke,UAAU3hB,UAAUU,UAAY,WACrC,GAAI/M,KAAKgH,KAAK,QAAQtM,OAClB,OAAO8Q,EAAUqB,QAAQL,OAAOxM,KAAM,GAAI,KAGlD8P,EAASke,UAAU5f,QAAU,CACzB6f,UAAW,SAAXA,UAAqB1hB,EAAGgB,GACpB,IAAI6B,EAAU,IAAI5D,EAAUsF,gBAC5B1B,EAAQsB,QACRZ,EAASC,KAAK4X,YAAYnc,EAAUsC,MAAM8J,qBAC1C9H,EAASC,KAAK4X,YAAYvY,EAAQyB,MAClCtE,EAAEsJ,iBACF,IAAImK,EAAIxU,EAAUqB,QAAQL,OAAOe,EAAQ,GAAI,CAACmL,SAAS,IACvDlN,EAAUqB,QAAQuD,MAAMjU,SAAQ,SAAUoT,GAClChC,EAAOrB,UAAU2B,IAAM0B,EAAKrD,UAAU2B,KACtCmS,EAAIA,EAAEpP,KAAKrB,EAAKxC,iBAGxBiT,EAAEpP,MAAK,WACHpF,EAAUsC,MAAM8J,sBAChBxI,EAAQyB,WAGhBiW,IAAK,SAALA,IAAeva,GACX,IAAI6C,EAAU,IAAI5D,EAAUsF,gBAC5B1B,EAAQsB,QACRZ,EAASC,KAAK4X,YAAYnc,EAAUsC,MAAM8J,qBAC1C9H,EAASC,KAAK4X,YAAYvY,EAAQyB,MAClCtE,EAAEsJ,iBACF/F,EAASC,KAAK+W,IAAI7hB,OAAO5H,EAAE,YAAY8a,qBAG/CrI,EAASke,UAAUhnB,KAAO,WACtB,IAAIoU,EAAU/d,EAAE,sBAAwByS,EAASke,UAAUngB,GAAK,MAChE,OAAIuN,EAAQ1gB,OAAS,EACV0gB,EAEJ/d,EAAE,IAAMyS,EAASke,UAAUngB,KAEtCrC,EAAUqB,QAAQnB,SAASoE,EAASke,WACpCle,EAASoe,cAAgB,SAAUhiB,EAAWvM,GAC1C6L,EAAUS,OAAO7Q,KAAK4E,KAAMkM,EAAWvM,GACvCK,KAAK0L,SAASoE,EAASC,KAAKuV,UAC5BtlB,KAAK0L,SAASoE,EAASC,KAAK4W,UAC5B3mB,KAAK0L,SAASoE,EAASC,KAAK0I,SAC5BzY,KAAK0L,SAASoE,EAASC,KAAKyI,YAC5BxY,KAAK0L,SAASoE,EAASC,KAAKiX,aAEhClX,EAASoe,cAAc7hB,UAAY,IAAIb,EAAUS,OACjD6D,EAASoe,cAAcrgB,GAAK,iCAC5BiC,EAASoe,cAActhB,OAAS,+BAChCkD,EAASoe,cAAcxe,cAAgB,CACnCka,KAAM9Z,EAASyZ,aACfkD,WAAY3c,EAAS+Z,kBACrB6C,QAAS5c,EAAS+Z,kBAClBrE,MAAO1V,EAAS+Z,kBAChB8C,MAAO7c,EAAS+Z,kBAChB+C,aAAc9c,EAAS+Z,kBACvBgD,SAAU/c,EAAS+Z,kBACnBiD,SAAUhd,EAAS+Z,kBACnBkD,KAAMjd,EAAS+Z,kBACf7R,QAASlI,EAAS+Z,kBAClB1d,MAAO2D,EAAS+Z,kBAChBmD,QAASld,EAAS+Z,mBAEtB/Z,EAASoe,cAAc7hB,UAAUU,UAAY,WACzC,GAAI/M,KAAKgH,KAAK,QAAQtM,OAClB,OAAO8Q,EAAUqB,QAAQL,OAAOxM,KAAM,GAAI,KAGlD8P,EAASoe,cAAc9f,QAAU,CAC7B+f,cAAe,SAAfA,cAAyB5hB,EAAGgB,GACxB,IAAI6B,EAAU,IAAI5D,EAAUsF,gBAC5B1B,EAAQsB,QACRZ,EAASC,KAAK4X,YAAYnc,EAAUsC,MAAM8J,qBAC1C9H,EAASC,KAAK4X,YAAYvY,EAAQyB,MAClCtE,EAAEsJ,iBACF/F,EAASC,KAAK0I,QAAQxT,OAAO5H,EAAE,wBAAwB8a,oBAE3DiW,YAAa,SAAbA,YAAuB7hB,EAAGgB,GACtB,IAAI6B,EAAU,IAAI5D,EAAUsF,gBAC5B1B,EAAQsB,QACRZ,EAASC,KAAK4X,YAAYvY,EAAQyB,MAClCtE,EAAEsJ,iBACF,IAAImK,EAAIxU,EAAUqB,QAAQL,OAAOe,EAAQ,GAAI,CAACmL,SAAS,IACvDlN,EAAUqB,QAAQuD,MAAMjU,SAAQ,SAAUoT,GAClChC,EAAOrB,UAAU2B,IAAM0B,EAAKrD,UAAU2B,KACtCmS,EAAIA,EAAEpP,KAAKrB,EAAKxC,iBAGxBiT,EAAEpP,MAAK,WACHpF,EAAUsC,MAAM8J,sBAChBva,EAAE,IAADnB,OAAK4T,EAASue,cAAcxgB,KAAMlJ,OACnCyK,EAAQyB,OAEW,MADDxT,EAAE,YAAYuR,MAE5BrB,EAAOvG,KAAK,kBAAkBtB,KAAK6H,EAAOvG,KAAK,iBAAiBtB,QAEhE6H,EAAOvG,KAAK,kBAAkBtB,KAAK6H,EAAOvG,KAAK,kBAAkBtB,YAI7E4oB,eAAgB,SAAhBA,eAA0B/hB,EAAGgB,GACzB,GAAIlQ,EAAE2C,MAAM4F,GAAG,YAAa,CACxB,IACI2oB,EADkB/iB,EAAUqB,QAAQxE,IAAI,mCACP,GACrC,GAAIkmB,EAAgB,CAChB,IAAI9f,EAAQ8f,EAAehgB,eAC3BhB,EAAOsB,WAAW,UAAWJ,EAAgB,UAAG,GAChDlB,EAAOvG,KAAK,0BAA0BuO,SAE1C,IACIiZ,EADkBhjB,EAAUqB,QAAQxE,IAAI,mCACP,GACrC,GAAImmB,EAAgB,CACZ/f,EAAQ+f,EAAejgB,eAC3BhB,EAAOsB,WAAW,UAAWJ,EAAM,kBAAkB,SAGzDjD,EAAUsC,MAAMsJ,UAAU,UAAW,KAG7CqX,WAAY,SAAZA,WAAsBliB,EAAGgB,GAChBuC,EAAS8X,WAAWoB,SAASzb,EAAOvG,KAAK,sBAC1CuF,EAAEsJ,kBAGVqV,OAAQ,SAARA,OAAkB3e,EAAGgB,GACjBA,EAAOvG,KAAK,oBAAoB2R,eAEpC0U,eAAgB,SAAhBA,eAA0B9gB,EAAGgB,GACzB,GAAc,UAAVhB,EAAE/E,KAAkB,CACpB,IAAI4H,EAAU,IAAI5D,EAAUsF,gBAC5B1B,EAAQsB,QACR,IAAIkI,EAAcvb,EAAE2C,MAAM4O,MACP,MAAfgK,EACArL,EAAOvG,KAAK,kBAAkBtB,KAAK6H,EAAOvG,KAAK,iBAAiBtB,QAEhE6H,EAAOvG,KAAK,kBAAkBtB,KAAK6H,EAAOvG,KAAK,kBAAkBtB,QAErE8F,EAAUsC,MAAMgK,gBAAgBc,GAAa,SAAUnM,GACnD,IAYIiiB,EAZAnB,EAAUhgB,EAAOvG,KAAK,+BACtB2nB,EAAUpB,EAAQvmB,KAAK,oBACvBwmB,EAASD,EAAQvmB,KAAK,SACtBymB,EAAUF,EAAQvmB,KAAK,kBAEb,UAAVuF,EAAE/E,OACFgmB,EAAO5e,IAAI,MACX6e,EAAQ,GAAGxwB,UAAY,GACvB0xB,EAAQjpB,KAAK,2BAYI4S,KALjBoW,EAFoE,IAApEljB,EAAUqB,QAAQxE,IAAI,mCAAmC3N,OACxC8Q,EAAUqB,QAAQxE,IAAI,mCACT,GAAGkG,eAAyB,SAE3C,KAIPmgB,EAAoB,MAG5BjiB,EAAMihB,OAAOhzB,OAAS,GACtB+R,EAAMihB,OAAOvxB,SAAQ,SAAUoT,GAC3Bke,EAAQ3nB,OACJ,2BACIyJ,EAAS,GACT,2BACAA,EAAkB,YAClB,WAGZge,EAAQvoB,YAAY,WAEpBuoB,EAAQ/pB,SAAS,UAErB4L,EAAQyB,YAIpB+c,cAAe,SAAfA,cAAyBrhB,EAAGgB,GACxB,IAAIsgB,EAAcxwB,EAAE2C,MAAM4O,MAC1B,GAAc,UAAVrC,EAAE/E,KACF,GAAmB,MAAfqmB,EAAqB,CACrB,IAAIze,EAAU,IAAI5D,EAAUsF,gBAC5B1B,EAAQsB,QACRnD,EAAOf,OAAO,GAAI,CAACkM,SAAS,EAAMoV,KAAMD,IAAc,WAClDze,EAAQyB,eAGZtD,EAAOsB,WAAW,UAAW,MAK7CiB,EAASoe,cAAc1gB,aAAe,CAClCugB,aAAc,SAAdA,aAAwB/c,EAASzD,GAC7B,IAAIoC,EAAepC,EAAOkC,gBAAgB,QACtCE,IACAA,EAAarF,QACbqF,EAAa2B,WAAWN,GACxBrB,EAAarN,QAEjBkJ,EAAUsC,MAAMwJ,OAAO,uBAAwB,KAGvDxH,EAASoe,cAAc7hB,UAAUiB,oBAAsB,SAAUC,EAAQd,GACrEzR,OAAOqgB,eAAevL,EAASoe,cAAc7hB,WAAWiB,oBAAoBlS,KAAK4E,KAAMuN,EAAQd,GAC/Fc,EAAOvG,KAAK,gBAAgBuB,MAAK,WAC7B,IACImG,EADQrR,EAAE2C,MACG5D,KAAK,QAClBgwB,EAAY1d,EAAO,QACnBiB,EAAepC,EAAOkC,gBAAgBf,GACtCiB,IACAA,EAAaN,QACT5C,GAASA,EAAMzQ,YAAcyQ,EAAMzQ,WAAWowB,KAC9Czc,EAAarF,QACbqF,EAAa2B,WAAW7E,EAAMzQ,WAAWowB,IACzCzc,EAAarN,aAK7BwN,EAASoe,cAAc7hB,UAAUuiB,aAAe,SAAU5J,KAC1DlV,EAASoe,cAAclnB,KAAO,WAC1B,IAAIoU,EAAU/d,EAAE,sBAAwByS,EAASoe,cAAcrgB,GAAK,MACpE,OAAIuN,EAAQ1gB,OAAS,EACV0gB,EAEJ/d,EAAE,IAAMyS,EAASoe,cAAcrgB,KAE1CrC,EAAUqB,QAAQnB,SAASoE,EAASoe,eACpCpe,EAASue,cAAgB,SAAUniB,EAAWvM,GAC1C6L,EAAUS,OAAO7Q,KAAK4E,KAAMkM,EAAWvM,GACvCK,KAAK0L,SAASoE,EAASC,KAAKuV,UAC5BtlB,KAAK0L,SAASoE,EAASC,KAAK0I,SAC5BzY,KAAK0L,SAASoE,EAASC,KAAK4W,UAC5B3mB,KAAK0L,SAASoE,EAASC,KAAKyI,YAC5BxY,KAAK0L,SAASoE,EAASC,KAAKiX,YAC5BhnB,KAAK0L,SAASoE,EAASC,KAAKwI,WAC5BvY,KAAK0L,SAASoE,EAASC,KAAK+W,KAC5B,IAAI4D,EAAS1qB,KAAKgH,KAAK,gBAAgB6nB,IAAI,WACtB,GAAjBnE,EAAOhwB,SACPgwB,EAAS1qB,KAAKgH,KAAK,iBAEnB0jB,EAAOhwB,OAAS,IAChBoV,EAAS2G,KAAK1G,KAAKzN,OACnBkJ,EAAUsC,MAAMwJ,OAAOoT,EAAQ,IAAK,OAG5C5a,EAASue,cAAchiB,UAAY,IAAIb,EAAUS,OACjD6D,EAASue,cAAcxgB,GAAK,iCAC5BiC,EAASue,cAAczhB,OAAS,+BAChCkD,EAASue,cAAc3e,cAAgB,CACnCof,WAAYhf,EAAS+Z,kBACrBkF,WAAYjf,EAAS+Z,kBACrB3B,eAAgBpY,EAAS+Z,kBACzBmF,UAAWlf,EAAS+Z,mBAExB/Z,EAASue,cAAcjgB,QAAU,CAC7B6gB,cAAe,SAAfA,cAAyB1iB,EAAGgB,GACxBhB,EAAEsJ,iBACFtI,EAAOvG,KAAK,YAAY2R,eAE5B8V,WAAY,SAAZA,WAAsBliB,EAAGgB,GACrB,IAAI0B,EAAQ1B,EAAOvG,KAAK,oBACpBkoB,GAAQ,EACZjgB,EAAMjI,KAAK,8CAA8CuB,MAAK,WAC1D,IAAI2E,EAAQ7P,EAAE2C,MACVmvB,EAASjiB,EAAMhL,QAAQ,gBACvB8lB,EAAUlY,EAAS8X,WAAWqB,cAAc/b,EAAO+B,GACnDmgB,EAAmB,GACvBA,EAAiBvjB,KAAKmc,GACtB,IAkBQ5Y,EAlBJO,EAAepC,EAAOkC,gBAAgB0f,EAAO7tB,KAAK,iBACjDqO,IAGDqY,GACArY,EAAaN,QACbM,EAAa2B,WAAW,IACxB3B,EAAarF,QACbqF,EAAarN,QAEbqN,EAAaN,UAEjB6f,GAASlH,GAAWkH,IACNE,EAAiB7M,UAAS,KAChCnT,EAAU,IAAI5D,EAAUsF,iBACpBD,OACRtE,EAAEsJ,oBAEEzG,EAAU,IAAI5D,EAAUsF,iBACpBQ,WAAW,kEACnBlC,EAAQsB,cAIpBwa,OAAQ,SAARA,OAAkB3e,EAAGgB,GACjB,IAAI8hB,EAAU9hB,EAAOvG,KAAK,oBAC1BqoB,EAAQC,MAAK,GAAM,GACnBD,EAAQ1W,gBAGhB7I,EAASue,cAAcrnB,KAAO,WAC1B,IAAIoU,EAAU/d,EAAE,sBAAwByS,EAASue,cAAcxgB,GAAK,MACpE,OAAIuN,EAAQ1gB,OAAS,EACV0gB,EAEJ/d,EAAE,IAAMyS,EAASue,cAAcxgB,KAE1CiC,EAASue,cAAchiB,UAAUD,kBAAoB,WACjDpR,OAAOqgB,eAAevL,EAASue,cAAchiB,WAAWD,kBAAkBhR,KAAK4E,MAC/E,IAAIuN,EAASvN,KACTuvB,EAAQlyB,EAAE2C,KAAKgH,KAAK,6BACxBuoB,EAAMtrB,GAAG,SAAS,SAAUsI,GACxB,IAAIijB,EAAUnyB,EAAE2C,MAAM4O,MACA,GAAlB4gB,EAAQ90B,OAAa2C,EAAE2C,MAAMkC,QAAQ,gBAAgB8C,YAAY,WAChE3H,EAAE2C,MAAMkC,QAAQ,gBAAgBsB,SAAS,WAC9C,IAAIisB,EAAWpyB,EAAE2C,MAAM4O,MAAMlU,OACZ,IAAb+0B,IACID,EAAU,KACVA,EAAU,IAET,KAAK/mB,KAAK+mB,KACXA,GAAW,KAEfnyB,EAAE2C,MAAM4O,IAAI4gB,IAED,GAAXjjB,EAAEkP,OAA2B,IAAbgU,IAChBD,EAAUA,EAAQpP,UAAU,EAAGoP,EAAQ90B,OAAS,GAChD2C,EAAE2C,MAAM4O,IAAI4gB,OAGpBD,EAAMtrB,GAAG,QAAQ,WACb,IAAIyrB,EAAYH,EAAM3gB,MAAMzH,MAAM,KAC9BsoB,EAAWF,EAAM3gB,MAAMlU,OACvB80B,EAAUD,EAAM3gB,MAQpB,GAPI5O,KAAKW,OACLtD,EAAEkQ,EAAOvG,KAAK,0BAA0B4H,IAAI8gB,EAAU,IACtDryB,EAAEkQ,EAAOvG,KAAK,2BAA2B4H,IAAI8gB,EAAU,MAEvDryB,EAAEkQ,EAAOvG,KAAK,0BAA0B4H,IAAI,IAC5CvR,EAAEkQ,EAAOvG,KAAK,2BAA2B4H,IAAI,KAE7C6gB,EAAW,EACX,EAAkB,IAAItQ,MACQoJ,cAD9B,IAGIE,EADQ+G,EAAQroB,MAAM,KACH,GACN4N,SAAS0T,OAGlCprB,EAAE2C,KAAKgH,KAAK,gBAAgB/C,GAAG,QAAQ,SAAUsI,GAC7C,IAAIsI,EAASxX,EAAE,eAAeuR,MAC1B+gB,EAAYtyB,EAAE,eACDyS,EAAS8X,WAAWE,WAAWjT,EAAQ8a,MAE5DtyB,EAAE2C,KAAKgH,KAAK,wCAAwC/C,GAAG,SAAS,SAAUsI,GACtE,IAAI0C,EAAQ1B,EAAOvG,KAAK,oBACpBkG,EAAQ7P,EAAE,wBACV8xB,EAASjiB,EAAMhL,QAAQ,gBACvB8lB,EAAUlY,EAAS8X,WAAWqB,cAAc/b,EAAO+B,GACnDU,EAAepC,EAAOkC,gBAAgB0f,EAAO7tB,KAAK,iBAClD6X,EAAW,IACY,QAAvB9b,EAAE,YAAYuR,OACduK,EAAStN,KAAK,SAEU,MAAxBxO,EAAE,aAAauR,OACfuK,EAAStN,KAAK,UAEU,MAAxBxO,EAAE,aAAauR,OAAwC,QAAvBvR,EAAE,YAAYuR,QAC9CuK,EAAWA,EAASnR,KAAK,QAED,MAAxB3K,EAAE,aAAauR,OAAwC,QAAvBvR,EAAE,YAAYuR,OAC9CuK,EAAStN,KAAK,gBAEb8D,KAGDqY,GACArY,EAAaN,QACbM,EAAa2B,WAAW,IACxB3B,EAAarF,QACbqF,EAAarN,QAEbqN,EAAaN,QAEIhS,EAAE,kCACRkL,MAAK,WAChB,IAAIqnB,EAAQvyB,EAAE2C,MACV6vB,EAAaxyB,EAAE2C,MAAMgH,KAAK,UAC1B6oB,EAAWn1B,OAAS,EAC0B,IAA1Cm1B,EAAW7oB,KAAK,eAAetM,QAAiBk1B,EAAM/tB,SAAS,0BAExD+tB,EAAM/tB,SAAS,4BACwB,IAA1CguB,EAAW7oB,KAAK,eAAetM,OAC/Bm1B,EACK7oB,KAAK,eACLuV,MAAM,wCAA0CpD,EAAW,UAEhE0W,EACK7oB,KAAK,eACLqG,YAAY,wCAA0C8L,EAAW,WAT1E0W,EAAW7oB,KAAK,eAAeuV,MAAM,8CAazCqT,EAAM5oB,KAAK,eAAe5E,gBAIlC0N,EAASue,cAAcyB,6BAA6BhgB,EAASue,cAAcyB,+BAEnFtkB,EAAUqB,QAAQnB,SAASoE,EAASue,eACpCve,EAASue,cAAcyB,4BAA8B,WACjDzyB,EAAE0G,UAAUuH,OAAM,WACd,IAAIykB,EAAmB1yB,EAAE,+CACrB0yB,EAAiBnqB,GAAG,aACpBmqB,EAAiB,GAAGC,iBAGpB3yB,EAAE,mCAAmC3C,OAAS,IAC7C2C,EAAE,mCAAmCwE,SAAS,WAE/CxE,EAAE,cAAcqa,QAAQ,CAACC,UAAWta,EAAE,mCAAmCa,SAASuZ,KAAM,SAIpG3H,EAASmgB,sBAAwB,SAAU/jB,EAAWvM,GAClD6L,EAAUS,OAAO7Q,KAAK4E,KAAMkM,EAAWvM,GACvCK,KAAK0L,SAASoE,EAASC,KAAKiX,YAC5BhnB,KAAK0L,SAASoE,EAASC,KAAKyI,YAC5B,IAAI0X,EAAOlwB,KAAKgH,KAAK,qBAAqB9E,QAAQ,iBAClD,GAAIguB,GAAQA,EAAKx1B,OAAS,EAAG,CACzB8Q,EAAUsC,MAAMwJ,OAAO4Y,EAAM,IAAM,IACnC,IAAIC,EAAiBnwB,KAAKgH,KAAK,gCAC3BmpB,EAAez1B,SAAWy1B,EAAetuB,SAAS,WAClDsuB,EAAe3uB,UAI3BsO,EAASmgB,sBAAsB5jB,UAAY,IAAIb,EAAUS,OACzD6D,EAASmgB,sBAAsBpiB,GAAK,gCACpCiC,EAASmgB,sBAAsBrjB,OAAS,uCACxCkD,EAASmgB,sBAAsBjpB,KAAO,WAClC,IAAIoU,EAAU/d,EAAE,iBAAmByS,EAASmgB,sBAAsBpiB,GAAK,MACvE,OAAIuN,EAAQ1gB,OAAS,EACV0gB,EAEJ/d,EAAE,IAAMyS,EAASmgB,sBAAsBpiB,KAElDiC,EAASmgB,sBAAsB7hB,QAAU,CACrCic,SAAU,SAAVA,SAAoB9d,EAAGgB,GACnB,IAAI6B,EAAU,IAAI5D,EAAUsF,gBAC5B1B,EAAQsB,QACRZ,EAASC,KAAK4X,YAAYvY,EAAQyB,MAClCtE,EAAEsJ,iBACF,IAAInV,EAAMrD,EAAE2C,MAAM5D,KAAK,YACvB0T,EAASC,KAAKiX,WAAWE,UAAUxmB,IAEvColB,QAAS,SAATA,QAAmBvZ,EAAGgB,GAClB,IAAI6B,EAAU,IAAI5D,EAAUsF,gBAC5B1B,EAAQsB,QACRZ,EAASC,KAAK4X,YAAYvY,EAAQyB,MAClCtE,EAAEsJ,iBACF,IAAInV,EAAMrD,EAAE2C,MAAM5D,KAAK,YACvB0T,EAASC,KAAKyI,WAAWsN,QAAQplB,IAErC0vB,cAAe,SAAfA,cAAyB7jB,EAAGgB,GACxBhB,EAAEsJ,iBACFtI,EAAOvG,KAAK,8BAA8BkR,UAC1C3K,EAAOvG,KAAK,4BAA4B5K,KAAK,iBAAiB,GAC1DiB,EAAEkP,EAAEpB,QAAQtJ,SAAS,WACrBxE,EAAEkP,EAAEpB,QAAQnG,YAAY,UACxB3H,EAAEkP,EAAEpB,QAAQ8N,SAAS,8BAA8Bf,UACnD7a,EAAEkP,EAAEpB,QAAQ/O,KAAK,iBAAiB,KAElCiB,EAAEkP,EAAEpB,QAAQ3H,SAAS,UACrB+J,EAAOvG,KAAK,4BAA4B6nB,IAAIxxB,EAAEkP,EAAEpB,SAASnG,YAAY,UACrE3H,EAAEkP,EAAEpB,QAAQ8N,SAAS,8BAA8BH,YACnDzb,EAAEkP,EAAEpB,QAAQ/O,KAAK,iBAAiB,MAI9C0T,EAASmgB,sBAAsB5jB,UAAUpH,OAAS,SAAUwH,GACxDzM,KAAKsN,oBAAoBtN,KAAMyM,GAC/BzM,KAAKgO,UAET8B,EAASmgB,sBAAsBziB,aAAe,CAC1Coc,KAAM,SAANA,KAAgB5Y,EAASzD,EAAQd,GAC7B,IAAI/L,EAAM+L,EAAMzQ,WAAsB,UAClC2T,EAAeG,EAASyZ,aAAalhB,IAAIkF,EAAOvG,KAAK,+BAAiCtG,EAAM,YAC5FiP,IACAA,EAAa2B,WAAWN,GACxBrB,EAAaia,OACbja,EAAarN,OACbqN,EAAatK,SAAS4T,SAAS,KAAKjS,KAAK,oBAAoB5E,SAC7DqF,YAAW,WACPkI,EAAatK,SAASgM,UACtBhU,EAAEkQ,EAAOvG,KAAK,kBAAoBtG,EAAM,OACnCiF,SACAhB,OACLtH,EAAEkQ,EAAOvG,KAAK,4BAA8BtG,EAAM,OAC7CsE,YAAY,UACZxB,SAAS,YACf,OAGX8G,MAAO,SAAPA,MAAiB0G,EAASzD,EAAQd,GAC9B,IAAI/L,EAAM+L,EAAMzQ,WAAsB,UAClC2T,EAAeG,EAASyZ,aAAalhB,IAAIkF,EAAOvG,KAAK,+BAAiCtG,EAAM,OAC5FiP,IACAA,EAAa2B,WAAWN,GACxBrB,EAAarF,QACbqF,EAAarN,QAEjBjF,EAAEkQ,EAAOvG,KAAK,kBAAoBtG,EAAM,OAAOiE,QAEnD0rB,cAAe,SAAfA,cAAyBrf,EAASzD,GAC9B,IAAIoC,EAAeG,EAASyZ,aAAalhB,IAAIkF,EAAOvG,KAAK,oBACrD2I,IACAA,EAAa2B,WAAWN,GACxBrB,EAAaia,QAEjBvsB,EAAEkQ,EAAOvG,KAAK,yBAAyBrC,OACvCtH,EAAEkQ,EAAOvG,KAAK,mBAAmB4M,YAAY,WAEjDiX,eAAgB,SAAhBA,eAA0B7Z,EAASzD,GAC/B,IAAIoC,EAAeG,EAASyZ,aAAalhB,IAAIkF,EAAOvG,KAAK,oBACrD2I,IACAA,EAAa2B,WAAWN,GACxBrB,EAAarF,QACbqF,EAAarN,SAGrBguB,WAAY,SAAZA,WAAsBtf,GACH,eAAXA,GACAvJ,YAAW,WACPgC,SAASya,WACV,OAIf1Y,EAAUqB,QAAQnB,SAASoE,EAASmgB,uBACpCngB,EAASygB,oBAAsB,SAAUrkB,EAAWvM,GAChD6L,EAAUS,OAAO7Q,KAAK4E,KAAMkM,EAAWvM,GACvCK,KAAK0L,SAASoE,EAASC,KAAKyI,YAC5BxY,KAAK0L,SAASoE,EAASC,KAAKiX,YAC5BhnB,KAAK0L,SAAS,qBACd1L,KAAK0L,SAAS,qBACd1L,KAAK0L,SAAS,mBAElBoE,EAASygB,oBAAoBlkB,UAAY,IAAIb,EAAUS,OACvD6D,EAASygB,oBAAoB1iB,GAAK,+BAClCiC,EAASygB,oBAAoB3jB,OAAS,KACtCkD,EAASygB,oBAAoBlkB,UAAUpH,OAAS,SAAUwH,GACtD,IAAI+jB,EAAYxwB,KAAKgH,KAAK,0BACR,GAAdyF,EAAMgkB,MACND,EAAUhtB,WACVgtB,EAAUzyB,KAAK0O,EAAMgkB,QAErBD,EAAUxrB,YAAY,UACtBwrB,EAAUzyB,KAAK0O,EAAMgkB,QAG7B3gB,EAASygB,oBAAoBvpB,KAAO,WAChC,IAAIoU,EAAU/d,EAAE,sBAAwByS,EAASygB,oBAAoB1iB,GAAK,MAC1E,OAAIuN,EAAQ1gB,OAAS,EACV0gB,EAEJ/d,EAAE,IAAMyS,EAASygB,oBAAoB1iB,KAEhDrC,EAAUqB,QAAQnB,SAASoE,EAASygB,qBAEpCzgB,EAAS4gB,gBAAkB,SAAUxkB,EAAWvM,GAC5C6L,EAAUS,OAAO7Q,KAAK4E,KAAMkM,EAAWvM,GACvCK,KAAK0L,SAASoE,EAASC,KAAKyI,aAEhC1I,EAAS4gB,gBAAgBrkB,UAAY,IAAIb,EAAUS,OACnD6D,EAAS4gB,gBAAgB7iB,GAAK,mCAC9BiC,EAAS4gB,gBAAgB9jB,OAAS,iCAClCkD,EAAS4gB,gBAAgBtiB,QAAU,CAC/B8c,OAAQ,SAARA,OAAkB3e,EAAGgB,GAEjB,GADAhB,EAAEsJ,iBACEtI,EAAOvG,KAAK,kCAAkCtM,OAAS,EAAG,CAC1D,IAAIi2B,EAAY5sB,SAASqP,cAAc,OACvC/V,EAAEszB,GAAWntB,SAAS,4CACtBnG,EAAEszB,GAAW9sB,SAAS,QACtBxG,EAAE,QAAQmF,IAAI,WAAY,UAC1B+K,EACKvG,KAAK,kCACLugB,QACA7U,QAAQ,6EACR7O,SAAS8sB,GACThY,cACA3R,KAAK,KACL+a,QACA6J,QACL,IAAIgF,EAAU7sB,SAASqP,cAAc,OACrC/V,EAAEuzB,GAASptB,SAAS,iBACpBnG,EAAEuzB,GAAS/sB,SAAS,6CACpBxG,EAAEuzB,GAAS5pB,KAAK,KAAK+a,QAAQ6J,QAEjCre,EAAOnB,qBAEX0Z,QAAS,SAATA,QAAmBvZ,GACf,IAAI6C,EAAU,IAAI5D,EAAUsF,gBAC5B1B,EAAQsB,QACRZ,EAASC,KAAK4X,YAAYvY,EAAQyB,MAClCtE,EAAEsJ,iBACF,IAAInV,EAAMrD,EAAE2C,MAAM5D,KAAK,YACvB0T,EAASC,KAAKyI,WAAWsN,QAAQplB,KAGzCoP,EAAS4gB,gBAAgB1pB,KAAO,WAC5B,IAAIoU,EAAU/d,EAAE,sBAAwByS,EAAS4gB,gBAAgB7iB,GAAK,MACtE,OAAIuN,EAAQ1gB,OAAS,EACV0gB,EAEJ/d,EAAE,IAAMyS,EAAS4gB,gBAAgB7iB,KAE5CiC,EAAS4gB,gBAAgBljB,aAAe,CACpCoc,KAAM,SAANA,KAAgB5Y,EAASzD,EAAQd,GAC7B,IAAI/L,EAAM+L,EAAMzQ,WAAsB,UAClC2T,EAAeG,EAASyZ,aAAalhB,IACrChL,EAAE,yEAA2EqD,EAAM,YAEnFiP,IACAA,EAAa2B,WAAWN,GACxBrB,EAAaia,OACbja,EAAarN,OACbqN,EAAatK,SAAS4T,SAAS,KAAKjS,KAAK,oBAAoB5E,SAC7DqF,YAAW,WACPkI,EAAatK,SAASgM,UACtBhU,EAAE,4DAA8DqD,EAAM,MAAMiE,OAC5EmL,EAASyZ,aAAalhB,IAAI,4BAA8B3H,EAAM,MAAMgpB,aACrE,OAGXpf,MAAO,SAAPA,MAAiB0G,EAASzD,EAAQd,GAC9B,IAAI/L,EAAM+L,EAAMzQ,WAAsB,UAClC2T,EAAeG,EAASyZ,aAAalhB,IACrChL,EAAE,yEAA2EqD,EAAM,aAEnFiP,IACAA,EAAa2B,WAAWN,GACxBrB,EAAarF,QACbqF,EAAarN,QAEjBjF,EAAE,4DAA8DqD,EAAM,MAAMiE,QAEhF0rB,cAAe,SAAfA,cAAyBrf,EAASzD,GAC9B,IAAIoC,EAAeG,EAASyZ,aAAalhB,IAAIkF,EAAOvG,KAAK,oBACrD2I,IACAA,EAAa2B,WAAWN,GACxBrB,EAAaia,OACbja,EAAarN,QAEjBjF,EAAE,kEAAkEsH,QAExEkmB,eAAgB,SAAhBA,eAA0B7Z,EAASzD,GAC/B,IAAIoC,EAAeG,EAASyZ,aAAalhB,IAAIkF,EAAOvG,KAAK,oBACrD2I,IACAA,EAAa2B,WAAWN,GACxBrB,EAAarF,QACbqF,EAAarN,SAGrBguB,WAAY,SAAZA,WAAsBtf,GACH,eAAXA,GACAvJ,YAAW,WACPgC,SAASya,WACV,OAIfpU,EAAS4gB,gBAAgBrkB,UAAUG,OAAS,SAAUC,EAAOC,GACzDA,EAAY,IAAI1M,KAAKgH,KAAK,eAAe5K,KAAK,YAC9CpB,OAAOqgB,eAAevL,EAAS4gB,gBAAgBrkB,WAAWG,OAAOpR,KAAK4E,KAAMyM,EAAOC,IAEvFoD,EAAS4gB,gBAAgBrkB,UAAUD,kBAAoB,WACnDpR,OAAOqgB,eAAevL,EAAS4gB,gBAAgBrkB,WAAWD,kBAAkBhR,KAAK4E,MACjF3C,EAAE0G,UAAUE,GAAG,SAAS,SAAUjD,GAEzB3D,EAAE2D,EAAMmK,QAAQjJ,QAAQ,6CAA6CxH,QACrE2C,EAAE2D,EAAMmK,QAAQjJ,QAAQ,qCAAqCxH,SAC9D2C,EAAE,6CAA6CuI,GAAG,cAElD5E,EAAM6U,iBACNxY,EAAE,6CAA6C+E,SAC/C/E,EAAE,QAAQmF,IAAI,WAAY,YAGlCnF,EAAE0G,UAAUE,GAAG,QAAS,oDAAoD,WACxE5G,EAAE,6CAA6C+E,SAC/C/E,EAAE,QAAQmF,IAAI,WAAY,WAE9BnF,EAAE,oEAAoE4E,MACtE5E,EAAE,oEAAoEmE,OAAM,SAAU+K,GAClF,IAAI6C,EAAU,IAAI5D,EAAUsF,gBAC5B1B,EAAQsB,QACRZ,EAASC,KAAK4X,YAAYvY,EAAQyB,MAClCtE,EAAEsJ,iBACF,IAAInV,EAAMrD,EAAE2C,MAAM5D,KAAK,YACvB0T,EAASC,KAAKyI,WAAWsN,QAAQplB,OAGzC8K,EAAUqB,QAAQnB,SAASoE,EAAS4gB,iBAEpC5gB,EAAS+gB,eAAiB,SAAU3kB,EAAWvM,GAC3C6L,EAAUS,OAAO7Q,KAAK4E,KAAMkM,EAAWvM,GACvCK,KAAK0L,SAASoE,EAASC,KAAKuV,UAC5BtlB,KAAK0L,SAASoE,EAASC,KAAKwI,WAC5BvY,KAAK0L,SAASoE,EAASC,KAAKyI,YAC5BxY,KAAK0L,SAASoE,EAASC,KAAKiX,YAC5BhnB,KAAK0L,SAASoE,EAASC,KAAK0I,SAC5BzY,KAAK0L,SAASoE,EAASC,KAAK4W,WAEhC7W,EAAS+gB,eAAexkB,UAAY,IAAIb,EAAUS,OAClD6D,EAAS+gB,eAAehjB,GAAK,0BAC7BiC,EAAS+gB,eAAejkB,OAAS,KACjCkD,EAAS+gB,eAAexkB,UAAUpH,OAAS,WACvC,IAAI0K,EAAeG,EAASyZ,aAAalhB,IAAIrI,KAAKgH,KAAK,cACnD2I,GACAA,EAAaN,SAGrBS,EAAS+gB,eAAe7pB,KAAO,WAC3B,IAAIoU,EAAU/d,EAAE,sBAAwByS,EAAS+gB,eAAehjB,GAAK,MACrE,OAAIuN,EAAQ1gB,OAAS,EACV0gB,EAEJ/d,EAAE,IAAMyS,EAAS+gB,eAAehjB,KAE3CrC,EAAUqB,QAAQnB,SAASoE,EAAS+gB,gBACpC/gB,EAASghB,kBAAoB,SAAU5kB,EAAWvM,GAC9C6L,EAAUS,OAAO7Q,KAAK4E,KAAMkM,EAAWvM,GACvCK,KAAK0L,SAASoE,EAASC,KAAKuV,WAEhCxV,EAASghB,kBAAkBzkB,UAAY,IAAIb,EAAUS,OACrD6D,EAASghB,kBAAkBjjB,GAAK,8BAChCiC,EAASghB,kBAAkBlkB,OAAS,mCACpCkD,EAASghB,kBAAkB1iB,QAAU,CACjC8c,OAAQ,SAARA,OAAkB3e,EAAGgB,GACjBA,EAAOvG,KAAK,wCAAwCjG,WAG5D+O,EAASghB,kBAAkB9pB,KAAO,WAC9B,IAAIoU,EAAU/d,EAAE,sBAAwByS,EAASghB,kBAAkBjjB,GAAK,MACxE,OAAIuN,EAAQ1gB,OAAS,EACV0gB,EAEJ/d,EAAE,IAAMyS,EAASghB,kBAAkBjjB,KAE9CiC,EAASghB,kBAAkBzkB,UAAUD,kBAAoB,WACrDpR,OAAOqgB,eAAevL,EAASwb,kBAAkBjf,WAAWD,kBAAkBhR,KAAK4E,MACnF,IAAI+wB,EAAU1zB,EAAE,UACZ2zB,EAAS3zB,EAAE,gBACfA,EAAE,eAAe4E,MACjB5E,EAAE,eAAemE,OAAM,SAAUR,GACzB+vB,EAAQr2B,SACRq2B,EAAQvtB,SAAS,UACjBwtB,EAAOhsB,YAAY,UACnB3H,EAAE,QAAQmG,SAAS,YACnBnG,EAAE,2BAA2BuuB,QAC7B5qB,EAAM6U,sBAIlBrK,EAAUqB,QAAQnB,SAASoE,EAASghB,mBACpChhB,EAASmhB,oBAAsB,SAAU/kB,EAAWvM,GAChD6L,EAAUS,OAAO7Q,KAAK4E,KAAMkM,EAAWvM,GACvCK,KAAK0L,SAASoE,EAASC,KAAKuW,gBAEhCxW,EAASmhB,oBAAoB5kB,UAAY,IAAIb,EAAUS,OACvD6D,EAASmhB,oBAAoBpjB,GAAK,sCAClCiC,EAASmhB,oBAAoBrkB,OAAS,qCACtCkD,EAASmhB,oBAAoBjqB,KAAO,WAChC,IAAIoU,EAAU/d,EAAE,sBAAwByS,EAASmhB,oBAAoBpjB,GAAK,MAC1E,OAAIuN,EAAQ1gB,OAAS,EACV0gB,EAEJ/d,EAAE,IAAMyS,EAASmhB,oBAAoBpjB,KAEhDiC,EAASmhB,oBAAoB7iB,QAAU,CACnCuI,QAAS,SAATA,QAAmBpK,EAAGgB,GAClB,IAAI6B,EAAU,IAAI5D,EAAUsF,gBAC5B1B,EAAQsB,QACRZ,EAASC,KAAK4X,YAAYvY,EAAQyB,MAClCtE,EAAEsJ,iBACF/F,EAASC,KAAKuW,cAAc3P,QAAQpJ,EAAOvG,KAAK,uBAAuB4H,SAG/EkB,EAASmhB,oBAAoB5kB,UAAUpH,OAAS,SAAUwH,GACtDzM,KAAKsN,oBAAoBtN,KAAMyM,GAC/BzM,KAAKgO,UAET8B,EAASmhB,oBAAoBzjB,aAAe,CACxC0jB,aAAc,SAAdA,aAAwBlgB,EAASzD,GAC7BA,EAAOvG,KAAK,iBAAiBrC,OAC7B4I,EAAOvG,KAAK,kBAAkBrC,OAC9B,IAAIgL,EAAeG,EAASyZ,aAAalhB,IAAIkF,EAAOvG,KAAK,mBACzD2I,EAAa2B,WAAWN,GACxBrB,EAAarF,QACbqF,EAAarN,QAEjBgI,MAAO,SAAPA,MAAiB0G,EAASzD,GACtBA,EAAOvG,KAAK,iBAAiBrC,OAC7B,IAAIwsB,EAAc5jB,EAAOvG,KAAK,uBAAuB9E,QAAQ,gBACzDyN,EAAeG,EAAS+Z,kBAAkBxhB,IAAI8oB,GAC9CxhB,IACAA,EAAarF,QACbqF,EAAa2B,WAAWN,GACxBrB,EAAarN,SAGrBsnB,KAAM,SAANA,KAAgB5Y,EAASzD,GACrBA,EAAOvG,KAAK,kBAAkBrC,OAC9B,IAAIwsB,EAAc5jB,EAAOvG,KAAK,uBAAuB9E,QAAQ,gBACzDyN,EAAeG,EAASyZ,aAAalhB,IAAIkF,EAAOvG,KAAK,kBACrDoqB,EAAoBthB,EAAS+Z,kBAAkBxhB,IAAI8oB,GACnDC,IACAA,EAAkB/hB,QAClB+hB,EAAkBzsB,QAElBgL,IACAA,EAAa2B,WAAWN,GACxBrB,EAAaia,OACbja,EAAarN,UAIzBkJ,EAAUqB,QAAQnB,SAASoE,EAASmhB,qBACpCnhB,EAAS2G,KAAK1G,KAAKzN,KAAO,aAC1BwN,EAAS2G,KAAK1G,KAAKshB,eAAiB,SAAU/vB,GAC1C,IAAIgwB,EAAWj0B,EAAE,2BACbiE,EAAKmvB,KAAO,EACZa,EAAS9tB,SAAS,aAElB8tB,EAAStsB,YAAY,cAS7B8K,EAASC,KAAKrE,SAASoE,EAASC,KAAKyI,WAAY1I,EAAS2G,KAAK1G,KAAKshB,gBACpEvhB,EAASC,KAAKrE,SAASoE,EAASC,KAAKiX,WAAYlX,EAAS2G,KAAK1G,KAAKshB,gBACpEh0B,EAAE0G,UAAUuH,OAAM,WACd,IAAIimB,EAAW9nB,SAAS+nB,KAAK51B,QAAQ,aAAe,GAAK6N,SAASC,KAAK9N,QAAQ,aAAe,EAC1F21B,GAAYl0B,EAAE,mCAAmCU,OAAS,GAC1D+R,EAAS2G,KAAK1G,KAAKzN,OAEnBivB,GACA/lB,EAAUsC,MAAM8J,2BAEsBU,IAAtCxI,EAAS2G,KAAK1G,KAAKshB,gBACnBvhB,EAAS2G,KAAK1G,KAAKshB,eAAe,CAACZ,KAAMpzB,EAAE,mCAAmCU,SAClFV,EAAE0G,UAAUE,GAAG,QAAS,sEAAsE,SAAUsI,GACpG,OAAIlP,EAAE2C,MAAM2F,SAAS9D,SAAS,mBAG1BxE,EAAE2C,MAAMgb,KAAK,6BAA6BrC,cAC1Ctb,EAAE2C,MAAM4T,YAAY,QACpBnM,YAAW,WACPpK,EACI,iNACFkL,MAAK,WACH,IAAIkpB,EAAiBp0B,EAAE2C,MAAM0xB,SAAW,GACpCD,EAAiB,IAAMp0B,EAAE2C,MAAM4F,GAAG,YAClCvI,EAAE2C,MAAMkC,QAAQ,wBAAwBM,IAAI,gBAAiBivB,GAE7Dp0B,EAAE2C,MAAMkC,QAAQ,wBAAwBM,IAAI,gBAAiB,aAGtE,KAEqD,YAApDnF,EAAE2C,MAAMkC,QAAQ,iBAAiBM,IAAI,aACpCnF,EAAEkP,EAAEpB,QAAQjJ,QAAQ,YAAYxH,SAEjC2C,EAAE,wBAAwBuW,YAAY,iBACtCvW,EAAE2C,MAAMkC,QAAQ,wBAAwB0R,YAAY,oBArBjD,KA0BfqI,mBAEJ5e,EAAE0G,UAAU4tB,cAAa,WACrB1V,wBA+BsC3D,IAAtCxI,EAAS2G,KAAK1G,KAAKshB,gBACnBh0B,EAAEzC,QAAQ0R,QAAO,WACbwD,EAAS2G,KAAK1G,KAAKshB,eAAe,CAACZ,KAAMpzB,EAAE,mCAAmCU,YAGtFyN,EAAUC,OAAOC,SAAS,eAAe,WACrCF,EAAUqB,QAAQuD,MAAMjU,SAAQ,SAAUoT,GACtCA,EAAKF,cAGb7D,EAAUC,OAAOC,SAAS,mBAAmB,gBAEZ,IADbrO,EAAE0G,UACG6tB,MACjBv0B,EAAE0G,UAAU6tB,UAGpB9hB,EAASC,KAAK0X,iBAAgB,WAC1Bhe,SAASya,YAGb7mB,EAAE0G,UAAUuH,OAAM,WACdjO,EAAE,8BAA8BmE,OAAM,WAClC,IAAI6tB,EAAUhyB,EAAE2C,MACZ6xB,EAAWxC,EAAQrU,OACvB6W,EAASlZ,aAAY,WACe,GAA5Btb,EAAE,KAAMw0B,GAAUn3B,SAClBm3B,EAASjsB,GAAG,aACZypB,EAAQrqB,YAAY,aACpBqqB,EAAQ7rB,SAAS,cAEjB6rB,EAAQrqB,YAAY,YACpBqqB,EAAQ7rB,SAAS,qBAI7BnG,EAAE,+BAA+BkL,MAAK,SAAUwK,EAAOpT,GACpB,GAA3BtC,EAAE,KAAMsC,GAASjF,QACjB2C,EAAEsC,GAASuC,QAAQ,cAAc8B,SAAS,WAAWR,SAAS,wBAI1EsM,EAASgiB,sBAAwB,SAAU5lB,EAAWvM,GAClD6L,EAAUS,OAAO7Q,KAAK4E,KAAMkM,EAAWvM,IAE3CmQ,EAASgiB,sBAAsBzlB,UAAY,IAAIb,EAAUS,OACzD6D,EAASgiB,sBAAsBjkB,GAAK,6BACpCiC,EAASgiB,sBAAsBllB,OAAS,uCACxCkD,EAASgiB,sBAAsB1jB,QAAU,CACrC8c,OAAQ,SAARA,OAAkB3e,EAAGgB,GACjBhB,EAAEsJ,iBACFtI,EAAOvG,KAAK,4BAA4B4M,YAAY,YACpDrG,EAAOvG,KAAK,kBAAkB2R,gBAGtC7I,EAASgiB,sBAAsB9qB,KAAO,WAClC,IAAIoU,EAAU/d,EAAE,sBAAwByS,EAASgiB,sBAAsBjkB,GAAK,MAC5E,OAAIuN,EAAQ1gB,OAAS,EACV0gB,EAEJ/d,EAAE,IAAMyS,EAASgiB,sBAAsBjkB,KAElDrC,EAAUqB,QAAQnB,SAASoE,EAASgiB,uBACpC,IAAIC,EAAY,GAChB10B,GAAE,WACE,IAAI20B,EAAQ,QACRC,EAAQ,QACRC,EAAU,yBACVC,EAAU,QACdJ,EAAUK,aAAe,SAAUzxB,GAC/B,IAAI0xB,EAAQ,EAgBZ,OAfIL,EAAMvpB,KAAK9H,IACX0xB,IAEAJ,EAAMxpB,KAAK9H,IACX0xB,IAEAH,EAAQzpB,KAAK9H,IACb0xB,IAEAF,EAAQ1pB,KAAK9H,IACb0xB,IAES,GAATA,IACAA,EAAQ,GAELA,GAEXN,EAAUO,gBAAkB,SAAUC,EAAY5xB,EAAO6xB,EAAKzN,EAAK5Z,GAC/D,IAAIsnB,EAAiBp1B,EAAE,qCACnBq1B,EAAa,YACbz4B,EAAS,SACT04B,EAAO,OACPC,EAAY,WACM,MAAlBH,IAC8B,QAA1BA,EAAe/sB,QAA8C,KAA1B+sB,EAAe/sB,QAClDgtB,EAAa,YACbz4B,EAAS,SACT04B,EAAO,OACPC,EAAY,aAEZF,EAAa,YACbz4B,EAAS,SACT04B,EAAO,QACPC,EAAY,cAGpBL,EAAWvtB,YAAY,8CACvB,IAAI6tB,EAAgBx1B,EAAE,wBAEtB,GADAw1B,EAAc7tB,YAAY,+CACrBrE,EAKD,OAJAkyB,EAAc7rB,KAAK,aAAatB,KAAKgtB,GAAY/tB,OACjDkuB,EAAc7rB,KAAK,aAAatB,KAAKktB,GAAWjuB,OAChDkuB,EAAc7tB,YAAY,aAC1B6tB,EAAc7tB,YAAY,UAG9B,IAAItK,EAASiG,EAAMyM,OAAO1S,OAC1B,GAAIA,EAAS83B,EAMT,OALAD,EAAW/uB,SAAS,aACpBqvB,EAAcrvB,SAAS,aACvBqvB,EAAc7rB,KAAK,aAAatB,KAAKgtB,GAAYpwB,OACjDuwB,EAAc7tB,YAAY,aAC1B6tB,EAAc7tB,YAAY,UAG9B,GAAItK,EAASqqB,EAQT,OAPAwN,EAAW/uB,SAAS,YACpBqvB,EAAcrvB,SAAS,YACvBqvB,EAAc7rB,KAAK,aAAatB,KAAKktB,GAAWtwB,OAChDuwB,EAAc7tB,YAAY,QAC1B6tB,EAAc7tB,YAAY,UAC1B6tB,EAAcrvB,SAAS,iBACvBnG,EAAE,wBAAwBmF,IAAI,UAAW,SAG7C,IAAI6vB,EAAQN,EAAUK,aAAazxB,EAAO6xB,EAAKzN,GAClC,GAATsN,IACAA,GAASld,KAAKC,OAAO1a,EAAS83B,GAAO,IAEzC,IAAIM,EAAOT,EAAQlnB,EACf2nB,EAAO,GACPP,EAAW/uB,SAAS,QACpBqvB,EAAcrvB,SAAS,QACvBqvB,EAAc7tB,YAAY,UAC1B6tB,EAAc7rB,KAAK,aAAatB,KAAKitB,GAAMrwB,QACpCwwB,GAAQ,GAAKA,GAAQ,GAC5BP,EAAW/uB,SAAS,UACpBqvB,EAAcrvB,SAAS,UACvBqvB,EAAc7tB,YAAY,QAC1B6tB,EAAc7rB,KAAK,aAAatB,KAAKzL,GAAQqI,QACtCwwB,EAAO,IACdP,EAAW/uB,SAAS,eACpBqvB,EAAc7tB,YAAY,QAC1B6tB,EAAcrvB,SAAS,UACvBqvB,EAAc7rB,KAAK,aAAatB,KAAKzL,GAAQqI,SAGrDjF,EAAE,gCAAgCkL,MAAK,WACnC,IAAKlL,EAAE,cAAc3C,OAAQ,CACzB,IAAI63B,EAAal1B,EAAE2C,MAEfwtB,EADS+E,EAAWrwB,QAAQ,gBACZ8E,KAAK,SACrB1F,EAAOixB,EAAWjxB,OAClBkxB,EAAMlxB,EAAKkxB,IACXzN,EAAMzjB,EAAKyjB,IACXgO,EAAWzxB,EAAKyxB,SACpBhB,EAAUO,gBAAgBC,EAAY/E,EAAO5e,MAAO4jB,EAAKzN,EAAKgO,GAC9DvF,EAAOvpB,GAAG,gBAAgB,WACtB8tB,EAAUO,gBAAgBC,EAAY/E,EAAO5e,MAAO4jB,EAAKzN,EAAKgO,UAKtE11B,EAAE,qBAAqB3C,OAAS,IAChC2C,EAAE,+BAA+BmG,SAAS,6BAC1CnG,EAAE,8BAA8B2H,YAAY,8BACxC3H,EAAE,8BAA8B3C,OAAS,IACzC2C,EAAE,8BAA8BkqB,QAAQyL,UAAU31B,EAAE,qBAAqB6E,QAAQ,QAAQyD,UACzFtI,EAAE,8BAA8BwlB,OAAOzgB,WAG/CqF,YAAW,WACPpK,EAAE,+BAA+BgU,QAAQ,UAC1C,QAEPhU,EAAE0G,UAAUuH,OAAM,WACdjO,EAAE,uCAAuC4G,GAAG,SAAS,WAC7C5G,EAAE2C,MAAM4O,MAAMxB,OAAO1S,OAAS,GAC9B2C,EAAE2C,MAAMkC,QAAQ,QAAQ8E,KAAK,aAAaxD,SAAS,iBACnDnG,EAAE2C,MAAMkC,QAAQ,QAAQ8E,KAAK,aAAakI,KAAK,YAAY,KAE3D7R,EAAE2C,MAAMkC,QAAQ,QAAQ8E,KAAK,aAAahC,YAAY,iBACtD3H,EAAE2C,MAAMkC,QAAQ,QAAQ8E,KAAK,aAAakI,KAAK,YAAY,OAGnE7R,EAAE,4CAA4C4G,GAAG,SAAS,SAAUsI,GAChEA,EAAEsJ,iBACFxY,EAAE2C,MAAMkC,QAAQ,qBAAqByC,UAEzCtH,EAAE,6BAA6BiF,OAC/B,IAAI0vB,EAAQ,QACRC,EAAQ,QACRC,EAAU,yBACVC,EAAU,QAwEV90B,EAAE,eACFA,EAAE,cACG4G,GAAG,4BAA4B,WAC5B,IAAIgvB,EAAO51B,EAAE2C,MAAM4O,MACf2jB,EAAal1B,EAAE,cAAc4b,SAAS,gCACtCia,EAAWX,EAAWjxB,KAAK,YAC3B6xB,EAAcZ,EAAWjxB,KAAK,OAC9B8xB,EAAWb,EAAWjxB,KAAK,OAC3BmxB,EAAiBp1B,EAAE,qCAClB61B,IACDA,EAAW,GAEf,IAAI7J,EACA,iFAnFhB,SAASgK,cAAcC,EAAMC,EAAQC,GAyBjC,MAvBa,QAATF,GAA2B,KAATA,EACH,IAAXE,GAA2B,IAAXA,GAA2B,IAAXA,EACtB,2BAA6BD,EAAS,uBAG5C,2BACAA,EACA,mCACAC,EACA,qBAGO,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EACtB,6BAA+BD,EAAS,qBAG9C,6BACAA,EACA,oCACAC,EACA,iCA+DAH,CAAcZ,EAAe/sB,OAAQytB,EAAaD,GAClD,QA1DhB,SAASO,cAAcH,EAAML,GACzB,IAAIS,EAsCJ,MAnCa,QAATJ,GAA2B,KAATA,EAOlBI,EACI,uHANS,IAATT,EACY,gDAEA,OAGZ,iMAPO,YAgBP,WAGS,IAATA,EACY,4CAEA,+CAEhBS,EACI,4SAPO,YAcP,WAEDA,EAoBKD,CAAchB,EAAe/sB,OAAQwtB,GACrC,SACC71B,EAAE,kBAAkB3C,QACrB2C,EAAE2C,MAAMkC,QAAQ,gBAAgB4D,OAAOujB,GAE3C0I,EAAUO,gBAAgBC,EAAYU,EAAME,EAAaC,EAAUF,GAC/DD,EAAKv2B,MAAMs1B,GACX30B,EAAE,WAAWmG,SAAS,SAEtBnG,EAAE,WAAW2H,YAAY,SAEzBiuB,EAAKv2B,MAAMu1B,GACX50B,EAAE,YAAYmG,SAAS,SAEvBnG,EAAE,YAAY2H,YAAY,SAE1BiuB,EAAKv2B,MAAMw1B,GACX70B,EAAE,YAAYmG,SAAS,SAEvBnG,EAAE,YAAY2H,YAAY,SAE1BiuB,EAAKv2B,MAAMy1B,GACX90B,EAAE,WAAWmG,SAAS,SAEtBnG,EAAE,WAAW2H,YAAY,SAGzB3H,EAAE,kBAAkB3C,QACpB2C,EAAE,yBAAyB3C,QAAUw4B,GACrCD,EAAKv4B,QAAU04B,GACfH,EAAKv4B,QAAUy4B,EAEf91B,EAAE,kBAAkBgU,QAAQ,QAC3BhU,EAAE,kBAAkB8T,OAAO,WAEnCwiB,MAAK,WACFt2B,EAAE,kBAAkBgU,QAAQ,WAG1BhU,EAAE,qCACR4G,GAAG,QAAS,yBAAyB,SAAUsI,GACnDlP,EAAE,yCAAyC6R,KAAK,YAAY,GAC5D3C,EAAEsJ,oBAENxY,EAAE0G,UAAUE,GAAG,kBAAmB,mDAAmD,SAAUsI,GACvFlP,EAAE2C,MAAM4O,MACRvR,EAAE,yCAAyC6R,KAAK,YAAY,GAE5D7R,EAAE,yCAAyC6R,KAAK,YAAY,MASpE7R,EAAE,UAAU4G,GAAG,gBAAgB,YAL/B,SAAS2vB,WAAWpO,GAEhB,MADgB,gEACC/c,KAAK+c,GAIlBoO,CAAWv2B,EAAE,UAAUuR,QAAuC,QAA7BvR,EAAE,kBAAkBuR,MAGrDvR,EAAE,iCAAiCjB,KAAK,WAAY,QAFpDiB,EAAE,iCAAiCme,WAAW,kBAM1D,SAAWne,GACP,SAASw2B,QAAQl0B,GACb,OACItC,EAAEy2B,KAAKC,QAAQF,QAAQl0B,KACtBtC,EAAEsC,GACEmgB,UACAkU,UACAp3B,QAAO,WACJ,MAAqC,WAA9BS,EAAEmF,IAAIxC,KAAM,iBACpBtF,OA2Bf2C,EAAEue,OAAOve,EAAEy2B,KAAK,KAAM,CAClBG,UAAW,SAAXA,UAAqBt0B,GACjB,OAzBR,SAASs0B,WAAUt0B,EAASu0B,GACxB,IAAIC,EACAC,EACA76B,EACAmC,EAAWiE,EAAQjE,SAASC,cAChC,MAAI,SAAWD,GAEX04B,GADAD,EAAMx0B,EAAQ9D,YACA6S,QACT/O,EAAQ+J,OAAS0qB,GAA0C,QAA/BD,EAAIz4B,SAASC,oBAG9CpC,EAAM8D,EAAE,eAAiB+2B,EAAU,KAAK,KACxBP,QAAQt6B,MAGvB,sCAAsCkP,KAAK/M,IACrCiE,EAAQ00B,SACT,MAAQ34B,GACRiE,EAAQ+J,MACRwqB,IAAqBL,QAAQl0B,GAM5Bs0B,CAAUt0B,GAAU20B,MAAMj3B,EAAEjB,KAAKuD,EAAS,iBAtC7D,CAyCG8K,QAEHpN,GAAE,WACE,IAAIk3B,EAAgBl3B,EAAE,8BACtBk3B,EAActwB,GAAG,QAAS,WAAW,WACjCjD,MAAM6U,iBACNxY,EAAE6M,KAAK,CACHwU,OAAQ,MACRxV,IAAK7L,EAAE2C,MAAM5D,KAAK,QAAU,oBAC5B2a,UAAW,CAACC,iBAAiB,KAE5BpG,MAAK,WACF2jB,EAAcx2B,KAAK,2CAEtBy2B,MAAK,WACFD,EAAcx2B,KAAK,+BAG/B,IAAIizB,EAAS3zB,EAAE,oBACf2zB,EAAOlzB,MAAM,KAAM6G,KAAK,GACxBqsB,EAAO/sB,GAAG,QAAS,UAAU,WACzB+sB,EAAOxtB,SAAS,gBAIxBnG,GAAE,WACEA,EAAE,eAAekL,MAAK,WAClB,IAAI0G,EAAQ5R,EAAE2C,MACVsb,EAASrM,EAAMjI,KAAK,UACpBytB,EAAQxlB,EAAMjI,KAAK,aACnBuU,EAAUtM,EAAMjI,KAAK,WACzBiI,EAAMhL,GAAG,QAAS,WAAW,SAAUjD,GACnCA,EAAM6U,iBACNxY,EAAE6M,KAAK,CACHwU,OAAQ,MACRxV,IAAK7L,EAAE2C,MAAM5D,KAAK,QAAU,oBAC5B2a,UAAW,CAACC,iBAAiB,KAE5BpG,MAAK,WACF3B,EAAMjI,KAAK,YAAYjJ,KAAK,2CAE/By2B,MAAK,WACFvlB,EAAMjI,KAAK,YAAYjJ,KAAK,+BAGxC,IAAIwX,EAAS,SAATA,SACK+F,EAAO1M,OAAU6lB,EAAM7lB,MAGxB2M,EAAQC,WAAW,YAFnBD,EAAQnf,KAAK,YAAY,IAKjCkf,EAAOrX,GAAG,cAAesR,GACzBkf,EAAMxwB,GAAG,cAAesR,GACxBA,UAGRlY,GAAE,WACEA,EAAE,0BAA0BkL,MAAK,WAC7B,IAAI0G,EAAQ5R,EAAE2C,MACV00B,EAASzlB,EAAMjI,KAAK,UACpBuU,EAAUtM,EAAMjI,KAAK,WACrBuO,EAAS,SAATA,SACKmf,EAAO9lB,MAGR2M,EAAQC,WAAW,YAFnBD,EAAQnf,KAAK,YAAY,IAKjCs4B,EAAOzwB,GAAG,cAAesR,GACzBA,IACAtG,EAAM2C,QAAO,SAAU5Q,GACfua,EAAQnf,KAAK,aACb4E,EAAM6U,0BAKtBxY,GAAE,WACE,IASIs3B,EATA5D,EAAU1zB,EAAE,UACZ2zB,EAAS3zB,EAAE,gBACXie,EAAS0V,EAAOhqB,KAAK,UACrB4tB,EAAY5D,EAAOhqB,KAAK,aACxB6tB,EAAO7D,EAAOhqB,KAAK,sBACnB8tB,EAAY9D,EAAOhqB,KAAK,yBACxBmS,EAAW6X,EAAOhqB,KAAK,YACvBuU,EAAUyV,EAAOhqB,KAAK,WACtB+tB,EAAQ/D,EAAOhqB,KAAK,oBAEpBguB,GAAS,EAGTC,EAASjE,EAAOhqB,KAAK,UACzB+tB,EAAMxsB,MAAK,SAAUwK,GACbA,IAAUgiB,EAAMr6B,OAAS,IACzBi6B,EAAWt3B,EAAE2C,UAGrBgxB,EAAO/sB,GAAG,WAAW,SAAUsI,GAPnB,KAQJA,EAAEmP,UACFsZ,GAAS,GAVJ,KAYJzoB,EAAEmP,SAAWnP,EAAEkP,SACXuZ,EA2Cb,SAASE,YACLP,EAAS1yB,MACTgzB,EAAOhxB,GAAG,YAAY,WAClB0wB,EAAS/I,WA3CLsJ,GAiCZ,SAASC,WACLF,EAAOhzB,MACP0yB,EAAS1wB,GAAG,YAAY,WACpBgxB,EAAOrJ,WAtCHuJ,OAMZ93B,EAAE,8CAA8CmE,OAAM,SAAUR,GAC5D+vB,EAAQvtB,SAAS,UACjBwtB,EAAOhsB,YAAY,UACnB3H,EAAE,QAAQmG,SAAS,YACnBxC,EAAM6U,oBAEVxY,EAAE,qBAAqBmE,OAAM,WACzBnE,EAAE,2BAA2BmE,WAEjCwvB,EAAO/sB,GAAG,QAAS,UAAU,SAAUsI,GACnCA,EAAEsJ,iBACFxY,EAAE,QAAQ2H,YAAY,YACtBgsB,EAAOxtB,SAAS,UAChBqxB,EAAKrxB,SAAS,mBAAmBwB,YAAY,gBAC7CuW,EAAQnf,KAAK,YAAY,GACzB04B,EAAU14B,KAAK,WAAW,GAC1Bkf,EAAO1M,IAAI,IACXgmB,EAAUhmB,IAAI,IACduK,EAASpb,KAAK,OAElBV,EAAE0G,UAAUE,GAAG,QAAS+sB,GAAQ,SAAUzkB,GACrB,IAAbA,EAAEmP,SACFsV,EAAOhqB,KAAK,UAAUnJ,QAAQ,SAzC1B,KA2CJ0O,EAAEmP,UACFsZ,GAAS,SAuCrB33B,GAAE,WACE,IAAI+3B,EAAU,sFACd/3B,EAAE,qBAAqBkL,MAAK,WACxB,IAAI0G,EAAQ5R,EAAE2C,MACV00B,EAASzlB,EAAMjI,KAAK,UACpBquB,EAAUpmB,EAAMjI,KAAK,WACrBuO,EAAS,SAATA,SACAlY,EAAE2C,MAAMs1B,QAAQ,UAAUtwB,YAAY,SAASgC,KAAK,YAAY5E,UAEhEuxB,EAAO,SAAPA,OACA,IAAIe,EAASr3B,EAAE2C,MACf,GAAI00B,EAAO9lB,QAAUwmB,EAAQ3sB,KAAKisB,EAAO9lB,OAAQ,CAC7C,IAAIkb,EAAS4K,EAAOY,QAAQ,UAC5BxL,EAAOtmB,SAAS,SAChB,IAAI2V,EAAW2Q,EAAO9iB,KAAK,YACvByrB,EAAiBp1B,EAAE,qCACnBiN,EAAQ,cACU,MAAlBmoB,IAEInoB,EAD0B,QAA1BmoB,EAAe/sB,QAA8C,KAA1B+sB,EAAe/sB,OAC1C,cAEA,wBAGXyT,EAASze,SACVye,EAAW9b,EAAE,iCAAiCwG,SAASimB,IAE3D3Q,EAASpb,KAAK,oBAAsBuM,KAG5CoqB,EAAOzwB,GAAG,OAAQ0vB,GAAM1vB,GAAG,SAAUsR,GACrC8f,EAAQpxB,GAAG,OAAQ0vB,GAAM1vB,GAAG,SAAUsR,SAG9ClY,GAAE,WACE,IAKIs3B,EALA5D,EAAU1zB,EAAE,UACZ2zB,EAAS3zB,EAAE,uBACXq3B,EAAS1D,EAAOhqB,KAAK,UACrBuU,EAAUyV,EAAOhqB,KAAK,WACtB+tB,EAAQ/D,EAAOhqB,KAAK,oBAEpBguB,GAAS,EAGTC,EAASjE,EAAOhqB,KAAK,UACzB+tB,EAAMxsB,MAAK,SAAUwK,GACbA,IAAUgiB,EAAMr6B,OAAS,IACzBi6B,EAAWt3B,EAAE2C,UAGrBgxB,EAAO/sB,GAAG,WAAW,SAAUsI,GAPnB,KAQJA,EAAEmP,UACFsZ,GAAS,GAVJ,KAYJzoB,EAAEmP,SAAWnP,EAAEkP,SACXuZ,EAwEb,SAASE,YACLP,EAAS1yB,MACTgzB,EAAOhxB,GAAG,YAAY,WAClB0wB,EAAS/I,WAxELsJ,GA8DZ,SAASC,WACLF,EAAOhzB,MACP0yB,EAAS1wB,GAAG,YAAY,WACpBgxB,EAAOrJ,WAnEHuJ,OAMZ93B,EAAE,sBAAsBmE,OAAM,SAAUR,GACpC+vB,EAAQvtB,SAAS,UACjBwtB,EAAOhsB,YAAY,UACnBgsB,EAAOhqB,KAAK,sBAAsB4kB,QAClC5qB,EAAM6U,oBAEVmb,EAAO/sB,GAAG,QAAS,UAAU,SAAUsI,GACnCA,EAAEsJ,iBACFmb,EAAOxtB,SAAS,UAChBnG,EAAE,QAAQ2H,YAAY,eAE1BgsB,EAAO/sB,GAAG,SAAS,SAAUsI,GACR,IAAbA,EAAEmP,SACFsV,EAAOhqB,KAAK,UAAUnJ,QAAQ,SAhC1B,KAkCJ0O,EAAEmP,UACFsZ,GAAS,MAGjB,IAAII,EAAU,sFAad7Z,EAAQ/Z,OAAM,WACV,IAAKkzB,EAAO9lB,MACR,OAAO,EACJ,IAAKwmB,EAAQ3sB,KAAKisB,EAAO9lB,OAAQ,CACpC,IAAIkb,EAAS4K,EAAOY,QAAQ,UAC5BxL,EAAOtmB,SAAS,SAChB,IAAI2V,EAAW2Q,EAAO9iB,KAAK,YAK3B,OAJKmS,EAASze,SACVye,EAAW9b,EAAE,iCAAiCwG,SAASimB,IAE3D3Q,EAASpb,KAAK,gCACP,MA6Bf22B,EAAOzwB,GAAG,eApDG,SAATsR,OAAmBvU,GAEP,KADDA,EAAM0a,QAAU1a,EAAM0a,QAAU1a,EAAMya,SAIjDiZ,EAAOY,QAAQ,UAAUtwB,YAAY,SAASgC,KAAK,YAAY5E,SAC1DsyB,EAAO9lB,MAGR2M,EAAQC,WAAW,YAFnBD,EAAQnf,KAAK,YAAY,OA8CjCs4B,EAAOzwB,GAAG,QA3BC,SAAP0vB,OACA,GAAIe,EAAO9lB,QAAUwmB,EAAQ3sB,KAAKisB,EAAO9lB,OAAQ,CAC7C,IAAIkb,EAAS4K,EAAOY,QAAQ,UAC5BxL,EAAOtmB,SAAS,SAChB,IAAI2V,EAAW2Q,EAAO9iB,KAAK,YACtBmS,EAASze,SACVye,EAAW9b,EAAE,iCAAiCwG,SAASimB,IAE3D3Q,EAASpb,KAAK,sCAqB1BV,GAAE,WACEA,EAAE,gCAAgCkL,MAAK,WACnC,IAAI0G,EAAQ5R,EAAE2C,MACV00B,EAASzlB,EAAMjI,KAAK,UACpBuU,EAAUtM,EAAMjI,KAAK,WACrBuO,EAAS,SAATA,SACKmf,EAAO9lB,MAGR2M,EAAQC,WAAW,YAFnBD,EAAQnf,KAAK,YAAY,IAKjCs4B,EAAOzwB,GAAG,cAAesR,GACzBA,IACAtG,EAAM2C,QAAO,SAAU5Q,GACfua,EAAQnf,KAAK,aACb4E,EAAM6U,0BAMtBxY,GAAE,WACEA,EAAE,qBAAqBkL,MAAK,WACxB,IAAI0G,EAAQ5R,EAAE2C,MAAMgH,KAAK,QACrBuuB,EAAStmB,EAAMjI,KAAK,UACpBuU,EAAUtM,EAAMjI,KAAK,WACrBuO,EAAS,SAATA,SACKggB,EAAO3mB,MAGR2M,EAAQC,WAAW,YAFnBD,EAAQnf,KAAK,YAAY,IAKjCm5B,EAAOtxB,GAAG,cAAesR,GACzBA,IACAtG,EAAM2C,QAAO,SAAU5Q,GACfua,EAAQnf,KAAK,aACb4E,EAAM6U,0BAMtB,IAAI2f,EAAkB,SAAlBA,gBAAkBC,GAClBA,EAAKltB,MAAK,SAAC7H,EAAK6O,GACZ,IAAMmmB,EAAYr4B,EAAEkS,GAAMvI,KAAK,QAC3BtG,IAAQ+0B,EAAK/6B,OAAS,EAI1Bg7B,EAAUlyB,SAAS,UAHfkyB,EAAU1wB,YAAY,cAOlC3H,GAAE,WACE,IAAIqT,EAAQ,IACRilB,EAAUt4B,EAAE,oBAChB,GAAKs4B,EAAQj7B,OAAb,CACA,IAAIk7B,EAAUD,EAAQr0B,OAAOu0B,MACzB9Q,EAAM4Q,EAAQr0B,OAAOyjB,IACrB+Q,EAAWz4B,EAAE,eACb04B,EAAU14B,EAAE,+CACZw0B,EAAWkE,EAAQ/uB,KAAK,YACxBgvB,EAAWD,EAAQ/uB,KAAK,qBACxBivB,EAAWF,EAAQ/uB,KAAK,qBACxBrJ,EAAWg4B,EAAQ3uB,KAAK,aAAajJ,OACzC43B,EAAQ1xB,GAAG,QAAS,QAAQ,WACpB2xB,EAAU7Q,IACV4Q,EAAQ7vB,OAAOnI,EAASyL,QAAQ,SAAUsH,MAC1CklB,IACAD,EAAQ/hB,YAAY,YAAagiB,GAAW7Q,IAEhDyQ,EAAgBG,EAAQ3uB,KAAK,cAEjC2uB,EAAQ1xB,GAAG,QAAS,WAAW,WAC3B5G,EAAE2C,MAAMkC,QAAQ,UAAUE,SAC1BwzB,IACAD,EAAQ/hB,YAAY,YAAagiB,GAAW7Q,GAC5CyQ,EAAgBG,EAAQ3uB,KAAK,cAGjC2uB,EAAQ1xB,GAAG,QAAS,iBAAiB,WACjC,IAAIiyB,EAAOP,EAAQ3uB,KAAK,kBAAkBA,KAAK,UAC3CmvB,EAAO94B,EAAE2C,MAAMkC,QAAQ,UAAU8E,KAAK,UACtCrG,EAAQw1B,EAAKvnB,MACjBunB,EAAKvnB,IAAIsnB,EAAKtnB,OACdsnB,EAAKtnB,IAAIjO,MAEbg1B,EAAQ1xB,GAAG,QAAS,wBAAwB,SAAUjD,GAClDA,EAAM6U,iBACNxY,EAAE6M,KAAK,CACHwU,OAAQ,MACRxV,IAAK7L,EAAE2C,MAAM5D,KAAK,QAAU,oBAC5B2a,UAAW,CAACC,iBAAiB,KAC9BpG,MAAK,SAAUtP,GACd,IAAI80B,EACA90B,EAAKsM,QACLwoB,EAASH,EAAS1O,SACXvgB,KAAK,YAAYjJ,KAAKuD,EAAK0P,SAElColB,EAASJ,EAASzO,QAEtBsK,EAAS9zB,KAAKq4B,EAAOr4B,QACrB+3B,EAAStyB,SAAS,UAClBuyB,EAAQ/wB,YAAY,UACpB6sB,EAAS/Y,UAAU,cAG3Bid,EAAQ9xB,GAAG,QAAS,WAAW,SAAUjD,GACrC6wB,EAAS3Z,QAAQ,QACjB6d,EAAQvyB,SAAS,UACjBxC,EAAM6U,wBAGdxY,GAAE,WACE,IAAIqT,EAAQ,IACR2lB,EAAUh5B,EAAE,oBAChB,GAAKg5B,EAAQ37B,OAAb,CACA,IAAIk7B,EAAUS,EAAQ/0B,OAAOu0B,MACzB9Q,EAAMsR,EAAQ/0B,OAAOyjB,IACrBpnB,EAAW04B,EAAQrvB,KAAK,aAAajJ,OACzCs4B,EAAQpyB,GAAG,QAAS,QAAQ,SAAUsI,GAC9BqpB,EAAU7Q,IACVsR,EAAQvwB,OAAOnI,EAASyL,QAAQ,SAAUsH,MAC1CklB,IACAS,EAAQziB,YAAY,YAAagiB,GAAW7Q,IAEhDyQ,EAAgBa,EAAQrvB,KAAK,cAEjCqvB,EAAQpyB,GAAG,QAAS,WAAW,WAC3B5G,EAAE2C,MAAMkC,QAAQ,UAAUE,SAC1BwzB,IACAS,EAAQziB,YAAY,YAAagiB,GAAW7Q,GAC5CyQ,EAAgBa,EAAQrvB,KAAK,kBAGrC3J,GAAE,WACEA,EAAE,cAAckL,MAAK,WACjB,IAAIoC,EAAUtN,EAAE2C,MACZs2B,EAAU3rB,EAAQ3D,KAAK,mBACvBuvB,EAAQ5rB,EAAQ3D,KAAK,SACrBwvB,EAAa7rB,EAAQ3D,KAAK,YAQ9BsvB,EAAQ/gB,QAAO,WACX,IAAIuY,EAAOwI,EAAQ1nB,MACnB2nB,EAAM/yB,SAAS,UACfgzB,EAAWhzB,SAAS,UAVZ,SAARmiB,QACA4Q,EAAMvvB,KAAK,YAAY4H,IAAI,IAC3B2nB,EAAMvvB,KAAK,UAAUhC,YAAY,SACjCuxB,EAAMvvB,KAAK,UAAU5K,KAAK,YAAY,GACtCm6B,EAAMvvB,KAAK,UAAU9E,QAAQ,gBAAgBsB,SAAS,UACtD+yB,EAAMvvB,KAAK,YAAYtB,KAAK,IAM5BigB,GACImI,EACA0I,EAAW55B,OAAO,IAAMkxB,GAAM9oB,YAAY,UAE1CuxB,EAAMvxB,YAAY,aAG1B2F,EAAQ1G,GAAG,QAAS,iBAAiB,SAAUsI,GAC3CA,EAAEsJ,iBACF,IAAI4gB,EAAWp5B,EAAE2C,MAAMkC,QAAQ,YAC/Bu0B,EAASzvB,KAAK,eAAeuB,MAAK,WAC9B,IAAI2E,EAAQ7P,EAAE2C,MACV02B,EAAUH,EAAMvvB,KAAK,cAAgBkG,EAAM5L,OAAOoN,MAClDhJ,EAAOwH,EAAMxH,OACbgxB,EAAQ9wB,GAAG,UACX8wB,EACK1vB,KAAK,UACLwU,WAAW,YACX5e,QAAO,WACJ,OAAOS,EAAE2C,MAAM4O,OAASlJ,GAAQrI,EAAE2C,MAAM0F,QAAUA,KAErDwJ,KAAK,YAAY,GAEtBwnB,EAAQ9nB,IAAIlJ,MAGpB,IAAIsS,EAAUue,EAAMvvB,KAAK,YAAY4H,MACrC,GAAIoJ,EAAS,CACTue,EAAMvvB,KAAK,UAAUxD,SAAS,UAC9B,IAAI+pB,EAAUgJ,EAAMvvB,KAAK,UAAYgR,GACrC,GAAIuV,EAAQ7yB,OAAQ,CAChB,IAAIyR,EAAQsqB,EAASzvB,KAAK,uBAAuBtB,OACjD6nB,EACKvmB,KAAK,UACLwU,WAAW,YACX5e,QAAO,WACJ,OAAOS,EAAE2C,MAAM4O,OAASzC,GAAS9O,EAAE2C,MAAM0F,QAAUyG,KAEtD+C,KAAK,YAAY,GACtBqe,EAAQ/R,WAAW,YACnB+R,EAAQrrB,QAAQ,gBAAgB8C,YAAY,UAC5CuoB,EAAQvoB,YAAY,WAG5ByxB,EAASjzB,SAAS,UAClB+yB,EAAMvxB,YAAY,aAEtB3H,EAAE,iBAAiBmE,OAAM,WACrB,IAAIm1B,EAAet5B,EAAE,iBACjBs5B,EAAa/wB,GAAG,aAGpB+wB,EAAan1B,QACbnE,EAAE,SAASmG,SAAS,UACpBnG,EAAE,YAAY2H,YAAY,cAE9B2F,EAAQ1G,GAAG,SAAU,YAAY,WAC7B,IAAItD,EAAQtD,EAAE2C,MAAM4O,MAChB2e,EAAUgJ,EAAMvvB,KAAK,UACzBumB,EAAQnxB,KAAK,YAAY,GAAMwS,IAAI,IACnC2e,EAAQ/pB,SAAS,UACjB,IAAIozB,EAAWrJ,EAAQ3wB,OAAO,IAAM+D,GAChCi2B,EAASl8B,SACTk8B,EAASpb,WAAW,YACpBob,EAAS5xB,YAAY,WAEzBuoB,EAAQrrB,QAAQ,gBAAgB0R,YAAY,UAAWgjB,EAASl8B,iBAI5E2C,GAAE,WACEA,EAAE,iBAAiBkL,MAAK,WACpB,IAAIsuB,EAAUx5B,EAAE2C,MACZub,EAAUsb,EAAQ7vB,KAAK,WACvBuO,EAAS,SAATA,SAEIshB,EAAQ7vB,KAAK,aAAapK,QAAO,WAC7B,OAAQS,EAAE2C,MAAM4O,SACjBlU,OAAS,EAEZ6gB,EAAQnf,KAAK,YAAY,GAEzBmf,EAAQC,WAAW,aAG3Bqb,EAAQ7vB,KAAK,aAAa/C,GAAG,cAAesR,GAC5CA,UAGRlY,GAAE,WACE,IAAIy5B,EAAWz5B,EAAE,iBACb05B,EAAUD,EAAS9vB,KAAK,WACxBjG,EAAS,SAATA,OAAmBi2B,EAAOr2B,GAC1Bq2B,EAAMhwB,KAAK,KAAK4M,YAAY,aAAcjT,GAC1Cq2B,EAAMhc,OAAOpH,YAAY,SAAUjT,IAEvCo2B,EAAQE,OAAM,WACV,IAAIvxB,EAAOrI,EAAE2C,MAAM4O,MAAMjT,cACzBm7B,EAAS9vB,KAAK,gBAAgBuB,MAAK,WAC/BxH,EAAO1D,EAAE2C,OAAQ0F,MAErBoxB,EAAS9vB,KAAK,gBAAgBuB,MAAK,WAC/B,IAAI2uB,EAAe75B,EAAE2C,MACrBk3B,EAAatjB,YAAY,SAAUsjB,EAAa51B,OAAOX,MAAMhF,cAAcC,QAAQ8J,GAAQ,MAE/FoxB,EAAS9vB,KAAK,eAAeuB,MAAK,WAC9B,IAAI4uB,EAAc95B,EAAE2C,MACpBm3B,EAAYvjB,YAAY,UAAWujB,EAAYnwB,KAAK,6BAA6BtM,cAGzFo8B,EAAS7yB,GAAG,QAAS,gBAAgB,SAAUjD,GAC3C,IAAIgR,EAAY3U,EAAE2C,MAAMgb,OAAOnZ,SAAS,UACxCb,EAAM6U,iBACN9U,EAAO1D,EAAE2C,OAAQgS,SAGzB3U,GAAE,WACEA,EAAE,wBAAwBkL,MAAK,WAC3B,IAAI0G,EAAQ5R,EAAE2C,MAAMgH,KAAK,QACrBuU,EAAUtM,EAAMjI,KAAK,WACrBuuB,EAAStmB,EAAMjI,KAAK,UACpBuO,EAAS,SAATA,SACKggB,EAAO3mB,MAGR2M,EAAQC,WAAW,YAFnBD,EAAQnf,KAAK,YAAY,IAKjCm5B,EAAOtxB,GAAG,cAAesR,GACzBA,UAIRlY,GAAE,WACE,IAAI+5B,EAAY/5B,EAAE,iBAClB+5B,EAAUnzB,GAAG,QAAS,gBAAgB,SAAUjD,GAC5CA,EAAM6U,iBACN,IAAImhB,EAAQ35B,EAAE2C,MACV6xB,EAAWmF,EAAMK,QAAQ,YAC7BL,EAAMpjB,YAAY,UAClBie,EAASje,YAAY,aAEzBvW,EAAE,wBAAwBmE,OAAM,WAC5BnE,EAAE,wBAAwBsH,OAC1BtH,EAAE,kBAAkBuW,YAAY,aAEpCvW,EAAE,wBAAwBmE,OAAM,WAC5BnE,EAAE,wBAAwBsH,UAG9B,IAAI2yB,EAAYF,EAAUpwB,KAAK,cAC/B,GAAIswB,EAAU58B,OAAQ,CAClB,IACI4G,EAAOg2B,EAAUh2B,OACjBA,EAAKi2B,OAASj2B,EAAKk2B,MAAQl2B,EAAKqe,KAChCtiB,EAAE6M,KAAK,CACHhB,IAJE,uCAKF5H,KAAM,CACFm2B,MAAOn2B,EAAKqe,IACZ+X,UAAW,cACXC,QAASr2B,EAAKk2B,KACdI,YAAat2B,EAAKi2B,MAClBviB,OAAQ,SAEZ7K,SAAU,QACV0tB,MAAO,aACRjnB,MAAK,SAAUkB,GACM,OAAhBA,EAAKkS,SACLsT,EAAUl7B,KAAK,OAAQ0V,EAAK5I,KAC5BouB,EAAUtyB,YAAY,kBAO1C3H,GAAE,WACE,IAAI04B,EAAU14B,EAAE,sBACZw0B,EAAWkE,EAAQ/uB,KAAK,YAC5B6qB,EAAS/Y,UAAU,QACnBid,EAAQ9xB,GAAG,QAAS,WAAW,SAAUjD,GACrC6wB,EAAS3Z,QAAQ,QACjB6d,EAAQvyB,SAAS,UACjBxC,EAAM6U,oBAKd,SAASiiB,wBAAwB/B,GAC7BA,EAAQj4B,MAAM,KAAM6G,KAAK,GAJzBmzB,CAAwB/B,MAO5B,IAAIgC,EAAM,GA4MV,SAASC,uBACL,IAAIhiB,EAAM3Y,EAAE,sBACR46B,EAAiB56B,EAAE,mBACnBiZ,EAAc,oCACd4hB,EAAgB5hB,EAMpB,GAJ8B,wDADTjZ,EAAE,kCACJqI,SAEfwyB,EADA5hB,EAAc,mDAGdN,EAAItb,OAAQ,KACRub,EAAKD,EAAIE,aAAa,CACtBC,kBAAkB,EAClB7U,KAAM,2CACN8U,aAAa,EACbC,aAAc,EACdqI,OAAQ,MACRyZ,SAAU,EACVC,KAAM,SACNC,iBAAkB,SAAlBA,iBAA4BC,GACxBC,KAEJC,iBACI,8MAQJliB,YAAaA,EACbmiB,aAAc,OACd9rB,SAAU,SAAVA,SAAoBrL,GAChB,GAAIA,EACA,MACI,qBACAA,EAAKo3B,SACL,gBACAp3B,EAAKkV,eAHL,mCAMAlV,EAAKiV,eACL,KACAjV,EAAKoN,KACL,UAKZiqB,EAAc,SAAdA,YAAwB3iB,GACxB,MAAO,6DAGPuiB,EAAiB,SAAjBA,iBACAtiB,EAAG2iB,OAAO76B,KAAKm6B,GACfjiB,EAAG2iB,OAAOp1B,SAAS,WACnByS,EAAG2iB,OAAOt2B,QAuBdjF,EAAE,0BAA0B4G,GAAG,QAAS,kBAAkB,SAAUsI,GAChEA,EAAEsJ,iBACF,IAAIra,EAAK6B,EAAE2C,MAAMkC,QAAQ,eACrB2L,EAAKxQ,EAAE2C,MAAMsB,KAAK,WACtBjE,EAAE2C,MAAM2E,OACRnJ,EAAGsK,OAAO,8BACVzI,EAAE6M,KAAK,CACHhB,IAAK,sDACL1B,KAAM,MACNlG,KAAM,CAACu3B,SAAUhrB,GACjBxD,QAAS,SAATA,UACI7O,EAAG4G,eAQf/E,EAAE4Y,GAAIhS,GAAG,SAAS,WACVgS,EAAG6iB,MAAMp+B,SACTub,EAAG6iB,MAAM18B,KAAK,cAAe,IAC7BiB,EAAE,eAAeyI,OAAO6yB,GACxB1iB,EAAG2iB,OAAOt2B,OACV21B,EAAetzB,OACftH,EAAE,WAAWmH,IAAI,SAAS,SAAA+H,GACtBlP,EAAE4Y,GAAI0d,cAIlBt2B,EAAE4Y,GAAIhS,GAAG,QAAQ,WACTgS,EAAG6iB,MAAMp+B,SACTub,EAAG6iB,MAAM18B,KAAK,cAAeka,GAC7BjZ,EAAE,WAAW+E,SAlBI,SAArB22B,qBACA9iB,EAAG2iB,OAAO76B,KAAK,IACfkY,EAAG2iB,OAAO5zB,YAAY,WAiBlB+zB,GACAd,EAAe31B,WAGvBjF,EAAE4Y,GAAIhS,GAAG,QAAQ,SAAUsI,EAAGysB,GAC1BzuB,QAAQ0uB,KAAK5mB,KAAKsB,UAAU3T,KAAKk5B,gBAErC77B,EAAE4Y,GAAIhS,GAAG,mBAAmB,SAAUsI,EAAGysB,GACrCzsB,EAAEsJ,iBACF,IACI,GAAItJ,EAAElL,cAAcgiB,eAAe3oB,OAAS,EAAG,CAC3C,IAAI6b,EAAiBhK,EAAElL,cAAcgiB,eAAe,GAAG9M,eACvD3b,OAAO6O,SAASC,KAAO6M,GAE7B,MAAOhK,GACLhC,QAAQC,IAAI+B,QA3U5BlP,EAAE0G,UAAUuH,OAAM,WACdjO,EAAE,gCAAgCmE,OAAM,WAChCnE,EAAE,4BAA4B3C,QAAU2C,EAAE,mBAAmB3C,OAAS,GACtE2C,EAAE6M,KAAK,CACH1C,KAAM,MACN2C,SAAU,OACVjB,IAAK,wCACN2H,MAAK,SAAUvP,GACdjE,EAAE,4BAA4ByI,OAAOxE,SAGjDjE,EAAE,0BAA0BmE,OAAM,WAC1BnE,EAAE,4BAA4B3C,QAC9B2C,EAAE6M,KAAK,CACH1C,KAAM,MACN2C,SAAU,OACVjB,IAAK,wCACN2H,MAAK,SAAUvP,GACdjE,EAAE,4BAA4ByI,OAAOxE,YAIrDy2B,EAAIoB,mBAAqB,SAAUjtB,EAAWvM,GAC1C6L,EAAUS,OAAO7Q,KAAK4E,KAAMkM,EAAWvM,IAG3Co4B,EAAIoB,mBAAmB9sB,UAAY,IAAIb,EAAUS,OAEjD8rB,EAAIoB,mBAAmBtrB,GAAK,mCAC5BkqB,EAAIoB,mBAAmBvsB,OAAS,+BAEhCmrB,EAAIoB,mBAAmB9sB,UAAU+sB,UAAY,SAAUC,GACnD,IAAI9rB,EAASvN,KACToP,GAAU,IAAI5D,EAAUsF,iBAAkBJ,QAC1C4oB,EAAct5B,KAAKgH,KAAK,IAAMqyB,GAC9BpqB,EAAQqqB,EAAYtyB,KAAK,QACzBuyB,EAAStqB,EAAMjI,KAAK,uBACpBwyB,EAAQvqB,EAAMjI,KAAK,UACvBwE,EAAUqB,QAAQL,OACde,EACA,GACA,CACIksB,KAAMD,EAAM5qB,MACZ8qB,MAAOH,EAAO3qB,MACd+qB,YAAaN,EAAIjwB,QAAQ,QAAS,MAEtC,WACIgG,EAAQyB,UAEZ,SAAU9S,GACN,GAAGA,EAAM,CACL,IAAI6P,EAASvQ,EAAEU,EAAKqP,QACpBksB,EAAYv7B,KAAK6P,EAAO7P,QAE5BwP,EAAOnB,wBAKnB2rB,EAAIoB,mBAAmB/qB,QAAU,CAC7BwrB,OAAQ,SAARA,OAAkBrtB,EAAGgB,GACjBhB,EAAEsJ,iBACFtI,EAAOvG,KAAK,eAAehC,YAAY,UACvC3H,EAAEkP,EAAEpB,QAAQjJ,QAAQ,MAAMsB,SAAS,UACnC+J,EAAOvG,KAAK,aAAahC,YAAY,UACrC,IAAIs0B,EAAc/rB,EAAOvG,KAAK,kBACO,GAAjCsyB,EAAYt1B,WAAWtJ,OACvB6S,EAAO6rB,UAAU,UAEjBE,EAAYtyB,KAAK,aAAaxD,SAAS,WAG/Cq2B,OAAQ,SAARA,OAAkBttB,EAAGgB,GACjBhB,EAAEsJ,iBACFtI,EAAOvG,KAAK,eAAehC,YAAY,UACvC3H,EAAEkP,EAAEpB,QAAQjJ,QAAQ,MAAMsB,SAAS,UACnC+J,EAAOvG,KAAK,aAAahC,YAAY,UACrC,IAAIs0B,EAAc/rB,EAAOvG,KAAK,kBACO,GAAjCsyB,EAAYt1B,WAAWtJ,OACvB6S,EAAO6rB,UAAU,UAEjBE,EAAYtyB,KAAK,aAAaxD,SAAS,WAG/CuxB,MAAO,SAAPA,MAAiBxoB,EAAGgB,GAChBhB,EAAEsJ,iBACFtI,EAAOvG,KAAK,eAAehC,YAAY,UACvC3H,EAAEkP,EAAEpB,QAAQjJ,QAAQ,MAAMsB,SAAS,UACnC+J,EAAOvG,KAAK,aAAahC,YAAY,UACrC,IAAIs0B,EAAc/rB,EAAOvG,KAAK,iBACO,GAAjCsyB,EAAYt1B,WAAWtJ,OACvB6S,EAAO6rB,UAAU,SAEjBE,EAAYtyB,KAAK,aAAaxD,SAAS,WAG/Cs2B,aAAc,SAAdA,aAAwBvtB,EAAGgB,GACvBhB,EAAEsJ,iBACFtI,EAAO6rB,UAAU/7B,EAAEkP,EAAEpB,QAAQjJ,QAAQ,aAAa9F,KAAK,QAE3Dq9B,KAAM,SAANA,KAAgBltB,EAAGgB,GACD,UAAVhB,EAAE/E,MACF+F,EAAO6rB,UAAU7rB,EAAOvG,KAAK,qBAAqB5K,KAAK,SAKnE27B,EAAIoB,mBAAmB9sB,UAAUD,kBAAoB,WACjDpR,OAAOqgB,eAAe0c,EAAIoB,mBAAmB9sB,WAAWD,kBAAkBhR,KAAK4E,MAC/E,IAAIuN,EAASvN,KACbA,KAAKgH,KAAK,uBACL9E,QAAQ,QACR0P,QAAO,SAAUrF,GACdA,EAAEsJ,iBACFkiB,EAAIoB,mBAAmB/qB,QAAQ0rB,aAAavtB,EAAGgB,OAI3DwqB,EAAIoB,mBAAmBnyB,KAAO,WAC1B,IAAIoU,EAAU/d,EAAE,sBAAwB06B,EAAIoB,mBAAmBtrB,GAAK,MACpE,OAAIuN,EAAQ1gB,OAAS,EACV0gB,EAEJ/d,EAAE,IAAM06B,EAAIoB,mBAAmBtrB,KAG1CrC,EAAUqB,QAAQnB,SAASqsB,EAAIoB,oBAC/Bp1B,SAASg2B,iBAAiB,oBAE1B,SAASC,0BACDj2B,SAASk2B,eAAe,mBACxBxyB,YAAW,WACP1D,SAASk2B,eAAe,kBAAkB5mB,MAAM6mB,WAAa,UAC7Dn2B,SAASk2B,eAAe,kBAAkB5mB,MAAM8mB,QAAU,UAC3D,KAEP,IAAIvoB,EACAwoB,EAAUr2B,SAASs2B,uBAAuB,iBAAiB,GAC3DD,GACAA,EAAQL,iBAAiB,SAAS,WAE9B,IADA,IAAI/1B,EAAWhE,KAAK2O,KAAK3K,SAChB1K,EAAI,EAAGA,EAAI0K,EAAStJ,OAAQpB,IACjC,GAA6B,UAAzB0K,EAAS1K,GAAGghC,UAAuB,CACnC1oB,EAAS5N,EAAS1K,GAClB,MAGRsY,EAAOyiB,UAAWr0B,KAAKW,SAG/B,IAAI45B,EAAUx2B,SAASs2B,uBAAuB,eAAe,GAMzDE,GACAA,EAAQR,iBAAiB,UAAU,WAC/B,IACIS,EADUz2B,SAASs2B,uBAAuB,iBAAiB,GACxC15B,MAEvB,IATR,SAAS85B,UAAUtY,GACf,OAAQmS,MAAMoG,WAAWvY,KAAOwY,SAASxY,GAOvBsY,CAAUD,IACI,IAAZA,GAA8B,8BAAZA,EAA0C,CACxE,IAAI7kB,EAAW3V,KAAK8T,cAAc,cAGlC,OAFA6B,EAAS1Y,UAAY,sCACrB0Y,EAAS2kB,UAAY3kB,EAAS2kB,UAAUlxB,QAAQ,aAAc,KACvD,SAtCgD,GA4CjD,oBAAXqB,UACP,SAAWpN,GACP,IAAIu9B,EAAgBv9B,EAAE,mBAAmB4b,SAAS,UAClD5b,EAAE,mBACG4b,WACA1Q,MAAK,WACElL,EAAE2C,MAAM6B,SAAS,YACjB+4B,EAAcC,UAAU,UACjBx9B,EAAE2C,MAAM6B,SAAS,qBACxBxE,EAAE2C,MAAM2E,UAGpBi2B,EAAcj2B,OAXlB,CAYG8F,QACHA,OAAO1G,UAAUuH,OAAM,WACnBb,OAAO,gBAAgBjJ,OAAM,WACzBiJ,OAAO,0BAA0BmJ,YAAY,aAC7CnJ,OAAOzK,MAAMgH,KAAK,OAAOjG,gBAKrCnG,OAAOkgC,uBAAyB,WAC+C,QAAvE/2B,SAASk2B,eAAe,8BAA8B5mB,MAAM8mB,UAC5Dp2B,SAASk2B,eAAe,8BAA8B5mB,MAAM8mB,QAAU,QACtEp2B,SAASs2B,uBAAuB,6BAA6B,GAAGhnB,MAAM8mB,QAAU,QAEpF,IAAI5gB,EAAcxV,SAASg3B,kBAAkB,eAAe,GAAGp6B,MAC/DoD,SAASg3B,kBAAkB,eAAe,GAAGp6B,MAAQq6B,UAAU,sCAAwCzhB,IA0I3Glc,EAAE,4BAA4BkL,MAAK,WAE/B,IAAI2E,EAAQ7P,EAAE2C,MACVi7B,EAAiB59B,EAAE2C,MAAMgH,KAAK,aAC9BkC,EAAM7L,EAAE2C,MAAMsB,KAAK,WACnBA,EAAO,GACP4H,IACA5H,EAAK4H,IAAMA,GAEfgE,EAAMtE,OAAO,CACTpB,KAAM,MACN0B,IAAK,mCACL5H,KAAMA,EACN6I,SAAU,OACVC,MAAO,QACPC,QAAS,SAATA,QAAmB/I,GACf25B,EAAel9B,KAAKuD,SAKhCjE,EAAE0G,UAAUuH,OAAM,WACdjO,EAAE,kBAAkB69B,QAAQ,CACxB54B,KAAM,CACF64B,OAAQ,SACRr9B,MAAO,OAGf0N,EAAUqB,QAAQsC,aACdpL,SAASzI,iBAAiB,qDAAqDZ,QAC/E,oCACKkW,MAAK,WACFonB,0BACF,OACK,SAAAzrB,GACHhC,QAAQC,IAAI+B,S,g6BC1vL5B,+B,+CAEA,OAFoB,WAEpB,MAFA,CAAoB,KAGpB,iF,OACI,EAAA6uB,QAAU,uBACV,EAAAC,QAAU,uB,EACd,OAHwB,eAGxB,UAHA,CAAwB,KAKxB,iF,OACI,EAAAC,UAAY,eACZ,EAAAC,gBAAkB,uBAClB,EAAAC,cAAgB,6B,EACpB,OAJwB,eAIxB,UAJA,CAAwB,KAMxB,cAOI,kBAAYC,G,OACR,YAAMA,GAAW,IAAK,KAO9B,OAfuB,cAWnB,mBAAAC,aAAA,WACI17B,KAAK27B,qBACL37B,KAAK47B,iBAAmB57B,KAAKu7B,gBAAgBM,QAAQC,QAE7D,SAfA,CAAuB,KA2HR,EArGf,WAWI,mBAA+BC,GAAA,KAAAA,UAwFnC,OAtFI,oBAAA5sB,WAAA,WACQnP,KAAK9E,SAASqgC,gBAAgBM,QAAQG,OACtCh8B,KAAKi8B,oBAAsBj8B,KAAK9E,SAASqgC,gBAAgBM,QAAQG,MAErEh8B,KAAK9E,SAASghC,YAAc,YAAc,IAAIl8B,KAAKi8B,qBAC/Cj8B,KAAK9E,SAASghC,cACdl8B,KAAK9E,SAASghC,YAAY7oB,MAAMC,SAAW,YAE/CtT,KAAKm8B,UAAY3R,OAAOxqB,KAAK+7B,QAAQF,QAAQM,WAEzCn8B,KAAK9E,SAAS0gC,iBACd57B,KAAKo8B,aAAep8B,KAAK9E,SAASsgC,cAAca,iBAAmB,EACnEr8B,KAAK9E,SAASsgC,cAAcl4B,aACxB,mBACGtD,KAAKo8B,aAAY,KAAKp8B,KAAKo8B,cAGlCp8B,KAAK9E,SAASsgC,cAAcl4B,aACxB,oBACAg5B,OAAOt8B,KAAKo8B,gBAGpBp8B,KAAKu8B,qBAGT,oBAAAA,kBAAA,WACIv8B,KAAK9E,SAASqgC,gBAAgBxB,iBAAiB,QAAS/5B,KAAKw8B,QAAQ7uB,KAAK3N,OAC1E3C,EAAEzC,QAAQqJ,GAAG,SAAUjE,KAAKy8B,SAAS9uB,KAAK3N,QAG9C,oBAAAw8B,QAAA,SAAQx7B,GACJA,EAAM6U,iBACNjb,OAAO8hC,SAAS,CACZjlB,IAAK,EACLpR,SAAU,WAEsBtC,SAAS1I,KAAKyY,cAAc,KACjD8X,SAGnB,oBAAA6Q,SAAA,SAASlwB,GACL,IACMoL,EADcta,EAAEkP,EAAElL,eACMsW,YAE1BA,EAAY3X,KAAKm8B,UACjBn8B,KAAK+7B,QAAQY,UAAU9c,IAAI7f,KAAK28B,UAAUvB,SACnCzjB,GAAa3X,KAAKm8B,WACzBn8B,KAAK+7B,QAAQY,UAAUv6B,OAAOpC,KAAK28B,UAAUvB,SAG7Cp7B,KAAKi8B,sBACDj8B,KAAK48B,qBACL58B,KAAK+7B,QAAQY,UAAU9c,IAAI7f,KAAK28B,UAAUtB,SAE1Cr7B,KAAK+7B,QAAQY,UAAUv6B,OAAOpC,KAAK28B,UAAUtB,UAGrD,IAAM/jB,EAAStX,KAAK68B,mBAEpB,GAAI78B,KAAK9E,SAAS0gC,eAAgB,CAC9B,IAAMkB,EAAexlB,EAAS,IAAOtX,KAAKo8B,aAC1Cp8B,KAAK9E,SAASsgC,cAAcl4B,aACxB,oBAAqBg5B,OAAOt8B,KAAKo8B,aAAeU,SAGpD98B,KAAK9E,SAASsgC,cAAcl4B,aAAa,mBAAuBtD,KAAK68B,mBAAkB,UAO/F,oBAAAD,mBAAA,WACI,IAAIG,EAAS1/B,EAAE,IAAI2C,KAAKi8B,qBACpBe,EAAgB3/B,EAAEzC,QAAQ+c,YAActa,EAAEzC,QAAQ82B,SAEtD,OADmBqL,EAAO7+B,SAASuZ,IAAMslB,EAAOrL,UACxBsL,GAG5B,oBAAAH,iBAAA,WACI,IAAMI,EAAIl5B,SAASb,gBACbzK,EAAIsL,SAAS1I,KACb6hC,EAAK,YACLC,EAAK,eACX,OAASF,EAAEC,IAAOzkC,EAAEykC,MAASD,EAAEE,IAAO1kC,EAAE0kC,IAAOF,EAAEG,cAAiB,KAjGpEC,UAAS,YADd,YAAaC,EAAW,EAAUC,EAAWC,G,gCAYFzpB,eAXtCspB,WAAN,G,i9BCrCA,+B,+CAAgC,OAAZ,WAAY,MAAhC,CAAoB,KAEpB,mC,+CAEA,OAFwB,eAExB,UAFA,CAAwB,KAIxB,iF,OACI,EAAAI,eAAiB,gBACjB,EAAAC,qBAAuB,wB,EAC3B,OAHwB,eAGxB,UAHA,CAAwB,KAKxB,cAII,kBAAYjC,GAAZ,MACI,YAAMA,GAAW,IAAM,K,OAJ3B,EAAAgC,eAAgD,IAAI,I,EAiBxD,OAlBuB,cAQnB,mBAAAE,WAAA,SAAW5B,GACP/7B,KAAK+7B,QAAUA,EACf/7B,KAAK07B,gBAIT,mBAAAA,aAAA,WACI17B,KAAK27B,mBAAmB37B,KAAK+7B,SAC7B/7B,KAAK09B,qBAAuB,YAAc19B,KAAKy7B,UAAUiC,uBAEjE,SAlBA,CAAuB,KA6GR,EAtFf,WAGI,gBAA+B3B,GAAA,KAAAA,UAF/B,KAAA6B,WAAiC,GAmFrC,OA/EI,iBAAAzuB,WAAA,WACInP,KAAK9E,SAASyiC,WAAW39B,KAAK+7B,SAC9B/7B,KAAKu8B,qBAGT,iBAAAA,kBAAA,sBACOv8B,KAAK9E,SAASwiC,sBACb19B,KAAK9E,SAASwiC,qBAAqB3D,iBAAiB,SAAU,WAC1D,EAAK8D,iBAAiB,EAAK9B,YAKnC/7B,KAAK9E,SAASuiC,eAAethC,SAAQ,SAAA2hC,GACjCA,EAAO/D,iBAAiB,SAAU,WAC9B,EAAKgE,kBAAkB,EAAKhC,eAKpC/7B,KAAKg+B,iBAELh+B,KAAKi+B,gBAELj+B,KAAK+7B,QAAQhC,iBAAiB,WAAW,SAAC/4B,GACtC,EAAKk9B,iBAAiBl9B,OAI9B,iBAAA68B,iBAAA,SAAiB9B,GACbA,EAAQoC,aAGZ,iBAAAJ,kBAAA,SAAkBhC,GACdA,EAAQqC,SAGZ,iBAAAJ,eAAA,WACsB,IAAIK,kBAAkB,SAAAC,GACpCA,EAAKniC,SAAS,SAAC,G,IAAgBC,EAAI,gBAC3BmiC,EADyC,SAEhC,SAATniC,GAAmBmiC,EAAeC,MAClCD,EAAeE,eAIjB3zB,QAAS9K,KAAK+7B,QAAU,CAAE//B,YAAY,KAGpD,iBAAAiiC,cAAA,sBACIj+B,KAAK+7B,QAAQ0C,OAAS,W,MAClB,EAAKb,WAAahf,MAAM8f,KAAK,EAAK3C,QAAQzgC,iBACtC,6CAE2B,QAA/B,IAAKJ,SAASuiC,eAAe,UAAE,SAAE7R,UAIzC,iBAAAsS,iBAAA,SAAiBl9B,GAEb,GAAkB,QAAdA,EAAMN,IAAe,CACrB,IAAMi+B,EAAiB3+B,KAAK49B,WAAW,GACjCgB,EAAgB5+B,KAAK49B,WAAW59B,KAAK49B,WAAWljC,OAAS,GAE3DsG,EAAMmiB,SAEFpf,SAAS86B,gBAAkBF,IAC3B39B,EAAM6U,iBACN+oB,EAAchT,SAId7nB,SAAS86B,gBAAkBD,IAC3B59B,EAAM6U,iBACN8oB,EAAe/S,WA/E7BkT,OAAM,iBADX,YAAa,EAAW,EAAU,EAAW,G,+CACxCA,QAAN,G,6gCCnCA,6E,OACI,EAAAC,gBAAkB,yB,EACtB,OAFoB,WAEpB,MAFA,CAAoB,KAIpB,iF,OACI,EAAAC,YAAc,SACd,EAAAC,YAAc,SACd,EAAAC,QAAU,WACV,EAAAC,UAAY,a,EAChB,OALwB,eAKxB,UALA,CAAwB,KAOxB,iF,OACI,EAAAxwB,KAAO,OACP,EAAAywB,cAAgB,oB,EACpB,OAHwB,eAGxB,UAHA,CAAwB,KAKxB,cAII,kBAAY3D,GAAZ,MACI,YAAMA,GAAW,IAAM,K,OAJ3B,EAAA4D,eAA+C,IAAI,I,EAevD,OAhBuB,cAQnB,mBAAA1B,WAAA,SAAW5B,GACP/7B,KAAK+7B,QAAUA,EACf/7B,KAAK07B,gBAGT,mBAAAA,aAAA,WACI17B,KAAKq/B,eAAiBr/B,KAAK+7B,QAAQzgC,iBAAiB0E,KAAKy7B,UAAU2D,gBAE3E,SAhBA,CAAuB,KAwER,EAnDf,WAMI,oCAAqBrD,GAAA,KAAAA,UALrB,KAAA/T,QAAU,CACNsX,WAAW,EACXC,gBAAgB,GA8CxB,OAzCI,qCAAApwB,WAAA,WACInP,KAAK9E,SAASyiC,WAAW39B,KAAK+7B,SAC9B/7B,KAAKu8B,qBAGT,qCAAAA,kBAAA,aAGA,qCAAAiD,sBAAA,WACI,IAAMC,EAAsBz/B,KAAK0/B,KAAKC,eAAiC3/B,KAAK9E,SAASmkC,gBAC/EO,EAAWH,EAAoBI,QAAO,SAACjyB,EAAQ2B,GAAS,QAAEA,EAAK5O,OAASiN,KAAQ,GAChFkyB,IAAYL,EAAoBI,QAAO,SAACjyB,EAAQ2B,GAAS,OAAAA,EAAK5O,QAAUiN,EAAOjN,MAAQiN,EAAS,QAgBtG,OAfA5N,KAAKgoB,QAAQsX,WAAY,EACrBG,EAAoB/kC,OAAS,GACzBklC,IACAH,EAAoB,GAAG9C,UAAUv6B,OAAOpC,KAAK28B,UAAUwC,WACvDn/B,KAAK+/B,eAAeN,EAAoB,IACxCz/B,KAAKgoB,QAAQsX,WAAY,EAEpBQ,IACDL,EAAoB,GAAG9C,UAAU9c,IAAI7f,KAAK28B,UAAUwC,WACpDn/B,KAAKggC,WAAWP,EAAoB,GAAIz/B,KAAKigC,MAAMlB,iBACnD/+B,KAAKgoB,QAAQsX,WAAY,KAK7Bt/B,KAAKgoB,QAAQsX,WAGzB,qCAAAU,WAAA,SAAWxkC,EAAIkK,GACXlK,EAAGqgC,QAAQ96B,OAAS,UACpBvF,EAAG8H,aAAa,QAASoC,GACzBrI,EAAE7B,GAAI0/B,WAGV,qCAAA6E,eAAA,SAAevkC,GACXA,EAAG8H,aAAa,QAAS,IACzBjG,EAAE7B,GAAI0/B,QAAQ,YA9ChBgF,2BAA0B,uCAD/B,YAAa,EAAW,EAAU,EAAW,G,2DAOZnsB,eAN5BmsB,4BAAN,G,w2BCnCA,6E,OACI,EAAAC,oBAAsB,yI,EAC1B,OAFoB,WAEpB,MAFA,CAAoB,KAIpB,iF,OACI,EAAAnB,YAAc,SACd,EAAAC,YAAc,SACd,EAAAC,QAAU,WACV,EAAAC,UAAY,a,EAChB,OALwB,eAKxB,UALA,CAAwB,KAOxB,iF,OACI,EAAAxwB,KAAO,OACP,EAAAyxB,4BAA8B,sB,EAClC,OAHwB,eAGxB,UAHA,CAAwB,KAKxB,cAEI,kBAAY3E,GAAZ,MACI,YAAMA,GAAW,IAAK,K,OAF1B,EAAA4D,eAA+C,IAAI,I,EAQvD,OATuB,cAMnB,mBAAA3D,aAAA,WACI17B,KAAKq/B,eAAiB,YAAiBr/B,KAAKy7B,UAAU2E,8BAE9D,SATA,CAAuB,KAmER,GArDf,+CAEI,KAAApY,QAAU,CACNuX,gBAAgB,GAgDxB,OA7CI,mCAAApwB,WAAA,WACSnP,KAAK9E,SAASmkC,gBACnBr/B,KAAKu8B,qBAGT,mCAAAA,kBAAA,sBAEIv8B,KAAK9E,SAASmkC,eAAeljC,SAAQ,SAAAijC,GACjCA,EAAcrF,iBAAiB,SAAU,EAAKsG,iBAAiB1yB,KAAK,QAI5E,mCAAA0yB,iBAAA,WACIrgC,KAAKsgC,uBAGT,mCAAAA,oBAAA,WACI,IAAMvmB,EAAW/Z,KAAK9E,SAASmkC,eAAe,GAAG1+B,MACjD,GAAMoZ,EAAU,CACZ,IAAIwmB,EAAS,IAAIzjC,OAzDL,yDAyD6B,MAWzC,OAVAkD,KAAK9E,SAASmkC,eAAe,GAAG1C,UAAUv6B,OAAOpC,KAAK28B,UAAUwC,WAChEn/B,KAAK+/B,eAAe//B,KAAK9E,SAASmkC,eAAe,IACjDr/B,KAAKgoB,QAAQuX,gBAAiB,EAEzBgB,EAAO93B,KAAKsR,KACb/Z,KAAK9E,SAASmkC,eAAe,GAAG1C,UAAU9c,IAAI7f,KAAK28B,UAAUwC,WAC7Dn/B,KAAKggC,WAAWhgC,KAAK9E,SAASmkC,eAAe,GAAIr/B,KAAKigC,MAAME,qBAC5DngC,KAAKgoB,QAAQuX,gBAAiB,IAG1Bv/B,KAAKgoB,QAAQuX,iBAI7B,mCAAAS,WAAA,SAAWxkC,EAAIkK,GACXlK,EAAGqgC,QAAQ96B,OAAS,UACpBvF,EAAG8H,aAAa,QAASoC,GACzBrI,EAAE7B,GAAI0/B,WAGV,mCAAA6E,eAAA,SAAevkC,GACXA,EAAG8H,aAAa,QAAS,IACzBjG,EAAE7B,GAAI0/B,QAAQ,YAhDhBsF,yBAAwB,qCAD7B,YAAa,EAAW,EAAU,EAAW,IACxCA,0BAAN,G,21BC9BA,gC,+CAAiC,OAAb,YAAa,MAAjC,CAAoB,KAEpB,oC,+CAAqC,OAAb,gBAAa,UAArC,CAAwB,KAExB,kF,OACI,EAAA7xB,KAAO,qBACP,EAAAywB,cAAgB,oB,EACpB,OAHwB,gBAGxB,UAHA,CAAwB,KAKxB,eAII,kBAAY3D,G,OACR,YAAMA,GAAW,IAAK,KAS9B,OAduB,eAQnB,mBAAAC,aAAA,WACI17B,KAAK2O,KAAO,YAAc3O,KAAKy7B,UAAU9sB,MACrC3O,KAAK2O,OACL3O,KAAKq/B,eAAiBr/B,KAAK2O,KAAKrT,iBAAiB0E,KAAKy7B,UAAU2D,iBAG5E,SAdA,CAAuB,KAsGR,GAnFf,mCAII,KAAApX,QAAU,CACNsX,WAAW,EACXC,gBAAgB,GA2ExB,OAxEI,uBAAApwB,WAAA,WACQnP,KAAK9E,SAASyT,OAGlB3O,KAAKygC,+BACLzgC,KAAK0gC,iCACL1gC,KAAKu8B,sBAGT,uBAAAkE,6BAAA,WACIzgC,KAAK2gC,yBAA2B,IAAI,IAGxC,uBAAAD,+BAAA,WACI1gC,KAAK4gC,2BAA6B,IAAI,EAA2B5gC,KAAK9E,SAASyT,OAGnF,uBAAA4tB,kBAAA,sBACIv8B,KAAK9E,SAASyT,KAAKorB,iBAAiB,SAAU/5B,KAAK6gC,SAASlzB,KAAK3N,OACjEA,KAAK9E,SAASmkC,eAAeljC,SAAS,SAAAijC,GAClCA,EAAcrF,iBAAiB,SAAU,EAAKsG,iBAAiB1yB,KAAK,QAI5E,uBAAAkzB,SAAA,SAAS7/B,GACLA,EAAM6U,iBACF7V,KAAK8gC,kBAAoB9gC,KAAKsgC,uBAC9BtgC,KAAKwe,QAAQ,YAAa,aAC1Bxe,KAAK9E,SAASyT,KAAKiD,UAEnB5R,KAAK9E,SAASyT,KAAKqhB,kBAI3B,uBAAAqQ,iBAAA,WACIrgC,KAAK8gC,kBAGT,uBAAAR,oBAAA,WACI,OAAOtgC,KAAK2gC,yBAAyBL,uBAGzC,uBAAAQ,eAAA,WACI,OAAO9gC,KAAK4gC,2BAA2BpB,yBAI3C,uBAAAhhB,QAAA,SAAQ9P,EAAc/N,QAAA,IAAAA,MAAA,IAClB,IAAInF,EAAKuI,SAAS+P,cAAc,UAAYpF,EAAO,MAC/ClT,IACAmF,EAAQnF,EAAGuK,aAAa,SACxBvK,EAAGwB,gBAAgB,SAEvB,IAAI87B,EAAQ/0B,SAASqP,cAAc,SACnC0lB,EAAMx1B,aAAa,OAAQoL,GAC3BoqB,EAAMx1B,aAAa,QAAS3C,GAC5Bm4B,EAAMx1B,aAAa,OAAQ,UAC3BtD,KAAK9E,SAASyT,KAAK6E,YAAYslB,IAInC,uBAAAkH,WAAA,SAAWxkC,EAAIkK,GACXlK,EAAGqgC,QAAQ96B,OAAS,UACpBvF,EAAG8H,aAAa,QAASoC,GACzBrI,EAAE7B,GAAI0/B,WAGV,uBAAA6E,eAAA,SAAevkC,GACXA,EAAG8H,aAAa,QAAS,IACzBjG,EAAE7B,GAAI0/B,QAAQ,YA9EhB6F,aAAY,uBADjB,YAAa,GAAW,GAAU,GAAW,KACxCA,cAAN,G,81BC7BA,gC,+CAAiC,OAAb,YAAa,MAAjC,CAAoB,KAEpB,kF,OACI,EAAA/B,YAAc,S,EAClB,OAFwB,gBAExB,UAFA,CAAwB,KAIxB,kF,OACI,EAAArwB,KAAO,wBACP,EAAAqyB,MAAQ,SACR,EAAA17B,QAAU,cACV,EAAA27B,YAAc,gBACd,EAAAC,aAAe,iB,EACnB,OANwB,gBAMxB,UANA,CAAwB,KAQxB,eAKI,kBAAYzF,G,OACR,YAAMA,GAAW,IAAK,KAW9B,OAjBuB,eASnB,mBAAAC,aAAA,WACI17B,KAAK2O,KAAO,YAAc3O,KAAKy7B,UAAU9sB,MACrC3O,KAAK2O,OACL3O,KAAKghC,MAAQhhC,KAAK2O,KAAKzM,QAAQlC,KAAKy7B,UAAUuF,OAC9ChhC,KAAKkhC,aAAe,YAAclhC,KAAKy7B,UAAUyF,aAAclhC,KAAKghC,OACpEhhC,KAAKihC,YAAc,YAAcjhC,KAAKy7B,UAAUwF,YAAajhC,KAAKghC,SAG9E,SAjBA,CAAuB,KA0GR,GApFf,sCAkFA,OAhFI,yBAAA7xB,WAAA,WACI,GAAKnP,KAAK9E,SAASyT,KAAnB,CAGQ,IAAAqwB,EAAgBh/B,KAAK28B,UAAS,YACtC38B,KAAK9E,SAASyT,KAAKguB,UAAUv6B,OAAO48B,GACpCh/B,KAAK9E,SAASgmC,aAAavE,UAAU9c,IAAImf,GACzCh/B,KAAK9E,SAAS+lC,YAAYtE,UAAU9c,IAAImf,GACxCh/B,KAAK9E,SAAS+lC,YAAYhkC,UAAY,GACtC+C,KAAKu8B,sBAGT,yBAAA4E,uBAAA,WACInhC,KAAK2gC,yBAA2B,IAAI,IAGxC,yBAAApE,kBAAA,WACIv8B,KAAK9E,SAASyT,KAAKorB,iBAAiB,SAAU/5B,KAAK6gC,SAASlzB,KAAK3N,QAGrE,yBAAA6gC,SAAA,SAAS7/B,GAEL,GADAA,EAAM6U,iBACF7V,KAAKsgC,sBAAuB,CAC5BtgC,KAAKwe,QAAQ,YAAa,aAClB,MAAgBxe,KAAK28B,UAAS,YAClCzzB,EAAMlJ,KAAK9E,SAASyT,KAAK5I,aAAa,UACtCzE,EAAOjE,EAAE2C,KAAK9E,SAASyT,MAAM0J,iBAEjC/W,EAAKuK,KAAK,CAAE6C,KAAM,cAAe/N,MAAO,SACxCtD,EAAE6M,KAAK,CACH9I,QAASpB,KACT0e,OAAQ,OACRxV,IAAKA,EACL5H,KAAMA,EACNyV,UAAW,CAAEC,iBAAiB,KAE7BnG,MAAK,SAAUvP,EAAM0iB,EAAQod,GACtB9/B,EAAKsM,QACL5N,KAAK9E,SAASyT,KAAKguB,UAAUv6B,OAAO,GACpCpC,KAAKkhC,aAAavE,UAAU9c,IAAI,GAChC7f,KAAKihC,YAAYtE,UAAUv6B,OAAO,GAClCpC,KAAKihC,YAAYhkC,UAAYqE,EAAK0P,UAElChR,KAAK9E,SAASyT,KAAKguB,UAAU9c,IAAI,GACjC7f,KAAKkhC,aAAavE,UAAUv6B,OAAO,OAG1CoyB,MAAK,SAAU4M,EAAOpd,EAAQqd,GAC3BrhC,KAAK9E,SAASyT,KAAKguB,UAAUv6B,OAAO,GACpCpC,KAAKkhC,aAAavE,UAAU9c,IAAI,GAChC7f,KAAKihC,YAAYtE,UAAUv6B,OAAO,GAClCpC,KAAKihC,YAAYhkC,UAAY,mBAEjCqkC,QAAO,oBAKXthC,KAAK9E,SAASyT,KAAKqhB,kBAI3B,yBAAAsQ,oBAAA,WACI,OAAOtgC,KAAK2gC,yBAAyBL,uBAIzC,yBAAA9hB,QAAA,SAAQ9P,EAAc/N,QAAA,IAAAA,MAAA,IAClB,IAAInF,EAAKuI,SAAS+P,cAAc,UAAYpF,EAAO,MAC/ClT,IACAmF,EAAQnF,EAAGuK,aAAa,SACxBvK,EAAGwB,gBAAgB,SAEvB,IAAI87B,EAAQ/0B,SAASqP,cAAc,SACnC0lB,EAAMx1B,aAAa,OAAQoL,GAC3BoqB,EAAMx1B,aAAa,QAAS3C,GAC5Bm4B,EAAMx1B,aAAa,OAAQ,UAC3BtD,KAAK9E,SAASyT,KAAK6E,YAAYslB,IA/EjCyI,eAAc,0BADnB,YAAa,GAAW,GAAU,GAAW,KACxCA,gBAAN,G,41BCrCA,gC,+CAAiC,OAAb,YAAa,MAAjC,CAAoB,KAEpB,kF,OACI,EAAAvC,YAAc,SACd,EAAAC,YAAc,SACd,EAAAuC,QAAU,WACV,EAAAC,WAAa,e,EACjB,OALwB,gBAKxB,UALA,CAAwB,KAOxB,kF,OACI,EAAA3I,MAAQ,QACR,EAAAsG,cAAgB,oBAChB,EAAAsC,WAAa,4C,EACjB,OAJwB,gBAIxB,UAJA,CAAwB,KAOxB,eAGI,kBAAYjG,GAAZ,MACI,YAAMA,GAAW,IAAK,K,OAH1B,EAAA4D,eAA0C,IAAI,I,EASlD,OAVuB,eAOnB,mBAAA3D,aAAA,WACI17B,KAAKq/B,eAAiB,YAAiBr/B,KAAKy7B,UAAU2D,gBAE9D,SAVA,CAAuB,KAmDR,GApCf,oCAkCA,OAhCI,uBAAAjwB,WAAA,WACSnP,KAAK9E,SAASmkC,eAAe3kC,QAGlCsF,KAAKu8B,qBAGT,uBAAAA,kBAAA,sBACIv8B,KAAK9E,SAASmkC,eAAeljC,SAAQ,SAAAijC,GACjCA,EAAcrF,iBAAiB,QAAS,EAAKsG,iBAAiB1yB,KAAK,IACnE,IAAMg0B,EAAM,YAAc,EAAKlG,UAAUiG,WAAYtC,EAAcwC,eAC/DD,GACAA,EAAI5H,iBAAiB,QAAS,EAAK8H,WAAWl0B,KAAK,QAK/D,uBAAA0yB,iBAAA,SAAiBr/B,G,MACPuB,EAAQvB,EAAMmK,OACyC,QAA7D,cAAcnL,KAAKy7B,UAAUiG,WAAYn/B,EAAMq/B,sBAAc,SAAEjF,UAAU57B,OAAOf,KAAK28B,UAAUqC,aAAcz8B,EAAM5B,QAEvH,uBAAAkhC,WAAA,SAAW7gC,GACP,IAAMuB,EAAQvB,EAAMmK,OACd2tB,EAAQ,YAAc94B,KAAKy7B,UAAU3C,MAAOv2B,EAAMq/B,eACxDr/B,EAAMo6B,UAAU57B,OAAOf,KAAK28B,UAAU6E,SACtCj/B,EAAMo6B,UAAU57B,OAAOf,KAAK28B,UAAU8E,YACtC3I,EAAMx1B,aAAa,OAAQ,YACvBf,EAAMo6B,UAAU35B,SAAShD,KAAK28B,UAAU8E,aACxC3I,EAAMx1B,aAAa,OAAQ,SA9BjCw+B,aAAY,wBADjB,YAAa,GAAW,GAAU,GAAW,KACxCA,cAAN,G,61BC7BA,gC,+CAAiC,OAAb,YAAa,MAAjC,CAAoB,KAEpB,kF,OACI,EAAA9C,YAAc,S,EAElB,OAHwB,gBAGxB,UAHA,CAAwB,KAKxB,kF,OACI,EAAArwB,KAAO,uBACP,EAAAsyB,YAAc,gBACd,EAAAC,aAAe,iBACf,EAAAa,WAAa,e,EACjB,OALwB,gBAKxB,UALA,CAAwB,KAOxB,eAMI,kBAAYtG,G,OACR,YAAMA,GAAW,IAAK,KAS9B,OAhBuB,eAUnB,mBAAAC,aAAA,WACI17B,KAAK2O,KAAO,YAAc3O,KAAKy7B,UAAU9sB,MACzC3O,KAAKkhC,aAAe,YAAclhC,KAAKy7B,UAAUyF,aAAclhC,KAAK2O,MACpE3O,KAAKihC,YAAc,YAAcjhC,KAAKy7B,UAAUwF,YAAajhC,KAAK2O,MAClE3O,KAAKgiC,UAAY,YAAchiC,KAAKy7B,UAAUsG,aAEtD,SAhBA,CAAuB,KA8HR,GAzGf,qCAuGA,OAnGI,wBAAA5yB,WAAA,WACSnP,KAAK9E,SAASyT,OAGnB3O,KAAKygC,+BACLzgC,KAAK0gC,iCACL1gC,KAAK9E,SAASyT,KAAKguB,UAAUv6B,OAAOpC,KAAK28B,UAAUqC,aAC/Ch/B,KAAK9E,SAASgmC,cACdlhC,KAAK9E,SAASgmC,aAAavE,UAAU9c,IAAI7f,KAAK28B,UAAUqC,aAExDh/B,KAAK9E,SAAS+lC,cACdjhC,KAAK9E,SAAS+lC,YAAYtE,UAAU9c,IAAI7f,KAAK28B,UAAUqC,aACvDh/B,KAAK9E,SAAS+lC,YAAYhkC,UAAY,IAG1C+C,KAAKu8B,sBAGT,wBAAAkE,6BAAA,WACIzgC,KAAK2gC,yBAA2B,IAAI,IAGxC,wBAAAD,+BAAA,WACI1gC,KAAK4gC,2BAA6B,IAAI,EAA2B5gC,KAAK9E,SAASyT,OAGnF,wBAAA4tB,kBAAA,WACIv8B,KAAK9E,SAASyT,KAAKorB,iBAAiB,SAAU/5B,KAAK6gC,SAASlzB,KAAK3N,QAGrE,wBAAA6gC,SAAA,SAAS7/B,GAEL,GADAA,EAAM6U,iBACF7V,KAAKw/B,yBAA2Bx/B,KAAKsgC,sBAAuB,CAC5DtgC,KAAKwe,QAAQ,YAAa,aAE1B,IAAItV,EAAMlJ,KAAK9E,SAASyT,KAAK5I,aAAa,UACtCzE,EAAOjE,EAAE2C,KAAK9E,SAASyT,MAAM0J,iBAEjC/W,EAAKuK,KAAK,CAAE6C,KAAM,cAAe/N,MAAO,SACxCtD,EAAE6M,KAAK,CACH9I,QAASpB,KACT0e,OAAQ,OACRxV,IAAKA,EACL5H,KAAMA,EACNyV,UAAW,CAAEC,iBAAiB,KAE7BnG,MAAK,SAAUvP,EAAM0iB,EAAQod,GACtB9/B,EAAKsM,QACL5N,KAAK9E,SAASyT,KAAKguB,UAAUv6B,OAAOpC,KAAKiiC,WAAWC,cAChDliC,KAAKkhC,cAAclhC,KAAKkhC,aAAavE,UAAU9c,IAAI7f,KAAKiiC,WAAWC,cACnEliC,KAAKihC,cACLjhC,KAAKihC,YAAYtE,UAAUv6B,OAAOpC,KAAKiiC,WAAWC,cAClDliC,KAAKihC,YAAYhkC,UAAYqE,EAAK0P,WAGtChR,KAAK9E,SAASyT,KAAKguB,UAAU9c,IAAI7f,KAAKiiC,WAAWC,cACjDliC,KAAKkhC,aAAavE,UAAUv6B,OAAOpC,KAAKiiC,WAAWC,kBAG1D1N,MAAK,SAAU4M,EAAOpd,EAAQqd,GAE3BrhC,KAAK9E,SAASyT,KAAKguB,UAAUv6B,OAAOpC,KAAKiiC,WAAWC,cAChDliC,KAAKkhC,cAAclhC,KAAKkhC,aAAavE,UAAU9c,IAAI7f,KAAKiiC,WAAWC,cACnEliC,KAAKihC,cACLjhC,KAAKihC,YAAYtE,UAAUv6B,OAAOpC,KAAKiiC,WAAWC,cAClDliC,KAAKihC,YAAYhkC,UAAY,oBAGrCqkC,QAAO,oBAKXthC,KAAK9E,SAASyT,KAAKqhB,kBAI3B,wBAAAsQ,oBAAA,WACI,OAAOtgC,KAAK2gC,yBAAyBL,uBAGzC,wBAAAd,sBAAA,WACI,OAAOx/B,KAAK4gC,2BAA2BpB,yBAI3C,wBAAAhhB,QAAA,SAAQ9P,EAAM/N,QAAA,IAAAA,MAAA,IACV,IAAInF,EAAKuI,SAAS+P,cAAc,UAAYpF,EAAO,MAC/ClT,IACAmF,EAAQnF,EAAGuK,aAAa,SACxBvK,EAAGwB,gBAAgB,SAEvB,IAAI87B,EAAQ/0B,SAASqP,cAAc,SACnC0lB,EAAMx1B,aAAa,OAAQoL,GAC3BoqB,EAAMx1B,aAAa,QAAS3C,GAC5Bm4B,EAAMx1B,aAAa,OAAQ,UAC3BtD,KAAK9E,SAASyT,KAAK6E,YAAYslB,IApGjCqJ,cAAa,yBADlB,YAAa,GAAW,GAAU,GAAW,KACxCA,eAAN,IC9BA,IAAI,IAAehzB,cACnB,IAAI,IAAiBA,cACrB,IAAI,IAAeA,cACnB,IAAI,IAAgBA,aC8BDizB,UAjCN,SAAPA,KAAQC,GACV,IAAMC,EAAmB1jB,MAAMvS,UAAUlR,MAAMC,KAAK2I,SAASs2B,uBAAuB,qBAChFkI,EAAax+B,SAAS+P,cAAc,gBACpC0uB,EAAU5jB,MAAMvS,UAAUlR,MAAMC,KAAK2I,SAASzI,iBAAiB,WAEvE,IACYgnC,EAAiB5nC,SACjB2nC,EAAGI,gBAAkBH,EAChBnO,KAAI,SAAA5kB,GAAI,OAAE,IAAImzB,IAAgBnzB,GAAMJ,iBAE/C,MAAOkyB,GACL92B,QAAQD,MAAM+2B,GAGtB,IACYkB,IACAF,EAAG/G,UAAY,IAAI+B,EAAUkF,GAAYpzB,cAE/C,MAAOkyB,GACL92B,QAAQD,MAAM+2B,GAGtB,IACYmB,EAAQ9nC,SACR2nC,EAAGM,OAASH,EACPrO,KAAI,SAAA5kB,GAAI,OAAE,IAAIuvB,EAAOvvB,GAAMJ,iBAEtC,MAAOkyB,GACL92B,QAAQD,MAAM+2B,M,y8BCzBtB,+B,+CAAiC,OAAb,WAAa,MAAjC,CAAoB,KAEpB,iF,OACI,EAAA/+B,KAAO,OACP,EAAAsgC,eAAiB,kBACjB,EAAAC,gBAAkB,mBAClB,EAAAC,sBAAwB,YACxB,EAAAC,2BAA6B,8BAC7B,EAAAC,aAAe,kB,EACnB,OAPwB,eAOxB,UAPA,CAAwB,KASxB,iF,OACI,EAAAC,SAAW,2BACX,EAAAC,OAAS,U,EACb,OAHwB,eAGxB,UAHA,CAAwB,KAKxB,cAKI,kBAAYzH,GAAZ,MACI,YAAMA,GAAW,IAAK,K,OAH1B,EAAAwH,SAAoC,IAAI,I,EAc5C,OAjBuB,cASnB,mBAAAtF,WAAA,SAAW5B,GACP/7B,KAAK+7B,QAAUA,EACf/7B,KAAK07B,gBAGT,mBAAAA,aAAA,WACI17B,KAAKijC,SAAW,YAAiBjjC,KAAKy7B,UAAUwH,SAAUjjC,KAAK+7B,UAEvE,SAjBA,CAAuB,KAsBvB,aAQI,yBAAqBA,GAAA,KAAAA,UA6IzB,OA3II,sBAAI,sCAAS,C,IAAb,WACI,MAAO,CACHoH,MAAO,IACPC,cAAe,IACfC,WAAY,IACZC,gBAAiB,M,gCAIzB,sBAAI,uCAAU,C,IAAd,SAAe3iC,GACPA,GAASA,EAAM/E,QAAQ,MAAQ,EAC/BoE,KAAKujC,YAAc7I,WAAW/5B,GAAS,IAEvCX,KAAKujC,YAAc,G,gCAI3B,0BAAAp0B,WAAA,WACInP,KAAK9E,SAASyiC,WAAW39B,KAAK+7B,SAC9B/7B,KAAKwjC,WAAaxjC,KAAKyjC,UACvBzjC,KAAK0jC,iBAAmB1jC,KAAK+7B,QAAQY,UAAU35B,SAAShD,KAAK28B,UAAUkG,iBACvE7iC,KAAKk6B,WAAal6B,KAAK+7B,QAAQF,QAAQ8H,aACvC3jC,KAAK4jC,mBAAqB,YAAiB,IAA2B5jC,KAAK+7B,SAEvE/7B,KAAK0jC,mBACL1jC,KAAK6jC,gCACL7jC,KAAK8jC,uBAET9jC,KAAK+jC,kBACL/jC,KAAKgkC,YACLhkC,KAAKu8B,qBAGT,0BAAAA,kBAAA,sBACIv8B,KAAK9E,SAAS+nC,SAAS9mC,SAAQ,SAAAoT,GAC3BA,EAAKwqB,iBAAiB,QAAS,EAAKyC,QAAQ7uB,KAAK,OAEjD3N,KAAKujC,cACLvjC,KAAKikC,sBAAwBjkC,KAAK+jC,gBAAgBp2B,KAAK3N,MACvDpF,OAAOm/B,iBAAiB,SAAU/5B,KAAKikC,wBAGvCjkC,KAAK0jC,mBACL1jC,KAAKkkC,0BAA4BlkC,KAAK8jC,oBAAoBn2B,KAAK3N,MAC/DpF,OAAOm/B,iBAAiB,SAAU/5B,KAAKkkC,6BAGvClkC,KAAKujC,aAAevjC,KAAK0jC,mBACzB9oC,OAAOm/B,iBAAiB,SAAU,oBAAS,WACvC,EAAKiK,cACN,MAKX,0BAAAG,cAAA,SAActQ,GACF,IAAAvxB,EAAStC,KAAK28B,UAAS,KAC3B9I,EACA7zB,KAAK+7B,QAAQY,UAAU9c,IAAIvd,GAE3BtC,KAAK+7B,QAAQY,UAAUv6B,OAAOE,IAKtC,0BAAAyhC,gBAAA,W,MAEUK,EADargC,SAAS1I,KAAKgpC,wBAAwB3S,OAClB1xB,KAAKujC,YACtCjsB,EAAS1c,OAAO0pC,YAChBC,EAA0D,QAA7C,EAAAxgC,SAAS+P,cAAc9T,KAAKy7B,UAAUyH,eAAO,eAAEmB,wBAC5DG,GAAaD,aAAU,EAAVA,EAAY7S,SAAS6S,aAAU,EAAVA,EAAY9sB,KAAMzX,KAAKwjC,WAAWJ,gBAAkB,EAC5FpjC,KAAKmkC,cAAc7sB,EAAS8sB,GAAqBI,EAAa,IAGlE,0BAAAV,oBAAA,WACI,IAAMxsB,EAAS1c,OAAO6pC,QAChBC,EACF1kC,KAAK9E,SAAS6nC,2BAA2B4B,UACzC3kC,KAAK9E,SAAS6nC,2BAA2B6B,aACzC5kC,KAAKwjC,WAAWF,gBACpBtjC,KAAK6kC,SAASvtB,EAASotB,IAG3B,0BAAAV,UAAA,WACU,MAA+ChkC,KAAK28B,UAA5CmI,EAAW,OAAEhC,EAAqB,wBAC1CiC,EAAa/kC,KAAK0jC,iBAClB1jC,KAAK+7B,QAAQY,UAAU35B,SAAS8hC,KAAiB9kC,KAAK+7B,QAAQY,UAAU35B,SAAS8/B,GACjF9iC,KAAK+7B,QAAQY,UAAU35B,SAAS8hC,GAEtC9kC,KAAKglC,aAAaD,EAAa,OAAS,SAG5C,0BAAAF,SAAA,SAASI,GAAT,WACQA,GACAjlC,KAAK+7B,QAAQY,UAAU9c,IAAI7f,KAAK28B,UAAUmG,uBAC1Cr7B,YAAW,WAAM,SAAKs0B,QAAQY,UAAU9c,IAAI,EAAK8c,UAAUqG,gBAAehjC,KAAKwjC,WAAWH,cAG1FrjC,KAAK+7B,QAAQY,UAAUv6B,OAAOpC,KAAK28B,UAAUmG,uBAC7C9iC,KAAK+7B,QAAQY,UAAUv6B,OAAOpC,KAAK28B,UAAUqG,gBAIrD,0BAAAgC,aAAA,SAAa74B,G,MACTnM,KAAK+7B,QAAQz4B,aAAa,cAAyB,SAAV6I,EAAmB,OAAS,SAC9C,QAAvB,EAAAnM,KAAK4jC,0BAAkB,SAAEznC,SAAQ,SAAAX,GACnB,SAAV2Q,EAAmB3Q,EAAG8H,aAAa,WAAY,MAAQ9H,EAAGwB,gBAAgB,gBAIlF,0BAAAw/B,QAAA,SAAQjwB,GAAR,WAGI,GAFAA,EAAEsJ,iBACF7V,KAAK+7B,QAAQY,UAAUv6B,OAAO,QAC1BpC,KAAK0jC,iBAKL,OAJA9oC,OAAOsqC,oBAAoB,SAAUllC,KAAKikC,uBAC1CrpC,OAAOsqC,oBAAoB,SAAUllC,KAAKkkC,2BAC1ClkC,KAAK+7B,QAAQY,UAAUv6B,OAAOpC,KAAK28B,UAAUmG,4BAC7C9iC,KAAK+7B,QAAQY,UAAUv6B,OAAOpC,KAAK28B,UAAUqG,cAGjDv7B,YAAW,WACP,EAAKs0B,QAAQ35B,WACdpC,KAAKwjC,WAAWL,QAMvB,0BAAAU,8BAAA,WACI,IAAMsB,EAAmBphC,SAASqP,cAAc,OAChD+xB,EAAiBxI,UAAU9c,IAAI7f,KAAK28B,UAAUoG,4BAC9C,IAAMqC,EAAyB,gCAAgCjwB,KAAKC,MAAsB,IAAhBD,KAAKkwB,UAC/EF,EAAiB7hC,aAAa,KAAM8hC,GACpCplC,KAAK+7B,QAAQuJ,sBAAsB,WAAYH,GAC/CnlC,KAAK9E,SAAS6nC,2BAA6Bh/B,SAASk2B,eAAemL,IAhJrE1C,gBAAe,YADpB,YAAapF,EAAWiI,EAAUhI,EAAWC,G,gCASZzpB,eAR5B2uB,iBAAN,GAuJe,O,iCC1MA,SAAS8C,iBACpBnoC,EAAE,QAAQ4G,GAAG,gBAAiB,qBAAqB,SAAUsI,GACzDA,EAAEsJ,iBACF,IAAM1K,EAAS9N,EAAEkP,EAAElL,cAAcmwB,MAC7BrmB,EAAOzQ,QACP2C,EAAE,cAAcqa,QAAQ,CACpBC,UAAWta,EAAE8N,GAAQjN,SAASuZ,KAC/B,KAAK,WACJ,OAAO7c,OAAO6qC,QAAQC,UAAU,KAAM,KAAMn5B,EAAElL,cAAcmwB,YAR5E,gD,iCCAA,WAce,IAZW,WACtB,YAAiB,sBAAsBr1B,SAAQ,SAAA28B,GAC3CA,EAAMiB,iBAAiB,UAAU,SAACxtB,GAC9B,IAAMlL,EAAgBkL,EAAElL,cAClB8J,EAASoB,EAAEpB,OACXw6B,EAAWtkC,EAAcukC,MAAM,GAAGl3B,KACpBvD,EAAO06B,mBACfC,UAAYH,U,iCCMrB,IAVY,WACvBtoC,EAAE0G,UAAUE,GAAG,uCAAuC,SAAAsI,GAC9CA,EAAEpB,kBAAkB4I,aAAexH,EAAEpB,OAAOwxB,UAAU35B,SAJ5C,yBAIkF,SAAXuJ,EAAE/E,KACnFzD,SAAS1I,KAAKshC,UAAU9c,IANvB,cAQD9b,SAAS1I,KAAKshC,UAAUv6B,OARvB,mB,oBCFb,IACM2jC,EADQ,GAAG5qC,MAAMC,KAAK2I,SAASzI,iBAAiB,SAC3B64B,KAAI,SAAA6R,GAAI,OAAIA,EAAKt8B,QAAM9M,QAAO,SAAA8M,GAAI,OAAIA,EAAK9N,QAAQ,mBAAqB,KAAG,GAChGqqC,EAAqBF,GAAgB,GAAJ7pC,OAAO6pC,EAAa5+B,MAAM,kBAAkB,GAAE,mBACrF++B,IAA0BD,G,kBCH1B5oC,GAAE,WACE,IAWIwQ,EAXAs4B,EAAU9oC,EAAE,UACZ+oC,EAAS/oC,EAAE,2BACXw0B,EAAWuU,EAAOp/B,KAAK,eACvBiI,EAAQm3B,EAAOp/B,KAAK,QACpBq/B,EAAYp3B,EAIZ+mB,EAAWnE,EAAS7qB,KAAK,kBACzBs/B,EAASzU,EAAS7qB,KAAK,gBACvBu/B,EAAa1U,EAAS7qB,KAAK,gBAG/B3J,EAAE,0BAA0BmE,OAAM,SAAUR,GACxCA,EAAM6U,iBACNswB,EAAQnF,MAAM,QACdoF,EAAOpF,MAAM,QACbhL,EAASxyB,SAAS,UAClB6iC,EAAUrhC,YAAY,UAElBuhC,EAAW7rC,QAAgC,oBAAf8W,gBACV,IAAP3D,EACP2D,WAAWnC,MAAMxB,GAEjBA,EAAK2D,WAAWhF,OAAO+5B,EAAW,GAAIA,EAAWjlC,QAE9CuwB,EAAS7qB,KAAK,mBAAmBtM,QACxCm3B,EAAS7qB,KAAK,mBAAmBA,KAAK,mBAAmBnJ,QAAQ,YAIzEuoC,EAAOniC,GAAG,iBAAiB,SAAUjD,GACjCslC,EAAO9iC,SAAS,UAAUzF,KAAK,OAGnCkR,EAAM2C,QAAO,SAAU5Q,GACnBA,EAAM6U,iBAEN,IAAM3M,EAAM+F,EAAM7S,KAAK,UACnBkF,EAAO2N,EAAMoJ,iBAEjB/W,EAAKuK,KAAK,CAAC6C,KAAM,cAAe/N,OAAO,IACvCtD,EAAE6M,KAAK,CAACwU,OAAQ,OAAQxV,IAAKA,EAAK5H,KAAMA,EAAMyV,UAAW,CAACC,iBAAiB,KACtEpG,MAAK,SAAUtP,GACRA,EAAKsM,QACLy4B,EAAUrhC,YAAY,UACtBgxB,EAASxyB,SAAS,UAClB8iC,EAAOthC,YAAY,UAAUjH,KAAKuD,EAAK0P,SACnCu1B,EAAW7rC,QAAgC,oBAAf8W,gBACV,IAAP3D,EACP2D,WAAWnC,MAAMxB,GAEjBA,EAAK2D,WAAWhF,OAAO+5B,EAAW,GAAIA,EAAWjlC,QAE9CuwB,EAAS7qB,KAAK,mBAAmBtM,QACxCm3B,EAAS7qB,KAAK,mBAAmBA,KAAK,mBAAmBnJ,QAAQ,WAGrEwoC,EAAU7iC,SAAS,UACnBwyB,EAAShxB,YAAY,cAG5BwvB,MAAK,WACF6R,EAAUrhC,YAAY,UACtBgxB,EAASxyB,SAAS,UAClB8iC,EAAOthC,YAAY,UAAUjH,KAAK,2B,kBClElDV,GAAE,WACE,IAAI+oC,EAAS/oC,EAAE,uBACXw0B,EAAWuU,EAAOp/B,KAAK,eACvBiI,EAAQm3B,EAAOp/B,KAAK,QACpBs/B,EAASr3B,EAAMjI,KAAK,iBACpBq/B,EAAYp3B,EACZ+mB,EAAWnE,EAAS7qB,KAAK,kBAE7B3J,EAAE,sBAAsBmE,OAAM,SAAUR,GACpC,IACMwlC,EADQnpC,EAAE2C,MACG5D,KAAK,QACxBiB,EAAE6M,KAAKs8B,GAAM51B,MAAK,SAAUtP,GACpBA,EAAKsM,QACLy4B,EAAUrhC,YAAY,UACtBgxB,EAASxyB,SAAS,UAClB8iC,EAAOthC,YAAY,UAAUjH,KAAKuD,EAAK0P,WAEvCo1B,EAAOpF,MAAM,QACbhL,EAASxyB,SAAS,UAClB6iC,EAAUrhC,YAAY,UACtB6sB,EAAS/Y,UAAU,YAG3B9X,EAAM6U,oBAGVuwB,EAAOniC,GAAG,iBAAiB,SAAUjD,GACjCslC,EAAO9iC,SAAS,UAAUkC,KAAK,OAGnCuJ,EAAM2C,QAAO,SAAU5Q,GACnBA,EAAM6U,iBAEN,IAAM3M,EAAM+F,EAAM7S,KAAK,UACjBkF,EAAO2N,EAAMoJ,iBACnB/W,EAAKuK,KAAK,CAAC6C,KAAM,cAAe/N,OAAO,IACvCtD,EAAE6M,KAAK,CAACwU,OAAQ,OAAQxV,IAAKA,EAAK5H,KAAMA,EAAMyV,UAAW,CAACC,iBAAiB,KACtEpG,MAAK,SAAUtP,GACRA,EAAKsM,QACLy4B,EAAUrhC,YAAY,UACtBgxB,EAASxyB,SAAS,UAClB8iC,EAAOvoC,KAAKuD,EAAK0P,WAEjBq1B,EAAU7iC,SAAS,UACnBwyB,EAAShxB,YAAY,cAG5BwvB,MAAK,WACF6R,EAAUrhC,YAAY,UACtBgxB,EAASxyB,SAAS,UAClB8iC,EAAOthC,YAAY,UAAUjH,KAAK","file":"js/vendors~lazy-imports-99cc3ade72615aae469f.js","sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.5.0): tools/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst uriAttrs = [\n 'background',\n 'cite',\n 'href',\n 'itemtype',\n 'longdesc',\n 'poster',\n 'src',\n 'xlink:href'\n]\n\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\nexport const DefaultWhitelist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n div: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n}\n\n/**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/gi\n\n/**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[\\d+/a-z]+=*$/i\n\nfunction allowedAttribute(attr, allowedAttributeList) {\n const attrName = attr.nodeName.toLowerCase()\n\n if (allowedAttributeList.indexOf(attrName) !== -1) {\n if (uriAttrs.indexOf(attrName) !== -1) {\n return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN))\n }\n\n return true\n }\n\n const regExp = allowedAttributeList.filter((attrRegex) => attrRegex instanceof RegExp)\n\n // Check if a regular expression validates the attribute.\n for (let i = 0, len = regExp.length; i < len; i++) {\n if (attrName.match(regExp[i])) {\n return true\n }\n }\n\n return false\n}\n\nexport function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {\n if (unsafeHtml.length === 0) {\n return unsafeHtml\n }\n\n if (sanitizeFn && typeof sanitizeFn === 'function') {\n return sanitizeFn(unsafeHtml)\n }\n\n const domParser = new window.DOMParser()\n const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html')\n const whitelistKeys = Object.keys(whiteList)\n const elements = [].slice.call(createdDocument.body.querySelectorAll('*'))\n\n for (let i = 0, len = elements.length; i < len; i++) {\n const el = elements[i]\n const elName = el.nodeName.toLowerCase()\n\n if (whitelistKeys.indexOf(el.nodeName.toLowerCase()) === -1) {\n el.parentNode.removeChild(el)\n\n continue\n }\n\n const attributeList = [].slice.call(el.attributes)\n const whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || [])\n\n attributeList.forEach((attr) => {\n if (!allowedAttribute(attr, whitelistedAttributes)) {\n el.removeAttribute(attr.nodeName)\n }\n })\n }\n\n return createdDocument.body.innerHTML\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.5.0): tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n DefaultWhitelist,\n sanitizeHtml\n} from './tools/sanitizer'\nimport $ from 'jquery'\nimport Popper from 'popper.js'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'tooltip'\nconst VERSION = '4.5.0'\nconst DATA_KEY = 'bs.tooltip'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst CLASS_PREFIX = 'bs-tooltip'\nconst BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\nconst DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn']\n\nconst DefaultType = {\n animation : 'boolean',\n template : 'string',\n title : '(string|element|function)',\n trigger : 'string',\n delay : '(number|object)',\n html : 'boolean',\n selector : '(string|boolean)',\n placement : '(string|function)',\n offset : '(number|string|function)',\n container : '(string|element|boolean)',\n fallbackPlacement : '(string|array)',\n boundary : '(string|element)',\n sanitize : 'boolean',\n sanitizeFn : '(null|function)',\n whiteList : 'object',\n popperConfig : '(null|object)'\n}\n\nconst AttachmentMap = {\n AUTO : 'auto',\n TOP : 'top',\n RIGHT : 'right',\n BOTTOM : 'bottom',\n LEFT : 'left'\n}\n\nconst Default = {\n animation : true,\n template : '
' +\n '
' +\n '
',\n trigger : 'hover focus',\n title : '',\n delay : 0,\n html : false,\n selector : false,\n placement : 'top',\n offset : 0,\n container : false,\n fallbackPlacement : 'flip',\n boundary : 'scrollParent',\n sanitize : true,\n sanitizeFn : null,\n whiteList : DefaultWhitelist,\n popperConfig : null\n}\n\nconst HOVER_STATE_SHOW = 'show'\nconst HOVER_STATE_OUT = 'out'\n\nconst Event = {\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n INSERTED : `inserted${EVENT_KEY}`,\n CLICK : `click${EVENT_KEY}`,\n FOCUSIN : `focusin${EVENT_KEY}`,\n FOCUSOUT : `focusout${EVENT_KEY}`,\n MOUSEENTER : `mouseenter${EVENT_KEY}`,\n MOUSELEAVE : `mouseleave${EVENT_KEY}`\n}\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner'\nconst SELECTOR_ARROW = '.arrow'\n\nconst TRIGGER_HOVER = 'hover'\nconst TRIGGER_FOCUS = 'focus'\nconst TRIGGER_CLICK = 'click'\nconst TRIGGER_MANUAL = 'manual'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Tooltip {\n constructor(element, config) {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s tooltips require Popper.js (https://popper.js.org/)')\n }\n\n // private\n this._isEnabled = true\n this._timeout = 0\n this._hoverState = ''\n this._activeTrigger = {}\n this._popper = null\n\n // Protected\n this.element = element\n this.config = this._getConfig(config)\n this.tip = null\n\n this._setListeners()\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n static get Event() {\n return Event\n }\n\n static get EVENT_KEY() {\n return EVENT_KEY\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Public\n\n enable() {\n this._isEnabled = true\n }\n\n disable() {\n this._isEnabled = false\n }\n\n toggleEnabled() {\n this._isEnabled = !this._isEnabled\n }\n\n toggle(event) {\n if (!this._isEnabled) {\n return\n }\n\n if (event) {\n const dataKey = this.constructor.DATA_KEY\n let context = $(event.currentTarget).data(dataKey)\n\n if (!context) {\n context = new this.constructor(\n event.currentTarget,\n this._getDelegateConfig()\n )\n $(event.currentTarget).data(dataKey, context)\n }\n\n context._activeTrigger.click = !context._activeTrigger.click\n\n if (context._isWithActiveTrigger()) {\n context._enter(null, context)\n } else {\n context._leave(null, context)\n }\n } else {\n if ($(this.getTipElement()).hasClass(CLASS_NAME_SHOW)) {\n this._leave(null, this)\n return\n }\n\n this._enter(null, this)\n }\n }\n\n dispose() {\n clearTimeout(this._timeout)\n\n $.removeData(this.element, this.constructor.DATA_KEY)\n\n $(this.element).off(this.constructor.EVENT_KEY)\n $(this.element).closest('.modal').off('hide.bs.modal', this._hideModalHandler)\n\n if (this.tip) {\n $(this.tip).remove()\n }\n\n this._isEnabled = null\n this._timeout = null\n this._hoverState = null\n this._activeTrigger = null\n if (this._popper) {\n this._popper.destroy()\n }\n\n this._popper = null\n this.element = null\n this.config = null\n this.tip = null\n }\n\n show() {\n if ($(this.element).css('display') === 'none') {\n throw new Error('Please use show on visible elements')\n }\n\n const showEvent = $.Event(this.constructor.Event.SHOW)\n if (this.isWithContent() && this._isEnabled) {\n $(this.element).trigger(showEvent)\n\n const shadowRoot = Util.findShadowRoot(this.element)\n const isInTheDom = $.contains(\n shadowRoot !== null ? shadowRoot : this.element.ownerDocument.documentElement,\n this.element\n )\n\n if (showEvent.isDefaultPrevented() || !isInTheDom) {\n return\n }\n\n const tip = this.getTipElement()\n const tipId = Util.getUID(this.constructor.NAME)\n\n tip.setAttribute('id', tipId)\n this.element.setAttribute('aria-describedby', tipId)\n\n this.setContent()\n\n if (this.config.animation) {\n $(tip).addClass(CLASS_NAME_FADE)\n }\n\n const placement = typeof this.config.placement === 'function'\n ? this.config.placement.call(this, tip, this.element)\n : this.config.placement\n\n const attachment = this._getAttachment(placement)\n this.addAttachmentClass(attachment)\n\n const container = this._getContainer()\n $(tip).data(this.constructor.DATA_KEY, this)\n\n if (!$.contains(this.element.ownerDocument.documentElement, this.tip)) {\n $(tip).appendTo(container)\n }\n\n $(this.element).trigger(this.constructor.Event.INSERTED)\n\n this._popper = new Popper(this.element, tip, this._getPopperConfig(attachment))\n\n $(tip).addClass(CLASS_NAME_SHOW)\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement) {\n $(document.body).children().on('mouseover', null, $.noop)\n }\n\n const complete = () => {\n if (this.config.animation) {\n this._fixTransition()\n }\n const prevHoverState = this._hoverState\n this._hoverState = null\n\n $(this.element).trigger(this.constructor.Event.SHOWN)\n\n if (prevHoverState === HOVER_STATE_OUT) {\n this._leave(null, this)\n }\n }\n\n if ($(this.tip).hasClass(CLASS_NAME_FADE)) {\n const transitionDuration = Util.getTransitionDurationFromElement(this.tip)\n\n $(this.tip)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n } else {\n complete()\n }\n }\n }\n\n hide(callback) {\n const tip = this.getTipElement()\n const hideEvent = $.Event(this.constructor.Event.HIDE)\n const complete = () => {\n if (this._hoverState !== HOVER_STATE_SHOW && tip.parentNode) {\n tip.parentNode.removeChild(tip)\n }\n\n this._cleanTipClass()\n this.element.removeAttribute('aria-describedby')\n $(this.element).trigger(this.constructor.Event.HIDDEN)\n if (this._popper !== null) {\n this._popper.destroy()\n }\n\n if (callback) {\n callback()\n }\n }\n\n $(this.element).trigger(hideEvent)\n\n if (hideEvent.isDefaultPrevented()) {\n return\n }\n\n $(tip).removeClass(CLASS_NAME_SHOW)\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n $(document.body).children().off('mouseover', null, $.noop)\n }\n\n this._activeTrigger[TRIGGER_CLICK] = false\n this._activeTrigger[TRIGGER_FOCUS] = false\n this._activeTrigger[TRIGGER_HOVER] = false\n\n if ($(this.tip).hasClass(CLASS_NAME_FADE)) {\n const transitionDuration = Util.getTransitionDurationFromElement(tip)\n\n $(tip)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n } else {\n complete()\n }\n\n this._hoverState = ''\n }\n\n update() {\n if (this._popper !== null) {\n this._popper.scheduleUpdate()\n }\n }\n\n // Protected\n\n isWithContent() {\n return Boolean(this.getTitle())\n }\n\n addAttachmentClass(attachment) {\n $(this.getTipElement()).addClass(`${CLASS_PREFIX}-${attachment}`)\n }\n\n getTipElement() {\n this.tip = this.tip || $(this.config.template)[0]\n return this.tip\n }\n\n setContent() {\n const tip = this.getTipElement()\n this.setElementContent($(tip.querySelectorAll(SELECTOR_TOOLTIP_INNER)), this.getTitle())\n $(tip).removeClass(`${CLASS_NAME_FADE} ${CLASS_NAME_SHOW}`)\n }\n\n setElementContent($element, content) {\n if (typeof content === 'object' && (content.nodeType || content.jquery)) {\n // Content is a DOM node or a jQuery\n if (this.config.html) {\n if (!$(content).parent().is($element)) {\n $element.empty().append(content)\n }\n } else {\n $element.text($(content).text())\n }\n\n return\n }\n\n if (this.config.html) {\n if (this.config.sanitize) {\n content = sanitizeHtml(content, this.config.whiteList, this.config.sanitizeFn)\n }\n\n $element.html(content)\n } else {\n $element.text(content)\n }\n }\n\n getTitle() {\n let title = this.element.getAttribute('data-original-title')\n\n if (!title) {\n title = typeof this.config.title === 'function'\n ? this.config.title.call(this.element)\n : this.config.title\n }\n\n return title\n }\n\n // Private\n\n _getPopperConfig(attachment) {\n const defaultBsConfig = {\n placement: attachment,\n modifiers: {\n offset: this._getOffset(),\n flip: {\n behavior: this.config.fallbackPlacement\n },\n arrow: {\n element: SELECTOR_ARROW\n },\n preventOverflow: {\n boundariesElement: this.config.boundary\n }\n },\n onCreate: (data) => {\n if (data.originalPlacement !== data.placement) {\n this._handlePopperPlacementChange(data)\n }\n },\n onUpdate: (data) => this._handlePopperPlacementChange(data)\n }\n\n return {\n ...defaultBsConfig,\n ...this.config.popperConfig\n }\n }\n\n _getOffset() {\n const offset = {}\n\n if (typeof this.config.offset === 'function') {\n offset.fn = (data) => {\n data.offsets = {\n ...data.offsets,\n ...this.config.offset(data.offsets, this.element) || {}\n }\n\n return data\n }\n } else {\n offset.offset = this.config.offset\n }\n\n return offset\n }\n\n _getContainer() {\n if (this.config.container === false) {\n return document.body\n }\n\n if (Util.isElement(this.config.container)) {\n return $(this.config.container)\n }\n\n return $(document).find(this.config.container)\n }\n\n _getAttachment(placement) {\n return AttachmentMap[placement.toUpperCase()]\n }\n\n _setListeners() {\n const triggers = this.config.trigger.split(' ')\n\n triggers.forEach((trigger) => {\n if (trigger === 'click') {\n $(this.element).on(\n this.constructor.Event.CLICK,\n this.config.selector,\n (event) => this.toggle(event)\n )\n } else if (trigger !== TRIGGER_MANUAL) {\n const eventIn = trigger === TRIGGER_HOVER\n ? this.constructor.Event.MOUSEENTER\n : this.constructor.Event.FOCUSIN\n const eventOut = trigger === TRIGGER_HOVER\n ? this.constructor.Event.MOUSELEAVE\n : this.constructor.Event.FOCUSOUT\n\n $(this.element)\n .on(eventIn, this.config.selector, (event) => this._enter(event))\n .on(eventOut, this.config.selector, (event) => this._leave(event))\n }\n })\n\n this._hideModalHandler = () => {\n if (this.element) {\n this.hide()\n }\n }\n\n $(this.element).closest('.modal').on('hide.bs.modal', this._hideModalHandler)\n\n if (this.config.selector) {\n this.config = {\n ...this.config,\n trigger: 'manual',\n selector: ''\n }\n } else {\n this._fixTitle()\n }\n }\n\n _fixTitle() {\n const titleType = typeof this.element.getAttribute('data-original-title')\n\n if (this.element.getAttribute('title') || titleType !== 'string') {\n this.element.setAttribute(\n 'data-original-title',\n this.element.getAttribute('title') || ''\n )\n\n this.element.setAttribute('title', '')\n }\n }\n\n _enter(event, context) {\n const dataKey = this.constructor.DATA_KEY\n context = context || $(event.currentTarget).data(dataKey)\n\n if (!context) {\n context = new this.constructor(\n event.currentTarget,\n this._getDelegateConfig()\n )\n $(event.currentTarget).data(dataKey, context)\n }\n\n if (event) {\n context._activeTrigger[\n event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER\n ] = true\n }\n\n if ($(context.getTipElement()).hasClass(CLASS_NAME_SHOW) || context._hoverState === HOVER_STATE_SHOW) {\n context._hoverState = HOVER_STATE_SHOW\n return\n }\n\n clearTimeout(context._timeout)\n\n context._hoverState = HOVER_STATE_SHOW\n\n if (!context.config.delay || !context.config.delay.show) {\n context.show()\n return\n }\n\n context._timeout = setTimeout(() => {\n if (context._hoverState === HOVER_STATE_SHOW) {\n context.show()\n }\n }, context.config.delay.show)\n }\n\n _leave(event, context) {\n const dataKey = this.constructor.DATA_KEY\n context = context || $(event.currentTarget).data(dataKey)\n\n if (!context) {\n context = new this.constructor(\n event.currentTarget,\n this._getDelegateConfig()\n )\n $(event.currentTarget).data(dataKey, context)\n }\n\n if (event) {\n context._activeTrigger[\n event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER\n ] = false\n }\n\n if (context._isWithActiveTrigger()) {\n return\n }\n\n clearTimeout(context._timeout)\n\n context._hoverState = HOVER_STATE_OUT\n\n if (!context.config.delay || !context.config.delay.hide) {\n context.hide()\n return\n }\n\n context._timeout = setTimeout(() => {\n if (context._hoverState === HOVER_STATE_OUT) {\n context.hide()\n }\n }, context.config.delay.hide)\n }\n\n _isWithActiveTrigger() {\n for (const trigger in this._activeTrigger) {\n if (this._activeTrigger[trigger]) {\n return true\n }\n }\n\n return false\n }\n\n _getConfig(config) {\n const dataAttributes = $(this.element).data()\n\n Object.keys(dataAttributes)\n .forEach((dataAttr) => {\n if (DISALLOWED_ATTRIBUTES.indexOf(dataAttr) !== -1) {\n delete dataAttributes[dataAttr]\n }\n })\n\n config = {\n ...this.constructor.Default,\n ...dataAttributes,\n ...typeof config === 'object' && config ? config : {}\n }\n\n if (typeof config.delay === 'number') {\n config.delay = {\n show: config.delay,\n hide: config.delay\n }\n }\n\n if (typeof config.title === 'number') {\n config.title = config.title.toString()\n }\n\n if (typeof config.content === 'number') {\n config.content = config.content.toString()\n }\n\n Util.typeCheckConfig(\n NAME,\n config,\n this.constructor.DefaultType\n )\n\n if (config.sanitize) {\n config.template = sanitizeHtml(config.template, config.whiteList, config.sanitizeFn)\n }\n\n return config\n }\n\n _getDelegateConfig() {\n const config = {}\n\n if (this.config) {\n for (const key in this.config) {\n if (this.constructor.Default[key] !== this.config[key]) {\n config[key] = this.config[key]\n }\n }\n }\n\n return config\n }\n\n _cleanTipClass() {\n const $tip = $(this.getTipElement())\n const tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX)\n if (tabClass !== null && tabClass.length) {\n $tip.removeClass(tabClass.join(''))\n }\n }\n\n _handlePopperPlacementChange(popperData) {\n this.tip = popperData.instance.popper\n this._cleanTipClass()\n this.addAttachmentClass(this._getAttachment(popperData.placement))\n }\n\n _fixTransition() {\n const tip = this.getTipElement()\n const initConfigAnimation = this.config.animation\n\n if (tip.getAttribute('x-placement') !== null) {\n return\n }\n\n $(tip).removeClass(CLASS_NAME_FADE)\n this.config.animation = false\n this.hide()\n this.show()\n this.config.animation = initConfigAnimation\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = typeof config === 'object' && config\n\n if (!data && /dispose|hide/.test(config)) {\n return\n }\n\n if (!data) {\n data = new Tooltip(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Tooltip._jQueryInterface\n$.fn[NAME].Constructor = Tooltip\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Tooltip._jQueryInterface\n}\n\nexport default Tooltip\n","import '../../js/_publicpath';\nimport SelectableDropdown from '../../utility/selectableDropdown';\n// TODO: remove jquery ui\n// import './_jcf';\n/* eslint-disable */\n(function ($) {\n $.fn.pbAjax = function (args) {\n var widgetId = $(this).attr('widget-id');\n if (!widgetId) {\n widgetId = $(this).data('widget-id');\n }\n if (!widgetId) {\n widgetId = $(this).attr('id');\n }\n var pbContext = $(\"[name='pbContext']\").attr('content');\n if (widgetId !== null && widgetId !== undefined) {\n var data = args['data'] ? args['data'] : {};\n data['pbContext'] = pbContext;\n data['widgetId'] = widgetId;\n var showJson = searchParams(window.location.href);\n if (showJson.hasOwnProperty('showJson')) data['showJson'] = showJson['showJson'] || '';\n var targetUrl = args['url'];\n var requestMethod = args.hasOwnProperty('type') ? args['type'] : 'GET';\n var requestDataType = args.hasOwnProperty('dataType') ? args['dataType'] : 'html';\n var asyncRequest = args.hasOwnProperty('async') ? args['async'] : true;\n var successFunction = args['success'];\n var failFunction = args['error'];\n return $.ajax({\n type: requestMethod,\n dataType: requestDataType,\n async: asyncRequest,\n url: targetUrl,\n data: data,\n success: successFunction,\n error: failFunction,\n });\n } else {\n console.log('widgetId not found');\n }\n\n function searchParams(url) {\n var objURL = {};\n url.replace(new RegExp('([^?=&]+)(=([^&]*))?', 'g'), function ($0, $1, $2, $3) {\n objURL[$1] = $3;\n });\n return objURL;\n }\n };\n})(jQuery);\n(function ($) {\n if ($) {\n function load($widget) {\n $widget.html('Loading...');\n $widget.pbAjax({\n type: 'GET',\n url: '/pb/widgets/optimizer',\n dataType: 'html',\n success: function (data) {\n $widget.html(data);\n $('html').trigger('WidgetReinit');\n },\n error: function () {\n $widget.html('');\n },\n });\n }\n\n var observer = null;\n if ('IntersectionObserver' in window) {\n observer = new IntersectionObserver(function (entries, observer) {\n entries.forEach(function (entry) {\n if (entry.isIntersecting) {\n var $widget = $(entry.target);\n observer.unobserve(entry.target);\n load($widget);\n }\n });\n });\n }\n\n function init() {\n $('[data-optimizer]').each(function () {\n var $widget = $(this);\n if ($widget.is('[data-observer]') && observer) {\n observer.observe(this);\n } else {\n load($widget);\n }\n });\n }\n\n if (window.PB && window.PB.$) {\n window.PB.$(document.documentElement).on('WidgetReinit.*', init);\n }\n $(document).ready(init);\n }\n})(jQuery);\nvar literatum = {};\nliteratum.events = (function () {\n var instance = {};\n var listenersMap = {};\n\n instance.register = function (eventName, callback) {\n var listeners = listenersMap[eventName];\n if (!listeners) {\n listenersMap[eventName] = listeners = [];\n }\n listeners.push(callback);\n };\n\n instance.deregisterAll = function () {\n listenersMap = {};\n };\n\n instance.notify = function (eventName, data) {\n //console.log(\"Event '\" + eventName + \"' triggered.\")\n var listeners = listenersMap[eventName];\n if (listeners) {\n listeners.forEach(function (listener) {\n listener(data);\n });\n }\n };\n\n return instance;\n})();\nliteratum.Widget = function (widgetDef, element) {\n this.state = -1;\n this.$element = $(element);\n this.widgetDef = widgetDef;\n if (widgetDef) {\n this.registerListeners();\n }\n};\n\nliteratum.Widget.prototype.get = function () {\n return this.$element;\n};\n\nliteratum.Widget.prototype.resize = function (e) {};\n\nliteratum.Widget.prototype.render = function (model, params, callback, renderer) {\n if (this.widgetDef.action) {\n return literatum.widgets.getWidget(this, model, params, callback, renderer);\n }\n};\n\nliteratum.Widget.prototype.lostFocus = function () {\n // nothing\n};\n\nliteratum.Widget.prototype.updateView = function (view, model) {\n var $this = this.get();\n var $html = $(view.trim());\n if ($html.length > 0) {\n $this.replaceWith($html);\n this.$element = $(\"*[widget-id='\" + $html.attr('widget-id') + \"']\");\n if (this.$element.length === 0 && $html.attr('id')) {\n this.$element = $('#' + $html.attr('id'));\n }\n if (this.$element.length === 0) {\n this.$element = $(\"*[data-widget-id='\" + $html.attr('data-widget-id') + \"']\");\n }\n } else {\n this.$element.html('');\n }\n this.registerListeners();\n this.triggerInfoHandlers(this, model);\n};\n\nliteratum.Widget.prototype.triggerInfoHandlers = function (widget, model) {\n var infoHandlers = widget.widgetDef.infoHandlers;\n if (model && model.attributes && infoHandlers) {\n Object.keys(model.attributes).forEach(function (key) {\n var infoHandler = infoHandlers[key];\n if (infoHandler) {\n infoHandler(model.attributes[key], widget, model);\n }\n });\n }\n};\n\nliteratum.Widget.prototype.registerListeners = function () {\n try {\n this.unbind();\n } catch (e) {\n console.log(e);\n }\n try {\n this.bind();\n } catch (e) {\n console.log('Failed to bind events, rolling back...');\n this.unbind();\n }\n};\n\nliteratum.Widget.prototype.update = function (model) {\n var result;\n console.log('Updating ' + this.widgetDef.id + '...');\n if (!literatum.utils.hasErrors(model.attributes)) {\n result = this.render(model, {});\n console.log('Updating ' + this.widgetDef.id + '... Content');\n } else {\n this.triggerInfoHandlers(this, model);\n this.loaded();\n console.log('Updating ' + this.widgetDef.id + '... Info');\n result = $.Deferred().resolve();\n }\n return result;\n};\n\nliteratum.Widget.prototype.bind = function () {\n var thisWidget = this;\n\n if (!thisWidget.widgetDef.binders) return;\n\n this.find('*[data-bind]').each(function () {\n var binderName = $(this).data('bind');\n var binder = thisWidget.widgetDef.binders[binderName];\n if (binder) {\n $(this).on('click', function (e) {\n //literatum.events.notify('user-action');\n binder.call(this, e, thisWidget);\n });\n }\n });\n\n this.find('*[data-bind-change]').each(function () {\n var binderName = $(this).data('bind');\n var binder = thisWidget.widgetDef.binders[binderName];\n if (binder) {\n $(this).on('change', function (e) {\n literatum.events.notify('user-action');\n binder.call(this, e, thisWidget);\n });\n }\n });\n};\n\nliteratum.Widget.prototype.unbind = function () {\n this.find('*[data-bind]').each(function () {\n $(this).off();\n });\n};\n\nliteratum.Widget.prototype.find = function (selector) {\n return this.get().find(selector);\n};\n\nliteratum.Widget.prototype.collectForms = function () {\n var $elements = this.find('form');\n var forms = {};\n $elements.each(function () {\n var $this = $(this);\n var name = $(this).attr('name');\n if (name) {\n var form = {};\n forms[name] = form;\n $this.find(\"input[type!='checkbox'], textarea\").each(function () {\n form[$(this).attr('name')] = $(this).val();\n });\n\n $this.find(\"input[type='checkbox']\").each(function () {\n if ($(this).is(':checked')) {\n form[$(this).attr('name')] = $(this).val();\n }\n });\n\n $this.find('select').each(function () {\n form[$(this).attr('name')] = $(this).find('option:selected').val();\n });\n }\n });\n this.find('*[data-form]').each(function () {\n var name = $(this).data('form');\n if (name) {\n var form = {};\n forms[name] = form;\n $(this)\n .find('*[data-field]')\n .each(function () {\n var $this = $(this);\n var value = $this.data('value');\n if (!value) {\n value = $this.text().trim();\n }\n form[$this.data('field')] = value;\n });\n }\n });\n return forms;\n};\n\nliteratum.Widget.prototype.updateForm = function (formName, sourceForm, merge) {\n var forms = this.find(\"form[name='\" + formName + \"']\");\n if (forms) {\n var form = forms[0];\n if (form) {\n var $form = $(form);\n $form.find('input').each(function () {\n var $this = $(this);\n if ($this.attr('type') == 'submit') {\n return;\n }\n\n var value = sourceForm[$this.attr('name')];\n if (merge && !value) return;\n\n $this.val(value);\n });\n\n var $select = $form.find('select');\n $select.each(function () {\n var $this = $(this);\n var value = sourceForm[$this.attr('name')];\n\n if (merge && !value) return;\n\n if (value) {\n $this.closest('.input-group').show();\n }\n\n $this.find('option').prop('selected', false);\n $this.find(\"option[value='\" + value + \"']\").prop('selected', true);\n });\n }\n }\n};\n\nliteratum.Widget.prototype.initialize = function () {\n this.registerListeners();\n};\n\nliteratum.Widget.prototype.loading = function () {\n $('body').addClass('widget-loading');\n};\n\nliteratum.Widget.prototype.error = function () {\n //$(\"body\").addClass(\"widget-error\");\n};\n\nliteratum.Widget.prototype.loaded = function () {\n $('body').removeClass('widget-loading');\n};\n\nliteratum.Widget.prototype.reset = function () {\n this.getNotifications().forEach(function (item) {\n item.reset();\n });\n};\n\nliteratum.Widget.prototype.getNotifications = function () {\n var result = [];\n this.find('*[data-notification]').each(function () {\n if (this.literatumNotification) {\n result.push(this.literatumNotification);\n }\n });\n return result;\n};\n\nliteratum.Widget.prototype.getNotification = function (name) {\n if (!this.widgetDef.notifications) return null;\n\n var thisWidget = this;\n\n var notification = null;\n\n this.find(\"*[data-notification='\" + name + \"']\").each(function () {\n var notificationType = thisWidget.widgetDef.notifications[name];\n if (!this.literatumNotification) {\n this.literatumNotification = new notificationType(this);\n }\n notification = this.literatumNotification;\n });\n\n return notification;\n};\n\nliteratum.Widget.prototype.register = function (service) {\n var thisWidget = this;\n commerce.cart.register(service, function (model) {\n return thisWidget.update(model);\n });\n};\nliteratum.widgets = (function () {\n var instance = {};\n var widgetDefs = [];\n var widgets = [];\n\n function render(template, model) {\n Object.keys(model).forEach(function (key) {\n var re = new RegExp('\\\\{{' + key + '\\\\}}', 'g');\n template = template.replace(re, model[key]);\n });\n template = template.replace(/{{.+?}}/g, '');\n return template;\n }\n\n $(window).on('resize', function (e) {\n widgets.forEach(function (widget) {\n widget.resize(e);\n });\n });\n\n instance.render = function (widget, model, params, callback, renderer) {\n // FIXME: clean me\n return widget.render(model, params, callback, renderer);\n };\n\n instance.getWidget = function (widget, model, params, callback, renderer) {\n return widget.get().pbAjax({\n type: 'GET',\n url: widget.widgetDef.action,\n dataType: 'html',\n data: params,\n async: true,\n success: function (html) {\n var result = render(html, model);\n if (renderer) {\n renderer(html, model);\n } else {\n if(widget && widget.$element.length === 1){\n setTimeout(() => {\n $(widget.$element[0]).find('.dropdown-selectable').each(function (i, elem) {\n new SelectableDropdown(elem).initialize();\n })\n })\n }\n widget.updateView(result, model);\n }\n //widget.get().fadeIn(400).fadeOut(400).fadeIn(400).fadeOut(400).fadeIn(400); // For debugging\n widget.loaded(); // This is not needed, confirm and remove\n if (callback) {\n callback();\n }\n literatum.events.notify('widget-rendered');\n },\n error: function (data) {\n widget.error();\n },\n });\n };\n\n instance.get = function (id) {\n var result = [];\n widgets.forEach(function (item) {\n if (item.widgetDef.id == id) result.push(item);\n });\n return result;\n };\n //instance.find = function(widgetId) {\n // var $result = $(\"*[widget-def='\" + widgetId +\"']\");\n // if ($result.length > 0) {\n // return $result;\n // }\n // return $(\".\" + widgetId);\n //};\n instance.all = function () {\n return widgets.slice(0);\n };\n\n instance.collapse = function () {\n widgets.forEach(function (widget) {\n widget.hide();\n });\n };\n\n instance.register = function (widgetDef) {\n widgetDefs.push(widgetDef);\n };\n\n instance.initialize = function () {\n widgetDefs.forEach(function (WidgetDef) {\n WidgetDef.find().each(function () {\n var instance = Object.create(WidgetDef.prototype);\n WidgetDef.call(instance, WidgetDef, this);\n widgets.push(instance);\n });\n });\n };\n\n return instance;\n})();\n\nconsole.log('Widgets initialized!');\nliteratum.Loading = function (deferred) {\n this.start();\n this.deferred = deferred;\n $.when(deferred).then(this.done);\n};\nliteratum.Loading.prototype.start = function () {};\nliteratum.Loading.prototype.done = function () {};\nliteratum.FullPageLoading = function (fadingTime) {\n this.message = '';\n this.fadingTime = fadingTime || 200;\n};\n\nliteratum.FullPageLoading.prototype = new literatum.Loading();\nliteratum.FullPageLoading.prototype.start = function () {\n $('body').append(\n '
' +\n this.message +\n '
'\n );\n var isIOS = navigator.userAgent.match(/ipad|ipod|iphone/i);\n if (!isIOS) {\n $('.loading-overlay').fadeIn(this.fadingTime);\n } else {\n $('.loading-overlay').show();\n }\n return this;\n};\n\nliteratum.FullPageLoading.prototype.done = function () {\n var $overlay = $('.loading-overlay');\n var isIOS = navigator.userAgent.match(/ipad|ipod|iphone/i);\n if (!isIOS) {\n $overlay.fadeOut($overlay.data('fadingtime'), function () {\n $overlay.remove();\n });\n } else {\n $overlay.hide().remove();\n }\n};\n\nliteratum.FullPageLoading.prototype.setMessage = function (message) {\n this.message = message;\n};\n\nwindow.loadRecaptcha = function () {\n if (typeof grecaptcha == 'undefined') return;\n $('.g-recaptcha')\n .filter(function () {\n return !$(this).hasClass('explicit');\n })\n .each(function () {\n grecaptcha.render($(this)[0], $(this).data());\n });\n $('.g-recaptcha iframe').attr('title', 'reCaptcha');\n};\nwindow.clearCapcha = function () {\n if (typeof grecaptcha != 'undefined') grecaptcha.reset(0);\n};\nwindow.captchaChallengeSubmit = function captchaChallengeSubmit(response) {\n $('textarea#g-recaptcha-response').each(function () {\n if ($(this).val() === response) {\n $(this).closest('form').submit();\n }\n });\n};\n$(function () {\n $('pre.show-json').each(function () {\n var $jsonElement = $(this);\n $jsonElement.parent().addClass('widget-container');\n var widgetType = getWidgetType($jsonElement);\n var widgetId = getWidgetId($jsonElement);\n $(this)\n .parent()\n .prepend(\n ''\n );\n });\n $('.show-json-btn').click(function openShowJsonDialog() {\n var $jsonElements = $(this).parent().find('>.show-json');\n if ($jsonElements.length > 1) {\n $jsonElements = getJsonElementOfWidget($jsonElements, $(this).data('widgetId'));\n }\n var jsonString = $jsonElements[0].innerHTML;\n var widgetType = getWidgetType($jsonElements);\n renderJsonViewer(JSON.parse(jsonString));\n $('.show-json-container .modal__header h2').html('Json for ' + widgetType);\n });\n $('.show-json-container .btn-collapse').click(function (e) {\n var $buttonIcon = $(this).find('#collapsed');\n if ($buttonIcon.hasClass('node-collapsed'))\n $buttonIcon.removeClass('node-collapsed icon-plus-light').addClass('node-opened icon-minus-light');\n else $buttonIcon.removeClass('node-opened icon-minus-light').addClass('node-collapsed icon-plus-light');\n renderJsonViewer();\n });\n $('.show-json-container .btn-copy').click(function (e) {\n var json = $('.show-json-container').data('json');\n copyStringToClipboard(JSON.stringify(json));\n });\n $('.show-json-container .btn-word-wrap').click(function (e) {\n $('.show-json-container .json-string').toggleClass('word-wrap-toggle');\n });\n $('.btn-fullscreen').click(toggleFullscreen);\n\n function toggleFullscreen(event) {\n var element = document.querySelector('#json-renderer-container');\n if (event instanceof HTMLElement) {\n element = event;\n }\n var isFullscreen = document.webkitIsFullScreen || document.mozFullScreen || false;\n element.requestFullScreen =\n element.requestFullScreen ||\n element.webkitRequestFullScreen ||\n element.mozRequestFullScreen ||\n function () {\n return false;\n };\n document.cancelFullScreen =\n document.cancelFullScreen ||\n document.webkitCancelFullScreen ||\n document.mozCancelFullScreen ||\n function () {\n return false;\n };\n isFullscreen ? document.cancelFullScreen() : element.requestFullScreen();\n }\n\n function copyStringToClipboard(str) {\n var el = document.createElement('textarea');\n el.value = str;\n el.setAttribute('readonly', '');\n el.style = {position: 'absolute', left: '-9999px'};\n document.body.appendChild(el);\n el.select();\n document.execCommand('copy');\n document.body.removeChild(el);\n }\n\n function renderJsonViewer(json) {\n if (json) $('.show-json-container').data('json', json);\n else json = $('.show-json-container').data('json');\n var options = {collapsed: $('.show-json-container #collapsed.node-collapsed').length == 1};\n $('.show-json-container .modal__body #json-renderer').jsonViewer(json, options);\n }\n\n function getWidgetType($jsonEl) {\n var widgetType = $jsonEl.parent().attr('data-widget-def');\n if (!widgetType) {\n var thisWidget = JSON.parse($($jsonEl).text()).thisWidget;\n if (thisWidget) {\n widgetType = JSON.parse($($jsonEl).text()).thisWidget.widgetName;\n }\n }\n return widgetType;\n }\n\n function getWidgetId($jsonEl) {\n var widgetId = $jsonEl.parent().attr('data-widget-id');\n if (!widgetId) {\n var thisWidget = JSON.parse($($jsonEl).text()).thisWidget;\n if (thisWidget) {\n widgetId = thisWidget.id;\n }\n }\n return widgetId;\n }\n\n function getJsonElementOfWidget($jsonElement, widgetId) {\n var requestedJsonEl;\n $jsonElement.each(function (index) {\n if (JSON.parse($(this).text()).thisWidget.id == widgetId) {\n requestedJsonEl = $(this);\n return false;\n }\n });\n return requestedJsonEl;\n }\n});\n$(function () {});\n$(function () {\n var $timers = $('.timer .value');\n if ($timers.length) {\n var interval = 0;\n var format = function (total) {\n var hours = Math.floor(total / 3600);\n var minutes = Math.floor((total - hours * 3600) / 60);\n var seconds = total - hours * 3600 - minutes * 60;\n\n if (hours < 10) hours = '0' + hours;\n if (minutes < 10) minutes = '0' + minutes;\n if (seconds < 10) seconds = '0' + seconds;\n return hours + ':' + minutes + ':' + seconds;\n };\n var increment = function () {\n interval++;\n $.get('/exam/updateTimeSpent/' + $(\"input[name='questionIndex']\").val());\n $timers.each(function () {\n var $value = $(this);\n var original = parseInt($value.data().value, 10);\n $value.html(format(original + interval));\n });\n };\n setInterval(increment, 1000);\n }\n});\n\n$(function () {\n $('.show-subjects').change(function () {\n $('.subjects-table').removeClass('d-none');\n });\n $('.hide-subjects').change(function () {\n $('.subjects-table').addClass('d-none');\n });\n});\n\n$(function () {\n $('.show-areas').change(function () {\n $('.areas-table').removeClass('d-none');\n });\n $('.hide-areas').change(function () {\n $('.areas-table').addClass('d-none');\n $('.questions-area')[0].checked = false;\n $('.questions-area')[1].checked = false;\n $('.questions-area')[2].checked = false;\n });\n});\n\n$(function () {\n $(\"input[name='dryRun']\").click(function (e) {\n var url = '/pb/widgets/digitalQuestion/calculate'; // the script where you handle the form input.\n $.ajax({\n type: 'POST',\n url: url,\n data: $('.create__test__form').serialize(), // serializes the form's elements.\n success: function (data) {\n var jsonData = JSON.parse(data);\n if (jsonData.errorMsg) {\n $('div.error').text(jsonData.errorMsg); // show response from the php script.\n $('span.result-count').text('');\n } else {\n $('span.result-count').text(' There are ' + jsonData.resultCount + ' available questions.');\n $('div.error').text('');\n }\n },\n });\n e.preventDefault(); // avoid to execute the actual submit of the form.\n });\n});\nvar commerce = {};\ncommerce.page = {};\ncommerce.page.cart = {};\nliteratum.utils = {\n send: function (request, callback, error) {\n if (!request) {\n return;\n }\n request.ajaxRequest = true;\n return $.ajax({\n url: '/action/' + request.action,\n type: 'POST',\n contentType: 'application/x-www-form-urlencoded',\n crossDomain: true,\n xhrFields: {withCredentials: true},\n data: request,\n success: callback,\n error: error,\n });\n },\n copyForm: function (source, to) {\n $(source)\n .find('input')\n .each(function () {\n var name = $(this).attr('name');\n var targetField = $(to).find(\"input[name='\" + name + \"']\");\n targetField.val($(this).val());\n });\n\n $(source)\n .find('select')\n .each(function () {\n var value = $(this).find('option:selected').val();\n $(to)\n .find(\"select[name='\" + $(this).attr('name') + \"']\")\n .find(\"option[value='\" + value + \"']\")\n .attr('selected', '');\n });\n },\n clearForm: function (form) {\n $(form).click(function () {\n $(this).find('input[type=text], select, textarea').val('');\n });\n },\n hasErrors: function (attributes) {\n var hasErrors = false;\n Object.keys(attributes).forEach(function (key) {\n hasErrors |= key.toLowerCase().indexOf('error') > -1;\n });\n return hasErrors;\n },\n hasAttributes: function (attributes) {\n return attributes && Object.keys(attributes).length > 0;\n },\n scroll: function (selector, speed, offset) {\n var $object = null;\n\n if (selector instanceof jQuery) {\n $object = selector;\n } else {\n $object = $(selector);\n }\n\n if (!$object || $object.length == 0) return;\n\n if (typeof speed === 'undefined') {\n speed = 2000;\n }\n\n if (typeof offset === 'undefined') {\n offset = $object.offset().top;\n } else {\n offset = $object.offset().top - offset;\n }\n\n $('html, body').animate(\n {\n scrollTop: offset,\n },\n speed\n );\n },\n nextCheckoutSection: function () {\n var $widget = $('.eCommerceCheckoutFieldsWidget .scroll-focus').closest('.widget');\n if ($(window).width() > 992) {\n literatum.utils.scroll($widget, 800, 10);\n } else {\n literatum.utils.scroll($widget, 800, 60);\n }\n },\n getCountryState: function (iso2Alpha, callback) {\n return literatum.utils.send(\n {\n action: 'getCountryStates',\n country: iso2Alpha,\n },\n callback\n );\n },\n};\n\n///////////////////////////////// TEMP\n\n/*$(\".add-to-cart\").click(function (e) {\n e.preventDefault();\n $(this).toggleClass(\"opened\");\n $(this).find(\".purchaseArea\").slideToggle();\n\n var purchaseAreaWidth = $(this).parent().width();\n $(this).find(\".purchaseArea\").css('width', purchaseAreaWidth);\n\n});*/\n\nif ($('.add-to-cart').length > 0) {\n $('body').click(function (e) {\n var $target = $(e.target);\n if (!$target.hasClass('add-to-cart') && $target.closest('.add-to-cart').length == 0) {\n $('.add-to-cart').removeClass('opened');\n $('.add-to-cart').find('.purchaseArea').slideUp();\n }\n });\n}\n\n// Needs review\n$.fn.serializeObject = function () {\n var o = {};\n var a = this.serializeArray();\n $.each(a, function () {\n if (o[this.name] !== undefined) {\n if (!o[this.name].push) {\n o[this.name] = [o[this.name]];\n }\n o[this.name].push(this.value || '');\n } else {\n o[this.name] = this.value || '';\n }\n });\n return o;\n};\ncommerce.binders = (function () {\n var instance = {};\n\n instance.removeDiscount = function (e) {\n e.preventDefault();\n commerce.cart.discounts.remove($(this).data('discount'));\n };\n\n instance.disableDiscount = function (e) {\n e.preventDefault();\n commerce.cart.discounts.disable($(this).data('discount'));\n };\n\n instance.removeItem = function (e) {\n e.preventDefault();\n commerce.cart.buyingList.remove($(this).data('item-id'));\n };\n\n instance.submitBilling = function (e) {\n e.preventDefault();\n commerce.cart.billing.update($('form.billing').serializeObject());\n };\n\n instance.editBilling = function (e) {\n e.preventDefault();\n literatum.widgets.billing.render({}, {editing: true});\n };\n\n instance.expandBilling = function (e) {\n e.preventDefault();\n $('.billingAddress').slideToggle();\n };\n\n instance.sameAsShipping = function (e) {\n if ($(this).is(':checked')) {\n literatum.utils.copyForm('.checkoutShipping form', '.billingPayment form');\n } else {\n literatum.utils.clearForm('.billingPayment form');\n }\n };\n\n instance.countryChanged = function (e) {\n // TODO: What is this for?\n var countryCode = $(this).val();\n\n var $state = $(this).closest('form').find(\"select[name='state']\");\n\n if ($state.find(\"option[data-country='\" + countryCode + \"']\").length > 0) {\n $state.find(\"option:not([data-country='\" + countryCode + \"'])\").addClass('d-none');\n $state.find(\"option[data-country='\" + countryCode + \"']\").removeClass('d-none');\n if (!$state.is(':visible')) {\n $state.parent().slideDown(); // review\n }\n } else {\n $state.parent().slideUp(); // review\n }\n\n $state.val(null);\n };\n\n instance.bind = function () {\n $('*[data-bind]').each(function () {\n var binderName = $(this).data('bind');\n console.log(\"Binding '\" + binderName + \"' to element '\" + this + \"'\");\n var binder = instance[binderName];\n console.log(this);\n $(this).on('click', binder);\n });\n };\n\n instance.unbind = function () {\n $('*[data-bind]').each(function () {\n try {\n var binderName = $(this).data('bind');\n console.log(\"Unbinding '\" + binderName + \"' to element '\" + this + \"'\");\n var binder = instance[binderName];\n $(this).off('click', binder);\n } catch (e) {\n console.log(e);\n }\n });\n };\n\n return instance;\n})();\n\nwindow.registerListeners = function () {\n // Always unbind before binding again\n try {\n commerce.binders.unbind();\n } catch (e) {\n console.log(e);\n }\n try {\n //console.log(\"Binding events to candidate elements\");\n commerce.binders.bind();\n } catch (e) {\n //console.log(\"Failed to bind events, rolling back...\");\n commerce.binders.unbind();\n }\n};\nliteratum.LoginSuggestionsWidget = function (widgetDef, element) {\n literatum.Widget.call(this, widgetDef, element);\n};\nliteratum.LoginSuggestionsWidget.prototype = new literatum.Widget();\nliteratum.LoginSuggestionsWidget.id = 'loginSuggestions';\nliteratum.LoginSuggestionsWidget.action = '/pb/widgets/identity/loginSuggestions';\nliteratum.LoginSuggestionsWidget.binders = {\n start: function (e, widget) {\n e.preventDefault();\n var loading = new literatum.FullPageLoading();\n loading.start();\n var login = $(this).siblings('[name=login]').val();\n if (!login) {\n login = widget.find('[name=login]').val();\n }\n var id = widget.find('[name=id]').val();\n var $errorMessage = widget.find('.message.error');\n var $message = widget.find('.message.info');\n var redirect = widget.find('[name=redirectUri]').val();\n var firstTry = widget.find('[name=firstTry]').val();\n literatum.utils.send(\n {\n action: 'doPasswordLessLogin',\n login: login,\n loginAction: 'start',\n id: id,\n redirectUri: redirect,\n firstTry: firstTry,\n },\n function (data) {\n if (data.success) {\n var loginAction = data['loginAction'];\n widget.render(\n {},\n {\n view: loginAction,\n canSwitch: data.canSwitch,\n newUser: data.newUser,\n message: data.message,\n errorMessage: data.errorMessage,\n login: login,\n redirectUri: data.redirect,\n firstTry: data.login != login,\n }\n );\n } else {\n $errorMessage.html(data.errorMessage);\n $message.html(data.message);\n }\n\n loading.done();\n }\n );\n },\n submitCode: function (e, widget) {\n e.preventDefault();\n var loading = new literatum.FullPageLoading();\n loading.start();\n var code = widget.find('.code').val();\n var remember = widget.find('[name=remember]').val();\n var id = widget.find('[name=id]').val();\n var redirect = widget.find('[name=redirectUri]').val();\n literatum.utils.send(\n {\n action: 'doPasswordLessLogin',\n code: code,\n loginAction: 'code',\n id: id,\n remember: remember,\n redirectUri: redirect,\n },\n function (data) {\n var $message = widget.find('.message.info');\n var $hiddenMessage = widget.find('[name=hiddenMessage]');\n var $errorMessage = widget.find('[name=errorMessage]');\n if (data.success) {\n if (data.newUser) {\n widget.render({}, {view: 'new'});\n } else {\n window.location.href = data.redirect;\n }\n } else {\n $errorMessage.html(data.errorMessage);\n $message.html(data.message);\n $errorMessage.removeClass('d-none');\n $hiddenMessage.addClass('d-none');\n widget.registerListeners();\n }\n\n loading.done();\n }\n );\n },\n submitPassword: function (e, widget) {\n e.preventDefault();\n var loading = new literatum.FullPageLoading();\n loading.start();\n var id = widget.find('[name=id]').val();\n var password = widget.find('[name=password]').val();\n var remember = widget.find('[name=remember]').val();\n var $message = widget.find('.message.info');\n var $errorMessage = widget.find('.message.error');\n var redirect = widget.find('[name=redirectUri]').val();\n literatum.utils.send(\n {\n action: 'doPasswordLessLogin',\n password: password,\n loginAction: 'password',\n id: id,\n remember: remember,\n redirectUri: redirect,\n },\n function (data) {\n if (data.success) {\n window.location.href = data.redirect;\n } else {\n $errorMessage.html(data.errorMessage);\n $message.html(data.message);\n }\n loading.done();\n }\n );\n },\n usePassword: function (e, widget) {\n e.preventDefault();\n var redirect = widget.find('[name=redirectUri]').val();\n var login = widget.find('[name=login]').val();\n widget.render({}, {view: 'password_plw', canSwitch: true, redirectUri: redirect, login: login});\n },\n useCode: function (e, widget) {\n e.preventDefault();\n var login = widget.find('[name=login]').val();\n var id = widget.find('[name=id]').val();\n var $errorMessage = widget.find('.message.error');\n var $message = widget.find('.message.info');\n var redirect = widget.find('[name=redirectUri]').val();\n literatum.utils.send(\n {\n action: 'doPasswordLessLogin',\n login: login,\n loginAction: 'enablePL',\n id: id,\n redirectUri: redirect,\n },\n function (data) {\n if (data.success) {\n var loginAction = data['loginAction'];\n widget.render(\n {},\n {\n view: loginAction,\n canSwitch: true,\n message: data.message,\n errorMessage: data.errorMessage,\n login: login,\n redirectUri: redirect,\n }\n );\n } else {\n $errorMessage.html(data.errorMessage);\n $message.html(data.message);\n }\n }\n );\n },\n back: function (e, widget) {\n e.preventDefault();\n var loading = new literatum.FullPageLoading();\n loading.start();\n widget.render({}, {}, function () {\n loading.done();\n });\n },\n showIndiv: function (e, widget) {\n e.preventDefault();\n var loading = new literatum.FullPageLoading();\n loading.start();\n var currentView = widget.find('[name=currentView]').val();\n widget.render({}, {view: 'individual', currentView: currentView}, function () {\n initIndividualView();\n loading.done();\n });\n },\n showOrg: function (e, widget) {\n e.preventDefault();\n var loading = new literatum.FullPageLoading();\n loading.start();\n var currentView = widget.find('[name=currentView]').val();\n widget.render({}, {view: 'organizational', currentView: currentView}, function () {\n loginSuggestionsInitSearch(function () {\n loading.done();\n });\n });\n },\n showPass: function (e, widget) {\n e.preventDefault();\n var loading = new literatum.FullPageLoading();\n loading.start();\n var login = widget.find('[name=login]').val();\n var emailRegex =\n /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n var phoneRegex = /^\\+\\d{12}$/;\n if (!emailRegex.test(login) && !phoneRegex.test(login)) {\n widget.render({}, {view: 'individual', login: login, error2: true}, function () {\n initIndividualView();\n loading.done();\n });\n return;\n }\n var currentView = widget.find('[name=currentView]').val();\n widget.render({}, {view: 'password', login: login, currentView: currentView}, function () {\n initPasswordView();\n loading.done();\n });\n },\n localLogin: function (e, widget) {\n e.preventDefault();\n var loading = new literatum.FullPageLoading();\n loading.start();\n var login = widget.find('[name=login]').val();\n var password = widget.find('[name=password]').val();\n var remember = widget.find('[name=remember]').is(':checked');\n literatum.utils.send(\n {\n action: 'doLogin',\n login: login,\n password: password,\n remember: remember,\n redirectUri: '/',\n },\n function (data) {\n if (data.success) window.location.href = '/';\n else {\n var prevView = widget.find('[name=prevView]').val();\n widget.render(\n {},\n {view: 'password', error: true, login: login, currentView: prevView},\n function () {\n initPasswordView();\n loading.done();\n }\n );\n }\n }\n );\n },\n showAllInstitutions: function (e, widget) {\n e.preventDefault();\n var loading = new literatum.FullPageLoading();\n loading.start();\n widget.render({}, {view: 'fullInst'}, function () {\n loading.done();\n });\n },\n removeAccount: function (e, widget) {\n e.preventDefault();\n var loading = new literatum.FullPageLoading();\n loading.start();\n var userId = $(this).siblings('[name=userId]').val();\n var cloudId = $(this).closest('.suggestion.item').find('[name=cloudId]').val();\n widget.render({}, {userId: userId, cloudId: cloudId}, function () {\n loginSuggestionsInitSearch(function () {\n loading.done();\n });\n });\n },\n next: function (e, widget) {\n e.preventDefault();\n var loading = new literatum.FullPageLoading();\n loading.start();\n var url = $(this).closest('.suggestion.item').find('[name=url]').val();\n if (url) {\n window.location.href = url;\n } else {\n var login = $(this).siblings('[name=login]').val();\n var currentView = widget.find('[name=currentView]').val();\n widget.render({}, {view: 'password', login: login, currentView: currentView}, function () {\n loading.done();\n });\n }\n },\n showFed: function (e, widget) {\n e.preventDefault();\n var loading = new literatum.FullPageLoading();\n loading.start();\n var fedName = $(this).find('[name=fedName]').val();\n widget.render({}, {view: 'fed', fedName: fedName}, function () {\n loading.done();\n });\n },\n showHistory: function (e, widget) {\n e.preventDefault();\n var loading = new literatum.FullPageLoading();\n loading.start();\n widget.render({}, {}, function () {\n loading.done();\n });\n },\n};\nliteratum.LoginSuggestionsWidget.find = function () {\n var $result = $(\"*[data-widget-def='\" + literatum.LoginSuggestionsWidget.id + \"']\");\n if ($result.length > 0) {\n return $result;\n }\n $result = $(\"*[widget-def='\" + literatum.LoginSuggestionsWidget.id + \"']\");\n if ($result.length > 0) {\n return $result;\n }\n return $('.' + literatum.LoginSuggestionsWidget.id);\n};\nliteratum.LoginSuggestionsWidget.prototype.registerListeners = function () {\n Object.getPrototypeOf(literatum.LoginSuggestionsWidget.prototype).registerListeners.call(this);\n this.find('.pass-less-form').each(function () {\n var $form = $(this);\n var $login = $form.find('.login');\n var $submit = $form.find('[name=submit]');\n $login.on('input', function () {\n if (!$login.val()) {\n $submit.attr('disabled', true);\n } else {\n $submit.removeAttr('disabled');\n }\n });\n });\n this.find('.pass-less-form').each(function () {\n var $form = $(this);\n var $login = $form.find('.code');\n var $submit = $form.find('[name=submit]');\n $login.on('input', function () {\n if (!$login.val()) {\n $submit.attr('disabled', true);\n } else {\n $submit.removeAttr('disabled');\n }\n });\n });\n this.find('.pass-less-form').each(function () {\n var $form = $(this);\n var $hiddenMessage = $form.find('[name=hiddenMessage]');\n var $errorMessage = $form.find('[name=errorMessage]');\n setTimeout(function () {\n $hiddenMessage.removeClass('d-none');\n $errorMessage.addClass('d-none');\n }, 30000);\n });\n};\nliteratum.widgets.register(literatum.LoginSuggestionsWidget);\n$(document).ready(function () {\n loginSuggestionsInitSearch();\n});\n\nwindow.initPasswordView = function () {\n $('.lgn__sug__submit__pass').prop('disabled', !$('.lgn__sug__password__input').val());\n $('.lgn__sug__password__input').on('keypress', function (e) {\n var key = e.which || e.keyCode;\n if (key === 13) {\n $('.lgn__sug__submit__pass').trigger('click');\n }\n });\n $('.lgn__sug__password__input').on('keyup', function () {\n $('.lgn__sug__submit__pass').prop('disabled', !$(this).val());\n });\n};\n\nwindow.initIndividualView = function () {\n $('.lgn__sug__submit__individual').prop('disabled', !$('.lgn__sug__text__input__individual').val());\n $('.lgn__sug__text__input__individual').on('keypress', function (e) {\n var key = e.which || e.keyCode;\n if (key === 13) {\n $('.lgn__sug__submit__individual').trigger('click');\n }\n });\n $('.lgn__sug__text__input__individual').on('keyup', function () {\n $('.lgn__sug__submit__individual').prop('disabled', !$(this).val());\n });\n};\n\nfunction loginSuggestionsInitSearch(fun) {\n var $el = $('#login_suggestions_org_search');\n if ($el.length) {\n var ms = $el.magicSuggest({\n allowFreeEntries: false,\n data: '/action/ssostart',\n hideTrigger: true,\n maxSelection: 1,\n placeholder: 'Type the name of your organization',\n renderer: function (data) {\n return (\n '
' +\n '' +\n '
' +\n data.name +\n '
' +\n '
' +\n data.federationName +\n '
' +\n '
' +\n '
'\n );\n },\n });\n $(ms).on('load', fun);\n }\n}\nvar Track = {};\n(function (undefined) {\n var jquery = typeof jQuery != 'undefined';\n var elements = {};\n var userAgent = navigator.userAgent.toLowerCase();\n var defaultAjaxSettings = {\n async: !/webkit/.test(userAgent),\n asynchronous: !/webkit/.test(userAgent),\n cache: false,\n timeout: /msie/.test(userAgent) ? 0 : 100,\n requestTimeout: /msie/.test(userAgent) ? 0 : 100,\n contentType: 'application/x-www-form-urlencoded',\n url: '/action/clickThrough',\n };\n var extend = function (dst, src) {\n if (jquery) {\n extend = jQuery.extend;\n } else {\n extend = Object.extend;\n }\n return extend(dst, src);\n };\n var each = function (o, iterator) {\n if (jquery) {\n each = jQuery.each;\n } else {\n each = function (object, callback) {\n var name,\n i = 0,\n length = object.length,\n isObj = length === undefined || typeof object === 'function';\n if (isObj) {\n for (name in object) {\n if (callback.call(object[name], name, object[name]) === false) {\n break;\n }\n }\n } else {\n for (\n var value = object[0];\n i < length && callback.call(value, i, value) !== false;\n value = object[++i]\n ) {}\n }\n return object;\n };\n }\n return each(o, iterator);\n };\n var bind = function (selector, options, callback) {\n var jQueryBind = function (selector, options, callback) {\n if (options.selector) {\n jQuery(selector).on(options.on, options.selector, options, callback);\n } else {\n jQuery(selector).on(options.on, options, callback);\n }\n };\n var oldJQueryBind = function (selector, options, callback) {\n var callbackToUse = callback;\n if (options.selector) {\n callbackToUse = function (event) {\n var $target = $(event.currentTarget);\n while (!$target.is(options.selector) && $target.children().length) {\n $target.children().each(function () {\n $target = $(this);\n if ($target.is(options.selector)) {\n return false;\n }\n });\n }\n if ($target.is(options.selector)) {\n callback.call(event.target, event, options);\n }\n };\n jQuery(selector).data('TrackCallback', callbackToUse);\n }\n jQuery(selector).bind(options.on, options, callbackToUse);\n };\n var prototypeBind = function (selector, options, callback) {\n $$(selector).each(function (el) {\n Event.observe(el, options.on, callback.bindAsEventListener(this, options));\n });\n };\n if (jquery) {\n if (jQuery.fn.on) {\n bind = jQueryBind;\n } else {\n bind = oldJQueryBind;\n }\n } else {\n bind = prototypeBind;\n }\n return bind(selector, options, callback);\n };\n var unbind = function (selector, options, callback) {\n var jQueryUnbind = function (selector, options, callback) {\n if (options.selector) {\n jQuery(selector).off(options.on, options.selector, options, callback);\n } else {\n jQuery(selector).off(options.on, options, callback);\n }\n };\n var oldJQueryUnbind = function (selector, options, callback) {\n if (options.selector) {\n callback = jQuery(selector).data('TrackCallback');\n }\n if (callback) {\n jQuery(selector).unbind(options.on, callback);\n } else {\n jQuery(selector).unbind(options.on);\n }\n };\n var prototypeUnbind = function (selector, options, callback) {\n $$(selector).each(function (el) {\n Event.stopObserving(el, options.on);\n });\n };\n if (jquery) {\n if (jQuery.fn.on) {\n unbind = jQueryUnbind;\n } else {\n unbind = oldJQueryUnbind;\n }\n } else {\n unbind = prototypeUnbind;\n }\n return unbind(selector, options, callback);\n };\n var sendBeacon = function (options) {\n var formData = new FormData();\n for (var key in options.data) {\n if (options.data.hasOwnProperty(key)) {\n formData.append(key, options.data[key]);\n }\n }\n navigator.sendBeacon(options.url, formData);\n };\n var ajax = function (ajaxOptions) {\n if (ajaxOptions.useBeacon && navigator.sendBeacon) {\n ajax = sendBeacon;\n } else if (jquery) {\n ajax = jQuery.ajax;\n } else {\n ajax = function (options) {\n options.parameters = options.data;\n new Ajax.Request(options.url, options);\n };\n }\n ajax(ajaxOptions);\n };\n var defaultFire = function (options, data) {\n var ajaxSettings = extend(extend({}, defaultAjaxSettings), options.ajaxSettings);\n ajaxSettings.data = extend(extend({}, ajaxSettings.data), data);\n ajax(ajaxSettings);\n };\n var defaultOptions = {\n on: 'mouseup',\n fire: defaultFire,\n acceptEvent: function (e) {\n return e.which === 1 || e.which === 2;\n },\n data: {},\n };\n var methods = {\n setup: function (options) {\n if (options.fire !== undefined) {\n defaultFire = options.fire;\n }\n if (options.options !== undefined) {\n defaultOptions = extend(extend({}, defaultOptions), options.options);\n }\n if (options.ajax !== undefined) {\n defaultAjaxSettings = extend(extend({}, defaultAjaxSettings), options.ajax);\n }\n },\n init: function (el) {\n each((elements = el), function (selector, options) {\n if (Object.prototype.toString.call(options) === '[object Array]') {\n var array = options;\n for (var i = 0; i < array.length; ++i) {\n options = array[i];\n options = extend(extend({}, defaultOptions), options);\n if (options.fire !== undefined) {\n bind(selector, options, methods.onEvent);\n }\n }\n } else {\n options = extend(extend({}, defaultOptions), options);\n if (options.fire !== undefined) {\n bind(selector, options, methods.onEvent);\n }\n }\n });\n return this;\n },\n destroy: function () {\n elements.each(function (selector, options) {\n unbind(selector, options.on, options.fire);\n });\n return this;\n },\n onEvent: function (event, options) {\n if (options == undefined) {\n options = event.data;\n }\n var data = options.data;\n if (typeof options.acceptEvent == 'function' && !options.acceptEvent(event)) {\n return true;\n }\n var addData = options.addData;\n if (typeof addData == 'function') {\n try {\n extend(data, addData.call(event.target, options, event));\n } catch (ex) {\n if (console && console.log) {\n console.log('Failed to extract data:' + ex);\n return;\n }\n }\n }\n options.fire(options, data);\n return true;\n },\n };\n Track = function (method) {\n if (methods[method]) {\n return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));\n } else if (typeof method === 'object' || !method) {\n return methods.init.apply(this, arguments);\n }\n };\n})();\n(function () {\n window.TrackPageTransitions = function (Track, $, o) {\n o = o || {};\n var $elements = $('*[data-track]');\n if (!$elements.length) {\n return;\n }\n Track('setup', {ajax: {url: o.url || '/action/analytics', method: 'POST', useBeacon: true}});\n var captureAllPageTransitions = $('html[data-track]').length != 0;\n Track({\n body: [\n {\n on: 'mousedown keydown',\n selector: captureAllPageTransitions ? 'a[href]' : '*[data-track] a[href], a[href][data-track]',\n addData: extractData,\n acceptEvent: function (e) {\n return e.which == 1 || e.keyCode == 13;\n },\n data: {EventType: 'PageTransition'},\n },\n {\n on: 'submit',\n selector: captureAllPageTransitions ? 'form' : '*[data-track] form, form[data-track]',\n addData: extractData,\n data: {EventType: 'PageTransition'},\n },\n ],\n });\n };\n if (typeof Track != 'undefined') {\n if (typeof jQuery != 'undefined') {\n jQuery(document).ready(function () {\n TrackPageTransitions(Track, jQuery);\n });\n } else if (typeof window.Prototype != 'undefined') {\n document.observe('dom:loaded', function () {\n TrackPageTransitions(Track, $$);\n });\n }\n }\n\n function collectData(el) {\n var d = {};\n $.each(el.attributes, function (i, attrib) {\n var name = attrib.name;\n if (name.indexOf('data-') == 0) {\n name = name.substring('data-'.length);\n name = name.replace(/-([a-z])/g, function (g) {\n return g[1].toUpperCase();\n });\n d[name] = attrib.value;\n }\n });\n return d;\n }\n\n function extractData(options, event) {\n var data = {};\n var $html = $(document.documentElement);\n var requestId = $html.data('requestId');\n if (requestId) {\n data.OriginRequestId = requestId;\n data.OriginUrl = window.location.href;\n var date = new Date();\n date.setTime(date.getTime() + 60 * 1000);\n var expires = date.toGMTString();\n document.cookie = 'OriginRequestId=' + requestId + '; expires=' + expires + '; path=/';\n }\n var $this = $(this);\n var href;\n if ($this.is('a')) {\n data.LinkText = $this.text();\n href = $this.attr('href');\n } else if ($this.is('form')) {\n href = $this.attr('action');\n }\n if (href) {\n data.LinkHref = href;\n if (href.indexOf('/doi/') != -1) {\n data.doi = href.split('/doi/')[1];\n }\n }\n var innerFound = false;\n $.each($this.add($this.parents()), function () {\n var $ancestor = $(this);\n var d = null;\n try {\n d = $ancestor.data();\n } catch (ex) {\n d = false;\n }\n if (d === false) {\n d = collectData($ancestor.get(0));\n }\n for (var property in d) {\n if (d.hasOwnProperty(property) && property.indexOf('track') == 0) {\n var name = property.substring('track'.length);\n if (name == 'Func' && d[property]) {\n var func = window[d[property]];\n if ($.isFunction(func)) {\n try {\n var extra = func.call($ancestor);\n if (extra) {\n $.extend(data, extra);\n }\n } catch (ex) {}\n }\n continue;\n }\n if (name.length) {\n data['Track' + name] = d[property];\n }\n if (!innerFound) {\n innerFound = true;\n if ($this.is('a')) {\n var linkIndex = $('a[href*=\"/doi\"], a[href*=\"/loi\"], a[href*=\"/toc\"]', $ancestor).index(\n $this\n );\n if (linkIndex > -1) {\n data.LinkIndex = linkIndex + 1;\n }\n }\n }\n }\n }\n });\n if (event.which == 1) {\n data.ClickPageX = event.pageX;\n data.ClickPageY = event.pageY;\n }\n return data;\n }\n})();\n(function () {\n var TrackSearchResults = function (Track, $, undefined) {\n var $searchResults = $(\n '.searchResultContainer, #frmSearchResults, #frmSearch, #searchResultsAll, #searchResults, .searchResult, .search-result, #searchResultContent'\n );\n if (!$searchResults.length) {\n return;\n }\n Track('setup', {ajax: {url: '/action/analytics', useBeacon: true}});\n var resultSelectorAction = {\n selector: 'a[href^=\"/doi\"], a[href^=\"/article\"]',\n addData: extractDataSearchResult,\n data: {EventType: 'SearchResultClicked'},\n };\n Track({\n '.searchResultContainer .articleLinks, #frmSearch .articleEntry td, .searchResultsListing li':\n resultSelectorAction,\n '#searchResultsAll .articleEntry td, #searchResults .searchResultItem .articleInfo': resultSelectorAction,\n '#frmSearchResults .articleEntry td, #frmSearchResults .articleEntry div, #frmSearchResults .searchResultItem span':\n resultSelectorAction,\n '#frmSearchResults .searchResultItem .atcl-item, #frmSearchResults .searchResultItem div':\n resultSelectorAction,\n '#frmSearchResults .searchEntry .searchEntryTools, .searchResult .result-list li': resultSelectorAction,\n '.contentContainer .searchResult td, .search-result .items-results li span': resultSelectorAction,\n '#frmSearch .article-details, #frmSearchResults .search-results .search-result-item': resultSelectorAction,\n '#searchResultContent .o-results .m-result, #frmSearchResults .search-results .articleBox, .search-result .items-results .issue-item_metadata':\n resultSelectorAction,\n });\n };\n if (typeof Track != 'undefined') {\n if (typeof jQuery != 'undefined') {\n jQuery(document).ready(function () {\n TrackSearchResults(Track, jQuery);\n });\n } else if (typeof window.Prototype != 'undefined') {\n document.observe('dom:loaded', function () {\n TrackSearchResults(Track, $$);\n });\n }\n }\n\n function extractCommonData(data, options, event) {\n var $this = $(this);\n var searchResultRows;\n var clickedRow;\n var $searchResultRow = $this.closest(\n '#searchResultItems, .search-results, .searchEntry, .contentContainer, #frmSearch, #frmSearchResults, #searchResultContent .o-results, .search-result'\n );\n if ($searchResultRow.length) {\n searchResultRows = $searchResultRow.find(\n '.articleEntry, .searchResultItem, .searchEntry, .article-details, .search-result-item, .m-result, .articleBox, .issue-item'\n );\n clickedRow = $this.closest(\n '.articleEntry, .searchResultItem, .searchEntry, .article-details, .search-result-item, .m-result, .articleBox, .issue-item'\n );\n } else {\n $searchResultRow = $this.closest('.searchResultsListing, .result-list, .items-results');\n if ($searchResultRow.length) {\n searchResultRows = $searchResultRow.children('li');\n clickedRow = $this.closest('li');\n }\n }\n if (searchResultRows.length && clickedRow.length) {\n data.searchPageRank = searchResultRows.index(clickedRow) + 1;\n }\n var $container = $this.closest(\n '.searchResultContainer, .type-search-results, .searchNav, .searchResult, .search-result, #searchResultContent'\n );\n if (!$container.length) {\n $container = $('.searchResults_paging, .searchResultsCont, .searchResults');\n }\n if ($container.length) {\n var $selectedPage = $container.find(\n '.pages .selected:first, .pages .activeLink:first, .pages .current:first, .searchPages .activeLink:first, .pagination .activeLink:first, .pagination .active:first, .pageLinks .selected:first, .paginationLinks .s-active:first'\n );\n if ($selectedPage.length) {\n data.resultPageNum = parseInt($selectedPage.text());\n } else {\n var $paginationElements = $container\n .find('.paginationControls, .paginationLinks')\n .first()\n .find('li:not(:has(a))');\n if ($paginationElements.length) {\n $paginationElements.each(function () {\n var $innerMostChildOfPagination = $(this).children();\n while ($innerMostChildOfPagination.length) {\n $innerMostChildOfPagination = $innerMostChildOfPagination.children();\n }\n $selectedPage = $.trim($innerMostChildOfPagination.end().text());\n if ($selectedPage.length && isInt($selectedPage)) {\n data.resultPageNum = parseInt($selectedPage);\n return false;\n }\n });\n }\n }\n }\n if (!data.resultPageNum) {\n var startPageFromSearchForm = $('#searchResultsAll, #frmSearch, #frmSearchResults').find(\n 'input[name=startPage]'\n );\n if (startPageFromSearchForm.length) {\n data.resultPageNum = parseInt(startPageFromSearchForm.val()) + 1;\n }\n }\n }\n\n function isInt(n) {\n return parseInt(n) + 0 === parseInt(n);\n }\n\n function extractDataSearchResult(options, event) {\n var data = {};\n var $this = $(this);\n var $articleEntry = $this.closest('.articleEntry, .searchResultItem, .articleCitation, .m-result');\n if ($articleEntry.length) {\n data.doi = $articleEntry.find(':input[name=\"doi\"]').val();\n if (!data.doi) {\n data.pii = $articleEntry.find(':input[name=\"pii\"]').val();\n }\n }\n if (!data.doi && !data.pii) {\n var href = $this.attr('href');\n if (typeof href == 'undefined') {\n var link = $this.closest('a');\n href = link.attr('href');\n }\n if (href.includes('doi')) {\n var doi = href.split('/doi/')[1];\n var doiPattern = new RegExp('^10\\\\.\\\\d\\\\d\\\\d\\\\d(\\\\d*)/(.+)');\n if (doiPattern.test(doi)) {\n data.doi = doi;\n } else {\n data.doi = doi.substring(doi.indexOf('/') + 1);\n }\n } else if (href.includes('article/')) {\n var pii = href.split('/article/')[1];\n data.pii = pii.substring(0, pii.indexOf('/'));\n }\n }\n extractCommonData.call(this, data, options, event);\n return data;\n }\n})();\n$(document).ready(function () {\n $('.allowance__message').click(function () {\n $('.allowance__text').toggleClass('d-none');\n $('.allowance__message .arrow_d_n').toggleClass('openAllowance');\n });\n $('.preview_button').click(function () {\n $('.preview__modal.popup').removeClass('d-none');\n $('body.pb-ui').addClass('noscroll');\n });\n $('.preview__modal .icon-preview-close_thin,.preview__options .btn-cancel,.preview__content .close').click(\n function () {\n $('.preview__modal.popup').addClass('d-none');\n $('body.pb-ui').removeClass('noscroll');\n }\n );\n});\n(function ($) {\n $.fn.multiSelect = function (options) {\n $.fn.multiSelect.init($(this), options);\n };\n $.extend($.fn.multiSelect, {\n defaults: {actcls: 'active', selector: 'tbody tr', except: ['tbody'], statics: ['.static'], callback: false},\n first: null,\n last: null,\n init: function (scope, options) {\n this.scope = scope;\n this.options = $.extend({}, this.defaults, options);\n this.initEvent();\n },\n checkStatics: function (dom) {\n for (var i in this.options.statics) {\n if (dom.is(this.options.statics[i])) {\n return true;\n }\n }\n },\n initEvent: function () {\n var self = this,\n scope = self.scope,\n options = self.options,\n callback = options.callback,\n actcls = options.actcls;\n scope.on('click.mSelect', options.selector, function (e) {\n if (!e.shiftKey && self.checkStatics($(this))) {\n return;\n }\n if ($(this).hasClass(actcls)) {\n $(this).removeClass(actcls);\n } else {\n $(this).addClass(actcls);\n }\n if (e.shiftKey && self.last) {\n if (!self.first) {\n self.first = self.last;\n }\n var start = self.first.index();\n var end = $(this).index();\n if (start > end) {\n var temp = start;\n start = end;\n end = temp;\n }\n $(options.selector, scope)\n .removeClass(actcls)\n .slice(start, end + 1)\n .each(function () {\n if (!self.checkStatics($(this))) {\n $(this).addClass(actcls);\n }\n });\n window.getSelection ? window.getSelection().removeAllRanges() : document.selection.empty();\n } else if (!e.ctrlKey && !e.metaKey) {\n $(this).siblings().removeClass(actcls);\n }\n self.last = $(this);\n $.isFunction(callback) && callback($(options.selector + '.' + actcls, scope));\n });\n $(document).on('click.mSelect', function (e) {\n for (var i in options.except) {\n var except = options.except[i];\n if ($(e.target).is(except) || $(e.target).parents(except).length) {\n return;\n }\n }\n scope.find(options.selector).each(function () {\n if (!self.checkStatics($(this))) {\n $(this).removeClass(actcls);\n }\n });\n $.isFunction(callback) && callback($(options.selector + '.' + actcls, scope));\n });\n $(document).on('keydown.mSelect', function (e) {\n if (e.keyCode == 65 && (e.metaKey || e.ctrlKey)) {\n $(options.selector, scope).each(function () {\n if (!self.checkStatics($(this))) {\n $(this).addClass(actcls);\n }\n });\n $.isFunction(callback) && callback($(options.selector + '.' + actcls, scope));\n e.preventDefault();\n return false;\n }\n });\n $(document).on('keyup.mSelect', function (e) {\n if (e.keyCode == 16) {\n self.first = null;\n }\n });\n },\n });\n})(jQuery);\n\nwindow.initRemoveButton = function (name, topicCode) {\n $('.specify_membership__remove_button_' + name).click(function () {\n var loading = new literatum.FullPageLoading();\n loading.start();\n var ids = [];\n var selectedItems = $('.specify_membership__' + name + '_table tr.active');\n $('.specify_membership__' + name + '_table tr.active td:first-child').each(function () {\n ids.push($(this).html());\n });\n literatum.utils.send(\n {\n action: 'specifyMembership',\n subAction: 'remove',\n isNeg: name === 'neg',\n id: ids,\n topicCode: topicCode,\n },\n function (data) {\n if (data.status === 'error') {\n alert('Removing the selected rules have failed.');\n } else if (data.status === 'unauthorized') {\n window.location.replace('action/showLogin');\n } else if (data.status === 'refresh') {\n location.reload();\n } else {\n selectedItems.remove();\n }\n loading.done();\n },\n function () {\n alert('Removing the selected rules have failed.');\n loading.done();\n }\n );\n });\n};\n\nliteratum.SpecifyMembershipWidget = function (widgetDef, element) {\n literatum.Widget.call(this, widgetDef, element);\n};\nliteratum.SpecifyMembershipWidget.prototype = new literatum.Widget();\nliteratum.SpecifyMembershipWidget.id = 'specifyMembership';\nliteratum.SpecifyMembershipWidget.action = '/pb/widgets/specify-membership/specifyMembership';\nliteratum.SpecifyMembershipWidget.binders = {\n showPubs: function (e, widget) {\n e.preventDefault();\n var loading = new literatum.FullPageLoading();\n loading.start();\n var topicCode = widget.find('[name=topicCode]').val();\n widget.render({}, {showPubs: true, topicCode: topicCode}, function () {\n $('.specify_membership__pos_table').multiSelect();\n $('.specify_membership__neg_table').multiSelect();\n $('.search-popup__container .result_table').multiSelect();\n initRemoveButton('pos', topicCode);\n initRemoveButton('neg', topicCode);\n $('.specify_membership__add_button_pos').click(function () {\n $('.search-popup').removeClass('d-none');\n $('.search-popup').addClass('pos');\n $('html').addClass('disable_scroll');\n });\n $('.specify_membership__add_button_neg').click(function () {\n $('.search-popup').removeClass('d-none');\n $('.search-popup').addClass('neg');\n $('html').addClass('disable_scroll');\n });\n var cancel_function = function () {\n $('.search-popup').addClass('d-none');\n $('.search-popup').removeClass('neg');\n $('.search-popup').removeClass('pos');\n $('html').removeClass('disable_scroll');\n };\n $('.search-popup .cancel').click(cancel_function);\n var marker;\n $('.search-popup .add').click(function () {\n var name = $('.search-popup').hasClass('pos') ? 'pos' : 'neg';\n var loading = new literatum.FullPageLoading();\n loading.start();\n var ids = [];\n $('.result_container .result_table tr.active td:first-child').each(function () {\n ids.push($(this).html());\n });\n var selectedItems = $('.result_container .result_table tr.active');\n cancel_function();\n literatum.utils.send(\n {\n action: 'specifyMembership',\n subAction: 'add',\n id: ids,\n isNeg: name === 'neg',\n topicCode: topicCode,\n },\n function (data) {\n if (data.status === 'error') {\n alert('Adding the selected rules have failed.');\n } else if (data.status === 'unauthorized') {\n window.location.replace('action/showLogin');\n } else if (data.status === 'refresh') {\n location.reload();\n } else {\n selectedItems.each(function () {\n marker = $(this).html() + '';\n marker = '' + marker + '';\n $('.specify_membership__' + name + '_table tbody').prepend(marker);\n });\n }\n loading.done();\n },\n function () {\n alert('Adding the selected rules have failed.');\n loading.done();\n }\n );\n });\n loading.done();\n });\n },\n hidePubs: function (e, widget) {\n e.preventDefault();\n if ($('.specify_membership__button').html().indexOf('Show') == -1) {\n $('.specify_membership__button').html('Show Specify Membership');\n } else {\n $('.specify_membership__button').html('Hide Specify Membership');\n }\n $('.specify_membership__tables_container').toggleClass('d-none');\n },\n doTitleSearch: function (e, widget) {\n e.preventDefault();\n var loading = new literatum.FullPageLoading();\n var title = widget.find('[name=title_filter]').val();\n literatum.utils.send(\n {action: 'doTitleSearch', title: title},\n function (data) {\n widget.find('.search-popup__container .input_container').toggleClass('d-none');\n widget.find('.search-popup__container .result_container').toggleClass('d-none');\n widget.find('.search-popup__container .back_forward_container .back').removeClass('nav_disabled');\n widget.find('.search-popup__container .back_forward_container .forward').addClass('nav_disabled');\n widget.find('.search-popup__container .add').removeClass('d-none');\n var result_table = widget.find('.search-popup__container .result_table tbody');\n result_table.empty();\n var markup;\n for (var i = 0; i < data.length; i++) {\n markup = '' + data[i].DOI + '' + data[i].Title + '';\n result_table.append(markup);\n }\n loading.done();\n },\n function () {\n console.error('An error occurred while searching using title within topicStory widget.');\n loading.done();\n }\n );\n },\n forward: function (e, widget) {\n if (widget.find('.search-popup__container .back_forward_container .forward').hasClass('nav_disabled')) return;\n widget.find('.search-popup__container .input_container').addClass('d-none');\n widget.find('.search-popup__container .result_container').removeClass('d-none');\n widget.find('.search-popup__container .back_forward_container .back').removeClass('nav_disabled');\n widget.find('.search-popup__container .back_forward_container .forward').addClass('nav_disabled');\n widget.find('.search-popup__container .add').removeClass('d-none');\n },\n back: function (e, widget) {\n if (widget.find('.search-popup__container .back_forward_container .back').hasClass('nav_disabled')) return;\n widget.find('.search-popup__container .input_container').removeClass('d-none');\n widget.find('.search-popup__container .result_container').addClass('d-none');\n widget.find('.search-popup__container .back_forward_container .back').addClass('nav_disabled');\n widget.find('.search-popup__container .back_forward_container .forward').removeClass('nav_disabled');\n widget.find('.search-popup__container .add').addClass('d-none');\n },\n reset: function (e, widget) {\n var loading = new literatum.FullPageLoading();\n loading.start();\n var topicCode = widget.find('[name=topicCode]').val();\n literatum.utils.send(\n {action: 'specifyMembership', subAction: 'reset', topicCode: topicCode},\n function (data) {\n if (data.status === 'refresh') {\n location.reload();\n } else if (data.status === 'unauthorized') {\n window.location.replace('action/showLogin');\n } else if (data.status === 'error') {\n alert('Reset operation failed!');\n }\n loading.done();\n },\n function () {\n alert('Reset operation failed!');\n loading.done();\n }\n );\n },\n saveAndRefresh: function (e, widget) {\n var loading = new literatum.FullPageLoading();\n loading.start();\n var topicCode = widget.find('[name=topicCode]').val();\n literatum.utils.send(\n {action: 'specifyMembership', subAction: 'save', topicCode: topicCode},\n function (data) {\n if (data.status === 'refresh') {\n location.reload();\n } else if (data.status === 'unauthorized') {\n window.location.replace('action/showLogin');\n } else if (data.status === 'error') {\n alert('Saving operation failed!');\n }\n loading.done();\n },\n function () {\n alert('Saving operation failed!');\n loading.done();\n }\n );\n },\n};\nliteratum.SpecifyMembershipWidget.find = function () {\n var $result = $(\"*[data-widget-def='\" + literatum.SpecifyMembershipWidget.id + \"']\");\n if ($result.length > 0) {\n return $result;\n }\n $result = $(\"*[widget-def='\" + literatum.SpecifyMembershipWidget.id + \"']\");\n if ($result.length > 0) {\n return $result;\n }\n return $('.' + literatum.SpecifyMembershipWidget.id);\n};\nliteratum.SpecifyMembershipWidget.prototype.registerListeners = function () {\n Object.getPrototypeOf(literatum.SpecifyMembershipWidget.prototype).registerListeners.call(this);\n};\nliteratum.widgets.register(literatum.SpecifyMembershipWidget);\n\n$(document).ready(function () {\n $('.relatedArtContainer .showMore').on('click', function () {\n var max = $('.relatedArtContainer .relatedArt').data('collapse');\n $('.relatedArtContainer .relatedArt li:gt(' + max + ')').toggleClass('d-none');\n var a = $(this).find('a');\n a.html(a.html() === 'more' ? 'collapse' : 'more');\n var arrow = $(this).find('div');\n arrow.toggleClass('arrow-down');\n arrow.toggleClass('arrow-up');\n });\n});\n\ncommerce.cart = (function () {\n var instance = {};\n var cartInfo;\n var listeners = {};\n var callbacks = [];\n var errorHandler;\n\n function triggerRefresh(updatedCartInfo) {\n console.log('Trying to refresh current cart state...');\n Object.keys(listeners).forEach(function (key) {\n commerce.cart.notify(key, updatedCartInfo);\n });\n cartInfo = updatedCartInfo;\n }\n\n instance.refresh = function () {\n literatum.utils.send({action: 'showCart'}, triggerRefresh, errorHandler);\n };\n instance.identity = {\n name: 'identity',\n guest: function (email, acceptTermsConditions) {\n literatum.utils.send(\n {\n action: 'guestCheckout',\n email: email,\n acceptTermsConditions: acceptTermsConditions,\n },\n commerce.cart.identity.refresh,\n errorHandler\n );\n },\n login: function (email, password) {\n literatum.utils.send(\n {\n action: 'doLogin',\n email: email,\n password: password,\n },\n commerce.cart.identity.refresh,\n errorHandler\n );\n },\n registration: function (email) {\n literatum.utils.send({action: 'register', email: email}, commerce.cart.identity.refresh, errorHandler);\n },\n clear: function () {\n literatum.utils.send({action: 'resetCartAction'}, commerce.cart.identity.refresh, errorHandler);\n },\n refresh: function (cartInfo) {\n commerce.cart.notify(commerce.cart.identity, cartInfo);\n },\n changed: function (updatedCartInfo) {\n return cartInfo == null || cartInfo.identityHash != updatedCartInfo.identityHash;\n },\n };\n instance.buyingList = {\n name: 'buyingList',\n addItem: function (itemId) {\n literatum.utils.send({action: 'addToCart', id: itemId}, commerce.cart.buyingList.refresh, errorHandler);\n },\n remove: function (itemId) {\n literatum.utils.send(\n {\n action: 'removeCartItem',\n id: itemId,\n },\n commerce.cart.buyingList.refresh,\n errorHandler\n );\n },\n decreaseQuantity: function (itemId) {\n literatum.utils.send(\n {action: 'decreaseQuantity', id: itemId},\n function (cartInfo) {\n commerce.cart.notify('quantityDecreased', cartInfo);\n },\n errorHandler\n );\n },\n increaseQuantity: function (itemId) {\n literatum.utils.send(\n {action: 'increaseQuantity', id: itemId},\n function (cartInfo) {\n commerce.cart.notify('quantityIncreased', cartInfo);\n },\n errorHandler\n );\n },\n updateQuantity: function (itemId, currentQuantity, requiredQuantity) {\n literatum.utils.send(\n {\n action: 'updateQuantity',\n id: itemId,\n currentQuantity: currentQuantity,\n requiredQuantity: requiredQuantity,\n },\n function (cartInfo) {\n commerce.cart.notify('updateQuantity', cartInfo);\n },\n commerce.cart.buyingList.refresh,\n errorHandler\n );\n },\n refresh: function (cartInfo) {\n commerce.cart.notify(commerce.cart.buyingList, cartInfo);\n },\n changed: function (updatedCartInfo) {\n return cartInfo == null || cartInfo.buyingItemHash != updatedCartInfo.buyingItemHash;\n },\n };\n instance.restoreAccess = {\n name: 'restoreAccess',\n request: function (email) {\n literatum.utils.send(\n {\n action: 'restoreContentAccess',\n email: email,\n },\n commerce.cart.restoreAccess.refresh,\n errorHandler\n );\n },\n refresh: function (cartInfo) {\n commerce.cart.notify(commerce.cart.restoreAccess, cartInfo);\n },\n changed: function (updatedCartInfo) {\n return true;\n },\n };\n instance.discounts = {\n name: 'discounts',\n apply: function (discountCode) {\n literatum.utils.send(\n {\n action: 'applyDiscount',\n discount: discountCode,\n },\n commerce.cart.discounts.refresh,\n errorHandler\n );\n },\n remove: function (discountCode) {\n literatum.utils.send(\n {\n action: 'removeDiscount',\n discount: discountCode,\n },\n commerce.cart.discounts.refresh,\n errorHandler\n );\n },\n enable: function (discountCode) {\n literatum.utils.send(\n {\n action: 'enableDiscount',\n discount: discountCode,\n },\n commerce.cart.discounts.refresh,\n errorHandler\n );\n },\n disable: function (discountCode) {\n literatum.utils.send(\n {\n action: 'disableDiscount',\n discount: discountCode,\n },\n commerce.cart.discounts.refresh,\n errorHandler\n );\n },\n refresh: function (cartInfo) {\n commerce.cart.notify(commerce.cart.discounts, cartInfo);\n },\n changed: function (updatedCartInfo) {\n return cartInfo == null || cartInfo.cartHash != updatedCartInfo.cartHash;\n },\n };\n instance.summary = {\n name: 'summary',\n refresh: function () {\n commerce.cart.notify(commerce.cart.summary, cartInfo);\n },\n changed: function (updatedCartInfo) {\n return cartInfo == null || cartInfo.cartHash != updatedCartInfo.cartHash;\n },\n };\n instance.shipping = {\n name: 'shipping',\n update: function (form) {\n var request = {};\n $.extend(request, {action: 'updateShippingAddress'}, form);\n literatum.utils.send(request, commerce.cart.shipping.refresh, errorHandler);\n },\n getShippingCosts: function (country, state, callback) {\n literatum.utils.send({action: 'getShippingCosts', country: country, state: state}, callback);\n },\n refresh: function (cartInfo) {\n commerce.cart.notify(commerce.cart.shipping, cartInfo);\n },\n changed: function (updatedCartInfo) {\n return (\n cartInfo == null ||\n cartInfo.shippingHash != updatedCartInfo.shippingHash ||\n cartInfo.buyingItemHash != updatedCartInfo.buyingItemHash\n );\n },\n };\n instance.tax = {\n name: 'tax',\n update: function (form) {\n var request = {};\n $.extend(request, {action: 'updateTax'}, form);\n literatum.utils.send(request, commerce.cart.tax.refresh, errorHandler);\n },\n refresh: function (cartInfo) {\n commerce.cart.notify(commerce.cart.tax, cartInfo);\n },\n changed: function (updatedCartInfo) {\n return cartInfo == null || cartInfo.cartHash != updatedCartInfo.cartHash;\n },\n };\n instance.billing = {\n name: 'billing',\n update: function (form) {\n var request = {};\n $.extend(request, {action: 'updateBillingAddress'}, form);\n literatum.utils.send(request, commerce.cart.billing.refresh, errorHandler);\n },\n refresh: function (cartInfo) {\n commerce.cart.notify(commerce.cart.billing, cartInfo);\n },\n changed: function (updatedCartInfo) {\n return cartInfo == null || cartInfo.billingHash != updatedCartInfo.billingHash;\n },\n };\n instance.savedItems = {\n name: 'savedItems',\n saveById: function (itemId) {\n literatum.utils.send({action: 'saveItem', id: itemId}, commerce.cart.savedItems.refresh, errorHandler);\n },\n saveByDoi: function (doi) {\n literatum.utils.send({action: 'saveItem', doi: doi}, commerce.cart.savedItems.refresh, errorHandler);\n },\n remove: function (id) {\n literatum.utils.send({action: 'removeSavedItem', id: id}, commerce.cart.savedItems.refresh, errorHandler);\n },\n refresh: function (cartInfo) {\n commerce.cart.notify(commerce.cart.savedItems, cartInfo);\n },\n changed: function (updatedCartInfo) {\n return cartInfo == null || cartInfo.savedItemsHash != updatedCartInfo.savedItemsHash;\n },\n };\n instance.register = function (service, callback) {\n console.log('Commerce Cart :: Registering service ' + service.name + ' listener...');\n if (service) {\n var serviceName = typeof service === 'string' ? service : service.name;\n if (!listeners[serviceName]) {\n listeners[serviceName] = [];\n }\n listeners[serviceName].push(callback);\n }\n };\n instance.notify = function (service, updatedCartInfo) {\n if (updatedCartInfo) {\n if (updatedCartInfo.sessionChanged) {\n location.reload();\n return;\n }\n if (cartInfo) {\n if (cartInfo.sessionHash != updatedCartInfo.sessionHash) {\n location.reload();\n return;\n }\n }\n }\n\n var result = [];\n var serviceName = typeof service === 'string' ? service : service.name;\n console.log('Commerce Cart :: Notifying ' + serviceName + ' listeners...');\n if (\n typeof serviceName === 'string' ||\n (service && service.changed && service.changed(updatedCartInfo)) ||\n literatum.utils.hasAttributes(updatedCartInfo.attributes)\n ) {\n if (listeners[serviceName]) {\n listeners[serviceName].forEach(function (listener) {\n var value = listener(updatedCartInfo);\n result.push(value);\n });\n }\n }\n var clone = callbacks;\n $.when.apply($, result).then(function () {\n clone.forEach(function (callback) {\n callback();\n });\n });\n commerce.cart.clearCallbacks();\n if (updatedCartInfo) {\n cartInfo = updatedCartInfo;\n }\n };\n instance.setErrorHandler = function (handler) {\n errorHandler = handler;\n };\n instance.addCallback = function (callback) {\n callbacks.push(callback);\n };\n instance.clearCallbacks = function () {\n callbacks = [];\n };\n return instance;\n})();\nconsole.log('Cart Service initialized!');\ncommerce.validators = (function () {\n var instance = {};\n var creditCardsPattern = {};\n creditCardsPattern['visa'] = new RegExp('^4[0-9]{12}(?:[0-9]{3})?$');\n creditCardsPattern['mastercard'] = new RegExp('^[25][1-5][0-9]{14}$');\n creditCardsPattern['amex'] = new RegExp('^3[47][0-9]{13}$');\n creditCardsPattern['dinner'] = new RegExp('^3(?:0[0-5]|[68][0-9])[0-9]{11}$');\n creditCardsPattern['discover'] = new RegExp('^6(?:011|5[0-9]{2})[0-9]{12}$');\n creditCardsPattern['jcb'] = new RegExp('^(?:2131|1800|35\\\\d{3})\\\\d{11}$');\n creditCardsPattern['maestro'] = new RegExp('^(5018|5020|5038|5893|6304|6759|6761|6762|6763)[0-9]{8,15}$');\n instance.creditcard = function (value, element) {\n var number = value.match(/\\d/g);\n if (!number) return true;\n value = number.join('');\n var invalid = true;\n $(element).closest('.input-group').prop('class', 'input-group cc-number');\n Object.keys(creditCardsPattern).forEach(function (k) {\n if (creditCardsPattern[k].test(value) && invalid && /^\\d+$/.test($('#realNumber').val())) {\n invalid = false;\n $(element).closest('.input-group').addClass(k);\n }\n });\n return invalid;\n };\n instance.creditcardDate = function (value, element, form) {\n var currentDate = new Date();\n var currentMonth = currentDate.getMonth(5) + 1;\n var currentYear = currentDate.getFullYear();\n var monthExpiry = form.find(\"[name='expMonth']\").val();\n var yearExpiry = form.find(\"[name='expYear']\").val();\n var expireMonth = parseInt(monthExpiry);\n var expireYear = parseInt(yearExpiry);\n var expireDate = new Date();\n expireDate.setMonth(expireMonth - 1);\n expireDate.setYear(expireYear);\n if (expireYear == '0000' || expireMonth == '00') return true;\n if (currentYear > expireYear) {\n return true;\n }\n if (currentMonth > expireMonth && monthExpiry == '00') {\n return true;\n }\n return expireDate < currentDate;\n };\n instance.notEmpty = function (value) {\n return !value;\n };\n instance.validate = function (form) {\n var $form = null;\n var invalid = true;\n if (form instanceof jQuery) {\n $form = form;\n } else {\n $form = $(form);\n }\n $form.find('input[data-validate]').each(function () {\n var $this = $(this);\n invalid = commerce.validators.validateField($this, $form) && invalid;\n });\n return invalid;\n };\n instance.validateField = function (field, form) {\n var $field = null;\n if (field instanceof jQuery) {\n $field = field;\n } else {\n $field = $(field);\n }\n var validatorName = $field.data('validate');\n var validator = instance[validatorName];\n var value = $field.val();\n return validator(value, $field, form);\n };\n instance.securityCode = function (value) {\n return !/^[0-9]{3,4}$/.test(value);\n };\n return instance;\n})();\ncommerce.Notification = function (element) {\n if (element instanceof jQuery) {\n this.$element = element;\n } else {\n this.$element = $(element);\n }\n this.$p = $(this.$element.find('p'));\n};\ncommerce.Notification.dummy = new commerce.Notification('
');\ncommerce.Notification.prototype.show = function () {\n this.$element.show();\n};\ncommerce.Notification.prototype.showFlex = function () {\n this.$element.css('display', 'flex');\n};\ncommerce.Notification.get = function (element) {\n return new commerce.Notification(element);\n};\ncommerce.Notification.create = function (element) {\n if (!(element instanceof jQuery)) {\n element = $(element);\n }\n element.html('

');\n return new commerce.Notification(element);\n};\ncommerce.Notification.prototype.hide = function () {\n this.$element.addClass('d-none');\n};\ncommerce.Notification.prototype.reset = function () {\n this.$p.removeClass('itemAddedMsgBox');\n this.$p.removeClass('errorMsgBox');\n this.$element.addClass('d-none');\n};\ncommerce.Notification.prototype.error = function () {\n this.$p.removeClass('itemAddedMsgBox');\n this.$p.addClass('errorMsgBox');\n this.$p.parent('.purchaseMessage').addClass('errorMsgParent');\n};\ncommerce.Notification.prototype.warning = function () {\n this.$p.removeClass('itemAddedMsgBox');\n this.$p.addClass('errorMsgBox');\n};\ncommerce.Notification.prototype.info = function () {\n this.$p.removeClass('errorMsgBox');\n this.$p.addClass('itemAddedMsgBox');\n};\ncommerce.Notification.prototype.setMessage = function (message) {\n this.$p.html(message);\n};\ncommerce.FieldNotification = function (element) {\n if (element instanceof jQuery) {\n this.$element = element;\n } else {\n this.$element = $(element);\n }\n this.$message = $(this.$element.find('.message'));\n this.$label = $(this.$element.find('.label'));\n this.$show = $(this.$element.find('.field-info'));\n};\ncommerce.FieldNotification.prototype.show = function () {\n if (this.$message.text().length > 0) {\n this.$show.removeClass('d-none');\n } else {\n this.$show.addClass('d-none');\n }\n};\ncommerce.FieldNotification.get = function (element) {\n return new commerce.FieldNotification(element);\n};\ncommerce.FieldNotification.prototype.hide = function () {\n this.$show.addClass('d-none');\n};\ncommerce.FieldNotification.prototype.error = function () {\n this.$label.removeClass('warning');\n this.$label.removeClass('info');\n this.$label.addClass('error');\n};\ncommerce.FieldNotification.prototype.warning = function () {\n this.$label.removeClass('error');\n this.$label.removeClass('info');\n this.$label.addClass('warning');\n};\ncommerce.FieldNotification.prototype.info = function () {\n this.$label.removeClass('warning');\n this.$label.removeClass('error');\n this.$label.addClass('info');\n};\ncommerce.FieldNotification.prototype.reset = function () {\n this.hide();\n this.$label.removeClass('warning');\n this.$label.removeClass('error');\n this.$label.removeClass('info');\n this.setMessage('');\n};\ncommerce.FieldNotification.prototype.setMessage = function (message) {\n this.$message.html(message);\n};\ncommerce.BuyingItemWidget = function (widgetDef, element) {\n literatum.Widget.call(this, widgetDef, element);\n this.register(commerce.cart.buyingList);\n this.register(commerce.cart.discounts);\n this.register(commerce.cart.savedItems);\n this.register(commerce.cart.summary);\n this.register('quantityIncreased');\n this.register('quantityDecreased');\n this.register('updateQuantity');\n};\ncommerce.BuyingItemWidget.prototype = new literatum.Widget();\ncommerce.BuyingItemWidget.id = 'eCommerceCheckoutBuyingItemsWidget';\ncommerce.BuyingItemWidget.action = '/pb/widgets/commerce/buyingItems';\ncommerce.BuyingItemWidget.notifications = {info: commerce.Notification};\ncommerce.BuyingItemWidget.binders = {\n applyDiscount: function (e, widget) {\n var loading = new literatum.FullPageLoading();\n loading.start();\n commerce.cart.addCallback(loading.done);\n e.preventDefault();\n commerce.cart.discounts.apply(widget.find(\"input[name='discount']\").val());\n },\n removeDiscount: function (e) {\n var loading = new literatum.FullPageLoading();\n loading.start();\n commerce.cart.addCallback(loading.done);\n e.preventDefault();\n commerce.cart.discounts.remove($(this).data('discount'));\n },\n disableDiscount: function (e) {\n var loading = new literatum.FullPageLoading();\n loading.start();\n commerce.cart.addCallback(loading.done);\n e.preventDefault();\n commerce.cart.discounts.disable($(this).data('discount'));\n },\n enableDiscount: function (e) {\n var loading = new literatum.FullPageLoading();\n loading.start();\n commerce.cart.addCallback(loading.done);\n e.preventDefault();\n commerce.cart.discounts.enable($(this).data('discount'));\n },\n saveItem: function (e) {\n var loading = new literatum.FullPageLoading();\n loading.start();\n commerce.cart.addCallback(loading.done);\n e.preventDefault();\n var itemId = $(this).data('item-id');\n if (itemId) {\n commerce.cart.savedItems.saveById(itemId);\n } else {\n commerce.cart.savedItems.saveByDoi($(this).data('item-doi'));\n }\n },\n removeItem: function (e) {\n var loading = new literatum.FullPageLoading();\n loading.start();\n commerce.cart.addCallback(loading.done);\n e.preventDefault();\n commerce.cart.buyingList.remove($(this).data('item-id'));\n },\n increaseQuantity: function (e) {\n var loading = new literatum.FullPageLoading();\n loading.start();\n commerce.cart.addCallback(loading.done);\n e.preventDefault();\n commerce.cart.buyingList.increaseQuantity($(this).data('item-id'));\n },\n decreaseQuantity: function (e) {\n var loading = new literatum.FullPageLoading();\n loading.start();\n commerce.cart.addCallback(loading.done);\n e.preventDefault();\n commerce.cart.buyingList.decreaseQuantity($(this).data('item-id'));\n },\n updateQuantity: function (e) {\n var currentQuantity = $(this).parent().find('#quantity').attr('value');\n var requiredQuantity = $(this).parent().find('#quantity').val();\n var MAXIMUM_ALLOWED_VALUE = $(this).attr('data-max-quote-items');\n if (Number(requiredQuantity) < 1 || Number(requiredQuantity) > Number(MAXIMUM_ALLOWED_VALUE)) {\n $(this).parent().find('.quantity_number.error').removeClass('d-none');\n } else {\n $(this).parent().find('.quantity_number.error').addClass('d-none');\n if (currentQuantity != requiredQuantity) {\n var loading = new literatum.FullPageLoading();\n loading.start();\n commerce.cart.addCallback(loading.done);\n e.preventDefault();\n commerce.cart.buyingList.updateQuantity($(this).data('item-id'), currentQuantity, requiredQuantity);\n }\n }\n },\n};\ncommerce.BuyingItemWidget.prototype.reset = function () {\n Object.getPrototypeOf(commerce.BuyingItemWidget.prototype).reset.call(this);\n this.find(\"input[name='discount']\").removeClass('errorMsg');\n this.find('.promoCodeMsg .errorMsg').hide();\n this.find('.promoCodeMsg .infoMsg').hide();\n};\ncommerce.BuyingItemWidget.infoHandlers = {\n discountError: function (message, widget) {\n widget.find('.promoCodeMsg .infoMsg').hide();\n widget.find(\"input[name='discount']\").addClass('errorMsg');\n var $error = widget.find('.promoCodeMsg .errorMsg');\n $error.html(message);\n $error.show();\n },\n discountInfo: function (message, widget) {\n widget.find('.promoCodeMsg .errorMsg').hide();\n widget.find(\"input[name='discount']\").removeClass('errorMsg');\n var $info = widget.find('.promoCodeMsg .infoMsg');\n $info.html(message);\n $info.show();\n },\n discount: function (message, widget) {\n $(widget.find(\"input[name='promoCode']\")).val(message);\n },\n savedItemError: function (message, widget) {\n var notification = widget.getNotification('info');\n if (notification) {\n notification.error();\n notification.setMessage(message);\n notification.show();\n }\n },\n error: function (message, widget) {\n var notification = widget.getNotification('info');\n if (notification) {\n notification.error();\n notification.setMessage(message);\n notification.show();\n }\n },\n};\ncommerce.BuyingItemWidget.prototype.registerListeners = function () {\n Object.getPrototypeOf(commerce.BuyingItemWidget.prototype).registerListeners.call(this);\n var widget = this;\n var $applyButton = this.find('#applyDiscountForm input.applyDiscount');\n var $discountField = this.find(\"input[name='discount']\");\n $discountField.on('keyup', function () {\n if ($discountField.val()) {\n $applyButton.addClass('primary');\n $applyButton.prop('disabled', false);\n } else {\n $applyButton.removeClass('primary');\n $applyButton.prop('disabled', true);\n widget.find('.promoCodeMsg .errorMsg').hide();\n widget.find(\"input[name='discount']\").removeClass('errorMsg');\n var $info = widget.find('.promoCodeMsg .infoMsg');\n $info.html(message);\n $info.show();\n }\n });\n};\ncommerce.BuyingItemWidget.find = function () {\n var $result = $(\"*[data-widget-def='\" + commerce.BuyingItemWidget.id + \"']\");\n if ($result.length > 0) {\n return $result;\n }\n return $('.' + commerce.BuyingItemWidget.id);\n};\nliteratum.widgets.register(commerce.BuyingItemWidget);\ncommerce.SavedItemsWidget = function (widgetDef, element) {\n literatum.Widget.call(this, widgetDef, element);\n this.register(commerce.cart.buyingList);\n this.register(commerce.cart.savedItems);\n this.register(commerce.cart.identity);\n};\ncommerce.SavedItemsWidget.prototype = new literatum.Widget();\ncommerce.SavedItemsWidget.id = 'eCommerceCheckoutSavedForLaterItemsWidget';\ncommerce.SavedItemsWidget.action = '/pb/widgets/commerce/savedItems';\ncommerce.SavedItemsWidget.notifications = {info: commerce.Notification};\ncommerce.SavedItemsWidget.binders = {\n saveItem: function (e) {\n var loading = new literatum.FullPageLoading();\n loading.start();\n commerce.cart.addCallback(loading.done);\n e.preventDefault();\n var itemId = $(this).data('item-id');\n if (itemId) {\n commerce.cart.savedItems.saveById(itemId);\n } else {\n commerce.cart.savedItems.saveByDoi($(this).data('item-doi'));\n }\n },\n removeSavedItem: function (e, widget) {\n var loading = new literatum.FullPageLoading();\n loading.start();\n commerce.cart.addCallback(loading.done);\n e.preventDefault();\n commerce.cart.savedItems.remove($(this).data('item-id'));\n },\n expand: function (e) {\n e.preventDefault();\n $(this).closest('.add-to-cart').toggleClass('opened');\n var offerVisibility = $(this).next('.purchaseArea').is(':visible');\n $('.purchaseArea').slideUp();\n if (!offerVisibility) {\n $(this).next('.purchaseArea').slideToggle();\n var subject = $('.demo');\n if (e.target.id != subject.attr('id')) {\n subject.show();\n }\n }\n },\n addItem: function (e, widget) {\n if (!$(e.target).parents('.disable-click').length) {\n var loading = new literatum.FullPageLoading();\n loading.start();\n commerce.cart.addCallback(loading.done);\n e.preventDefault();\n var key = $(this).attr('data-key');\n commerce.cart.buyingList.addItem(key);\n }\n },\n};\ncommerce.SavedItemsWidget.prototype.registerListeners = function () {\n Object.getPrototypeOf(commerce.SavedItemsWidget.prototype).registerListeners.call(this);\n if ($(window).width() >= 992) {\n $(document).on('touchend click', function (e) {\n var container = $('.demoContainer');\n if (!$(e.target).closest('.superDemo').length) {\n $('.add-to-cart.opened').removeClass('opened');\n container.hide();\n container.find('.add-journal-to-cart').removeClass('disable-click');\n container.find('.add-journal-to-cart header').removeClass('open');\n container.find('.add-journal-to-cart').css('margin-bottom', '10px');\n e.stopPropagation();\n }\n });\n }\n};\ncommerce.SavedItemsWidget.infoHandlers = {\n savedItemError: function (message, widget) {\n var notification = widget.getNotification('info');\n if (notification) {\n notification.setMessage(message);\n notification.error();\n notification.show();\n }\n },\n};\ncommerce.SavedItemsWidget.find = function () {\n var $result = $(\"*[data-widget-def='\" + commerce.SavedItemsWidget.id + \"']\");\n if ($result.length > 0) {\n return $result;\n }\n return $('.' + commerce.SavedItemsWidget.id);\n};\nliteratum.widgets.register(commerce.SavedItemsWidget);\ncommerce.RecommendedWidget = function (widgetDef, element) {\n literatum.Widget.call(this, widgetDef, element);\n this.register(commerce.cart.identity);\n this.register(commerce.cart.buyingList);\n this.register(commerce.cart.savedItems);\n};\ncommerce.RecommendedWidget.prototype = new literatum.Widget();\ncommerce.RecommendedWidget.id = 'eCommerceCheckoutRecommendedItemsWidget';\ncommerce.RecommendedWidget.action = '/pb/widgets/commerce/recommended';\ncommerce.RecommendedWidget.binders = {\n expand: function (e) {\n e.preventDefault();\n $(this).closest('.add-to-cart').toggleClass('opened');\n var offerVisibility = $(this).next('.purchaseArea').is(':visible');\n $('.purchaseArea').slideUp();\n if (!offerVisibility) {\n $(this).next('.purchaseArea').slideToggle();\n var subject = $('.demo');\n if (e.target.id != subject.attr('id')) {\n subject.show();\n }\n }\n },\n addItem: function (e) {\n if (!$(e.target).parents('.disable-click').length) {\n var loading = new literatum.FullPageLoading();\n loading.start();\n commerce.cart.addCallback(loading.done);\n e.preventDefault();\n var key = $(this).attr('data-key');\n commerce.cart.buyingList.addItem(key);\n }\n },\n saveItem: function (e) {\n var loading = new literatum.FullPageLoading();\n loading.start();\n commerce.cart.addCallback(loading.done);\n e.preventDefault();\n var itemId = $(this).data('item-id');\n if (itemId) {\n commerce.cart.savedItems.saveById(itemId);\n } else {\n commerce.cart.savedItems.saveByDoi($(this).data('item-doi'));\n }\n },\n};\ncommerce.RecommendedWidget.prototype.registerListeners = function () {\n Object.getPrototypeOf(commerce.RecommendedWidget.prototype).registerListeners.call(this);\n if ($(window).width() >= 992) {\n $(document).on('touchend click', function (e) {\n var container = $('.demoContainer');\n if (!$(e.target).closest('.superDemo').length) {\n $('.add-to-cart.opened').removeClass('opened');\n container.hide();\n container.find('.add-journal-to-cart').removeClass('disable-click');\n container.find('.add-journal-to-cart header').removeClass('open');\n container.find('.journal-options-expanded').hide();\n container.find('.add-journal-to-cart').css('margin-bottom', '10px');\n e.stopPropagation();\n }\n });\n }\n};\ncommerce.RecommendedWidget.find = function () {\n var $result = $(\"*[data-widget-def='\" + commerce.RecommendedWidget.id + \"']\");\n if ($result.length > 0) {\n return $result;\n }\n return $('.' + commerce.RecommendedWidget.id);\n};\nliteratum.widgets.register(commerce.RecommendedWidget);\ncommerce.RecentlyViewedWidget = function (widgetDef, element) {\n literatum.Widget.call(this, widgetDef, element);\n this.register(commerce.cart.identity);\n this.register(commerce.cart.buyingList);\n this.register(commerce.cart.savedItems);\n};\ncommerce.RecentlyViewedWidget.prototype = new literatum.Widget();\ncommerce.RecentlyViewedWidget.id = 'eCommerceCheckoutRecentlyViewedItemsWidget';\ncommerce.RecentlyViewedWidget.action = '/pb/widgets/commerce/recentlyViewed';\ncommerce.RecentlyViewedWidget.binders = {\n expand: function (e) {\n e.preventDefault();\n $(this).closest('.add-to-cart').toggleClass('opened');\n var offerVisibility = $(this).next('.purchaseArea').is(':visible');\n $('.purchaseArea').slideUp();\n if (!offerVisibility) {\n $(this).next('.purchaseArea').slideToggle();\n var subject = $('.demo');\n if (e.target.id != subject.attr('id')) {\n subject.show();\n }\n }\n },\n addItem: function (e, widget) {\n if (!$(e.target).parents('.disable-click').length) {\n var loading = new literatum.FullPageLoading();\n loading.start();\n commerce.cart.addCallback(loading.done);\n e.preventDefault();\n var key = $(this).attr('data-key');\n commerce.cart.buyingList.addItem(key);\n }\n },\n saveItem: function (e, widget) {\n var loading = new literatum.FullPageLoading();\n loading.start();\n commerce.cart.addCallback(loading.done);\n e.preventDefault();\n var itemId = $(this).data('item-id');\n if (itemId) {\n commerce.cart.savedItems.saveById(itemId);\n } else {\n commerce.cart.savedItems.saveByDoi($(this).data('item-doi'));\n }\n },\n};\ncommerce.RecentlyViewedWidget.prototype.registerListeners = function () {\n Object.getPrototypeOf(commerce.RecentlyViewedWidget.prototype).registerListeners.call(this);\n if ($(window).width() >= 992) {\n $(document).on('touchend', function (e) {\n var container = $('.demoContainer');\n if (!$(e.target).closest('.superDemo').length) {\n $('.add-to-cart.opened').removeClass('opened');\n container.hide();\n container.find('.add-journal-to-cart').removeClass('disable-click');\n container.find('.add-journal-to-cart header').removeClass('open');\n container.find('.journal-options-expanded').hide();\n container.find('.add-journal-to-cart').css('margin-bottom', '10px');\n e.stopPropagation();\n }\n });\n }\n};\ncommerce.RecentlyViewedWidget.find = function () {\n var $result = $(\"*[data-widget-def='\" + commerce.RecentlyViewedWidget.id + \"']\");\n if ($result.length > 0) {\n return $result;\n }\n return $('.' + commerce.RecentlyViewedWidget.id);\n};\nliteratum.widgets.register(commerce.RecentlyViewedWidget);\ncommerce.OrderSummaryWidget = function (widgetDef, element) {\n literatum.Widget.call(this, widgetDef, element);\n this.register(commerce.cart.identity);\n this.register(commerce.cart.buyingList);\n this.register(commerce.cart.discounts);\n this.register(commerce.cart.savedItems);\n this.register(commerce.cart.shipping);\n this.register(commerce.cart.billing);\n this.register(commerce.cart.tax);\n this.register(commerce.cart.summary);\n this.register('quantityIncreased');\n this.register('quantityDecreased');\n this.register('updateQuantity');\n};\ncommerce.OrderSummaryWidget.prototype = new literatum.Widget();\ncommerce.OrderSummaryWidget.id = 'eCommerceCheckoutSummaryWidget';\ncommerce.OrderSummaryWidget.action = '/pb/widgets/commerce/orderSummary';\ncommerce.OrderSummaryWidget.find = function () {\n var $result = $(\"*[data-widget-def='\" + commerce.OrderSummaryWidget.id + \"']\");\n if ($result.length > 0) {\n return $result;\n }\n return $('.' + commerce.OrderSummaryWidget.id);\n};\nliteratum.widgets.register(commerce.OrderSummaryWidget);\ncommerce.IdentityWidget = function (widgetDef, element) {\n literatum.Widget.call(this, widgetDef, element);\n this.register(commerce.cart.identity);\n this.register(commerce.cart.buyingList);\n this.register(commerce.cart.savedItems);\n};\ncommerce.IdentityWidget.prototype = new literatum.Widget();\ncommerce.IdentityWidget.id = 'eCommerceCheckoutIdentityWidget';\ncommerce.IdentityWidget.action = '/pb/widgets/commerce/identity';\ncommerce.IdentityWidget.find = function () {\n var $result = $(\"*[data-widget-def='\" + commerce.IdentityWidget.id + \"']\");\n if ($result.length > 0) {\n return $result;\n }\n return $('.' + commerce.IdentityWidget.id);\n};\ncommerce.IdentityWidget.notifications = {\n identity: commerce.Notification,\n email: commerce.FieldNotification,\n acceptTermsConditions: commerce.FieldNotification,\n};\ncommerce.IdentityWidget.binders = {\n guest: function (e, widget) {\n e.preventDefault();\n var loading = new literatum.FullPageLoading();\n loading.start();\n commerce.cart.addCallback(literatum.utils.nextCheckoutSection);\n commerce.cart.addCallback(loading.done);\n let acceptTermsConditions = widget.find('#acceptTermsConditions').is(':checked');\n let email = widget.find('#email').val();\n commerce.cart.identity.guest(email, acceptTermsConditions);\n },\n showUserLogin: function (e, widget) {\n e.preventDefault();\n var $loginForm = widget.find('.frmLogin');\n var email = widget.find(\"input[name='email']\").val();\n widget.find('.checkoutLogin').addClass('d-none');\n if ($loginForm.length > 0) {\n $loginForm.removeClass('d-none');\n if (email != undefined) {\n $loginForm.find(\"input[name='login']\").val(email).focus();\n }\n }\n },\n register: function (e, widget) {\n var email = widget.find(\"input[name='email']\").val();\n if (email) {\n e.preventDefault();\n window.location =\n '/action/registration?email=' +\n encodeURIComponent(email) +\n '&redirectUri=' +\n encodeURIComponent(location.href);\n }\n },\n cancelLogin: function (e, widget) {\n e.preventDefault();\n var notification = widget.getNotification('identity');\n if (notification) {\n notification.reset();\n }\n widget.find('.message.error').remove();\n widget.find('.checkoutLogin').removeClass('d-none');\n if (widget.find('.frmLogin').length > 0) {\n widget.find('.frmLogin').addClass('d-none');\n }\n },\n userLogin: function (e) {\n var loading = new literatum.FullPageLoading();\n loading.start();\n },\n resetCart: function (e) {\n var loading = new literatum.FullPageLoading();\n loading.start();\n },\n expand: function (e, widget) {\n widget.find('.checkout-expand').slideToggle();\n },\n};\ncommerce.IdentityWidget.prototype.registerListeners = function () {\n Object.getPrototypeOf(commerce.IdentityWidget.prototype).registerListeners.call(this);\n if (this.find('.frmLogin').length > 0) {\n var $loginInput = this.find('.frmLogin .login');\n var $passwordInput = this.find('.frmLogin .password');\n var $continueButton = this.find(\".frmLogin input[type='submit']\");\n $continueButton.removeClass('primary');\n $continueButton.prop('disabled', true);\n $loginInput.on('keyup', function () {\n if ($loginInput.val() && $passwordInput.val()) {\n $continueButton.addClass('primary');\n $continueButton.prop('disabled', false);\n } else {\n $continueButton.removeClass('primary');\n $continueButton.prop('disabled', true);\n }\n });\n $passwordInput.on('keyup', function () {\n if ($loginInput.val() && $passwordInput.val()) {\n $continueButton.addClass('primary');\n $continueButton.prop('disabled', false);\n } else {\n $continueButton.removeClass('primary');\n $continueButton.prop('disabled', true);\n }\n });\n }\n};\ncommerce.IdentityWidget.prototype.triggerInfoHandlers = function (widget, model) {\n Object.getPrototypeOf(commerce.IdentityWidget.prototype).triggerInfoHandlers.call(this, widget, model);\n widget.find('input,select').each(function () {\n var $this = $(this);\n var name = $this.attr('name');\n var errorName = name + 'Error';\n var notification = widget.getNotification(name);\n if (notification) {\n notification.reset();\n if (model && model.attributes && model.attributes[errorName]) {\n notification.error();\n notification.setMessage(model.attributes[errorName]);\n notification.show();\n }\n }\n });\n};\ncommerce.IdentityWidget.infoHandlers = {\n identityError: function (message, widget) {\n var notification = widget.getNotification('identity');\n if (notification) {\n notification.setMessage(message);\n notification.error();\n notification.show();\n }\n },\n emailError: function (message, widget) {\n var notification = widget.getNotification('email');\n if (notification) {\n notification.error();\n notification.setMessage(message);\n notification.show();\n }\n },\n acceptTermsConditionsError: function (message, widget) {\n var notification = widget.getNotification('acceptTermsConditions');\n if (notification) {\n notification.error();\n notification.setMessage(message);\n notification.show();\n }\n },\n};\nliteratum.widgets.register(commerce.IdentityWidget);\ncommerce.ShippingWidget = function (widgetDef, element) {\n literatum.Widget.call(this, widgetDef, element);\n this.register(commerce.cart.identity);\n this.register(commerce.cart.buyingList);\n this.register(commerce.cart.savedItems);\n this.register(commerce.cart.shipping);\n};\ncommerce.ShippingWidget.prototype = new literatum.Widget();\ncommerce.ShippingWidget.id = 'eCommerceCheckoutShippingWidget';\ncommerce.ShippingWidget.action = '/pb/widgets/commerce/shipping';\ncommerce.ShippingWidget.notifications = {\n info: commerce.Notification,\n givennames: commerce.FieldNotification,\n surname: commerce.FieldNotification,\n email: commerce.FieldNotification,\n phone: commerce.FieldNotification,\n organization: commerce.FieldNotification,\n address1: commerce.FieldNotification,\n address2: commerce.FieldNotification,\n city: commerce.FieldNotification,\n country: commerce.FieldNotification,\n state: commerce.FieldNotification,\n zipCode: commerce.FieldNotification,\n shippingCost: commerce.FieldNotification,\n};\ncommerce.ShippingWidget.prototype.lostFocus = function () {\n if (this.find('form').length) {\n return literatum.widgets.render(this, {}, {});\n }\n};\ncommerce.ShippingWidget.binders = {\n editShipping: function (e, widget) {\n var loading = new literatum.FullPageLoading();\n loading.start();\n commerce.cart.addCallback(literatum.utils.nextCheckoutSection);\n commerce.cart.addCallback(loading.done);\n e.preventDefault();\n var d = literatum.widgets.render(widget, {}, {editing: true});\n literatum.widgets.all().forEach(function (item) {\n if (widget.widgetDef.id != item.widgetDef.id) {\n d = d.then(item.lostFocus());\n }\n });\n d.then(function () {\n literatum.utils.nextCheckoutSection();\n loading.done();\n });\n },\n submitShipping: function (e, widget) {\n e.preventDefault();\n var loading = new literatum.FullPageLoading();\n loading.start();\n commerce.cart.addCallback(literatum.utils.nextCheckoutSection);\n commerce.cart.addCallback(loading.done);\n commerce.cart.shipping.update(widget.find('form').serializeObject());\n },\n shippingOptions: function (e, widget) {\n e.preventDefault();\n var forms = widget.collectForms();\n commerce.cart.shipping.shippingOptions(forms.shipping.country, forms.shipping.state);\n },\n expand: function (e, widget) {\n widget.find('.checkout-expand').slideToggle();\n },\n countryChanged: function (e, widget) {\n if (e.type === 'change') {\n var loading = new literatum.FullPageLoading();\n loading.start();\n var notification = widget.getNotification('shippingCost');\n if (notification) {\n notification.reset();\n }\n var $country = widget.find(\"select[name='country']\");\n var $state = widget.find('.state option:selected');\n var countryCode = $country.val();\n\n literatum.utils.getCountryState(countryCode, function (model) {\n let $states = widget.find('[data-notification=\"state\"]');\n let $input = $states.find('input');\n let $select = $states.find('.dropdown-menu');\n $input.val(null);\n $select[0].innerHTML = '';\n\n if (model.states.length > 0) {\n model.states.forEach(function (item) {\n $select.append(\n '' +\n item['description'] +\n ''\n );\n });\n $states.removeClass('d-none');\n } else {\n $states.addClass('d-none');\n }\n\n commerce.cart.shipping.getShippingCosts(countryCode, $select.val(), function (model) {\n if (model.shippingOptions.length != 1) {\n let $shippingOptions = widget.find('.shipping-cost-select');\n let $select = $shippingOptions.find('select');\n $select.find(\"option:not([value='-1'])\").remove();\n model.shippingOptions.forEach(function (item) {\n $select.append('');\n });\n if (model.error) {\n notification.reset();\n notification.error();\n notification.setMessage(model.error);\n notification.show();\n }\n widget.find('.shipping-cost-one input').prop('disabled', true);\n widget.find('.shipping-cost-select select').prop('disabled', false);\n widget.find('.shipping-cost-one').hide();\n widget.find('.shipping-cost-select').show();\n } else {\n widget.find('.shipping-cost-select select').prop('disabled', true);\n widget.find(\".shipping-cost-one input[name='shippingCost']\").prop('disabled', false);\n widget.find('.shipping-cost-select').hide();\n widget.find(\"input[name='shippingCost']\").val(model.shippingOptions[0].id);\n widget.find(\"input[name='shippingCostDescription']\").val(model.shippingOptions[0].description);\n widget.find('.shipping-cost-one').show();\n }\n loading.done();\n });\n });\n }\n },\n selectAddress: function (e, widget) {\n var addressUuid = $(this).val();\n if (e.type == 'change') {\n if (addressUuid != '-1') {\n var loading = new literatum.FullPageLoading();\n loading.start();\n widget.render({}, {editing: true, uuid: addressUuid}, function () {\n var $country = widget.find(\"select[name='country']\");\n var $state = widget.find(\"select[name='state']\");\n if ($country.val() != '') {\n commerce.cart.shipping.getShippingCosts($country.val(), $state.val(), function (model) {\n if (model.shippingOptions.length != 1) {\n var $shippingOptions = widget.find('.shipping-cost-select');\n var $select = $shippingOptions.find('select');\n $select.find(\"option:not([value='-1'])\").remove();\n model.shippingOptions.forEach(function (item) {\n $select.append(\n ''\n );\n });\n if (model.error) {\n notification.reset();\n notification.error();\n notification.setMessage(model.error);\n notification.show();\n }\n widget.find('.shipping-cost-one input').prop('disabled', true);\n widget.find('.shipping-cost-select select').prop('disabled', false);\n widget.find('.shipping-cost-one').hide();\n widget.find('.shipping-cost-select').show();\n } else {\n widget.find('.shipping-cost-select select').prop('disabled', true);\n widget.find(\".shipping-cost-one input[name='shippingCost']\").prop('disabled', false);\n widget.find('.shipping-cost-select').hide();\n widget.find(\"input[name='shippingCost']\").val(model.shippingOptions[0].id);\n widget\n .find(\"input[name='shippingCostDescription']\")\n .val(model.shippingOptions[0].description);\n widget.find('.shipping-cost-one').show();\n }\n loading.done();\n });\n } else {\n loading.done();\n }\n });\n } else {\n widget.updateForm('shipping', {});\n }\n }\n },\n};\ncommerce.ShippingWidget.infoHandlers = {\n addressError: function (message, widget) {\n var notification = widget.getNotification('info');\n if (notification) {\n notification.error();\n notification.setMessage(message);\n notification.show();\n }\n literatum.utils.scroll('.errorMsgBox:visible', 0);\n },\n};\ncommerce.ShippingWidget.prototype.triggerInfoHandlers = function (widget, model) {\n Object.getPrototypeOf(commerce.ShippingWidget.prototype).triggerInfoHandlers.call(this, widget, model);\n widget.find('input,select').each(function () {\n var $this = $(this);\n var name = $this.attr('name');\n var errorName = name + 'Error';\n var notification = widget.getNotification(name);\n if (notification) {\n notification.reset();\n if (model && model.attributes && model.attributes[errorName]) {\n notification.error();\n notification.setMessage(model.attributes[errorName]);\n notification.show();\n }\n }\n });\n};\ncommerce.ShippingWidget.find = function () {\n var $result = $(\"*[data-widget-def='\" + commerce.ShippingWidget.id + \"']\");\n if ($result.length > 0) {\n return $result;\n }\n return $('.' + commerce.ShippingWidget.id);\n};\nliteratum.widgets.register(commerce.ShippingWidget);\ncommerce.TaxWidget = function (widgetDef, element) {\n literatum.Widget.call(this, widgetDef, element);\n this.register(commerce.cart.buyingList);\n this.register(commerce.cart.savedItems);\n this.register(commerce.cart.billing);\n this.register(commerce.cart.shipping);\n this.register(commerce.cart.tax);\n};\ncommerce.TaxWidget.prototype = new literatum.Widget();\ncommerce.TaxWidget.id = 'eCommerceCheckoutTaxWidget';\ncommerce.TaxWidget.action = '/pb/widgets/commerce/tax';\ncommerce.TaxWidget.prototype.lostFocus = function () {\n if (this.find('form').length) {\n return literatum.widgets.render(this, {}, {});\n }\n};\ncommerce.TaxWidget.binders = {\n updateTax: function (e, widget) {\n var loading = new literatum.FullPageLoading();\n loading.start();\n commerce.cart.addCallback(literatum.utils.nextCheckoutSection);\n commerce.cart.addCallback(loading.done);\n e.preventDefault();\n var d = literatum.widgets.render(widget, {}, {editing: true});\n literatum.widgets.all().forEach(function (item) {\n if (widget.widgetDef.id != item.widgetDef.id) {\n d = d.then(item.lostFocus());\n }\n });\n d.then(function () {\n literatum.utils.nextCheckoutSection();\n loading.done();\n });\n },\n tax: function (e) {\n var loading = new literatum.FullPageLoading();\n loading.start();\n commerce.cart.addCallback(literatum.utils.nextCheckoutSection);\n commerce.cart.addCallback(loading.done);\n e.preventDefault();\n commerce.cart.tax.update($('form.tax').serializeObject());\n },\n};\ncommerce.TaxWidget.find = function () {\n var $result = $(\"*[data-widget-def='\" + commerce.TaxWidget.id + \"']\");\n if ($result.length > 0) {\n return $result;\n }\n return $('.' + commerce.TaxWidget.id);\n};\nliteratum.widgets.register(commerce.TaxWidget);\ncommerce.BillingWidget = function (widgetDef, element) {\n literatum.Widget.call(this, widgetDef, element);\n this.register(commerce.cart.identity);\n this.register(commerce.cart.shipping);\n this.register(commerce.cart.billing);\n this.register(commerce.cart.buyingList);\n this.register(commerce.cart.savedItems);\n};\ncommerce.BillingWidget.prototype = new literatum.Widget();\ncommerce.BillingWidget.id = 'eCommerceCheckoutBillingWidget';\ncommerce.BillingWidget.action = '/pb/widgets/commerce/billing';\ncommerce.BillingWidget.notifications = {\n info: commerce.Notification,\n givennames: commerce.FieldNotification,\n surname: commerce.FieldNotification,\n email: commerce.FieldNotification,\n phone: commerce.FieldNotification,\n organization: commerce.FieldNotification,\n address1: commerce.FieldNotification,\n address2: commerce.FieldNotification,\n city: commerce.FieldNotification,\n country: commerce.FieldNotification,\n state: commerce.FieldNotification,\n zipCode: commerce.FieldNotification,\n};\ncommerce.BillingWidget.prototype.lostFocus = function () {\n if (this.find('form').length) {\n return literatum.widgets.render(this, {}, {});\n }\n};\ncommerce.BillingWidget.binders = {\n submitBilling: function (e, widget) {\n var loading = new literatum.FullPageLoading();\n loading.start();\n commerce.cart.addCallback(literatum.utils.nextCheckoutSection);\n commerce.cart.addCallback(loading.done);\n e.preventDefault();\n commerce.cart.billing.update($(\"form[name='billing']\").serializeObject());\n },\n editBilling: function (e, widget) {\n var loading = new literatum.FullPageLoading();\n loading.start();\n commerce.cart.addCallback(loading.done);\n e.preventDefault();\n var d = literatum.widgets.render(widget, {}, {editing: true});\n literatum.widgets.all().forEach(function (item) {\n if (widget.widgetDef.id != item.widgetDef.id) {\n d = d.then(item.lostFocus());\n }\n });\n d.then(function () {\n literatum.utils.nextCheckoutSection();\n $(`.${commerce.PaymentWidget.id}`).hide();\n loading.done();\n var countryCode = $('#country').val();\n if (countryCode == 'US') {\n widget.find('.zipcode label').text(widget.find('.zipcode-text').text());\n } else {\n widget.find('.zipcode label').text(widget.find('.postcode-text').text());\n }\n });\n },\n sameAsShipping: function (e, widget) {\n if ($(this).is(':checked')) {\n var shippingWidgets = literatum.widgets.get('eCommerceCheckoutShippingWidget');\n var shippingWidget = shippingWidgets[0];\n if (shippingWidget) {\n var forms = shippingWidget.collectForms();\n widget.updateForm('billing', forms['shipping'], true);\n widget.find(\"select[name='country']\").change();\n }\n var identityWidgets = literatum.widgets.get('eCommerceCheckoutIdentityWidget');\n var identityWidget = identityWidgets[0];\n if (identityWidget) {\n var forms = identityWidget.collectForms();\n widget.updateForm('billing', forms['personal-info'], true);\n }\n } else {\n literatum.utils.clearForm('billing', {});\n }\n },\n placeOrder: function (e, widget) {\n if (!commerce.validators.validate(widget.find(\"form[name='apg']\"))) {\n e.preventDefault();\n }\n },\n expand: function (e, widget) {\n widget.find('.checkout-expand').slideToggle();\n },\n countryChanged: function (e, widget) {\n if (e.type == 'change') {\n var loading = new literatum.FullPageLoading();\n loading.start();\n var countryCode = $(this).val();\n if (countryCode == 'US') {\n widget.find('.zipcode label').text(widget.find('.zipcode-text').text());\n } else {\n widget.find('.zipcode label').text(widget.find('.postcode-text').text());\n }\n literatum.utils.getCountryState(countryCode, function (model) {\n let $states = widget.find('[data-notification=\"state\"]');\n let $toggle = $states.find('.dropdown-toggle');\n let $input = $states.find('input');\n let $select = $states.find('.dropdown-menu');\n\n if (e.type == 'change') {\n $input.val(null);\n $select[0].innerHTML = '';\n $toggle.text('Select your state');\n }\n\n let shippingWidget;\n let shippingForm;\n if (literatum.widgets.get('eCommerceCheckoutShippingWidget').length !== 0) {\n shippingWidget = literatum.widgets.get('eCommerceCheckoutShippingWidget');\n shippingForm = shippingWidget[0].collectForms()['shipping'];\n } else {\n shippingForm = '';\n }\n let state = '';\n if (shippingForm !== undefined) {\n state = shippingForm['state'];\n }\n\n if (model.states.length > 0) {\n model.states.forEach(function (item) {\n $select.append(\n '' +\n item['description'] +\n ''\n );\n });\n $states.removeClass('d-none');\n } else {\n $states.addClass('d-none');\n }\n loading.done();\n });\n }\n },\n selectAddress: function (e, widget) {\n var addressUuid = $(this).val();\n if (e.type == 'change') {\n if (addressUuid != '-1') {\n var loading = new literatum.FullPageLoading();\n loading.start();\n widget.render({}, {editing: true, uuid: addressUuid}, function () {\n loading.done();\n });\n } else {\n widget.updateForm('billing', {});\n }\n }\n },\n};\ncommerce.BillingWidget.infoHandlers = {\n addressError: function (message, widget) {\n var notification = widget.getNotification('info');\n if (notification) {\n notification.error();\n notification.setMessage(message);\n notification.show();\n }\n literatum.utils.scroll('.errorMsgBox:visible', 0);\n },\n};\ncommerce.BillingWidget.prototype.triggerInfoHandlers = function (widget, model) {\n Object.getPrototypeOf(commerce.BillingWidget.prototype).triggerInfoHandlers.call(this, widget, model);\n widget.find('input,select').each(function () {\n var $this = $(this);\n var name = $this.attr('name');\n var errorName = name + 'Error';\n var notification = widget.getNotification(name);\n if (notification) {\n notification.reset();\n if (model && model.attributes && model.attributes[errorName]) {\n notification.error();\n notification.setMessage(model.attributes[errorName]);\n notification.show();\n }\n }\n });\n};\ncommerce.BillingWidget.prototype.validateForm = function (cartInfo) {};\ncommerce.BillingWidget.find = function () {\n var $result = $(\"*[data-widget-def='\" + commerce.BillingWidget.id + \"']\");\n if ($result.length > 0) {\n return $result;\n }\n return $('.' + commerce.BillingWidget.id);\n};\nliteratum.widgets.register(commerce.BillingWidget);\ncommerce.PaymentWidget = function (widgetDef, element) {\n literatum.Widget.call(this, widgetDef, element);\n this.register(commerce.cart.identity);\n this.register(commerce.cart.billing);\n this.register(commerce.cart.shipping);\n this.register(commerce.cart.buyingList);\n this.register(commerce.cart.savedItems);\n this.register(commerce.cart.discounts);\n this.register(commerce.cart.tax);\n var $error = this.find('.errorMsgBox').not('.d-none');\n if ($error.length == 0) {\n $error = this.find('.label.error');\n }\n if ($error.length > 0) {\n commerce.page.cart.show();\n literatum.utils.scroll($error, 800, 100);\n }\n};\ncommerce.PaymentWidget.prototype = new literatum.Widget();\ncommerce.PaymentWidget.id = 'eCommerceCheckoutPaymentWidget';\ncommerce.PaymentWidget.action = '/pb/widgets/commerce/payment';\ncommerce.PaymentWidget.notifications = {\n holderName: commerce.FieldNotification,\n realNumber: commerce.FieldNotification,\n creditcardDate: commerce.FieldNotification,\n secNumber: commerce.FieldNotification,\n};\ncommerce.PaymentWidget.binders = {\n expandPayment: function (e, widget) {\n e.preventDefault();\n widget.find('.payment').slideToggle();\n },\n placeOrder: function (e, widget) {\n var $form = widget.find(\"form[name='apg']\");\n var valid = true;\n $form.find('input[data-validate],select[data-validate]').each(function () {\n var $this = $(this);\n var $group = $this.closest('.input-group');\n var invalid = commerce.validators.validateField($this, $form);\n var fieldsValidation = [];\n fieldsValidation.push(invalid);\n var notification = widget.getNotification($group.data('notification'));\n if (!notification) {\n return;\n }\n if (invalid) {\n notification.reset();\n notification.setMessage('');\n notification.error();\n notification.show();\n } else {\n notification.reset();\n }\n valid = !invalid && valid;\n if (!valid || fieldsValidation.includes(true)) {\n var loading = new literatum.FullPageLoading();\n loading.done();\n e.preventDefault();\n } else {\n var loading = new literatum.FullPageLoading();\n loading.setMessage('Do not close your browser while we are processing your payment');\n loading.start();\n }\n });\n },\n expand: function (e, widget) {\n var $header = widget.find('.checkout-expand');\n $header.stop(true, true);\n $header.slideToggle();\n },\n};\ncommerce.PaymentWidget.find = function () {\n var $result = $(\"*[data-widget-def='\" + commerce.PaymentWidget.id + \"']\");\n if ($result.length > 0) {\n return $result;\n }\n return $('.' + commerce.PaymentWidget.id);\n};\ncommerce.PaymentWidget.prototype.registerListeners = function () {\n Object.getPrototypeOf(commerce.PaymentWidget.prototype).registerListeners.call(this);\n var widget = this;\n var $date = $(this.find(\"input[name='expireDate']\"));\n $date.on('keyup', function (e) {\n var thisVal = $(this).val();\n if (thisVal.length == 0) $(this).closest('.input-group').removeClass('focused');\n else $(this).closest('.input-group').addClass('focused');\n var numChars = $(this).val().length;\n if (numChars === 2) {\n if (thisVal > 12) {\n thisVal = 12;\n }\n if (!/\\//.test(thisVal)) {\n thisVal += '/';\n }\n $(this).val(thisVal);\n }\n if (e.which == 8 && numChars === 2) {\n thisVal = thisVal.substring(0, thisVal.length - 2);\n $(this).val(thisVal);\n }\n });\n $date.on('blur', function () {\n var dateValue = $date.val().split('/');\n var numChars = $date.val().length;\n var thisVal = $date.val();\n if (this.value) {\n $(widget.find(\"input[name='expYear']\")).val(dateValue[1]);\n $(widget.find(\"input[name='expMonth']\")).val(dateValue[0]);\n } else {\n $(widget.find(\"input[name='expYear']\")).val('');\n $(widget.find(\"input[name='expMonth']\")).val('');\n }\n if (numChars > 6) {\n var currentDate = new Date();\n var currentYear = currentDate.getFullYear();\n var value = thisVal.split('/');\n var yearExpiry = value[1];\n var expireYear = parseInt(yearExpiry);\n }\n });\n $(this.find('#realNumber')).on('blur', function (e) {\n var $value = $('#realNumber').val();\n var $cElement = $('#realNumber');\n var creditCard = commerce.validators.creditcard($value, $cElement);\n });\n $(this.find('.creditCarPayment .actions .primary')).on('click', function (e) {\n var $form = widget.find(\"form[name='apg']\");\n var $this = $('input[data-validate]');\n var $group = $this.closest('.input-group');\n var invalid = commerce.validators.validateField($this, $form);\n var notification = widget.getNotification($group.data('notification'));\n var $message = [];\n if ($('#expYear').val() == '0000') {\n $message.push('year ');\n }\n if ($('#expMonth').val() == '00') {\n $message.push(' month');\n }\n if ($('#expMonth').val() == '00' && $('#expYear').val() == '0000') {\n $message = $message.join('and');\n }\n if ($('#expMonth').val() != '00' && $('#expYear').val() != '0000') {\n $message.push('a valid date');\n }\n if (!notification) {\n return;\n }\n if (invalid) {\n notification.reset();\n notification.setMessage('');\n notification.error();\n notification.show();\n } else {\n notification.reset();\n }\n var inputContainer = $('.creditCarPayment .input-group');\n inputContainer.each(function () {\n var $cont = $(this);\n var $contError = $(this).find('.error');\n if ($contError.length > 0) {\n if ($contError.find('.invalid-cc').length === 0 && !$cont.hasClass('credit-card-date-field')) {\n $contError.find('.field-info').after(\"
- IS MISSING
\");\n } else if ($cont.hasClass('credit-card-date-field')) {\n if ($contError.find('.invalid-cc').length === 0) {\n $contError\n .find('.field-info')\n .after(\"
Please enter \" + $message + '
');\n } else {\n $contError\n .find('.invalid-cc')\n .replaceWith(\"
Please enter \" + $message + '
');\n }\n }\n } else {\n $cont.find('.invalid-cc').remove();\n }\n });\n });\n if (commerce.PaymentWidget.registerAdditionalListeners) commerce.PaymentWidget.registerAdditionalListeners();\n};\nliteratum.widgets.register(commerce.PaymentWidget);\ncommerce.PaymentWidget.registerAdditionalListeners = function () {\n $(document).ready(function () {\n var $confirmOrderMsg = $('.eCommerceCheckoutPaymentWidget .infoMsgBox');\n if ($confirmOrderMsg.is(':visible')) {\n $confirmOrderMsg[0].scrollIntoView();\n }\n if (\n $('.checkout-expand > .errorMsgBox').length > 0 &&\n !$('.checkout-expand > .errorMsgBox').hasClass('d-none')\n ) {\n $('html, body').animate({scrollTop: $('.checkout-expand > .errorMsgBox').offset().top}, 1000);\n }\n });\n};\ncommerce.PurchaseOptionsWidget = function (widgetDef, element) {\n literatum.Widget.call(this, widgetDef, element);\n this.register(commerce.cart.savedItems);\n this.register(commerce.cart.buyingList);\n var $obj = this.find('.scroll-into-view').closest('.purchaseArea');\n if ($obj && $obj.length > 0) {\n literatum.utils.scroll($obj, 1000, 50);\n var $expandSection = this.find(\"*[data-bind='expandSection']\");\n if ($expandSection.length && !$expandSection.hasClass('active')) {\n $expandSection.click();\n }\n }\n};\ncommerce.PurchaseOptionsWidget.prototype = new literatum.Widget();\ncommerce.PurchaseOptionsWidget.id = 'eCommercePurchaseAccessWidget';\ncommerce.PurchaseOptionsWidget.action = '/pb/widgets/commerce/purchaseOptions';\ncommerce.PurchaseOptionsWidget.find = function () {\n var $result = $(\"*[widget-def='\" + commerce.PurchaseOptionsWidget.id + \"']\");\n if ($result.length > 0) {\n return $result;\n }\n return $('.' + commerce.PurchaseOptionsWidget.id);\n};\ncommerce.PurchaseOptionsWidget.binders = {\n saveItem: function (e, widget) {\n var loading = new literatum.FullPageLoading();\n loading.start();\n commerce.cart.addCallback(loading.done);\n e.preventDefault();\n var key = $(this).attr('data-doi');\n commerce.cart.savedItems.saveByDoi(key);\n },\n addItem: function (e, widget) {\n var loading = new literatum.FullPageLoading();\n loading.start();\n commerce.cart.addCallback(loading.done);\n e.preventDefault();\n var key = $(this).attr('data-key');\n commerce.cart.buyingList.addItem(key);\n },\n expandSection: function (e, widget) {\n e.preventDefault();\n widget.find('.purchaseAreaList_expanded').slideUp();\n widget.find('.purchaseAreaList_expand').attr('aria-expanded', false);\n if ($(e.target).hasClass('active')) {\n $(e.target).removeClass('active');\n $(e.target).siblings('.purchaseAreaList_expanded').slideUp();\n $(e.target).attr('aria-expanded', false);\n } else {\n $(e.target).addClass('active');\n widget.find('.purchaseAreaList_expand').not($(e.target)).removeClass('active');\n $(e.target).siblings('.purchaseAreaList_expanded').slideDown();\n $(e.target).attr('aria-expanded', true);\n }\n },\n};\ncommerce.PurchaseOptionsWidget.prototype.update = function (model) {\n this.triggerInfoHandlers(this, model);\n this.loaded();\n};\ncommerce.PurchaseOptionsWidget.infoHandlers = {\n info: function (message, widget, model) {\n var key = model.attributes['itemAdded'];\n var notification = commerce.Notification.get(widget.find(\".purchaseMessage[data-item='\" + key + \"'].info\"));\n if (notification) {\n notification.setMessage(message);\n notification.info();\n notification.show();\n notification.$element.siblings('a').find('.add-to-cart-msg').remove();\n setTimeout(function () {\n notification.$element.fadeOut();\n $(widget.find(\"*[data-entity='\" + key + \"']\"))\n .parent()\n .hide();\n $(widget.find(\".addedMessage[data-item='\" + key + \"']\"))\n .removeClass('d-none')\n .addClass('d-flex');\n }, 2000);\n }\n },\n error: function (message, widget, model) {\n var key = model.attributes['itemAdded'];\n var notification = commerce.Notification.get(widget.find(\".purchaseMessage[data-item='\" + key + \"']\"));\n if (notification) {\n notification.setMessage(message);\n notification.error();\n notification.show();\n }\n $(widget.find(\"*[data-entity='\" + key + \"']\")).hide();\n },\n savedItemInfo: function (message, widget) {\n var notification = commerce.Notification.get(widget.find('.savedItem-info'));\n if (notification) {\n notification.setMessage(message);\n notification.info();\n }\n $(widget.find('.save-for-later-link')).hide();\n $(widget.find('.saved-go-cart')).toggleClass('d-none');\n },\n savedItemError: function (message, widget) {\n var notification = commerce.Notification.get(widget.find('.savedItem-info'));\n if (notification) {\n notification.setMessage(message);\n notification.error();\n notification.show();\n }\n },\n nextAction: function (message) {\n if (message == 'refreshPage') {\n setTimeout(function () {\n location.reload();\n }, 5000);\n }\n },\n};\nliteratum.widgets.register(commerce.PurchaseOptionsWidget);\ncommerce.CartIndicatorWidget = function (widgetDef, element) {\n literatum.Widget.call(this, widgetDef, element);\n this.register(commerce.cart.buyingList);\n this.register(commerce.cart.savedItems);\n this.register('quantityIncreased');\n this.register('quantityDecreased');\n this.register('updateQuantity');\n};\ncommerce.CartIndicatorWidget.prototype = new literatum.Widget();\ncommerce.CartIndicatorWidget.id = 'eCommerceCartIndicatorWidget';\ncommerce.CartIndicatorWidget.action = null;\ncommerce.CartIndicatorWidget.prototype.update = function (model) {\n var $cartSize = this.find(\"*[data-id='cart-size']\");\n if (model.size == 0) {\n $cartSize.addClass();\n $cartSize.html(model.size);\n } else {\n $cartSize.removeClass('d-none');\n $cartSize.html(model.size);\n }\n};\ncommerce.CartIndicatorWidget.find = function () {\n var $result = $(\"*[data-widget-def='\" + commerce.CartIndicatorWidget.id + \"']\");\n if ($result.length > 0) {\n return $result;\n }\n return $('.' + commerce.CartIndicatorWidget.id);\n};\nliteratum.widgets.register(commerce.CartIndicatorWidget);\n\ncommerce.AddToCartWidget = function (widgetDef, element) {\n literatum.Widget.call(this, widgetDef, element);\n this.register(commerce.cart.buyingList);\n};\ncommerce.AddToCartWidget.prototype = new literatum.Widget();\ncommerce.AddToCartWidget.id = 'eCommerceCheckoutAddToCartWidget';\ncommerce.AddToCartWidget.action = '/pb/widgets/commerce/addToCart';\ncommerce.AddToCartWidget.binders = {\n expand: function (e, widget) {\n e.preventDefault();\n if (widget.find('.add-journal-to-cart-container').length > 0) {\n var addToCart = document.createElement('div');\n $(addToCart).addClass('eCommerceCheckoutAddToCartWidgetExpanded');\n $(addToCart).appendTo('body');\n $('body').css('overflow', 'hidden');\n widget\n .find('.add-journal-to-cart-container')\n .clone()\n .prepend('')\n .appendTo(addToCart)\n .slideToggle()\n .find('a')\n .first()\n .focus();\n var overlay = document.createElement('div');\n $(overlay).addClass('overlay-fixed');\n $(overlay).appendTo('.eCommerceCheckoutAddToCartWidgetExpanded');\n $(overlay).find('a').first().focus();\n }\n widget.registerListeners();\n },\n addItem: function (e) {\n var loading = new literatum.FullPageLoading();\n loading.start();\n commerce.cart.addCallback(loading.done);\n e.preventDefault();\n var key = $(this).attr('data-key');\n commerce.cart.buyingList.addItem(key);\n },\n};\ncommerce.AddToCartWidget.find = function () {\n var $result = $(\"*[data-widget-def='\" + commerce.AddToCartWidget.id + \"']\");\n if ($result.length > 0) {\n return $result;\n }\n return $('.' + commerce.AddToCartWidget.id);\n};\ncommerce.AddToCartWidget.infoHandlers = {\n info: function (message, widget, model) {\n var key = model.attributes['itemAdded'];\n var notification = commerce.Notification.get(\n $(\".eCommerceCheckoutAddToCartWidgetExpanded .purchaseMessage[data-item='\" + key + \"'].info\")\n );\n if (notification) {\n notification.setMessage(message);\n notification.info();\n notification.show();\n notification.$element.siblings('a').find('.add-to-cart-msg').remove();\n setTimeout(function () {\n notification.$element.fadeOut();\n $(\".eCommerceCheckoutAddToCartWidgetExpanded *[data-entity='\" + key + \"']\").hide();\n commerce.Notification.get(\".addedMessage[data-item='\" + key + \"']\").showFlex();\n }, 1000);\n }\n },\n error: function (message, widget, model) {\n var key = model.attributes['itemAdded'];\n var notification = commerce.Notification.get(\n $(\".eCommerceCheckoutAddToCartWidgetExpanded .purchaseMessage[data-item='\" + key + \"'].error\")\n );\n if (notification) {\n notification.setMessage(message);\n notification.error();\n notification.show();\n }\n $(\".eCommerceCheckoutAddToCartWidgetExpanded *[data-entity='\" + key + \"']\").hide();\n },\n savedItemInfo: function (message, widget) {\n var notification = commerce.Notification.get(widget.find('.savedItem-info'));\n if (notification) {\n notification.setMessage(message);\n notification.info();\n notification.show();\n }\n $('.eCommerceCheckoutAddToCartWidgetExpanded .save-for-later-link').hide();\n },\n savedItemError: function (message, widget) {\n var notification = commerce.Notification.get(widget.find('.savedItem-info'));\n if (notification) {\n notification.setMessage(message);\n notification.error();\n notification.show();\n }\n },\n nextAction: function (message) {\n if (message == 'refreshPage') {\n setTimeout(function () {\n location.reload();\n }, 5000);\n }\n },\n};\ncommerce.AddToCartWidget.prototype.render = function (model, params) {\n params['doi'] = this.find('a[data-doi]').attr('data-doi');\n Object.getPrototypeOf(commerce.AddToCartWidget.prototype).render.call(this, model, params);\n};\ncommerce.AddToCartWidget.prototype.registerListeners = function () {\n Object.getPrototypeOf(commerce.AddToCartWidget.prototype).registerListeners.call(this);\n $(document).on('click', function (event) {\n if (\n !$(event.target).closest('.eCommerceCheckoutAddToCartWidgetExpanded').length &&\n !$(event.target).closest('.eCommerceCheckoutAddToCartWidget').length &&\n $('.eCommerceCheckoutAddToCartWidgetExpanded').is(':visible')\n ) {\n event.preventDefault();\n $('.eCommerceCheckoutAddToCartWidgetExpanded').remove();\n $('body').css('overflow', 'auto');\n }\n });\n $(document).on('click', '.eCommerceCheckoutAddToCartWidgetExpanded .close', function () {\n $('.eCommerceCheckoutAddToCartWidgetExpanded').remove();\n $('body').css('overflow', 'auto');\n });\n $(\".eCommerceCheckoutAddToCartWidgetExpanded *[data-bind='addItem']\").off();\n $(\".eCommerceCheckoutAddToCartWidgetExpanded *[data-bind='addItem']\").click(function (e) {\n var loading = new literatum.FullPageLoading();\n loading.start();\n commerce.cart.addCallback(loading.done);\n e.preventDefault();\n var key = $(this).attr('data-key');\n commerce.cart.buyingList.addItem(key);\n });\n};\nliteratum.widgets.register(commerce.AddToCartWidget);\n\ncommerce.CartInfoWidget = function (widgetDef, element) {\n literatum.Widget.call(this, widgetDef, element);\n this.register(commerce.cart.identity);\n this.register(commerce.cart.discounts);\n this.register(commerce.cart.buyingList);\n this.register(commerce.cart.savedItems);\n this.register(commerce.cart.billing);\n this.register(commerce.cart.shipping);\n};\ncommerce.CartInfoWidget.prototype = new literatum.Widget();\ncommerce.CartInfoWidget.id = 'eCommerceCartInfoWidget';\ncommerce.CartInfoWidget.action = null;\ncommerce.CartInfoWidget.prototype.update = function () {\n var notification = commerce.Notification.get(this.find('.cartInfo'));\n if (notification) {\n notification.reset();\n }\n};\ncommerce.CartInfoWidget.find = function () {\n var $result = $(\"*[data-widget-def='\" + commerce.CartInfoWidget.id + \"']\");\n if ($result.length > 0) {\n return $result;\n }\n return $('.' + commerce.CartInfoWidget.id);\n};\nliteratum.widgets.register(commerce.CartInfoWidget);\ncommerce.IdentityBarWidget = function (widgetDef, element) {\n literatum.Widget.call(this, widgetDef, element);\n this.register(commerce.cart.identity);\n};\ncommerce.IdentityBarWidget.prototype = new literatum.Widget();\ncommerce.IdentityBarWidget.id = 'literatumNavigationLoginBar';\ncommerce.IdentityBarWidget.action = '/pb/widgets/commerce/identityBar';\ncommerce.IdentityBarWidget.binders = {\n expand: function (e, widget) {\n widget.find('.navigation-login-dropdown-container').toggle();\n },\n};\ncommerce.IdentityBarWidget.find = function () {\n var $result = $(\"*[data-widget-def='\" + commerce.IdentityBarWidget.id + \"']\");\n if ($result.length > 0) {\n return $result;\n }\n return $('.' + commerce.IdentityBarWidget.id);\n};\ncommerce.IdentityBarWidget.prototype.registerListeners = function () {\n Object.getPrototypeOf(commerce.RecommendedWidget.prototype).registerListeners.call(this);\n var $popups = $('.popup');\n var $popup = $('.login-popup');\n $('.show-login').off();\n $('.show-login').click(function (event) {\n if ($popups.length) {\n $popups.addClass('d-none');\n $popup.removeClass('d-none');\n $('body').addClass('noscroll');\n $('.login-form form .login').focus();\n event.preventDefault();\n }\n });\n};\nliteratum.widgets.register(commerce.IdentityBarWidget);\ncommerce.RestoreAccessWidget = function (widgetDef, element) {\n literatum.Widget.call(this, widgetDef, element);\n this.register(commerce.cart.restoreAccess);\n};\ncommerce.RestoreAccessWidget.prototype = new literatum.Widget();\ncommerce.RestoreAccessWidget.id = 'eCommerceRestoreContentAccessWidget';\ncommerce.RestoreAccessWidget.action = '/pb/widgets/commerce/restoreAccess';\ncommerce.RestoreAccessWidget.find = function () {\n var $result = $(\"*[data-widget-def='\" + commerce.RestoreAccessWidget.id + \"']\");\n if ($result.length > 0) {\n return $result;\n }\n return $('.' + commerce.RestoreAccessWidget.id);\n};\ncommerce.RestoreAccessWidget.binders = {\n request: function (e, widget) {\n var loading = new literatum.FullPageLoading();\n loading.start();\n commerce.cart.addCallback(loading.done);\n e.preventDefault();\n commerce.cart.restoreAccess.request(widget.find(\"input[name='email']\").val());\n },\n};\ncommerce.RestoreAccessWidget.prototype.update = function (model) {\n this.triggerInfoHandlers(this, model);\n this.loaded();\n};\ncommerce.RestoreAccessWidget.infoHandlers = {\n restoreError: function (message, widget) {\n widget.find('.restore-info').hide();\n widget.find('.restore-error').hide();\n var notification = commerce.Notification.get(widget.find('.restore-error'));\n notification.setMessage(message);\n notification.error();\n notification.show();\n },\n error: function (message, widget) {\n widget.find('.restore-info').hide();\n var $inputGroup = widget.find(\"input[name='email']\").closest('.input-group');\n var notification = commerce.FieldNotification.get($inputGroup);\n if (notification) {\n notification.error();\n notification.setMessage(message);\n notification.show();\n }\n },\n info: function (message, widget) {\n widget.find('.restore-error').hide();\n var $inputGroup = widget.find(\"input[name='email']\").closest('.input-group');\n var notification = commerce.Notification.get(widget.find('.restore-info'));\n var fieldNotification = commerce.FieldNotification.get($inputGroup);\n if (fieldNotification) {\n fieldNotification.reset();\n fieldNotification.hide();\n }\n if (notification) {\n notification.setMessage(message);\n notification.info();\n notification.show();\n }\n },\n};\nliteratum.widgets.register(commerce.RestoreAccessWidget);\ncommerce.page.cart.show = function () {};\ncommerce.page.cart.checkoutButton = function (data) {\n var $leftCol = $('.checkoutProcessLeftCol');\n if (data.size > 0) {\n $leftCol.addClass('no-buying');\n } else {\n $leftCol.removeClass('no-buying');\n }\n // if (data.size > 0 && $(window).width() < 993 && $('.checkoutStickyBtn').length == 0 && $leftCol.length) {\n // $leftCol.append('
');\n // }\n // if (!data.size || $(window).width() >= 993) {\n // $('.checkoutStickyBtn').remove();\n // }\n};\ncommerce.cart.register(commerce.cart.buyingList, commerce.page.cart.checkoutButton);\ncommerce.cart.register(commerce.cart.savedItems, commerce.page.cart.checkoutButton);\n$(document).ready(function () {\n var checkout = location.hash.indexOf('checkout') > -1 || location.href.indexOf('checkout') > -1;\n if (checkout && $('.shopping-cart-indicator__badge').html() > 0) {\n commerce.page.cart.show();\n }\n if (checkout) {\n literatum.utils.nextCheckoutSection();\n }\n if (commerce.page.cart.checkoutButton !== undefined)\n commerce.page.cart.checkoutButton({size: $('.shopping-cart-indicator__badge').html()});\n $(document).on('click', '.add-journal-to-cart .prevent-fix, .add-journal-to-cart .tab-nav a', function (e) {\n if ($(this).parent().hasClass('disable-click')) {\n return false;\n } else {\n $(this).next('.journal-options-expanded').slideToggle();\n $(this).toggleClass('open');\n setTimeout(function () {\n $(\n '.eCommerceCheckoutSavedForLaterItemsWidget .journal-options-expanded,.eCommerceCheckoutRecommendedItemsWidget .journal-options-expanded,.eCommerceCheckoutRecentlyViewedItemsWidget .journal-options-expanded'\n ).each(function () {\n var expandedMargin = $(this).height() + 21;\n if (expandedMargin > 25 && $(this).is(':visible')) {\n $(this).closest('.add-journal-to-cart').css('margin-bottom', expandedMargin);\n } else {\n $(this).closest('.add-journal-to-cart').css('margin-bottom', '10px');\n }\n });\n }, 400);\n if (\n $(this).closest('.purchaseArea').css('position') == 'absolute' &&\n !$(e.target).closest('.tab-nav').length\n ) {\n $('.add-journal-to-cart').toggleClass('disable-click');\n $(this).closest('.add-journal-to-cart').toggleClass('disable-click');\n }\n }\n return false;\n });\n verifyAddress();\n});\n$(document).ajaxComplete(function () {\n verifyAddress();\n});\n\nfunction verifyAddress() {\n $('form').on('focusout blur', '.js__verifyAddress input', function (e) {\n var pattern1 = new RegExp('^p.*o.*box.*', 'i');\n var pattern2 = new RegExp('^po box[^a-z 0-9]+', 'i');\n var pattern3 = new RegExp('^po[^a-z ]+box', 'i');\n var pattern4 = new RegExp('^po[^a-z 0-9]+ box', 'i');\n var pattern5 = new RegExp('^po [^a-z 0-9]+box', 'i');\n if ($(this).val().match(pattern1)) {\n if (\n $(this).val().match(pattern2) ||\n $(this).val().match(pattern3) ||\n $(this).val().match(pattern4) ||\n $(this).val().match(pattern5)\n ) {\n $(this).addClass('error');\n if ($(this).siblings('.errorMsg').length == 0)\n $(this).after(\"PO BOX addresses should start with 'PO BOX'\");\n } else {\n $(this).removeClass('error');\n $(this).siblings('.errorMsg').remove();\n }\n } else {\n $(this).removeClass('error');\n $(this).siblings('.errorMsg').remove();\n }\n });\n}\n\nif (commerce.page.cart.checkoutButton !== undefined) {\n $(window).resize(function () {\n commerce.page.cart.checkoutButton({size: $('.shopping-cart-indicator__badge').html()});\n });\n}\nliteratum.events.register('user-action', function () {\n literatum.widgets.all().forEach(function (item) {\n item.reset();\n });\n});\nliteratum.events.register('widget-rendered', function () {\n var $document = $(document);\n if (typeof $document.Tabs != 'undefined') {\n $(document).Tabs();\n }\n});\ncommerce.cart.setErrorHandler(function () {\n location.reload();\n});\n\n$(document).ready(function () {\n $('.commerceExplainer .header').click(function () {\n var $header = $(this);\n var $content = $header.next();\n $content.slideToggle(function () {\n if ($('li', $content).length == 0) return;\n if ($content.is(':visible')) {\n $header.removeClass('collapsed');\n $header.addClass('expanded');\n } else {\n $header.removeClass('expanded');\n $header.addClass('collapsed');\n }\n });\n });\n $('.commerceExplainer .content').each(function (index, element) {\n if ($('li', element).length == 0) {\n $(element).closest('.container').children('.header').addClass('empty expanded');\n }\n });\n});\ncommerce.RedeemAllowanceWidget = function (widgetDef, element) {\n literatum.Widget.call(this, widgetDef, element);\n};\ncommerce.RedeemAllowanceWidget.prototype = new literatum.Widget();\ncommerce.RedeemAllowanceWidget.id = 'eCommerceRedeemOfferWidget';\ncommerce.RedeemAllowanceWidget.action = '/pb/widgets/commerce/redeemAllowance';\ncommerce.RedeemAllowanceWidget.binders = {\n expand: function (e, widget) {\n e.preventDefault();\n widget.find('.expand-purchase-options').toggleClass('expanded');\n widget.find('.add-allowance').slideToggle();\n },\n};\ncommerce.RedeemAllowanceWidget.find = function () {\n var $result = $(\"*[data-widget-def='\" + commerce.RedeemAllowanceWidget.id + \"']\");\n if ($result.length > 0) {\n return $result;\n }\n return $('.' + commerce.RedeemAllowanceWidget.id);\n};\nliteratum.widgets.register(commerce.RedeemAllowanceWidget);\nvar functions = {};\n$(function () {\n var lower = /[a-z]/;\n var upper = /[A-Z]/;\n var special = /[!@#\\$%\\^\\&*\\)\\(+=._-]/;\n var numeric = /[0-9]/;\n functions.getBaseScore = function (value) {\n var score = 0;\n if (lower.test(value)) {\n score++;\n }\n if (upper.test(value)) {\n score++;\n }\n if (special.test(value)) {\n score++;\n }\n if (numeric.test(value)) {\n score++;\n }\n if (score == 1) {\n score = 0;\n }\n return score;\n };\n functions.updateIndicator = function ($indicator, value, min, max, target) {\n var $lang_selector = $('.literatumLocaleChanger .language');\n var too__short = 'Too Short';\n var strong = 'Strong';\n var weak = 'Weak';\n var too__long = 'Too Long';\n if ($lang_selector != null) {\n if ($lang_selector.text() === 'ESP' || $lang_selector.text() === '') {\n too__short = 'Too Short';\n strong = 'Strong';\n weak = 'Weak';\n too__long = 'Too Long';\n } else {\n too__short = 'Muy corta';\n strong = 'Fuerte';\n weak = 'Débil';\n too__long = 'Muy larga';\n }\n }\n $indicator.removeClass('too-short too-long weak strong very-strong');\n var pass_selector = $('.pass-strength-popup');\n pass_selector.removeClass('too-short too-long weak strong very-strong');\n if (!value) {\n pass_selector.find('.strength').text(too__short).hide();\n pass_selector.find('.strength').text(too__long).hide();\n pass_selector.removeClass('weak');\n pass_selector.removeClass('strong');\n return;\n }\n var length = value.trim().length;\n if (length < min) {\n $indicator.addClass('too-short');\n pass_selector.addClass('too-short');\n pass_selector.find('.strength').text(too__short).show();\n pass_selector.removeClass('weak');\n pass_selector.removeClass('strong');\n return;\n }\n if (length > max) {\n $indicator.addClass('too-long');\n pass_selector.addClass('too-long');\n pass_selector.find('.strength').text(too__long).show();\n pass_selector.removeClass('weak');\n pass_selector.removeClass('strong');\n pass_selector.addClass('too-long');\n $('.pass-strength-popup').css('display', 'block');\n return;\n }\n var score = functions.getBaseScore(value, min, max);\n if (score != 0) {\n score += Math.floor((length - min) / 2);\n }\n var diff = score - target;\n if (diff < 0) {\n $indicator.addClass('weak');\n pass_selector.addClass('weak');\n pass_selector.removeClass('strong');\n pass_selector.find('.strength').text(weak).show();\n } else if (diff >= 0 && diff <= 2) {\n $indicator.addClass('strong');\n pass_selector.addClass('strong');\n pass_selector.removeClass('weak');\n pass_selector.find('.strength').text(strong).show();\n } else if (diff > 2) {\n $indicator.addClass('very-strong');\n pass_selector.removeClass('weak');\n pass_selector.addClass('strong');\n pass_selector.find('.strength').text(strong).show();\n }\n };\n $('.password-strength-indicator').each(function () {\n if (!$('.pass-hint').length) {\n var $indicator = $(this);\n var $group = $indicator.closest('.input-group');\n var $input = $group.find('input');\n var data = $indicator.data();\n var min = data.min;\n var max = data.max;\n var strength = data.strength;\n functions.updateIndicator($indicator, $input.val(), min, max, strength);\n $input.on('input change', function () {\n functions.updateIndicator($indicator, $input.val(), min, max, strength);\n });\n }\n });\n\n if ($('.checkoutDropZone').length > 0) {\n $('.item__removal__popup__text').addClass('item__removal__cart__text');\n $('.item__removal__cart__text').removeClass('item__removal__popup__text');\n if ($('.item__removal__cart__text').length > 0) {\n $('.item__removal__cart__text').clone().prependTo($('.checkoutDropZone').closest('.row').parent());\n $('.item__removal__cart__text').last().remove();\n }\n }\n setTimeout(function () {\n $('.item__removal__popup__text').fadeOut('slow');\n }, 4000);\n});\n$(document).ready(function () {\n $('.js__mail_verification_widget input').on('keyup', function () {\n if ($(this).val().trim().length > 0) {\n $(this).closest('form').find('.form-btn').addClass('blue-subb-btn');\n $(this).closest('form').find('.form-btn').prop('disabled', false);\n } else {\n $(this).closest('form').find('.form-btn').removeClass('blue-subb-btn');\n $(this).closest('form').find('.form-btn').prop('disabled', true);\n }\n });\n $('.raa-modal-dialog .raa-modal-dialog-cncl').on('click', function (e) {\n e.preventDefault();\n $(this).closest('.raa-modal-dialog').hide();\n });\n $('.raa-modal-dialog.enabled').show();\n var lower = /[a-z]/;\n var upper = /[A-Z]/;\n var special = /[!@#\\$%\\^\\&*\\)\\(+=._-]/;\n var numeric = /[0-9]/;\n\n function translate_msg(lang, pswd_l, pswd_r) {\n var message;\n if (lang === 'ESP' || lang === '') {\n if (pswd_r === 2 || pswd_r === 4 || pswd_r === 5) {\n message = 'Your password must have ' + pswd_l + ' characters or more:';\n } else {\n message =\n 'Your password must have ' +\n pswd_l +\n ' characters or more and contain ' +\n pswd_r +\n ' of the following:';\n }\n } else {\n if (pswd_r === 2 || pswd_r === 4 || pswd_r === 5) {\n message = 'Su contraseña debe tener: ' + pswd_l + ' caracteres o más:';\n } else {\n message =\n 'Su contraseña debe tener: ' +\n pswd_l +\n ' caracteres o más y debe cumplir ' +\n pswd_r +\n ' de los siguientes requisitos:';\n }\n }\n return message;\n }\n\n function strength_list(lang, pswd) {\n var list_items_strength;\n var strength;\n var separator = '';\n if (lang === 'ESP' || lang === '') {\n strength = 'Too short';\n if (pswd === 2) {\n separator = '
  • or an
  • ';\n } else {\n separator = 'an ';\n }\n list_items_strength =\n '' +\n strength +\n '';\n } else {\n strength = 'Muy corta';\n if (pswd === 2) {\n separator = '
  • o
  • ';\n } else {\n separator = '
  • , un
  • ';\n }\n list_items_strength =\n '' +\n strength +\n '';\n }\n return list_items_strength;\n }\n\n if ($('.pass-hint')) {\n $('.pass-hint')\n .on('keyup input focus change', function () {\n var pswd = $(this).val();\n var $indicator = $('.pass-hint').siblings('.password-strength-indicator');\n var pswd_req = $indicator.data('strength');\n var pswd_length = $indicator.data('min');\n var pswd_max = $indicator.data('max');\n var $lang_selector = $('.literatumLocaleChanger .language');\n if (!pswd_req) {\n pswd_req = 3;\n }\n var validator =\n '
    ' +\n '

    ' +\n translate_msg($lang_selector.text(), pswd_length, pswd_req) +\n '

    ' +\n strength_list($lang_selector.text(), pswd_req) +\n '
    ';\n if (!$('.js__pswd_info').length) {\n $(this).closest('.input-group').append(validator);\n }\n functions.updateIndicator($indicator, pswd, pswd_length, pswd_max, pswd_req);\n if (pswd.match(lower)) {\n $('#letter').addClass('valid');\n } else {\n $('#letter').removeClass('valid');\n }\n if (pswd.match(upper)) {\n $('#capital').addClass('valid');\n } else {\n $('#capital').removeClass('valid');\n }\n if (pswd.match(special)) {\n $('#special').addClass('valid');\n } else {\n $('#special').removeClass('valid');\n }\n if (pswd.match(numeric)) {\n $('#number').addClass('valid');\n } else {\n $('#number').removeClass('valid');\n }\n if (\n $('.js__pswd_info').length &&\n $('.js__pswd_info .valid').length >= pswd_req &&\n pswd.length <= pswd_max &&\n pswd.length >= pswd_length\n )\n $('.js__pswd_info').fadeOut('slow');\n else $('.js__pswd_info').fadeIn('slow');\n })\n .blur(function () {\n $('.js__pswd_info').fadeOut('fast');\n });\n }\n var $drawer = $('.emails-wrappers,.phones-wrappers');\n $drawer.on('click', '.make-primary,.remove', function (e) {\n $(\".js__profileForm input[type='submit']\").prop('disabled', false);\n e.preventDefault();\n });\n $(document).on('keypress change', '.js__profileForm input, .js__profileForm select', function (e) {\n if ($(this).val()) {\n $(\".js__profileForm input[type='submit']\").prop('disabled', false);\n } else {\n $(\".js__profileForm input[type='submit']\").prop('disabled', true);\n }\n });\n\n function guestEmail(email) {\n var emailForm = /^([a-zA-Z0-9_.+-])+\\@(([a-zA-Z0-9-])+\\.)+([a-zA-Z0-9]{2,4})+$/;\n return emailForm.test(email);\n }\n\n $('#email').on('keyup change', function () {\n if (guestEmail($('#email').val()) && $('#taggedNoGuest').val() == 'true') {\n $('.checkoutMethod input.primary').removeAttr('disabled');\n } else {\n $('.checkoutMethod input.primary').attr('disabled', 'true');\n }\n });\n});\n(function ($) {\n function visible(element) {\n return (\n $.expr.filters.visible(element) &&\n !$(element)\n .parents()\n .addBack()\n .filter(function () {\n return $.css(this, 'visibility') === 'hidden';\n }).length\n );\n }\n\n function focusable(element, isTabIndexNotNaN) {\n var map,\n mapName,\n img,\n nodeName = element.nodeName.toLowerCase();\n if ('area' === nodeName) {\n map = element.parentNode;\n mapName = map.name;\n if (!element.href || !mapName || map.nodeName.toLowerCase() !== 'map') {\n return false;\n }\n img = $('img[usemap=#' + mapName + ']')[0];\n return !!img && visible(img);\n }\n return (\n (/input|select|textarea|button|object/.test(nodeName)\n ? !element.disabled\n : 'a' === nodeName\n ? element.href || isTabIndexNotNaN\n : isTabIndexNotNaN) && visible(element)\n );\n }\n\n $.extend($.expr[':'], {\n focusable: function (element) {\n return focusable(element, !isNaN($.attr(element, 'tabindex')));\n },\n });\n})(jQuery);\n\n$(function () {\n var $confirmation = $('.registration-confirmation');\n $confirmation.on('click', '.resend', function () {\n event.preventDefault();\n $.ajax({\n method: 'get',\n url: $(this).attr('href') + '&ajaxRequest=true',\n xhrFields: {withCredentials: true},\n })\n .then(function () {\n $confirmation.html('A link has been resent to your email');\n })\n .fail(function () {\n $confirmation.html('An error has occurred');\n });\n });\n var $popup = $('.societyID-popup');\n $popup.delay(5000).hide(0);\n $popup.on('click', '.close', function () {\n $popup.addClass('d-none');\n });\n});\n\n$(function () {\n $('.login-form').each(function () {\n var $form = $(this);\n var $login = $form.find('.login');\n var $pass = $form.find('.password');\n var $submit = $form.find('.submit');\n $form.on('click', '.resend', function (event) {\n event.preventDefault();\n $.ajax({\n method: 'get',\n url: $(this).attr('href') + '&ajaxRequest=true',\n xhrFields: {withCredentials: true},\n })\n .then(function () {\n $form.find('.message').html('A link has been resent to your email');\n })\n .fail(function () {\n $form.find('.message').html('An error has occurred');\n });\n });\n var change = function () {\n if (!$login.val() || !$pass.val()) {\n $submit.attr('disabled', true);\n } else {\n $submit.removeAttr('disabled');\n }\n };\n $login.on('keyup input', change);\n $pass.on('keyup input', change);\n change();\n });\n});\n$(function () {\n $('.request-username-form').each(function () {\n var $form = $(this);\n var $email = $form.find('.email');\n var $submit = $form.find('.submit');\n var change = function () {\n if (!$email.val()) {\n $submit.attr('disabled', true);\n } else {\n $submit.removeAttr('disabled');\n }\n };\n $email.on('keyup input', change);\n change();\n $form.submit(function (event) {\n if ($submit.attr('disabled')) {\n event.preventDefault();\n }\n });\n });\n});\n$(function () {\n var $popups = $('.popup');\n var $popup = $('.login-popup');\n var $login = $popup.find('.login');\n var $password = $popup.find('.password');\n var $eye = $popup.find('.password-eye-icon');\n var $remember = $popup.find('.remember .cmn-toggle');\n var $message = $popup.find('.message');\n var $submit = $popup.find('.submit');\n var items = $popup.find('a, button, input');\n var lastItem,\n revers = false,\n tabKey = 9,\n shift = 16,\n $close = $popup.find('.close');\n items.each(function (index) {\n if (index === items.length - 1) {\n lastItem = $(this);\n }\n });\n $popup.on('keydown', function (e) {\n if (e.keyCode === shift) {\n revers = true;\n }\n if ((e.keyCode || e.which) === tabKey) {\n if (!revers) {\n tabEvent();\n } else {\n tabRevers();\n }\n }\n });\n $('.show-login:not(.userLoginBar__controller)').click(function (event) {\n $popups.addClass('d-none');\n $popup.removeClass('d-none');\n $('body').addClass('noscroll');\n event.preventDefault();\n });\n $('.redicrect__close').click(function () {\n $('.redirect__modal .close').click();\n });\n $popup.on('click', '.close', function (e) {\n e.preventDefault();\n $('body').removeClass('noscroll');\n $popup.addClass('d-none');\n $eye.addClass('d-none icon-eye').removeClass('icon-eye-off');\n $submit.attr('disabled', true);\n $remember.attr('checked', false);\n $login.val('');\n $password.val('');\n $message.html('');\n });\n $(document).on('keyup', $popup, function (e) {\n if (e.keyCode == 27) {\n $popup.find('.close').trigger('click');\n }\n if (e.keyCode === shift) {\n revers = false;\n }\n });\n\n function tabEvent() {\n $close.off();\n lastItem.on('focusout', function () {\n $close.focus();\n });\n }\n\n function tabRevers() {\n lastItem.off();\n $close.on('focusout', function () {\n lastItem.focus();\n });\n }\n});\n// $(function () {\n// jcf.setOptions('Select', {\"wrapNativeOnMobile\": false});\n// jcf.replace('.literatumProfileMainWidget .select select:not([multiple=\"multiple\"])');\n// if ($(window).width() < 992) {\n// var $select = $('select[multiple=\"multiple\"]');\n// $select.each(function () {\n// var $this = $(this);\n// var $taxonomy = $this.attr('id').split('.');\n// var $taxonomyCode = $('[name=\"' + $taxonomy[0] + '.code\"]');\n// var $maxTags = $taxonomyCode.data('maxtags').split('.');\n// $maxTags = $maxTags[0];\n// $this.chosen({max_selected_options: $maxTags});\n// });\n// }\n// $(document).ready(function () {\n// var $registrationForm = $('[action=\"/action/registration\"]');\n// if ($registrationForm.length) {\n// $registrationForm.find('.label.error').first().next('input').focus();\n// }\n// });\n// });\n$(function () {\n var pattern = /^([\\w-+]+(?:\\.[\\w-]+)*)@((?:[\\w-]+\\.)*\\w[\\w-]{0,66})\\.([a-z]{2,9}(?:\\.[a-z]{2})?)$/i;\n $('.loginInformation').each(function () {\n var $form = $(this);\n var $email = $form.find('.email');\n var $email2 = $form.find('.email2');\n var change = function () {\n $(this).prevAll('.label').removeClass('error').find('.message').remove();\n };\n var blur = function () {\n var $email = $(this);\n if ($email.val() && !pattern.test($email.val())) {\n var $label = $email.prevAll('.label');\n $label.addClass('error');\n var $message = $label.find('.message');\n var $lang_selector = $('.literatumLocaleChanger .language');\n var error = ' Is Invalid';\n if ($lang_selector != null) {\n if ($lang_selector.text() === 'ESP' || $lang_selector.text() === '') {\n error = ' Is Invalid';\n } else {\n error = 'Información inválida';\n }\n }\n if (!$message.length) {\n $message = $('').appendTo($label);\n }\n $message.html(' - ' + error);\n }\n };\n $email.on('blur', blur).on('change', change);\n $email2.on('blur', blur).on('change', change);\n });\n});\n$(function () {\n var $popups = $('.popup');\n var $popup = $('.registration-popup');\n var $email = $popup.find('.email');\n var $submit = $popup.find('.submit');\n var items = $popup.find('a, button, input');\n var lastItem,\n revers = false,\n tabKey = 9,\n shift = 16,\n $close = $popup.find('.close');\n items.each(function (index) {\n if (index === items.length - 1) {\n lastItem = $(this);\n }\n });\n $popup.on('keydown', function (e) {\n if (e.keyCode === shift) {\n revers = true;\n }\n if ((e.keyCode || e.which) === tabKey) {\n if (!revers) {\n tabEvent();\n } else {\n tabRevers();\n }\n }\n });\n $('.show-registration').click(function (event) {\n $popups.addClass('d-none');\n $popup.removeClass('d-none');\n $popup.find('input[type=\"text\"]').focus();\n event.preventDefault();\n });\n $popup.on('click', '.close', function (e) {\n e.preventDefault();\n $popup.addClass('d-none');\n $('body').removeClass('noscroll');\n });\n $popup.on('keyup', function (e) {\n if (e.keyCode == 27) {\n $popup.find('.close').trigger('click');\n }\n if (e.keyCode === shift) {\n revers = false;\n }\n });\n var pattern = /^([\\w-+]+(?:\\.[\\w-]+)*)@((?:[\\w-]+\\.)*\\w[\\w-]{0,66})\\.([a-z]{2,9}(?:\\.[a-z]{2})?)$/i;\n var change = function (event) {\n var code = event.keyCode ? event.keyCode : event.which;\n if (code == 13) {\n return;\n }\n $email.prevAll('.label').removeClass('error').find('.message').remove();\n if (!$email.val()) {\n $submit.attr('disabled', true);\n } else {\n $submit.removeAttr('disabled');\n }\n };\n $submit.click(function () {\n if (!$email.val()) {\n return false;\n } else if (!pattern.test($email.val())) {\n var $label = $email.prevAll('.label');\n $label.addClass('error');\n var $message = $label.find('.message');\n if (!$message.length) {\n $message = $('').appendTo($label);\n }\n $message.html(' - Is Invalid');\n return false;\n }\n });\n var blur = function () {\n if ($email.val() && !pattern.test($email.val())) {\n var $label = $email.prevAll('.label');\n $label.addClass('error');\n var $message = $label.find('.message');\n if (!$message.length) {\n $message = $('').appendTo($label);\n }\n $message.html(' - Is Invalid');\n }\n };\n\n function tabEvent() {\n $close.off();\n lastItem.on('focusout', function () {\n $close.focus();\n });\n }\n\n function tabRevers() {\n lastItem.off();\n $close.on('focusout', function () {\n lastItem.focus();\n });\n }\n\n $email.on('keyup input', change);\n $email.on('blur', blur);\n});\n$(function () {\n $('.request-reset-password-form').each(function () {\n var $form = $(this);\n var $email = $form.find('.email');\n var $submit = $form.find('.submit');\n var change = function () {\n if (!$email.val()) {\n $submit.attr('disabled', true);\n } else {\n $submit.removeAttr('disabled');\n }\n };\n $email.on('keyup input', change);\n change();\n $form.submit(function (event) {\n if ($submit.attr('disabled')) {\n event.preventDefault();\n }\n });\n });\n});\n\n$(function () {\n $('.claim-options li').each(function () {\n var $form = $(this).find('form');\n var $token = $form.find('.token');\n var $submit = $form.find('.submit');\n var change = function () {\n if (!$token.val()) {\n $submit.attr('disabled', true);\n } else {\n $submit.removeAttr('disabled');\n }\n };\n $token.on('keyup input', change);\n change();\n $form.submit(function (event) {\n if ($submit.attr('disabled')) {\n event.preventDefault();\n }\n });\n });\n});\n\nvar toggleAddButton = list => {\n list.each((key, item) => {\n const addButton = $(item).find('.add');\n if (key === list.length - 1) {\n addButton.removeClass('d-none');\n return;\n }\n addButton.addClass('d-none');\n });\n};\n\n$(function () {\n var start = 1000;\n var $emails = $('.emails-wrappers');\n if (!$emails.length) return;\n var current = $emails.data().count;\n var max = $emails.data().max;\n var $drawers = $('.top-drawer');\n var $drawer = $('.emails-wrappers .verification-confirmation');\n var $content = $drawer.find('.content');\n var $success = $drawer.find('.success-template');\n var $failure = $drawer.find('.failure-template');\n var template = $emails.find('.template').html();\n $emails.on('click', '.add', function () {\n if (current < max) {\n $emails.append(template.replace(/INDEX/g, start++));\n current++;\n $emails.toggleClass('saturated', current >= max);\n }\n toggleAddButton($emails.find('.email'));\n });\n $emails.on('click', '.remove', function () {\n $(this).closest('.email').remove();\n current--;\n $emails.toggleClass('saturated', current >= max);\n toggleAddButton($emails.find('.email'));\n });\n\n $emails.on('click', '.make-primary', function () {\n var $old = $emails.find('.email.primary').find('.value');\n var $new = $(this).closest('.email').find('.value');\n var value = $new.val();\n $new.val($old.val());\n $old.val(value);\n });\n $emails.on('click', '.resend-verification', function (event) {\n event.preventDefault();\n $.ajax({\n method: 'get',\n url: $(this).attr('href') + '&ajaxRequest=true',\n xhrFields: {withCredentials: true},\n }).then(function (data) {\n var $clone;\n if (data.result) {\n $clone = $failure.clone();\n $clone.find('.message').html(data.message);\n } else {\n $clone = $success.clone();\n }\n $content.html($clone.html());\n $drawers.addClass('d-none');\n $drawer.removeClass('d-none');\n $content.slideDown('fast');\n });\n });\n $drawer.on('click', '.cancel', function (event) {\n $content.slideUp('fast');\n $drawer.addClass('d-none');\n event.preventDefault();\n });\n});\n$(function () {\n var start = 1000;\n var $phones = $('.phones-wrappers');\n if (!$phones.length) return;\n var current = $phones.data().count;\n var max = $phones.data().max;\n var template = $phones.find('.template').html();\n $phones.on('click', '.add', function (e) {\n if (current < max) {\n $phones.append(template.replace(/INDEX/g, start++));\n current++;\n $phones.toggleClass('saturated', current >= max);\n }\n toggleAddButton($phones.find('.phone'));\n });\n $phones.on('click', '.remove', function () {\n $(this).closest('.phone').remove();\n current--;\n $phones.toggleClass('saturated', current >= max);\n toggleAddButton($phones.find('.phone'));\n });\n});\n$(function () {\n $('.addresses').each(function () {\n var $widget = $(this);\n var $change = $widget.find('.switch-address');\n var $edit = $widget.find('.edit');\n var $addresses = $widget.find('.address');\n var clear = function () {\n $edit.find('.dynamic').val('');\n $edit.find('.error').removeClass('error');\n $edit.find('.state').attr('disabled', true);\n $edit.find('.state').closest('.input-group').addClass('d-none');\n $edit.find('.message').text('');\n };\n $change.change(function () {\n var uuid = $change.val();\n $edit.addClass('d-none');\n $addresses.addClass('d-none');\n clear();\n if (uuid) {\n $addresses.filter('.' + uuid).removeClass('d-none');\n } else {\n $edit.removeClass('d-none');\n }\n });\n $widget.on('click', '.edit-address', function (e) {\n e.preventDefault();\n var $address = $(this).closest('.address');\n $address.find('[data-name]').each(function () {\n var $this = $(this);\n var $holder = $edit.find('#address\\\\.' + $this.data().name);\n var text = $this.text();\n if ($holder.is('select')) {\n $holder\n .find('option')\n .removeAttr('selected')\n .filter(function () {\n return $(this).val() == text || $(this).text() == text;\n })\n .prop('selected', true);\n } else {\n $holder.val(text);\n }\n });\n var country = $edit.find('.country').val();\n if (country) {\n $edit.find('.state').addClass('d-none');\n var $states = $edit.find('.state.' + country);\n if ($states.length) {\n var state = $address.find('[data-name=\"state\"]').text();\n $states\n .find('option')\n .removeAttr('selected')\n .filter(function () {\n return $(this).val() == state || $(this).text() == state;\n })\n .prop('selected', true);\n $states.removeAttr('disabled');\n $states.closest('.input-group').removeClass('d-none');\n $states.removeClass('d-none');\n }\n }\n $address.addClass('d-none');\n $edit.removeClass('d-none');\n });\n $('.save-profile').click(function () {\n var $editAddress = $('.edit-address');\n if ($editAddress.is(':hidden')) {\n return;\n }\n $editAddress.click();\n $('.edit').addClass('d-none');\n $('.address').removeClass('d-none');\n });\n $widget.on('change', '.country', function () {\n var value = $(this).val();\n var $states = $edit.find('.state');\n $states.attr('disabled', true).val('');\n $states.addClass('d-none');\n var $current = $states.filter('.' + value);\n if ($current.length) {\n $current.removeAttr('disabled');\n $current.removeClass('d-none');\n }\n $states.closest('.input-group').toggleClass('d-none', !$current.length);\n });\n });\n});\n$(function () {\n $('.social-email').each(function () {\n var $social = $(this);\n var $submit = $social.find('.submit');\n var change = function () {\n if (\n $social.find('.required').filter(function () {\n return !$(this).val();\n }).length > 0\n ) {\n $submit.attr('disabled', true);\n } else {\n $submit.removeAttr('disabled');\n }\n };\n $social.find('.required').on('keyup input', change);\n change();\n });\n});\n$(function () {\n var $section = $('.institutions');\n var $search = $section.find('.search');\n var toggle = function ($link, value) {\n $link.find('a').toggleClass('collapsed', !value);\n $link.next().toggleClass('d-none', value);\n };\n $search.keyup(function () {\n var text = $(this).val().toLowerCase();\n $section.find('.expand-link').each(function () {\n toggle($(this), !text);\n });\n $section.find('.institution').each(function () {\n var $institution = $(this);\n $institution.toggleClass('d-none', $institution.data().value.toLowerCase().indexOf(text) < 0);\n });\n $section.find('.federation').each(function () {\n var $federation = $(this);\n $federation.toggleClass('d-none', !$federation.find('.institution:not(.d-none)').length);\n });\n });\n $section.on('click', '.expand-link', function (event) {\n var collapsed = $(this).next().hasClass('d-none');\n event.preventDefault();\n toggle($(this), !collapsed);\n });\n});\n$(function () {\n $('.identityTokenWidget').each(function () {\n var $form = $(this).find('form');\n var $submit = $form.find('.submit');\n var $token = $form.find('.token');\n var change = function () {\n if (!$token.val()) {\n $submit.attr('disabled', true);\n } else {\n $submit.removeAttr('disabled');\n }\n };\n $token.on('keyup input', change);\n change();\n });\n});\n\n$(function () {\n var $purchase = $('.purchaseArea');\n $purchase.on('click', '.expand-link', function (event) {\n event.preventDefault();\n var $link = $(this);\n var $content = $link.nextAll('.content');\n $link.toggleClass('active');\n $content.toggleClass('d-none');\n });\n $('.save-for-later-link').click(function () {\n $('.save-for-later-link').hide();\n $('.saved-go-cart').toggleClass('d-none');\n });\n $('.add-article-to-cart').click(function () {\n $('.save-for-later-link').hide();\n });\n\n var $deepdyve = $purchase.find('.deep-dyve');\n if ($deepdyve.length) {\n var url = 'https://www.deepdyve.com/rental-link';\n var data = $deepdyve.data();\n if (data.affid && data.issn && data.doi) {\n $.ajax({\n url: url,\n data: {\n docId: data.doi,\n fieldName: 'journal_doi',\n journal: data.issn,\n affiliateId: data.affid,\n format: 'jsonp',\n },\n dataType: 'jsonp',\n jsonp: 'callback',\n }).then(function (json) {\n if (json.status === 'ok') {\n $deepdyve.attr('href', json.url);\n $deepdyve.removeClass('d-none');\n }\n });\n }\n }\n});\n\n$(function () {\n var $drawer = $('.society-id-status');\n var $content = $drawer.find('.content');\n $content.slideDown('fast');\n $drawer.on('click', '.cancel', function (event) {\n $content.slideUp('fast');\n $drawer.addClass('d-none');\n event.preventDefault();\n });\n hideSocietyStatusDialog($drawer);\n});\n\nfunction hideSocietyStatusDialog($drawer) {\n $drawer.delay(8000).hide(0);\n}\n\nvar raa = {};\n\n$(document).ready(function () {\n $('.show-request-reset-password').click(function () {\n if ($('.password-recaptcha-ajax').length && $('.LBD_CaptchaDiv').length < 1)\n $.ajax({\n type: 'GET',\n dataType: 'html',\n url: '/pb/widgets/CaptchaResponseHandler/',\n }).done(function (data) {\n $('.password-recaptcha-ajax').append(data);\n });\n });\n $('.show-request-username').click(function () {\n if ($('.username-recaptcha-ajax').length)\n $.ajax({\n type: 'GET',\n dataType: 'html',\n url: '/pb/widgets/CaptchaResponseHandler/',\n }).done(function (data) {\n $('.username-recaptcha-ajax').append(data);\n });\n });\n});\nraa.EntitlementsWidget = function (widgetDef, element) {\n literatum.Widget.call(this, widgetDef, element);\n};\n\nraa.EntitlementsWidget.prototype = new literatum.Widget();\n\nraa.EntitlementsWidget.id = 'eCommerceAccessEntitlementWidget';\nraa.EntitlementsWidget.action = '/pb/widgets/raa/entitlements';\n\nraa.EntitlementsWidget.prototype.reloadTab = function (tab) {\n var widget = this;\n var loading = new literatum.FullPageLoading().start();\n var $tabContent = this.find(\"#\" + tab);\n var $form = $tabContent.find('form');\n var $query = $form.find(\"input[name='query']\");\n var $sort = $form.find('select');\n literatum.widgets.render(\n widget,\n {},\n {\n sort: $sort.val(),\n query: $query.val(),\n selectedTab: tab.replace('pane-', ''),\n },\n function () {\n loading.done();\n },\n function (html) {\n if(html) {\n let result = $(html.trim());\n $tabContent.html(result.html());\n }\n widget.registerListeners();\n }\n );\n};\n\nraa.EntitlementsWidget.binders = {\n series: function (e, widget) {\n e.preventDefault();\n widget.find('.tab-nav li').removeClass('active');\n $(e.target).closest('li').addClass('active');\n widget.find('.tab-pane').removeClass('active');\n var $tabContent = widget.find('.seriesContent');\n if ($tabContent.children().length == 0) {\n widget.reloadTab('series');\n } else {\n $tabContent.find('.tab-pane').addClass('active');\n }\n },\n groups: function (e, widget) {\n e.preventDefault();\n widget.find('.tab-nav li').removeClass('active');\n $(e.target).closest('li').addClass('active');\n widget.find('.tab-pane').removeClass('active');\n var $tabContent = widget.find('.groupsContent');\n if ($tabContent.children().length == 0) {\n widget.reloadTab('groups');\n } else {\n $tabContent.find('.tab-pane').addClass('active');\n }\n },\n items: function (e, widget) {\n e.preventDefault();\n widget.find('.tab-nav li').removeClass('active');\n $(e.target).closest('li').addClass('active');\n widget.find('.tab-pane').removeClass('active');\n var $tabContent = widget.find('.itemsContent');\n if ($tabContent.children().length == 0) {\n widget.reloadTab('items');\n } else {\n $tabContent.find('.tab-pane').addClass('active');\n }\n },\n submitSearch: function (e, widget) {\n e.preventDefault();\n widget.reloadTab($(e.target).closest('.tab-pane').attr('id'));\n },\n sort: function (e, widget) {\n if (e.type == 'change') {\n widget.reloadTab(widget.find('.tab-pane:visible').attr('id'));\n }\n },\n};\n\nraa.EntitlementsWidget.prototype.registerListeners = function () {\n Object.getPrototypeOf(raa.EntitlementsWidget.prototype).registerListeners.call(this);\n var widget = this;\n this.find(\"input[name='query']\")\n .closest('form')\n .submit(function (e) {\n e.preventDefault();\n raa.EntitlementsWidget.binders.submitSearch(e, widget);\n });\n};\n\nraa.EntitlementsWidget.find = function () {\n var $result = $(\"*[data-widget-def='\" + raa.EntitlementsWidget.id + \"']\");\n if ($result.length > 0) {\n return $result;\n }\n return $('.' + raa.EntitlementsWidget.id);\n};\n\nliteratum.widgets.register(raa.EntitlementsWidget);\ndocument.addEventListener('DOMContentLoaded', twoFactorAuthentication, false);\n\nfunction twoFactorAuthentication() {\n if (document.getElementById('check-if-exist')) {\n setTimeout(function () {\n document.getElementById('hidden-message').style.visibility = 'visible';\n document.getElementById('hidden-message').style.display = 'block';\n }, 30000);\n }\n var submit,\n passPin = document.getElementsByClassName('type-pass-pin')[0];\n if (passPin) {\n passPin.addEventListener('keyup', function () {\n var children = this.form.children;\n for (var i = 0; i < children.length; i++) {\n if (children[i].className == 'OK-btn') {\n submit = children[i];\n break;\n }\n }\n submit.disabled = this.value ? false : true;\n });\n }\n var pinForm = document.getElementsByClassName('js__pinCode')[0];\n\n function isNumeric(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n }\n\n if (pinForm) {\n pinForm.addEventListener('submit', function () {\n var passPin = document.getElementsByClassName('type-pass-pin')[0];\n var pinValue = passPin.value;\n var numeric = isNumeric(pinValue);\n if (!numeric || pinValue == '' || pinValue == 'Type the 6 diget PIN Code') {\n var errorMsg = this.querySelector('.error-msg');\n errorMsg.innerHTML = 'Please fill this field with numbers';\n errorMsg.className = errorMsg.className.replace(/\\bd-none\\b/, '');\n return false;\n }\n });\n }\n}\n\nif (typeof jQuery !== 'undefined') {\n (function ($) {\n var selectElement = $('.scrollableList').siblings('select');\n $('.scrollableList')\n .siblings()\n .each(function () {\n if ($(this).hasClass('sbHolder')) {\n selectElement.selectbox('detach');\n } else if ($(this).hasClass('bootstrap-select')) {\n $(this).hide();\n }\n });\n selectElement.hide();\n })(jQuery);\n jQuery(document).ready(function () {\n jQuery('.pb-collapse').click(function () {\n jQuery('.notAuth-msg-container').toggleClass('collapsed');\n jQuery(this).find('img').toggle();\n });\n });\n}\n\nwindow.tfaResetAuthentication = function () {\n if (document.getElementById('reset-verification-warning').style.display == 'none') {\n document.getElementById('reset-verification-warning').style.display = 'block';\n document.getElementsByClassName('reset-verification-option')[0].style.display = 'none';\n }\n var redirectUri = document.getElementsByName('redirectUri')[0].value;\n document.getElementsByName('redirectUri')[0].value = encodeURI('/action/resetTfaMethod?redirectUri=' + redirectUri);\n};\n\nfunction shibbolethInitSearch() {\n var $el = $('#shibboleth_search');\n var $bottomSection = $('.center-aligned');\n var placeholder = 'Type the name of your institution';\n var userIndicator = placeholder;\n var $lang_selector = $('.language-switcher li .sr-only');\n if ($lang_selector.text() === 'German Language is activeswitch to English language') {\n placeholder = 'Bitte geben Sie den Namen Ihrer Institution ein';\n userIndicator = placeholder;\n }\n if ($el.length) {\n var ms = $el.magicSuggest({\n allowFreeEntries: false,\n data: '/pb/widgets/shibbolethLogin/institutions',\n hideTrigger: true,\n maxSelection: 1,\n method: 'get',\n minChars: 1,\n mode: 'remote',\n minCharsRenderer: function (v) {\n extraMSContent();\n },\n noSuggestionText:\n '
    ' +\n '

    We couldn’t find any result for ' +\n '{{query}}' +\n '

    ' +\n '

    You can search for your Institution via Federation ' +\n 'here' +\n '

    ' +\n '
    ',\n placeholder: placeholder,\n resultsField: 'name',\n renderer: function (data) {\n if (data) {\n return (\n '' +\n data.name +\n ''\n );\n }\n },\n });\n var closeButton = function ($el) {\n return '';\n };\n\n var extraMSContent = function () {\n ms.helper.html(userIndicator);\n ms.helper.addClass('visible');\n ms.helper.show();\n };\n\n function getWidgetId(elem) {\n var widgetEl = elem.parents('[data-widget-id]')[0];\n return widgetEl ? $(widgetEl).data('widget-id') : '';\n }\n\n function renderRecentInstitutionView(item) {\n var recentlyLoggednIn =\n '
    ' +\n '' +\n item.recentName +\n '' +\n ' ' +\n '
    ';\n ms.helper.find('.ms-recently-logged').append(recentlyLoggednIn);\n }\n\n $('.institutional--select').on('click', '.ms-org-remove', function (e) {\n e.preventDefault();\n var el = $(this).closest('.ms-org-row');\n var id = $(this).data('item-id');\n $(this).hide();\n el.append(\"
    \");\n $.ajax({\n url: '/pb/widgets/shibbolethLogin/removeRecentInstitution',\n type: 'GET',\n data: {recentID: id},\n success: function () {\n el.remove();\n },\n });\n });\n var hideExtraMSContent = function () {\n ms.helper.html('');\n ms.helper.removeClass('visible');\n };\n $(ms).on('focus', function () {\n if (ms.input.length) {\n ms.input.attr('placeholder', '');\n $('.ms-sel-ctn').append(closeButton);\n ms.helper.show();\n $bottomSection.hide();\n $('#msBlur').one('click', e => {\n $(ms).blur();\n });\n }\n });\n $(ms).on('blur', function () {\n if (ms.input.length) {\n ms.input.attr('placeholder', placeholder);\n $('#msBlur').remove();\n hideExtraMSContent();\n $bottomSection.show();\n }\n });\n $(ms).on('load', function (e, m) {\n console.warn(JSON.stringify(this.getValue()));\n });\n $(ms).on('selectionchange', function (e, m) {\n e.preventDefault();\n try {\n if (e.currentTarget.getSelection().length > 0) {\n var institutionUrl = e.currentTarget.getSelection()[0].institutionUrl;\n window.location.href = institutionUrl;\n }\n } catch (e) {\n console.log(e);\n }\n });\n }\n}\n\n$('.general-rss-feed-reader').each(function () {\n //Moving literatum to SG\n var $this = $(this);\n var $resultsTarget = $(this).find('.rss-body');\n var url = $(this).data('rss-url');\n var data = {};\n if (url) {\n data.url = url;\n }\n $this.pbAjax({\n type: 'GET',\n url: '/pb/widgets/rssWidget/loadWidget',\n data: data,\n dataType: 'html',\n async: 'false',\n success: function (data) {\n $resultsTarget.html(data);\n },\n });\n});\n\n$(document).ready(function () {\n $('.fancy-tooltip').tooltip({\n show: {\n effect: 'fadeIn',\n delay: 250,\n },\n });\n literatum.widgets.initialize();\n if (document.querySelectorAll('#shibboleth_search, #login_suggestions_org_search').length) {\n import('magicsuggest')\n .then(() => {\n shibbolethInitSearch();\n })\n .catch(e => {\n console.log(e);\n });\n }\n});\n","// import { RadialProgressBar } from 'components/progress-bar/js/main';\nimport { BaseElements, BaseObject, BaseService, BaseInjector } from \"../../js/base\";\nimport { querySelector } from '../../utility/utils';\nimport { focusableElements } from '../../utility/utils';\n\nclass Texts extends BaseObject {\n\n}\nclass ClassList extends BaseObject {\n VISIBLE = 'back-to-top--visible';\n SNAPPED = 'back-to-top--snapped';\n}\n\nclass Selectors extends BaseObject {\n backToTop = '.back-to-top';\n backToTopAction = '.back-to-top__action';\n backToTopRing = '.back-to-top__action__ring';\n}\n\nclass Elements extends BaseElements {\n snapElement: HTMLElement;\n backToTopAction: HTMLElement;\n backToTopRing: SVGPathElement;\n isSquareAction: boolean;\n\n\n constructor(selectors: Selectors) {\n super(selectors, true);\n }\n\n initElements() {\n this.initElementsByLoop();\n this.isSquareAction = !!this.backToTopAction.dataset.square;\n }\n}\n\n//simple workaround to make typescript understand that these prop do exist.\ninterface BackToTop extends BaseService { }\n\n//Base injector requires object so it can intialized properly\n@BaseInjector(Selectors, Elements, ClassList, Texts)\nclass BackToTop {\n\n // a class to snap to\n snapElementSelector: string;\n\n // amount of pixels to show the button after\n showAfter: number;\n\n // needed if the snap element is not circular\n borderLength: number;\n\n constructor(protected readonly wrapper: HTMLElement) { }\n\n initialize(): void {\n if (this.elements.backToTopAction.dataset.snap) {\n this.snapElementSelector = this.elements.backToTopAction.dataset.snap;\n }\n this.elements.snapElement = querySelector(`.${this.snapElementSelector}`);\n if (this.elements.snapElement) {\n this.elements.snapElement.style.position = 'relative';\n }\n this.showAfter = Number(this.wrapper.dataset.showAfter);\n\n if (this.elements.isSquareAction) {\n this.borderLength = this.elements.backToTopRing.getTotalLength() + 5;\n this.elements.backToTopRing.setAttribute(\n \"stroke-dasharray\",\n `${this.borderLength}, ${this.borderLength}`\n );\n\n this.elements.backToTopRing.setAttribute(\n \"stroke-dashoffset\",\n String(this.borderLength)\n );\n }\n this.addEventListeners();\n }\n\n addEventListeners(): void {\n this.elements.backToTopAction.addEventListener('click', this.onClick.bind(this));\n $(window).on(\"scroll\", this.onScroll.bind(this))\n }\n\n onClick(event: Event): void {\n event.preventDefault();\n window.scrollTo({\n top: 0,\n behavior: 'smooth'\n });\n const firstFocusable: HTMLElement = document.body.querySelector(focusableElements)\n firstFocusable.focus();\n }\n\n onScroll(e: Event): void {\n const $thisWindow = $(e.currentTarget);\n const scrollTop = $thisWindow.scrollTop();\n\n if (scrollTop > this.showAfter) {\n this.wrapper.classList.add(this.classList.VISIBLE)\n } else if (scrollTop <= this.showAfter) {\n this.wrapper.classList.remove(this.classList.VISIBLE)\n }\n\n if (this.snapElementSelector) {\n if (this.isSnapElScrolledBy()) {\n this.wrapper.classList.add(this.classList.SNAPPED);\n } else {\n this.wrapper.classList.remove(this.classList.SNAPPED);\n }\n }\n const scroll = this.getScrollPercent()\n\n if (this.elements.isSquareAction) {\n const offsetToSet = (scroll / 100) * this.borderLength;\n this.elements.backToTopRing.setAttribute(\n \"stroke-dashoffset\", String(this.borderLength - offsetToSet)\n );\n } else {\n this.elements.backToTopRing.setAttribute('stroke-dasharray', `${this.getScrollPercent()}, 100`)\n }\n }\n\n /*\n * Determine if the scrolling has passed the snap element\n */\n isSnapElScrolledBy(): boolean {\n var snapEl = $(`.${this.snapElementSelector}`);\n var docViewBottom = $(window).scrollTop() + $(window).height();\n var backToTopPos = snapEl.offset().top + snapEl.height();\n return (backToTopPos <= docViewBottom);\n }\n\n getScrollPercent(): number {\n const h = document.documentElement;\n const b = document.body;\n const st = 'scrollTop';\n const sh = 'scrollHeight';\n return ((h[st] || b[st]) / ((h[sh] || b[sh]) - h.clientHeight)) * 100;\n }\n}\n\nexport default BackToTop;\n\n\nexport {\n Elements as BackToTopElements,\n Selectors as BackToTopSelectors,\n ClassList as BackToTopClassList,\n Texts as BackToTopTexts,\n}\n\n\n","import { BaseElements, BaseObject, BaseService, BaseInjector } from '../../js/base';\nimport { querySelector } from '../../utility/utils';\nimport { EmptyNodeList } from '../../utility/utils/index';\n\nclass Texts extends BaseObject {}\n\nclass ClassList extends BaseObject {\n\n}\n\nclass Selectors extends BaseObject {\n dialogCloseBtn = \".dialog-close\";\n openDialogBtnExample = \".openDialogBtnExample\"\n}\n\nclass Elements extends BaseElements {\n dialogCloseBtn: NodeListOf = new EmptyNodeList();\n openDialogBtnExample: HTMLButtonElement;\n\n constructor(selectors: Selectors) {\n super(selectors, false);\n }\n\n setWrapper(wrapper: HTMLElement) {\n this.wrapper = wrapper;\n this.initElements()\n }\n\n // Loop over all elements and init them\n initElements() {\n this.initElementsByLoop(this.wrapper);\n this.openDialogBtnExample = querySelector(this.selectors.openDialogBtnExample);\n }\n}\n\ninterface Dialog extends BaseService { }\n\n@BaseInjector(Selectors, Elements, ClassList, Texts)\nclass Dialog {\n focusables: Array = [];\n\n constructor(protected readonly wrapper: any) {}\n\n initialize(): void {\n this.elements.setWrapper(this.wrapper);\n this.addEventListeners(); \n }\n\n addEventListeners(): void {\n if(this.elements.openDialogBtnExample) {\n this.elements.openDialogBtnExample.addEventListener('click' , ()=> {\n this.showModalHandler(this.wrapper);\n })\n }\n\n // add close functionality to close button\n this.elements.dialogCloseBtn.forEach(button =>{\n button.addEventListener('click' , ()=> {\n this.closeModalHandler(this.wrapper);\n })\n })\n\n // Create Observer \n this.createObserver();\n\n this.onOpenHandler();\n\n this.wrapper.addEventListener('keydown', (event: any) => {\n this.focusTrapHandler(event);\n });\n }\n\n showModalHandler(wrapper : any) {\n wrapper.showModal();\n }\n\n closeModalHandler(wrapper : any) {\n wrapper.close();\n }\n\n createObserver() {\n const ObserverM = new MutationObserver( recs => {\n recs.forEach( ({attributeName: attr, target: dial }) => {\n let observedDialog = dial as any;\n if (attr === 'open' && observedDialog.open ) {\n observedDialog.onOpen();\n } // call onOpen Method... \n })\n });\n ObserverM.observe( this.wrapper , { attributes: true })\n }\n\n onOpenHandler() {\n this.wrapper.onOpen = () => {\n this.focusables = Array.from(this.wrapper.querySelectorAll(\n 'input, button, select, textarea, a[href]'\n ));\n this.elements.dialogCloseBtn[0]?.focus();\n }\n }\n\n focusTrapHandler(event: any) {\n // Trap the focus within the dialog when the Tab key is pressed\n if (event.key === 'Tab') {\n const firstFocusable = this.focusables[0];\n const lastFocusable = this.focusables[this.focusables.length - 1];\n \n if (event.shiftKey) {\n // Shift + Tab: Move focus to the previous element within the dialog\n if (document.activeElement === firstFocusable) {\n event.preventDefault();\n lastFocusable.focus();\n }\n } else {\n // Tab: Move focus to the next element within the dialog\n if (document.activeElement === lastFocusable) {\n event.preventDefault();\n firstFocusable.focus();\n }\n }\n }\n }\n}\n\nexport default Dialog;\n\nexport {\n Elements as DialogElements,\n Selectors as DialogSelectors,\n ClassList as DialogClassList,\n Texts as DialogTexts\n}","import { BaseElements, BaseObject, BaseService, BaseInjector } from '../../../js/base';\nimport { EmptyNodeList } from '../../../utility/utils/index';\n\nclass Texts extends BaseObject {\n emailsDontMatch = 'Passwords don\\'t match.';\n}\n\nclass ClassList extends BaseObject {\n displayNone = 'd-none';\n displayFlex = 'd-flex';\n isValid = 'is-valid';\n isInvalid = 'is-invalid';\n}\n\nclass Selectors extends BaseObject {\n form = 'form';\n passwordInput = '[type=\"password\"]';\n}\n\nclass Elements extends BaseElements {\n passwordInputs: NodeListOf = new EmptyNodeList();\n wrapper: HTMLElement\n\n constructor(selectors: Selectors) {\n super(selectors, false);\n }\n\n setWrapper(wrapper: HTMLElement) {\n this.wrapper = wrapper;\n this.initElements();\n }\n\n initElements() {\n this.passwordInputs = this.wrapper.querySelectorAll(this.selectors.passwordInput);\n }\n}\n\ninterface PasswordEqualityValidation extends BaseService { }\n\n@BaseInjector(Selectors, Elements, ClassList, Texts)\nclass PasswordEqualityValidation {\n invalid = {\n passwords: false,\n passwordFormat: false\n }\n\n constructor(readonly wrapper: HTMLElement) { }\n\n initialize(): void {\n this.elements.setWrapper(this.wrapper);\n this.addEventListeners();\n }\n\n addEventListeners(): void {\n }\n\n checkPasswordEquality() {\n const passwordInputsArray = this.base.convertToArray(this.elements.passwordInputs);\n const isFilled = passwordInputsArray.reduce((result, item) => !!item.value && result, true);\n const isEqual = !!passwordInputsArray.reduce((result, item) => item.value === result.value ? result : null);\n this.invalid.passwords = false;\n if (passwordInputsArray.length > 1) {\n if (isFilled) {\n passwordInputsArray[1].classList.remove(this.classList.isInvalid);\n this.destroyTooltip(passwordInputsArray[1]);\n this.invalid.passwords = false;\n\n if (!isEqual) {\n passwordInputsArray[1].classList.add(this.classList.isInvalid);\n this.setTooltip(passwordInputsArray[1], this.texts.emailsDontMatch);\n this.invalid.passwords = true;\n }\n }\n }\n\n return !this.invalid.passwords;\n }\n\n setTooltip(el, text) {\n el.dataset.toggle = 'tooltip';\n el.setAttribute('title', text);\n $(el).tooltip()\n }\n\n destroyTooltip(el) {\n el.setAttribute('title', '');\n $(el).tooltip('dispose')\n }\n\n}\n\nexport default PasswordEqualityValidation;\n\nexport {\n Elements as PasswordEqualityValidationElements,\n Selectors as PasswordEqualityValidationSelectors,\n ClassList as PasswordEqualityValidationClassList,\n Texts as PasswordEqualityValidationTexts\n}","import { BaseElements, BaseObject, BaseService, BaseInjector } from '../../../js/base';\nimport { EmptyNodeList, querySelectorAll } from '../../../utility/utils/index';\n\nconst PASSWORD_REGEXP = '^(?=.*[a-z])(?=.*[A-Z])(?=.*\\\\d)(?=.*[.*&^%@!]).{10,}$';\n\nclass Texts extends BaseObject {\n passwordWrongFormat = 'A password must contain an uppercase letter, a number and a special character (., *, &, ^, %, @, !) and must be at least 10 chars long';\n}\n\nclass ClassList extends BaseObject {\n displayNone = 'd-none';\n displayFlex = 'd-flex';\n isValid = 'is-valid';\n isInvalid = 'is-invalid';\n}\n\nclass Selectors extends BaseObject {\n form = 'form';\n passwordInputFormatValidate = '.js-format-validate';\n}\n\nclass Elements extends BaseElements {\n passwordInputs: NodeListOf = new EmptyNodeList();\n constructor(selectors: Selectors) {\n super(selectors, true);\n }\n\n initElements() {\n this.passwordInputs = querySelectorAll(this.selectors.passwordInputFormatValidate);\n }\n}\n\ninterface PasswordFormatValidation extends BaseService { }\n\n@BaseInjector(Selectors, Elements, ClassList, Texts)\nclass PasswordFormatValidation {\n\n invalid = {\n passwordFormat: false\n }\n\n initialize(): void {\n if (!this.elements.passwordInputs) { return }\n this.addEventListeners();\n }\n\n addEventListeners(): void {\n\n this.elements.passwordInputs.forEach(passwordInput => {\n passwordInput.addEventListener('change', this.onChangePassword.bind(this));\n });\n }\n\n onChangePassword() {\n this.checkPasswordFormat();\n }\n\n checkPasswordFormat() {\n const password = this.elements.passwordInputs[0].value;\n if (!!password) {\n let regexp = new RegExp(PASSWORD_REGEXP, 'gm');\n this.elements.passwordInputs[0].classList.remove(this.classList.isInvalid);\n this.destroyTooltip(this.elements.passwordInputs[0]);\n this.invalid.passwordFormat = false;\n\n if (!regexp.test(password)) {\n this.elements.passwordInputs[0].classList.add(this.classList.isInvalid);\n this.setTooltip(this.elements.passwordInputs[0], this.texts.passwordWrongFormat);\n this.invalid.passwordFormat = true;\n }\n\n return !this.invalid.passwordFormat;\n }\n }\n\n setTooltip(el, text) {\n el.dataset.toggle = 'tooltip';\n el.setAttribute('title', text);\n $(el).tooltip()\n }\n\n destroyTooltip(el) {\n el.setAttribute('title', '');\n $(el).tooltip('dispose')\n }\n\n}\n\nexport default PasswordFormatValidation;\n\nexport {\n Elements as PasswordFormatValidationElements,\n Selectors as PasswordFormatValidationSelectors,\n ClassList as PasswordFormatValidationClassList,\n Texts as PasswordFormatValidationTexts\n}","import { BaseElements, BaseObject, BaseService, BaseInjector } from '../../../js/base';\nimport PasswordEqualityValidation from './password-equality-validation';\nimport PasswordFormatValidation from './password-format-validation';\nimport { querySelector } from '../../../utility/utils/index';\n\nclass Texts extends BaseObject { }\n\nclass ClassList extends BaseObject { }\n\nclass Selectors extends BaseObject {\n form = '.registration-form';\n passwordInput = '[type=\"password\"]';\n}\n\nclass Elements extends BaseElements {\n form: HTMLFormElement;\n passwordInputs: NodeListOf;\n\n constructor(selectors: Selectors) {\n super(selectors, true);\n }\n\n initElements() {\n this.form = querySelector(this.selectors.form);\n if (this.form) {\n this.passwordInputs = this.form.querySelectorAll(this.selectors.passwordInput)\n }\n }\n}\n\ninterface Registration extends BaseService { }\n\n@BaseInjector(Selectors, Elements, ClassList, Texts)\nclass Registration {\n passwordFormatValidation: PasswordFormatValidation;\n passwordEqualityValidation: PasswordEqualityValidation;\n\n invalid = {\n passwords: false,\n passwordFormat: false\n }\n\n initialize(): void {\n if(!this.elements.form){\n return\n }\n this.initPasswordFormatValidation();\n this.initPasswordEqualityValidation();\n this.addEventListeners();\n }\n\n initPasswordFormatValidation() {\n this.passwordFormatValidation = new PasswordFormatValidation();\n }\n\n initPasswordEqualityValidation() {\n this.passwordEqualityValidation = new PasswordEqualityValidation(this.elements.form);\n }\n\n addEventListeners(): void {\n this.elements.form.addEventListener('submit', this.onSubmit.bind(this));\n this.elements.passwordInputs.forEach( passwordInput => {\n passwordInput.addEventListener('change', this.onChangePassword.bind(this));\n });\n }\n\n onSubmit(event: Event) {\n event.preventDefault();\n if (this.checkPasswords() && this.checkPasswordFormat()) {\n this.addData('submitBtn', 'submitBtn');\n this.elements.form.submit();\n } else {\n this.elements.form.scrollIntoView();\n }\n }\n\n onChangePassword() {\n this.checkPasswords();\n }\n\n checkPasswordFormat() {\n return this.passwordFormatValidation.checkPasswordFormat();\n }\n\n checkPasswords() {\n return this.passwordEqualityValidation.checkPasswordEquality();\n }\n\n //TODO: make it shareable - move it to utilities?\n addData(name: string, value = '') {\n let el = document.querySelector('[name=\"' + name + '\"]');\n if (el) {\n value = el.getAttribute('value');\n el.removeAttribute('name');\n }\n let input = document.createElement('input');\n input.setAttribute('name', name);\n input.setAttribute('value', value);\n input.setAttribute('type', 'hidden');\n this.elements.form.appendChild(input);\n }\n\n //TODO: make it shareable - move it to utilities?\n setTooltip(el, text) {\n el.dataset.toggle = 'tooltip';\n el.setAttribute('title', text);\n $(el).tooltip()\n }\n //TODO: make it shareable - move it to utilities?\n destroyTooltip(el) {\n el.setAttribute('title', '');\n $(el).tooltip('dispose')\n }\n\n}\n\nexport default Registration;\n\nexport {\n Elements as RegistrationElements,\n Selectors as RegistrationSelectors,\n ClassList as RegistrationClassList,\n Texts as RegistrationTexts\n}","import { BaseElements, BaseObject, BaseService, BaseInjector } from '../../../js/base';\nimport { querySelector } from '../../../utility/utils/index';\nimport PasswordFormatValidation from './password-format-validation';\n\nclass Texts extends BaseObject { }\n\nclass ClassList extends BaseObject {\n displayNone = 'd-none'\n}\n\nclass Selectors extends BaseObject {\n form = '.change-password-form';\n modal = '.modal';\n content = '.modal-body';\n alertDanger = '.alert-danger';\n alertSuccess = '.alert-success';\n}\n\nclass Elements extends BaseElements {\n form: HTMLElement;\n modal: HTMLElement;\n alertSuccess: HTMLElement;\n alertDanger: HTMLElement;\n constructor(selectors: Selectors) {\n super(selectors, true);\n }\n\n initElements() {\n this.form = querySelector(this.selectors.form);\n if (this.form) {\n this.modal = this.form.closest(this.selectors.modal);\n this.alertSuccess = querySelector(this.selectors.alertSuccess, this.modal);\n this.alertDanger = querySelector(this.selectors.alertDanger, this.modal);\n }\n }\n}\n\ninterface ChangePassword extends BaseService { }\n\n@BaseInjector(Selectors, Elements, ClassList, Texts)\nclass ChangePassword {\n passwordFormatValidation: PasswordFormatValidation;\n initialize(): void {\n if (!this.elements.form) {\n return;\n }\n const { displayNone } = this.classList\n this.elements.form.classList.remove(displayNone);\n this.elements.alertSuccess.classList.add(displayNone);\n this.elements.alertDanger.classList.add(displayNone);\n this.elements.alertDanger.innerHTML = '';\n this.addEventListeners();\n }\n\n initPasswordValidation() {\n this.passwordFormatValidation = new PasswordFormatValidation();\n }\n\n addEventListeners(): void {\n this.elements.form.addEventListener('submit', this.onSubmit.bind(this));\n }\n\n onSubmit(event) {\n event.preventDefault();\n if (this.checkPasswordFormat()) {\n this.addData('submitBtn', 'submitBtn');\n const { displayNone } = this.classList\n let url = this.elements.form.getAttribute('action');\n let data = $(this.elements.form).serializeArray();\n\n data.push({ name: 'ajaxRequest', value: 'true' });\n $.ajax({\n context: this,\n method: 'post',\n url: url,\n data: data,\n xhrFields: { withCredentials: true }\n })\n .done(function (data, status, jqXHR) {\n if (data.result) {\n this.elements.form.classList.remove(displayNone);\n this.alertSuccess.classList.add(displayNone);\n this.alertDanger.classList.remove(displayNone);\n this.alertDanger.innerHTML = data.message;\n } else {\n this.elements.form.classList.add(displayNone);\n this.alertSuccess.classList.remove(displayNone);\n }\n })\n .fail(function (jqXHR, status, err) {\n this.elements.form.classList.remove(displayNone);\n this.alertSuccess.classList.add(displayNone);\n this.alertDanger.classList.remove(displayNone);\n this.alertDanger.innerHTML = 'Unknown error';\n }).\n always(function () {\n\n });\n\n } else {\n this.elements.form.scrollIntoView();\n }\n }\n\n checkPasswordFormat() {\n return this.passwordFormatValidation.checkPasswordFormat();\n }\n\n //TODO: make this method shareable - move it to utils?\n addData(name: string, value: string = '') {\n let el = document.querySelector('[name=\"' + name + '\"]');\n if (el) {\n value = el.getAttribute('value');\n el.removeAttribute('name');\n }\n let input = document.createElement('input');\n input.setAttribute('name', name);\n input.setAttribute('value', value);\n input.setAttribute('type', 'hidden');\n this.elements.form.appendChild(input);\n }\n\n}\n\nexport default ChangePassword;\n\nexport {\n Elements as ChangePasswordElements,\n Selectors as ChangePasswordSelectors,\n ClassList as ChangePasswordClassList,\n Texts as ChangePasswordTexts\n}\n","import { BaseElements, BaseObject, BaseService, BaseInjector } from '../../../js/base';\nimport { EmptyNodeList, querySelectorAll, querySelector } from '../../../utility/utils/index';\n\nclass Texts extends BaseObject { }\n\nclass ClassList extends BaseObject {\n displayNone = 'd-none';\n displayFlex = 'd-flex';\n iconEye = 'icon-eye';\n iconEyeOff = 'icon-eye-off';\n}\n\nclass Selectors extends BaseObject {\n input = 'input';\n passwordInput = '[type=\"password\"]';\n eyeElement = '[class^=\"icon-eye\"], [class*=\" icon-eye\"]';\n}\n\n\nclass Elements extends BaseElements {\n passwordInputs: NodeListOf = new EmptyNodeList;\n\n constructor(selectors: Selectors) {\n super(selectors, true);\n }\n\n initElements() {\n this.passwordInputs = querySelectorAll(this.selectors.passwordInput);\n }\n}\n\ninterface ShowPassword extends BaseService { }\n\n@BaseInjector(Selectors, Elements, ClassList, Texts)\nclass ShowPassword {\n\n initialize(): void {\n if (!this.elements.passwordInputs.length) {\n return;\n }\n this.addEventListeners();\n }\n\n addEventListeners(): void {\n this.elements.passwordInputs.forEach(passwordInput => {\n passwordInput.addEventListener('input', this.onChangePassword.bind(this));\n const eye = querySelector(this.selectors.eyeElement, passwordInput.parentElement);\n if (eye) {\n eye.addEventListener('click', this.onEyeClick.bind(this));\n }\n });\n }\n\n onChangePassword(event) {\n const _this = event.target; // input field\n querySelector(this.selectors.eyeElement, _this.parentElement)?.classList.toggle(this.classList.displayNone, !_this.value);\n }\n onEyeClick(event) {\n const _this = event.target; // icon eye\n const input = querySelector(this.selectors.input, _this.parentElement);\n _this.classList.toggle(this.classList.iconEye);\n _this.classList.toggle(this.classList.iconEyeOff);\n input.setAttribute('type', 'password');\n if (_this.classList.contains(this.classList.iconEyeOff)) {\n input.setAttribute('type', 'text');\n }\n }\n\n}\n\nexport default ShowPassword;\n\nexport {\n Elements as ShowPasswordElements,\n Selectors as ShowPasswordSelectors,\n ClassList as ShowPasswordClassList,\n Texts as ShowPasswordTexts\n}","import { BaseElements, BaseObject, BaseService, BaseInjector } from '../../../js/base';\nimport PasswordFormatValidation from './password-format-validation';\nimport PasswordEqualityValidation from './password-equality-validation';\nimport { querySelector } from '../../../utility/utils/index';\n\nclass Texts extends BaseObject { }\n\nclass ClassList extends BaseObject {\n displayNone = 'd-none'\n\n}\n\nclass Selectors extends BaseObject {\n form = '.reset-password-form';\n alertDanger = '.alert-danger';\n alertSuccess = '.alert-success';\n gRecaptcha = '.g-recaptcha';\n}\n\nclass Elements extends BaseElements {\n alertSuccess: HTMLElement;\n alertDanger: HTMLElement;\n recaptcha: HTMLElement;\n form: HTMLElement;\n\n constructor(selectors: Selectors) {\n super(selectors, true);\n }\n\n initElements() {\n this.form = querySelector(this.selectors.form);\n this.alertSuccess = querySelector(this.selectors.alertSuccess, this.form);\n this.alertDanger = querySelector(this.selectors.alertDanger, this.form);\n this.recaptcha = querySelector(this.selectors.gRecaptcha);\n }\n}\n\ninterface ResetPassword extends BaseService { }\n\n@BaseInjector(Selectors, Elements, ClassList, Texts)\nclass ResetPassword {\n passwordFormatValidation: PasswordFormatValidation;\n passwordEqualityValidation: PasswordEqualityValidation;\n\n initialize(): void {\n if (!this.elements.form) {\n return;\n }\n this.initPasswordFormatValidation();\n this.initPasswordEqualityValidation();\n this.elements.form.classList.remove(this.classList.displayNone);\n if (this.elements.alertSuccess) {\n this.elements.alertSuccess.classList.add(this.classList.displayNone);\n }\n if (this.elements.alertDanger) {\n this.elements.alertDanger.classList.add(this.classList.displayNone);\n this.elements.alertDanger.innerHTML = '';\n }\n\n this.addEventListeners();\n }\n\n initPasswordFormatValidation() {\n this.passwordFormatValidation = new PasswordFormatValidation();\n }\n\n initPasswordEqualityValidation() {\n this.passwordEqualityValidation = new PasswordEqualityValidation(this.elements.form);\n }\n\n addEventListeners(): void {\n this.elements.form.addEventListener('submit', this.onSubmit.bind(this));\n }\n\n onSubmit(event:Event) {\n event.preventDefault();\n if (this.checkPasswordEquality() && this.checkPasswordFormat()) {\n this.addData('submitBtn', 'submitBtn');\n\n let url = this.elements.form.getAttribute('action');\n let data = $(this.elements.form).serializeArray();\n\n data.push({ name: 'ajaxRequest', value: 'true' });\n $.ajax({\n context: this,\n method: 'post',\n url: url,\n data: data,\n xhrFields: { withCredentials: true }\n })\n .done(function (data, status, jqXHR) {\n if (data.result) {\n this.elements.form.classList.remove(this._classList.DISPLAY_NONE);\n if (this.alertSuccess) this.alertSuccess.classList.add(this._classList.DISPLAY_NONE);\n if (this.alertDanger) {\n this.alertDanger.classList.remove(this._classList.DISPLAY_NONE);\n this.alertDanger.innerHTML = data.message;\n }\n } else {\n this.elements.form.classList.add(this._classList.DISPLAY_NONE);\n this.alertSuccess.classList.remove(this._classList.DISPLAY_NONE);\n }\n })\n .fail(function (jqXHR, status, err) {\n\n this.elements.form.classList.remove(this._classList.DISPLAY_NONE);\n if (this.alertSuccess) this.alertSuccess.classList.add(this._classList.DISPLAY_NONE);\n if (this.alertDanger) {\n this.alertDanger.classList.remove(this._classList.DISPLAY_NONE);\n this.alertDanger.innerHTML = 'Unknown error';\n }\n }).\n always(function () {\n\n });\n\n } else {\n this.elements.form.scrollIntoView();\n }\n }\n\n checkPasswordFormat() {\n return this.passwordFormatValidation.checkPasswordFormat();\n }\n\n checkPasswordEquality() {\n return this.passwordEqualityValidation.checkPasswordEquality();\n }\n\n //TODO: make this method shareable - move it to utils?\n addData(name, value = '') {\n let el = document.querySelector('[name=\"' + name + '\"]');\n if (el) {\n value = el.getAttribute('value');\n el.removeAttribute('name');\n }\n let input = document.createElement('input');\n input.setAttribute('name', name);\n input.setAttribute('value', value);\n input.setAttribute('type', 'hidden');\n this.elements.form.appendChild(input);\n }\n\n}\n\nexport default ResetPassword;\n\nexport {\n Elements as ResetPasswordElements,\n Selectors as ResetPasswordSelectors,\n ClassList as ResetPasswordClassList,\n Texts as ResetPasswordTexts\n}","import './js/username-request';\nimport './js/verify-phone';\n// import './js/change-password';\n// import './js/reset-password';\n\nimport Registration from './js/registration';\nimport ChangePassword from './js/change-password';\nimport ShowPassword from './js/show-password';\nimport ResetPassword from './js/reset-password';\n\nnew Registration().initialize();\nnew ChangePassword().initialize();\nnew ShowPassword().initialize();\nnew ResetPassword().initialize();\n","\n import '/mnt/ssd/na101/home/literatum/sourcegit/ui-products-branches/maint-250204-c9c27144/ui-products/wk/aan/utility/imports/imports';\n\nimport PopNotification from '/mnt/ssd/na101/home/literatum/sourcegit/ui-products-branches/maint-250204-c9c27144/ui-products/wk/aan/node_modules/ui-theme/plugins/pop-notification/index';\nimport '/mnt/ssd/na101/home/literatum/sourcegit/ui-products-branches/maint-250204-c9c27144/ui-products/wk/aan/node_modules/ui-theme/plugins/product/index';\n\nimport BackToTop from '/mnt/ssd/na101/home/literatum/sourcegit/ui-products-branches/maint-250204-c9c27144/ui-products/wk/aan/node_modules/ui-theme/components/back-to-top/index';\nimport Dialog from '/mnt/ssd/na101/home/literatum/sourcegit/ui-products-branches/maint-250204-c9c27144/ui-products/wk/aan/node_modules/ui-theme/components/dialog/index';\nimport '/mnt/ssd/na101/home/literatum/sourcegit/ui-products-branches/maint-250204-c9c27144/ui-products/wk/aan/node_modules/ui-theme/widgets/raa/index';\n\nconst main = (UX) => {\n const $popNotification = Array.prototype.slice.call(document.getElementsByClassName('pop-notification')),\n $backToTop = document.querySelector('.back-to-top'),\n $dialog = Array.prototype.slice.call(document.querySelectorAll('dialog'))\n\ntry {\n if ($popNotification.length ) {\n UX.popNotification = $popNotification\n .map(item=>new PopNotification(item).initialize())\n }\n } catch (err) {\n console.error(err);\n }\n \ntry {\n if ($backToTop ) {\n UX.backToTop = new BackToTop($backToTop).initialize()\n }\n } catch (err) {\n console.error(err);\n }\n \ntry {\n if ($dialog.length ) {\n UX.dialog = $dialog\n .map(item=>new Dialog(item).initialize())\n }\n } catch (err) {\n console.error(err);\n }\n \n}\n\n export default main;\n ","import { BaseElements, BaseObject, BaseService, BaseInjector } from '../../js/base';\nimport { querySelectorAll } from \"../../utility/utils\";\nimport { EmptyNodeList } from '../../utility/utils/index';\nimport { focusableElements as focusableElementsSelector } from '../../utility/utils';\nimport { throttle } from 'lodash'\n\ninterface PopNotificationConstants {\n TIMER: number;\n FOOTER_OFFSET: number;\n TRANSITION: number;\n FLOAT_EL_OFFSET: number;\n}\n\nclass Texts extends BaseObject { }\n\nclass ClassList extends BaseObject {\n show = 'show';\n relatedContent = 'related-content';\n popupFloatAfter = 'pop-after-passed';\n popupFloatAfterPassed = 'js-sticky';\n popupFloatAfterPlaceholder = 'js-intersection-placeholder';\n transitioned = 'js-transitioned';\n}\n\nclass Selectors extends BaseObject {\n closeBtn = '.pop-notification__close';\n footer = '.footer';\n}\n\nclass Elements extends BaseElements {\n wrapper: HTMLElement;\n popupFloatAfterPlaceholder: HTMLElement;\n closeBtn: NodeListOf = new EmptyNodeList();\n\n constructor(selectors: Selectors) {\n super(selectors, true);\n }\n\n setWrapper(wrapper: HTMLElement) {\n this.wrapper = wrapper;\n this.initElements()\n }\n\n initElements() {\n this.closeBtn = querySelectorAll(this.selectors.closeBtn, this.wrapper);\n }\n}\n\ninterface PopNotification extends BaseService { }\n\n@BaseInjector(Selectors, Elements, ClassList, Texts)\nclass PopNotification {\n protected _popupFloatAfter: boolean;\n protected _constants: PopNotificationConstants;\n protected _visibility: number;\n protected _focusableElements: NodeListOf;\n private _checkVisibilityEvent: (Event) => void;\n private _checkElPassedScrollEvent: (Event) => void;\n\n constructor(readonly wrapper: HTMLElement) { }\n\n get constants() {\n return {\n TIMER: 200,\n FOOTER_OFFSET: 200,\n TRANSITION: 250,\n FLOAT_EL_OFFSET: 200\n };\n }\n\n set visibility(value: string) {\n if (value && value.indexOf('%') > -1) {\n this._visibility = parseFloat(value) / 100.0;\n } else {\n this._visibility = 0;\n }\n }\n\n initialize(): void {\n this.elements.setWrapper(this.wrapper);\n this._constants = this.constants;\n this._popupFloatAfter = this.wrapper.classList.contains(this.classList.popupFloatAfter);\n this.visibility = this.wrapper.dataset.visibleAfter;\n this._focusableElements = querySelectorAll(focusableElementsSelector, this.wrapper);\n\n if (this._popupFloatAfter) {\n this.setPopupFloatAfterPlaceholder();\n this.checkElPassedScroll();\n }\n this.checkVisibility();\n this.checkA11y();\n this.addEventListeners();\n }\n\n addEventListeners(): void {\n this.elements.closeBtn.forEach(item => {\n item.addEventListener('click', this.onClick.bind(this));\n });\n if (this._visibility) {\n this._checkVisibilityEvent = this.checkVisibility.bind(this);\n window.addEventListener('scroll', this._checkVisibilityEvent);\n }\n\n if (this._popupFloatAfter) {\n this._checkElPassedScrollEvent = this.checkElPassedScroll.bind(this);\n window.addEventListener('scroll', this._checkElPassedScrollEvent);\n }\n\n if (this._visibility || this._popupFloatAfter) {\n window.addEventListener('scroll', throttle(() => {\n this.checkA11y();\n }, 50));\n }\n }\n\n\n setVisibility(visible: boolean): void {\n const { show } = this.classList;\n if (visible) {\n this.wrapper.classList.add(show);\n } else {\n this.wrapper.classList.remove(show);\n }\n }\n\n\n checkVisibility(): void {\n const pageHeight = document.body.getBoundingClientRect().height;\n const destinationHeight = pageHeight * this._visibility;\n const scroll = window.pageYOffset;\n const footerRect = document.querySelector(this.selectors.footer)?.getBoundingClientRect();\n const footerDist = footerRect?.height - footerRect?.top + this._constants.FOOTER_OFFSET || -1;\n this.setVisibility(scroll > destinationHeight && footerDist < 0);\n }\n\n checkElPassedScroll(): void {\n const scroll = window.scrollY;\n const elOffset =\n this.elements.popupFloatAfterPlaceholder.offsetTop +\n this.elements.popupFloatAfterPlaceholder.offsetHeight +\n this._constants.FLOAT_EL_OFFSET;\n this.setFloat(scroll > elOffset);\n }\n\n checkA11y(): void {\n const { show: showFloated, popupFloatAfterPassed } = this.classList;\n const shouldShow = this._popupFloatAfter\n ? this.wrapper.classList.contains(showFloated) || !this.wrapper.classList.contains(popupFloatAfterPassed)\n : this.wrapper.classList.contains(showFloated);\n\n this.setA11yState(shouldShow ? 'show' : 'hide');\n }\n\n setFloat(passed: boolean): void {\n if (passed) {\n this.wrapper.classList.add(this.classList.popupFloatAfterPassed);\n setTimeout(() => this.wrapper.classList.add(this.classList.transitioned), this._constants.TRANSITION);\n\n } else {\n this.wrapper.classList.remove(this.classList.popupFloatAfterPassed);\n this.wrapper.classList.remove(this.classList.transitioned);\n }\n }\n\n setA11yState(state: 'hide' | 'show'): void {\n this.wrapper.setAttribute('aria-hidden', state === 'hide' ? 'true' : 'false');\n this._focusableElements?.forEach(el => {\n state === 'hide' ? el.setAttribute('tabindex', '-1') : el.removeAttribute('tabindex');\n })\n }\n\n onClick(e: Event): void {\n e.preventDefault();\n this.wrapper.classList.remove('show');\n if (this._popupFloatAfter) {\n window.removeEventListener('scroll', this._checkVisibilityEvent);\n window.removeEventListener('scroll', this._checkElPassedScrollEvent);\n this.wrapper.classList.remove(this.classList.popupFloatAfterPassed);\n this.wrapper.classList.remove(this.classList.transitioned);\n return;\n }\n setTimeout(() => {\n this.wrapper.remove();\n }, this._constants.TIMER);\n }\n\n /**\n * Set a dummy placeholder for the popup to measure the actual position of the element scroll intersection on\n */\n setPopupFloatAfterPlaceholder(): void {\n const popupPlaceholder = document.createElement('div');\n popupPlaceholder.classList.add(this.classList.popupFloatAfterPlaceholder);\n const popupFloatAfterDummyId = `pop-after-passed-placeholder-${Math.floor(Math.random() * 10000)}`;\n popupPlaceholder.setAttribute('id', popupFloatAfterDummyId);\n this.wrapper.insertAdjacentElement('afterend', popupPlaceholder);\n this.elements.popupFloatAfterPlaceholder = document.getElementById(popupFloatAfterDummyId);\n }\n\n\n\n}\n\nexport default PopNotification;\n\nexport {\n PopNotificationConstants,\n Elements as PopNotificationElements,\n Selectors as PopNotificationSelectors,\n ClassList as PopNotificationClassList,\n Texts as PopNotificationTexts\n}","export default function scrollToTarget() {\n $('body').on('click keydown', '.scroll-to-target', function (e) {\n e.preventDefault();\n const target = $(e.currentTarget.hash);\n if (target.length) {\n $('html, body').animate({\n scrollTop: $(target).offset().top\n }, 300, function () {\n return window.history.pushState(null, null, e.currentTarget.hash);\n });\n }\n })\n}\n","import { querySelectorAll } from \"../utils\";\n\nconst customFileHandler = () => {\n querySelectorAll('.custom-file-input').forEach(input => {\n input.addEventListener('change', (e: Event) => {\n const currentTarget = e.currentTarget as HTMLInputElement\n const target = e.target as HTMLInputElement\n const fileName = currentTarget.files[0].name;\n const nextSibling = target.nextElementSibling as HTMLElement;\n nextSibling.innerText = fileName;\n });\n });\n}\n\nexport default customFileHandler;\n","// add a class .collapse-lock-screen for the toggled element to make it lock the screen using bootstraps\n// collapse\nconst LOCK = 'modal-open';\nconst REQUIRES_LOCK = 'collapse-lock-screen';\n\nconst lockScreenOnToggle = () => {\n $(document).on('show.bs.collapse hidden.bs.collapse', e => {\n if (e.target instanceof HTMLElement && e.target.classList.contains(REQUIRES_LOCK) && e.type === 'show') {\n document.body.classList.add(LOCK);\n } else {\n document.body.classList.remove(LOCK);\n }\n });\n}\n\nexport default lockScreenOnToggle;\n","const links = [].slice.call(document.querySelectorAll('link'));\nconst resourcePath = links.map(node => node.href).filter(href => href.indexOf('releasedAssets') > -1)[0];\nconst releasedAssetsPath = resourcePath && `${resourcePath.split('releasedAssets')[0]}releasedAssets/`;\n__webpack_public_path__ = releasedAssetsPath;\n","$(function () {\n let $modals = $('.modal');\n let $modal = $('#modal--requestUsername');\n let $content = $modal.find('.modal-body');\n let $form = $modal.find('form');\n let $original = $form;\n\n // let $email = $form.find('.email');\n\n let $success = $content.find('.alert-success');\n let $alert = $content.find('.alert-error');\n let $recaptcha = $content.find('.g-recaptcha');\n let id;\n\n $('.show-request-username').click(function (event) {\n event.preventDefault();\n $modals.modal('hide');\n $modal.modal('show');\n $success.addClass('d-none');\n $original.removeClass('d-none');\n\n if ($recaptcha.length && typeof grecaptcha !== 'undefined') {\n if (typeof id !== 'undefined') {\n grecaptcha.reset(id);\n } else {\n id = grecaptcha.render($recaptcha[0], $recaptcha.data());\n }\n } else if ($content.find('.LBD_CaptchaDiv').length) {\n $content.find('.LBD_CaptchaDiv').find('.LBD_ReloadLink').trigger('click');\n }\n });\n\n $modal.on('hide.bs.modal', function (event) {\n $alert.addClass('d-none').html('');\n });\n\n $form.submit(function (event) {\n event.preventDefault();\n\n const url = $form.attr('action');\n let data = $form.serializeArray();\n\n data.push({name: 'ajaxRequest', value: true});\n $.ajax({method: 'post', url: url, data: data, xhrFields: {withCredentials: true}})\n .then(function (data) {\n if (data.result) {\n $original.removeClass('d-none');\n $success.addClass('d-none');\n $alert.removeClass('d-none').html(data.message);\n if ($recaptcha.length && typeof grecaptcha !== 'undefined') {\n if (typeof id !== 'undefined') {\n grecaptcha.reset(id);\n } else {\n id = grecaptcha.render($recaptcha[0], $recaptcha.data());\n }\n } else if ($content.find('.LBD_CaptchaDiv').length) {\n $content.find('.LBD_CaptchaDiv').find('.LBD_ReloadLink').trigger('click');\n }\n } else {\n $original.addClass('d-none');\n $success.removeClass('d-none');\n }\n })\n .fail(function () {\n $original.removeClass('d-none');\n $success.addClass('d-none');\n $alert.removeClass('d-none').html('Unknown error');\n });\n });\n});\n","$(function () {\n let $modal = $('#modal--verifyPhone');\n let $content = $modal.find('.modal-body');\n let $form = $modal.find('form');\n let $alert = $form.find('.alert-danger');\n let $original = $form;\n let $success = $content.find('.alert-success');\n\n $('.show-verify-phone').click(function (event) {\n const $link = $(this);\n const link = $link.attr('href');\n $.ajax(link).then(function (data) {\n if (data.result) {\n $original.removeClass('d-none');\n $success.addClass('d-none');\n $alert.removeClass('d-none').html(data.message);\n } else {\n $modal.modal('show');\n $success.addClass('d-none');\n $original.removeClass('d-none');\n $content.slideDown('fast');\n }\n });\n event.preventDefault();\n });\n\n $modal.on('hide.bs.modal', function (event) {\n $alert.addClass('d-none').text('');\n });\n\n $form.submit(function (event) {\n event.preventDefault();\n\n const url = $form.attr('action');\n const data = $form.serializeArray();\n data.push({name: 'ajaxRequest', value: true});\n $.ajax({method: 'post', url: url, data: data, xhrFields: {withCredentials: true}})\n .then(function (data) {\n if (data.result) {\n $original.removeClass('d-none');\n $success.addClass('d-none');\n $alert.html(data.message);\n } else {\n $original.addClass('d-none');\n $success.removeClass('d-none');\n }\n })\n .fail(function () {\n $original.removeClass('d-none');\n $success.addClass('d-none');\n $alert.removeClass('d-none').html('Unknown error');\n });\n });\n});\n"],"sourceRoot":""}