{"version":3,"sources":["webpack://web-frontend/./core.css","webpack://web-frontend/./bulma.sass","webpack://web-frontend/./core.css?756d","webpack://web-frontend/./bulma.sass?8a13","webpack://web-frontend/./app.tsx","webpack://web-frontend/./components/banner.tsx","webpack://web-frontend/./components/bannerBackgroundImage.tsx","webpack://web-frontend/./components/branchLoginForm.tsx","webpack://web-frontend/./components/disclosureModal.tsx","webpack://web-frontend/./components/footer.tsx","webpack://web-frontend/./components/headerPane.tsx","webpack://web-frontend/./components/header/accountLink.tsx","webpack://web-frontend/./components/header/index.tsx","webpack://web-frontend/./components/header/option1.tsx","webpack://web-frontend/./components/header/option2.tsx","webpack://web-frontend/./components/header/option3.tsx","webpack://web-frontend/./components/header/unknownLink.tsx","webpack://web-frontend/./components/logo.tsx","webpack://web-frontend/./components/pdf.tsx","webpack://web-frontend/./components/searchField.tsx","webpack://web-frontend/./components/table.tsx","webpack://web-frontend/./index.tsx","webpack://web-frontend/./lib/config.ts","webpack://web-frontend/./lib/googleAnalytics.ts","webpack://web-frontend/./pages/account/create.tsx","webpack://web-frontend/./pages/account/loginOrRegister.tsx","webpack://web-frontend/./pages/landing/components/faqItem.tsx","webpack://web-frontend/./pages/landing/components/faqPane.tsx","webpack://web-frontend/./pages/landing/components/getStartedPane.tsx","webpack://web-frontend/./pages/landing/components/product.tsx","webpack://web-frontend/./pages/landing/components/productsPane.tsx","webpack://web-frontend/./pages/landing/components/testimonyItem.tsx","webpack://web-frontend/./pages/landing/components/testimonyPane.tsx","webpack://web-frontend/./pages/landing/landing.tsx","webpack://web-frontend/../web-shared/components/button.tsx","webpack://web-frontend/../web-shared/components/externalLink.tsx","webpack://web-frontend/../web-shared/components/highlightText.tsx","webpack://web-frontend/../web-shared/components/htmlString.tsx","webpack://web-frontend/../web-shared/components/icon.tsx","webpack://web-frontend/../web-shared/components/input.tsx","webpack://web-frontend/../web-shared/components/loadingBar.tsx","webpack://web-frontend/../web-shared/components/loadingMessage.tsx","webpack://web-frontend/../web-shared/components/masonry.tsx","webpack://web-frontend/../web-shared/components/modal.tsx","webpack://web-frontend/../web-shared/components/nonIdealState.tsx","webpack://web-frontend/../web-shared/components/pager.tsx","webpack://web-frontend/../web-shared/components/relativeTime.tsx","webpack://web-frontend/../web-shared/components/routing/link.tsx","webpack://web-frontend/../web-shared/components/routing/privateRoute.tsx","webpack://web-frontend/../web-shared/components/routing/publicRoute.tsx","webpack://web-frontend/../web-shared/components/scrollIntoView.tsx","webpack://web-frontend/../web-shared/components/section.tsx","webpack://web-frontend/../web-shared/components/sectionHeader.tsx","webpack://web-frontend/../web-shared/components/spinners/BarLoader.tsx","webpack://web-frontend/../web-shared/components/spinners/ClipLoader.tsx","webpack://web-frontend/../web-shared/components/spinners/Spinner.tsx","webpack://web-frontend/../web-shared/components/steps.tsx","webpack://web-frontend/../web-shared/components/tabs/index.tsx","webpack://web-frontend/../web-shared/components/tabs/managedTabs.tsx","webpack://web-frontend/../web-shared/components/tabs/tab.tsx","webpack://web-frontend/../web-shared/components/templateString.tsx","webpack://web-frontend/../web-shared/components/timeline.tsx","webpack://web-frontend/../web-shared/components/toggle.tsx","webpack://web-frontend/../web-shared/components/tooltip.tsx","webpack://web-frontend/../web-shared/components/uploadModal.tsx","webpack://web-frontend/../web-shared/components/withAddon.tsx","webpack://web-frontend/../web-shared/lib/ajax.ts","webpack://web-frontend/../web-shared/lib/auth.ts","webpack://web-frontend/../web-shared/lib/base64ToBlob.ts","webpack://web-frontend/../web-shared/lib/chunk.ts","webpack://web-frontend/../web-shared/lib/clamp.ts","webpack://web-frontend/../web-shared/lib/classNames.ts","webpack://web-frontend/../web-shared/lib/convert/hexToCssVars.ts","webpack://web-frontend/../web-shared/lib/convert/hexToRgb.ts","webpack://web-frontend/../web-shared/lib/dbg.ts","webpack://web-frontend/../web-shared/lib/deepCompare.ts","webpack://web-frontend/../web-shared/lib/format/index.ts","webpack://web-frontend/../web-shared/lib/googleAnalytics.ts","webpack://web-frontend/../web-shared/lib/guid.ts","webpack://web-frontend/../web-shared/lib/initialize.ts","webpack://web-frontend/../web-shared/lib/isDevelopment.ts","webpack://web-frontend/../web-shared/lib/isPoBox.ts","webpack://web-frontend/../web-shared/lib/isTin.ts","webpack://web-frontend/../web-shared/lib/objectKeysToLowerCase.ts","webpack://web-frontend/../web-shared/lib/renderComponent.ts","webpack://web-frontend/../web-shared/lib/rxStore.ts","webpack://web-frontend/../web-shared/lib/serializeFormData.ts","webpack://web-frontend/../web-shared/lib/shadeColor.ts","webpack://web-frontend/../web-shared/lib/signalr.ts","webpack://web-frontend/../web-shared/lib/sort.ts","webpack://web-frontend/../web-shared/lib/throttle.ts","webpack://web-frontend/../web-shared/lib/usStatesAndTerritories.ts","webpack://web-frontend/../web-shared/lib/useApi.ts","webpack://web-frontend/../web-shared/lib/useEffectDeep.ts","webpack://web-frontend/../web-shared/lib/useHeaderLinks.ts","webpack://web-frontend/../web-shared/lib/useInterval.ts","webpack://web-frontend/../web-shared/lib/useMedia.ts","webpack://web-frontend/../web-shared/lib/useWindowScroll.ts","webpack://web-frontend/../web-shared/lib/useWindowSize.ts","webpack://web-frontend/../web-shared/lib/validatePasswordComplexity.ts","webpack://web-frontend/../web-shared/pages/instructions.ts","webpack://web-frontend/../web-shared/pages/login.tsx","webpack://web-frontend/../web-shared/pages/logoff.tsx","webpack://web-frontend/../web-shared/pages/notFound.tsx","webpack://web-frontend/../web-shared/store/auth.ts","webpack://web-frontend/../web-shared/store/ui.ts","webpack://web-frontend/webpack/bootstrap","webpack://web-frontend/webpack/runtime/chunk loaded","webpack://web-frontend/webpack/runtime/create fake namespace object","webpack://web-frontend/webpack/runtime/load script","webpack://web-frontend/webpack/runtime/amd define","webpack://web-frontend/webpack/runtime/amd options","webpack://web-frontend/webpack/runtime/compat get default export","webpack://web-frontend/webpack/runtime/define property getters","webpack://web-frontend/webpack/runtime/ensure chunk","webpack://web-frontend/webpack/runtime/get javascript chunk filename","webpack://web-frontend/webpack/runtime/global","webpack://web-frontend/webpack/runtime/harmony module decorator","webpack://web-frontend/webpack/runtime/hasOwnProperty shorthand","webpack://web-frontend/webpack/runtime/make namespace object","webpack://web-frontend/webpack/runtime/node module decorator","webpack://web-frontend/webpack/runtime/publicPath","webpack://web-frontend/webpack/runtime/jsonp chunk loading","webpack://web-frontend/webpack/startup"],"names":["exports","___CSS_LOADER_API_IMPORT___","push","module","id","api","content","__esModule","default","options","exported","locals","ForgotPage","React","ResetPage","VerifyPage","AccountSetupPage","MainLandingPage","QuestionsPage","AboutPage","UserPage","ApplicationDetailPage","RenewalDetailPage","ActionPage","SignupPage","ApplicationRenderer","AdminPage","AdminAppsPage","AdminAppDetailPage","PPPAdminPage","PPPAdminDetailPage","PppApplicationPage","ForgivenessApplicationPage","ForgivenessAdminPage","ForgivenessAdminDetailPage","AdminRoute","children","title","token","component","rest","render","props","authState","auth","admin","globalAdmin","NotFoundPage","initializeGoogleAnalytics","bugsnagClient","initializeBugsnag","ui","config","App","s","expires","location","useLocation","gaPageView","setState","Date","getTime","expireMs","timeout","setTimeout","clearTimeout","isPpp","securedSites","hasSecured","length","hasExpressLender","includes","hexToCssVars","okText","fullHeight","skipRedirect","option","fallback","spinner","exact","path","LogoffPage","LoginRegisterPage","applicationType","map","key","l","url","componentProps","faqConfig","LandingPage","HotApp","hot","Styles","styled","useLink","substr","Banner","showButton","banner","productNameOnly","highlightColor","backgroundColor","boxOpacity","buttons","b","color","linkUrl","toLowerCase","text","details","textColor","buttonText","imageUrl","className","style","position","overflow","boxShading","src","indexOf","bannerText","fontWeight","filter","i","contrastRatio","Color","type","borderColor","shadeColor","margin","dangerouslySetInnerHTML","__html","href","to","getHeight","w","window","innerWidth","BannerBackgroundImage","width","Math","ceil","imageSrc","BranchLoginForm","onClose","busy","error","userNameRef","passwordRef","e","preventDefault","current","value","response","errorMessage","maxWidth","padding","onSubmit","marginTop","size","htmlFor","ref","disabled","fullWidth","DisclosureModal","name","onOk","renewal","ppl","ppf","parameters","ready","failed","results","setResults","tokenSource","undefined","postJson","isError","payload","cancelSource","Axios","getDisclosureData","cancel","loadingMessage","fullPage","cancelText","isReady","bodyStyle","textAlign","icon","subTitle","colorSubTitle","pdfContent","downloadLink","documentMd5","scale","onDocumentComplete","gaEvent","onDocumentFailed","loading","versionString","Footer","branchLoginModalOpen","branchUser","footerImages","img","alt","target","onClick","HeaderPane","banners","small","useWindowSize","headerHeight","document","getElementsByClassName","clientHeight","bannerDivs","settings","dots","arrows","infinite","speed","slidesToShow","slidesToScroll","autoplay","autoplaySpeed","fade","swipe","draggable","_buildBanner","classNames","height","StyledListItem","AccountLink","email","expireDate","utcTime","Header","p","StyledDiv","NavbarEnd","NavItem","startsWith","userName","headerLinks","hideLoginLinks","siteLogo","clientLogo","v","isHidden","Logo","Menu","pageLinks","authLinks","open","setOpen","useOnClickOutside","link","role","userId","scrolled","useWindowScrolledTo","y","useWindowScrollPosition","opacity","max","min","fontSize","UnknownLink","urlString","h2","h3","h4","pdfjs","PdfjsWorker","PdfPage","page","canvasRef","renderPdf","canvas","context","getContext","viewport","getViewport","clearRect","renderTask","canvasContext","promise","getPdfFromByteArray","bytes","atob","byteLength","byteArray","Uint8Array","index","charCodeAt","Pdf","file","loadingScreen","pages","state","fetchPdf","loadingTask","data","isEvalSupported","pdf","numPages","getPage","ex","marginBottom","download","StyledColumn","SearchField","label","labelInfo","labelSize","tooltip","labelInfoFull","controlPaddingTopEm","inputAddonLeft","inputAddonRight","buttonRight","Container","errors","c","mappedChildren","saveSort","sortRule","localStorage","setItem","JSON","stringify","loadSort","parse","getItem","desc","Table","columns","search","narrow","sticky","additionalState","useTable","autoResetSortBy","autoResetGlobalFilter","initialState","sortBy","useGlobalFilter","useSortBy","getTableProps","getTableBodyProps","headerGroups","rows","prepareRow","setGlobalFilter","headerGroup","getHeaderGroupProps","headers","column","getHeaderProps","getSortByToggleProps","isSorted","isSortedDesc","row","getRowProps","cells","cell","getCellProps","isDevelopment","metaData","client","ErrorBoundary","getPlugin","ReactDOM","getElementById","getConfigFromElement","initializeGa","Create","history","useHistory","loggingIn","useFormState","withIds","onBlur","classList","add","form","select","date","password","postData","Name","values","Email","newEmail","Password","newPassword","ReferralSource","referral","BirthDate","birthDate","BranchUser","loginResponse","clear","IsError","ErrorMessage","from","replace","fluid","tag","tabIndex","required","placeholder","hasLoggedInBefore","showOnlineBankingNote","FaqItem","question","answer","FaqPane","landing","faqs","items","fontStyle","marginLeft","f","pathname","GetStartedPane","heading","Product","feature","split","d","trim","summaryIcon","ProductsPane","features","featureSummaryText","highlightStyle","productHtml","summary","TestimonyItem","TestimonyPane","testimonies","t","customerName","formatUtcDate","testimonyDate","useHeaderLinks","getStarted","favorite","pageConfig","body","Button","colorClass","flex","noBtnClass","btnStyle","ExternalLink","onProceed","hostname","HighlightText","query","queryStr","regex","RegExp","styleText","Object","keys","join","html","a","getParagraphs","processMarkup","markupText","substring","HtmlString","Icon","widthEm","sizeEm","marginRight","Input","isValid","showValidation","iconClass","addon","LoadingBar","left","interval","this","setInterval","animate","bind","clearInterval","active","LoadingMessage","headerIcon","Masonry","elementType","iOS","navigator","test","userAgent","MSStream","StyledBackdrop","StyledModal","StyledHeader","StyledFooter","Modal","subtitle","footerText","fullScreen","_handleClose","stopPropagation","rootElemRef","createElement","appendChild","remove","onClickOutside","onEscapeKey","shards","NonIdealState","marginEm","pre","heightEm","Pager","totalResults","pageSize","hideResults","maxPages","isNaN","onPageChange","numeral","format","getNextTimeout","ageInSeconds","RelativeTime","dateOnly","count","setCount","valueOf","next","timer","relativeTime","formatRelativeDateTime","formatUtcDateTime","whitelistKeys","Link","innerRef","toWithQuery","URLSearchParams","keepKeys","Array","k","newSearch","forEach","append","get","toString","PrivateRoute","pageBaseName","PublicRoute","ScrollIntoView","nodeRef","behavior","scrollMode","block","scrollIntoView","Section","css","_colors","none","white","primary","secondary","inverse","isSticky","stickyPos","container","StyledRoot","SectionHeader","center","direction","headerStyle","justifyContent","BarLoader","ClipLoader","HorizontalSpinner","CircleSpinner","Spinner","Component","inlineText","StyledSteps","Steps","vertical","currentStatus","horizontal","mapCloneElement","item","itemStyles","flexBasis","itemProps","stepNumber","status","StyledStep","Step","itemWidth","description","iconNode","STEP_STATUS_ICON","styles","finish","wait","process","func","child","handle","call","Tabs","tabPaneRenderer","tabChildren","defaultTab","findIndex","selectedTab","align","tabsRef","onTabChange","tab","tabs","hidden","cls","rendered","st","paddingTop","mt","paddingBottom","mb","top","preTabContent","TabNav","allTabErrors","adminState","reduce","all","tabErrors","validator","indexOverride","subTabErrors","scrollToTop","el","offsetTop","scrollTo","ManagedTabs","selectedTabId","setSelectedTabId","navigation","hashUpdate","submitting","setSubmitting","showErrors","setShowErrors","useMeasure","refMain","tabId","setTabId","changeTab","baseUrl","setFromHash","hash","onhashchange","visibleTabs","mainTab","find","mainTabIndex","visibleSubTabs","hasSubTabs","subTab","subTabIndex","visibleErrors","Set","msg","hide","allErrors","isLast","submitStatus","submit","submitText","hideNav","tabsHeader","onDoubleClick","field","Tab","regexReplace","TemplateString","template","variables","asHtml","vars","objectKeysToLowerCase","parts","prop","isVar","hasOwnProperty","variableValue","isObjectVar","highlight","getFormattedData","activities","logTimeUtc","userIp","dateStr","list","time","Timeline","users","dates","hoverUserId","setHoverUserId","hoverIp","setHoverIp","onHoverUser","hovering","onHoverIp","ip","user","u","TimlineItem","fullName","hover","onMouseOver","onMouseOut","Toggle","trueText","falseText","showText","Tooltip","UploadModal","onComplete","uploadUrl","uploadFields","accept","uploading","setUploading","setHighlight","files","setFiles","fileInputRef","cancelTokenRef","addFiles","fileList","newFiles","pct","fs","errorMsg","formData","FormData","String","postForm","round","loaded","total","reason","message","hasBegun","some","isComplete","every","nodrop","onDragOver","dataTransfer","dropEffect","onDragLeave","onDrop","click","multiple","onChange","_f","formatNumber","beginUpload","WithAddon","addonLeft","cancelToken","onUploadProgress","ajax","method","init","json","getToken","isFormData","Authorization","skipAuthorization","currentClientId","Number","axios","serializeFormData","statusText","payloadError","error_message","loginDataKey","branchLoginDataKey","getBranchLoginData","getTokenStorage","setBranchLoginData","storage","sessionStorage","err","getFakeStorage","clearBranchLoginData","removeItem","getBranchUserToken","branchLoginData","tokenExpirationString","tokenExpiration","access_token","getLoginData","setLoginData","remember","cookie","clearLoginData","loginData","ignoreExpires","fakeStorage","_index","getLocalStorage","global","base64ToBlob","base64","mimetype","slicesize","bytechars","bytearrays","offset","slice","bytenums","bytearray","Blob","chunk","arr","len","chunks","n","clamp","hasOwn","classes","arg","isArray","inner","apply","h","hexToRgb","r","g","dbg","console","groupCollapsed","groupEnd","deepCompare","o1","o2","leftChain","rightChain","compare2Objects","x","pop","asLocalDate","dateString","toDate","getUTCHours","getUTCFullYear","getUTCMonth","getUTCDate","parseISO","formatBase","fmt","parser","formatLocalDate","addSuffix","d1","d2","formatDistance","isDateValid","formatYesNo","daysElapsedInYear","moize","differenceInDays","startOfYear","repeatString","repeatCount","TypeError","str","RangeError","Infinity","floor","maxCount","log","formatMoney","decimals","hideZeroDecimal","formatNumberSuffix","num","getDecimalFormat","decimalFormat","googleAnalyticsCodes","enabled","clientId","gaCode","gaConfig","gtag","linker","domains","user_id","send_page_view","page_path","page_search","page_hash","category","action","gaUserCreate","gaLogin","s4","random","guid","envConfig","bugsnag","apiKey","releaseStage","env","use","bugsnagReact","elementId","element","textContent","innerText","innerHTML","poBoxRegex","isPoBox","address","match","isTin","tinString","tin","input","newObj","renderComponent","sheet","ServerStyleSheet","ReactDOMServer","collectStyles","styleTags","getStyleTags","getElementsByTagName","outerHTML","printHtml","iframe","doc","contentDocument","contentWindow","write","close","focus","print","removeChild","printComponent","withDevTools","__REDUX_DEVTOOLS_EXTENSION__","RxStore","computed","patchFilter","stateSubject","devTools","patches","BehaviorSubject","connect","subscribe","m","pipe","distinctUntilChanged","getValue","fn","nextState","produce","getStateSnapshot","_patches","send","actionName","actions","working","update","actionState","partialState","currentState","assign","selector","Error","stackLine","stack","exec","val","setVal","getCurrentState","selectSubscription","equals","unsubscribe","formOptions","bindField","formState","updating","focused","subscriptions","submitAttempted","formStateRef","fields","updateFn","addField","fieldProps","updateRxState","bindText","bindTextMultiple","defaultValue","bindNumeric","formatted","currency","percentage","comma","bindBoolean","bindDate","mask","index2","isSelectorFn","parseFn","isFocused","maskRegex","nv","getSelector","updateSelector","updateLocalState","updateRx","externalChange","maskValue","maskedValue","inputType","j","numericOptions","valueKey","valueOverride","checked","selectedOptions","o","updateOnBlur","activeElement","disableOnBlur","nodeName","positive","whole","dec","fnString","result","params","executeSelector","i2","normalizedParts","getSelectorPaths","replaceIndexParts","flatMap","shift","obj","encodeURIComponent","percent","p2","sbcRip","RGB","inputParts","parseInt","parseFloat","colorStr","colorHex","keepAliveWarnAt","pingInterval","stringifySend","SignalR","version","negotiateCancelSource","startCancelSource","beatHandle","transportTimeoutHandle","transportConnectTimeout","totalTransportConnectTimeout","reconnectTimeout","pingIntervalId","beatInterval","keepAliveData","disconnectTimeout","reconnectWindow","lastMessageAt","lastActiveAt","configuredStopReconnectingTimeout","socket","appRelativeUrl","startRequested","startCompleted","connectionStopped","redirectQs","qs","messageId","webSocketServerUrl","buffer","onStartEvent","SimpleEventDispatcher","onStartingEvent","onReceivedEvent","onErrorEvent","onConnectionSlowEvent","onReconnectingEvent","onReconnectEvent","onStateChangedEvent","onDisconnectEvent","dispatch","asEvent","expectedState","newState","oldState","pingServer","addQs","pingResponse","Response","reconnecting","negotiate","res","ConnectionId","ConnectionToken","KeepAliveTimeout","activated","timeoutWarning","Url","DisconnectTimeout","TransportConnectTimeout","failCalled","onFailed","transportFailed","opened","WebSocket","wsProtocol","protocol","host","getUrl","onopen","clearReconnectTimeout","changeState","that","onclose","event","wasClean","reconnect","onmessage","processMessages","initReceived","ajaxPost","prepareQueryString","getAjaxUrl","startResponse","stop","monitorKeepAlive","startHeartbeat","configurePingInterval","drainBuffer","addEventListener","tryBuffer","minData","onInitialized","markLastMessage","maximizePersistentResponse","MessageId","Messages","triggerReceived","tryInitialize","persistentResponse","Initialized","wrappedError","preparedUrl","now","appender","firstChar","charAt","notifyServer","abort","stopMonitoringKeepAlive","clearBuffer","monitoring","reconnectKeepAliveUpdate","sub","verifyLastActive","ensureReconnectingState","start","beat","checkIfAlive","markActive","timeElapsed","userNotified","stopReconnectingTimeout","onReconnecting","onStateChanged","LOGGING","logging","toTimeString","debug","minPersistentResponse","C","M","S","ShouldReconnect","T","GroupsToken","G","E","wsClient","sort","array","compareFn","throttle","last","deferTimer","threshhold","scope","args","arguments","states","territories","useApi","requestPayload","setRequestPayload","__execute","debouncedPayload","useDebounce","debounce","setResultState","useEffectDeep","valid","then","catch","executeNow","deps","isFirst","prevDeps","isSame","links","hideLogin","useInterval","callback","delay","savedCallback","breakpoints","xxs","xs","sm","md","lg","getMediaQueries","bps","bpArray","bp","q","mediaQueries","useMedia","useState","useEffect","mediaQueryLists","mediaQueryList","matchMedia","getState","matches","listener","addListener","removeListener","throttleMs","pageXOffset","pageYOffset","scroll","setScroll","removeEventListener","yOffset","isScrolled","events","onResize","innerHeight","setSize","delete","validatePasswordComplexity","StyledInstructions","LoginForm","remember_default","checkbox","expiredUrl","autoFocus","back","AuthService","onAuthChangeCallback","onAuthChange","ClientId","Admin","GlobalAdmin","viewDemographics","ViewDemographics","lenderAssisted","LenderAssisted","grant_type","username","error_description","error_uri","visible","tokenStorage","emailVerified","UIService","appName","pageTitle","__webpack_module_cache__","deferred","leafPrototypes","getProto","inProgress","dataWebpackPrefix","__webpack_require__","moduleId","cachedModule","__webpack_modules__","amdD","amdO","O","chunkIds","priority","notFulfilled","fulfilled","splice","getter","getPrototypeOf","mode","ns","create","def","getOwnPropertyNames","definition","defineProperty","enumerable","chunkId","Promise","promises","globalThis","Function","hmd","set","prototype","done","script","needAttach","scripts","getAttribute","charset","nc","setAttribute","onScriptComplete","prev","onerror","onload","doneFns","parentNode","head","Symbol","toStringTag","nmd","paths","installedChunks","installedChunkData","resolve","reject","errorType","realSrc","request","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","self","__webpack_exports__"],"mappings":"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","file":"app.bc856901e717244d5b55.js","sourcesContent":["// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \"html, body { width: 100%; height: 100%; margin: 0; padding: 0; background-color: #efefef; font-size: 16px; }\\r\\nhtml { overflow-x: visible; overflow-y: visible; }\\r\\nbody.noscroll { overflow: hidden; }\\r\\n.row { margin-right: inherit; margin-left: inherit; }\\r\\n.center { text-align: center; }\\r\\n.apr { font-size: 16pt; }\\r\\n\\r\\n/* Bulma tweaks */\\r\\np { margin: 0 0 10px; }\\r\\n.heading { text-transform: none; letter-spacing: normal; margin-bottom: 0.5em; }\\r\\n\\r\\n.list-group-item { display: flex; align-items: baseline; border: 1px solid #ddd; padding: 10px 5px; margin-bottom: -1px; background-color: #fff; }\\r\\n.list-group-item > input { position: relative; top: 2px; margin: 0 0.5em; }\\r\\n.list-group-item:first-child {\\r\\n border-top-right-radius: 4px;\\r\\n border-top-left-radius: 4px;\\r\\n}\\r\\n.list-group-item:last-child {\\r\\n margin-bottom: 0;\\r\\n border-bottom-right-radius: 4px;\\r\\n border-bottom-left-radius: 4px;\\r\\n}\\r\\nlabel.list-group-item { cursor: pointer; }\\r\\nlabel.list-group-item.selected {\\r\\n background-color: #244062;\\r\\n background-color: var(--color-secondary);\\r\\n color: #fff;\\r\\n}\\r\\nlabel.list-group-item:hover {\\r\\n background-color: #c8cfd8;\\r\\n background-color: var(--color-secondary-light-75);\\r\\n}\\r\\nlabel.list-group-item.selected:hover {\\r\\n background-color: #92a0b1;\\r\\n background-color: var(--color-secondary-light-50);\\r\\n}\\r\\n\\r\\n.message.is-danger .message-header { background-color: #c0504d; }\\r\\n.message.is-danger .message-body { border-color: #c0504d; color: #c0504d; }\\r\\n@media(max-width: 768px) {\\r\\n .container.is-fluid { padding: 0; }\\r\\n label.columns, label.columns:last-child,\\r\\n div.columns, div.columns:last-child { display: block; margin: 1em 0; }\\r\\n .column { padding: .75rem 0; }\\r\\n}\\r\\n.input[disabled] { border-color: #dbdbdb; opacity: 0.7; }\\r\\n\\r\\n.input[disabled], .textarea[disabled], .select select[disabled], fieldset[disabled] .input, fieldset[disabled] .textarea, fieldset[disabled] .select select, .select fieldset[disabled] select {\\r\\n border-color: #dbdbdb;\\r\\n}\\r\\n/* End Bulma tweaks */\\r\\n\\r\\ninput[type=checkbox], input[type=radio] {\\r\\n min-width: 1rem;\\r\\n}\\r\\n\\r\\ninput[data-error],\\r\\ntextarea[data-error],\\r\\nselect[data-error],\\r\\n.data-error {\\r\\n border-left: 2px solid #C0504D !important;\\r\\n}\\r\\n\\r\\na {\\r\\n color: #244062;\\r\\n color: var(--color-secondary);\\r\\n}\\r\\na.underline {\\r\\n text-decoration: underline;\\r\\n text-underline-position: under;\\r\\n}\\r\\n\\r\\n_:-ms-fullscreen, .column {}\\r\\n\\r\\n/* NavBar dropdown hover */\\r\\na.navbar-brand { padding-left: 6px; }\\r\\n\\r\\n.inline-link {\\r\\n font-weight: bold;\\r\\n text-decoration: underline;\\r\\n cursor: pointer;\\r\\n color: #F79646;\\r\\n}\\r\\n.inline-link:hover {\\r\\n color: #E26B0A;\\r\\n}\\r\\n\\r\\n.faqitem a { text-decoration: underline; font-weight: bold; }\\r\\n\\r\\n.faqExpand-enter { transition: max-height .25s; max-height: 0; }\\r\\n.faqExpand-enter.faqExpand-enter-active { max-height: 500px; }\\r\\n.faqExpand-leave { transition: max-height .25s; max-height: 500px; }\\r\\n.faqExpand-leave.faqExpand-leave-active { max-height: 0; }\\r\\n\\r\\n.slick-dots { bottom: -50px; z-index: 9; }\\r\\n.slick-next { right: 25px; }\\r\\n.slick-prev { left: 25px; }\\r\\n.slick-prev, .slick-next { top: 90%; z-index: 1; }\\r\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \"/*! bulma.io v0.9.3 | MIT License | github.com/jgthms/bulma */.pagination-previous,.pagination-next,.pagination-link,.pagination-ellipsis,.file-cta,.file-name,.select select,.textarea,.input,.button{-moz-appearance:none;-webkit-appearance:none;align-items:center;border:1px solid transparent;border-radius:4px;box-shadow:none;display:inline-flex;font-size:1rem;height:2.5em;justify-content:flex-start;line-height:1.5;padding-bottom:calc(0.5em - 1px);padding-left:calc(0.75em - 1px);padding-right:calc(0.75em - 1px);padding-top:calc(0.5em - 1px);position:relative;vertical-align:top}.pagination-previous:focus,.pagination-next:focus,.pagination-link:focus,.pagination-ellipsis:focus,.file-cta:focus,.file-name:focus,.select select:focus,.textarea:focus,.input:focus,.button:focus,.is-focused.pagination-previous,.is-focused.pagination-next,.is-focused.pagination-link,.is-focused.pagination-ellipsis,.is-focused.file-cta,.is-focused.file-name,.select select.is-focused,.is-focused.textarea,.is-focused.input,.is-focused.button,.pagination-previous:active,.pagination-next:active,.pagination-link:active,.pagination-ellipsis:active,.file-cta:active,.file-name:active,.select select:active,.textarea:active,.input:active,.button:active,.is-active.pagination-previous,.is-active.pagination-next,.is-active.pagination-link,.is-active.pagination-ellipsis,.is-active.file-cta,.is-active.file-name,.select select.is-active,.is-active.textarea,.is-active.input,.is-active.button{outline:none}[disabled].pagination-previous,[disabled].pagination-next,[disabled].pagination-link,[disabled].pagination-ellipsis,[disabled].file-cta,[disabled].file-name,.select select[disabled],[disabled].textarea,[disabled].input,[disabled].button,fieldset[disabled] .pagination-previous,fieldset[disabled] .pagination-next,fieldset[disabled] .pagination-link,fieldset[disabled] .pagination-ellipsis,fieldset[disabled] .file-cta,fieldset[disabled] .file-name,fieldset[disabled] .select select,.select fieldset[disabled] select,fieldset[disabled] .textarea,fieldset[disabled] .input,fieldset[disabled] .button{cursor:not-allowed}.is-unselectable,.tabs,.pagination-previous,.pagination-next,.pagination-link,.pagination-ellipsis,.breadcrumb,.file,.button{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.navbar-link:not(.is-arrowless)::after,.select:not(.is-multiple):not(.is-loading)::after{border:3px solid transparent;border-radius:2px;border-right:0;border-top:0;content:\\\" \\\";display:block;height:.625em;margin-top:-0.4375em;pointer-events:none;position:absolute;top:50%;transform:rotate(-45deg);transform-origin:center;width:.625em}.tabs:not(:last-child),.pagination:not(:last-child),.message:not(:last-child),.level:not(:last-child),.breadcrumb:not(:last-child),.block:not(:last-child),.title:not(:last-child),.subtitle:not(:last-child),.table-container:not(:last-child),.table:not(:last-child),.progress:not(:last-child),.notification:not(:last-child),.content:not(:last-child),.box:not(:last-child){margin-bottom:1.5rem}.modal-close,.delete{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-moz-appearance:none;-webkit-appearance:none;background-color:rgba(10,10,10,.2);border:none;border-radius:9999px;cursor:pointer;pointer-events:auto;display:inline-block;flex-grow:0;flex-shrink:0;font-size:0;height:20px;max-height:20px;max-width:20px;min-height:20px;min-width:20px;outline:none;position:relative;vertical-align:top;width:20px}.modal-close::before,.delete::before,.modal-close::after,.delete::after{background-color:#fff;content:\\\"\\\";display:block;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%) rotate(45deg);transform-origin:center center}.modal-close::before,.delete::before{height:2px;width:50%}.modal-close::after,.delete::after{height:50%;width:2px}.modal-close:hover,.delete:hover,.modal-close:focus,.delete:focus{background-color:rgba(10,10,10,.3)}.modal-close:active,.delete:active{background-color:rgba(10,10,10,.4)}.is-small.modal-close,.is-small.delete{height:16px;max-height:16px;max-width:16px;min-height:16px;min-width:16px;width:16px}.is-medium.modal-close,.is-medium.delete{height:24px;max-height:24px;max-width:24px;min-height:24px;min-width:24px;width:24px}.is-large.modal-close,.is-large.delete{height:32px;max-height:32px;max-width:32px;min-height:32px;min-width:32px;width:32px}.control.is-loading::after,.select.is-loading::after,.loader,.button.is-loading::after{animation:spinAround 500ms infinite linear;border:2px solid #dbdbdb;border-radius:9999px;border-right-color:transparent;border-top-color:transparent;content:\\\"\\\";display:block;height:1em;position:relative;width:1em}.hero-video,.is-overlay,.modal-background,.modal,.image.is-square img,.image.is-square .has-ratio,.image.is-1by1 img,.image.is-1by1 .has-ratio,.image.is-5by4 img,.image.is-5by4 .has-ratio,.image.is-4by3 img,.image.is-4by3 .has-ratio,.image.is-3by2 img,.image.is-3by2 .has-ratio,.image.is-5by3 img,.image.is-5by3 .has-ratio,.image.is-16by9 img,.image.is-16by9 .has-ratio,.image.is-2by1 img,.image.is-2by1 .has-ratio,.image.is-3by1 img,.image.is-3by1 .has-ratio,.image.is-4by5 img,.image.is-4by5 .has-ratio,.image.is-3by4 img,.image.is-3by4 .has-ratio,.image.is-2by3 img,.image.is-2by3 .has-ratio,.image.is-3by5 img,.image.is-3by5 .has-ratio,.image.is-9by16 img,.image.is-9by16 .has-ratio,.image.is-1by2 img,.image.is-1by2 .has-ratio,.image.is-1by3 img,.image.is-1by3 .has-ratio{bottom:0;left:0;position:absolute;right:0;top:0}.navbar-burger{-moz-appearance:none;-webkit-appearance:none;appearance:none;background:none;border:none;color:currentColor;font-family:inherit;font-size:1em;margin:0;padding:0}/*! minireset.css v0.0.6 | MIT License | github.com/jgthms/minireset.css */html,body,p,ol,ul,li,dl,dt,dd,blockquote,figure,fieldset,legend,textarea,pre,iframe,hr,h1,h2,h3,h4,h5,h6{margin:0;padding:0}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal}ul{list-style:none}button,input,select,textarea{margin:0}html{box-sizing:border-box}*,*::before,*::after{box-sizing:inherit}img,video{height:auto;max-width:100%}iframe{border:0}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}td:not([align]),th:not([align]){text-align:inherit}html{background-color:#fff;font-size:14px;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;min-width:300px;overflow-x:hidden;overflow-y:scroll;text-rendering:optimizeLegibility;text-size-adjust:100%}article,aside,figure,footer,header,hgroup,section{display:block}body,button,input,optgroup,select,textarea{font-family:Tahoma,sans-serif}code,pre{-moz-osx-font-smoothing:auto;-webkit-font-smoothing:auto;font-family:monospace}body{color:#4a4a4a;font-size:1em;font-weight:400;line-height:1.42857143}a{color:#485fc7;cursor:pointer;text-decoration:none}a strong{color:currentColor}a:hover{color:#363636}code{background-color:#f5f5f5;color:#da1039;font-size:.875em;font-weight:normal;padding:.25em .5em .25em}hr{background-color:#f5f5f5;border:none;display:block;height:2px;margin:1.5rem 0}img{height:auto;max-width:100%}input[type=checkbox],input[type=radio]{vertical-align:baseline}small{font-size:.875em}span{font-style:inherit;font-weight:inherit}strong{color:#363636;font-weight:700}fieldset{border:none}pre{-webkit-overflow-scrolling:touch;background-color:#f5f5f5;color:#4a4a4a;font-size:.875em;overflow-x:auto;padding:1.25rem 1.5rem;white-space:pre;word-wrap:normal}pre code{background-color:transparent;color:currentColor;font-size:1em;padding:0}table td,table th{vertical-align:top}table td:not([align]),table th:not([align]){text-align:inherit}table th{color:#363636}@keyframes spinAround{from{transform:rotate(0deg)}to{transform:rotate(359deg)}}.box{background-color:#fff;border-radius:6px;box-shadow:0 .5em 1em -0.125em rgba(10,10,10,.1),0 0px 0 1px rgba(10,10,10,.02);color:#4a4a4a;display:block;padding:1.25rem}a.box:hover,a.box:focus{box-shadow:0 .5em 1em -0.125em rgba(10,10,10,.1),0 0 0 1px #485fc7}a.box:active{box-shadow:inset 0 1px 2px rgba(10,10,10,.2),0 0 0 1px #485fc7}.button{background-color:#fff;border-color:#dbdbdb;border-width:1px;color:#363636;cursor:pointer;justify-content:center;padding-bottom:calc(0.5em - 1px);padding-left:1em;padding-right:1em;padding-top:calc(0.5em - 1px);text-align:center;white-space:nowrap}.button strong{color:inherit}.button .icon,.button .icon.is-small,.button .icon.is-medium,.button .icon.is-large{height:1.5em;width:1.5em}.button .icon:first-child:not(:last-child){margin-left:calc(-0.5em - 1px);margin-right:.25em}.button .icon:last-child:not(:first-child){margin-left:.25em;margin-right:calc(-0.5em - 1px)}.button .icon:first-child:last-child{margin-left:calc(-0.5em - 1px);margin-right:calc(-0.5em - 1px)}.button:hover,.button.is-hovered{border-color:#b5b5b5;color:#363636}.button:focus,.button.is-focused{border-color:#485fc7;color:#363636}.button:focus:not(:active),.button.is-focused:not(:active){box-shadow:0 0 0 .125em rgba(72,95,199,.25)}.button:active,.button.is-active{border-color:#4a4a4a;color:#363636}.button.is-text{background-color:transparent;border-color:transparent;color:#4a4a4a;text-decoration:underline}.button.is-text:hover,.button.is-text.is-hovered,.button.is-text:focus,.button.is-text.is-focused{background-color:#f5f5f5;color:#363636}.button.is-text:active,.button.is-text.is-active{background-color:#e8e8e8;color:#363636}.button.is-text[disabled],fieldset[disabled] .button.is-text{background-color:transparent;border-color:transparent;box-shadow:none}.button.is-ghost{background:none;border-color:transparent;color:#485fc7;text-decoration:none}.button.is-ghost:hover,.button.is-ghost.is-hovered{color:#485fc7;text-decoration:underline}.button.is-white{background-color:#fff;border-color:transparent;color:#0a0a0a}.button.is-white:hover,.button.is-white.is-hovered{background-color:#f9f9f9;border-color:transparent;color:#0a0a0a}.button.is-white:focus,.button.is-white.is-focused{border-color:transparent;color:#0a0a0a}.button.is-white:focus:not(:active),.button.is-white.is-focused:not(:active){box-shadow:0 0 0 .125em rgba(255,255,255,.25)}.button.is-white:active,.button.is-white.is-active{background-color:#f2f2f2;border-color:transparent;color:#0a0a0a}.button.is-white[disabled],fieldset[disabled] .button.is-white{background-color:#fff;border-color:transparent;box-shadow:none}.button.is-white.is-inverted{background-color:#0a0a0a;color:#fff}.button.is-white.is-inverted:hover,.button.is-white.is-inverted.is-hovered{background-color:#000}.button.is-white.is-inverted[disabled],fieldset[disabled] .button.is-white.is-inverted{background-color:#0a0a0a;border-color:transparent;box-shadow:none;color:#fff}.button.is-white.is-loading::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}.button.is-white.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-white.is-outlined:hover,.button.is-white.is-outlined.is-hovered,.button.is-white.is-outlined:focus,.button.is-white.is-outlined.is-focused{background-color:#fff;border-color:#fff;color:#0a0a0a}.button.is-white.is-outlined.is-loading::after{border-color:transparent transparent #fff #fff !important}.button.is-white.is-outlined.is-loading:hover::after,.button.is-white.is-outlined.is-loading.is-hovered::after,.button.is-white.is-outlined.is-loading:focus::after,.button.is-white.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}.button.is-white.is-outlined[disabled],fieldset[disabled] .button.is-white.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-white.is-inverted.is-outlined{background-color:transparent;border-color:#0a0a0a;color:#0a0a0a}.button.is-white.is-inverted.is-outlined:hover,.button.is-white.is-inverted.is-outlined.is-hovered,.button.is-white.is-inverted.is-outlined:focus,.button.is-white.is-inverted.is-outlined.is-focused{background-color:#0a0a0a;color:#fff}.button.is-white.is-inverted.is-outlined.is-loading:hover::after,.button.is-white.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-white.is-inverted.is-outlined.is-loading:focus::after,.button.is-white.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}.button.is-white.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-white.is-inverted.is-outlined{background-color:transparent;border-color:#0a0a0a;box-shadow:none;color:#0a0a0a}.button.is-black{background-color:#0a0a0a;border-color:transparent;color:#fff}.button.is-black:hover,.button.is-black.is-hovered{background-color:#040404;border-color:transparent;color:#fff}.button.is-black:focus,.button.is-black.is-focused{border-color:transparent;color:#fff}.button.is-black:focus:not(:active),.button.is-black.is-focused:not(:active){box-shadow:0 0 0 .125em rgba(10,10,10,.25)}.button.is-black:active,.button.is-black.is-active{background-color:#000;border-color:transparent;color:#fff}.button.is-black[disabled],fieldset[disabled] .button.is-black{background-color:#0a0a0a;border-color:transparent;box-shadow:none}.button.is-black.is-inverted{background-color:#fff;color:#0a0a0a}.button.is-black.is-inverted:hover,.button.is-black.is-inverted.is-hovered{background-color:#f2f2f2}.button.is-black.is-inverted[disabled],fieldset[disabled] .button.is-black.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#0a0a0a}.button.is-black.is-loading::after{border-color:transparent transparent #fff #fff !important}.button.is-black.is-outlined{background-color:transparent;border-color:#0a0a0a;color:#0a0a0a}.button.is-black.is-outlined:hover,.button.is-black.is-outlined.is-hovered,.button.is-black.is-outlined:focus,.button.is-black.is-outlined.is-focused{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}.button.is-black.is-outlined.is-loading::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}.button.is-black.is-outlined.is-loading:hover::after,.button.is-black.is-outlined.is-loading.is-hovered::after,.button.is-black.is-outlined.is-loading:focus::after,.button.is-black.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}.button.is-black.is-outlined[disabled],fieldset[disabled] .button.is-black.is-outlined{background-color:transparent;border-color:#0a0a0a;box-shadow:none;color:#0a0a0a}.button.is-black.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-black.is-inverted.is-outlined:hover,.button.is-black.is-inverted.is-outlined.is-hovered,.button.is-black.is-inverted.is-outlined:focus,.button.is-black.is-inverted.is-outlined.is-focused{background-color:#fff;color:#0a0a0a}.button.is-black.is-inverted.is-outlined.is-loading:hover::after,.button.is-black.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-black.is-inverted.is-outlined.is-loading:focus::after,.button.is-black.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}.button.is-black.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-black.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-light{background-color:#f5f5f5;border-color:transparent;color:rgba(0,0,0,.7)}.button.is-light:hover,.button.is-light.is-hovered{background-color:#eee;border-color:transparent;color:rgba(0,0,0,.7)}.button.is-light:focus,.button.is-light.is-focused{border-color:transparent;color:rgba(0,0,0,.7)}.button.is-light:focus:not(:active),.button.is-light.is-focused:not(:active){box-shadow:0 0 0 .125em rgba(245,245,245,.25)}.button.is-light:active,.button.is-light.is-active{background-color:#e8e8e8;border-color:transparent;color:rgba(0,0,0,.7)}.button.is-light[disabled],fieldset[disabled] .button.is-light{background-color:#f5f5f5;border-color:transparent;box-shadow:none}.button.is-light.is-inverted{background-color:rgba(0,0,0,.7);color:#f5f5f5}.button.is-light.is-inverted:hover,.button.is-light.is-inverted.is-hovered{background-color:rgba(0,0,0,.7)}.button.is-light.is-inverted[disabled],fieldset[disabled] .button.is-light.is-inverted{background-color:rgba(0,0,0,.7);border-color:transparent;box-shadow:none;color:#f5f5f5}.button.is-light.is-loading::after{border-color:transparent transparent rgba(0,0,0,.7) rgba(0,0,0,.7) !important}.button.is-light.is-outlined{background-color:transparent;border-color:#f5f5f5;color:#f5f5f5}.button.is-light.is-outlined:hover,.button.is-light.is-outlined.is-hovered,.button.is-light.is-outlined:focus,.button.is-light.is-outlined.is-focused{background-color:#f5f5f5;border-color:#f5f5f5;color:rgba(0,0,0,.7)}.button.is-light.is-outlined.is-loading::after{border-color:transparent transparent #f5f5f5 #f5f5f5 !important}.button.is-light.is-outlined.is-loading:hover::after,.button.is-light.is-outlined.is-loading.is-hovered::after,.button.is-light.is-outlined.is-loading:focus::after,.button.is-light.is-outlined.is-loading.is-focused::after{border-color:transparent transparent rgba(0,0,0,.7) rgba(0,0,0,.7) !important}.button.is-light.is-outlined[disabled],fieldset[disabled] .button.is-light.is-outlined{background-color:transparent;border-color:#f5f5f5;box-shadow:none;color:#f5f5f5}.button.is-light.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,.7);color:rgba(0,0,0,.7)}.button.is-light.is-inverted.is-outlined:hover,.button.is-light.is-inverted.is-outlined.is-hovered,.button.is-light.is-inverted.is-outlined:focus,.button.is-light.is-inverted.is-outlined.is-focused{background-color:rgba(0,0,0,.7);color:#f5f5f5}.button.is-light.is-inverted.is-outlined.is-loading:hover::after,.button.is-light.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-light.is-inverted.is-outlined.is-loading:focus::after,.button.is-light.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #f5f5f5 #f5f5f5 !important}.button.is-light.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-light.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,.7);box-shadow:none;color:rgba(0,0,0,.7)}.button.is-dark{background-color:#363636;border-color:transparent;color:#fff}.button.is-dark:hover,.button.is-dark.is-hovered{background-color:#2f2f2f;border-color:transparent;color:#fff}.button.is-dark:focus,.button.is-dark.is-focused{border-color:transparent;color:#fff}.button.is-dark:focus:not(:active),.button.is-dark.is-focused:not(:active){box-shadow:0 0 0 .125em rgba(54,54,54,.25)}.button.is-dark:active,.button.is-dark.is-active{background-color:#292929;border-color:transparent;color:#fff}.button.is-dark[disabled],fieldset[disabled] .button.is-dark{background-color:#363636;border-color:transparent;box-shadow:none}.button.is-dark.is-inverted{background-color:#fff;color:#363636}.button.is-dark.is-inverted:hover,.button.is-dark.is-inverted.is-hovered{background-color:#f2f2f2}.button.is-dark.is-inverted[disabled],fieldset[disabled] .button.is-dark.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#363636}.button.is-dark.is-loading::after{border-color:transparent transparent #fff #fff !important}.button.is-dark.is-outlined{background-color:transparent;border-color:#363636;color:#363636}.button.is-dark.is-outlined:hover,.button.is-dark.is-outlined.is-hovered,.button.is-dark.is-outlined:focus,.button.is-dark.is-outlined.is-focused{background-color:#363636;border-color:#363636;color:#fff}.button.is-dark.is-outlined.is-loading::after{border-color:transparent transparent #363636 #363636 !important}.button.is-dark.is-outlined.is-loading:hover::after,.button.is-dark.is-outlined.is-loading.is-hovered::after,.button.is-dark.is-outlined.is-loading:focus::after,.button.is-dark.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}.button.is-dark.is-outlined[disabled],fieldset[disabled] .button.is-dark.is-outlined{background-color:transparent;border-color:#363636;box-shadow:none;color:#363636}.button.is-dark.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-dark.is-inverted.is-outlined:hover,.button.is-dark.is-inverted.is-outlined.is-hovered,.button.is-dark.is-inverted.is-outlined:focus,.button.is-dark.is-inverted.is-outlined.is-focused{background-color:#fff;color:#363636}.button.is-dark.is-inverted.is-outlined.is-loading:hover::after,.button.is-dark.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-dark.is-inverted.is-outlined.is-loading:focus::after,.button.is-dark.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #363636 #363636 !important}.button.is-dark.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-dark.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-primary{background-color:#00d1b2;border-color:transparent;color:#fff}.button.is-primary:hover,.button.is-primary.is-hovered{background-color:#00c4a7;border-color:transparent;color:#fff}.button.is-primary:focus,.button.is-primary.is-focused{border-color:transparent;color:#fff}.button.is-primary:focus:not(:active),.button.is-primary.is-focused:not(:active){box-shadow:0 0 0 .125em rgba(0,209,178,.25)}.button.is-primary:active,.button.is-primary.is-active{background-color:#00b89c;border-color:transparent;color:#fff}.button.is-primary[disabled],fieldset[disabled] .button.is-primary{background-color:#00d1b2;border-color:transparent;box-shadow:none}.button.is-primary.is-inverted{background-color:#fff;color:#00d1b2}.button.is-primary.is-inverted:hover,.button.is-primary.is-inverted.is-hovered{background-color:#f2f2f2}.button.is-primary.is-inverted[disabled],fieldset[disabled] .button.is-primary.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#00d1b2}.button.is-primary.is-loading::after{border-color:transparent transparent #fff #fff !important}.button.is-primary.is-outlined{background-color:transparent;border-color:#00d1b2;color:#00d1b2}.button.is-primary.is-outlined:hover,.button.is-primary.is-outlined.is-hovered,.button.is-primary.is-outlined:focus,.button.is-primary.is-outlined.is-focused{background-color:#00d1b2;border-color:#00d1b2;color:#fff}.button.is-primary.is-outlined.is-loading::after{border-color:transparent transparent #00d1b2 #00d1b2 !important}.button.is-primary.is-outlined.is-loading:hover::after,.button.is-primary.is-outlined.is-loading.is-hovered::after,.button.is-primary.is-outlined.is-loading:focus::after,.button.is-primary.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}.button.is-primary.is-outlined[disabled],fieldset[disabled] .button.is-primary.is-outlined{background-color:transparent;border-color:#00d1b2;box-shadow:none;color:#00d1b2}.button.is-primary.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-primary.is-inverted.is-outlined:hover,.button.is-primary.is-inverted.is-outlined.is-hovered,.button.is-primary.is-inverted.is-outlined:focus,.button.is-primary.is-inverted.is-outlined.is-focused{background-color:#fff;color:#00d1b2}.button.is-primary.is-inverted.is-outlined.is-loading:hover::after,.button.is-primary.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-primary.is-inverted.is-outlined.is-loading:focus::after,.button.is-primary.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #00d1b2 #00d1b2 !important}.button.is-primary.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-primary.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-primary.is-light{background-color:#ebfffc;color:#00947e}.button.is-primary.is-light:hover,.button.is-primary.is-light.is-hovered{background-color:#defffa;border-color:transparent;color:#00947e}.button.is-primary.is-light:active,.button.is-primary.is-light.is-active{background-color:#d1fff8;border-color:transparent;color:#00947e}.button.is-link{background-color:#485fc7;border-color:transparent;color:#fff}.button.is-link:hover,.button.is-link.is-hovered{background-color:#3e56c4;border-color:transparent;color:#fff}.button.is-link:focus,.button.is-link.is-focused{border-color:transparent;color:#fff}.button.is-link:focus:not(:active),.button.is-link.is-focused:not(:active){box-shadow:0 0 0 .125em rgba(72,95,199,.25)}.button.is-link:active,.button.is-link.is-active{background-color:#3a51bb;border-color:transparent;color:#fff}.button.is-link[disabled],fieldset[disabled] .button.is-link{background-color:#485fc7;border-color:transparent;box-shadow:none}.button.is-link.is-inverted{background-color:#fff;color:#485fc7}.button.is-link.is-inverted:hover,.button.is-link.is-inverted.is-hovered{background-color:#f2f2f2}.button.is-link.is-inverted[disabled],fieldset[disabled] .button.is-link.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#485fc7}.button.is-link.is-loading::after{border-color:transparent transparent #fff #fff !important}.button.is-link.is-outlined{background-color:transparent;border-color:#485fc7;color:#485fc7}.button.is-link.is-outlined:hover,.button.is-link.is-outlined.is-hovered,.button.is-link.is-outlined:focus,.button.is-link.is-outlined.is-focused{background-color:#485fc7;border-color:#485fc7;color:#fff}.button.is-link.is-outlined.is-loading::after{border-color:transparent transparent #485fc7 #485fc7 !important}.button.is-link.is-outlined.is-loading:hover::after,.button.is-link.is-outlined.is-loading.is-hovered::after,.button.is-link.is-outlined.is-loading:focus::after,.button.is-link.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}.button.is-link.is-outlined[disabled],fieldset[disabled] .button.is-link.is-outlined{background-color:transparent;border-color:#485fc7;box-shadow:none;color:#485fc7}.button.is-link.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-link.is-inverted.is-outlined:hover,.button.is-link.is-inverted.is-outlined.is-hovered,.button.is-link.is-inverted.is-outlined:focus,.button.is-link.is-inverted.is-outlined.is-focused{background-color:#fff;color:#485fc7}.button.is-link.is-inverted.is-outlined.is-loading:hover::after,.button.is-link.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-link.is-inverted.is-outlined.is-loading:focus::after,.button.is-link.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #485fc7 #485fc7 !important}.button.is-link.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-link.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-link.is-light{background-color:#eff1fa;color:#3850b7}.button.is-link.is-light:hover,.button.is-link.is-light.is-hovered{background-color:#e6e9f7;border-color:transparent;color:#3850b7}.button.is-link.is-light:active,.button.is-link.is-light.is-active{background-color:#dce0f4;border-color:transparent;color:#3850b7}.button.is-info{background-color:#3e8ed0;border-color:transparent;color:#fff}.button.is-info:hover,.button.is-info.is-hovered{background-color:#3488ce;border-color:transparent;color:#fff}.button.is-info:focus,.button.is-info.is-focused{border-color:transparent;color:#fff}.button.is-info:focus:not(:active),.button.is-info.is-focused:not(:active){box-shadow:0 0 0 .125em rgba(62,142,208,.25)}.button.is-info:active,.button.is-info.is-active{background-color:#3082c5;border-color:transparent;color:#fff}.button.is-info[disabled],fieldset[disabled] .button.is-info{background-color:#3e8ed0;border-color:transparent;box-shadow:none}.button.is-info.is-inverted{background-color:#fff;color:#3e8ed0}.button.is-info.is-inverted:hover,.button.is-info.is-inverted.is-hovered{background-color:#f2f2f2}.button.is-info.is-inverted[disabled],fieldset[disabled] .button.is-info.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#3e8ed0}.button.is-info.is-loading::after{border-color:transparent transparent #fff #fff !important}.button.is-info.is-outlined{background-color:transparent;border-color:#3e8ed0;color:#3e8ed0}.button.is-info.is-outlined:hover,.button.is-info.is-outlined.is-hovered,.button.is-info.is-outlined:focus,.button.is-info.is-outlined.is-focused{background-color:#3e8ed0;border-color:#3e8ed0;color:#fff}.button.is-info.is-outlined.is-loading::after{border-color:transparent transparent #3e8ed0 #3e8ed0 !important}.button.is-info.is-outlined.is-loading:hover::after,.button.is-info.is-outlined.is-loading.is-hovered::after,.button.is-info.is-outlined.is-loading:focus::after,.button.is-info.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}.button.is-info.is-outlined[disabled],fieldset[disabled] .button.is-info.is-outlined{background-color:transparent;border-color:#3e8ed0;box-shadow:none;color:#3e8ed0}.button.is-info.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-info.is-inverted.is-outlined:hover,.button.is-info.is-inverted.is-outlined.is-hovered,.button.is-info.is-inverted.is-outlined:focus,.button.is-info.is-inverted.is-outlined.is-focused{background-color:#fff;color:#3e8ed0}.button.is-info.is-inverted.is-outlined.is-loading:hover::after,.button.is-info.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-info.is-inverted.is-outlined.is-loading:focus::after,.button.is-info.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #3e8ed0 #3e8ed0 !important}.button.is-info.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-info.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-info.is-light{background-color:#eff5fb;color:#296fa8}.button.is-info.is-light:hover,.button.is-info.is-light.is-hovered{background-color:#e4eff9;border-color:transparent;color:#296fa8}.button.is-info.is-light:active,.button.is-info.is-light.is-active{background-color:#dae9f6;border-color:transparent;color:#296fa8}.button.is-success{background-color:#48c78e;border-color:transparent;color:#fff}.button.is-success:hover,.button.is-success.is-hovered{background-color:#3ec487;border-color:transparent;color:#fff}.button.is-success:focus,.button.is-success.is-focused{border-color:transparent;color:#fff}.button.is-success:focus:not(:active),.button.is-success.is-focused:not(:active){box-shadow:0 0 0 .125em rgba(72,199,142,.25)}.button.is-success:active,.button.is-success.is-active{background-color:#3abb81;border-color:transparent;color:#fff}.button.is-success[disabled],fieldset[disabled] .button.is-success{background-color:#48c78e;border-color:transparent;box-shadow:none}.button.is-success.is-inverted{background-color:#fff;color:#48c78e}.button.is-success.is-inverted:hover,.button.is-success.is-inverted.is-hovered{background-color:#f2f2f2}.button.is-success.is-inverted[disabled],fieldset[disabled] .button.is-success.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#48c78e}.button.is-success.is-loading::after{border-color:transparent transparent #fff #fff !important}.button.is-success.is-outlined{background-color:transparent;border-color:#48c78e;color:#48c78e}.button.is-success.is-outlined:hover,.button.is-success.is-outlined.is-hovered,.button.is-success.is-outlined:focus,.button.is-success.is-outlined.is-focused{background-color:#48c78e;border-color:#48c78e;color:#fff}.button.is-success.is-outlined.is-loading::after{border-color:transparent transparent #48c78e #48c78e !important}.button.is-success.is-outlined.is-loading:hover::after,.button.is-success.is-outlined.is-loading.is-hovered::after,.button.is-success.is-outlined.is-loading:focus::after,.button.is-success.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}.button.is-success.is-outlined[disabled],fieldset[disabled] .button.is-success.is-outlined{background-color:transparent;border-color:#48c78e;box-shadow:none;color:#48c78e}.button.is-success.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-success.is-inverted.is-outlined:hover,.button.is-success.is-inverted.is-outlined.is-hovered,.button.is-success.is-inverted.is-outlined:focus,.button.is-success.is-inverted.is-outlined.is-focused{background-color:#fff;color:#48c78e}.button.is-success.is-inverted.is-outlined.is-loading:hover::after,.button.is-success.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-success.is-inverted.is-outlined.is-loading:focus::after,.button.is-success.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #48c78e #48c78e !important}.button.is-success.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-success.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-success.is-light{background-color:#effaf5;color:#257953}.button.is-success.is-light:hover,.button.is-success.is-light.is-hovered{background-color:#e6f7ef;border-color:transparent;color:#257953}.button.is-success.is-light:active,.button.is-success.is-light.is-active{background-color:#dcf4e9;border-color:transparent;color:#257953}.button.is-warning{background-color:#ffe08a;border-color:transparent;color:rgba(0,0,0,.7)}.button.is-warning:hover,.button.is-warning.is-hovered{background-color:#ffdc7d;border-color:transparent;color:rgba(0,0,0,.7)}.button.is-warning:focus,.button.is-warning.is-focused{border-color:transparent;color:rgba(0,0,0,.7)}.button.is-warning:focus:not(:active),.button.is-warning.is-focused:not(:active){box-shadow:0 0 0 .125em rgba(255,224,138,.25)}.button.is-warning:active,.button.is-warning.is-active{background-color:#ffd970;border-color:transparent;color:rgba(0,0,0,.7)}.button.is-warning[disabled],fieldset[disabled] .button.is-warning{background-color:#ffe08a;border-color:transparent;box-shadow:none}.button.is-warning.is-inverted{background-color:rgba(0,0,0,.7);color:#ffe08a}.button.is-warning.is-inverted:hover,.button.is-warning.is-inverted.is-hovered{background-color:rgba(0,0,0,.7)}.button.is-warning.is-inverted[disabled],fieldset[disabled] .button.is-warning.is-inverted{background-color:rgba(0,0,0,.7);border-color:transparent;box-shadow:none;color:#ffe08a}.button.is-warning.is-loading::after{border-color:transparent transparent rgba(0,0,0,.7) rgba(0,0,0,.7) !important}.button.is-warning.is-outlined{background-color:transparent;border-color:#ffe08a;color:#ffe08a}.button.is-warning.is-outlined:hover,.button.is-warning.is-outlined.is-hovered,.button.is-warning.is-outlined:focus,.button.is-warning.is-outlined.is-focused{background-color:#ffe08a;border-color:#ffe08a;color:rgba(0,0,0,.7)}.button.is-warning.is-outlined.is-loading::after{border-color:transparent transparent #ffe08a #ffe08a !important}.button.is-warning.is-outlined.is-loading:hover::after,.button.is-warning.is-outlined.is-loading.is-hovered::after,.button.is-warning.is-outlined.is-loading:focus::after,.button.is-warning.is-outlined.is-loading.is-focused::after{border-color:transparent transparent rgba(0,0,0,.7) rgba(0,0,0,.7) !important}.button.is-warning.is-outlined[disabled],fieldset[disabled] .button.is-warning.is-outlined{background-color:transparent;border-color:#ffe08a;box-shadow:none;color:#ffe08a}.button.is-warning.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,.7);color:rgba(0,0,0,.7)}.button.is-warning.is-inverted.is-outlined:hover,.button.is-warning.is-inverted.is-outlined.is-hovered,.button.is-warning.is-inverted.is-outlined:focus,.button.is-warning.is-inverted.is-outlined.is-focused{background-color:rgba(0,0,0,.7);color:#ffe08a}.button.is-warning.is-inverted.is-outlined.is-loading:hover::after,.button.is-warning.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-warning.is-inverted.is-outlined.is-loading:focus::after,.button.is-warning.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #ffe08a #ffe08a !important}.button.is-warning.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-warning.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,.7);box-shadow:none;color:rgba(0,0,0,.7)}.button.is-warning.is-light{background-color:#fffaeb;color:#946c00}.button.is-warning.is-light:hover,.button.is-warning.is-light.is-hovered{background-color:#fff6de;border-color:transparent;color:#946c00}.button.is-warning.is-light:active,.button.is-warning.is-light.is-active{background-color:#fff3d1;border-color:transparent;color:#946c00}.button.is-danger{background-color:#f14668;border-color:transparent;color:#fff}.button.is-danger:hover,.button.is-danger.is-hovered{background-color:#f03a5f;border-color:transparent;color:#fff}.button.is-danger:focus,.button.is-danger.is-focused{border-color:transparent;color:#fff}.button.is-danger:focus:not(:active),.button.is-danger.is-focused:not(:active){box-shadow:0 0 0 .125em rgba(241,70,104,.25)}.button.is-danger:active,.button.is-danger.is-active{background-color:#ef2e55;border-color:transparent;color:#fff}.button.is-danger[disabled],fieldset[disabled] .button.is-danger{background-color:#f14668;border-color:transparent;box-shadow:none}.button.is-danger.is-inverted{background-color:#fff;color:#f14668}.button.is-danger.is-inverted:hover,.button.is-danger.is-inverted.is-hovered{background-color:#f2f2f2}.button.is-danger.is-inverted[disabled],fieldset[disabled] .button.is-danger.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#f14668}.button.is-danger.is-loading::after{border-color:transparent transparent #fff #fff !important}.button.is-danger.is-outlined{background-color:transparent;border-color:#f14668;color:#f14668}.button.is-danger.is-outlined:hover,.button.is-danger.is-outlined.is-hovered,.button.is-danger.is-outlined:focus,.button.is-danger.is-outlined.is-focused{background-color:#f14668;border-color:#f14668;color:#fff}.button.is-danger.is-outlined.is-loading::after{border-color:transparent transparent #f14668 #f14668 !important}.button.is-danger.is-outlined.is-loading:hover::after,.button.is-danger.is-outlined.is-loading.is-hovered::after,.button.is-danger.is-outlined.is-loading:focus::after,.button.is-danger.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}.button.is-danger.is-outlined[disabled],fieldset[disabled] .button.is-danger.is-outlined{background-color:transparent;border-color:#f14668;box-shadow:none;color:#f14668}.button.is-danger.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-danger.is-inverted.is-outlined:hover,.button.is-danger.is-inverted.is-outlined.is-hovered,.button.is-danger.is-inverted.is-outlined:focus,.button.is-danger.is-inverted.is-outlined.is-focused{background-color:#fff;color:#f14668}.button.is-danger.is-inverted.is-outlined.is-loading:hover::after,.button.is-danger.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-danger.is-inverted.is-outlined.is-loading:focus::after,.button.is-danger.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #f14668 #f14668 !important}.button.is-danger.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-danger.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-danger.is-light{background-color:#feecf0;color:#cc0f35}.button.is-danger.is-light:hover,.button.is-danger.is-light.is-hovered{background-color:#fde0e6;border-color:transparent;color:#cc0f35}.button.is-danger.is-light:active,.button.is-danger.is-light.is-active{background-color:#fcd4dc;border-color:transparent;color:#cc0f35}.button.is-small{font-size:.75rem}.button.is-small:not(.is-rounded){border-radius:2px}.button.is-normal{font-size:1rem}.button.is-medium{font-size:1.25rem}.button.is-large{font-size:1.5rem}.button[disabled],fieldset[disabled] .button{background-color:#fff;border-color:#dbdbdb;box-shadow:none;opacity:.5}.button.is-fullwidth{display:flex;width:100%}.button.is-loading{color:transparent !important;pointer-events:none}.button.is-loading::after{position:absolute;left:calc(50% - (1em * 0.5));top:calc(50% - (1em * 0.5));position:absolute !important}.button.is-static{background-color:#f5f5f5;border-color:#dbdbdb;color:#7a7a7a;box-shadow:none;pointer-events:none}.button.is-rounded{border-radius:9999px;padding-left:calc(1em + 0.25em);padding-right:calc(1em + 0.25em)}.buttons{align-items:center;display:flex;flex-wrap:wrap;justify-content:flex-start}.buttons .button{margin-bottom:.5rem}.buttons .button:not(:last-child):not(.is-fullwidth){margin-right:.5rem}.buttons:last-child{margin-bottom:-0.5rem}.buttons:not(:last-child){margin-bottom:1rem}.buttons.are-small .button:not(.is-normal):not(.is-medium):not(.is-large){font-size:.75rem}.buttons.are-small .button:not(.is-normal):not(.is-medium):not(.is-large):not(.is-rounded){border-radius:2px}.buttons.are-medium .button:not(.is-small):not(.is-normal):not(.is-large){font-size:1.25rem}.buttons.are-large .button:not(.is-small):not(.is-normal):not(.is-medium){font-size:1.5rem}.buttons.has-addons .button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.buttons.has-addons .button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0;margin-right:-1px}.buttons.has-addons .button:last-child{margin-right:0}.buttons.has-addons .button:hover,.buttons.has-addons .button.is-hovered{z-index:2}.buttons.has-addons .button:focus,.buttons.has-addons .button.is-focused,.buttons.has-addons .button:active,.buttons.has-addons .button.is-active,.buttons.has-addons .button.is-selected{z-index:3}.buttons.has-addons .button:focus:hover,.buttons.has-addons .button.is-focused:hover,.buttons.has-addons .button:active:hover,.buttons.has-addons .button.is-active:hover,.buttons.has-addons .button.is-selected:hover{z-index:4}.buttons.has-addons .button.is-expanded{flex-grow:1;flex-shrink:1}.buttons.is-centered{justify-content:center}.buttons.is-centered:not(.has-addons) .button:not(.is-fullwidth){margin-left:.25rem;margin-right:.25rem}.buttons.is-right{justify-content:flex-end}.buttons.is-right:not(.has-addons) .button:not(.is-fullwidth){margin-left:.25rem;margin-right:.25rem}.container{flex-grow:1;margin:0 auto;position:relative;width:auto}.container.is-fluid{max-width:none !important;padding-left:32px;padding-right:32px;width:100%}@media screen and (min-width: 1024px){.container{max-width:960px}}@media screen and (max-width: 1215px){.container.is-widescreen:not(.is-max-desktop){max-width:1152px}}@media screen and (max-width: 1407px){.container.is-fullhd:not(.is-max-desktop):not(.is-max-widescreen){max-width:1344px}}@media screen and (min-width: 1216px){.container:not(.is-max-desktop){max-width:1152px}}@media screen and (min-width: 1408px){.container:not(.is-max-desktop):not(.is-max-widescreen){max-width:1344px}}.content li+li{margin-top:.25em}.content p:not(:last-child),.content dl:not(:last-child),.content ol:not(:last-child),.content ul:not(:last-child),.content blockquote:not(:last-child),.content pre:not(:last-child),.content table:not(:last-child){margin-bottom:1em}.content h1,.content h2,.content h3,.content h4,.content h5,.content h6{color:#363636;font-weight:600;line-height:1.125}.content h1{font-size:2em;margin-bottom:.5em}.content h1:not(:first-child){margin-top:1em}.content h2{font-size:1.75em;margin-bottom:.5714em}.content h2:not(:first-child){margin-top:1.1428em}.content h3{font-size:1.5em;margin-bottom:.6666em}.content h3:not(:first-child){margin-top:1.3333em}.content h4{font-size:1.25em;margin-bottom:.8em}.content h5{font-size:1.125em;margin-bottom:.8888em}.content h6{font-size:1em;margin-bottom:1em}.content blockquote{background-color:#f5f5f5;border-left:5px solid #dbdbdb;padding:1.25em 1.5em}.content ol{list-style-position:outside;margin-left:2em;margin-top:1em}.content ol:not([type]){list-style-type:decimal}.content ol:not([type]).is-lower-alpha{list-style-type:lower-alpha}.content ol:not([type]).is-lower-roman{list-style-type:lower-roman}.content ol:not([type]).is-upper-alpha{list-style-type:upper-alpha}.content ol:not([type]).is-upper-roman{list-style-type:upper-roman}.content ul{list-style:disc outside;margin-left:2em;margin-top:1em}.content ul ul{list-style-type:circle;margin-top:.5em}.content ul ul ul{list-style-type:square}.content dd{margin-left:2em}.content figure{margin-left:2em;margin-right:2em;text-align:center}.content figure:not(:first-child){margin-top:2em}.content figure:not(:last-child){margin-bottom:2em}.content figure img{display:inline-block}.content figure figcaption{font-style:italic}.content pre{-webkit-overflow-scrolling:touch;overflow-x:auto;padding:1.25em 1.5em;white-space:pre;word-wrap:normal}.content sup,.content sub{font-size:75%}.content table{width:100%}.content table td,.content table th{border:1px solid #dbdbdb;border-width:0 0 1px;padding:.5em .75em;vertical-align:top}.content table th{color:#363636}.content table th:not([align]){text-align:inherit}.content table thead td,.content table thead th{border-width:0 0 2px;color:#363636}.content table tfoot td,.content table tfoot th{border-width:2px 0 0;color:#363636}.content table tbody tr:last-child td,.content table tbody tr:last-child th{border-bottom-width:0}.content .tabs li+li{margin-top:0}.content.is-small{font-size:.75rem}.content.is-normal{font-size:1rem}.content.is-medium{font-size:1.25rem}.content.is-large{font-size:1.5rem}.icon{align-items:center;display:inline-flex;justify-content:center;height:1.5rem;width:1.5rem}.icon.is-small{height:1rem;width:1rem}.icon.is-medium{height:2rem;width:2rem}.icon.is-large{height:3rem;width:3rem}.icon-text{align-items:flex-start;color:inherit;display:inline-flex;flex-wrap:wrap;line-height:1.5rem;vertical-align:top}.icon-text .icon{flex-grow:0;flex-shrink:0}.icon-text .icon:not(:last-child){margin-right:.25em}.icon-text .icon:not(:first-child){margin-left:.25em}div.icon-text{display:flex}.image{display:block;position:relative}.image img{display:block;height:auto;width:100%}.image img.is-rounded{border-radius:9999px}.image.is-fullwidth{width:100%}.image.is-square img,.image.is-square .has-ratio,.image.is-1by1 img,.image.is-1by1 .has-ratio,.image.is-5by4 img,.image.is-5by4 .has-ratio,.image.is-4by3 img,.image.is-4by3 .has-ratio,.image.is-3by2 img,.image.is-3by2 .has-ratio,.image.is-5by3 img,.image.is-5by3 .has-ratio,.image.is-16by9 img,.image.is-16by9 .has-ratio,.image.is-2by1 img,.image.is-2by1 .has-ratio,.image.is-3by1 img,.image.is-3by1 .has-ratio,.image.is-4by5 img,.image.is-4by5 .has-ratio,.image.is-3by4 img,.image.is-3by4 .has-ratio,.image.is-2by3 img,.image.is-2by3 .has-ratio,.image.is-3by5 img,.image.is-3by5 .has-ratio,.image.is-9by16 img,.image.is-9by16 .has-ratio,.image.is-1by2 img,.image.is-1by2 .has-ratio,.image.is-1by3 img,.image.is-1by3 .has-ratio{height:100%;width:100%}.image.is-square,.image.is-1by1{padding-top:100%}.image.is-5by4{padding-top:80%}.image.is-4by3{padding-top:75%}.image.is-3by2{padding-top:66.6666%}.image.is-5by3{padding-top:60%}.image.is-16by9{padding-top:56.25%}.image.is-2by1{padding-top:50%}.image.is-3by1{padding-top:33.3333%}.image.is-4by5{padding-top:125%}.image.is-3by4{padding-top:133.3333%}.image.is-2by3{padding-top:150%}.image.is-3by5{padding-top:166.6666%}.image.is-9by16{padding-top:177.7777%}.image.is-1by2{padding-top:200%}.image.is-1by3{padding-top:300%}.image.is-16x16{height:16px;width:16px}.image.is-24x24{height:24px;width:24px}.image.is-32x32{height:32px;width:32px}.image.is-48x48{height:48px;width:48px}.image.is-64x64{height:64px;width:64px}.image.is-96x96{height:96px;width:96px}.image.is-128x128{height:128px;width:128px}.notification{background-color:#f5f5f5;border-radius:4px;position:relative;padding:1.25rem 2.5rem 1.25rem 1.5rem}.notification a:not(.button):not(.dropdown-item){color:currentColor;text-decoration:underline}.notification strong{color:currentColor}.notification code,.notification pre{background:#fff}.notification pre code{background:transparent}.notification>.delete{right:.5rem;position:absolute;top:.5rem}.notification .title,.notification .subtitle,.notification .content{color:currentColor}.notification.is-white{background-color:#fff;color:#0a0a0a}.notification.is-black{background-color:#0a0a0a;color:#fff}.notification.is-light{background-color:#f5f5f5;color:rgba(0,0,0,.7)}.notification.is-dark{background-color:#363636;color:#fff}.notification.is-primary{background-color:#00d1b2;color:#fff}.notification.is-primary.is-light{background-color:#ebfffc;color:#00947e}.notification.is-link{background-color:#485fc7;color:#fff}.notification.is-link.is-light{background-color:#eff1fa;color:#3850b7}.notification.is-info{background-color:#3e8ed0;color:#fff}.notification.is-info.is-light{background-color:#eff5fb;color:#296fa8}.notification.is-success{background-color:#48c78e;color:#fff}.notification.is-success.is-light{background-color:#effaf5;color:#257953}.notification.is-warning{background-color:#ffe08a;color:rgba(0,0,0,.7)}.notification.is-warning.is-light{background-color:#fffaeb;color:#946c00}.notification.is-danger{background-color:#f14668;color:#fff}.notification.is-danger.is-light{background-color:#feecf0;color:#cc0f35}.progress{-moz-appearance:none;-webkit-appearance:none;border:none;border-radius:9999px;display:block;height:1rem;overflow:hidden;padding:0;width:100%}.progress::-webkit-progress-bar{background-color:#ededed}.progress::-webkit-progress-value{background-color:#4a4a4a}.progress::-moz-progress-bar{background-color:#4a4a4a}.progress::-ms-fill{background-color:#4a4a4a;border:none}.progress.is-white::-webkit-progress-value{background-color:#fff}.progress.is-white::-moz-progress-bar{background-color:#fff}.progress.is-white::-ms-fill{background-color:#fff}.progress.is-white:indeterminate{background-image:linear-gradient(to right, white 30%, #ededed 30%)}.progress.is-black::-webkit-progress-value{background-color:#0a0a0a}.progress.is-black::-moz-progress-bar{background-color:#0a0a0a}.progress.is-black::-ms-fill{background-color:#0a0a0a}.progress.is-black:indeterminate{background-image:linear-gradient(to right, #0a0a0a 30%, #ededed 30%)}.progress.is-light::-webkit-progress-value{background-color:#f5f5f5}.progress.is-light::-moz-progress-bar{background-color:#f5f5f5}.progress.is-light::-ms-fill{background-color:#f5f5f5}.progress.is-light:indeterminate{background-image:linear-gradient(to right, whitesmoke 30%, #ededed 30%)}.progress.is-dark::-webkit-progress-value{background-color:#363636}.progress.is-dark::-moz-progress-bar{background-color:#363636}.progress.is-dark::-ms-fill{background-color:#363636}.progress.is-dark:indeterminate{background-image:linear-gradient(to right, #363636 30%, #ededed 30%)}.progress.is-primary::-webkit-progress-value{background-color:#00d1b2}.progress.is-primary::-moz-progress-bar{background-color:#00d1b2}.progress.is-primary::-ms-fill{background-color:#00d1b2}.progress.is-primary:indeterminate{background-image:linear-gradient(to right, #00d1b2 30%, #ededed 30%)}.progress.is-link::-webkit-progress-value{background-color:#485fc7}.progress.is-link::-moz-progress-bar{background-color:#485fc7}.progress.is-link::-ms-fill{background-color:#485fc7}.progress.is-link:indeterminate{background-image:linear-gradient(to right, #485fc7 30%, #ededed 30%)}.progress.is-info::-webkit-progress-value{background-color:#3e8ed0}.progress.is-info::-moz-progress-bar{background-color:#3e8ed0}.progress.is-info::-ms-fill{background-color:#3e8ed0}.progress.is-info:indeterminate{background-image:linear-gradient(to right, #3e8ed0 30%, #ededed 30%)}.progress.is-success::-webkit-progress-value{background-color:#48c78e}.progress.is-success::-moz-progress-bar{background-color:#48c78e}.progress.is-success::-ms-fill{background-color:#48c78e}.progress.is-success:indeterminate{background-image:linear-gradient(to right, #48c78e 30%, #ededed 30%)}.progress.is-warning::-webkit-progress-value{background-color:#ffe08a}.progress.is-warning::-moz-progress-bar{background-color:#ffe08a}.progress.is-warning::-ms-fill{background-color:#ffe08a}.progress.is-warning:indeterminate{background-image:linear-gradient(to right, #ffe08a 30%, #ededed 30%)}.progress.is-danger::-webkit-progress-value{background-color:#f14668}.progress.is-danger::-moz-progress-bar{background-color:#f14668}.progress.is-danger::-ms-fill{background-color:#f14668}.progress.is-danger:indeterminate{background-image:linear-gradient(to right, #f14668 30%, #ededed 30%)}.progress:indeterminate{animation-duration:1.5s;animation-iteration-count:infinite;animation-name:moveIndeterminate;animation-timing-function:linear;background-color:#ededed;background-image:linear-gradient(to right, #4a4a4a 30%, #ededed 30%);background-position:top left;background-repeat:no-repeat;background-size:150% 150%}.progress:indeterminate::-webkit-progress-bar{background-color:transparent}.progress:indeterminate::-moz-progress-bar{background-color:transparent}.progress:indeterminate::-ms-fill{animation-name:none}.progress.is-small{height:.75rem}.progress.is-medium{height:1.25rem}.progress.is-large{height:1.5rem}@keyframes moveIndeterminate{from{background-position:200% 0}to{background-position:-200% 0}}.table{background-color:#fff;color:#363636}.table td,.table th{border:1px solid #dbdbdb;border-width:0 0 1px;padding:.5em .75em;vertical-align:top}.table td.is-white,.table th.is-white{background-color:#fff;border-color:#fff;color:#0a0a0a}.table td.is-black,.table th.is-black{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}.table td.is-light,.table th.is-light{background-color:#f5f5f5;border-color:#f5f5f5;color:rgba(0,0,0,.7)}.table td.is-dark,.table th.is-dark{background-color:#363636;border-color:#363636;color:#fff}.table td.is-primary,.table th.is-primary{background-color:#00d1b2;border-color:#00d1b2;color:#fff}.table td.is-link,.table th.is-link{background-color:#485fc7;border-color:#485fc7;color:#fff}.table td.is-info,.table th.is-info{background-color:#3e8ed0;border-color:#3e8ed0;color:#fff}.table td.is-success,.table th.is-success{background-color:#48c78e;border-color:#48c78e;color:#fff}.table td.is-warning,.table th.is-warning{background-color:#ffe08a;border-color:#ffe08a;color:rgba(0,0,0,.7)}.table td.is-danger,.table th.is-danger{background-color:#f14668;border-color:#f14668;color:#fff}.table td.is-narrow,.table th.is-narrow{white-space:nowrap;width:1%}.table td.is-selected,.table th.is-selected{background-color:#00d1b2;color:#fff}.table td.is-selected a,.table td.is-selected strong,.table th.is-selected a,.table th.is-selected strong{color:currentColor}.table td.is-vcentered,.table th.is-vcentered{vertical-align:middle}.table th{color:#363636}.table th:not([align]){text-align:inherit}.table tr.is-selected{background-color:#00d1b2;color:#fff}.table tr.is-selected a,.table tr.is-selected strong{color:currentColor}.table tr.is-selected td,.table tr.is-selected th{border-color:#fff;color:currentColor}.table thead{background-color:transparent}.table thead td,.table thead th{border-width:0 0 2px;color:#363636}.table tfoot{background-color:transparent}.table tfoot td,.table tfoot th{border-width:2px 0 0;color:#363636}.table tbody{background-color:transparent}.table tbody tr:last-child td,.table tbody tr:last-child th{border-bottom-width:0}.table.is-bordered td,.table.is-bordered th{border-width:1px}.table.is-bordered tr:last-child td,.table.is-bordered tr:last-child th{border-bottom-width:1px}.table.is-fullwidth{width:100%}.table.is-hoverable tbody tr:not(.is-selected):hover{background-color:#fafafa}.table.is-hoverable.is-striped tbody tr:not(.is-selected):hover{background-color:#fafafa}.table.is-hoverable.is-striped tbody tr:not(.is-selected):hover:nth-child(even){background-color:#f5f5f5}.table.is-narrow td,.table.is-narrow th{padding:.25em .5em}.table.is-striped tbody tr:not(.is-selected):nth-child(even){background-color:#fafafa}.table-container{-webkit-overflow-scrolling:touch;overflow:auto;overflow-y:hidden;max-width:100%}.tags{align-items:center;display:flex;flex-wrap:wrap;justify-content:flex-start}.tags .tag{margin-bottom:.5rem}.tags .tag:not(:last-child){margin-right:.5rem}.tags:last-child{margin-bottom:-0.5rem}.tags:not(:last-child){margin-bottom:1rem}.tags.are-medium .tag:not(.is-normal):not(.is-large){font-size:1rem}.tags.are-large .tag:not(.is-normal):not(.is-medium){font-size:1.25rem}.tags.is-centered{justify-content:center}.tags.is-centered .tag{margin-right:.25rem;margin-left:.25rem}.tags.is-right{justify-content:flex-end}.tags.is-right .tag:not(:first-child){margin-left:.5rem}.tags.is-right .tag:not(:last-child){margin-right:0}.tags.has-addons .tag{margin-right:0}.tags.has-addons .tag:not(:first-child){margin-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.tags.has-addons .tag:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.tag:not(body){align-items:center;background-color:#f5f5f5;border-radius:4px;color:#4a4a4a;display:inline-flex;font-size:.75rem;height:2em;justify-content:center;line-height:1.5;padding-left:.75em;padding-right:.75em;white-space:nowrap}.tag:not(body) .delete{margin-left:.25rem;margin-right:-0.375rem}.tag:not(body).is-white{background-color:#fff;color:#0a0a0a}.tag:not(body).is-black{background-color:#0a0a0a;color:#fff}.tag:not(body).is-light{background-color:#f5f5f5;color:rgba(0,0,0,.7)}.tag:not(body).is-dark{background-color:#363636;color:#fff}.tag:not(body).is-primary{background-color:#00d1b2;color:#fff}.tag:not(body).is-primary.is-light{background-color:#ebfffc;color:#00947e}.tag:not(body).is-link{background-color:#485fc7;color:#fff}.tag:not(body).is-link.is-light{background-color:#eff1fa;color:#3850b7}.tag:not(body).is-info{background-color:#3e8ed0;color:#fff}.tag:not(body).is-info.is-light{background-color:#eff5fb;color:#296fa8}.tag:not(body).is-success{background-color:#48c78e;color:#fff}.tag:not(body).is-success.is-light{background-color:#effaf5;color:#257953}.tag:not(body).is-warning{background-color:#ffe08a;color:rgba(0,0,0,.7)}.tag:not(body).is-warning.is-light{background-color:#fffaeb;color:#946c00}.tag:not(body).is-danger{background-color:#f14668;color:#fff}.tag:not(body).is-danger.is-light{background-color:#feecf0;color:#cc0f35}.tag:not(body).is-normal{font-size:.75rem}.tag:not(body).is-medium{font-size:1rem}.tag:not(body).is-large{font-size:1.25rem}.tag:not(body) .icon:first-child:not(:last-child){margin-left:-0.375em;margin-right:.1875em}.tag:not(body) .icon:last-child:not(:first-child){margin-left:.1875em;margin-right:-0.375em}.tag:not(body) .icon:first-child:last-child{margin-left:-0.375em;margin-right:-0.375em}.tag:not(body).is-delete{margin-left:1px;padding:0;position:relative;width:2em}.tag:not(body).is-delete::before,.tag:not(body).is-delete::after{background-color:currentColor;content:\\\"\\\";display:block;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%) rotate(45deg);transform-origin:center center}.tag:not(body).is-delete::before{height:1px;width:50%}.tag:not(body).is-delete::after{height:50%;width:1px}.tag:not(body).is-delete:hover,.tag:not(body).is-delete:focus{background-color:#e8e8e8}.tag:not(body).is-delete:active{background-color:#dbdbdb}.tag:not(body).is-rounded{border-radius:9999px}a.tag:hover{text-decoration:underline}.title,.subtitle{word-break:break-word}.title em,.title span,.subtitle em,.subtitle span{font-weight:inherit}.title sub,.subtitle sub{font-size:.75em}.title sup,.subtitle sup{font-size:.75em}.title .tag,.subtitle .tag{vertical-align:middle}.title{color:#363636;font-size:2rem;font-weight:600;line-height:1.125}.title strong{color:inherit;font-weight:inherit}.title:not(.is-spaced)+.subtitle{margin-top:-1.25rem}.title.is-1{font-size:3rem}.title.is-2{font-size:2.5rem}.title.is-3{font-size:2rem}.title.is-4{font-size:1.5rem}.title.is-5{font-size:1.25rem}.title.is-6{font-size:1rem}.title.is-7{font-size:.75rem}.subtitle{color:#4a4a4a;font-size:1.25rem;font-weight:400;line-height:1.25}.subtitle strong{color:#363636;font-weight:600}.subtitle:not(.is-spaced)+.title{margin-top:-1.25rem}.subtitle.is-1{font-size:3rem}.subtitle.is-2{font-size:2.5rem}.subtitle.is-3{font-size:2rem}.subtitle.is-4{font-size:1.5rem}.subtitle.is-5{font-size:1.25rem}.subtitle.is-6{font-size:1rem}.subtitle.is-7{font-size:.75rem}.heading{display:block;font-size:11px;letter-spacing:1px;margin-bottom:5px;text-transform:uppercase}.number{align-items:center;background-color:#f5f5f5;border-radius:9999px;display:inline-flex;font-size:1.25rem;height:2em;justify-content:center;margin-right:1.5rem;min-width:2.5em;padding:.25rem .5rem;text-align:center;vertical-align:top}.select select,.textarea,.input{background-color:#fff;border-color:#dbdbdb;border-radius:4px;color:#363636}.select select::-moz-placeholder,.textarea::-moz-placeholder,.input::-moz-placeholder{color:rgba(54,54,54,.3)}.select select::-webkit-input-placeholder,.textarea::-webkit-input-placeholder,.input::-webkit-input-placeholder{color:rgba(54,54,54,.3)}.select select:-moz-placeholder,.textarea:-moz-placeholder,.input:-moz-placeholder{color:rgba(54,54,54,.3)}.select select:-ms-input-placeholder,.textarea:-ms-input-placeholder,.input:-ms-input-placeholder{color:rgba(54,54,54,.3)}.select select:hover,.textarea:hover,.input:hover,.select select.is-hovered,.is-hovered.textarea,.is-hovered.input{border-color:#b5b5b5}.select select:focus,.textarea:focus,.input:focus,.select select.is-focused,.is-focused.textarea,.is-focused.input,.select select:active,.textarea:active,.input:active,.select select.is-active,.is-active.textarea,.is-active.input{border-color:#485fc7;box-shadow:0 0 0 .125em rgba(72,95,199,.25)}.select select[disabled],[disabled].textarea,[disabled].input,fieldset[disabled] .select select,.select fieldset[disabled] select,fieldset[disabled] .textarea,fieldset[disabled] .input{background-color:#f5f5f5;border-color:#f5f5f5;box-shadow:none;color:#7a7a7a}.select select[disabled]::-moz-placeholder,[disabled].textarea::-moz-placeholder,[disabled].input::-moz-placeholder,fieldset[disabled] .select select::-moz-placeholder,.select fieldset[disabled] select::-moz-placeholder,fieldset[disabled] .textarea::-moz-placeholder,fieldset[disabled] .input::-moz-placeholder{color:rgba(122,122,122,.3)}.select select[disabled]::-webkit-input-placeholder,[disabled].textarea::-webkit-input-placeholder,[disabled].input::-webkit-input-placeholder,fieldset[disabled] .select select::-webkit-input-placeholder,.select fieldset[disabled] select::-webkit-input-placeholder,fieldset[disabled] .textarea::-webkit-input-placeholder,fieldset[disabled] .input::-webkit-input-placeholder{color:rgba(122,122,122,.3)}.select select[disabled]:-moz-placeholder,[disabled].textarea:-moz-placeholder,[disabled].input:-moz-placeholder,fieldset[disabled] .select select:-moz-placeholder,.select fieldset[disabled] select:-moz-placeholder,fieldset[disabled] .textarea:-moz-placeholder,fieldset[disabled] .input:-moz-placeholder{color:rgba(122,122,122,.3)}.select select[disabled]:-ms-input-placeholder,[disabled].textarea:-ms-input-placeholder,[disabled].input:-ms-input-placeholder,fieldset[disabled] .select select:-ms-input-placeholder,.select fieldset[disabled] select:-ms-input-placeholder,fieldset[disabled] .textarea:-ms-input-placeholder,fieldset[disabled] .input:-ms-input-placeholder{color:rgba(122,122,122,.3)}.textarea,.input{box-shadow:inset 0 .0625em .125em rgba(10,10,10,.05);max-width:100%;width:100%}[readonly].textarea,[readonly].input{box-shadow:none}.is-white.textarea,.is-white.input{border-color:#fff}.is-white.textarea:focus,.is-white.input:focus,.is-white.is-focused.textarea,.is-white.is-focused.input,.is-white.textarea:active,.is-white.input:active,.is-white.is-active.textarea,.is-white.is-active.input{box-shadow:0 0 0 .125em rgba(255,255,255,.25)}.is-black.textarea,.is-black.input{border-color:#0a0a0a}.is-black.textarea:focus,.is-black.input:focus,.is-black.is-focused.textarea,.is-black.is-focused.input,.is-black.textarea:active,.is-black.input:active,.is-black.is-active.textarea,.is-black.is-active.input{box-shadow:0 0 0 .125em rgba(10,10,10,.25)}.is-light.textarea,.is-light.input{border-color:#f5f5f5}.is-light.textarea:focus,.is-light.input:focus,.is-light.is-focused.textarea,.is-light.is-focused.input,.is-light.textarea:active,.is-light.input:active,.is-light.is-active.textarea,.is-light.is-active.input{box-shadow:0 0 0 .125em rgba(245,245,245,.25)}.is-dark.textarea,.is-dark.input{border-color:#363636}.is-dark.textarea:focus,.is-dark.input:focus,.is-dark.is-focused.textarea,.is-dark.is-focused.input,.is-dark.textarea:active,.is-dark.input:active,.is-dark.is-active.textarea,.is-dark.is-active.input{box-shadow:0 0 0 .125em rgba(54,54,54,.25)}.is-primary.textarea,.is-primary.input{border-color:#00d1b2}.is-primary.textarea:focus,.is-primary.input:focus,.is-primary.is-focused.textarea,.is-primary.is-focused.input,.is-primary.textarea:active,.is-primary.input:active,.is-primary.is-active.textarea,.is-primary.is-active.input{box-shadow:0 0 0 .125em rgba(0,209,178,.25)}.is-link.textarea,.is-link.input{border-color:#485fc7}.is-link.textarea:focus,.is-link.input:focus,.is-link.is-focused.textarea,.is-link.is-focused.input,.is-link.textarea:active,.is-link.input:active,.is-link.is-active.textarea,.is-link.is-active.input{box-shadow:0 0 0 .125em rgba(72,95,199,.25)}.is-info.textarea,.is-info.input{border-color:#3e8ed0}.is-info.textarea:focus,.is-info.input:focus,.is-info.is-focused.textarea,.is-info.is-focused.input,.is-info.textarea:active,.is-info.input:active,.is-info.is-active.textarea,.is-info.is-active.input{box-shadow:0 0 0 .125em rgba(62,142,208,.25)}.is-success.textarea,.is-success.input{border-color:#48c78e}.is-success.textarea:focus,.is-success.input:focus,.is-success.is-focused.textarea,.is-success.is-focused.input,.is-success.textarea:active,.is-success.input:active,.is-success.is-active.textarea,.is-success.is-active.input{box-shadow:0 0 0 .125em rgba(72,199,142,.25)}.is-warning.textarea,.is-warning.input{border-color:#ffe08a}.is-warning.textarea:focus,.is-warning.input:focus,.is-warning.is-focused.textarea,.is-warning.is-focused.input,.is-warning.textarea:active,.is-warning.input:active,.is-warning.is-active.textarea,.is-warning.is-active.input{box-shadow:0 0 0 .125em rgba(255,224,138,.25)}.is-danger.textarea,.is-danger.input{border-color:#f14668}.is-danger.textarea:focus,.is-danger.input:focus,.is-danger.is-focused.textarea,.is-danger.is-focused.input,.is-danger.textarea:active,.is-danger.input:active,.is-danger.is-active.textarea,.is-danger.is-active.input{box-shadow:0 0 0 .125em rgba(241,70,104,.25)}.is-small.textarea,.is-small.input{border-radius:2px;font-size:.75rem}.is-medium.textarea,.is-medium.input{font-size:1.25rem}.is-large.textarea,.is-large.input{font-size:1.5rem}.is-fullwidth.textarea,.is-fullwidth.input{display:block;width:100%}.is-inline.textarea,.is-inline.input{display:inline;width:auto}.input.is-rounded{border-radius:9999px;padding-left:calc(calc(0.75em - 1px) + 0.375em);padding-right:calc(calc(0.75em - 1px) + 0.375em)}.input.is-static{background-color:transparent;border-color:transparent;box-shadow:none;padding-left:0;padding-right:0}.textarea{display:block;max-width:100%;min-width:100%;padding:calc(0.75em - 1px);resize:vertical}.textarea:not([rows]){max-height:40em;min-height:8em}.textarea[rows]{height:initial}.textarea.has-fixed-size{resize:none}.radio,.checkbox{cursor:pointer;display:inline-block;line-height:1.25;position:relative}.radio input,.checkbox input{cursor:pointer}.radio:hover,.checkbox:hover{color:#363636}[disabled].radio,[disabled].checkbox,fieldset[disabled] .radio,fieldset[disabled] .checkbox,.radio input[disabled],.checkbox input[disabled]{color:#7a7a7a;cursor:not-allowed}.radio+.radio{margin-left:.5em}.select{display:inline-block;max-width:100%;position:relative;vertical-align:top}.select:not(.is-multiple){height:2.5em}.select:not(.is-multiple):not(.is-loading)::after{border-color:#485fc7;right:1.125em;z-index:4}.select.is-rounded select{border-radius:9999px;padding-left:1em}.select select{cursor:pointer;display:block;font-size:1em;max-width:100%;outline:none}.select select::-ms-expand{display:none}.select select[disabled]:hover,fieldset[disabled] .select select:hover{border-color:#f5f5f5}.select select:not([multiple]){padding-right:2.5em}.select select[multiple]{height:auto;padding:0}.select select[multiple] option{padding:.5em 1em}.select:not(.is-multiple):not(.is-loading):hover::after{border-color:#363636}.select.is-white:not(:hover)::after{border-color:#fff}.select.is-white select{border-color:#fff}.select.is-white select:hover,.select.is-white select.is-hovered{border-color:#f2f2f2}.select.is-white select:focus,.select.is-white select.is-focused,.select.is-white select:active,.select.is-white select.is-active{box-shadow:0 0 0 .125em rgba(255,255,255,.25)}.select.is-black:not(:hover)::after{border-color:#0a0a0a}.select.is-black select{border-color:#0a0a0a}.select.is-black select:hover,.select.is-black select.is-hovered{border-color:#000}.select.is-black select:focus,.select.is-black select.is-focused,.select.is-black select:active,.select.is-black select.is-active{box-shadow:0 0 0 .125em rgba(10,10,10,.25)}.select.is-light:not(:hover)::after{border-color:#f5f5f5}.select.is-light select{border-color:#f5f5f5}.select.is-light select:hover,.select.is-light select.is-hovered{border-color:#e8e8e8}.select.is-light select:focus,.select.is-light select.is-focused,.select.is-light select:active,.select.is-light select.is-active{box-shadow:0 0 0 .125em rgba(245,245,245,.25)}.select.is-dark:not(:hover)::after{border-color:#363636}.select.is-dark select{border-color:#363636}.select.is-dark select:hover,.select.is-dark select.is-hovered{border-color:#292929}.select.is-dark select:focus,.select.is-dark select.is-focused,.select.is-dark select:active,.select.is-dark select.is-active{box-shadow:0 0 0 .125em rgba(54,54,54,.25)}.select.is-primary:not(:hover)::after{border-color:#00d1b2}.select.is-primary select{border-color:#00d1b2}.select.is-primary select:hover,.select.is-primary select.is-hovered{border-color:#00b89c}.select.is-primary select:focus,.select.is-primary select.is-focused,.select.is-primary select:active,.select.is-primary select.is-active{box-shadow:0 0 0 .125em rgba(0,209,178,.25)}.select.is-link:not(:hover)::after{border-color:#485fc7}.select.is-link select{border-color:#485fc7}.select.is-link select:hover,.select.is-link select.is-hovered{border-color:#3a51bb}.select.is-link select:focus,.select.is-link select.is-focused,.select.is-link select:active,.select.is-link select.is-active{box-shadow:0 0 0 .125em rgba(72,95,199,.25)}.select.is-info:not(:hover)::after{border-color:#3e8ed0}.select.is-info select{border-color:#3e8ed0}.select.is-info select:hover,.select.is-info select.is-hovered{border-color:#3082c5}.select.is-info select:focus,.select.is-info select.is-focused,.select.is-info select:active,.select.is-info select.is-active{box-shadow:0 0 0 .125em rgba(62,142,208,.25)}.select.is-success:not(:hover)::after{border-color:#48c78e}.select.is-success select{border-color:#48c78e}.select.is-success select:hover,.select.is-success select.is-hovered{border-color:#3abb81}.select.is-success select:focus,.select.is-success select.is-focused,.select.is-success select:active,.select.is-success select.is-active{box-shadow:0 0 0 .125em rgba(72,199,142,.25)}.select.is-warning:not(:hover)::after{border-color:#ffe08a}.select.is-warning select{border-color:#ffe08a}.select.is-warning select:hover,.select.is-warning select.is-hovered{border-color:#ffd970}.select.is-warning select:focus,.select.is-warning select.is-focused,.select.is-warning select:active,.select.is-warning select.is-active{box-shadow:0 0 0 .125em rgba(255,224,138,.25)}.select.is-danger:not(:hover)::after{border-color:#f14668}.select.is-danger select{border-color:#f14668}.select.is-danger select:hover,.select.is-danger select.is-hovered{border-color:#ef2e55}.select.is-danger select:focus,.select.is-danger select.is-focused,.select.is-danger select:active,.select.is-danger select.is-active{box-shadow:0 0 0 .125em rgba(241,70,104,.25)}.select.is-small{border-radius:2px;font-size:.75rem}.select.is-medium{font-size:1.25rem}.select.is-large{font-size:1.5rem}.select.is-disabled::after{border-color:#7a7a7a}.select.is-fullwidth{width:100%}.select.is-fullwidth select{width:100%}.select.is-loading::after{margin-top:0;position:absolute;right:.625em;top:.625em;transform:none}.select.is-loading.is-small:after{font-size:.75rem}.select.is-loading.is-medium:after{font-size:1.25rem}.select.is-loading.is-large:after{font-size:1.5rem}.file{align-items:stretch;display:flex;justify-content:flex-start;position:relative}.file.is-white .file-cta{background-color:#fff;border-color:transparent;color:#0a0a0a}.file.is-white:hover .file-cta,.file.is-white.is-hovered .file-cta{background-color:#f9f9f9;border-color:transparent;color:#0a0a0a}.file.is-white:focus .file-cta,.file.is-white.is-focused .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(255,255,255,.25);color:#0a0a0a}.file.is-white:active .file-cta,.file.is-white.is-active .file-cta{background-color:#f2f2f2;border-color:transparent;color:#0a0a0a}.file.is-black .file-cta{background-color:#0a0a0a;border-color:transparent;color:#fff}.file.is-black:hover .file-cta,.file.is-black.is-hovered .file-cta{background-color:#040404;border-color:transparent;color:#fff}.file.is-black:focus .file-cta,.file.is-black.is-focused .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(10,10,10,.25);color:#fff}.file.is-black:active .file-cta,.file.is-black.is-active .file-cta{background-color:#000;border-color:transparent;color:#fff}.file.is-light .file-cta{background-color:#f5f5f5;border-color:transparent;color:rgba(0,0,0,.7)}.file.is-light:hover .file-cta,.file.is-light.is-hovered .file-cta{background-color:#eee;border-color:transparent;color:rgba(0,0,0,.7)}.file.is-light:focus .file-cta,.file.is-light.is-focused .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(245,245,245,.25);color:rgba(0,0,0,.7)}.file.is-light:active .file-cta,.file.is-light.is-active .file-cta{background-color:#e8e8e8;border-color:transparent;color:rgba(0,0,0,.7)}.file.is-dark .file-cta{background-color:#363636;border-color:transparent;color:#fff}.file.is-dark:hover .file-cta,.file.is-dark.is-hovered .file-cta{background-color:#2f2f2f;border-color:transparent;color:#fff}.file.is-dark:focus .file-cta,.file.is-dark.is-focused .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(54,54,54,.25);color:#fff}.file.is-dark:active .file-cta,.file.is-dark.is-active .file-cta{background-color:#292929;border-color:transparent;color:#fff}.file.is-primary .file-cta{background-color:#00d1b2;border-color:transparent;color:#fff}.file.is-primary:hover .file-cta,.file.is-primary.is-hovered .file-cta{background-color:#00c4a7;border-color:transparent;color:#fff}.file.is-primary:focus .file-cta,.file.is-primary.is-focused .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(0,209,178,.25);color:#fff}.file.is-primary:active .file-cta,.file.is-primary.is-active .file-cta{background-color:#00b89c;border-color:transparent;color:#fff}.file.is-link .file-cta{background-color:#485fc7;border-color:transparent;color:#fff}.file.is-link:hover .file-cta,.file.is-link.is-hovered .file-cta{background-color:#3e56c4;border-color:transparent;color:#fff}.file.is-link:focus .file-cta,.file.is-link.is-focused .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(72,95,199,.25);color:#fff}.file.is-link:active .file-cta,.file.is-link.is-active .file-cta{background-color:#3a51bb;border-color:transparent;color:#fff}.file.is-info .file-cta{background-color:#3e8ed0;border-color:transparent;color:#fff}.file.is-info:hover .file-cta,.file.is-info.is-hovered .file-cta{background-color:#3488ce;border-color:transparent;color:#fff}.file.is-info:focus .file-cta,.file.is-info.is-focused .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(62,142,208,.25);color:#fff}.file.is-info:active .file-cta,.file.is-info.is-active .file-cta{background-color:#3082c5;border-color:transparent;color:#fff}.file.is-success .file-cta{background-color:#48c78e;border-color:transparent;color:#fff}.file.is-success:hover .file-cta,.file.is-success.is-hovered .file-cta{background-color:#3ec487;border-color:transparent;color:#fff}.file.is-success:focus .file-cta,.file.is-success.is-focused .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(72,199,142,.25);color:#fff}.file.is-success:active .file-cta,.file.is-success.is-active .file-cta{background-color:#3abb81;border-color:transparent;color:#fff}.file.is-warning .file-cta{background-color:#ffe08a;border-color:transparent;color:rgba(0,0,0,.7)}.file.is-warning:hover .file-cta,.file.is-warning.is-hovered .file-cta{background-color:#ffdc7d;border-color:transparent;color:rgba(0,0,0,.7)}.file.is-warning:focus .file-cta,.file.is-warning.is-focused .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(255,224,138,.25);color:rgba(0,0,0,.7)}.file.is-warning:active .file-cta,.file.is-warning.is-active .file-cta{background-color:#ffd970;border-color:transparent;color:rgba(0,0,0,.7)}.file.is-danger .file-cta{background-color:#f14668;border-color:transparent;color:#fff}.file.is-danger:hover .file-cta,.file.is-danger.is-hovered .file-cta{background-color:#f03a5f;border-color:transparent;color:#fff}.file.is-danger:focus .file-cta,.file.is-danger.is-focused .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(241,70,104,.25);color:#fff}.file.is-danger:active .file-cta,.file.is-danger.is-active .file-cta{background-color:#ef2e55;border-color:transparent;color:#fff}.file.is-small{font-size:.75rem}.file.is-normal{font-size:1rem}.file.is-medium{font-size:1.25rem}.file.is-medium .file-icon .fa{font-size:21px}.file.is-large{font-size:1.5rem}.file.is-large .file-icon .fa{font-size:28px}.file.has-name .file-cta{border-bottom-right-radius:0;border-top-right-radius:0}.file.has-name .file-name{border-bottom-left-radius:0;border-top-left-radius:0}.file.has-name.is-empty .file-cta{border-radius:4px}.file.has-name.is-empty .file-name{display:none}.file.is-boxed .file-label{flex-direction:column}.file.is-boxed .file-cta{flex-direction:column;height:auto;padding:1em 3em}.file.is-boxed .file-name{border-width:0 1px 1px}.file.is-boxed .file-icon{height:1.5em;width:1.5em}.file.is-boxed .file-icon .fa{font-size:21px}.file.is-boxed.is-small .file-icon .fa{font-size:14px}.file.is-boxed.is-medium .file-icon .fa{font-size:28px}.file.is-boxed.is-large .file-icon .fa{font-size:35px}.file.is-boxed.has-name .file-cta{border-radius:4px 4px 0 0}.file.is-boxed.has-name .file-name{border-radius:0 0 4px 4px;border-width:0 1px 1px}.file.is-centered{justify-content:center}.file.is-fullwidth .file-label{width:100%}.file.is-fullwidth .file-name{flex-grow:1;max-width:none}.file.is-right{justify-content:flex-end}.file.is-right .file-cta{border-radius:0 4px 4px 0}.file.is-right .file-name{border-radius:4px 0 0 4px;border-width:1px 0 1px 1px;order:-1}.file-label{align-items:stretch;display:flex;cursor:pointer;justify-content:flex-start;overflow:hidden;position:relative}.file-label:hover .file-cta{background-color:#eee;color:#363636}.file-label:hover .file-name{border-color:#d5d5d5}.file-label:active .file-cta{background-color:#e8e8e8;color:#363636}.file-label:active .file-name{border-color:#cfcfcf}.file-input{height:100%;left:0;opacity:0;outline:none;position:absolute;top:0;width:100%}.file-cta,.file-name{border-color:#dbdbdb;border-radius:4px;font-size:1em;padding-left:1em;padding-right:1em;white-space:nowrap}.file-cta{background-color:#f5f5f5;color:#4a4a4a}.file-name{border-color:#dbdbdb;border-style:solid;border-width:1px 1px 1px 0;display:block;max-width:16em;overflow:hidden;text-align:inherit;text-overflow:ellipsis}.file-icon{align-items:center;display:flex;height:1em;justify-content:center;margin-right:.5em;width:1em}.file-icon .fa{font-size:14px}.label{color:#363636;display:block;font-size:1rem;font-weight:700}.label:not(:last-child){margin-bottom:.5em}.label.is-small{font-size:.75rem}.label.is-medium{font-size:1.25rem}.label.is-large{font-size:1.5rem}.help{display:block;font-size:.75rem;margin-top:.25rem}.help.is-white{color:#fff}.help.is-black{color:#0a0a0a}.help.is-light{color:#f5f5f5}.help.is-dark{color:#363636}.help.is-primary{color:#00d1b2}.help.is-link{color:#485fc7}.help.is-info{color:#3e8ed0}.help.is-success{color:#48c78e}.help.is-warning{color:#ffe08a}.help.is-danger{color:#f14668}.field:not(:last-child){margin-bottom:.75rem}.field.has-addons{display:flex;justify-content:flex-start}.field.has-addons .control:not(:last-child){margin-right:-1px}.field.has-addons .control:not(:first-child):not(:last-child) .button,.field.has-addons .control:not(:first-child):not(:last-child) .input,.field.has-addons .control:not(:first-child):not(:last-child) .select select{border-radius:0}.field.has-addons .control:first-child:not(:only-child) .button,.field.has-addons .control:first-child:not(:only-child) .input,.field.has-addons .control:first-child:not(:only-child) .select select{border-bottom-right-radius:0;border-top-right-radius:0}.field.has-addons .control:last-child:not(:only-child) .button,.field.has-addons .control:last-child:not(:only-child) .input,.field.has-addons .control:last-child:not(:only-child) .select select{border-bottom-left-radius:0;border-top-left-radius:0}.field.has-addons .control .button:not([disabled]):hover,.field.has-addons .control .button:not([disabled]).is-hovered,.field.has-addons .control .input:not([disabled]):hover,.field.has-addons .control .input:not([disabled]).is-hovered,.field.has-addons .control .select select:not([disabled]):hover,.field.has-addons .control .select select:not([disabled]).is-hovered{z-index:2}.field.has-addons .control .button:not([disabled]):focus,.field.has-addons .control .button:not([disabled]).is-focused,.field.has-addons .control .button:not([disabled]):active,.field.has-addons .control .button:not([disabled]).is-active,.field.has-addons .control .input:not([disabled]):focus,.field.has-addons .control .input:not([disabled]).is-focused,.field.has-addons .control .input:not([disabled]):active,.field.has-addons .control .input:not([disabled]).is-active,.field.has-addons .control .select select:not([disabled]):focus,.field.has-addons .control .select select:not([disabled]).is-focused,.field.has-addons .control .select select:not([disabled]):active,.field.has-addons .control .select select:not([disabled]).is-active{z-index:3}.field.has-addons .control .button:not([disabled]):focus:hover,.field.has-addons .control .button:not([disabled]).is-focused:hover,.field.has-addons .control .button:not([disabled]):active:hover,.field.has-addons .control .button:not([disabled]).is-active:hover,.field.has-addons .control .input:not([disabled]):focus:hover,.field.has-addons .control .input:not([disabled]).is-focused:hover,.field.has-addons .control .input:not([disabled]):active:hover,.field.has-addons .control .input:not([disabled]).is-active:hover,.field.has-addons .control .select select:not([disabled]):focus:hover,.field.has-addons .control .select select:not([disabled]).is-focused:hover,.field.has-addons .control .select select:not([disabled]):active:hover,.field.has-addons .control .select select:not([disabled]).is-active:hover{z-index:4}.field.has-addons .control.is-expanded{flex-grow:1;flex-shrink:1}.field.has-addons.has-addons-centered{justify-content:center}.field.has-addons.has-addons-right{justify-content:flex-end}.field.has-addons.has-addons-fullwidth .control{flex-grow:1;flex-shrink:0}.field.is-grouped{display:flex;justify-content:flex-start}.field.is-grouped>.control{flex-shrink:0}.field.is-grouped>.control:not(:last-child){margin-bottom:0;margin-right:.75rem}.field.is-grouped>.control.is-expanded{flex-grow:1;flex-shrink:1}.field.is-grouped.is-grouped-centered{justify-content:center}.field.is-grouped.is-grouped-right{justify-content:flex-end}.field.is-grouped.is-grouped-multiline{flex-wrap:wrap}.field.is-grouped.is-grouped-multiline>.control:last-child,.field.is-grouped.is-grouped-multiline>.control:not(:last-child){margin-bottom:.75rem}.field.is-grouped.is-grouped-multiline:last-child{margin-bottom:-0.75rem}.field.is-grouped.is-grouped-multiline:not(:last-child){margin-bottom:0}@media screen and (min-width: 769px),print{.field.is-horizontal{display:flex}}.field-label .label{font-size:inherit}@media screen and (max-width: 768px){.field-label{margin-bottom:.5rem}}@media screen and (min-width: 769px),print{.field-label{flex-basis:0;flex-grow:1;flex-shrink:0;margin-right:1.5rem;text-align:right}.field-label.is-small{font-size:.75rem;padding-top:.375em}.field-label.is-normal{padding-top:.375em}.field-label.is-medium{font-size:1.25rem;padding-top:.375em}.field-label.is-large{font-size:1.5rem;padding-top:.375em}}.field-body .field .field{margin-bottom:0}@media screen and (min-width: 769px),print{.field-body{display:flex;flex-basis:0;flex-grow:5;flex-shrink:1}.field-body .field{margin-bottom:0}.field-body>.field{flex-shrink:1}.field-body>.field:not(.is-narrow){flex-grow:1}.field-body>.field:not(:last-child){margin-right:.75rem}}.control{box-sizing:border-box;clear:both;font-size:1rem;position:relative;text-align:inherit}.control.has-icons-left .input:focus~.icon,.control.has-icons-left .select:focus~.icon,.control.has-icons-right .input:focus~.icon,.control.has-icons-right .select:focus~.icon{color:#4a4a4a}.control.has-icons-left .input.is-small~.icon,.control.has-icons-left .select.is-small~.icon,.control.has-icons-right .input.is-small~.icon,.control.has-icons-right .select.is-small~.icon{font-size:.75rem}.control.has-icons-left .input.is-medium~.icon,.control.has-icons-left .select.is-medium~.icon,.control.has-icons-right .input.is-medium~.icon,.control.has-icons-right .select.is-medium~.icon{font-size:1.25rem}.control.has-icons-left .input.is-large~.icon,.control.has-icons-left .select.is-large~.icon,.control.has-icons-right .input.is-large~.icon,.control.has-icons-right .select.is-large~.icon{font-size:1.5rem}.control.has-icons-left .icon,.control.has-icons-right .icon{color:#dbdbdb;height:2.5em;pointer-events:none;position:absolute;top:0;width:2.5em;z-index:4}.control.has-icons-left .input,.control.has-icons-left .select select{padding-left:2.5em}.control.has-icons-left .icon.is-left{left:0}.control.has-icons-right .input,.control.has-icons-right .select select{padding-right:2.5em}.control.has-icons-right .icon.is-right{right:0}.control.is-loading::after{position:absolute !important;right:.625em;top:.625em;z-index:4}.control.is-loading.is-small:after{font-size:.75rem}.control.is-loading.is-medium:after{font-size:1.25rem}.control.is-loading.is-large:after{font-size:1.5rem}.breadcrumb{font-size:1rem;white-space:nowrap}.breadcrumb a{align-items:center;color:#485fc7;display:flex;justify-content:center;padding:0 .75em}.breadcrumb a:hover{color:#363636}.breadcrumb li{align-items:center;display:flex}.breadcrumb li:first-child a{padding-left:0}.breadcrumb li.is-active a{color:#363636;cursor:default;pointer-events:none}.breadcrumb li+li::before{color:#b5b5b5;content:\\\"/\\\"}.breadcrumb ul,.breadcrumb ol{align-items:flex-start;display:flex;flex-wrap:wrap;justify-content:flex-start}.breadcrumb .icon:first-child{margin-right:.5em}.breadcrumb .icon:last-child{margin-left:.5em}.breadcrumb.is-centered ol,.breadcrumb.is-centered ul{justify-content:center}.breadcrumb.is-right ol,.breadcrumb.is-right ul{justify-content:flex-end}.breadcrumb.is-small{font-size:.75rem}.breadcrumb.is-medium{font-size:1.25rem}.breadcrumb.is-large{font-size:1.5rem}.breadcrumb.has-arrow-separator li+li::before{content:\\\"→\\\"}.breadcrumb.has-bullet-separator li+li::before{content:\\\"•\\\"}.breadcrumb.has-dot-separator li+li::before{content:\\\"·\\\"}.breadcrumb.has-succeeds-separator li+li::before{content:\\\"≻\\\"}.card{background-color:#fff;border-radius:.25rem;box-shadow:0 .5em 1em -0.125em rgba(10,10,10,.1),0 0px 0 1px rgba(10,10,10,.02);color:#4a4a4a;max-width:100%;position:relative}.card-footer:first-child,.card-content:first-child,.card-header:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card-footer:last-child,.card-content:last-child,.card-header:last-child{border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem}.card-header{background-color:transparent;align-items:stretch;box-shadow:0 .125em .25em rgba(10,10,10,.1);display:flex}.card-header-title{align-items:center;color:#363636;display:flex;flex-grow:1;font-weight:700;padding:.75rem 1rem}.card-header-title.is-centered{justify-content:center}.card-header-icon{-moz-appearance:none;-webkit-appearance:none;appearance:none;background:none;border:none;color:currentColor;font-family:inherit;font-size:1em;margin:0;padding:0;align-items:center;cursor:pointer;display:flex;justify-content:center;padding:.75rem 1rem}.card-image{display:block;position:relative}.card-image:first-child img{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card-image:last-child img{border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem}.card-content{background-color:transparent;padding:1.5rem}.card-footer{background-color:transparent;border-top:1px solid #ededed;align-items:stretch;display:flex}.card-footer-item{align-items:center;display:flex;flex-basis:0;flex-grow:1;flex-shrink:0;justify-content:center;padding:.75rem}.card-footer-item:not(:last-child){border-right:1px solid #ededed}.card .media:not(:last-child){margin-bottom:1.5rem}.dropdown{display:inline-flex;position:relative;vertical-align:top}.dropdown.is-active .dropdown-menu,.dropdown.is-hoverable:hover .dropdown-menu{display:block}.dropdown.is-right .dropdown-menu{left:auto;right:0}.dropdown.is-up .dropdown-menu{bottom:100%;padding-bottom:4px;padding-top:initial;top:auto}.dropdown-menu{display:none;left:0;min-width:12rem;padding-top:4px;position:absolute;top:100%;z-index:20}.dropdown-content{background-color:#fff;border-radius:4px;box-shadow:0 .5em 1em -0.125em rgba(10,10,10,.1),0 0px 0 1px rgba(10,10,10,.02);padding-bottom:.5rem;padding-top:.5rem}.dropdown-item{color:#4a4a4a;display:block;font-size:.875rem;line-height:1.5;padding:.375rem 1rem;position:relative}a.dropdown-item,button.dropdown-item{padding-right:3rem;text-align:inherit;white-space:nowrap;width:100%}a.dropdown-item:hover,button.dropdown-item:hover{background-color:#f5f5f5;color:#0a0a0a}a.dropdown-item.is-active,button.dropdown-item.is-active{background-color:#485fc7;color:#fff}.dropdown-divider{background-color:#ededed;border:none;display:block;height:1px;margin:.5rem 0}.level{align-items:center;justify-content:space-between}.level code{border-radius:4px}.level img{display:inline-block;vertical-align:top}.level.is-mobile{display:flex}.level.is-mobile .level-left,.level.is-mobile .level-right{display:flex}.level.is-mobile .level-left+.level-right{margin-top:0}.level.is-mobile .level-item:not(:last-child){margin-bottom:0;margin-right:.75rem}.level.is-mobile .level-item:not(.is-narrow){flex-grow:1}@media screen and (min-width: 769px),print{.level{display:flex}.level>.level-item:not(.is-narrow){flex-grow:1}}.level-item{align-items:center;display:flex;flex-basis:auto;flex-grow:0;flex-shrink:0;justify-content:center}.level-item .title,.level-item .subtitle{margin-bottom:0}@media screen and (max-width: 768px){.level-item:not(:last-child){margin-bottom:.75rem}}.level-left,.level-right{flex-basis:auto;flex-grow:0;flex-shrink:0}.level-left .level-item.is-flexible,.level-right .level-item.is-flexible{flex-grow:1}@media screen and (min-width: 769px),print{.level-left .level-item:not(:last-child),.level-right .level-item:not(:last-child){margin-right:.75rem}}.level-left{align-items:center;justify-content:flex-start}@media screen and (max-width: 768px){.level-left+.level-right{margin-top:1.5rem}}@media screen and (min-width: 769px),print{.level-left{display:flex}}.level-right{align-items:center;justify-content:flex-end}@media screen and (min-width: 769px),print{.level-right{display:flex}}.media{align-items:flex-start;display:flex;text-align:inherit}.media .content:not(:last-child){margin-bottom:.75rem}.media .media{border-top:1px solid rgba(219,219,219,.5);display:flex;padding-top:.75rem}.media .media .content:not(:last-child),.media .media .control:not(:last-child){margin-bottom:.5rem}.media .media .media{padding-top:.5rem}.media .media .media+.media{margin-top:.5rem}.media+.media{border-top:1px solid rgba(219,219,219,.5);margin-top:1rem;padding-top:1rem}.media.is-large+.media{margin-top:1.5rem;padding-top:1.5rem}.media-left,.media-right{flex-basis:auto;flex-grow:0;flex-shrink:0}.media-left{margin-right:1rem}.media-right{margin-left:1rem}.media-content{flex-basis:auto;flex-grow:1;flex-shrink:1;text-align:inherit}@media screen and (max-width: 768px){.media-content{overflow-x:auto}}.menu{font-size:1rem}.menu.is-small{font-size:.75rem}.menu.is-medium{font-size:1.25rem}.menu.is-large{font-size:1.5rem}.menu-list{line-height:1.25}.menu-list a{border-radius:2px;color:#4a4a4a;display:block;padding:.5em .75em}.menu-list a:hover{background-color:#f5f5f5;color:#363636}.menu-list a.is-active{background-color:#485fc7;color:#fff}.menu-list li ul{border-left:1px solid #dbdbdb;margin:.75em;padding-left:.75em}.menu-label{color:#7a7a7a;font-size:.75em;letter-spacing:.1em;text-transform:uppercase}.menu-label:not(:first-child){margin-top:1em}.menu-label:not(:last-child){margin-bottom:1em}.message{background-color:#f5f5f5;border-radius:4px;font-size:1rem}.message strong{color:currentColor}.message a:not(.button):not(.tag):not(.dropdown-item){color:currentColor;text-decoration:underline}.message.is-small{font-size:.75rem}.message.is-medium{font-size:1.25rem}.message.is-large{font-size:1.5rem}.message.is-white{background-color:#fff}.message.is-white .message-header{background-color:#fff;color:#0a0a0a}.message.is-white .message-body{border-color:#fff}.message.is-black{background-color:#fafafa}.message.is-black .message-header{background-color:#0a0a0a;color:#fff}.message.is-black .message-body{border-color:#0a0a0a}.message.is-light{background-color:#fafafa}.message.is-light .message-header{background-color:#f5f5f5;color:rgba(0,0,0,.7)}.message.is-light .message-body{border-color:#f5f5f5}.message.is-dark{background-color:#fafafa}.message.is-dark .message-header{background-color:#363636;color:#fff}.message.is-dark .message-body{border-color:#363636}.message.is-primary{background-color:#ebfffc}.message.is-primary .message-header{background-color:#00d1b2;color:#fff}.message.is-primary .message-body{border-color:#00d1b2;color:#00947e}.message.is-link{background-color:#eff1fa}.message.is-link .message-header{background-color:#485fc7;color:#fff}.message.is-link .message-body{border-color:#485fc7;color:#3850b7}.message.is-info{background-color:#eff5fb}.message.is-info .message-header{background-color:#3e8ed0;color:#fff}.message.is-info .message-body{border-color:#3e8ed0;color:#296fa8}.message.is-success{background-color:#effaf5}.message.is-success .message-header{background-color:#48c78e;color:#fff}.message.is-success .message-body{border-color:#48c78e;color:#257953}.message.is-warning{background-color:#fffaeb}.message.is-warning .message-header{background-color:#ffe08a;color:rgba(0,0,0,.7)}.message.is-warning .message-body{border-color:#ffe08a;color:#946c00}.message.is-danger{background-color:#feecf0}.message.is-danger .message-header{background-color:#f14668;color:#fff}.message.is-danger .message-body{border-color:#f14668;color:#cc0f35}.message-header{align-items:center;background-color:#4a4a4a;border-radius:4px 4px 0 0;color:#fff;display:flex;font-weight:700;justify-content:space-between;line-height:1.25;padding:.75em 1em;position:relative}.message-header .delete{flex-grow:0;flex-shrink:0;margin-left:.75em}.message-header+.message-body{border-width:0;border-top-left-radius:0;border-top-right-radius:0}.message-body{border-color:#dbdbdb;border-radius:4px;border-style:solid;border-width:0 0 0 4px;color:#4a4a4a;padding:1.25em 1.5em}.message-body code,.message-body pre{background-color:#fff}.message-body pre code{background-color:transparent}.modal{align-items:center;display:none;flex-direction:column;justify-content:center;overflow:hidden;position:fixed;z-index:40}.modal.is-active{display:flex}.modal-background{background-color:rgba(10,10,10,.86)}.modal-content,.modal-card{margin:0 20px;max-height:calc(100vh - 160px);overflow:auto;position:relative;width:100%}@media screen and (min-width: 769px){.modal-content,.modal-card{margin:0 auto;max-height:calc(100vh - 40px);width:640px}}.modal-close{background:none;height:40px;position:fixed;right:20px;top:20px;width:40px}.modal-card{display:flex;flex-direction:column;max-height:calc(100vh - 40px);overflow:hidden;-ms-overflow-y:visible}.modal-card-head,.modal-card-foot{align-items:center;background-color:#f5f5f5;display:flex;flex-shrink:0;justify-content:flex-start;padding:20px;position:relative}.modal-card-head{border-bottom:1px solid #dbdbdb;border-top-left-radius:6px;border-top-right-radius:6px}.modal-card-title{color:#363636;flex-grow:1;flex-shrink:0;font-size:1.5rem;line-height:1}.modal-card-foot{border-bottom-left-radius:6px;border-bottom-right-radius:6px;border-top:1px solid #dbdbdb}.modal-card-foot .button:not(:last-child){margin-right:.5em}.modal-card-body{-webkit-overflow-scrolling:touch;background-color:#fff;flex-grow:1;flex-shrink:1;overflow:auto;padding:20px}.navbar{background-color:#fff;min-height:3.25rem;position:relative;z-index:30}.navbar.is-white{background-color:#fff;color:#0a0a0a}.navbar.is-white .navbar-brand>.navbar-item,.navbar.is-white .navbar-brand .navbar-link{color:#0a0a0a}.navbar.is-white .navbar-brand>a.navbar-item:focus,.navbar.is-white .navbar-brand>a.navbar-item:hover,.navbar.is-white .navbar-brand>a.navbar-item.is-active,.navbar.is-white .navbar-brand .navbar-link:focus,.navbar.is-white .navbar-brand .navbar-link:hover,.navbar.is-white .navbar-brand .navbar-link.is-active{background-color:#f2f2f2;color:#0a0a0a}.navbar.is-white .navbar-brand .navbar-link::after{border-color:#0a0a0a}.navbar.is-white .navbar-burger{color:#0a0a0a}@media screen and (min-width: 550px){.navbar.is-white .navbar-start>.navbar-item,.navbar.is-white .navbar-start .navbar-link,.navbar.is-white .navbar-end>.navbar-item,.navbar.is-white .navbar-end .navbar-link{color:#0a0a0a}.navbar.is-white .navbar-start>a.navbar-item:focus,.navbar.is-white .navbar-start>a.navbar-item:hover,.navbar.is-white .navbar-start>a.navbar-item.is-active,.navbar.is-white .navbar-start .navbar-link:focus,.navbar.is-white .navbar-start .navbar-link:hover,.navbar.is-white .navbar-start .navbar-link.is-active,.navbar.is-white .navbar-end>a.navbar-item:focus,.navbar.is-white .navbar-end>a.navbar-item:hover,.navbar.is-white .navbar-end>a.navbar-item.is-active,.navbar.is-white .navbar-end .navbar-link:focus,.navbar.is-white .navbar-end .navbar-link:hover,.navbar.is-white .navbar-end .navbar-link.is-active{background-color:#f2f2f2;color:#0a0a0a}.navbar.is-white .navbar-start .navbar-link::after,.navbar.is-white .navbar-end .navbar-link::after{border-color:#0a0a0a}.navbar.is-white .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-white .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-white .navbar-item.has-dropdown.is-active .navbar-link{background-color:#f2f2f2;color:#0a0a0a}.navbar.is-white .navbar-dropdown a.navbar-item.is-active{background-color:#fff;color:#0a0a0a}}.navbar.is-black{background-color:#0a0a0a;color:#fff}.navbar.is-black .navbar-brand>.navbar-item,.navbar.is-black .navbar-brand .navbar-link{color:#fff}.navbar.is-black .navbar-brand>a.navbar-item:focus,.navbar.is-black .navbar-brand>a.navbar-item:hover,.navbar.is-black .navbar-brand>a.navbar-item.is-active,.navbar.is-black .navbar-brand .navbar-link:focus,.navbar.is-black .navbar-brand .navbar-link:hover,.navbar.is-black .navbar-brand .navbar-link.is-active{background-color:#000;color:#fff}.navbar.is-black .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-black .navbar-burger{color:#fff}@media screen and (min-width: 550px){.navbar.is-black .navbar-start>.navbar-item,.navbar.is-black .navbar-start .navbar-link,.navbar.is-black .navbar-end>.navbar-item,.navbar.is-black .navbar-end .navbar-link{color:#fff}.navbar.is-black .navbar-start>a.navbar-item:focus,.navbar.is-black .navbar-start>a.navbar-item:hover,.navbar.is-black .navbar-start>a.navbar-item.is-active,.navbar.is-black .navbar-start .navbar-link:focus,.navbar.is-black .navbar-start .navbar-link:hover,.navbar.is-black .navbar-start .navbar-link.is-active,.navbar.is-black .navbar-end>a.navbar-item:focus,.navbar.is-black .navbar-end>a.navbar-item:hover,.navbar.is-black .navbar-end>a.navbar-item.is-active,.navbar.is-black .navbar-end .navbar-link:focus,.navbar.is-black .navbar-end .navbar-link:hover,.navbar.is-black .navbar-end .navbar-link.is-active{background-color:#000;color:#fff}.navbar.is-black .navbar-start .navbar-link::after,.navbar.is-black .navbar-end .navbar-link::after{border-color:#fff}.navbar.is-black .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-black .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-black .navbar-item.has-dropdown.is-active .navbar-link{background-color:#000;color:#fff}.navbar.is-black .navbar-dropdown a.navbar-item.is-active{background-color:#0a0a0a;color:#fff}}.navbar.is-light{background-color:#f5f5f5;color:rgba(0,0,0,.7)}.navbar.is-light .navbar-brand>.navbar-item,.navbar.is-light .navbar-brand .navbar-link{color:rgba(0,0,0,.7)}.navbar.is-light .navbar-brand>a.navbar-item:focus,.navbar.is-light .navbar-brand>a.navbar-item:hover,.navbar.is-light .navbar-brand>a.navbar-item.is-active,.navbar.is-light .navbar-brand .navbar-link:focus,.navbar.is-light .navbar-brand .navbar-link:hover,.navbar.is-light .navbar-brand .navbar-link.is-active{background-color:#e8e8e8;color:rgba(0,0,0,.7)}.navbar.is-light .navbar-brand .navbar-link::after{border-color:rgba(0,0,0,.7)}.navbar.is-light .navbar-burger{color:rgba(0,0,0,.7)}@media screen and (min-width: 550px){.navbar.is-light .navbar-start>.navbar-item,.navbar.is-light .navbar-start .navbar-link,.navbar.is-light .navbar-end>.navbar-item,.navbar.is-light .navbar-end .navbar-link{color:rgba(0,0,0,.7)}.navbar.is-light .navbar-start>a.navbar-item:focus,.navbar.is-light .navbar-start>a.navbar-item:hover,.navbar.is-light .navbar-start>a.navbar-item.is-active,.navbar.is-light .navbar-start .navbar-link:focus,.navbar.is-light .navbar-start .navbar-link:hover,.navbar.is-light .navbar-start .navbar-link.is-active,.navbar.is-light .navbar-end>a.navbar-item:focus,.navbar.is-light .navbar-end>a.navbar-item:hover,.navbar.is-light .navbar-end>a.navbar-item.is-active,.navbar.is-light .navbar-end .navbar-link:focus,.navbar.is-light .navbar-end .navbar-link:hover,.navbar.is-light .navbar-end .navbar-link.is-active{background-color:#e8e8e8;color:rgba(0,0,0,.7)}.navbar.is-light .navbar-start .navbar-link::after,.navbar.is-light .navbar-end .navbar-link::after{border-color:rgba(0,0,0,.7)}.navbar.is-light .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-light .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-light .navbar-item.has-dropdown.is-active .navbar-link{background-color:#e8e8e8;color:rgba(0,0,0,.7)}.navbar.is-light .navbar-dropdown a.navbar-item.is-active{background-color:#f5f5f5;color:rgba(0,0,0,.7)}}.navbar.is-dark{background-color:#363636;color:#fff}.navbar.is-dark .navbar-brand>.navbar-item,.navbar.is-dark .navbar-brand .navbar-link{color:#fff}.navbar.is-dark .navbar-brand>a.navbar-item:focus,.navbar.is-dark .navbar-brand>a.navbar-item:hover,.navbar.is-dark .navbar-brand>a.navbar-item.is-active,.navbar.is-dark .navbar-brand .navbar-link:focus,.navbar.is-dark .navbar-brand .navbar-link:hover,.navbar.is-dark .navbar-brand .navbar-link.is-active{background-color:#292929;color:#fff}.navbar.is-dark .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-dark .navbar-burger{color:#fff}@media screen and (min-width: 550px){.navbar.is-dark .navbar-start>.navbar-item,.navbar.is-dark .navbar-start .navbar-link,.navbar.is-dark .navbar-end>.navbar-item,.navbar.is-dark .navbar-end .navbar-link{color:#fff}.navbar.is-dark .navbar-start>a.navbar-item:focus,.navbar.is-dark .navbar-start>a.navbar-item:hover,.navbar.is-dark .navbar-start>a.navbar-item.is-active,.navbar.is-dark .navbar-start .navbar-link:focus,.navbar.is-dark .navbar-start .navbar-link:hover,.navbar.is-dark .navbar-start .navbar-link.is-active,.navbar.is-dark .navbar-end>a.navbar-item:focus,.navbar.is-dark .navbar-end>a.navbar-item:hover,.navbar.is-dark .navbar-end>a.navbar-item.is-active,.navbar.is-dark .navbar-end .navbar-link:focus,.navbar.is-dark .navbar-end .navbar-link:hover,.navbar.is-dark .navbar-end .navbar-link.is-active{background-color:#292929;color:#fff}.navbar.is-dark .navbar-start .navbar-link::after,.navbar.is-dark .navbar-end .navbar-link::after{border-color:#fff}.navbar.is-dark .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-dark .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-dark .navbar-item.has-dropdown.is-active .navbar-link{background-color:#292929;color:#fff}.navbar.is-dark .navbar-dropdown a.navbar-item.is-active{background-color:#363636;color:#fff}}.navbar.is-primary{background-color:#00d1b2;color:#fff}.navbar.is-primary .navbar-brand>.navbar-item,.navbar.is-primary .navbar-brand .navbar-link{color:#fff}.navbar.is-primary .navbar-brand>a.navbar-item:focus,.navbar.is-primary .navbar-brand>a.navbar-item:hover,.navbar.is-primary .navbar-brand>a.navbar-item.is-active,.navbar.is-primary .navbar-brand .navbar-link:focus,.navbar.is-primary .navbar-brand .navbar-link:hover,.navbar.is-primary .navbar-brand .navbar-link.is-active{background-color:#00b89c;color:#fff}.navbar.is-primary .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-primary .navbar-burger{color:#fff}@media screen and (min-width: 550px){.navbar.is-primary .navbar-start>.navbar-item,.navbar.is-primary .navbar-start .navbar-link,.navbar.is-primary .navbar-end>.navbar-item,.navbar.is-primary .navbar-end .navbar-link{color:#fff}.navbar.is-primary .navbar-start>a.navbar-item:focus,.navbar.is-primary .navbar-start>a.navbar-item:hover,.navbar.is-primary .navbar-start>a.navbar-item.is-active,.navbar.is-primary .navbar-start .navbar-link:focus,.navbar.is-primary .navbar-start .navbar-link:hover,.navbar.is-primary .navbar-start .navbar-link.is-active,.navbar.is-primary .navbar-end>a.navbar-item:focus,.navbar.is-primary .navbar-end>a.navbar-item:hover,.navbar.is-primary .navbar-end>a.navbar-item.is-active,.navbar.is-primary .navbar-end .navbar-link:focus,.navbar.is-primary .navbar-end .navbar-link:hover,.navbar.is-primary .navbar-end .navbar-link.is-active{background-color:#00b89c;color:#fff}.navbar.is-primary .navbar-start .navbar-link::after,.navbar.is-primary .navbar-end .navbar-link::after{border-color:#fff}.navbar.is-primary .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-primary .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-primary .navbar-item.has-dropdown.is-active .navbar-link{background-color:#00b89c;color:#fff}.navbar.is-primary .navbar-dropdown a.navbar-item.is-active{background-color:#00d1b2;color:#fff}}.navbar.is-link{background-color:#485fc7;color:#fff}.navbar.is-link .navbar-brand>.navbar-item,.navbar.is-link .navbar-brand .navbar-link{color:#fff}.navbar.is-link .navbar-brand>a.navbar-item:focus,.navbar.is-link .navbar-brand>a.navbar-item:hover,.navbar.is-link .navbar-brand>a.navbar-item.is-active,.navbar.is-link .navbar-brand .navbar-link:focus,.navbar.is-link .navbar-brand .navbar-link:hover,.navbar.is-link .navbar-brand .navbar-link.is-active{background-color:#3a51bb;color:#fff}.navbar.is-link .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-link .navbar-burger{color:#fff}@media screen and (min-width: 550px){.navbar.is-link .navbar-start>.navbar-item,.navbar.is-link .navbar-start .navbar-link,.navbar.is-link .navbar-end>.navbar-item,.navbar.is-link .navbar-end .navbar-link{color:#fff}.navbar.is-link .navbar-start>a.navbar-item:focus,.navbar.is-link .navbar-start>a.navbar-item:hover,.navbar.is-link .navbar-start>a.navbar-item.is-active,.navbar.is-link .navbar-start .navbar-link:focus,.navbar.is-link .navbar-start .navbar-link:hover,.navbar.is-link .navbar-start .navbar-link.is-active,.navbar.is-link .navbar-end>a.navbar-item:focus,.navbar.is-link .navbar-end>a.navbar-item:hover,.navbar.is-link .navbar-end>a.navbar-item.is-active,.navbar.is-link .navbar-end .navbar-link:focus,.navbar.is-link .navbar-end .navbar-link:hover,.navbar.is-link .navbar-end .navbar-link.is-active{background-color:#3a51bb;color:#fff}.navbar.is-link .navbar-start .navbar-link::after,.navbar.is-link .navbar-end .navbar-link::after{border-color:#fff}.navbar.is-link .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-link .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-link .navbar-item.has-dropdown.is-active .navbar-link{background-color:#3a51bb;color:#fff}.navbar.is-link .navbar-dropdown a.navbar-item.is-active{background-color:#485fc7;color:#fff}}.navbar.is-info{background-color:#3e8ed0;color:#fff}.navbar.is-info .navbar-brand>.navbar-item,.navbar.is-info .navbar-brand .navbar-link{color:#fff}.navbar.is-info .navbar-brand>a.navbar-item:focus,.navbar.is-info .navbar-brand>a.navbar-item:hover,.navbar.is-info .navbar-brand>a.navbar-item.is-active,.navbar.is-info .navbar-brand .navbar-link:focus,.navbar.is-info .navbar-brand .navbar-link:hover,.navbar.is-info .navbar-brand .navbar-link.is-active{background-color:#3082c5;color:#fff}.navbar.is-info .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-info .navbar-burger{color:#fff}@media screen and (min-width: 550px){.navbar.is-info .navbar-start>.navbar-item,.navbar.is-info .navbar-start .navbar-link,.navbar.is-info .navbar-end>.navbar-item,.navbar.is-info .navbar-end .navbar-link{color:#fff}.navbar.is-info .navbar-start>a.navbar-item:focus,.navbar.is-info .navbar-start>a.navbar-item:hover,.navbar.is-info .navbar-start>a.navbar-item.is-active,.navbar.is-info .navbar-start .navbar-link:focus,.navbar.is-info .navbar-start .navbar-link:hover,.navbar.is-info .navbar-start .navbar-link.is-active,.navbar.is-info .navbar-end>a.navbar-item:focus,.navbar.is-info .navbar-end>a.navbar-item:hover,.navbar.is-info .navbar-end>a.navbar-item.is-active,.navbar.is-info .navbar-end .navbar-link:focus,.navbar.is-info .navbar-end .navbar-link:hover,.navbar.is-info .navbar-end .navbar-link.is-active{background-color:#3082c5;color:#fff}.navbar.is-info .navbar-start .navbar-link::after,.navbar.is-info .navbar-end .navbar-link::after{border-color:#fff}.navbar.is-info .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-info .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-info .navbar-item.has-dropdown.is-active .navbar-link{background-color:#3082c5;color:#fff}.navbar.is-info .navbar-dropdown a.navbar-item.is-active{background-color:#3e8ed0;color:#fff}}.navbar.is-success{background-color:#48c78e;color:#fff}.navbar.is-success .navbar-brand>.navbar-item,.navbar.is-success .navbar-brand .navbar-link{color:#fff}.navbar.is-success .navbar-brand>a.navbar-item:focus,.navbar.is-success .navbar-brand>a.navbar-item:hover,.navbar.is-success .navbar-brand>a.navbar-item.is-active,.navbar.is-success .navbar-brand .navbar-link:focus,.navbar.is-success .navbar-brand .navbar-link:hover,.navbar.is-success .navbar-brand .navbar-link.is-active{background-color:#3abb81;color:#fff}.navbar.is-success .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-success .navbar-burger{color:#fff}@media screen and (min-width: 550px){.navbar.is-success .navbar-start>.navbar-item,.navbar.is-success .navbar-start .navbar-link,.navbar.is-success .navbar-end>.navbar-item,.navbar.is-success .navbar-end .navbar-link{color:#fff}.navbar.is-success .navbar-start>a.navbar-item:focus,.navbar.is-success .navbar-start>a.navbar-item:hover,.navbar.is-success .navbar-start>a.navbar-item.is-active,.navbar.is-success .navbar-start .navbar-link:focus,.navbar.is-success .navbar-start .navbar-link:hover,.navbar.is-success .navbar-start .navbar-link.is-active,.navbar.is-success .navbar-end>a.navbar-item:focus,.navbar.is-success .navbar-end>a.navbar-item:hover,.navbar.is-success .navbar-end>a.navbar-item.is-active,.navbar.is-success .navbar-end .navbar-link:focus,.navbar.is-success .navbar-end .navbar-link:hover,.navbar.is-success .navbar-end .navbar-link.is-active{background-color:#3abb81;color:#fff}.navbar.is-success .navbar-start .navbar-link::after,.navbar.is-success .navbar-end .navbar-link::after{border-color:#fff}.navbar.is-success .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-success .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-success .navbar-item.has-dropdown.is-active .navbar-link{background-color:#3abb81;color:#fff}.navbar.is-success .navbar-dropdown a.navbar-item.is-active{background-color:#48c78e;color:#fff}}.navbar.is-warning{background-color:#ffe08a;color:rgba(0,0,0,.7)}.navbar.is-warning .navbar-brand>.navbar-item,.navbar.is-warning .navbar-brand .navbar-link{color:rgba(0,0,0,.7)}.navbar.is-warning .navbar-brand>a.navbar-item:focus,.navbar.is-warning .navbar-brand>a.navbar-item:hover,.navbar.is-warning .navbar-brand>a.navbar-item.is-active,.navbar.is-warning .navbar-brand .navbar-link:focus,.navbar.is-warning .navbar-brand .navbar-link:hover,.navbar.is-warning .navbar-brand .navbar-link.is-active{background-color:#ffd970;color:rgba(0,0,0,.7)}.navbar.is-warning .navbar-brand .navbar-link::after{border-color:rgba(0,0,0,.7)}.navbar.is-warning .navbar-burger{color:rgba(0,0,0,.7)}@media screen and (min-width: 550px){.navbar.is-warning .navbar-start>.navbar-item,.navbar.is-warning .navbar-start .navbar-link,.navbar.is-warning .navbar-end>.navbar-item,.navbar.is-warning .navbar-end .navbar-link{color:rgba(0,0,0,.7)}.navbar.is-warning .navbar-start>a.navbar-item:focus,.navbar.is-warning .navbar-start>a.navbar-item:hover,.navbar.is-warning .navbar-start>a.navbar-item.is-active,.navbar.is-warning .navbar-start .navbar-link:focus,.navbar.is-warning .navbar-start .navbar-link:hover,.navbar.is-warning .navbar-start .navbar-link.is-active,.navbar.is-warning .navbar-end>a.navbar-item:focus,.navbar.is-warning .navbar-end>a.navbar-item:hover,.navbar.is-warning .navbar-end>a.navbar-item.is-active,.navbar.is-warning .navbar-end .navbar-link:focus,.navbar.is-warning .navbar-end .navbar-link:hover,.navbar.is-warning .navbar-end .navbar-link.is-active{background-color:#ffd970;color:rgba(0,0,0,.7)}.navbar.is-warning .navbar-start .navbar-link::after,.navbar.is-warning .navbar-end .navbar-link::after{border-color:rgba(0,0,0,.7)}.navbar.is-warning .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-warning .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-warning .navbar-item.has-dropdown.is-active .navbar-link{background-color:#ffd970;color:rgba(0,0,0,.7)}.navbar.is-warning .navbar-dropdown a.navbar-item.is-active{background-color:#ffe08a;color:rgba(0,0,0,.7)}}.navbar.is-danger{background-color:#f14668;color:#fff}.navbar.is-danger .navbar-brand>.navbar-item,.navbar.is-danger .navbar-brand .navbar-link{color:#fff}.navbar.is-danger .navbar-brand>a.navbar-item:focus,.navbar.is-danger .navbar-brand>a.navbar-item:hover,.navbar.is-danger .navbar-brand>a.navbar-item.is-active,.navbar.is-danger .navbar-brand .navbar-link:focus,.navbar.is-danger .navbar-brand .navbar-link:hover,.navbar.is-danger .navbar-brand .navbar-link.is-active{background-color:#ef2e55;color:#fff}.navbar.is-danger .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-danger .navbar-burger{color:#fff}@media screen and (min-width: 550px){.navbar.is-danger .navbar-start>.navbar-item,.navbar.is-danger .navbar-start .navbar-link,.navbar.is-danger .navbar-end>.navbar-item,.navbar.is-danger .navbar-end .navbar-link{color:#fff}.navbar.is-danger .navbar-start>a.navbar-item:focus,.navbar.is-danger .navbar-start>a.navbar-item:hover,.navbar.is-danger .navbar-start>a.navbar-item.is-active,.navbar.is-danger .navbar-start .navbar-link:focus,.navbar.is-danger .navbar-start .navbar-link:hover,.navbar.is-danger .navbar-start .navbar-link.is-active,.navbar.is-danger .navbar-end>a.navbar-item:focus,.navbar.is-danger .navbar-end>a.navbar-item:hover,.navbar.is-danger .navbar-end>a.navbar-item.is-active,.navbar.is-danger .navbar-end .navbar-link:focus,.navbar.is-danger .navbar-end .navbar-link:hover,.navbar.is-danger .navbar-end .navbar-link.is-active{background-color:#ef2e55;color:#fff}.navbar.is-danger .navbar-start .navbar-link::after,.navbar.is-danger .navbar-end .navbar-link::after{border-color:#fff}.navbar.is-danger .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-danger .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-danger .navbar-item.has-dropdown.is-active .navbar-link{background-color:#ef2e55;color:#fff}.navbar.is-danger .navbar-dropdown a.navbar-item.is-active{background-color:#f14668;color:#fff}}.navbar>.container{align-items:stretch;display:flex;min-height:3.25rem;width:100%}.navbar.has-shadow{box-shadow:0 2px 0 0 #f5f5f5}.navbar.is-fixed-bottom,.navbar.is-fixed-top{left:0;position:fixed;right:0;z-index:30}.navbar.is-fixed-bottom{bottom:0}.navbar.is-fixed-bottom.has-shadow{box-shadow:0 -2px 0 0 #f5f5f5}.navbar.is-fixed-top{top:0}html.has-navbar-fixed-top,body.has-navbar-fixed-top{padding-top:3.25rem}html.has-navbar-fixed-bottom,body.has-navbar-fixed-bottom{padding-bottom:3.25rem}.navbar-brand,.navbar-tabs{align-items:stretch;display:flex;flex-shrink:0;min-height:3.25rem}.navbar-brand a.navbar-item:focus,.navbar-brand a.navbar-item:hover{background-color:transparent}.navbar-tabs{-webkit-overflow-scrolling:touch;max-width:100vw;overflow-x:auto;overflow-y:hidden}.navbar-burger{color:#4a4a4a;cursor:pointer;display:block;height:3.25rem;position:relative;width:3.25rem;margin-left:auto}.navbar-burger span{background-color:currentColor;display:block;height:1px;left:calc(50% - 8px);position:absolute;transform-origin:center;transition-duration:86ms;transition-property:background-color,opacity,transform;transition-timing-function:ease-out;width:16px}.navbar-burger span:nth-child(1){top:calc(50% - 6px)}.navbar-burger span:nth-child(2){top:calc(50% - 1px)}.navbar-burger span:nth-child(3){top:calc(50% + 4px)}.navbar-burger:hover{background-color:rgba(0,0,0,.05)}.navbar-burger.is-active span:nth-child(1){transform:translateY(5px) rotate(45deg)}.navbar-burger.is-active span:nth-child(2){opacity:0}.navbar-burger.is-active span:nth-child(3){transform:translateY(-5px) rotate(-45deg)}.navbar-menu{display:none}.navbar-item,.navbar-link{color:#4a4a4a;display:block;line-height:1.5;padding:.5rem .75rem;position:relative}.navbar-item .icon:only-child,.navbar-link .icon:only-child{margin-left:-0.25rem;margin-right:-0.25rem}a.navbar-item,.navbar-link{cursor:pointer}a.navbar-item:focus,a.navbar-item:focus-within,a.navbar-item:hover,a.navbar-item.is-active,.navbar-link:focus,.navbar-link:focus-within,.navbar-link:hover,.navbar-link.is-active{background-color:#fafafa;color:#485fc7}.navbar-item{flex-grow:0;flex-shrink:0}.navbar-item img{max-height:1.75rem}.navbar-item.has-dropdown{padding:0}.navbar-item.is-expanded{flex-grow:1;flex-shrink:1}.navbar-item.is-tab{border-bottom:1px solid transparent;min-height:3.25rem;padding-bottom:calc(.5rem - 1px)}.navbar-item.is-tab:focus,.navbar-item.is-tab:hover{background-color:transparent;border-bottom-color:#485fc7}.navbar-item.is-tab.is-active{background-color:transparent;border-bottom-color:#485fc7;border-bottom-style:solid;border-bottom-width:3px;color:#485fc7;padding-bottom:calc(0.5rem - 3px)}.navbar-content{flex-grow:1;flex-shrink:1}.navbar-link:not(.is-arrowless){padding-right:2.5em}.navbar-link:not(.is-arrowless)::after{border-color:#485fc7;margin-top:-0.375em;right:1.125em}.navbar-dropdown{font-size:.875rem;padding-bottom:.5rem;padding-top:.5rem}.navbar-dropdown .navbar-item{padding-left:1.5rem;padding-right:1.5rem}.navbar-divider{background-color:#f5f5f5;border:none;display:none;height:2px;margin:.5rem 0}@media screen and (max-width: 549px){.navbar>.container{display:block}.navbar-brand .navbar-item,.navbar-tabs .navbar-item{align-items:center;display:flex}.navbar-link::after{display:none}.navbar-menu{background-color:#fff;box-shadow:0 8px 16px rgba(10,10,10,.1);padding:.5rem 0}.navbar-menu.is-active{display:block}.navbar.is-fixed-bottom-touch,.navbar.is-fixed-top-touch{left:0;position:fixed;right:0;z-index:30}.navbar.is-fixed-bottom-touch{bottom:0}.navbar.is-fixed-bottom-touch.has-shadow{box-shadow:0 -2px 3px rgba(10,10,10,.1)}.navbar.is-fixed-top-touch{top:0}.navbar.is-fixed-top .navbar-menu,.navbar.is-fixed-top-touch .navbar-menu{-webkit-overflow-scrolling:touch;max-height:calc(100vh - 3.25rem);overflow:auto}html.has-navbar-fixed-top-touch,body.has-navbar-fixed-top-touch{padding-top:3.25rem}html.has-navbar-fixed-bottom-touch,body.has-navbar-fixed-bottom-touch{padding-bottom:3.25rem}}@media screen and (min-width: 550px){.navbar,.navbar-menu,.navbar-start,.navbar-end{align-items:stretch;display:flex}.navbar{min-height:3.25rem}.navbar.is-spaced{padding:1rem 2rem}.navbar.is-spaced .navbar-start,.navbar.is-spaced .navbar-end{align-items:center}.navbar.is-spaced a.navbar-item,.navbar.is-spaced .navbar-link{border-radius:4px}.navbar.is-transparent a.navbar-item:focus,.navbar.is-transparent a.navbar-item:hover,.navbar.is-transparent a.navbar-item.is-active,.navbar.is-transparent .navbar-link:focus,.navbar.is-transparent .navbar-link:hover,.navbar.is-transparent .navbar-link.is-active{background-color:transparent !important}.navbar.is-transparent .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus .navbar-link,.navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus-within .navbar-link,.navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:hover .navbar-link{background-color:transparent !important}.navbar.is-transparent .navbar-dropdown a.navbar-item:focus,.navbar.is-transparent .navbar-dropdown a.navbar-item:hover{background-color:#f5f5f5;color:#0a0a0a}.navbar.is-transparent .navbar-dropdown a.navbar-item.is-active{background-color:#f5f5f5;color:#485fc7}.navbar-burger{display:none}.navbar-item,.navbar-link{align-items:center;display:flex}.navbar-item.has-dropdown{align-items:stretch}.navbar-item.has-dropdown-up .navbar-link::after{transform:rotate(135deg) translate(0.25em, -0.25em)}.navbar-item.has-dropdown-up .navbar-dropdown{border-bottom:2px solid #dbdbdb;border-radius:6px 6px 0 0;border-top:none;bottom:100%;box-shadow:0 -8px 8px rgba(10,10,10,.1);top:auto}.navbar-item.is-active .navbar-dropdown,.navbar-item.is-hoverable:focus .navbar-dropdown,.navbar-item.is-hoverable:focus-within .navbar-dropdown,.navbar-item.is-hoverable:hover .navbar-dropdown{display:block}.navbar.is-spaced .navbar-item.is-active .navbar-dropdown,.navbar-item.is-active .navbar-dropdown.is-boxed,.navbar.is-spaced .navbar-item.is-hoverable:focus .navbar-dropdown,.navbar-item.is-hoverable:focus .navbar-dropdown.is-boxed,.navbar.is-spaced .navbar-item.is-hoverable:focus-within .navbar-dropdown,.navbar-item.is-hoverable:focus-within .navbar-dropdown.is-boxed,.navbar.is-spaced .navbar-item.is-hoverable:hover .navbar-dropdown,.navbar-item.is-hoverable:hover .navbar-dropdown.is-boxed{opacity:1;pointer-events:auto;transform:translateY(0)}.navbar-menu{flex-grow:1;flex-shrink:0}.navbar-start{justify-content:flex-start;margin-right:auto}.navbar-end{justify-content:flex-end;margin-left:auto}.navbar-dropdown{background-color:#fff;border-bottom-left-radius:6px;border-bottom-right-radius:6px;border-top:2px solid #dbdbdb;box-shadow:0 8px 8px rgba(10,10,10,.1);display:none;font-size:.875rem;left:0;min-width:100%;position:absolute;top:100%;z-index:20}.navbar-dropdown .navbar-item{padding:.375rem 1rem;white-space:nowrap}.navbar-dropdown a.navbar-item{padding-right:3rem}.navbar-dropdown a.navbar-item:focus,.navbar-dropdown a.navbar-item:hover{background-color:#f5f5f5;color:#0a0a0a}.navbar-dropdown a.navbar-item.is-active{background-color:#f5f5f5;color:#485fc7}.navbar.is-spaced .navbar-dropdown,.navbar-dropdown.is-boxed{border-radius:6px;border-top:none;box-shadow:0 8px 8px rgba(10,10,10,.1),0 0 0 1px rgba(10,10,10,.1);display:block;opacity:0;pointer-events:none;top:calc(100% + (-4px));transform:translateY(-5px);transition-duration:86ms;transition-property:opacity,transform}.navbar-dropdown.is-right{left:auto;right:0}.navbar-divider{display:block}.navbar>.container .navbar-brand,.container>.navbar .navbar-brand{margin-left:-0.75rem}.navbar>.container .navbar-menu,.container>.navbar .navbar-menu{margin-right:-0.75rem}.navbar.is-fixed-bottom-desktop,.navbar.is-fixed-top-desktop{left:0;position:fixed;right:0;z-index:30}.navbar.is-fixed-bottom-desktop{bottom:0}.navbar.is-fixed-bottom-desktop.has-shadow{box-shadow:0 -2px 3px rgba(10,10,10,.1)}.navbar.is-fixed-top-desktop{top:0}html.has-navbar-fixed-top-desktop,body.has-navbar-fixed-top-desktop{padding-top:3.25rem}html.has-navbar-fixed-bottom-desktop,body.has-navbar-fixed-bottom-desktop{padding-bottom:3.25rem}html.has-spaced-navbar-fixed-top,body.has-spaced-navbar-fixed-top{padding-top:5.25rem}html.has-spaced-navbar-fixed-bottom,body.has-spaced-navbar-fixed-bottom{padding-bottom:5.25rem}a.navbar-item.is-active,.navbar-link.is-active{color:#0a0a0a}a.navbar-item.is-active:not(:focus):not(:hover),.navbar-link.is-active:not(:focus):not(:hover){background-color:transparent}.navbar-item.has-dropdown:focus .navbar-link,.navbar-item.has-dropdown:hover .navbar-link,.navbar-item.has-dropdown.is-active .navbar-link{background-color:#fafafa}}.hero.is-fullheight-with-navbar{min-height:calc(100vh - 3.25rem)}.pagination{font-size:1rem;margin:-0.25rem}.pagination.is-small{font-size:.75rem}.pagination.is-medium{font-size:1.25rem}.pagination.is-large{font-size:1.5rem}.pagination.is-rounded .pagination-previous,.pagination.is-rounded .pagination-next{padding-left:1em;padding-right:1em;border-radius:9999px}.pagination.is-rounded .pagination-link{border-radius:9999px}.pagination,.pagination-list{align-items:center;display:flex;justify-content:center;text-align:center}.pagination-previous,.pagination-next,.pagination-link,.pagination-ellipsis{font-size:1em;justify-content:center;margin:.25rem;padding-left:.5em;padding-right:.5em;text-align:center}.pagination-previous,.pagination-next,.pagination-link{border-color:#dbdbdb;color:#363636;min-width:2.5em}.pagination-previous:hover,.pagination-next:hover,.pagination-link:hover{border-color:#b5b5b5;color:#363636}.pagination-previous:focus,.pagination-next:focus,.pagination-link:focus{border-color:#485fc7}.pagination-previous:active,.pagination-next:active,.pagination-link:active{box-shadow:inset 0 1px 2px rgba(10,10,10,.2)}.pagination-previous[disabled],.pagination-next[disabled],.pagination-link[disabled]{background-color:#dbdbdb;border-color:#dbdbdb;box-shadow:none;color:#7a7a7a;opacity:.5}.pagination-previous,.pagination-next{padding-left:.75em;padding-right:.75em;white-space:nowrap}.pagination-link.is-current{background-color:#485fc7;border-color:#485fc7;color:#fff}.pagination-ellipsis{color:#b5b5b5;pointer-events:none}.pagination-list{flex-wrap:wrap}.pagination-list li{list-style:none}@media screen and (max-width: 768px){.pagination{flex-wrap:wrap}.pagination-previous,.pagination-next{flex-grow:1;flex-shrink:1}.pagination-list li{flex-grow:1;flex-shrink:1}}@media screen and (min-width: 769px),print{.pagination-list{flex-grow:1;flex-shrink:1;justify-content:flex-start;order:1}.pagination-previous,.pagination-next,.pagination-link,.pagination-ellipsis{margin-bottom:0;margin-top:0}.pagination-previous{order:2}.pagination-next{order:3}.pagination{justify-content:space-between;margin-bottom:0;margin-top:0}.pagination.is-centered .pagination-previous{order:1}.pagination.is-centered .pagination-list{justify-content:center;order:2}.pagination.is-centered .pagination-next{order:3}.pagination.is-right .pagination-previous{order:1}.pagination.is-right .pagination-next{order:2}.pagination.is-right .pagination-list{justify-content:flex-end;order:3}}.panel{border-radius:6px;box-shadow:0 .5em 1em -0.125em rgba(10,10,10,.1),0 0px 0 1px rgba(10,10,10,.02);font-size:1rem}.panel:not(:last-child){margin-bottom:1.5rem}.panel.is-white .panel-heading{background-color:#fff;color:#0a0a0a}.panel.is-white .panel-tabs a.is-active{border-bottom-color:#fff}.panel.is-white .panel-block.is-active .panel-icon{color:#fff}.panel.is-black .panel-heading{background-color:#0a0a0a;color:#fff}.panel.is-black .panel-tabs a.is-active{border-bottom-color:#0a0a0a}.panel.is-black .panel-block.is-active .panel-icon{color:#0a0a0a}.panel.is-light .panel-heading{background-color:#f5f5f5;color:rgba(0,0,0,.7)}.panel.is-light .panel-tabs a.is-active{border-bottom-color:#f5f5f5}.panel.is-light .panel-block.is-active .panel-icon{color:#f5f5f5}.panel.is-dark .panel-heading{background-color:#363636;color:#fff}.panel.is-dark .panel-tabs a.is-active{border-bottom-color:#363636}.panel.is-dark .panel-block.is-active .panel-icon{color:#363636}.panel.is-primary .panel-heading{background-color:#00d1b2;color:#fff}.panel.is-primary .panel-tabs a.is-active{border-bottom-color:#00d1b2}.panel.is-primary .panel-block.is-active .panel-icon{color:#00d1b2}.panel.is-link .panel-heading{background-color:#485fc7;color:#fff}.panel.is-link .panel-tabs a.is-active{border-bottom-color:#485fc7}.panel.is-link .panel-block.is-active .panel-icon{color:#485fc7}.panel.is-info .panel-heading{background-color:#3e8ed0;color:#fff}.panel.is-info .panel-tabs a.is-active{border-bottom-color:#3e8ed0}.panel.is-info .panel-block.is-active .panel-icon{color:#3e8ed0}.panel.is-success .panel-heading{background-color:#48c78e;color:#fff}.panel.is-success .panel-tabs a.is-active{border-bottom-color:#48c78e}.panel.is-success .panel-block.is-active .panel-icon{color:#48c78e}.panel.is-warning .panel-heading{background-color:#ffe08a;color:rgba(0,0,0,.7)}.panel.is-warning .panel-tabs a.is-active{border-bottom-color:#ffe08a}.panel.is-warning .panel-block.is-active .panel-icon{color:#ffe08a}.panel.is-danger .panel-heading{background-color:#f14668;color:#fff}.panel.is-danger .panel-tabs a.is-active{border-bottom-color:#f14668}.panel.is-danger .panel-block.is-active .panel-icon{color:#f14668}.panel-tabs:not(:last-child),.panel-block:not(:last-child){border-bottom:1px solid #ededed}.panel-heading{background-color:#ededed;border-radius:6px 6px 0 0;color:#363636;font-size:1.25em;font-weight:700;line-height:1.25;padding:.75em 1em}.panel-tabs{align-items:flex-end;display:flex;font-size:.875em;justify-content:center}.panel-tabs a{border-bottom:1px solid #dbdbdb;margin-bottom:-1px;padding:.5em}.panel-tabs a.is-active{border-bottom-color:#4a4a4a;color:#363636}.panel-list a{color:#4a4a4a}.panel-list a:hover{color:#485fc7}.panel-block{align-items:center;color:#363636;display:flex;justify-content:flex-start;padding:.5em .75em}.panel-block input[type=checkbox]{margin-right:.75em}.panel-block>.control{flex-grow:1;flex-shrink:1;width:100%}.panel-block.is-wrapped{flex-wrap:wrap}.panel-block.is-active{border-left-color:#485fc7;color:#363636}.panel-block.is-active .panel-icon{color:#485fc7}.panel-block:last-child{border-bottom-left-radius:6px;border-bottom-right-radius:6px}a.panel-block,label.panel-block{cursor:pointer}a.panel-block:hover,label.panel-block:hover{background-color:#f5f5f5}.panel-icon{display:inline-block;font-size:14px;height:1em;line-height:1em;text-align:center;vertical-align:top;width:1em;color:#7a7a7a;margin-right:.75em}.panel-icon .fa{font-size:inherit;line-height:inherit}.tabs{-webkit-overflow-scrolling:touch;align-items:stretch;display:flex;font-size:1rem;justify-content:space-between;overflow:hidden;overflow-x:auto;white-space:nowrap}.tabs a{align-items:center;border-bottom-color:#dbdbdb;border-bottom-style:solid;border-bottom-width:2px;color:var(--color-secondary);display:flex;justify-content:center;margin-bottom:-2px;padding:.5em 1em;vertical-align:top}.tabs a:hover{border-bottom-color:var(--color-secondary);color:var(--color-secondary)}.tabs li{display:block}.tabs li.is-active a{border-bottom-color:var(--color-primary);color:var(--color-primary)}.tabs ul{align-items:center;border-bottom-color:#dbdbdb;border-bottom-style:solid;border-bottom-width:2px;display:flex;flex-grow:1;flex-shrink:0;justify-content:flex-start}.tabs ul.is-left{padding-right:.75em}.tabs ul.is-center{flex:none;justify-content:center;padding-left:.75em;padding-right:.75em}.tabs ul.is-right{justify-content:flex-end;padding-left:.75em}.tabs .icon:first-child{margin-right:.5em}.tabs .icon:last-child{margin-left:.5em}.tabs.is-centered ul{justify-content:center}.tabs.is-right ul{justify-content:flex-end}.tabs.is-boxed a{border:1px solid transparent;border-radius:4px 4px 0 0}.tabs.is-boxed a:hover{background-color:#f5f5f5;border-bottom-color:#dbdbdb}.tabs.is-boxed li.is-active a{background-color:#fff;border-color:#dbdbdb;border-bottom-color:transparent !important}.tabs.is-fullwidth li{flex-grow:1;flex-shrink:0}.tabs.is-toggle a{border-color:#dbdbdb;border-style:solid;border-width:1px;margin-bottom:0;position:relative}.tabs.is-toggle a:hover{background-color:#f5f5f5;border-color:#b5b5b5;z-index:2}.tabs.is-toggle li+li{margin-left:-1px}.tabs.is-toggle li:first-child a{border-top-left-radius:4px;border-bottom-left-radius:4px}.tabs.is-toggle li:last-child a{border-top-right-radius:4px;border-bottom-right-radius:4px}.tabs.is-toggle li.is-active a{background-color:#485fc7;border-color:#485fc7;color:#fff;z-index:1}.tabs.is-toggle ul{border-bottom:none}.tabs.is-toggle.is-toggle-rounded li:first-child a{border-bottom-left-radius:9999px;border-top-left-radius:9999px;padding-left:1.25em}.tabs.is-toggle.is-toggle-rounded li:last-child a{border-bottom-right-radius:9999px;border-top-right-radius:9999px;padding-right:1.25em}.tabs.is-small{font-size:.75rem}.tabs.is-medium{font-size:1.25rem}.tabs.is-large{font-size:1.5rem}.column{display:block;flex-basis:0;flex-grow:1;flex-shrink:1;padding:.75rem}.columns.is-mobile>.column.is-narrow{flex:none;width:unset}.columns.is-mobile>.column.is-full{flex:none;width:100%}.columns.is-mobile>.column.is-three-quarters{flex:none;width:75%}.columns.is-mobile>.column.is-two-thirds{flex:none;width:66.6666%}.columns.is-mobile>.column.is-half{flex:none;width:50%}.columns.is-mobile>.column.is-one-third{flex:none;width:33.3333%}.columns.is-mobile>.column.is-one-quarter{flex:none;width:25%}.columns.is-mobile>.column.is-one-fifth{flex:none;width:20%}.columns.is-mobile>.column.is-two-fifths{flex:none;width:40%}.columns.is-mobile>.column.is-three-fifths{flex:none;width:60%}.columns.is-mobile>.column.is-four-fifths{flex:none;width:80%}.columns.is-mobile>.column.is-offset-three-quarters{margin-left:75%}.columns.is-mobile>.column.is-offset-two-thirds{margin-left:66.6666%}.columns.is-mobile>.column.is-offset-half{margin-left:50%}.columns.is-mobile>.column.is-offset-one-third{margin-left:33.3333%}.columns.is-mobile>.column.is-offset-one-quarter{margin-left:25%}.columns.is-mobile>.column.is-offset-one-fifth{margin-left:20%}.columns.is-mobile>.column.is-offset-two-fifths{margin-left:40%}.columns.is-mobile>.column.is-offset-three-fifths{margin-left:60%}.columns.is-mobile>.column.is-offset-four-fifths{margin-left:80%}.columns.is-mobile>.column.is-0{flex:none;width:0%}.columns.is-mobile>.column.is-offset-0{margin-left:0%}.columns.is-mobile>.column.is-1{flex:none;width:8.33333337%}.columns.is-mobile>.column.is-offset-1{margin-left:8.33333337%}.columns.is-mobile>.column.is-2{flex:none;width:16.66666674%}.columns.is-mobile>.column.is-offset-2{margin-left:16.66666674%}.columns.is-mobile>.column.is-3{flex:none;width:25%}.columns.is-mobile>.column.is-offset-3{margin-left:25%}.columns.is-mobile>.column.is-4{flex:none;width:33.33333337%}.columns.is-mobile>.column.is-offset-4{margin-left:33.33333337%}.columns.is-mobile>.column.is-5{flex:none;width:41.66666674%}.columns.is-mobile>.column.is-offset-5{margin-left:41.66666674%}.columns.is-mobile>.column.is-6{flex:none;width:50%}.columns.is-mobile>.column.is-offset-6{margin-left:50%}.columns.is-mobile>.column.is-7{flex:none;width:58.33333337%}.columns.is-mobile>.column.is-offset-7{margin-left:58.33333337%}.columns.is-mobile>.column.is-8{flex:none;width:66.66666674%}.columns.is-mobile>.column.is-offset-8{margin-left:66.66666674%}.columns.is-mobile>.column.is-9{flex:none;width:75%}.columns.is-mobile>.column.is-offset-9{margin-left:75%}.columns.is-mobile>.column.is-10{flex:none;width:83.33333337%}.columns.is-mobile>.column.is-offset-10{margin-left:83.33333337%}.columns.is-mobile>.column.is-11{flex:none;width:91.66666674%}.columns.is-mobile>.column.is-offset-11{margin-left:91.66666674%}.columns.is-mobile>.column.is-12{flex:none;width:100%}.columns.is-mobile>.column.is-offset-12{margin-left:100%}@media screen and (max-width: 768px){.column.is-narrow-mobile{flex:none;width:unset}.column.is-full-mobile{flex:none;width:100%}.column.is-three-quarters-mobile{flex:none;width:75%}.column.is-two-thirds-mobile{flex:none;width:66.6666%}.column.is-half-mobile{flex:none;width:50%}.column.is-one-third-mobile{flex:none;width:33.3333%}.column.is-one-quarter-mobile{flex:none;width:25%}.column.is-one-fifth-mobile{flex:none;width:20%}.column.is-two-fifths-mobile{flex:none;width:40%}.column.is-three-fifths-mobile{flex:none;width:60%}.column.is-four-fifths-mobile{flex:none;width:80%}.column.is-offset-three-quarters-mobile{margin-left:75%}.column.is-offset-two-thirds-mobile{margin-left:66.6666%}.column.is-offset-half-mobile{margin-left:50%}.column.is-offset-one-third-mobile{margin-left:33.3333%}.column.is-offset-one-quarter-mobile{margin-left:25%}.column.is-offset-one-fifth-mobile{margin-left:20%}.column.is-offset-two-fifths-mobile{margin-left:40%}.column.is-offset-three-fifths-mobile{margin-left:60%}.column.is-offset-four-fifths-mobile{margin-left:80%}.column.is-0-mobile{flex:none;width:0%}.column.is-offset-0-mobile{margin-left:0%}.column.is-1-mobile{flex:none;width:8.33333337%}.column.is-offset-1-mobile{margin-left:8.33333337%}.column.is-2-mobile{flex:none;width:16.66666674%}.column.is-offset-2-mobile{margin-left:16.66666674%}.column.is-3-mobile{flex:none;width:25%}.column.is-offset-3-mobile{margin-left:25%}.column.is-4-mobile{flex:none;width:33.33333337%}.column.is-offset-4-mobile{margin-left:33.33333337%}.column.is-5-mobile{flex:none;width:41.66666674%}.column.is-offset-5-mobile{margin-left:41.66666674%}.column.is-6-mobile{flex:none;width:50%}.column.is-offset-6-mobile{margin-left:50%}.column.is-7-mobile{flex:none;width:58.33333337%}.column.is-offset-7-mobile{margin-left:58.33333337%}.column.is-8-mobile{flex:none;width:66.66666674%}.column.is-offset-8-mobile{margin-left:66.66666674%}.column.is-9-mobile{flex:none;width:75%}.column.is-offset-9-mobile{margin-left:75%}.column.is-10-mobile{flex:none;width:83.33333337%}.column.is-offset-10-mobile{margin-left:83.33333337%}.column.is-11-mobile{flex:none;width:91.66666674%}.column.is-offset-11-mobile{margin-left:91.66666674%}.column.is-12-mobile{flex:none;width:100%}.column.is-offset-12-mobile{margin-left:100%}}@media screen and (min-width: 769px),print{.column.is-narrow,.column.is-narrow-tablet{flex:none;width:unset}.column.is-full,.column.is-full-tablet{flex:none;width:100%}.column.is-three-quarters,.column.is-three-quarters-tablet{flex:none;width:75%}.column.is-two-thirds,.column.is-two-thirds-tablet{flex:none;width:66.6666%}.column.is-half,.column.is-half-tablet{flex:none;width:50%}.column.is-one-third,.column.is-one-third-tablet{flex:none;width:33.3333%}.column.is-one-quarter,.column.is-one-quarter-tablet{flex:none;width:25%}.column.is-one-fifth,.column.is-one-fifth-tablet{flex:none;width:20%}.column.is-two-fifths,.column.is-two-fifths-tablet{flex:none;width:40%}.column.is-three-fifths,.column.is-three-fifths-tablet{flex:none;width:60%}.column.is-four-fifths,.column.is-four-fifths-tablet{flex:none;width:80%}.column.is-offset-three-quarters,.column.is-offset-three-quarters-tablet{margin-left:75%}.column.is-offset-two-thirds,.column.is-offset-two-thirds-tablet{margin-left:66.6666%}.column.is-offset-half,.column.is-offset-half-tablet{margin-left:50%}.column.is-offset-one-third,.column.is-offset-one-third-tablet{margin-left:33.3333%}.column.is-offset-one-quarter,.column.is-offset-one-quarter-tablet{margin-left:25%}.column.is-offset-one-fifth,.column.is-offset-one-fifth-tablet{margin-left:20%}.column.is-offset-two-fifths,.column.is-offset-two-fifths-tablet{margin-left:40%}.column.is-offset-three-fifths,.column.is-offset-three-fifths-tablet{margin-left:60%}.column.is-offset-four-fifths,.column.is-offset-four-fifths-tablet{margin-left:80%}.column.is-0,.column.is-0-tablet{flex:none;width:0%}.column.is-offset-0,.column.is-offset-0-tablet{margin-left:0%}.column.is-1,.column.is-1-tablet{flex:none;width:8.33333337%}.column.is-offset-1,.column.is-offset-1-tablet{margin-left:8.33333337%}.column.is-2,.column.is-2-tablet{flex:none;width:16.66666674%}.column.is-offset-2,.column.is-offset-2-tablet{margin-left:16.66666674%}.column.is-3,.column.is-3-tablet{flex:none;width:25%}.column.is-offset-3,.column.is-offset-3-tablet{margin-left:25%}.column.is-4,.column.is-4-tablet{flex:none;width:33.33333337%}.column.is-offset-4,.column.is-offset-4-tablet{margin-left:33.33333337%}.column.is-5,.column.is-5-tablet{flex:none;width:41.66666674%}.column.is-offset-5,.column.is-offset-5-tablet{margin-left:41.66666674%}.column.is-6,.column.is-6-tablet{flex:none;width:50%}.column.is-offset-6,.column.is-offset-6-tablet{margin-left:50%}.column.is-7,.column.is-7-tablet{flex:none;width:58.33333337%}.column.is-offset-7,.column.is-offset-7-tablet{margin-left:58.33333337%}.column.is-8,.column.is-8-tablet{flex:none;width:66.66666674%}.column.is-offset-8,.column.is-offset-8-tablet{margin-left:66.66666674%}.column.is-9,.column.is-9-tablet{flex:none;width:75%}.column.is-offset-9,.column.is-offset-9-tablet{margin-left:75%}.column.is-10,.column.is-10-tablet{flex:none;width:83.33333337%}.column.is-offset-10,.column.is-offset-10-tablet{margin-left:83.33333337%}.column.is-11,.column.is-11-tablet{flex:none;width:91.66666674%}.column.is-offset-11,.column.is-offset-11-tablet{margin-left:91.66666674%}.column.is-12,.column.is-12-tablet{flex:none;width:100%}.column.is-offset-12,.column.is-offset-12-tablet{margin-left:100%}}@media screen and (max-width: 1023px){.column.is-narrow-touch{flex:none;width:unset}.column.is-full-touch{flex:none;width:100%}.column.is-three-quarters-touch{flex:none;width:75%}.column.is-two-thirds-touch{flex:none;width:66.6666%}.column.is-half-touch{flex:none;width:50%}.column.is-one-third-touch{flex:none;width:33.3333%}.column.is-one-quarter-touch{flex:none;width:25%}.column.is-one-fifth-touch{flex:none;width:20%}.column.is-two-fifths-touch{flex:none;width:40%}.column.is-three-fifths-touch{flex:none;width:60%}.column.is-four-fifths-touch{flex:none;width:80%}.column.is-offset-three-quarters-touch{margin-left:75%}.column.is-offset-two-thirds-touch{margin-left:66.6666%}.column.is-offset-half-touch{margin-left:50%}.column.is-offset-one-third-touch{margin-left:33.3333%}.column.is-offset-one-quarter-touch{margin-left:25%}.column.is-offset-one-fifth-touch{margin-left:20%}.column.is-offset-two-fifths-touch{margin-left:40%}.column.is-offset-three-fifths-touch{margin-left:60%}.column.is-offset-four-fifths-touch{margin-left:80%}.column.is-0-touch{flex:none;width:0%}.column.is-offset-0-touch{margin-left:0%}.column.is-1-touch{flex:none;width:8.33333337%}.column.is-offset-1-touch{margin-left:8.33333337%}.column.is-2-touch{flex:none;width:16.66666674%}.column.is-offset-2-touch{margin-left:16.66666674%}.column.is-3-touch{flex:none;width:25%}.column.is-offset-3-touch{margin-left:25%}.column.is-4-touch{flex:none;width:33.33333337%}.column.is-offset-4-touch{margin-left:33.33333337%}.column.is-5-touch{flex:none;width:41.66666674%}.column.is-offset-5-touch{margin-left:41.66666674%}.column.is-6-touch{flex:none;width:50%}.column.is-offset-6-touch{margin-left:50%}.column.is-7-touch{flex:none;width:58.33333337%}.column.is-offset-7-touch{margin-left:58.33333337%}.column.is-8-touch{flex:none;width:66.66666674%}.column.is-offset-8-touch{margin-left:66.66666674%}.column.is-9-touch{flex:none;width:75%}.column.is-offset-9-touch{margin-left:75%}.column.is-10-touch{flex:none;width:83.33333337%}.column.is-offset-10-touch{margin-left:83.33333337%}.column.is-11-touch{flex:none;width:91.66666674%}.column.is-offset-11-touch{margin-left:91.66666674%}.column.is-12-touch{flex:none;width:100%}.column.is-offset-12-touch{margin-left:100%}}@media screen and (min-width: 1024px){.column.is-narrow-desktop{flex:none;width:unset}.column.is-full-desktop{flex:none;width:100%}.column.is-three-quarters-desktop{flex:none;width:75%}.column.is-two-thirds-desktop{flex:none;width:66.6666%}.column.is-half-desktop{flex:none;width:50%}.column.is-one-third-desktop{flex:none;width:33.3333%}.column.is-one-quarter-desktop{flex:none;width:25%}.column.is-one-fifth-desktop{flex:none;width:20%}.column.is-two-fifths-desktop{flex:none;width:40%}.column.is-three-fifths-desktop{flex:none;width:60%}.column.is-four-fifths-desktop{flex:none;width:80%}.column.is-offset-three-quarters-desktop{margin-left:75%}.column.is-offset-two-thirds-desktop{margin-left:66.6666%}.column.is-offset-half-desktop{margin-left:50%}.column.is-offset-one-third-desktop{margin-left:33.3333%}.column.is-offset-one-quarter-desktop{margin-left:25%}.column.is-offset-one-fifth-desktop{margin-left:20%}.column.is-offset-two-fifths-desktop{margin-left:40%}.column.is-offset-three-fifths-desktop{margin-left:60%}.column.is-offset-four-fifths-desktop{margin-left:80%}.column.is-0-desktop{flex:none;width:0%}.column.is-offset-0-desktop{margin-left:0%}.column.is-1-desktop{flex:none;width:8.33333337%}.column.is-offset-1-desktop{margin-left:8.33333337%}.column.is-2-desktop{flex:none;width:16.66666674%}.column.is-offset-2-desktop{margin-left:16.66666674%}.column.is-3-desktop{flex:none;width:25%}.column.is-offset-3-desktop{margin-left:25%}.column.is-4-desktop{flex:none;width:33.33333337%}.column.is-offset-4-desktop{margin-left:33.33333337%}.column.is-5-desktop{flex:none;width:41.66666674%}.column.is-offset-5-desktop{margin-left:41.66666674%}.column.is-6-desktop{flex:none;width:50%}.column.is-offset-6-desktop{margin-left:50%}.column.is-7-desktop{flex:none;width:58.33333337%}.column.is-offset-7-desktop{margin-left:58.33333337%}.column.is-8-desktop{flex:none;width:66.66666674%}.column.is-offset-8-desktop{margin-left:66.66666674%}.column.is-9-desktop{flex:none;width:75%}.column.is-offset-9-desktop{margin-left:75%}.column.is-10-desktop{flex:none;width:83.33333337%}.column.is-offset-10-desktop{margin-left:83.33333337%}.column.is-11-desktop{flex:none;width:91.66666674%}.column.is-offset-11-desktop{margin-left:91.66666674%}.column.is-12-desktop{flex:none;width:100%}.column.is-offset-12-desktop{margin-left:100%}}@media screen and (min-width: 1216px){.column.is-narrow-widescreen{flex:none;width:unset}.column.is-full-widescreen{flex:none;width:100%}.column.is-three-quarters-widescreen{flex:none;width:75%}.column.is-two-thirds-widescreen{flex:none;width:66.6666%}.column.is-half-widescreen{flex:none;width:50%}.column.is-one-third-widescreen{flex:none;width:33.3333%}.column.is-one-quarter-widescreen{flex:none;width:25%}.column.is-one-fifth-widescreen{flex:none;width:20%}.column.is-two-fifths-widescreen{flex:none;width:40%}.column.is-three-fifths-widescreen{flex:none;width:60%}.column.is-four-fifths-widescreen{flex:none;width:80%}.column.is-offset-three-quarters-widescreen{margin-left:75%}.column.is-offset-two-thirds-widescreen{margin-left:66.6666%}.column.is-offset-half-widescreen{margin-left:50%}.column.is-offset-one-third-widescreen{margin-left:33.3333%}.column.is-offset-one-quarter-widescreen{margin-left:25%}.column.is-offset-one-fifth-widescreen{margin-left:20%}.column.is-offset-two-fifths-widescreen{margin-left:40%}.column.is-offset-three-fifths-widescreen{margin-left:60%}.column.is-offset-four-fifths-widescreen{margin-left:80%}.column.is-0-widescreen{flex:none;width:0%}.column.is-offset-0-widescreen{margin-left:0%}.column.is-1-widescreen{flex:none;width:8.33333337%}.column.is-offset-1-widescreen{margin-left:8.33333337%}.column.is-2-widescreen{flex:none;width:16.66666674%}.column.is-offset-2-widescreen{margin-left:16.66666674%}.column.is-3-widescreen{flex:none;width:25%}.column.is-offset-3-widescreen{margin-left:25%}.column.is-4-widescreen{flex:none;width:33.33333337%}.column.is-offset-4-widescreen{margin-left:33.33333337%}.column.is-5-widescreen{flex:none;width:41.66666674%}.column.is-offset-5-widescreen{margin-left:41.66666674%}.column.is-6-widescreen{flex:none;width:50%}.column.is-offset-6-widescreen{margin-left:50%}.column.is-7-widescreen{flex:none;width:58.33333337%}.column.is-offset-7-widescreen{margin-left:58.33333337%}.column.is-8-widescreen{flex:none;width:66.66666674%}.column.is-offset-8-widescreen{margin-left:66.66666674%}.column.is-9-widescreen{flex:none;width:75%}.column.is-offset-9-widescreen{margin-left:75%}.column.is-10-widescreen{flex:none;width:83.33333337%}.column.is-offset-10-widescreen{margin-left:83.33333337%}.column.is-11-widescreen{flex:none;width:91.66666674%}.column.is-offset-11-widescreen{margin-left:91.66666674%}.column.is-12-widescreen{flex:none;width:100%}.column.is-offset-12-widescreen{margin-left:100%}}@media screen and (min-width: 1408px){.column.is-narrow-fullhd{flex:none;width:unset}.column.is-full-fullhd{flex:none;width:100%}.column.is-three-quarters-fullhd{flex:none;width:75%}.column.is-two-thirds-fullhd{flex:none;width:66.6666%}.column.is-half-fullhd{flex:none;width:50%}.column.is-one-third-fullhd{flex:none;width:33.3333%}.column.is-one-quarter-fullhd{flex:none;width:25%}.column.is-one-fifth-fullhd{flex:none;width:20%}.column.is-two-fifths-fullhd{flex:none;width:40%}.column.is-three-fifths-fullhd{flex:none;width:60%}.column.is-four-fifths-fullhd{flex:none;width:80%}.column.is-offset-three-quarters-fullhd{margin-left:75%}.column.is-offset-two-thirds-fullhd{margin-left:66.6666%}.column.is-offset-half-fullhd{margin-left:50%}.column.is-offset-one-third-fullhd{margin-left:33.3333%}.column.is-offset-one-quarter-fullhd{margin-left:25%}.column.is-offset-one-fifth-fullhd{margin-left:20%}.column.is-offset-two-fifths-fullhd{margin-left:40%}.column.is-offset-three-fifths-fullhd{margin-left:60%}.column.is-offset-four-fifths-fullhd{margin-left:80%}.column.is-0-fullhd{flex:none;width:0%}.column.is-offset-0-fullhd{margin-left:0%}.column.is-1-fullhd{flex:none;width:8.33333337%}.column.is-offset-1-fullhd{margin-left:8.33333337%}.column.is-2-fullhd{flex:none;width:16.66666674%}.column.is-offset-2-fullhd{margin-left:16.66666674%}.column.is-3-fullhd{flex:none;width:25%}.column.is-offset-3-fullhd{margin-left:25%}.column.is-4-fullhd{flex:none;width:33.33333337%}.column.is-offset-4-fullhd{margin-left:33.33333337%}.column.is-5-fullhd{flex:none;width:41.66666674%}.column.is-offset-5-fullhd{margin-left:41.66666674%}.column.is-6-fullhd{flex:none;width:50%}.column.is-offset-6-fullhd{margin-left:50%}.column.is-7-fullhd{flex:none;width:58.33333337%}.column.is-offset-7-fullhd{margin-left:58.33333337%}.column.is-8-fullhd{flex:none;width:66.66666674%}.column.is-offset-8-fullhd{margin-left:66.66666674%}.column.is-9-fullhd{flex:none;width:75%}.column.is-offset-9-fullhd{margin-left:75%}.column.is-10-fullhd{flex:none;width:83.33333337%}.column.is-offset-10-fullhd{margin-left:83.33333337%}.column.is-11-fullhd{flex:none;width:91.66666674%}.column.is-offset-11-fullhd{margin-left:91.66666674%}.column.is-12-fullhd{flex:none;width:100%}.column.is-offset-12-fullhd{margin-left:100%}}.columns{margin-left:-0.75rem;margin-right:-0.75rem;margin-top:-0.75rem}.columns:last-child{margin-bottom:-0.75rem}.columns:not(:last-child){margin-bottom:calc(1.5rem - 0.75rem)}.columns.is-centered{justify-content:center}.columns.is-gapless{margin-left:0;margin-right:0;margin-top:0}.columns.is-gapless>.column{margin:0;padding:0 !important}.columns.is-gapless:not(:last-child){margin-bottom:1.5rem}.columns.is-gapless:last-child{margin-bottom:0}.columns.is-mobile{display:flex}.columns.is-multiline{flex-wrap:wrap}.columns.is-vcentered{align-items:center}@media screen and (min-width: 769px),print{.columns:not(.is-desktop){display:flex}}@media screen and (min-width: 1024px){.columns.is-desktop{display:flex}}.columns.is-variable{--columnGap: 0.75rem;margin-left:calc(-1*var(--columnGap));margin-right:calc(-1*var(--columnGap))}.columns.is-variable>.column{padding-left:var(--columnGap);padding-right:var(--columnGap)}.columns.is-variable.is-0{--columnGap: 0rem}@media screen and (max-width: 768px){.columns.is-variable.is-0-mobile{--columnGap: 0rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-0-tablet{--columnGap: 0rem}}@media screen and (min-width: 769px)and (max-width: 1023px){.columns.is-variable.is-0-tablet-only{--columnGap: 0rem}}@media screen and (max-width: 1023px){.columns.is-variable.is-0-touch{--columnGap: 0rem}}@media screen and (min-width: 1024px){.columns.is-variable.is-0-desktop{--columnGap: 0rem}}@media screen and (min-width: 1024px)and (max-width: 1215px){.columns.is-variable.is-0-desktop-only{--columnGap: 0rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-0-widescreen{--columnGap: 0rem}}@media screen and (min-width: 1216px)and (max-width: 1407px){.columns.is-variable.is-0-widescreen-only{--columnGap: 0rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-0-fullhd{--columnGap: 0rem}}.columns.is-variable.is-1{--columnGap: 0.25rem}@media screen and (max-width: 768px){.columns.is-variable.is-1-mobile{--columnGap: 0.25rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-1-tablet{--columnGap: 0.25rem}}@media screen and (min-width: 769px)and (max-width: 1023px){.columns.is-variable.is-1-tablet-only{--columnGap: 0.25rem}}@media screen and (max-width: 1023px){.columns.is-variable.is-1-touch{--columnGap: 0.25rem}}@media screen and (min-width: 1024px){.columns.is-variable.is-1-desktop{--columnGap: 0.25rem}}@media screen and (min-width: 1024px)and (max-width: 1215px){.columns.is-variable.is-1-desktop-only{--columnGap: 0.25rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-1-widescreen{--columnGap: 0.25rem}}@media screen and (min-width: 1216px)and (max-width: 1407px){.columns.is-variable.is-1-widescreen-only{--columnGap: 0.25rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-1-fullhd{--columnGap: 0.25rem}}.columns.is-variable.is-2{--columnGap: 0.5rem}@media screen and (max-width: 768px){.columns.is-variable.is-2-mobile{--columnGap: 0.5rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-2-tablet{--columnGap: 0.5rem}}@media screen and (min-width: 769px)and (max-width: 1023px){.columns.is-variable.is-2-tablet-only{--columnGap: 0.5rem}}@media screen and (max-width: 1023px){.columns.is-variable.is-2-touch{--columnGap: 0.5rem}}@media screen and (min-width: 1024px){.columns.is-variable.is-2-desktop{--columnGap: 0.5rem}}@media screen and (min-width: 1024px)and (max-width: 1215px){.columns.is-variable.is-2-desktop-only{--columnGap: 0.5rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-2-widescreen{--columnGap: 0.5rem}}@media screen and (min-width: 1216px)and (max-width: 1407px){.columns.is-variable.is-2-widescreen-only{--columnGap: 0.5rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-2-fullhd{--columnGap: 0.5rem}}.columns.is-variable.is-3{--columnGap: 0.75rem}@media screen and (max-width: 768px){.columns.is-variable.is-3-mobile{--columnGap: 0.75rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-3-tablet{--columnGap: 0.75rem}}@media screen and (min-width: 769px)and (max-width: 1023px){.columns.is-variable.is-3-tablet-only{--columnGap: 0.75rem}}@media screen and (max-width: 1023px){.columns.is-variable.is-3-touch{--columnGap: 0.75rem}}@media screen and (min-width: 1024px){.columns.is-variable.is-3-desktop{--columnGap: 0.75rem}}@media screen and (min-width: 1024px)and (max-width: 1215px){.columns.is-variable.is-3-desktop-only{--columnGap: 0.75rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-3-widescreen{--columnGap: 0.75rem}}@media screen and (min-width: 1216px)and (max-width: 1407px){.columns.is-variable.is-3-widescreen-only{--columnGap: 0.75rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-3-fullhd{--columnGap: 0.75rem}}.columns.is-variable.is-4{--columnGap: 1rem}@media screen and (max-width: 768px){.columns.is-variable.is-4-mobile{--columnGap: 1rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-4-tablet{--columnGap: 1rem}}@media screen and (min-width: 769px)and (max-width: 1023px){.columns.is-variable.is-4-tablet-only{--columnGap: 1rem}}@media screen and (max-width: 1023px){.columns.is-variable.is-4-touch{--columnGap: 1rem}}@media screen and (min-width: 1024px){.columns.is-variable.is-4-desktop{--columnGap: 1rem}}@media screen and (min-width: 1024px)and (max-width: 1215px){.columns.is-variable.is-4-desktop-only{--columnGap: 1rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-4-widescreen{--columnGap: 1rem}}@media screen and (min-width: 1216px)and (max-width: 1407px){.columns.is-variable.is-4-widescreen-only{--columnGap: 1rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-4-fullhd{--columnGap: 1rem}}.columns.is-variable.is-5{--columnGap: 1.25rem}@media screen and (max-width: 768px){.columns.is-variable.is-5-mobile{--columnGap: 1.25rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-5-tablet{--columnGap: 1.25rem}}@media screen and (min-width: 769px)and (max-width: 1023px){.columns.is-variable.is-5-tablet-only{--columnGap: 1.25rem}}@media screen and (max-width: 1023px){.columns.is-variable.is-5-touch{--columnGap: 1.25rem}}@media screen and (min-width: 1024px){.columns.is-variable.is-5-desktop{--columnGap: 1.25rem}}@media screen and (min-width: 1024px)and (max-width: 1215px){.columns.is-variable.is-5-desktop-only{--columnGap: 1.25rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-5-widescreen{--columnGap: 1.25rem}}@media screen and (min-width: 1216px)and (max-width: 1407px){.columns.is-variable.is-5-widescreen-only{--columnGap: 1.25rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-5-fullhd{--columnGap: 1.25rem}}.columns.is-variable.is-6{--columnGap: 1.5rem}@media screen and (max-width: 768px){.columns.is-variable.is-6-mobile{--columnGap: 1.5rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-6-tablet{--columnGap: 1.5rem}}@media screen and (min-width: 769px)and (max-width: 1023px){.columns.is-variable.is-6-tablet-only{--columnGap: 1.5rem}}@media screen and (max-width: 1023px){.columns.is-variable.is-6-touch{--columnGap: 1.5rem}}@media screen and (min-width: 1024px){.columns.is-variable.is-6-desktop{--columnGap: 1.5rem}}@media screen and (min-width: 1024px)and (max-width: 1215px){.columns.is-variable.is-6-desktop-only{--columnGap: 1.5rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-6-widescreen{--columnGap: 1.5rem}}@media screen and (min-width: 1216px)and (max-width: 1407px){.columns.is-variable.is-6-widescreen-only{--columnGap: 1.5rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-6-fullhd{--columnGap: 1.5rem}}.columns.is-variable.is-7{--columnGap: 1.75rem}@media screen and (max-width: 768px){.columns.is-variable.is-7-mobile{--columnGap: 1.75rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-7-tablet{--columnGap: 1.75rem}}@media screen and (min-width: 769px)and (max-width: 1023px){.columns.is-variable.is-7-tablet-only{--columnGap: 1.75rem}}@media screen and (max-width: 1023px){.columns.is-variable.is-7-touch{--columnGap: 1.75rem}}@media screen and (min-width: 1024px){.columns.is-variable.is-7-desktop{--columnGap: 1.75rem}}@media screen and (min-width: 1024px)and (max-width: 1215px){.columns.is-variable.is-7-desktop-only{--columnGap: 1.75rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-7-widescreen{--columnGap: 1.75rem}}@media screen and (min-width: 1216px)and (max-width: 1407px){.columns.is-variable.is-7-widescreen-only{--columnGap: 1.75rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-7-fullhd{--columnGap: 1.75rem}}.columns.is-variable.is-8{--columnGap: 2rem}@media screen and (max-width: 768px){.columns.is-variable.is-8-mobile{--columnGap: 2rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-8-tablet{--columnGap: 2rem}}@media screen and (min-width: 769px)and (max-width: 1023px){.columns.is-variable.is-8-tablet-only{--columnGap: 2rem}}@media screen and (max-width: 1023px){.columns.is-variable.is-8-touch{--columnGap: 2rem}}@media screen and (min-width: 1024px){.columns.is-variable.is-8-desktop{--columnGap: 2rem}}@media screen and (min-width: 1024px)and (max-width: 1215px){.columns.is-variable.is-8-desktop-only{--columnGap: 2rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-8-widescreen{--columnGap: 2rem}}@media screen and (min-width: 1216px)and (max-width: 1407px){.columns.is-variable.is-8-widescreen-only{--columnGap: 2rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-8-fullhd{--columnGap: 2rem}}.tile{align-items:stretch;display:block;flex-basis:0;flex-grow:1;flex-shrink:1;min-height:min-content}.tile.is-ancestor{margin-left:-0.75rem;margin-right:-0.75rem;margin-top:-0.75rem}.tile.is-ancestor:last-child{margin-bottom:-0.75rem}.tile.is-ancestor:not(:last-child){margin-bottom:.75rem}.tile.is-child{margin:0 !important}.tile.is-parent{padding:.75rem}.tile.is-vertical{flex-direction:column}.tile.is-vertical>.tile.is-child:not(:last-child){margin-bottom:1.5rem !important}@media screen and (min-width: 769px),print{.tile:not(.is-child){display:flex}.tile.is-1{flex:none;width:8.33333337%}.tile.is-2{flex:none;width:16.66666674%}.tile.is-3{flex:none;width:25%}.tile.is-4{flex:none;width:33.33333337%}.tile.is-5{flex:none;width:41.66666674%}.tile.is-6{flex:none;width:50%}.tile.is-7{flex:none;width:58.33333337%}.tile.is-8{flex:none;width:66.66666674%}.tile.is-9{flex:none;width:75%}.tile.is-10{flex:none;width:83.33333337%}.tile.is-11{flex:none;width:91.66666674%}.tile.is-12{flex:none;width:100%}}.has-text-white{color:#fff !important}a.has-text-white:hover,a.has-text-white:focus{color:#e6e6e6 !important}.has-background-white{background-color:#fff !important}.has-text-black{color:#0a0a0a !important}a.has-text-black:hover,a.has-text-black:focus{color:#000 !important}.has-background-black{background-color:#0a0a0a !important}.has-text-light{color:#f5f5f5 !important}a.has-text-light:hover,a.has-text-light:focus{color:#dbdbdb !important}.has-background-light{background-color:#f5f5f5 !important}.has-text-dark{color:#363636 !important}a.has-text-dark:hover,a.has-text-dark:focus{color:#1c1c1c !important}.has-background-dark{background-color:#363636 !important}.has-text-primary{color:#00d1b2 !important}a.has-text-primary:hover,a.has-text-primary:focus{color:#009e86 !important}.has-background-primary{background-color:#00d1b2 !important}.has-text-primary-light{color:#ebfffc !important}a.has-text-primary-light:hover,a.has-text-primary-light:focus{color:#b8fff4 !important}.has-background-primary-light{background-color:#ebfffc !important}.has-text-primary-dark{color:#00947e !important}a.has-text-primary-dark:hover,a.has-text-primary-dark:focus{color:#00c7a9 !important}.has-background-primary-dark{background-color:#00947e !important}.has-text-link{color:#485fc7 !important}a.has-text-link:hover,a.has-text-link:focus{color:#3449a8 !important}.has-background-link{background-color:#485fc7 !important}.has-text-link-light{color:#eff1fa !important}a.has-text-link-light:hover,a.has-text-link-light:focus{color:#c8cfee !important}.has-background-link-light{background-color:#eff1fa !important}.has-text-link-dark{color:#3850b7 !important}a.has-text-link-dark:hover,a.has-text-link-dark:focus{color:#576dcb !important}.has-background-link-dark{background-color:#3850b7 !important}.has-text-info{color:#3e8ed0 !important}a.has-text-info:hover,a.has-text-info:focus{color:#2b74b1 !important}.has-background-info{background-color:#3e8ed0 !important}.has-text-info-light{color:#eff5fb !important}a.has-text-info-light:hover,a.has-text-info-light:focus{color:#c6ddf1 !important}.has-background-info-light{background-color:#eff5fb !important}.has-text-info-dark{color:#296fa8 !important}a.has-text-info-dark:hover,a.has-text-info-dark:focus{color:#368ace !important}.has-background-info-dark{background-color:#296fa8 !important}.has-text-success{color:#48c78e !important}a.has-text-success:hover,a.has-text-success:focus{color:#34a873 !important}.has-background-success{background-color:#48c78e !important}.has-text-success-light{color:#effaf5 !important}a.has-text-success-light:hover,a.has-text-success-light:focus{color:#c8eedd !important}.has-background-success-light{background-color:#effaf5 !important}.has-text-success-dark{color:#257953 !important}a.has-text-success-dark:hover,a.has-text-success-dark:focus{color:#31a06e !important}.has-background-success-dark{background-color:#257953 !important}.has-text-warning{color:#ffe08a !important}a.has-text-warning:hover,a.has-text-warning:focus{color:#ffd257 !important}.has-background-warning{background-color:#ffe08a !important}.has-text-warning-light{color:#fffaeb !important}a.has-text-warning-light:hover,a.has-text-warning-light:focus{color:#ffecb8 !important}.has-background-warning-light{background-color:#fffaeb !important}.has-text-warning-dark{color:#946c00 !important}a.has-text-warning-dark:hover,a.has-text-warning-dark:focus{color:#c79200 !important}.has-background-warning-dark{background-color:#946c00 !important}.has-text-danger{color:#f14668 !important}a.has-text-danger:hover,a.has-text-danger:focus{color:#ee1742 !important}.has-background-danger{background-color:#f14668 !important}.has-text-danger-light{color:#feecf0 !important}a.has-text-danger-light:hover,a.has-text-danger-light:focus{color:#fabdc9 !important}.has-background-danger-light{background-color:#feecf0 !important}.has-text-danger-dark{color:#cc0f35 !important}a.has-text-danger-dark:hover,a.has-text-danger-dark:focus{color:#ee2049 !important}.has-background-danger-dark{background-color:#cc0f35 !important}.has-text-black-bis{color:#121212 !important}.has-background-black-bis{background-color:#121212 !important}.has-text-black-ter{color:#242424 !important}.has-background-black-ter{background-color:#242424 !important}.has-text-grey-darker{color:#363636 !important}.has-background-grey-darker{background-color:#363636 !important}.has-text-grey-dark{color:#4a4a4a !important}.has-background-grey-dark{background-color:#4a4a4a !important}.has-text-grey{color:#7a7a7a !important}.has-background-grey{background-color:#7a7a7a !important}.has-text-grey-light{color:#b5b5b5 !important}.has-background-grey-light{background-color:#b5b5b5 !important}.has-text-grey-lighter{color:#dbdbdb !important}.has-background-grey-lighter{background-color:#dbdbdb !important}.has-text-white-ter{color:#f5f5f5 !important}.has-background-white-ter{background-color:#f5f5f5 !important}.has-text-white-bis{color:#fafafa !important}.has-background-white-bis{background-color:#fafafa !important}.is-flex-direction-row{flex-direction:row !important}.is-flex-direction-row-reverse{flex-direction:row-reverse !important}.is-flex-direction-column{flex-direction:column !important}.is-flex-direction-column-reverse{flex-direction:column-reverse !important}.is-flex-wrap-nowrap{flex-wrap:nowrap !important}.is-flex-wrap-wrap{flex-wrap:wrap !important}.is-flex-wrap-wrap-reverse{flex-wrap:wrap-reverse !important}.is-justify-content-flex-start{justify-content:flex-start !important}.is-justify-content-flex-end{justify-content:flex-end !important}.is-justify-content-center{justify-content:center !important}.is-justify-content-space-between{justify-content:space-between !important}.is-justify-content-space-around{justify-content:space-around !important}.is-justify-content-space-evenly{justify-content:space-evenly !important}.is-justify-content-start{justify-content:start !important}.is-justify-content-end{justify-content:end !important}.is-justify-content-left{justify-content:left !important}.is-justify-content-right{justify-content:right !important}.is-align-content-flex-start{align-content:flex-start !important}.is-align-content-flex-end{align-content:flex-end !important}.is-align-content-center{align-content:center !important}.is-align-content-space-between{align-content:space-between !important}.is-align-content-space-around{align-content:space-around !important}.is-align-content-space-evenly{align-content:space-evenly !important}.is-align-content-stretch{align-content:stretch !important}.is-align-content-start{align-content:start !important}.is-align-content-end{align-content:end !important}.is-align-content-baseline{align-content:baseline !important}.is-align-items-stretch{align-items:stretch !important}.is-align-items-flex-start{align-items:flex-start !important}.is-align-items-flex-end{align-items:flex-end !important}.is-align-items-center{align-items:center !important}.is-align-items-baseline{align-items:baseline !important}.is-align-items-start{align-items:start !important}.is-align-items-end{align-items:end !important}.is-align-items-self-start{align-items:self-start !important}.is-align-items-self-end{align-items:self-end !important}.is-align-self-auto{align-self:auto !important}.is-align-self-flex-start{align-self:flex-start !important}.is-align-self-flex-end{align-self:flex-end !important}.is-align-self-center{align-self:center !important}.is-align-self-baseline{align-self:baseline !important}.is-align-self-stretch{align-self:stretch !important}.is-flex-grow-0{flex-grow:0 !important}.is-flex-grow-1{flex-grow:1 !important}.is-flex-grow-2{flex-grow:2 !important}.is-flex-grow-3{flex-grow:3 !important}.is-flex-grow-4{flex-grow:4 !important}.is-flex-grow-5{flex-grow:5 !important}.is-flex-shrink-0{flex-shrink:0 !important}.is-flex-shrink-1{flex-shrink:1 !important}.is-flex-shrink-2{flex-shrink:2 !important}.is-flex-shrink-3{flex-shrink:3 !important}.is-flex-shrink-4{flex-shrink:4 !important}.is-flex-shrink-5{flex-shrink:5 !important}.is-clearfix::after{clear:both;content:\\\" \\\";display:table}.is-pulled-left{float:left !important}.is-pulled-right{float:right !important}.is-radiusless{border-radius:0 !important}.is-shadowless{box-shadow:none !important}.is-clickable{cursor:pointer !important;pointer-events:all !important}.is-clipped{overflow:hidden !important}.is-relative{position:relative !important}.is-marginless{margin:0 !important}.is-paddingless{padding:0 !important}.m-0{margin:0 !important}.mt-0{margin-top:0 !important}.mr-0{margin-right:0 !important}.mb-0{margin-bottom:0 !important}.ml-0{margin-left:0 !important}.mx-0{margin-left:0 !important;margin-right:0 !important}.my-0{margin-top:0 !important;margin-bottom:0 !important}.m-1{margin:.25rem !important}.mt-1{margin-top:.25rem !important}.mr-1{margin-right:.25rem !important}.mb-1{margin-bottom:.25rem !important}.ml-1{margin-left:.25rem !important}.mx-1{margin-left:.25rem !important;margin-right:.25rem !important}.my-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.m-2{margin:.5rem !important}.mt-2{margin-top:.5rem !important}.mr-2{margin-right:.5rem !important}.mb-2{margin-bottom:.5rem !important}.ml-2{margin-left:.5rem !important}.mx-2{margin-left:.5rem !important;margin-right:.5rem !important}.my-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.m-3{margin:.75rem !important}.mt-3{margin-top:.75rem !important}.mr-3{margin-right:.75rem !important}.mb-3{margin-bottom:.75rem !important}.ml-3{margin-left:.75rem !important}.mx-3{margin-left:.75rem !important;margin-right:.75rem !important}.my-3{margin-top:.75rem !important;margin-bottom:.75rem !important}.m-4{margin:1rem !important}.mt-4{margin-top:1rem !important}.mr-4{margin-right:1rem !important}.mb-4{margin-bottom:1rem !important}.ml-4{margin-left:1rem !important}.mx-4{margin-left:1rem !important;margin-right:1rem !important}.my-4{margin-top:1rem !important;margin-bottom:1rem !important}.m-5{margin:1.5rem !important}.mt-5{margin-top:1.5rem !important}.mr-5{margin-right:1.5rem !important}.mb-5{margin-bottom:1.5rem !important}.ml-5{margin-left:1.5rem !important}.mx-5{margin-left:1.5rem !important;margin-right:1.5rem !important}.my-5{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.m-6{margin:3rem !important}.mt-6{margin-top:3rem !important}.mr-6{margin-right:3rem !important}.mb-6{margin-bottom:3rem !important}.ml-6{margin-left:3rem !important}.mx-6{margin-left:3rem !important;margin-right:3rem !important}.my-6{margin-top:3rem !important;margin-bottom:3rem !important}.m-auto{margin:auto !important}.mt-auto{margin-top:auto !important}.mr-auto{margin-right:auto !important}.mb-auto{margin-bottom:auto !important}.ml-auto{margin-left:auto !important}.mx-auto{margin-left:auto !important;margin-right:auto !important}.my-auto{margin-top:auto !important;margin-bottom:auto !important}.p-0{padding:0 !important}.pt-0{padding-top:0 !important}.pr-0{padding-right:0 !important}.pb-0{padding-bottom:0 !important}.pl-0{padding-left:0 !important}.px-0{padding-left:0 !important;padding-right:0 !important}.py-0{padding-top:0 !important;padding-bottom:0 !important}.p-1{padding:.25rem !important}.pt-1{padding-top:.25rem !important}.pr-1{padding-right:.25rem !important}.pb-1{padding-bottom:.25rem !important}.pl-1{padding-left:.25rem !important}.px-1{padding-left:.25rem !important;padding-right:.25rem !important}.py-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.p-2{padding:.5rem !important}.pt-2{padding-top:.5rem !important}.pr-2{padding-right:.5rem !important}.pb-2{padding-bottom:.5rem !important}.pl-2{padding-left:.5rem !important}.px-2{padding-left:.5rem !important;padding-right:.5rem !important}.py-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.p-3{padding:.75rem !important}.pt-3{padding-top:.75rem !important}.pr-3{padding-right:.75rem !important}.pb-3{padding-bottom:.75rem !important}.pl-3{padding-left:.75rem !important}.px-3{padding-left:.75rem !important;padding-right:.75rem !important}.py-3{padding-top:.75rem !important;padding-bottom:.75rem !important}.p-4{padding:1rem !important}.pt-4{padding-top:1rem !important}.pr-4{padding-right:1rem !important}.pb-4{padding-bottom:1rem !important}.pl-4{padding-left:1rem !important}.px-4{padding-left:1rem !important;padding-right:1rem !important}.py-4{padding-top:1rem !important;padding-bottom:1rem !important}.p-5{padding:1.5rem !important}.pt-5{padding-top:1.5rem !important}.pr-5{padding-right:1.5rem !important}.pb-5{padding-bottom:1.5rem !important}.pl-5{padding-left:1.5rem !important}.px-5{padding-left:1.5rem !important;padding-right:1.5rem !important}.py-5{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.p-6{padding:3rem !important}.pt-6{padding-top:3rem !important}.pr-6{padding-right:3rem !important}.pb-6{padding-bottom:3rem !important}.pl-6{padding-left:3rem !important}.px-6{padding-left:3rem !important;padding-right:3rem !important}.py-6{padding-top:3rem !important;padding-bottom:3rem !important}.p-auto{padding:auto !important}.pt-auto{padding-top:auto !important}.pr-auto{padding-right:auto !important}.pb-auto{padding-bottom:auto !important}.pl-auto{padding-left:auto !important}.px-auto{padding-left:auto !important;padding-right:auto !important}.py-auto{padding-top:auto !important;padding-bottom:auto !important}.is-size-1{font-size:3rem !important}.is-size-2{font-size:2.5rem !important}.is-size-3{font-size:2rem !important}.is-size-4{font-size:1.5rem !important}.is-size-5{font-size:1.25rem !important}.is-size-6{font-size:1rem !important}.is-size-7{font-size:.75rem !important}@media screen and (max-width: 768px){.is-size-1-mobile{font-size:3rem !important}.is-size-2-mobile{font-size:2.5rem !important}.is-size-3-mobile{font-size:2rem !important}.is-size-4-mobile{font-size:1.5rem !important}.is-size-5-mobile{font-size:1.25rem !important}.is-size-6-mobile{font-size:1rem !important}.is-size-7-mobile{font-size:.75rem !important}}@media screen and (min-width: 769px),print{.is-size-1-tablet{font-size:3rem !important}.is-size-2-tablet{font-size:2.5rem !important}.is-size-3-tablet{font-size:2rem !important}.is-size-4-tablet{font-size:1.5rem !important}.is-size-5-tablet{font-size:1.25rem !important}.is-size-6-tablet{font-size:1rem !important}.is-size-7-tablet{font-size:.75rem !important}}@media screen and (max-width: 1023px){.is-size-1-touch{font-size:3rem !important}.is-size-2-touch{font-size:2.5rem !important}.is-size-3-touch{font-size:2rem !important}.is-size-4-touch{font-size:1.5rem !important}.is-size-5-touch{font-size:1.25rem !important}.is-size-6-touch{font-size:1rem !important}.is-size-7-touch{font-size:.75rem !important}}@media screen and (min-width: 1024px){.is-size-1-desktop{font-size:3rem !important}.is-size-2-desktop{font-size:2.5rem !important}.is-size-3-desktop{font-size:2rem !important}.is-size-4-desktop{font-size:1.5rem !important}.is-size-5-desktop{font-size:1.25rem !important}.is-size-6-desktop{font-size:1rem !important}.is-size-7-desktop{font-size:.75rem !important}}@media screen and (min-width: 1216px){.is-size-1-widescreen{font-size:3rem !important}.is-size-2-widescreen{font-size:2.5rem !important}.is-size-3-widescreen{font-size:2rem !important}.is-size-4-widescreen{font-size:1.5rem !important}.is-size-5-widescreen{font-size:1.25rem !important}.is-size-6-widescreen{font-size:1rem !important}.is-size-7-widescreen{font-size:.75rem !important}}@media screen and (min-width: 1408px){.is-size-1-fullhd{font-size:3rem !important}.is-size-2-fullhd{font-size:2.5rem !important}.is-size-3-fullhd{font-size:2rem !important}.is-size-4-fullhd{font-size:1.5rem !important}.is-size-5-fullhd{font-size:1.25rem !important}.is-size-6-fullhd{font-size:1rem !important}.is-size-7-fullhd{font-size:.75rem !important}}.has-text-centered{text-align:center !important}.has-text-justified{text-align:justify !important}.has-text-left{text-align:left !important}.has-text-right{text-align:right !important}@media screen and (max-width: 768px){.has-text-centered-mobile{text-align:center !important}}@media screen and (min-width: 769px),print{.has-text-centered-tablet{text-align:center !important}}@media screen and (min-width: 769px)and (max-width: 1023px){.has-text-centered-tablet-only{text-align:center !important}}@media screen and (max-width: 1023px){.has-text-centered-touch{text-align:center !important}}@media screen and (min-width: 1024px){.has-text-centered-desktop{text-align:center !important}}@media screen and (min-width: 1024px)and (max-width: 1215px){.has-text-centered-desktop-only{text-align:center !important}}@media screen and (min-width: 1216px){.has-text-centered-widescreen{text-align:center !important}}@media screen and (min-width: 1216px)and (max-width: 1407px){.has-text-centered-widescreen-only{text-align:center !important}}@media screen and (min-width: 1408px){.has-text-centered-fullhd{text-align:center !important}}@media screen and (max-width: 768px){.has-text-justified-mobile{text-align:justify !important}}@media screen and (min-width: 769px),print{.has-text-justified-tablet{text-align:justify !important}}@media screen and (min-width: 769px)and (max-width: 1023px){.has-text-justified-tablet-only{text-align:justify !important}}@media screen and (max-width: 1023px){.has-text-justified-touch{text-align:justify !important}}@media screen and (min-width: 1024px){.has-text-justified-desktop{text-align:justify !important}}@media screen and (min-width: 1024px)and (max-width: 1215px){.has-text-justified-desktop-only{text-align:justify !important}}@media screen and (min-width: 1216px){.has-text-justified-widescreen{text-align:justify !important}}@media screen and (min-width: 1216px)and (max-width: 1407px){.has-text-justified-widescreen-only{text-align:justify !important}}@media screen and (min-width: 1408px){.has-text-justified-fullhd{text-align:justify !important}}@media screen and (max-width: 768px){.has-text-left-mobile{text-align:left !important}}@media screen and (min-width: 769px),print{.has-text-left-tablet{text-align:left !important}}@media screen and (min-width: 769px)and (max-width: 1023px){.has-text-left-tablet-only{text-align:left !important}}@media screen and (max-width: 1023px){.has-text-left-touch{text-align:left !important}}@media screen and (min-width: 1024px){.has-text-left-desktop{text-align:left !important}}@media screen and (min-width: 1024px)and (max-width: 1215px){.has-text-left-desktop-only{text-align:left !important}}@media screen and (min-width: 1216px){.has-text-left-widescreen{text-align:left !important}}@media screen and (min-width: 1216px)and (max-width: 1407px){.has-text-left-widescreen-only{text-align:left !important}}@media screen and (min-width: 1408px){.has-text-left-fullhd{text-align:left !important}}@media screen and (max-width: 768px){.has-text-right-mobile{text-align:right !important}}@media screen and (min-width: 769px),print{.has-text-right-tablet{text-align:right !important}}@media screen and (min-width: 769px)and (max-width: 1023px){.has-text-right-tablet-only{text-align:right !important}}@media screen and (max-width: 1023px){.has-text-right-touch{text-align:right !important}}@media screen and (min-width: 1024px){.has-text-right-desktop{text-align:right !important}}@media screen and (min-width: 1024px)and (max-width: 1215px){.has-text-right-desktop-only{text-align:right !important}}@media screen and (min-width: 1216px){.has-text-right-widescreen{text-align:right !important}}@media screen and (min-width: 1216px)and (max-width: 1407px){.has-text-right-widescreen-only{text-align:right !important}}@media screen and (min-width: 1408px){.has-text-right-fullhd{text-align:right !important}}.is-capitalized{text-transform:capitalize !important}.is-lowercase{text-transform:lowercase !important}.is-uppercase{text-transform:uppercase !important}.is-italic{font-style:italic !important}.is-underlined{text-decoration:underline !important}.has-text-weight-light{font-weight:300 !important}.has-text-weight-normal{font-weight:400 !important}.has-text-weight-medium{font-weight:500 !important}.has-text-weight-semibold{font-weight:600 !important}.has-text-weight-bold{font-weight:700 !important}.is-family-primary{font-family:Tahoma,sans-serif !important}.is-family-secondary{font-family:Tahoma,sans-serif !important}.is-family-sans-serif{font-family:Tahoma,sans-serif !important}.is-family-monospace{font-family:monospace !important}.is-family-code{font-family:monospace !important}.is-block{display:block !important}@media screen and (max-width: 768px){.is-block-mobile{display:block !important}}@media screen and (min-width: 769px),print{.is-block-tablet{display:block !important}}@media screen and (min-width: 769px)and (max-width: 1023px){.is-block-tablet-only{display:block !important}}@media screen and (max-width: 1023px){.is-block-touch{display:block !important}}@media screen and (min-width: 1024px){.is-block-desktop{display:block !important}}@media screen and (min-width: 1024px)and (max-width: 1215px){.is-block-desktop-only{display:block !important}}@media screen and (min-width: 1216px){.is-block-widescreen{display:block !important}}@media screen and (min-width: 1216px)and (max-width: 1407px){.is-block-widescreen-only{display:block !important}}@media screen and (min-width: 1408px){.is-block-fullhd{display:block !important}}.is-flex{display:flex !important}@media screen and (max-width: 768px){.is-flex-mobile{display:flex !important}}@media screen and (min-width: 769px),print{.is-flex-tablet{display:flex !important}}@media screen and (min-width: 769px)and (max-width: 1023px){.is-flex-tablet-only{display:flex !important}}@media screen and (max-width: 1023px){.is-flex-touch{display:flex !important}}@media screen and (min-width: 1024px){.is-flex-desktop{display:flex !important}}@media screen and (min-width: 1024px)and (max-width: 1215px){.is-flex-desktop-only{display:flex !important}}@media screen and (min-width: 1216px){.is-flex-widescreen{display:flex !important}}@media screen and (min-width: 1216px)and (max-width: 1407px){.is-flex-widescreen-only{display:flex !important}}@media screen and (min-width: 1408px){.is-flex-fullhd{display:flex !important}}.is-inline{display:inline !important}@media screen and (max-width: 768px){.is-inline-mobile{display:inline !important}}@media screen and (min-width: 769px),print{.is-inline-tablet{display:inline !important}}@media screen and (min-width: 769px)and (max-width: 1023px){.is-inline-tablet-only{display:inline !important}}@media screen and (max-width: 1023px){.is-inline-touch{display:inline !important}}@media screen and (min-width: 1024px){.is-inline-desktop{display:inline !important}}@media screen and (min-width: 1024px)and (max-width: 1215px){.is-inline-desktop-only{display:inline !important}}@media screen and (min-width: 1216px){.is-inline-widescreen{display:inline !important}}@media screen and (min-width: 1216px)and (max-width: 1407px){.is-inline-widescreen-only{display:inline !important}}@media screen and (min-width: 1408px){.is-inline-fullhd{display:inline !important}}.is-inline-block{display:inline-block !important}@media screen and (max-width: 768px){.is-inline-block-mobile{display:inline-block !important}}@media screen and (min-width: 769px),print{.is-inline-block-tablet{display:inline-block !important}}@media screen and (min-width: 769px)and (max-width: 1023px){.is-inline-block-tablet-only{display:inline-block !important}}@media screen and (max-width: 1023px){.is-inline-block-touch{display:inline-block !important}}@media screen and (min-width: 1024px){.is-inline-block-desktop{display:inline-block !important}}@media screen and (min-width: 1024px)and (max-width: 1215px){.is-inline-block-desktop-only{display:inline-block !important}}@media screen and (min-width: 1216px){.is-inline-block-widescreen{display:inline-block !important}}@media screen and (min-width: 1216px)and (max-width: 1407px){.is-inline-block-widescreen-only{display:inline-block !important}}@media screen and (min-width: 1408px){.is-inline-block-fullhd{display:inline-block !important}}.is-inline-flex{display:inline-flex !important}@media screen and (max-width: 768px){.is-inline-flex-mobile{display:inline-flex !important}}@media screen and (min-width: 769px),print{.is-inline-flex-tablet{display:inline-flex !important}}@media screen and (min-width: 769px)and (max-width: 1023px){.is-inline-flex-tablet-only{display:inline-flex !important}}@media screen and (max-width: 1023px){.is-inline-flex-touch{display:inline-flex !important}}@media screen and (min-width: 1024px){.is-inline-flex-desktop{display:inline-flex !important}}@media screen and (min-width: 1024px)and (max-width: 1215px){.is-inline-flex-desktop-only{display:inline-flex !important}}@media screen and (min-width: 1216px){.is-inline-flex-widescreen{display:inline-flex !important}}@media screen and (min-width: 1216px)and (max-width: 1407px){.is-inline-flex-widescreen-only{display:inline-flex !important}}@media screen and (min-width: 1408px){.is-inline-flex-fullhd{display:inline-flex !important}}.is-hidden{display:none !important}.is-sr-only{border:none !important;clip:rect(0, 0, 0, 0) !important;height:.01em !important;overflow:hidden !important;padding:0 !important;position:absolute !important;white-space:nowrap !important;width:.01em !important}@media screen and (max-width: 768px){.is-hidden-mobile{display:none !important}}@media screen and (min-width: 769px),print{.is-hidden-tablet{display:none !important}}@media screen and (min-width: 769px)and (max-width: 1023px){.is-hidden-tablet-only{display:none !important}}@media screen and (max-width: 1023px){.is-hidden-touch{display:none !important}}@media screen and (min-width: 1024px){.is-hidden-desktop{display:none !important}}@media screen and (min-width: 1024px)and (max-width: 1215px){.is-hidden-desktop-only{display:none !important}}@media screen and (min-width: 1216px){.is-hidden-widescreen{display:none !important}}@media screen and (min-width: 1216px)and (max-width: 1407px){.is-hidden-widescreen-only{display:none !important}}@media screen and (min-width: 1408px){.is-hidden-fullhd{display:none !important}}.is-invisible{visibility:hidden !important}@media screen and (max-width: 768px){.is-invisible-mobile{visibility:hidden !important}}@media screen and (min-width: 769px),print{.is-invisible-tablet{visibility:hidden !important}}@media screen and (min-width: 769px)and (max-width: 1023px){.is-invisible-tablet-only{visibility:hidden !important}}@media screen and (max-width: 1023px){.is-invisible-touch{visibility:hidden !important}}@media screen and (min-width: 1024px){.is-invisible-desktop{visibility:hidden !important}}@media screen and (min-width: 1024px)and (max-width: 1215px){.is-invisible-desktop-only{visibility:hidden !important}}@media screen and (min-width: 1216px){.is-invisible-widescreen{visibility:hidden !important}}@media screen and (min-width: 1216px)and (max-width: 1407px){.is-invisible-widescreen-only{visibility:hidden !important}}@media screen and (min-width: 1408px){.is-invisible-fullhd{visibility:hidden !important}}.hero{align-items:stretch;display:flex;flex-direction:column;justify-content:space-between}.hero .navbar{background:none}.hero .tabs ul{border-bottom:none}.hero.is-white{background-color:#fff;color:#0a0a0a}.hero.is-white a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-white strong{color:inherit}.hero.is-white .title{color:#0a0a0a}.hero.is-white .subtitle{color:rgba(10,10,10,.9)}.hero.is-white .subtitle a:not(.button),.hero.is-white .subtitle strong{color:#0a0a0a}@media screen and (max-width: 1023px){.hero.is-white .navbar-menu{background-color:#fff}}.hero.is-white .navbar-item,.hero.is-white .navbar-link{color:rgba(10,10,10,.7)}.hero.is-white a.navbar-item:hover,.hero.is-white a.navbar-item.is-active,.hero.is-white .navbar-link:hover,.hero.is-white .navbar-link.is-active{background-color:#f2f2f2;color:#0a0a0a}.hero.is-white .tabs a{color:#0a0a0a;opacity:.9}.hero.is-white .tabs a:hover{opacity:1}.hero.is-white .tabs li.is-active a{color:#fff !important;opacity:1}.hero.is-white .tabs.is-boxed a,.hero.is-white .tabs.is-toggle a{color:#0a0a0a}.hero.is-white .tabs.is-boxed a:hover,.hero.is-white .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-white .tabs.is-boxed li.is-active a,.hero.is-white .tabs.is-boxed li.is-active a:hover,.hero.is-white .tabs.is-toggle li.is-active a,.hero.is-white .tabs.is-toggle li.is-active a:hover{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}.hero.is-white.is-bold{background-image:linear-gradient(141deg, #e8e3e4 0%, white 71%, white 100%)}@media screen and (max-width: 768px){.hero.is-white.is-bold .navbar-menu{background-image:linear-gradient(141deg, #e8e3e4 0%, white 71%, white 100%)}}.hero.is-black{background-color:#0a0a0a;color:#fff}.hero.is-black a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-black strong{color:inherit}.hero.is-black .title{color:#fff}.hero.is-black .subtitle{color:rgba(255,255,255,.9)}.hero.is-black .subtitle a:not(.button),.hero.is-black .subtitle strong{color:#fff}@media screen and (max-width: 1023px){.hero.is-black .navbar-menu{background-color:#0a0a0a}}.hero.is-black .navbar-item,.hero.is-black .navbar-link{color:rgba(255,255,255,.7)}.hero.is-black a.navbar-item:hover,.hero.is-black a.navbar-item.is-active,.hero.is-black .navbar-link:hover,.hero.is-black .navbar-link.is-active{background-color:#000;color:#fff}.hero.is-black .tabs a{color:#fff;opacity:.9}.hero.is-black .tabs a:hover{opacity:1}.hero.is-black .tabs li.is-active a{color:#0a0a0a !important;opacity:1}.hero.is-black .tabs.is-boxed a,.hero.is-black .tabs.is-toggle a{color:#fff}.hero.is-black .tabs.is-boxed a:hover,.hero.is-black .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-black .tabs.is-boxed li.is-active a,.hero.is-black .tabs.is-boxed li.is-active a:hover,.hero.is-black .tabs.is-toggle li.is-active a,.hero.is-black .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#0a0a0a}.hero.is-black.is-bold{background-image:linear-gradient(141deg, black 0%, #0a0a0a 71%, #181616 100%)}@media screen and (max-width: 768px){.hero.is-black.is-bold .navbar-menu{background-image:linear-gradient(141deg, black 0%, #0a0a0a 71%, #181616 100%)}}.hero.is-light{background-color:#f5f5f5;color:rgba(0,0,0,.7)}.hero.is-light a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-light strong{color:inherit}.hero.is-light .title{color:rgba(0,0,0,.7)}.hero.is-light .subtitle{color:rgba(0,0,0,.9)}.hero.is-light .subtitle a:not(.button),.hero.is-light .subtitle strong{color:rgba(0,0,0,.7)}@media screen and (max-width: 1023px){.hero.is-light .navbar-menu{background-color:#f5f5f5}}.hero.is-light .navbar-item,.hero.is-light .navbar-link{color:rgba(0,0,0,.7)}.hero.is-light a.navbar-item:hover,.hero.is-light a.navbar-item.is-active,.hero.is-light .navbar-link:hover,.hero.is-light .navbar-link.is-active{background-color:#e8e8e8;color:rgba(0,0,0,.7)}.hero.is-light .tabs a{color:rgba(0,0,0,.7);opacity:.9}.hero.is-light .tabs a:hover{opacity:1}.hero.is-light .tabs li.is-active a{color:#f5f5f5 !important;opacity:1}.hero.is-light .tabs.is-boxed a,.hero.is-light .tabs.is-toggle a{color:rgba(0,0,0,.7)}.hero.is-light .tabs.is-boxed a:hover,.hero.is-light .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-light .tabs.is-boxed li.is-active a,.hero.is-light .tabs.is-boxed li.is-active a:hover,.hero.is-light .tabs.is-toggle li.is-active a,.hero.is-light .tabs.is-toggle li.is-active a:hover{background-color:rgba(0,0,0,.7);border-color:rgba(0,0,0,.7);color:#f5f5f5}.hero.is-light.is-bold{background-image:linear-gradient(141deg, #dfd8d9 0%, whitesmoke 71%, white 100%)}@media screen and (max-width: 768px){.hero.is-light.is-bold .navbar-menu{background-image:linear-gradient(141deg, #dfd8d9 0%, whitesmoke 71%, white 100%)}}.hero.is-dark{background-color:#363636;color:#fff}.hero.is-dark a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-dark strong{color:inherit}.hero.is-dark .title{color:#fff}.hero.is-dark .subtitle{color:rgba(255,255,255,.9)}.hero.is-dark .subtitle a:not(.button),.hero.is-dark .subtitle strong{color:#fff}@media screen and (max-width: 1023px){.hero.is-dark .navbar-menu{background-color:#363636}}.hero.is-dark .navbar-item,.hero.is-dark .navbar-link{color:rgba(255,255,255,.7)}.hero.is-dark a.navbar-item:hover,.hero.is-dark a.navbar-item.is-active,.hero.is-dark .navbar-link:hover,.hero.is-dark .navbar-link.is-active{background-color:#292929;color:#fff}.hero.is-dark .tabs a{color:#fff;opacity:.9}.hero.is-dark .tabs a:hover{opacity:1}.hero.is-dark .tabs li.is-active a{color:#363636 !important;opacity:1}.hero.is-dark .tabs.is-boxed a,.hero.is-dark .tabs.is-toggle a{color:#fff}.hero.is-dark .tabs.is-boxed a:hover,.hero.is-dark .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-dark .tabs.is-boxed li.is-active a,.hero.is-dark .tabs.is-boxed li.is-active a:hover,.hero.is-dark .tabs.is-toggle li.is-active a,.hero.is-dark .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#363636}.hero.is-dark.is-bold{background-image:linear-gradient(141deg, #1f191a 0%, #363636 71%, #46403f 100%)}@media screen and (max-width: 768px){.hero.is-dark.is-bold .navbar-menu{background-image:linear-gradient(141deg, #1f191a 0%, #363636 71%, #46403f 100%)}}.hero.is-primary{background-color:#00d1b2;color:#fff}.hero.is-primary a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-primary strong{color:inherit}.hero.is-primary .title{color:#fff}.hero.is-primary .subtitle{color:rgba(255,255,255,.9)}.hero.is-primary .subtitle a:not(.button),.hero.is-primary .subtitle strong{color:#fff}@media screen and (max-width: 1023px){.hero.is-primary .navbar-menu{background-color:#00d1b2}}.hero.is-primary .navbar-item,.hero.is-primary .navbar-link{color:rgba(255,255,255,.7)}.hero.is-primary a.navbar-item:hover,.hero.is-primary a.navbar-item.is-active,.hero.is-primary .navbar-link:hover,.hero.is-primary .navbar-link.is-active{background-color:#00b89c;color:#fff}.hero.is-primary .tabs a{color:#fff;opacity:.9}.hero.is-primary .tabs a:hover{opacity:1}.hero.is-primary .tabs li.is-active a{color:#00d1b2 !important;opacity:1}.hero.is-primary .tabs.is-boxed a,.hero.is-primary .tabs.is-toggle a{color:#fff}.hero.is-primary .tabs.is-boxed a:hover,.hero.is-primary .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-primary .tabs.is-boxed li.is-active a,.hero.is-primary .tabs.is-boxed li.is-active a:hover,.hero.is-primary .tabs.is-toggle li.is-active a,.hero.is-primary .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#00d1b2}.hero.is-primary.is-bold{background-image:linear-gradient(141deg, #009e6c 0%, #00d1b2 71%, #00e7eb 100%)}@media screen and (max-width: 768px){.hero.is-primary.is-bold .navbar-menu{background-image:linear-gradient(141deg, #009e6c 0%, #00d1b2 71%, #00e7eb 100%)}}.hero.is-link{background-color:#485fc7;color:#fff}.hero.is-link a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-link strong{color:inherit}.hero.is-link .title{color:#fff}.hero.is-link .subtitle{color:rgba(255,255,255,.9)}.hero.is-link .subtitle a:not(.button),.hero.is-link .subtitle strong{color:#fff}@media screen and (max-width: 1023px){.hero.is-link .navbar-menu{background-color:#485fc7}}.hero.is-link .navbar-item,.hero.is-link .navbar-link{color:rgba(255,255,255,.7)}.hero.is-link a.navbar-item:hover,.hero.is-link a.navbar-item.is-active,.hero.is-link .navbar-link:hover,.hero.is-link .navbar-link.is-active{background-color:#3a51bb;color:#fff}.hero.is-link .tabs a{color:#fff;opacity:.9}.hero.is-link .tabs a:hover{opacity:1}.hero.is-link .tabs li.is-active a{color:#485fc7 !important;opacity:1}.hero.is-link .tabs.is-boxed a,.hero.is-link .tabs.is-toggle a{color:#fff}.hero.is-link .tabs.is-boxed a:hover,.hero.is-link .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-link .tabs.is-boxed li.is-active a,.hero.is-link .tabs.is-boxed li.is-active a:hover,.hero.is-link .tabs.is-toggle li.is-active a,.hero.is-link .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#485fc7}.hero.is-link.is-bold{background-image:linear-gradient(141deg, #2959b3 0%, #485fc7 71%, #5658d2 100%)}@media screen and (max-width: 768px){.hero.is-link.is-bold .navbar-menu{background-image:linear-gradient(141deg, #2959b3 0%, #485fc7 71%, #5658d2 100%)}}.hero.is-info{background-color:#3e8ed0;color:#fff}.hero.is-info a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-info strong{color:inherit}.hero.is-info .title{color:#fff}.hero.is-info .subtitle{color:rgba(255,255,255,.9)}.hero.is-info .subtitle a:not(.button),.hero.is-info .subtitle strong{color:#fff}@media screen and (max-width: 1023px){.hero.is-info .navbar-menu{background-color:#3e8ed0}}.hero.is-info .navbar-item,.hero.is-info .navbar-link{color:rgba(255,255,255,.7)}.hero.is-info a.navbar-item:hover,.hero.is-info a.navbar-item.is-active,.hero.is-info .navbar-link:hover,.hero.is-info .navbar-link.is-active{background-color:#3082c5;color:#fff}.hero.is-info .tabs a{color:#fff;opacity:.9}.hero.is-info .tabs a:hover{opacity:1}.hero.is-info .tabs li.is-active a{color:#3e8ed0 !important;opacity:1}.hero.is-info .tabs.is-boxed a,.hero.is-info .tabs.is-toggle a{color:#fff}.hero.is-info .tabs.is-boxed a:hover,.hero.is-info .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-info .tabs.is-boxed li.is-active a,.hero.is-info .tabs.is-boxed li.is-active a:hover,.hero.is-info .tabs.is-toggle li.is-active a,.hero.is-info .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#3e8ed0}.hero.is-info.is-bold{background-image:linear-gradient(141deg, #208fbc 0%, #3e8ed0 71%, #4d83db 100%)}@media screen and (max-width: 768px){.hero.is-info.is-bold .navbar-menu{background-image:linear-gradient(141deg, #208fbc 0%, #3e8ed0 71%, #4d83db 100%)}}.hero.is-success{background-color:#48c78e;color:#fff}.hero.is-success a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-success strong{color:inherit}.hero.is-success .title{color:#fff}.hero.is-success .subtitle{color:rgba(255,255,255,.9)}.hero.is-success .subtitle a:not(.button),.hero.is-success .subtitle strong{color:#fff}@media screen and (max-width: 1023px){.hero.is-success .navbar-menu{background-color:#48c78e}}.hero.is-success .navbar-item,.hero.is-success .navbar-link{color:rgba(255,255,255,.7)}.hero.is-success a.navbar-item:hover,.hero.is-success a.navbar-item.is-active,.hero.is-success .navbar-link:hover,.hero.is-success .navbar-link.is-active{background-color:#3abb81;color:#fff}.hero.is-success .tabs a{color:#fff;opacity:.9}.hero.is-success .tabs a:hover{opacity:1}.hero.is-success .tabs li.is-active a{color:#48c78e !important;opacity:1}.hero.is-success .tabs.is-boxed a,.hero.is-success .tabs.is-toggle a{color:#fff}.hero.is-success .tabs.is-boxed a:hover,.hero.is-success .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-success .tabs.is-boxed li.is-active a,.hero.is-success .tabs.is-boxed li.is-active a:hover,.hero.is-success .tabs.is-toggle li.is-active a,.hero.is-success .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#48c78e}.hero.is-success.is-bold{background-image:linear-gradient(141deg, #29b35e 0%, #48c78e 71%, #56d2af 100%)}@media screen and (max-width: 768px){.hero.is-success.is-bold .navbar-menu{background-image:linear-gradient(141deg, #29b35e 0%, #48c78e 71%, #56d2af 100%)}}.hero.is-warning{background-color:#ffe08a;color:rgba(0,0,0,.7)}.hero.is-warning a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-warning strong{color:inherit}.hero.is-warning .title{color:rgba(0,0,0,.7)}.hero.is-warning .subtitle{color:rgba(0,0,0,.9)}.hero.is-warning .subtitle a:not(.button),.hero.is-warning .subtitle strong{color:rgba(0,0,0,.7)}@media screen and (max-width: 1023px){.hero.is-warning .navbar-menu{background-color:#ffe08a}}.hero.is-warning .navbar-item,.hero.is-warning .navbar-link{color:rgba(0,0,0,.7)}.hero.is-warning a.navbar-item:hover,.hero.is-warning a.navbar-item.is-active,.hero.is-warning .navbar-link:hover,.hero.is-warning .navbar-link.is-active{background-color:#ffd970;color:rgba(0,0,0,.7)}.hero.is-warning .tabs a{color:rgba(0,0,0,.7);opacity:.9}.hero.is-warning .tabs a:hover{opacity:1}.hero.is-warning .tabs li.is-active a{color:#ffe08a !important;opacity:1}.hero.is-warning .tabs.is-boxed a,.hero.is-warning .tabs.is-toggle a{color:rgba(0,0,0,.7)}.hero.is-warning .tabs.is-boxed a:hover,.hero.is-warning .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-warning .tabs.is-boxed li.is-active a,.hero.is-warning .tabs.is-boxed li.is-active a:hover,.hero.is-warning .tabs.is-toggle li.is-active a,.hero.is-warning .tabs.is-toggle li.is-active a:hover{background-color:rgba(0,0,0,.7);border-color:rgba(0,0,0,.7);color:#ffe08a}.hero.is-warning.is-bold{background-image:linear-gradient(141deg, #ffb657 0%, #ffe08a 71%, #fff6a3 100%)}@media screen and (max-width: 768px){.hero.is-warning.is-bold .navbar-menu{background-image:linear-gradient(141deg, #ffb657 0%, #ffe08a 71%, #fff6a3 100%)}}.hero.is-danger{background-color:#f14668;color:#fff}.hero.is-danger a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-danger strong{color:inherit}.hero.is-danger .title{color:#fff}.hero.is-danger .subtitle{color:rgba(255,255,255,.9)}.hero.is-danger .subtitle a:not(.button),.hero.is-danger .subtitle strong{color:#fff}@media screen and (max-width: 1023px){.hero.is-danger .navbar-menu{background-color:#f14668}}.hero.is-danger .navbar-item,.hero.is-danger .navbar-link{color:rgba(255,255,255,.7)}.hero.is-danger a.navbar-item:hover,.hero.is-danger a.navbar-item.is-active,.hero.is-danger .navbar-link:hover,.hero.is-danger .navbar-link.is-active{background-color:#ef2e55;color:#fff}.hero.is-danger .tabs a{color:#fff;opacity:.9}.hero.is-danger .tabs a:hover{opacity:1}.hero.is-danger .tabs li.is-active a{color:#f14668 !important;opacity:1}.hero.is-danger .tabs.is-boxed a,.hero.is-danger .tabs.is-toggle a{color:#fff}.hero.is-danger .tabs.is-boxed a:hover,.hero.is-danger .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-danger .tabs.is-boxed li.is-active a,.hero.is-danger .tabs.is-boxed li.is-active a:hover,.hero.is-danger .tabs.is-toggle li.is-active a,.hero.is-danger .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#f14668}.hero.is-danger.is-bold{background-image:linear-gradient(141deg, #fa0a62 0%, #f14668 71%, #f7595f 100%)}@media screen and (max-width: 768px){.hero.is-danger.is-bold .navbar-menu{background-image:linear-gradient(141deg, #fa0a62 0%, #f14668 71%, #f7595f 100%)}}.hero.is-small .hero-body{padding:1.5rem}@media screen and (min-width: 769px),print{.hero.is-medium .hero-body{padding:9rem 4.5rem}}@media screen and (min-width: 769px),print{.hero.is-large .hero-body{padding:18rem 6rem}}.hero.is-halfheight .hero-body,.hero.is-fullheight .hero-body,.hero.is-fullheight-with-navbar .hero-body{align-items:center;display:flex}.hero.is-halfheight .hero-body>.container,.hero.is-fullheight .hero-body>.container,.hero.is-fullheight-with-navbar .hero-body>.container{flex-grow:1;flex-shrink:1}.hero.is-halfheight{min-height:50vh}.hero.is-fullheight{min-height:100vh}.hero-video{overflow:hidden}.hero-video video{left:50%;min-height:100%;min-width:100%;position:absolute;top:50%;transform:translate3d(-50%, -50%, 0)}.hero-video.is-transparent{opacity:.3}@media screen and (max-width: 768px){.hero-video{display:none}}.hero-buttons{margin-top:1.5rem}@media screen and (max-width: 768px){.hero-buttons .button{display:flex}.hero-buttons .button:not(:last-child){margin-bottom:.75rem}}@media screen and (min-width: 769px),print{.hero-buttons{display:flex;justify-content:center}.hero-buttons .button:not(:last-child){margin-right:1.5rem}}.hero-head,.hero-foot{flex-grow:0;flex-shrink:0}.hero-body{flex-grow:1;flex-shrink:0;padding:3rem 1.5rem}@media screen and (min-width: 769px),print{.hero-body{padding:3rem 3rem}}.section{padding:1.5rem}@media screen and (min-width: 1024px){.section{padding:3rem 3rem}.section.is-medium{padding:9rem 4.5rem}.section.is-large{padding:18rem 6rem}}.footer{background-color:#fafafa;padding:3rem 1.5rem 6rem}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","var api = require(\"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n var content = require(\"!!../../node_modules/css-loader/dist/cjs.js!./core.css\");\n\n content = content.__esModule ? content.default : content;\n\n if (typeof content === 'string') {\n content = [[module.id, content, '']];\n }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\nvar exported = content.locals ? content.locals : {};\n\n\n\nmodule.exports = exported;","var api = require(\"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n var content = require(\"!!../../node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./bulma.sass\");\n\n content = content.__esModule ? content.default : content;\n\n if (typeof content === 'string') {\n content = [[module.id, content, '']];\n }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\nvar exported = content.locals ? content.locals : {};\n\n\n\nmodule.exports = exported;","import * as React from 'react';\r\nimport { hot } from 'react-hot-loader/root';\r\nimport { Switch, useLocation } from 'react-router-dom';\r\nimport { Route, RouteProps } from 'react-router-dom';\r\n\r\nimport { Modal, PublicRoute, PrivateRoute, NonIdealState } from 'web-shared/components';\r\nimport { Header, Footer } from 'web-frontend/components';\r\nimport { gaPageView, hexToCssVars } from 'web-shared/lib';\r\n\r\nimport { config } from 'web-frontend/lib';\r\nimport { auth, ui } from 'web-shared/store';\r\nimport { initializeBugsnag } from 'web-shared/lib/initialize';\r\n\r\nimport { LoginForm } from 'web-shared/pages/login';\r\nimport LoginRegisterPage from './pages/account/loginOrRegister';\r\nimport LogoffPage from 'web-shared/pages/logoff';\r\nimport NotFoundPage from 'web-shared/pages/notFound';\r\nimport { LandingPage } from './pages/landing/landing';\r\n\r\nconst ForgotPage = React.lazy(() => import('web-shared/pages/forgot'));\r\nconst ResetPage = React.lazy(() => import('web-shared/pages/reset'));\r\nconst VerifyPage = React.lazy(() => import('web-shared/pages/verify'));\r\nconst AccountSetupPage = React.lazy(() => import('./pages/account/account-setup'));\r\n\r\nconst MainLandingPage = React.lazy(() => import('./pages/landing'));\r\nconst QuestionsPage = React.lazy(() => import('./pages/questions/questions'));\r\nconst AboutPage = React.lazy(() => import('./pages/about'));\r\nconst UserPage = React.lazy(() => import('./pages/user'));\r\nconst ApplicationDetailPage = React.lazy(() => import('./pages/user/application[id]'));\r\nconst RenewalDetailPage = React.lazy(() => import('./pages/user/renewal[id]'));\r\nconst ActionPage = React.lazy(() => import('./pages/user/action[id]'));\r\nconst SignupPage = React.lazy(() => import(`./pages/signup`));\r\nconst ApplicationRenderer = React.lazy(() => import('./pages/secured/apply/index'));\r\n\r\nconst AdminPage = React.lazy(() => import('./pages/secured/admin'));\r\nconst AdminAppsPage = React.lazy(() => import('./pages/secured/admin/apps/applications'));\r\nconst AdminAppDetailPage = React.lazy(() => import('./pages/secured/admin/apps/detail'));\r\n\r\nconst PPPAdminPage = React.lazy(() => import(`./pages/ppp/loan/admin`));\r\nconst PPPAdminDetailPage = React.lazy(() => import(`./pages/ppp/loan/admin/ppl-detail`));\r\n\r\nconst PppApplicationPage = React.lazy(() => import('./pages/ppp/loan/application/apply'));\r\nconst ForgivenessApplicationPage = React.lazy(() => import('./pages/ppp/forgiveness/application/apply'));\r\nconst ForgivenessAdminPage = React.lazy(() => import(`./pages/ppp/forgiveness/admin/ppf-applications`));\r\nconst ForgivenessAdminDetailPage = React.lazy(() => import(`./pages/ppp/forgiveness/admin/ppf-detail`));\r\n\r\nconst AdminRoute: React.FC = ({ children, title, token, component, ...rest }) => {\r\n return {\r\n const authState = auth.getStateSnapshot();\r\n const isAdmin = authState.admin || authState.globalAdmin;\r\n if(!isAdmin) {\r\n return ;\r\n }\r\n return ;\r\n }\r\n } />;\r\n};\r\n\r\nimport { initializeGoogleAnalytics } from './lib/googleAnalytics';\r\ninitializeGoogleAnalytics();\r\n\r\nconst bugsnagClient = initializeBugsnag();\r\nauth.initialize(bugsnagClient);\r\nui.initialize(config.client.name);\r\n\r\nconst App: React.FC = function() {\r\n const { expires, token } = auth.useState(s => ({\r\n expires: s.expires,\r\n token: s.token,\r\n }));\r\n\r\n const location = useLocation();\r\n React.useEffect(() => {\r\n gaPageView(location);\r\n }, [location]);\r\n\r\n // Set a timer to refresh the page when login expires\r\n const [, setState] = React.useState(new Date().getTime());\r\n React.useEffect(() => {\r\n if(!expires) {\r\n return;\r\n }\r\n const expireMs = new Date(expires).getTime() - new Date().getTime() + 500;\r\n const timeout = setTimeout(() => {\r\n setState(new Date().getTime());\r\n }, expireMs);\r\n\r\n return () => { clearTimeout(timeout); };\r\n }, [expires]);\r\n\r\n const isPpp = config.site.type === 'paycheck';\r\n const hasMl = true;\r\n\r\n const { securedSites = [] } = config.site;\r\n const hasSecured = securedSites.length > 0;\r\n const hasExpressLender = securedSites.includes('express-lender');\r\n\r\n return <>\r\n {/* */}\r\n\r\n \r\n\r\n \r\n\r\n
\r\n {expires && new Date(expires) < new Date()\r\n ? \r\n \r\n : null}\r\n
\r\n
\r\n }>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n {/* Hard-coded SBA route for express lender and CCM */}\r\n\t\t\t\t\t\t{hasExpressLender ? : null}\r\n\t\t\t\t\t\t{hasExpressLender ? : null}\r\n\r\n {/* Map all sites to a sub-path */}\r\n {securedSites.map(s => )}\r\n\r\n {/* Any secured app detail page */}\r\n {hasSecured ? : null}\r\n\r\n {/* Allow default routes */}\r\n {securedSites.length === 1 ? : null}\r\n\r\n {/* Render secured admin routes */}\r\n {hasSecured ? : null}\r\n {hasSecured ? : null}\r\n {hasSecured ? : null}\r\n\r\n {hasMl ? : null}\r\n {hasMl ? : null}\r\n {hasMl ? : null}\r\n\r\n {isPpp ? : null}\r\n {isPpp ? : null}\r\n {isPpp ? : null}\r\n {isPpp ? : null}\r\n {isPpp ? : null}\r\n {isPpp ? : null}\r\n\r\n \r\n \r\n\r\n {config.landingPages.map(l => )}\r\n {config.landingPages.map(l => )}\r\n\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n ;\r\n};\r\n\r\nexport const HotApp = hot(App);\r\n","import * as React from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport styled from 'styled-components';\r\n\r\nimport { HtmlString } from 'web-shared/components';\r\nimport { BannerBackgroundImage } from 'web-frontend/components';\r\nimport { shadeColor } from 'web-shared/lib';\r\nimport Color from 'ac-colors';\r\nimport { config } from 'web-frontend/lib';\r\n\r\nconst Styles = styled.div`\r\n .pre { white-space: pre-line; }\r\n .button {\r\n margin: 20px 1em; height: auto;\r\n }\r\n .button-title { font-weight: bold; font-size: 1.3em; text-decoration: underline; }\r\n`;\r\n\r\nfunction useLink(url: string | undefined) {\r\n return url && (url === '#' || url.substr(0, 4) === 'http');\r\n}\r\n\r\ninterface Props {\r\n showButton?: boolean;\r\n banner: api.LandingPageBanner;\r\n productNameOnly?: boolean;\r\n}\r\nexport const Banner: React.FC = function ({ showButton = false, banner, productNameOnly }) {\r\n // Get the requested banner\r\n const highlightColor = banner.highlightColor || '#76933C';\r\n const boxOpacity = banner.boxOpacity === null ? 0.7 : banner.boxOpacity;\r\n const backgroundColor = 'rgba(0, 0, 0, ' + boxOpacity + ')';\r\n\r\n // Get button configuration\r\n const buttons: api.SiteConfigBannerButton[] = banner.buttons?.length\r\n ? banner.buttons.map(b => ({\r\n color: b.color || banner.highlightColor,\r\n linkUrl: (b.linkUrl || '').toLowerCase(),\r\n text: b.text,\r\n details: b.details,\r\n textColor: b.textColor,\r\n }))\r\n : [{\r\n color: banner.highlightColor,\r\n linkUrl: (banner.linkUrl || '').toLowerCase(),\r\n text: banner.buttonText,\r\n }];\r\n const imageUrl = banner.imageUrl || '';\r\n\r\n return \r\n \r\n\r\n \r\n
\r\n ${config.site.name}` : banner.bannerText} style={{ color: highlightColor, fontWeight: 'bold' }} />\r\n {\r\n !showButton ? null : buttons.filter(b => b.linkUrl).map((b, i) => {\r\n const color = b.color || highlightColor;\r\n const contrastRatio = Color.contrastRatio(new Color({ color, type: 'hex' }), new Color({ color: [255, 255, 255] }));\r\n const style = {\r\n color: b.textColor || (contrastRatio < 3 ? '#000' : '#fff'),\r\n backgroundColor: color,\r\n borderColor: shadeColor(-12, color),\r\n margin: '1em',\r\n };\r\n const content =
\r\n
{b.text}
\r\n
\r\n
;\r\n\r\n return useLink(b.linkUrl)\r\n ? {content}\r\n : {content};\r\n })\r\n }\r\n
\r\n ;\r\n};\r\n","import * as React from 'react';\r\n\r\nfunction getHeight() {\r\n const w = window.innerWidth;\r\n if(w <= 767) return 550;\r\n if(w <= 991) return 600;\r\n if(w <= 1199) return 800;\r\n return 1000;\r\n}\r\n\r\nexport const BannerBackgroundImage: React.FC<{ src: string }> = function ({ src }) {\r\n const width = Math.ceil(window.innerWidth / 50) * 50;\r\n const imageSrc = `https://res.cloudinary.com/rcgiltner/image/fetch/w_${width || 1200},h_${getHeight()},f_auto,c_fill,g_face/${src}`;\r\n\r\n return
\r\n \r\n
;\r\n};\r\n","import * as React from 'react';\r\nimport { Modal, Section, SectionHeader, Spinner, Button } from 'web-shared/components';\r\nimport { auth } from 'web-shared/store';\r\n\r\ninterface Props {\r\n onClose: () => void;\r\n}\r\n\r\nexport const BranchLoginForm: React.FC = function ({ onClose }) {\r\n const [{ busy, error }, setState] = React.useState({\r\n busy: false,\r\n error: '',\r\n });\r\n const userNameRef = React.useRef(null);\r\n const passwordRef = React.useRef(null);\r\n\r\n function _modalClose() {\r\n onClose && onClose();\r\n }\r\n\r\n async function _login(e: React.FormEvent) {\r\n e.preventDefault();\r\n\r\n setState({ busy: true, error: '' });\r\n\r\n try {\r\n const response = await auth.branchLogin(userNameRef.current?.value || '', passwordRef.current?.value || '');\r\n\r\n setState({ busy: false, error: response.errorMessage || '' });\r\n if(!response.errorMessage) {\r\n onClose && onClose();\r\n }\r\n } catch(e) {\r\n setState({ busy: false, error: 'Unable to contact the login server.' });\r\n }\r\n }\r\n\r\n return \r\n \r\n\r\n
\r\n
\r\n
\r\n
\r\n Branch employee login!\r\n
\r\n Please enter your employee email address and password below.\r\n
\r\n
\r\n {error ?
\r\n
{error}
\r\n
: null}\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
;\r\n};\r\n","import * as React from 'react';\r\n\r\nimport { Modal, NonIdealState } from 'web-shared/components';\r\nimport { postJson } from 'web-shared/lib';\r\nimport Axios, { CancelTokenSource } from 'axios';\r\nimport { gaEvent } from 'web-shared/lib';\r\nimport { Pdf } from './pdf';\r\n\r\ninterface DisclosureResponse {\r\n pdfContent: string;\r\n documentMd5: string;\r\n}\r\ninterface Props {\r\n name: string;\r\n id: string | number;\r\n renewal?: boolean;\r\n ppl?: boolean;\r\n ppf?: boolean;\r\n parameters?: object;\r\n onOk: (id: string | number) => void;\r\n onClose?: () => void;\r\n}\r\nexport const DisclosureModal: React.FC = ({ name, id, onOk, onClose, renewal, ppl, ppf, parameters = {} }) => {\r\n const [{ ready, failed, error }, setState] = React.useState({\r\n ready: false,\r\n failed: false,\r\n error: '',\r\n });\r\n const [results, setResults] = React.useState();\r\n\r\n async function getDisclosureData(tokenSource: CancelTokenSource) {\r\n setState({ ready: false, failed: false, error: '' });\r\n setResults(undefined);\r\n\r\n // URL is different for renewals\r\n const type = typeof (id) === 'string' ? 'template' : 'version';\r\n const url = renewal ? `/api/user/renewal/disclosure/${id}/base64`\r\n : ppl ? `/api/ppl/disclosure/${type}/${id}`\r\n : ppf ? `/api/forgiveness/disclosure/version/${id}`\r\n : `/api/signup/disclosure/${type}/${id}`;\r\n\r\n const response = await postJson(url, parameters, tokenSource.token);\r\n if(response.isError) {\r\n setState({ ready: false, failed: false, error: response.error });\r\n }\r\n\r\n setResults(response.payload);\r\n }\r\n\r\n React.useEffect(() => {\r\n const cancelSource = Axios.CancelToken.source();\r\n getDisclosureData(cancelSource);\r\n\r\n return () => {\r\n cancelSource && cancelSource.cancel();\r\n };\r\n }, [name, id]);\r\n\r\n function _documentLoaded() {\r\n gaEvent('signup', 'ViewDisclosure');\r\n setState({ ready: true, failed: false, error: '' });\r\n }\r\n function _documentFailed() {\r\n setState({ ready: false, failed: true, error: '' });\r\n }\r\n\r\n const loadingMessage = ;\r\n const isError = error || failed;\r\n\r\n return onOk && onOk(id)}\r\n onClose={() => onClose && onClose()}\r\n isReady={ready}\r\n bodyStyle={{ backgroundColor: '#555' }}\r\n >\r\n
\r\n {isError ? : null}\r\n {!isError && !results?.pdfContent ? loadingMessage : null}\r\n {!isError && results?.pdfContent ?\r\n : null}\r\n
\r\n
;\r\n};\r\n","import * as React from 'react';\r\nimport { Link } from 'react-router-dom';\r\n\r\nimport { config } from 'web-frontend/lib';\r\nimport { BranchLoginForm } from 'web-frontend/components';\r\nimport { auth } from 'web-shared/store';\r\n\r\nconst versionString = 'v3.1.19';\r\n\r\ninterface Props { }\r\n\r\nexport const Footer: React.FC = function () {\r\n const branchLoginModalOpen = auth.useState(s => s.branchLoginModalOpen);\r\n const branchUser = auth.useState(s => s.branchUser);\r\n\r\n function _branchClick() {\r\n // Log the user out\r\n if(branchUser) {\r\n auth.branchLogoff();\r\n } else {\r\n auth.toggleBranchLoginModal(true);\r\n }\r\n }\r\n function _closeBranchLogin() {\r\n auth.toggleBranchLoginModal(false);\r\n }\r\n\r\n const footerImages = config.footerImages || [];\r\n\r\n return
\r\n \r\n {branchLoginModalOpen ? : null}\r\n
\r\n
\r\n
\r\n {footerImages.map((img, i) => \"Equal)}\r\n
\r\n
\r\n
\r\n
\r\n {config.aboutUsUrl ? About Us :\r\n About Us}\r\n {config.contactUrl ? Contact Us : null}\r\n {config.privacyPolicyUrl ? Privacy Policy : null}\r\n
\r\n \r\n {branchUser ? 'Branch Logout' : 'Branch Login'}\r\n \r\n {config.institutionNumber ? Institution ID #{config.institutionNumber} : null}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
{versionString}
\r\n
{branchUser}
\r\n
\r\n
\r\n
\r\n
;\r\n};\r\n","import * as React from 'react';\r\nimport Slider from 'react-slick';\r\nimport styled from 'styled-components';\r\n\r\nimport { Banner } from 'web-frontend/components';\r\nimport { classNames, useWindowSize } from 'web-shared/lib';\r\n\r\nconst Styles = styled.div`\r\n color: #fff; background: #fff; position: relative; top: 0;\r\n\r\n .banner { height: calc(100vh - 50px); margin-bottom: 2em; padding-top: 0; }\r\n .banner.small, .banner.small .banner-img { height: 450px; }\r\n .slick-slide { visibility: hidden; }\r\n .slick-active { visibility: visible; }\r\n\r\n .slick-slider, .slick-list, .slick-track, .slick-slide, .slick-slide > div, .slick-slide > div > div, .banner-img { height: 100%; }\r\n\r\n .text-center { margin: 0; padding: 0; }\r\n .hint { position: absolute; bottom: 0; width: 100%; height: 0.5em; }\r\n .hintLine {\r\n width: 100%; height: 100%;\r\n background-color: #244062;\r\n background-color: var(--color-secondary);\r\n }\r\n .hintCircle { left: 50%; width: 5em; height: 5em; position: absolute; top: 0; }\r\n .hintCircle2 {\r\n width: 5em; height: 5em; border-radius: 5em; position: absolute; top: -2.3em; left: -50%;\r\n background-color: #244062;\r\n background-color: var(--color-secondary);\r\n }\r\n .hintCircle3 {\r\n width: 4em; height: 4em; border-radius: 4em; margin-left: .5em; margin-top: .5em;\r\n background-color: #92a0b1;\r\n background-color: var(--color-secondary-light-50);\r\n }\r\n .hintIcon { font-size: 3em; margin-left: 0.17em; margin-top: 0.15em; display: inline-block; }\r\n`;\r\ninterface Props {\r\n banners: api.LandingPageBanner[];\r\n small?: boolean;\r\n}\r\nexport const HeaderPane: React.FC = ({ banners, small = false }) => {\r\n useWindowSize(); // Just needed to recalc when window size changes\r\n const headerEl = document.getElementsByClassName('navbar');\r\n const headerHeight = headerEl[0]?.clientHeight || 50;\r\n\r\n function _buildBanner() {\r\n // No banners defined. Do something default\r\n if(!banners || banners.length === 0)\r\n return null;\r\n\r\n const bannerDivs = banners.map((b, i) => );\r\n const settings = {\r\n dots: banners.length > 1,\r\n arrows: banners.length > 1,\r\n infinite: true,\r\n speed: 500,\r\n slidesToShow: 1,\r\n slidesToScroll: 1,\r\n autoplay: true,\r\n autoplaySpeed: 9000,\r\n fade: true,\r\n swipe: false,\r\n draggable: false,\r\n };\r\n return {bannerDivs};\r\n }\r\n\r\n const banner = _buildBanner();\r\n return \r\n
\r\n {banner}\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n ;\r\n};\r\n","import * as React from 'react';\r\nimport { UnknownLink } from './unknownLink';\r\nimport styled from 'styled-components';\r\nimport { RelativeTime } from 'web-shared/components';\r\nimport { auth } from 'web-shared/store';\r\n\r\nconst StyledListItem = styled.li`\r\n & a { display: flex; }\r\n & .user-info { text-align: right; font-size: 0.9em; line-height: 1.2em; }\r\n & .fa-user { display: inline-block; margin-left: 10px; font-size: 2.5em; }\r\n & .expires { font-size: 0.8em; }\r\n @media(max-width: 768px) {\r\n & a { flex-direction: row-reverse; justify-content: flex-end; }\r\n & .user-info { text-align: left; }\r\n & .fa-user { display: inline-block; margin-left: 0; margin-right: 10px; font-size: 2.5em; }\r\n }\r\n`;\r\n\r\nexport const AccountLink: React.FC<{ name: string, email: string }> = function ({ name, email }) {\r\n const expireDate = auth.useState(s => s.expires);\r\n return \r\n \r\n
\r\n
{name}
\r\n
{email}
\r\n {expireDate ?
(session expires )
: null}\r\n
\r\n \r\n
\r\n
;\r\n};\r\n","import * as React from 'react';\r\n\r\nimport { Header as Header1 } from './option1';\r\nimport { Header as Header2 } from './option2';\r\nimport { Header as Header3 } from './option3';\r\nimport { HeaderLink } from 'web-shared/store';\r\n\r\nexport interface HeaderProps {\r\n links?: HeaderLink[];\r\n}\r\n\r\ninterface Props {\r\n option: 1 | 2 | 3;\r\n}\r\n\r\nexport const Header: React.FC = ({ option, ...p }) => {\r\n switch(option) {\r\n default:\r\n case 1:\r\n return ;\r\n case 2:\r\n return ;\r\n case 3:\r\n return ;\r\n }\r\n};\r\n","import * as React from 'react';\r\nimport { Link } from 'react-router-dom';\r\n\r\nimport { auth, ui } from 'web-shared/store';\r\nimport { config } from 'web-frontend/lib';\r\nimport { UnknownLink } from './unknownLink';\r\nimport { AccountLink } from './accountLink';\r\nimport styled from 'styled-components';\r\n\r\nconst StyledDiv = styled.div`\r\n svg .color-primary { fill: ${config.colors.logo1}; }\r\n svg .color-secondary { fill: ${config.colors.logo2}; }\r\n`;\r\nconst NavbarEnd = styled.ul`\r\n & .navbar-item { padding: 0; }\r\n & .navbar-item a { padding: 0 0.75rem; color: #333; height: 100%; display: flex; align-items: center; }\r\n & .navbar-item:hover a {\r\n background-color: #244062;\r\n background-color: var(--color-secondary);\r\n color: #fff;\r\n }\r\n & .sign-out-text { display: none; }\r\n & .fa-sign-out { font-size: 1.3em; }\r\n @media(max-width: 768px) {\r\n & .sign-out { display: flex; align-items: center; }\r\n & .sign-out-text { display: inline; padding-left: 10px; }\r\n & .fa-sign-out { font-size: 2.5em; }\r\n }\r\n`;\r\n\r\ninterface NavItemProps {\r\n name: string | React.ReactElement;\r\n href: string;\r\n title?: string;\r\n}\r\nconst NavItem: React.FC = function ({ name, href, title }) {\r\n return
  • \r\n {name}\r\n
  • ;\r\n};\r\n\r\nfunction img(src: string = '', alt: string) {\r\n if(src.startsWith('\r\n }\r\n return {alt};\r\n}\r\n\r\n// Main application navbar\r\nexport const Header: React.FC<{}> = () => {\r\n const { userName, name } = auth.useState(s => ({\r\n userName: s.userName,\r\n name: s.name,\r\n }));\r\n const { headerLinks, hideLoginLinks } = ui.useState(s => ({\r\n headerLinks: s.headerLinks,\r\n hideLoginLinks: s.hideLoginLinks,\r\n }));\r\n\r\n const siteLogo = \r\n {img(config.site.logo, config.site.name)}\r\n ;\r\n const clientLogo = \r\n {img(config.client.logo, config.client.name)}\r\n ;\r\n\r\n return
    \r\n \r\n \r\n {config.hideClientLogo ? siteLogo :\r\n config.clientLogoFirst ? <>{clientLogo}{siteLogo} :\r\n <>{siteLogo}{clientLogo}}\r\n \r\n
    \r\n \r\n {headerLinks.map(v => v.isHidden ? null : )}\r\n {userName ? : null}\r\n {userName ? Sign Out} href=\"/logoff\" title=\"Log off\" /> : null}\r\n {!userName && !hideLoginLinks ? : null}\r\n {!userName && !hideLoginLinks ? : null}\r\n \r\n
    \r\n
    ;\r\n};\r\n","import * as React from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport useOnClickOutside from 'use-onclickoutside';\r\n\r\nimport { config } from 'web-frontend/lib';\r\nimport { useWindowScrolledTo, classNames } from 'web-shared/lib';\r\nimport { HeaderProps } from '..';\r\nimport { auth, ui } from 'web-shared/store';\r\n\r\nimport { AccountLink } from './accountLink';\r\nimport { UnknownLink } from './unknownLink';\r\n\r\nconst Logo: React.FC<{ name: string, src: string }> = ({ name, src }) => {\r\n return \r\n \r\n\r\n {name}\r\n ;\r\n};\r\n\r\nconst Menu: React.FC<{ pageLinks: JSX.Element[], authLinks: JSX.Element[] }> = ({ pageLinks, authLinks }) => {\r\n const [open, setOpen] = React.useState(false);\r\n\r\n const ref: React.MutableRefObject = React.useRef(null);\r\n useOnClickOutside(ref, () => setOpen(false));\r\n\r\n return
    \r\n \r\n\r\n
  • setOpen(s => !s)}>\r\n Menu \r\n
  • \r\n {open ?
      setOpen(false)}>\r\n {pageLinks.map((link, i) =>
    • {link}
    • )}\r\n
    • \r\n {authLinks.map((link, i) =>
    • {link}
    • )}\r\n
    : null}\r\n
    ;\r\n};\r\n\r\nexport const Header: React.FC = () => {\r\n const { userName, name, userId } = auth.useState(s => ({\r\n userName: s.userName,\r\n name: s.name,\r\n userId: s.userId,\r\n }));\r\n const headerLinks = ui.useState(s => s.headerLinks);\r\n\r\n const scrolled = useWindowScrolledTo(200);\r\n\r\n // Page Links\r\n const pageLinks = headerLinks.map(l => {l.name});\r\n const authLinks = [\r\n userId ? :\r\n Register,\r\n userId ? Log off :\r\n Login,\r\n ];\r\n\r\n return <>\r\n \r\n\r\n
    \r\n
    \r\n
      \r\n
    • \r\n \r\n \r\n
    • \r\n\r\n {pageLinks.map((link, i) =>
    • {link}
    • )}\r\n {authLinks.map((link, i) =>
    • {link}
    • )}\r\n\r\n \r\n
    \r\n
    \r\n
    \r\n ;\r\n};\r\n","import * as React from 'react';\r\nimport { Link } from 'react-router-dom';\r\n\r\nimport { auth, ui } from 'web-shared/store';\r\nimport { config } from 'web-frontend/lib';\r\nimport { UnknownLink } from './unknownLink';\r\nimport { AccountLink } from './accountLink';\r\nimport { useWindowScrollPosition } from 'web-shared/lib';\r\n\r\ninterface NavItemProps {\r\n name: string | React.ReactElement;\r\n href: string;\r\n title?: string;\r\n}\r\nconst NavItem: React.FC = function ({ name, href, title }) {\r\n return
  • \r\n {name}\r\n
  • ;\r\n};\r\n\r\nconst headerScrollHeight = 200;\r\n\r\n// Main application navbar\r\nexport const Header: React.FC<{}> = function () {\r\n const { userName, name } = auth.useState(s => ({\r\n userName: s.userName,\r\n name: s.name,\r\n }));\r\n const { headerLinks, hideLoginLinks } = ui.useState(s => ({\r\n headerLinks: s.headerLinks,\r\n hideLoginLinks: s.hideLoginLinks,\r\n }));\r\n\r\n const { y } = useWindowScrollPosition(50);\r\n\r\n const siteLogo = \r\n {config.site.name}\r\n ;\r\n const clientLogo = \r\n {config.client.name}\r\n ;\r\n\r\n const opacity = Math.max(0.4, Math.min(y / headerScrollHeight, 1));\r\n return
    \r\n \r\n
    \r\n {\r\n config.hideClientLogo ? siteLogo :\r\n config.clientLogoFirst\r\n ? <>{clientLogo}{siteLogo}\r\n : <>{siteLogo}
    by
    {clientLogo}\r\n }\r\n \r\n \r\n \r\n
    \r\n
    \r\n
      \r\n {headerLinks.map(v => v.isHidden ? null : )}\r\n {userName ? : null}\r\n {userName ? } href=\"/logoff\" title=\"Log off\" /> : null}\r\n {!userName && !hideLoginLinks ? : null}\r\n {!userName && !hideLoginLinks ? : null}\r\n
    \r\n
    \r\n
    ;\r\n};\r\n","import * as React from 'react';\r\nimport { Link } from 'react-router-dom';\r\n\r\nexport const UnknownLink: React.FC<{ url: string, title?: string }> = function ({ url, children, ...p }) {\r\n const urlString = (url || '').toLowerCase();\r\n if(!urlString)\r\n return null;\r\n\r\n const link = urlString.substr(0, 4) === 'http' || url.substr(0, 1) === '#'\r\n ? {children}\r\n : {children};\r\n\r\n return link;\r\n};\r\n","import * as React from 'react';\r\n\r\nimport { config } from 'web-frontend/lib';\r\n\r\ninterface Props {\r\n size: 'h2' | 'h3' | 'h4';\r\n}\r\nexport const Logo: React.FC = function ({ size = 'h4' }) {\r\n const styles = {\r\n h2: { height: 40 },\r\n h3: { height: 22 },\r\n h4: { height: 18 },\r\n };\r\n\r\n return {config.site.name}\r\n;\r\n};\r\n","import * as React from 'react';\r\nimport * as pdfjs from 'pdfjs-dist/legacy/build/pdf';\r\nimport PdfjsWorker from 'pdfjs-dist/legacy/build/pdf.worker';\r\n\r\nif(typeof window !== 'undefined' && 'Worker' in window) {\r\n pdfjs.GlobalWorkerOptions.workerPort = new PdfjsWorker();\r\n}\r\n\r\nexport const PdfPage: React.FC<{ scale: number; page: pdfjs.PDFPageProxy }> = function ({ page, scale }) {\r\n const canvasRef = React.useRef(null);\r\n\r\n React.useEffect(() => {\r\n const renderPdf = async () => {\r\n const canvas = canvasRef.current;\r\n const context = canvas?.getContext('2d');\r\n if(!canvas || !context)\r\n return;\r\n\r\n const viewport = page.getViewport({ scale });\r\n canvas.height = viewport.height;\r\n canvas.width = viewport.width;\r\n context.clearRect(0, 0, canvas.width, canvas.height);\r\n\r\n // Render PDF page into canvas context\r\n const renderTask = page.render({\r\n canvasContext: context!,\r\n viewport: viewport,\r\n });\r\n\r\n await renderTask.promise;\r\n };\r\n\r\n renderPdf();\r\n }, [page, scale]);\r\n\r\n return ;\r\n};\r\n\r\nfunction getPdfFromByteArray(content: string = '') {\r\n const bytes = window.atob(content);\r\n const byteLength = bytes.length;\r\n const byteArray = new Uint8Array(byteLength);\r\n for(let index = 0; index < byteLength; index++) {\r\n byteArray[index] = bytes.charCodeAt(index);\r\n }\r\n return byteArray;\r\n}\r\n\r\ninterface Props {\r\n file?: string;\r\n content?: string;\r\n scale: number;\r\n loading: React.ReactElement;\r\n downloadLink: string;\r\n onDocumentComplete: () => void;\r\n onDocumentFailed: () => void;\r\n}\r\nexport const Pdf: React.FC = ({ file, content, scale = 1.0, loading: loadingScreen, downloadLink, onDocumentComplete, onDocumentFailed }) => {\r\n const [state, setState] = React.useState({\r\n pages: [] as pdfjs.PDFPageProxy[],\r\n ready: false,\r\n });\r\n\r\n React.useEffect(() => {\r\n const fetchPdf = async () => {\r\n setState({ ready: false, pages: [] });\r\n\r\n // Load the PDF\r\n const loadingTask = pdfjs.getDocument({\r\n data: file ? file : getPdfFromByteArray(content),\r\n isEvalSupported: false,\r\n });\r\n const pdf = await loadingTask.promise;\r\n\r\n // Fetch all pages\r\n const pages = [];\r\n for(let i = 1; i <= pdf.numPages; i++) {\r\n const page = await pdf.getPage(i);\r\n\r\n // tslint:disable-next-line: no-array-mutation\r\n pages.push(page);\r\n }\r\n\r\n setState({ ready: true, pages });\r\n onDocumentComplete && onDocumentComplete();\r\n };\r\n\r\n try {\r\n fetchPdf();\r\n } catch(ex) {\r\n onDocumentFailed && onDocumentFailed();\r\n }\r\n }, [file, content]);\r\n\r\n if(!state.ready)\r\n return loadingScreen ||
    Loading PDF...
    ;\r\n\r\n return
    \r\n
    \r\n Save / Print\r\n
    \r\n {state.pages.map((page, i) => )}\r\n
    ;\r\n};\r\n","import * as React from 'react';\r\nimport { classNames } from 'web-shared/lib';\r\nimport styled from 'styled-components';\r\nimport { IconNames } from 'web-shared/components';\r\n\r\nconst StyledColumn = styled.div`\r\n @media(max-width: 768px) { padding: 0; }\r\n`;\r\n\r\ninterface Props {\r\n children: any;\r\n label: string;\r\n labelInfo?: string | JSX.Element;\r\n labelSize?: 'is-three-quarters' | 'is-two-thirds' | 'is-half' | 'is-one-third' | 'is-one-quarter' | 'is-full' | 'is-four-fifths' | 'is-three-fifths' | 'is-two-fifths' | 'is-one-fifth';\r\n tooltip?: string;\r\n labelInfoFull?: boolean;\r\n controlPaddingTopEm?: number;\r\n icon?: IconNames;\r\n inputAddonLeft?: string | JSX.Element;\r\n inputAddonRight?: string | JSX.Element;\r\n buttonRight?: string | JSX.Element;\r\n error?: string | null;\r\n className?: string;\r\n}\r\nexport const SearchField: React.FC = ({\r\n label, labelInfo, labelSize = '', tooltip, labelInfoFull, controlPaddingTopEm = 0, className, children, icon, inputAddonLeft, inputAddonRight, error, buttonRight\r\n}) => {\r\n let Container: keyof JSX.IntrinsicElements = 'div';\r\n const errors = React.Children.map(children, (c: React.ReactElement<{ 'data-error'?: string }>) => {\r\n if(!c)\r\n return '';\r\n if(c.type === 'input' || c.type === 'select')\r\n Container = 'label';\r\n return (c.props && c.props['data-error']) || '';\r\n })\r\n .filter(e => e);\r\n\r\n const mappedChildren = React.Children.map(children, (c: React.ReactElement) => {\r\n if(c?.type === 'select')\r\n return
    {c}
    \r\n return c;\r\n });\r\n\r\n return
    \r\n \r\n\r\n \r\n \r\n {icon ? : null}\r\n {label} {tooltip ? : null}\r\n {labelInfo && !labelInfoFull ?
    {labelInfo}
    : null}\r\n
    \r\n \r\n
    0 })}>\r\n {inputAddonLeft ?\r\n
    \r\n
    \r\n \r\n \r\n {inputAddonLeft}\r\n \r\n \r\n \r\n {mappedChildren}\r\n \r\n
    \r\n
    \r\n : inputAddonRight ?
    \r\n
    \r\n \r\n {mappedChildren}\r\n \r\n \r\n \r\n {inputAddonRight}\r\n \r\n \r\n
    \r\n
    : buttonRight ?
    \r\n
    \r\n \r\n {mappedChildren}\r\n \r\n \r\n {buttonRight}\r\n \r\n
    \r\n
    : mappedChildren}\r\n
    \r\n
    {errors.map(e =>
    {e}
    )}
    \r\n {error ?
    {error}
    : null}\r\n
    \r\n
    \r\n {labelInfo && labelInfoFull ?
    {labelInfo}
    : null}\r\n
    ;\r\n};\r\n","import * as React from 'react';\r\nimport styled from 'styled-components';\r\nimport { useTable, useSortBy, useGlobalFilter, Column, SortingRule } from 'react-table';\r\nimport { classNames } from 'web-shared/lib';\r\n\r\nconst Styles = styled.div`\r\n .table.sticky th {\r\n position: -webkit-sticky;\r\n position: sticky;\r\n top: 0;\r\n z-index: 2;\r\n background-color: #fff;\r\n vertical-align: bottom;\r\n }\r\n th.indicator { text-align: center; }\r\n td.indicator { border-left: 1px solid #dbdbdb; text-align: center; }\r\n .fa-sort-desc, .fa-sort-asc { padding-left: 0.5em; font-size: 1.25em; }\r\n`;\r\n\r\nfunction saveSort(id: string, sortRule: SortingRule) {\r\n\tif('localStorage' in window)\r\n\t\tlocalStorage.setItem(`table-sort-${id}`, JSON.stringify(sortRule));\r\n}\r\nfunction loadSort(id: string): SortingRule {\r\n\ttry {\r\n\t\tif('localStorage' in window)\r\n\t\t\treturn JSON.parse(localStorage.getItem(`table-sort-${id}`) || '');\r\n\t} catch { }\r\n\treturn { id: '', desc: false };\r\n}\r\n\r\ninterface Props {\r\n\tid: string;\r\n\tcolumns: Column[];\r\n\tdata: D[];\r\n\tsearch?: string;\r\n\tnarrow?: boolean;\r\n\tsticky?: boolean;\r\n\tadditionalState?: object;\r\n}\r\nexport function Table({ id, columns, data, search, narrow, sticky, additionalState }: Props) {\r\n\tconst {\r\n\t\tgetTableProps,\r\n\t\tgetTableBodyProps,\r\n\t\theaderGroups,\r\n\t\trows,\r\n\t\tprepareRow,\r\n\t\tsetGlobalFilter,\r\n\t\tstate,\r\n\t} = useTable({\r\n\t\tcolumns,\r\n\t\tdata,\r\n\t\tautoResetSortBy: false,\r\n\t\tautoResetGlobalFilter: false,\r\n\t\tinitialState: {\r\n\t\t\tsortBy: [loadSort(id)],\r\n\t\t\t...(additionalState || {}),\r\n\t\t},\r\n\t}, useGlobalFilter, useSortBy);\r\n\r\n\tReact.useEffect(() => {\r\n\t\tsetGlobalFilter(search);\r\n\t}, [search]);\r\n\r\n\t// Save sort changes\r\n\tReact.useEffect(() => {\r\n\t\tsaveSort(id, state.sortBy[0]);\r\n\t}, [state.sortBy]);\r\n\r\n\treturn \r\n\t\t\r\n\t\t\t\r\n\t\t\t\t{headerGroups.map(headerGroup => (\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{headerGroup.headers.map(column => (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t))}\r\n\t\t\t\t\t\r\n\t\t\t\t))}\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t{rows.map(row => {\r\n\t\t\t\t\tprepareRow(row)\r\n\t\t\t\t\treturn \r\n\t\t\t\t\t\t{row.cells.map(cell => {\r\n\t\t\t\t\t\t\treturn \r\n\t\t\t\t\t\t})}\r\n\t\t\t\t\t\r\n\t\t\t\t})}\r\n\t\t\t\r\n\t\t
    \r\n\t\t\t\t\t\t\t\t{column.render('Header')}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{column.isSorted ? column.isSortedDesc\r\n\t\t\t\t\t\t\t\t\t\t? \r\n\t\t\t\t\t\t\t\t\t\t: : ''}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t{cell.render('Cell')}\r\n\t\t\t\t\t\t\t
    \r\n\t
    ;\r\n};\r\n","import * as React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport { BrowserRouter as Router } from 'react-router-dom';\r\n\r\nimport 'core-js/stable';\r\nimport 'regenerator-runtime/runtime';\r\n\r\nimport './bulma.sass';\r\nimport './core.css';\r\n\r\nimport { config } from './lib/config';\r\nimport { HotApp } from './app';\r\nimport { isDevelopment } from 'web-shared/lib/isDevelopment';\r\nimport { initializeBugsnag } from 'web-shared/lib/initialize';\r\n\r\nif(isDevelopment) {\r\n // const axe = require('react-axe');\r\n // axe(React, ReactDOM, 1000);\r\n}\r\n\r\nconst bugsnagClient = initializeBugsnag();\r\nbugsnagClient.metaData = {\r\n client: {\r\n id: config.client.id,\r\n name: config.client.name,\r\n },\r\n};\r\nconst ErrorBoundary = bugsnagClient.getPlugin('react');\r\n\r\nReactDOM.render(\r\n \r\n \r\n \r\n \r\n \r\n ,\r\n document.getElementById('app_root'),\r\n);\r\n","import { getConfigFromElement } from \"web-shared/lib\";\r\n\r\nexport const config = getConfigFromElement('app_config') as api.SiteConfig;\r\n","import { initializeGa } from 'web-shared/lib';\r\nimport { config } from './config';\r\n\r\nexport const initializeGoogleAnalytics = () =>\r\n\tinitializeGa(config.client.id, config.googleAnalyticsCode);\r\n","import * as React from 'react';\r\nimport { useFormState } from 'react-use-form-state';\r\n\r\nimport { Section, SectionHeader, Button } from 'web-shared/components';\r\nimport { auth } from 'web-shared/store';\r\nimport { useHistory } from 'react-router';\r\nimport { postJson } from 'web-shared/lib';\r\nimport { StyledInstructions } from 'web-shared/pages/instructions';\r\n\r\ninterface FormFields {\r\n name: string;\r\n newEmail: string;\r\n newPassword: string;\r\n birthDate: Date;\r\n referral: string;\r\n}\r\n\r\nexport const Create: React.FC<{}> = () => {\r\n const history = useHistory();\r\n const [state, setState] = React.useState({\r\n busy: false,\r\n loggingIn: false,\r\n error: '',\r\n });\r\n const [form, { select, date, text, email, password, label }] = useFormState({}, {\r\n withIds: true,\r\n onBlur: e => e.target.classList.add('modified'),\r\n });\r\n const branchUser = auth.useState(s => s.branchUser);\r\n\r\n async function _submit(e: React.FormEvent) {\r\n e.preventDefault();\r\n\r\n setState(s => ({ ...s, busy: true, error: '' }));\r\n\r\n const postData = {\r\n Name: form.values.name,\r\n Email: form.values.newEmail,\r\n Password: form.values.newPassword,\r\n ReferralSource: form.values.referral,\r\n BirthDate: form.values.birthDate,\r\n BranchUser: branchUser,\r\n };\r\n\r\n const response = await postJson<{ id: number }>('/api/user/register', postData);\r\n\r\n setState(s => ({ ...s, busy: false, error: response.isError ? response.error : '' }));\r\n\r\n // Log the user in\r\n if(!response.isError && response.payload?.id) {\r\n setState(s => ({ ...s, loggingIn: true }));\r\n\r\n const loginResponse = await auth.login(form.values.newEmail, form.values.newPassword, false);\r\n\r\n // Clear the form\r\n form.clear();\r\n\r\n setState(s => ({\r\n ...s,\r\n loggingIn: false,\r\n error: 'IsError' in loginResponse && (loginResponse as any).IsError ? (loginResponse as any).ErrorMessage : '',\r\n }));\r\n\r\n // Redirect\r\n const { from = '/' } = history.location.state || {};\r\n history.replace(from);\r\n }\r\n }\r\n\r\n const ready = !state.busy && !state.loggingIn;\r\n const buttonText = state.busy ? 'Registering...'\r\n : (state.loggingIn ? 'Logging in...' : 'Create Login');\r\n\r\n return
    \r\n \r\n\r\n
    \r\n
    \r\n
    \r\n Create a login\r\n \r\n You will need to provide a valid email address and be able to receive/open PDF documents.\r\n \r\n
    \r\n\r\n {state.error ?
    \r\n
    {state.error}
    \r\n
    : null}\r\n\r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n You will receive an email asking you to confirm your email registration and documenting you\r\n can receive, open and read attached PDF disclosures.\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    ;\r\n};\r\n","import * as React from 'react';\r\nimport { Create } from './create';\r\nimport { LoginForm } from 'web-shared/pages/login';\r\n\r\nconst LoginRegisterPage: React.FC = () => {\r\n let hasLoggedInBefore = false;\r\n\r\n try {\r\n if(localStorage['successful-login'] === 'true')\r\n hasLoggedInBefore = true;\r\n } catch(e) {}\r\n\r\n return
    \r\n \r\n\r\n
    \r\n
    \r\n {hasLoggedInBefore ? : }\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {hasLoggedInBefore ? : }\r\n
    \r\n
    \r\n
    ;\r\n};\r\n\r\nexport default LoginRegisterPage;\r\n","import * as React from 'react';\r\n\r\ninterface Props {\r\n question: string;\r\n answer: string;\r\n}\r\nexport const FaqItem: React.FC = function ({ question, answer }) {\r\n return
    \r\n \r\n\r\n
    \r\n
    \r\n \r\n

    {question}

    \r\n
    \r\n
    \r\n
    \r\n
    ;\r\n};\r\n","import * as React from 'react';\r\nimport { Link } from 'react-router-dom';\r\n\r\nimport { Section, SectionHeader } from 'web-shared/components';\r\nimport { FaqItem } from './faqItem';\r\n\r\ninterface Props {\r\n landing?: string;\r\n faqs: api.LandingPageFaq[];\r\n}\r\nexport const FaqPane: React.FC = ({ landing, faqs }) => {\r\n const items = faqs.length === 0\r\n ?
    No FAQs available at this time.
    \r\n : faqs.map((f, i) => );\r\n\r\n return
    \r\n \r\n \r\n Have questions? Want to learn more?\r\n \r\n \r\n\r\n
    \r\n {items}\r\n
    \r\n
    ;\r\n};\r\n","import * as React from 'react';\r\nimport { Link } from 'react-router-dom';\r\n\r\nimport { Section, HtmlString, Button, SectionHeader } from 'web-shared/components';\r\n\r\ninterface Props {\r\n heading?: string;\r\n text: string;\r\n url: string;\r\n}\r\nexport const GetStartedPane: React.FC = ({\r\n heading, text, url\r\n}) => {\r\n if(!url || !text)\r\n return null;\r\n\r\n return
    \r\n \r\n\r\n \r\n {heading || 'What are you waiting for? Get started now!'}\r\n \r\n
    \r\n \r\n\r\n {url.indexOf(\"http\") === 0 ? \r\n \r\n : \r\n \r\n }\r\n
    \r\n
    ;\r\n};\r\n","import * as React from 'react';\r\n\r\ninterface Props {\r\n feature: api.LandingPageContent;\r\n}\r\nexport const Product: React.FC = function ({ feature, children }) {\r\n const details = (feature.details || '').split(/(\\r\\n|\\n)/g).filter(d => d.trim() !== '');\r\n\r\n return
    \r\n \r\n\r\n
    \r\n
    \r\n \r\n
    {feature.name}
    \r\n
    \r\n
    \r\n {children}\r\n
    \r\n
    \r\n\r\n
    \r\n
    {feature.subTitle}
    \r\n {details.map((d, i) =>\r\n
    \r\n \r\n
    \r\n
    ,\r\n )}\r\n
    \r\n\r\n {feature.bannerText ?
    \r\n {feature.bannerText}\r\n
    : null}\r\n
    ;\r\n};\r\n","import * as React from 'react';\r\n\r\nimport { HtmlString, Section } from 'web-shared/components';\r\nimport { Product } from './product';\r\n\r\ninterface Props {\r\n features: api.LandingPageContent[];\r\n featureSummaryText: string;\r\n}\r\nexport const ProductsPane: React.FC = function ({ features = [], featureSummaryText }) {\r\n\r\n const highlightStyle: React.CSSProperties = { color: 'var(--color-highlight)', fontWeight: 'bold' };\r\n const productHtml = features.map((p, i) => {\r\n const summary = ;\r\n return \r\n {summary}\r\n ;\r\n });\r\n const summary = !featureSummaryText ? null :\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    ;\r\n\r\n return
    \r\n {summary}\r\n
    \r\n
    \r\n {productHtml}\r\n
    \r\n
    \r\n
    ;\r\n};\r\n","import * as React from 'react';\r\n\r\ninterface Props {\r\n name: string;\r\n date: string;\r\n}\r\nexport const TestimonyItem: React.FC = function ({ name, date, children }) {\r\n return
    \r\n \r\n\r\n
    \r\n
    \r\n
    \r\n
    {name}
    \r\n
    {date}
    \r\n
    \r\n
    \r\n
    \r\n \r\n {children}\r\n
    \r\n
    \r\n
    ;\r\n};\r\n","import * as React from 'react';\r\n\r\nimport { Section, SectionHeader } from 'web-shared/components';\r\nimport { TestimonyItem } from './testimonyItem';\r\nimport { formatUtcDate } from 'web-shared/lib';\r\n\r\ninterface Props {\r\n testimonies: api.SiteConfigTestimony[];\r\n}\r\nexport const TestimonyPane: React.FC = ({ testimonies }) => {\r\n\r\n // Dont show if there is nothing to show\r\n if(testimonies.length === 0)\r\n return null;\r\n\r\n return
    \r\n \r\n What others are saying...\r\n \r\n\r\n
    \r\n {testimonies.map((t, i) => \r\n {t.text}\r\n )}\r\n
    \r\n
    ;\r\n};\r\n","import * as React from 'react';\r\nimport { RouteChildrenProps } from 'react-router-dom';\r\n\r\nimport { useHeaderLinks } from 'web-shared/lib';\r\nimport { HeaderPane } from 'web-frontend/components';\r\nimport { ProductsPane, FaqPane, GetStartedPane } from './components';\r\n\r\nimport { config as pageConfig} from 'web-frontend/lib';\r\n\r\ninterface Props extends RouteChildrenProps {\r\n url: string;\r\n config: api.LandingPageConfig;\r\n}\r\nexport const LandingPage: React.FC = ({ url, config }) => {\r\n useHeaderLinks([]);\r\n\r\n const { getStarted } = config;\r\n const faqs = config.faqConfig?.faqs?.filter(f => f.favorite);\r\n\r\n return
    \r\n \r\n \r\n {faqs.length ? : null}\r\n {pageConfig.site.type !== 'paycheck' ? : null}\r\n
    ;\r\n};\r\n","import * as React from 'react';\r\nimport { classNames } from '../lib';\r\nimport { IconNames } from './icon';\r\n\r\ninterface Props {\r\n color?: 'primary' | 'secondary' | 'highlight' | 'danger' | 'white' | 'light' | 'dark' | 'black' | 'text' | 'success' | 'warning' | 'danger';\r\n size?: 'small' | 'normal' | 'medium' | 'large';\r\n fullWidth?: boolean;\r\n type?: 'submit' | 'button';\r\n name?: string;\r\n disabled?: boolean;\r\n onClick?: (e: React.MouseEvent) => void;\r\n borderColor?: string;\r\n flex?: boolean;\r\n icon?: IconNames;\r\n title?: string;\r\n loading?: boolean;\r\n className?: string;\r\n noBtnClass?: boolean;\r\n error?: boolean;\r\n}\r\n\r\nexport const Button: React.FC = function ({\r\n color, size = 'normal', type = 'button', error, name, disabled, fullWidth, children, onClick, borderColor, flex, icon, title, loading, className, noBtnClass\r\n}) {\r\n let btnStyle: React.CSSProperties = {};\r\n let colorClass;\r\n switch(color || '') {\r\n case 'primary':\r\n case 'danger':\r\n case 'secondary':\r\n case 'highlight':\r\n colorClass = `btn-${color}`;\r\n break;\r\n case '':\r\n break;\r\n default:\r\n colorClass = `is-${color || 'light'}` + ` btn-${color || 'light'}`\r\n break;\r\n }\r\n if(borderColor) {\r\n btnStyle.borderColor = borderColor;\r\n }\r\n if(flex) {\r\n btnStyle.height = 'auto';\r\n }\r\n\r\n return ;\r\n};\r\n","import * as React from 'react';\n\nimport { Modal } from './index';\n\ninterface Props {\n name: string;\n href: string;\n onProceed: () => void;\n onClose: () => void;\n}\nexport const ExternalLink: React.FC = ({ name, href, onClose, onProceed }) => {\n return \n \n\n
    \n

    Leaving {name}...

    \n\n

    \n You are leaving {location.hostname} and entering a website\n that {name} does not control.\n

    \n\n

    \n {name} has provided this link for your convenience, but does not endorse\n and is not responsible for the content, links, privacy policy, or security policy of\n this website.\n

    \n\n
    \n \n onProceed && onProceed()}>\n Proceed\n \n
    \n
    \n
    ;\n};\n","import * as React from 'react';\n\ninterface Props {\n text: string;\n query?: string;\n style?: React.CSSProperties;\n}\nexport const HighlightText: React.FC = function ({ text, query = '', style = {} }) {\n let queryStr: string | undefined = (query || '').toLowerCase().replace(/[.?*+^$[\\]\\\\(){}|-]/g, '\\\\$&');\n if(queryStr === '')\n queryStr = undefined;\n\n const regex = new RegExp(`(?:<[^>]+>)|(${query})`, 'gi');\n const styleText = Object.keys(style).map(key => {\n const value = (style as any)[key];\n switch(key) {\n case 'backgroundColor':\n return `background-color: ${value}`;\n case 'fontWeight':\n return `font-weight: ${value}`;\n case 'fontStyle':\n return `font-style: ${value}`;\n default:\n return '';\n }\n }).join(';');\n\n const html = (text || '').replace(regex, a => a.startsWith('<') ? a : `${a}`);\n return ;\n};\n","import * as React from 'react';\n\nconst regex = new RegExp('\\[^<]*)', 'gi');\n\nfunction getParagraphs(text: string) {\n return (text || '').split(/(\\r\\n|\\n)/gi);\n}\nfunction processMarkup(markupText: string, style: object) {\n // Split markup text with a regex\n return markupText.split(regex).map((p, i) => {\n // If the token starts with >, then we have a match for a tag\n if(p.toLowerCase().indexOf('>') === 0)\n return {p.substring(1)};\n return ;\n });\n}\n\ninterface Props {\n text?: string;\n tag?: string;\n style?: React.CSSProperties | undefined;\n}\nexport const HtmlString: React.FC = function ({ text, tag = 'div', style = {} }) {\n if(!text) {\n return
    ;\n }\n const paragraphs = getParagraphs(text);\n const results = paragraphs.map((p, i) => React.createElement(tag, { key: i }, processMarkup(p, style)));\n\n return
    {results}
    ;\n};\n","import * as React from 'react';\r\n\r\nexport type IconNames = '' | 'glass' | 'music' | 'search' | 'envelope-o' | 'heart' | 'star' | 'star-o' | 'user' | 'film' | 'th-large' | 'th' | 'th-list' | 'check' | 'remove' | 'close' | 'times' | 'search-plus' | 'search-minus' | 'power-off' | 'signal' | 'gear' | 'cog' | 'trash-o' | 'home' | 'file-o' | 'clock-o' | 'road' | 'download' | 'arrow-circle-o-down' | 'arrow-circle-o-up' | 'inbox' | 'play-circle-o' | 'rotate-right' | 'repeat' | 'refresh' | 'list-alt' | 'lock' | 'flag' | 'headphones' | 'volume-off' | 'volume-down' | 'volume-up' | 'qrcode' | 'barcode' | 'tag' | 'tags' | 'book' | 'bookmark' | 'print' | 'camera' | 'font' | 'bold' | 'italic' | 'text-height' | 'text-width' | 'align-left' | 'align-center' | 'align-right' | 'align-justify' | 'list' | 'dedent' | 'outdent' | 'indent' | 'video-camera' | 'photo' | 'image' | 'picture-o' | 'pencil' | 'map-marker' | 'adjust' | 'tint' | 'edit' | 'pencil-square-o' | 'share-square-o' | 'check-square-o' | 'arrows' | 'step-backward' | 'fast-backward' | 'backward' | 'play' | 'pause' | 'stop' | 'forward' | 'fast-forward' | 'step-forward' | 'eject' | 'chevron-left' | 'chevron-right' | 'plus-circle' | 'minus-circle' | 'times-circle' | 'check-circle' | 'question-circle' | 'info-circle' | 'crosshairs' | 'times-circle-o' | 'check-circle-o' | 'ban' | 'arrow-left' | 'arrow-right' | 'arrow-up' | 'arrow-down' | 'mail-forward' | 'share' | 'expand' | 'compress' | 'plus' | 'minus' | 'asterisk' | 'exclamation-circle' | 'gift' | 'leaf' | 'fire' | 'eye' | 'eye-slash' | 'warning' | 'exclamation-triangle' | 'plane' | 'calendar' | 'random' | 'comment' | 'magnet' | 'chevron-up' | 'chevron-down' | 'retweet' | 'shopping-cart' | 'folder' | 'folder-open' | 'arrows-v' | 'arrows-h' | 'bar-chart-o' | 'bar-chart' | 'twitter-square' | 'facebook-square' | 'camera-retro' | 'key' | 'gears' | 'cogs' | 'comments' | 'thumbs-o-up' | 'thumbs-o-down' | 'star-half' | 'heart-o' | 'sign-out' | 'linkedin-square' | 'thumb-tack' | 'external-link' | 'sign-in' | 'trophy' | 'github-square' | 'upload' | 'lemon-o' | 'phone' | 'square-o' | 'bookmark-o' | 'phone-square' | 'twitter' | 'facebook-f' | 'facebook' | 'github' | 'unlock' | 'credit-card' | 'feed' | 'rss' | 'hdd-o' | 'bullhorn' | 'bell' | 'certificate' | 'hand-o-right' | 'hand-o-left' | 'hand-o-up' | 'hand-o-down' | 'arrow-circle-left' | 'arrow-circle-right' | 'arrow-circle-up' | 'arrow-circle-down' | 'globe' | 'wrench' | 'tasks' | 'filter' | 'briefcase' | 'arrows-alt' | 'group' | 'users' | 'chain' | 'link' | 'cloud' | 'flask' | 'cut' | 'scissors' | 'copy' | 'files-o' | 'paperclip' | 'save' | 'floppy-o' | 'square' | 'navicon' | 'reorder' | 'bars' | 'list-ul' | 'list-ol' | 'strikethrough' | 'underline' | 'table' | 'magic' | 'truck' | 'pinterest' | 'pinterest-square' | 'google-plus-square' | 'google-plus' | 'money' | 'caret-down' | 'caret-up' | 'caret-left' | 'caret-right' | 'columns' | 'unsorted' | 'sort' | 'sort-down' | 'sort-desc' | 'sort-up' | 'sort-asc' | 'envelope' | 'linkedin' | 'rotate-left' | 'undo' | 'legal' | 'gavel' | 'dashboard' | 'tachometer' | 'comment-o' | 'comments-o' | 'flash' | 'bolt' | 'sitemap' | 'umbrella' | 'paste' | 'clipboard' | 'lightbulb-o' | 'exchange' | 'cloud-download' | 'cloud-upload' | 'user-md' | 'stethoscope' | 'suitcase' | 'bell-o' | 'coffee' | 'cutlery' | 'file-text-o' | 'building-o' | 'hospital-o' | 'ambulance' | 'medkit' | 'fighter-jet' | 'beer' | 'h-square' | 'plus-square' | 'angle-double-left' | 'angle-double-right' | 'angle-double-up' | 'angle-double-down' | 'angle-left' | 'angle-right' | 'angle-up' | 'angle-down' | 'desktop' | 'laptop' | 'tablet' | 'mobile-phone' | 'mobile' | 'circle-o' | 'quote-left' | 'quote-right' | 'spinner' | 'circle' | 'mail-reply' | 'reply' | 'github-alt' | 'folder-o' | 'folder-open-o' | 'smile-o' | 'frown-o' | 'meh-o' | 'gamepad' | 'keyboard-o' | 'flag-o' | 'flag-checkered' | 'terminal' | 'code' | 'mail-reply-all' | 'reply-all' | 'star-half-empty' | 'star-half-full' | 'star-half-o' | 'location-arrow' | 'crop' | 'code-fork' | 'unlink' | 'chain-broken' | 'question' | 'info' | 'exclamation' | 'superscript' | 'subscript' | 'eraser' | 'puzzle-piece' | 'microphone' | 'microphone-slash' | 'shield' | 'calendar-o' | 'fire-extinguisher' | 'rocket' | 'maxcdn' | 'chevron-circle-left' | 'chevron-circle-right' | 'chevron-circle-up' | 'chevron-circle-down' | 'html5' | 'css3' | 'anchor' | 'unlock-alt' | 'bullseye' | 'ellipsis-h' | 'ellipsis-v' | 'rss-square' | 'play-circle' | 'ticket' | 'minus-square' | 'minus-square-o' | 'level-up' | 'level-down' | 'check-square' | 'pencil-square' | 'external-link-square' | 'share-square' | 'compass' | 'toggle-down' | 'caret-square-o-down' | 'toggle-up' | 'caret-square-o-up' | 'toggle-right' | 'caret-square-o-right' | 'euro' | 'eur' | 'gbp' | 'dollar' | 'usd' | 'rupee' | 'inr' | 'cny' | 'rmb' | 'yen' | 'jpy' | 'ruble' | 'rouble' | 'rub' | 'won' | 'krw' | 'bitcoin' | 'btc' | 'file' | 'file-text' | 'sort-alpha-asc' | 'sort-alpha-desc' | 'sort-amount-asc' | 'sort-amount-desc' | 'sort-numeric-asc' | 'sort-numeric-desc' | 'thumbs-up' | 'thumbs-down' | 'youtube-square' | 'youtube' | 'xing' | 'xing-square' | 'youtube-play' | 'dropbox' | 'stack-overflow' | 'instagram' | 'flickr' | 'adn' | 'bitbucket' | 'bitbucket-square' | 'tumblr' | 'tumblr-square' | 'long-arrow-down' | 'long-arrow-up' | 'long-arrow-left' | 'long-arrow-right' | 'apple' | 'windows' | 'android' | 'linux' | 'dribbble' | 'skype' | 'foursquare' | 'trello' | 'female' | 'male' | 'gittip' | 'gratipay' | 'sun-o' | 'moon-o' | 'archive' | 'bug' | 'vk' | 'weibo' | 'renren' | 'pagelines' | 'stack-exchange' | 'arrow-circle-o-right' | 'arrow-circle-o-left' | 'toggle-left' | 'caret-square-o-left' | 'dot-circle-o' | 'wheelchair' | 'vimeo-square' | 'turkish-lira' | 'try' | 'plus-square-o' | 'space-shuttle' | 'slack' | 'envelope-square' | 'wordpress' | 'openid' | 'institution' | 'bank' | 'university' | 'mortar-board' | 'graduation-cap' | 'yahoo' | 'google' | 'reddit' | 'reddit-square' | 'stumbleupon-circle' | 'stumbleupon' | 'delicious' | 'digg' | 'pied-piper-pp' | 'pied-piper-alt' | 'drupal' | 'joomla' | 'language' | 'fax' | 'building' | 'child' | 'paw' | 'spoon' | 'cube' | 'cubes' | 'behance' | 'behance-square' | 'steam' | 'steam-square' | 'recycle' | 'automobile' | 'car' | 'cab' | 'taxi' | 'tree' | 'spotify' | 'deviantart' | 'soundcloud' | 'database' | 'file-pdf-o' | 'file-word-o' | 'file-excel-o' | 'file-powerpoint-o' | 'file-photo-o' | 'file-picture-o' | 'file-image-o' | 'file-zip-o' | 'file-archive-o' | 'file-sound-o' | 'file-audio-o' | 'file-movie-o' | 'file-video-o' | 'file-code-o' | 'vine' | 'codepen' | 'jsfiddle' | 'life-bouy' | 'life-buoy' | 'life-saver' | 'support' | 'life-ring' | 'circle-o-notch' | 'ra' | 'resistance' | 'rebel' | 'ge' | 'empire' | 'git-square' | 'git' | 'y-combinator-square' | 'yc-square' | 'hacker-news' | 'tencent-weibo' | 'qq' | 'wechat' | 'weixin' | 'send' | 'paper-plane' | 'send-o' | 'paper-plane-o' | 'history' | 'circle-thin' | 'header' | 'paragraph' | 'sliders' | 'share-alt' | 'share-alt-square' | 'bomb' | 'soccer-ball-o' | 'futbol-o' | 'tty' | 'binoculars' | 'plug' | 'slideshare' | 'twitch' | 'yelp' | 'newspaper-o' | 'wifi' | 'calculator' | 'paypal' | 'google-wallet' | 'cc-visa' | 'cc-mastercard' | 'cc-discover' | 'cc-amex' | 'cc-paypal' | 'cc-stripe' | 'bell-slash' | 'bell-slash-o' | 'trash' | 'copyright' | 'at' | 'eyedropper' | 'paint-brush' | 'birthday-cake' | 'area-chart' | 'pie-chart' | 'line-chart' | 'lastfm' | 'lastfm-square' | 'toggle-off' | 'toggle-on' | 'bicycle' | 'bus' | 'ioxhost' | 'angellist' | 'cc' | 'shekel' | 'sheqel' | 'ils' | 'meanpath' | 'buysellads' | 'connectdevelop' | 'dashcube' | 'forumbee' | 'leanpub' | 'sellsy' | 'shirtsinbulk' | 'simplybuilt' | 'skyatlas' | 'cart-plus' | 'cart-arrow-down' | 'diamond' | 'ship' | 'user-secret' | 'motorcycle' | 'street-view' | 'heartbeat' | 'venus' | 'mars' | 'mercury' | 'intersex' | 'transgender' | 'transgender-alt' | 'venus-double' | 'mars-double' | 'venus-mars' | 'mars-stroke' | 'mars-stroke-v' | 'mars-stroke-h' | 'neuter' | 'genderless' | 'facebook-official' | 'pinterest-p' | 'whatsapp' | 'server' | 'user-plus' | 'user-times' | 'hotel' | 'bed' | 'viacoin' | 'train' | 'subway' | 'medium' | 'yc' | 'y-combinator' | 'optin-monster' | 'opencart' | 'expeditedssl' | 'battery-4' | 'battery' | 'battery-full' | 'battery-3' | 'battery-three-quarters' | 'battery-2' | 'battery-half' | 'battery-1' | 'battery-quarter' | 'battery-0' | 'battery-empty' | 'mouse-pointer' | 'i-cursor' | 'object-group' | 'object-ungroup' | 'sticky-note' | 'sticky-note-o' | 'cc-jcb' | 'cc-diners-club' | 'clone' | 'balance-scale' | 'hourglass-o' | 'hourglass-1' | 'hourglass-start' | 'hourglass-2' | 'hourglass-half' | 'hourglass-3' | 'hourglass-end' | 'hourglass' | 'hand-grab-o' | 'hand-rock-o' | 'hand-stop-o' | 'hand-paper-o' | 'hand-scissors-o' | 'hand-lizard-o' | 'hand-spock-o' | 'hand-pointer-o' | 'hand-peace-o' | 'trademark' | 'registered' | 'creative-commons' | 'gg' | 'gg-circle' | 'tripadvisor' | 'odnoklassniki' | 'odnoklassniki-square' | 'get-pocket' | 'wikipedia-w' | 'safari' | 'chrome' | 'firefox' | 'opera' | 'internet-explorer' | 'tv' | 'television' | 'contao' | '500px' | 'amazon' | 'calendar-plus-o' | 'calendar-minus-o' | 'calendar-times-o' | 'calendar-check-o' | 'industry' | 'map-pin' | 'map-signs' | 'map-o' | 'map' | 'commenting' | 'commenting-o' | 'houzz' | 'vimeo' | 'black-tie' | 'fonticons' | 'reddit-alien' | 'edge' | 'credit-card-alt' | 'codiepie' | 'modx' | 'fort-awesome' | 'usb' | 'product-hunt' | 'mixcloud' | 'scribd' | 'pause-circle' | 'pause-circle-o' | 'stop-circle' | 'stop-circle-o' | 'shopping-bag' | 'shopping-basket' | 'hashtag' | 'bluetooth' | 'bluetooth-b' | 'percent' | 'gitlab' | 'wpbeginner' | 'wpforms' | 'envira' | 'universal-access' | 'wheelchair-alt' | 'question-circle-o' | 'blind' | 'audio-description' | 'volume-control-phone' | 'braille' | 'assistive-listening-systems' | 'asl-interpreting' | 'american-sign-language-interpreting' | 'deafness' | 'hard-of-hearing' | 'deaf' | 'glide' | 'glide-g' | 'signing' | 'sign-language' | 'low-vision' | 'viadeo' | 'viadeo-square' | 'snapchat' | 'snapchat-ghost' | 'snapchat-square' | 'pied-piper' | 'first-order' | 'yoast' | 'themeisle' | 'google-plus-circle' | 'google-plus-official' | 'fa' | 'font-awesome' | 'handshake-o' | 'envelope-open' | 'envelope-open-o' | 'linode' | 'address-book' | 'address-book-o' | 'vcard' | 'address-card' | 'vcard-o' | 'address-card-o' | 'user-circle' | 'user-circle-o' | 'user-o' | 'id-badge' | 'drivers-license' | 'id-card' | 'drivers-license-o' | 'id-card-o' | 'quora' | 'free-code-camp' | 'telegram' | 'thermometer-4' | 'thermometer' | 'thermometer-full' | 'thermometer-3' | 'thermometer-three-quarters' | 'thermometer-2' | 'thermometer-half' | 'thermometer-1' | 'thermometer-quarter' | 'thermometer-0' | 'thermometer-empty' | 'shower' | 'bathtub' | 's15' | 'bath' | 'podcast' | 'window-maximize' | 'window-minimize' | 'window-restore' | 'times-rectangle' | 'window-close' | 'times-rectangle-o' | 'window-close-o' | 'bandcamp' | 'grav' | 'etsy' | 'imdb' | 'ravelry' | 'eercast' | 'microchip' | 'snowflake-o' | 'superpowers' | 'wpexplorer' | 'meetup';\r\n\r\ninterface Props {\r\n name: IconNames;\r\n widthEm?: number;\r\n sizeEm?: number;\r\n color?: string;\r\n marginTop?: string;\r\n marginLeft?: string;\r\n marginRight?: string;\r\n}\r\nexport const Icon: React.FC = ({ name, widthEm, sizeEm, color, marginLeft, marginRight, marginTop }) => {\r\n return ;\r\n};\r\n","import * as React from 'react';\n\ninterface Props {\n type: string;\n autoFocus?: boolean;\n isValid: boolean;\n}\nexport const Input: React.FC = (props) => {\n const { isValid, ...p } = props;\n const showValidation = isValid !== undefined;\n const iconClass = 'fa fa-' + (isValid === true ? 'check' : 'times');\n\n const className = !showValidation ? ''\n : (isValid === true ? 'input-group has-success' : 'input-group has-error');\n\n const addon = !showValidation ? null :\n
    \n \n
    ;\n\n return
    \n \n\n
    \n \n {addon}\n
    \n\n {\n isValid === true || isValid === undefined || !isValid ? null :\n
    \n
    \n
    \n {isValid}\n
    \n
    \n }\n\n
    ;\n};\n","import * as React from 'react';\n\ninterface Props {\n active?: boolean;\n speed?: number;\n color?: string;\n height?: number;\n}\n\nexport class LoadingBar extends React.Component {\n state = {\n width: 0,\n left: 0,\n };\n interval = 0;\n\n componentDidMount() {\n const { speed = 20 } = this.props;\n this.interval = window.setInterval(this.animate.bind(this), speed);\n }\n componentWillUnmount() {\n window.clearInterval(this.interval);\n }\n\n animate() {\n const { active = false } = this.props;\n\n if(active !== true) {\n return false;\n }\n\n let { left, width } = this.state;\n if(left === 0 && width < 100) {\n width += 4;\n } else if(width <= 100 && left < 100) {\n left += 4;\n width -= 4;\n } else if(left === 100 && width === 0) {\n left = 0;\n }\n\n this.setState({ left: left, width: width });\n }\n\n render() {\n let { left, width } = this.state;\n const { active = false, height = 2, color = '#60d778' } = this.props;\n\n const style = {\n left: `${active ? left : 0}%`,\n width: `${active ? width : 100}%`,\n height: `${height}px`,\n backgroundColor: color,\n };\n return \n \n\n
    \n ;\n }\n}\n","import * as React from 'react';\nimport classNames from 'classnames';\nimport { LoadingBar } from './loadingBar';\nimport { SectionHeader } from './sectionHeader';\nimport { IconNames } from './icon';\n\ninterface Props {\n title?: string;\n icon?: IconNames;\n isError?: boolean;\n fullPage?: boolean;\n children?: string;\n}\n\nexport const LoadingMessage: React.FC = (props) => {\n const { isError, title, children, icon, fullPage } = props;\n\n const headerIcon = icon || (isError ? 'exclamation-circle' : 'clock-o');\n return \n \n\n
    \n {title || (isError ? 'Error...' : 'Loading...')}\n \n
    \n
    \n
    \n {children !== undefined ? children : (\n isError ? '' : 'Please wait while we retrieve this information.'\n )}\n
    \n
    \n
    \n
    \n
    ;\n};\n","import * as React from 'react';\nimport MasonryComponent, { MasonryOptions } from 'react-masonry-component';\n\ninterface Props {\n options?: MasonryOptions;\n style?: HTMLStyleElement;\n className?: string;\n elementType?: string;\n}\n\nexport const Masonry: React.FC = props => {\n const { children, options, style, className, elementType } = props;\n\n return \n {children}\n ;\n};\n","import * as React from 'react';\r\nimport * as ReactDOM from 'react-dom';\r\nimport { FocusOn } from 'react-focus-on';\r\nimport styled, { CSSProperties } from 'styled-components';\r\n\r\nlet iOS = false;\r\nif(typeof navigator !== 'undefined') {\r\n iOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !(window as any).MSStream;\r\n}\r\n\r\nconst StyledBackdrop = styled.div`background-color: #000; position: fixed; top: 0; bottom: 0; left: 0; right: 0; opacity: 0.8; z-index: 99; width: 100vw; height: 100vh;`;\r\nconst StyledModal = styled.div`\r\n position: fixed; z-index: 999; margin: 0;\r\n display: flex; width: 100vw; height: 100${iOS ? '%' : 'vh'};\r\n flex-direction: column; top: 0; left: 0;\r\n align-items: center;\r\n\r\n & > div {\r\n display: flex;\r\n flex-direction: column;\r\n width: 100vw;\r\n height: 100${iOS ? '%' : 'vh'};\r\n max-height: 100${iOS ? '%' : 'vh'};\r\n @media screen and (min-width: 767px) {\r\n padding: 2.5em;\r\n }\r\n }\r\n\r\n & .btn { background-color: #244062; background-color: var(--color-secondary); color: #fff; margin: 0; padding: 0 20px; border: 0; border-radius: 0; cursor: pointer; }\r\n & .btn:hover { background-color: #1b304a; background-color: var(--color-secondary-dark-25); }\r\n & .body { background-color: #fff; overflow-y: auto; flex: 1; padding: 1em; width: 100%; }\r\n`;\r\nconst StyledHeader = styled.div`\r\n background-color: #244062; background-color: var(--color-secondary); color: #fff; padding: 0; width: 100%; display: flex;\r\n & > div { flex: 1; padding: 5px 15px; margin: 0; }\r\n & .btn { font-size: 1.5em; }\r\n & .header-title { font-size: 2em; min-height: 1em; }\r\n & .header-subtitle { font-style: italic; }\r\n @media(max-width: 768px) {\r\n & .header-title { font-size: 1.3em; }\r\n & .header-subtitle { font-size: 0.8em; }\r\n }\r\n`;\r\nconst StyledFooter = styled.div`\r\n background-color: #244062; background-color: var(--color-secondary); color: #fff; padding: 0; width: 100%; display: flex; min-height: 50px;\r\n & > div { flex: 1; }\r\n & .btn { font-size: 1em; }\r\n & .footerText { float: left; padding: 14px; font-size: 1.1em; }\r\n & .btn-success { background-color: #4F6228; background-color: var(--color-primary); }\r\n & .btn-success:enabled:hover { background-color: #3b4a1e; background-color: var(--color-primary-dark-25); }\r\n & .btn-success:disabled { background-color: #728153; background-color: var(--color-primary-light-25); cursor: not-allowed; }\r\n @media(max-width: 768px) {\r\n & .footerText { font-size: 0.9em; }\r\n }\r\n`;\r\n\r\ninterface Props {\r\n title: string | React.ReactElement;\r\n subtitle?: string;\r\n footerText?: string | React.ReactElement;\r\n okText?: string;\r\n cancelText?: string;\r\n onOk?: () => void;\r\n onClose?: () => void;\r\n isReady?: boolean;\r\n bodyStyle?: React.CSSProperties;\r\n maxWidth?: 'fit-content' | 'min-content' | 'max-content' | (string & {});\r\n fullHeight?: boolean;\r\n fullScreen?: boolean;\r\n}\r\nexport const Modal: React.FC = (p) => {\r\n const { title = '', subtitle = '', okText = 'Ok', cancelText = '', footerText = '', children, onOk, onClose,\r\n maxWidth, fullHeight = true, bodyStyle = {}, isReady = true, fullScreen = false } = p;\r\n\r\n function _handleOk(e: React.MouseEvent | React.TouchEvent | Event | MouseEvent | TouchEvent) {\r\n e.stopPropagation();\r\n onOk && onOk();\r\n }\r\n function _handleClose(e: React.MouseEvent | React.TouchEvent | Event | MouseEvent | TouchEvent) {\r\n e.stopPropagation();\r\n onClose && onClose();\r\n }\r\n\r\n // Ref to hold the portal div\r\n const rootElemRef = React.useRef();\r\n if(!rootElemRef.current) {\r\n rootElemRef.current = document.createElement('aside');\r\n }\r\n\r\n // Hook to create add the portal div to the DOM\r\n React.useEffect(() => {\r\n const parentElem = document.body;\r\n // Add the detached element to the parent\r\n parentElem.appendChild(rootElemRef.current as Node);\r\n // This function is run on unmount\r\n return () => { rootElemRef.current?.remove(); };\r\n }, []);\r\n\r\n const style: CSSProperties = maxWidth ? { maxWidth } : {};\r\n if(!fullHeight)\r\n style.height = 'unset';\r\n if(fullScreen)\r\n style.padding = 0;\r\n\r\n return ReactDOM.createPortal(\r\n \r\n \r\n
    \r\n {title ? \r\n
    \r\n
    {title}
    \r\n {subtitle ?
    {subtitle}
    : null}\r\n
    \r\n \r\n
    : null}\r\n
    \r\n {children}\r\n
    \r\n {okText || cancelText ? \r\n
    {footerText}
    \r\n {cancelText ? : null}\r\n {okText ? : null}\r\n
    : null}\r\n
    \r\n
    \r\n
    , rootElemRef.current);\r\n};\r\n","import * as React from 'react';\r\nimport { Icon, IconNames, Spinner } from './index';\r\nimport { classNames } from 'web-shared/lib';\r\n\r\ninterface Props {\r\n title?: string | React.ReactNode;\r\n subTitle?: string;\r\n icon?: IconNames;\r\n marginEm?: number;\r\n spinner?: 'circle' | 'horizontal';\r\n color?: string;\r\n colorSubTitle?: string;\r\n fullPage?: boolean;\r\n sizeEm?: number;\r\n pre?: boolean;\r\n}\r\n\r\nexport const NonIdealState: React.FC = (props) => {\r\n const {\r\n children, title, subTitle, icon, marginEm, spinner, sizeEm = 1, pre,\r\n color = '#555', fullPage,\r\n colorSubTitle = '#777',\r\n } = props;\r\n\r\n return
    \r\n \r\n\r\n {icon === '' ? null :
    \r\n {spinner ? :\r\n }\r\n
    }\r\n\r\n {!title ? null :
    {title}
    }\r\n {subTitle ?
    {subTitle}
    : null}\r\n {children}\r\n
    ;\r\n};\r\n","import * as React from 'react';\nimport numeral from 'numeral';\n\ninterface Props {\n page: number;\n pageSize: number;\n totalResults: number;\n style?: {};\n hideResults?: boolean;\n onPageChange: (page: number) => any;\n}\n\nexport const Pager: React.FC = (props) => {\n function _onNextPage() {\n const { onPageChange, page } = props;\n onPageChange && onPageChange(page + 1);\n }\n function _onPreviousPage () {\n const { onPageChange, page } = props;\n onPageChange && onPageChange(page - 1);\n }\n\n const { page, totalResults, pageSize, hideResults = false, style } = props;\n const maxPages = isNaN(Math.ceil(totalResults / pageSize)) ? '??' : Math.ceil(totalResults / pageSize);\n\n return
    \n \n\n
      \n Page {page} of {maxPages}\n  \n
    • \n \n
    • \n  \n
    • \n \n
    • \n  \n { hideResults ? null : {numeral(totalResults).format('0,0')} Results }\n
    \n
    ;\n};\n","import * as React from 'react';\r\nimport { formatRelativeDateTime, formatUtcDateTime } from '../lib';\r\n\r\nfunction getNextTimeout(ageInSeconds: number) {\r\n // Get current age of item\r\n return ageInSeconds <= 60 ? 5000 :\r\n ageInSeconds <= 3600 ? 30000 : 120000;\r\n}\r\n\r\ninterface Props {\r\n utcTime: Date | string;\r\n dateOnly?: boolean;\r\n}\r\nexport const RelativeTime: React.FC = function ({ utcTime, dateOnly }) {\r\n const [count, setCount] = React.useState(0);\r\n\r\n const ageInSeconds = (new Date().valueOf() - new Date(utcTime).valueOf()) / 1000.0;\r\n React.useEffect(() => {\r\n if(dateOnly) return;\r\n\r\n const next = getNextTimeout(ageInSeconds);\r\n const timer = next > 0 ? window.setTimeout(() => setCount(count + 1), next) : undefined;\r\n\r\n return () => { timer && clearTimeout(timer); };\r\n }, [count]);\r\n\r\n const relativeTime = formatRelativeDateTime(utcTime);\r\n return {dateOnly && relativeTime.indexOf('hour') !== -1 ? 'the last 24 hours' : relativeTime};\r\n};\r\n","import * as React from 'react';\r\nimport { Link as ReactRouterLink } from 'react-router-dom';\r\n\r\ninterface LinkToObject {\r\n\tpathname: string;\r\n\tsearch?: string;\r\n\thash?: string;\r\n\tstate?: object;\r\n}\r\ninterface Props {\r\n\tto: string | LinkToObject;\r\n\treplace?: boolean;\r\n\tcomponent?: React.ComponentType;\r\n\tinnerRef?: React.Ref;\r\n}\r\n\r\nconst whitelistKeys = ['_ga'];\r\nexport const Link: React.FC = ({ to, replace, component, innerRef }) => {\r\n\tconst toWithQuery: LinkToObject = typeof (to) === 'string' ? { pathname: to, search: '' } : { ...to };\r\n\r\n\t// See if we have search params we want to persist\r\n\tconst search = new URLSearchParams(window.location.search);\r\n\tconst searchKeys = Array.from(search.keys());\r\n\tconst keepKeys = searchKeys.filter(k => whitelistKeys.indexOf(k) !== -1 || k.startsWith('utm_'));\r\n\r\n\tconst newSearch = new URLSearchParams();\r\n\tkeepKeys.forEach(k => {\r\n\t\tnewSearch.append(k, search.get(k));\r\n\t});\r\n\ttoWithQuery.search = newSearch.toString();\r\n\r\n\treturn ;\r\n};\r\n","import * as React from 'react';\r\nimport { Route, RouteProps, Redirect } from 'react-router-dom';\r\nimport { ui } from 'web-shared/store';\r\n\r\nexport const PrivateRoute: React.FC = ({ children, title, token, component, applicationType, ...rest }) => {\r\n return {\r\n if(token) {\r\n const pageBaseName = ui.getStateSnapshot().name;\r\n document.title = `${pageBaseName} - ${title}`;\r\n ui.setPageTitle(title);\r\n }\r\n return token ? children || React.createElement(component!, { ...props, applicationType })\r\n : ;\r\n }\r\n } />;\r\n};\r\n","import * as React from 'react';\nimport { Route, RouteProps } from 'react-router-dom';\nimport { ui } from 'web-shared/store';\n\ninterface Props extends RouteProps {\n title: string;\n componentProps?: object;\n}\nexport const PublicRoute: React.FC = ({ children, title, component, componentProps = {}, ...rest }) => {\n return {\n const pageBaseName = ui.getStateSnapshot().name;\n ui.setPageTitle(title);\n document.title = `${pageBaseName} - ${title}`;\n return children || React.createElement(component!, { ...props, ...componentProps });\n }\n } />;\n};\n","import * as React from 'react';\nimport scrollIntoView, { Options } from 'scroll-into-view-if-needed';\n// import { dbg } from '../lib';\n\ninterface Props {\n name?: string;\n active?: boolean;\n elementType?: string;\n options?: Options;\n}\nexport const ScrollIntoView: React.FC = (props) => {\n const {\n active = true,\n elementType = 'div',\n options = {},\n children,\n } = props;\n\n const nodeRef = React.useRef(undefined);\n React.useEffect(() => {\n if(active && nodeRef.current) {\n // props.name && dbg('ScrollIntoView', props.name, 'green');\n if(!options.behavior)\n options.behavior = 'smooth';\n if(!options.scrollMode)\n options.scrollMode = 'if-needed';\n if(!options.block)\n options.block = 'start';\n scrollIntoView(nodeRef.current, options);\n }\n }, [active]);\n\n return React.createElement(elementType, { ref: nodeRef }, children);\n};\n","import * as React from 'react';\r\n\r\nimport { classNames } from '../lib';\r\n\r\ninterface Props {\r\n id?: string;\r\n color?: 'none' | 'primary' | 'secondary' | 'inverse' | 'white' | 'primary-light' | 'secondary-light';\r\n style?: React.CSSProperties;\r\n fluid?: boolean;\r\n css?: string;\r\n sticky?: boolean | number;\r\n className?: string;\r\n}\r\nexport const Section: React.FC = function (props) {\r\n const { color = 'none', style = {}, fluid = false, css, sticky, className } = props;\r\n\r\n const _colors = {\r\n none: '',\r\n white: 'background-color: #fff;',\r\n primary: `color: #fff; background-color: #4f6228; background-color: var(--color-primary);`,\r\n 'primary-light': `color: #fff; background-color: #728153; background-color: var(--color-primary-light-25);`,\r\n secondary: `color: #fff; background-color: #244062; background-color: var(--color-secondary);`,\r\n 'secondary-light': `color: #fff; background-color: #506681; background-color: var(--color-secondary-light-25);`,\r\n inverse: `background-color: #222; color: #fff;`,\r\n };\r\n\r\n const isSticky = sticky !== undefined && sticky !== false;\r\n const stickyPos = sticky === true || !isSticky ? 0 : sticky as number;\r\n\r\n return
    \r\n \r\n\r\n
    \r\n {props.children}\r\n
    \r\n
    ;\r\n};\r\n","import * as React from 'react';\r\nimport { classNames } from '../lib';\r\nimport styled from 'styled-components';\r\n\r\ninterface Props {\r\n icon?: string;\r\n color?: string;\r\n size?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\r\n center?: boolean;\r\n id?: string;\r\n direction?: 'row' | 'column' | 'row-reverse' | 'column-reverse';\r\n tag?: 'div' | 'span' | 'h1' | 'h2' | 'h3';\r\n tabIndex?: number;\r\n style?: React.CSSProperties;\r\n}\r\n\r\nconst StyledRoot = styled.div`\r\n margin: 10px 0;\r\n &.h1 { margin-top: 0; font-size: 3em; }\r\n &.h2 { margin-top: 0; font-size: 2.8em; }\r\n &.h3 { margin-top: 0; font-size: 2.6em; }\r\n &.h4 { margin-top: 0; font-size: 2.2em; }\r\n &.h5 { margin-top: 0; font-size: 1.8em; }\r\n &.h6 { margin-top: 0; font-size: 1.5em; }\r\n & .headerText { margin-top: 0; line-height: 1.1em; display: flex; }\r\n & .subText { font-size: 1.3em; margin-bottom: 10px; }\r\n & .icon { margin-right: 20px; font-size: 1.3em; height: 1em; width: 1em; float: left; }\r\n\r\n @media(max-width: 768px) {\r\n &.h1 { margin-top: 0; font-size: 2.5em; }\r\n &.h2 { margin-top: 0; font-size: 2em; }\r\n &.h3 { margin-top: 0; font-size: 1.6em; }\r\n &.h4 { margin-top: 0; font-size: 1.2em; }\r\n &.h5 { margin-top: 0; font-size: 1.1em; }\r\n &.h6 { margin-top: 0; font-size: 1em; }\r\n }\r\n`;\r\n\r\nexport const SectionHeader: React.FC = props => {\r\n const { icon, color, size = 'h2', tag = 'div', center = false, id, direction = 'row', tabIndex, children, style } = props;\r\n\r\n const headerStyle: React.CSSProperties = {};\r\n if(center) {\r\n headerStyle.textAlign = 'center';\r\n headerStyle.justifyContent = 'center';\r\n }\r\n if(color === 'danger') {\r\n headerStyle.color = '#C0504D';\r\n }\r\n\r\n return React.createElement(tag, { tabIndex, style: headerStyle, id },\r\n \r\n \r\n
    \r\n {icon ?
    : null}\r\n {children}\r\n
    \r\n ,\r\n );\r\n};\r\n","import * as React from 'react';\nimport { shadeColor } from '../../lib';\n\ninterface Props {\n loading?: boolean;\n color?: string;\n height?: string;\n width?: string;\n id?: string;\n}\n\nexport const BarLoader: React.FC = function ({ loading = true, color = '#555', width = '100%', height = '4px', id }) {\n return loading ?
    \n \n
    \n
    \n
    : null;\n};\n","import * as React from 'react';\n\ninterface Props {\n loading?: boolean;\n color?: string;\n size?: string;\n id?: string;\n className?: string;\n}\nexport const ClipLoader: React.FC = function ({ loading = true, color = '#555', size = '35px', id, className }) {\n return loading ?
    \n \n
    \n
    : null;\n};\n","import * as React from 'react';\r\n\r\nexport type SpinnerType = 'circle' | 'horizontal';\r\ninterface IProps {\r\n type?: SpinnerType;\r\n color?: string;\r\n center?: boolean;\r\n heightEm?: number;\r\n margin?: string | number;\r\n\r\n inlineText?: string;\r\n}\r\n\r\nconst HorizontalSpinner: React.FC = ({ color = '' }) => {\r\n return \r\n \r\n\r\n \r\n \r\n \r\n ;\r\n};\r\n\r\nconst CircleSpinner: React.FC = ({ color = '' }) => {\r\n return
    \r\n \r\n\r\n
    \r\n
    \r\n
    ;\r\n};\r\n\r\nexport const Spinner: React.FC = ({ inlineText, ...props }) => {\r\n let Component;\r\n switch(props.type) {\r\n case 'horizontal':\r\n Component = HorizontalSpinner;\r\n break;\r\n default:\r\n Component = CircleSpinner;\r\n break;\r\n }\r\n\r\n return
    \r\n \r\n\r\n \r\n \r\n \r\n {inlineText ? {inlineText} : null}\r\n
    ;\r\n};\r\n","import * as React from 'react';\r\nimport styled from 'styled-components';\r\nimport { classNames } from 'web-shared/lib';\r\nimport { IconNames } from './icon';\r\n\r\nconst StyledSteps = styled.div`\r\n--rs-icon-diameter: 30px;\r\n--steps-icon-spacing: 10px;\r\n--steps-icon-space-width: calc(var(--rs-icon-diameter) + var(--steps-icon-spacing));\r\n--steps-icon-size: 16px;\r\n--steps-icon-line-height: calc((var(--rs-icon-diameter) - 2px) / var(--steps-icon-size));\r\n\r\n--small-steps-icon-diameter: 24px;\r\n--small-steps-icon-space-width: calc(var(--small-steps-icon-diameter) + var(--steps-icon-spacing));\r\n--small-steps-icon-line-height: calc(((var(--small-steps-icon-diameter) - 2px) / calc(--font-size-base)));\r\n--small-steps-title-line-height: calc((var(--small-steps-icon-diameter) / var(--font-size-base)));\r\n--small-steps-icon-size: var(--font-size-base);\r\n--small-steps-description-font-size: var(--font-size-small);\r\n--small-steps-description-line-height: var(--line-height-small);\r\n--small-steps-description-margin-top: 12px;\r\n\r\n.rs-steps {\r\n min-height: var(--rs-icon-diameter);\r\n}\r\n\r\n// Item\r\n// --------------------------\r\n.rs-steps-item {\r\n padding-left: var(--steps-icon-space-width);\r\n position: relative;\r\n overflow: hidden;\r\n}\r\n\r\n// Item icon\r\n.rs-steps-item-icon-wrapper {\r\n width: var(--rs-icon-diameter);\r\n height: var(--rs-icon-diameter);\r\n text-align: center;\r\n font-size: var(--steps-icon-size);\r\n line-height: var(--steps-icon-line-height);\r\n color: var(--rs-text-secondary);\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n display: flex;\r\n align-items: center;\r\n border: 1px solid var(--rs-steps-border);\r\n border-radius: 50%;\r\n\r\n // Finish status show check mark.\r\n .rs-steps-item-status-finish & {\r\n border-color: var(--rs-steps-state-finish);\r\n color: var(--rs-steps-state-finish);\r\n }\r\n\r\n // Error status show X mark.\r\n .rs-steps-item-status-error & {\r\n border-color: var(--rs-steps-state-error);\r\n color: var(--rs-steps-state-error);\r\n }\r\n\r\n .rs-steps-item-status-process & {\r\n border-color: var(--rs-steps-state-process);\r\n background-color: var(--rs-steps-state-process);\r\n color: var(--rs-text-inverse);\r\n\r\n .rs-icon {\r\n color: var(--rs-steps-icon-state-process);\r\n }\r\n }\r\n\r\n &.rs-steps-item-custom-icon {\r\n border: none;\r\n background: none;\r\n }\r\n\r\n // Icon content\r\n > .rs-steps-item-icon {\r\n width: 100%;\r\n display: block;\r\n text-align: center;\r\n position: relative;\r\n\r\n .rs-icon {\r\n font-size: 14px;\r\n vertical-align: middle;\r\n }\r\n }\r\n}\r\n\r\n// Item content\r\n// --------------------------\r\n.rs-steps-item-content {\r\n color: var(--rs-text-secondary);\r\n display: inline-block;\r\n position: relative;\r\n width: 100%;\r\n\r\n .rs-steps-item-status-process & {\r\n color: var(--rs-text-primary);\r\n }\r\n\r\n .rs-steps-item-status-error & {\r\n color: var(--rs-text-error);\r\n }\r\n}\r\n\r\n// Item title\r\n.rs-steps-item-title {\r\n position: relative;\r\n font-size: var(--steps-title-font-size);\r\n line-height: var(--steps-title-line-height);\r\n min-height: var(--steps-title-font-size);\r\n padding-right: var(--steps-icon-spacing);\r\n display: inline-block;\r\n\r\n &:empty {\r\n padding-right: 0;\r\n }\r\n}\r\n\r\n// Item description\r\n.rs-steps-item-description {\r\n margin-top: var(--steps-description-margin-top);\r\n}\r\n\r\n.rs-steps-item-tail,\r\n.rs-steps-item-title::after {\r\n position: absolute;\r\n border-color: var(--rs-steps-border);\r\n\r\n .rs-steps-item-status-process & {\r\n border-color: var(--rs-steps-border);\r\n }\r\n\r\n .rs-steps-item-status-finish & {\r\n border-color: var(--rs-steps-state-finish);\r\n }\r\n\r\n .rs-steps-next-error & {\r\n border-color: var(--rs-steps-border-state-error);\r\n }\r\n}\r\n\r\n// Horizontal\r\n.rs-steps-horizontal {\r\n display: flex;\r\n justify-content: space-between;\r\n\r\n .rs-steps-item {\r\n flex-grow: 1;\r\n flex-shrink: 1;\r\n min-height: var(--rs-icon-diameter);\r\n\r\n // The last node is self-adaptive width.\r\n &:last-child {\r\n flex-grow: 0;\r\n flex-shrink: 0;\r\n\r\n // The last item hidden tail line\r\n .rs-steps-item-title::after {\r\n display: none;\r\n }\r\n }\r\n\r\n // There is a 10px spacing between each item.\r\n &:not(:first-child) {\r\n padding-left: calc(var(--steps-icon-space-width) + var(--steps-item-spacing));\r\n\r\n .rs-steps-item-icon-wrapper {\r\n left: var(--steps-item-spacing);\r\n }\r\n }\r\n }\r\n\r\n .rs-steps-item-content {\r\n height: calc(var(--steps-title-font-size) * var(--steps-title-line-height));\r\n }\r\n\r\n .rs-steps-item-title {\r\n &::after {\r\n content: '';\r\n top: calc(var(--rs-icon-diameter) / 2);\r\n left: 100%;\r\n width: 9999px;\r\n border-top-width: 1px;\r\n border-top-style: solid;\r\n }\r\n }\r\n}\r\n\r\n// Verticla\r\n.rs-steps-vertical {\r\n .rs-steps-item {\r\n padding-bottom: 20px;\r\n\r\n // There is a 10px spacing between each item.\r\n &:not(:first-child) {\r\n margin-top: var(--steps-item-spacing);\r\n }\r\n\r\n &:last-child .rs-steps-item-tail {\r\n display: none;\r\n }\r\n }\r\n\r\n .rs-steps-item-tail {\r\n top: var(--steps-icon-space-width);\r\n bottom: 0;\r\n left: calc(var(--rs-icon-diameter) / 2);\r\n border-left-width: 1px;\r\n border-left-style: solid;\r\n }\r\n}\r\n\r\n// Small\r\n// Resize: Diameter、font-size and so on.\r\n.rs-steps-small {\r\n min-height: var(--small-steps-icon-diameter);\r\n\r\n &.rs-steps-horizontal .rs-steps-item {\r\n min-height: var(--small-steps-icon-diameter);\r\n }\r\n\r\n &.rs-steps-horizontal .rs-steps-item:not(:first-child) {\r\n padding-left: calc(var(--small-steps-icon-space-width) + var(--steps-icon-spacing));\r\n }\r\n\r\n &.rs-steps-vertical .rs-steps-item-tail {\r\n\tleft: calc(var(--small-steps-icon-diameter) / 2);\r\n }\r\n\r\n &.rs-steps-horizontal .rs-steps-item-title::after {\r\n top: 12px;\r\n }\r\n\r\n .rs-steps-item {\r\n padding-left: var(--small-steps-icon-space-width);\r\n }\r\n\r\n .rs-steps-item-icon-wrapper {\r\n width: var(--small-steps-icon-diameter);\r\n height: var(--small-steps-icon-diameter);\r\n font-size: var(--small-steps-icon-size);\r\n line-height: var(--small-steps-icon-line-height);\r\n }\r\n\r\n .rs-steps-item-title {\r\n font-size: var(--small-steps-icon-size);\r\n line-height: var(--small-steps-title-line-height);\r\n }\r\n\r\n .rs-steps-item-description {\r\n margin-top: var(--small-steps-description-margin-top);\r\n font-size: var(--small-steps-description-font-size);\r\n line-height: var(--small-steps-description-line-height);\r\n }\r\n}\r\n`;\r\n\r\ninterface Props {\r\n\tvertical?: boolean;\r\n\tsmall?: boolean;\r\n\tcurrent?: number;\r\n\tcurrentStatus?: 'finish' | 'wait' | 'process' | 'error';\r\n}\r\nexport const Steps: React.FC = ({ children, vertical, small, current, currentStatus }) => {\r\n\tconst horizontal = !vertical;\r\n\tconst count = React.Children.count(children);\r\n\tconst items = mapCloneElement(children, (item, index) => {\r\n\t\tconst itemStyles = {\r\n\t\t\tflexBasis: index < count - 1 ? `${100 / (count - 1)}%` : undefined,\r\n\t\t\tmaxWidth: index === count - 1 ? `${100 / count}%` : undefined\r\n\t\t};\r\n\t\tconst itemProps = {\r\n\t\t\tstepNumber: index + 1,\r\n\t\t\tstatus: 'wait',\r\n\t\t\tstyle: horizontal ? itemStyles : undefined,\r\n\t\t\t...item.props\r\n\t\t};\r\n\r\n\t\t// fix tail color\r\n\t\tif(currentStatus === 'error' && index === current! - 1) {\r\n\t\t\titemProps.className = 'rs-steps-next-error';\r\n\t\t}\r\n\r\n\t\tif(!item.props.status) {\r\n\t\t\tif(index === current) {\r\n\t\t\t\titemProps.status = currentStatus;\r\n\t\t\t\titemProps.className = 'rs-steps-item-active';\r\n\t\t\t} else if(index < current!) {\r\n\t\t\t\titemProps.status = 'finish';\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn itemProps;\r\n\t});\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t{items}\r\n\t\t\r\n\t);\r\n};\r\n\r\nconst StyledStep = styled.div`\r\n`;\r\n\r\ninterface StepProps {\r\n\titemWidth?: number | string;\r\n\tstatus?: 'finish' | 'wait' | 'process' | 'error';\r\n\ticon?: IconNames;\r\n\tstepNumber?: number;\r\n\tdescription?: React.ReactNode;\r\n\ttitle?: React.ReactNode;\r\n}\r\nexport const Step: React.FC = ({ itemWidth, status, icon, stepNumber, description, title }) => {\r\n\tlet iconNode = \r\n\t\t{status ? STEP_STATUS_ICON[status] ?? stepNumber : stepNumber}\r\n\t;\r\n\r\n\tif(icon)\r\n\t\ticonNode = {icon};\r\n\r\n\tconst styles: React.CSSProperties = { width: itemWidth };\r\n\r\n\treturn \r\n\t\t
    \r\n\t\t
    {iconNode}
    \r\n\t\t
    \r\n\t\t\t{
    {title}
    }\r\n\t\t\t{description &&
    {description}
    }\r\n\t\t
    \r\n\t;\r\n};\r\n\r\nconst STEP_STATUS_ICON: {\r\n\t[key in NonNullable]: React.ReactElement | null;\r\n} = {\r\n\tfinish: ,\r\n\twait: null,\r\n\tprocess: null,\r\n\terror: \r\n};\r\n\r\ntype ReactChildrenMapFunc = (child: any, index: number) => any;\r\nfunction map(children: React.ReactNode, func: ReactChildrenMapFunc, context?: any) {\r\n\tlet index = 0;\r\n\treturn React.Children.map(children, child => {\r\n\t\tif(!React.isValidElement(child)) {\r\n\t\t\treturn child;\r\n\t\t}\r\n\t\tconst handle = func.call(context, child, index);\r\n\t\tindex += 1;\r\n\t\treturn handle;\r\n\t});\r\n}\r\nfunction mapCloneElement(children: React.ReactNode, func: ReactChildrenMapFunc, context?: any) {\r\n\treturn map(\r\n\t\tchildren,\r\n\t\t(child: React.DetailedReactHTMLElement, index: number) =>\r\n\t\t\tReact.cloneElement(child, {\r\n\t\t\t\tkey: index,\r\n\t\t\t\t...func(child, index)\r\n\t\t\t}),\r\n\t\tcontext\r\n\t);\r\n}\r\n","import * as React from 'react';\r\nimport styled from 'styled-components';\r\n\r\nimport { useHistory } from 'react-router';\r\nimport { classNames } from 'web-shared/lib';\r\nimport { Section } from '..';\r\nimport { Tab, TabProps } from './tab';\r\n\r\nexport { Tab };\r\nexport * from './managedTabs';\r\n\r\nconst StyledDiv = styled.div`\r\n background: inherit;\r\n\r\n &.sticky { position: sticky; z-index: 99; }\r\n & .tabs ul { display: flex; margin-bottom: 0; flex-wrap: wrap; flex-shrink: 1; width: 100%; background: inherit; }\r\n & .spacer { width: 2px; height: 1.5em; background-color: #dbdbdb; margin: 0 1em; }\r\n`;\r\n\r\ninterface Props {\r\n children: any;\r\n align?: 'left' | 'centered' | 'right';\r\n style?: 'boxed' | 'toggle' | 'toggle-rounded';\r\n fullWidth?: boolean;\r\n selectedTab?: number;\r\n buttons?: React.ReactElement;\r\n onTabChange?: (tabIndex: number, props: TabProps) => void;\r\n sticky?: boolean | number;\r\n preTabContent?: React.ReactNode;\r\n mt?: string;\r\n mb?: string;\r\n tabsRef?: React.Ref;\r\n}\r\nexport const Tabs: React.FC = (props) => {\r\n const history = useHistory();\r\n const tabChildren = React.Children.toArray(props.children) as React.ReactElement[];\r\n const defaultTab = tabChildren.findIndex(t => t.props.pathname === history.location.pathname);\r\n const [state, setState] = React.useState({\r\n selectedTab: defaultTab === -1 ? 0 : defaultTab,\r\n });\r\n\r\n const { children, buttons, selectedTab = state.selectedTab, align = 'left', style, fullWidth, sticky, tabsRef,\r\n onTabChange = (i: number) => {\r\n setState({ selectedTab: i });\r\n const tab = tabChildren[i];\r\n if(tab.props.pathname) {\r\n history.push(tab.props.pathname);\r\n }\r\n }\r\n } = props;\r\n\r\n // Set active and get the render function\r\n let tabPaneRenderer: TabProps['render'] | undefined;\r\n const tabs = React.Children.map(children,\r\n (tab: React.ReactElement, index) => {\r\n if(index === selectedTab && !tab.props.hidden) {\r\n tabPaneRenderer = tab.props.render;\r\n }\r\n\r\n if(!tab.props.name)\r\n return
    ;\r\n\r\n return onTabChange && onTabChange(index, tab.props)} />;\r\n },\r\n );\r\n\r\n const isSticky = sticky !== undefined && sticky !== false;\r\n const stickyPos = sticky === true || !isSticky ? 0 : sticky as number;\r\n const cls = classNames('tabs', `is-${align}`, style ? `is-${style}` : '', { 'is-fullwidth': fullWidth });\r\n const rendered = tabPaneRenderer && tabPaneRenderer();\r\n\r\n const st: React.CSSProperties = {\r\n paddingTop: props.mt,\r\n paddingBottom: props.mb,\r\n };\r\n\r\n return <>\r\n \r\n {props.preTabContent}\r\n
    \r\n
    \r\n
      \r\n {tabs}\r\n {buttons ?
    • : null}\r\n {buttons}\r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n {rendered ?
    \r\n
    \r\n {rendered}\r\n
    \r\n
    : null}\r\n ;\r\n};\r\n","import * as React from 'react';\r\nimport { IconNames, Tab, Tabs, Button, Section } from '..';\r\nimport styled from 'styled-components';\r\nimport useMeasure from 'react-use/lib/useMeasure';\r\n\r\nconst StyledDiv = styled.div`\r\n background: inherit;\r\n\r\n & section.tabs { padding-top: 0.5rem; }\r\n & .subTabs { padding: 0; background: inherit; }\r\n @media(max-height: 768px) {\r\n section.tabs { padding-bottom: 0.5rem; }\r\n }\r\n @media(max-height: 650px) {\r\n && .sticky { position: inherit; }\r\n }\r\n\r\n .error-details { font-style: italic; padding: 1em; }\r\n`;\r\nconst TabNav = styled.div`\r\n & .message { margin-top: 1em; }\r\n & .buttons { display: flex; margin-top: 1em; }\r\n & .fill { flex: 1; }\r\n`;\r\n\r\ntype TabName = string | ((s: S, indexOverride?: number) => string);\r\nexport interface ManagedTab {\r\n id?: string;\r\n name: TabName;\r\n component?: React.FC

    ;\r\n componentProps?: P,\r\n icon?: IconNames;\r\n tabs?: ManagedTab[],\r\n tabsHeader?: (s: S) => React.ReactElement,\r\n hidden?: (s: S) => boolean;\r\n hideNav?: (s: S) => boolean;\r\n validator?: (s: S, m: M, i?: number) => TabError[];\r\n submit?: (s: S, m: M, allErrors: TabError[]) => boolean | undefined;\r\n submitText?: string;\r\n indexOverride?: number;\r\n padding?: string;\r\n preTabContent?: any;\r\n}\r\n\r\ntype Level = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 'max';\r\ntype NextLevel =\r\n Level extends 0 ? 1\r\n : Level extends 1 ? 2\r\n : Level extends 2 ? 3\r\n : Level extends 3 ? 4\r\n : Level extends 4 ? 5\r\n : Level extends 5 ? 6\r\n : 'max';\r\ntype IndexLevel = 'i' | 'j' | 'k';\r\ntype NextIndexLevel = IndexLevel extends 'i' ? 'j'\r\n : IndexLevel extends 'j' ? 'k' : 'i';\r\ntype Primitive = string | number | bigint | boolean | undefined | symbol;\r\nexport type PropertyStringPath = {\r\n [K in keyof T]:\r\n L extends 'max' ? never :\r\n T[K] extends Primitive ? `${string & Prefix}${string & K}` :\r\n T[K] extends Array ? PropertyStringPath, NextIndexLevel> :\r\n `${string & Prefix}${(string | number) & K}` | PropertyStringPath, I>;\r\n}[keyof T];\r\n\r\nexport type TabError = {\r\n msg?: string;\r\n field?: PropertyStringPath;\r\n hide?: boolean;\r\n tab?: string;\r\n i?: number | string;\r\n j?: number | string;\r\n k?: number | string;\r\n} | null;\r\n\r\ninterface Props {\r\n tabs: ManagedTab[];\r\n state: S;\r\n adminState?: M;\r\n align?: 'left' | 'centered' | 'right';\r\n onSubmit?: () => void;\r\n selectedTabId?: string | undefined;\r\n setSelectedTabId?: React.Dispatch>;\r\n sticky?: boolean | number;\r\n children?: React.ReactNode;\r\n navigation?: boolean;\r\n hashUpdate?: boolean;\r\n}\r\n\r\nexport function allTabErrors(tabs: ManagedTab[], state: S, adminState?: M): TabError[] {\r\n return tabs.filter(t => !t.hidden || !t.hidden(state)).reduce((all, tab) => {\r\n const tabErrors = tab.validator ? tab.validator(state, adminState!, tab.indexOverride).filter(e => e) : [];\r\n const subTabErrors = tab.tabs ? allTabErrors(tab.tabs, state, adminState) : [];\r\n return [\r\n ...all,\r\n ...tabErrors.map(e => ({ ...e, tab: tab.id })),\r\n ...subTabErrors,\r\n ].filter(e => e != null);\r\n }, [] as TabError[]);\r\n}\r\n\r\nfunction scrollToTop() {\r\n // Scroll back to the top\r\n setTimeout(() => {\r\n const el = document?.getElementById(\"managed-tabs\");\r\n const offsetTop = el?.offsetTop || 0;\r\n window?.scrollTo({ top: offsetTop, behavior: 'smooth' });\r\n }, 0);\r\n}\r\n\r\nexport function ManagedTabs(props: Props): React.ReactElement {\r\n const { tabs, state, adminState, align, onSubmit, selectedTabId, setSelectedTabId, sticky, children, navigation = true, hashUpdate = true } = props;\r\n const [submitting, setSubmitting] = React.useState(false);\r\n const [showErrors, setShowErrors] = React.useState(false);\r\n const [refMain, { height }] = useMeasure();\r\n\r\n // Internal tab state\r\n let [tabId, setTabId] = React.useState(undefined);\r\n\r\n // Let parent manage selected tab\r\n if(selectedTabId !== undefined && setSelectedTabId !== undefined) {\r\n tabId = selectedTabId;\r\n setTabId = setSelectedTabId;\r\n }\r\n\r\n function changeTab(id: string | undefined) {\r\n setTabId(id);\r\n if(hashUpdate) {\r\n const baseUrl = window.location.href.split('#')[0];\r\n window.location.replace(`${baseUrl}#${id}`);\r\n }\r\n scrollToTop();\r\n }\r\n function setFromHash() {\r\n const hash = window.location.hash?.replace('#', '');\r\n if(hash && hash !== tabId) {\r\n setTabId(hash);\r\n }\r\n }\r\n\r\n React.useEffect(() => {\r\n if(!hashUpdate)\r\n return;\r\n\r\n // Set initial tab from URL hash\r\n setFromHash();\r\n\r\n // Watch for hash changes\r\n if((\"onhashchange\" in window)) {\r\n window.onhashchange = function () {\r\n setFromHash();\r\n }\r\n }\r\n\r\n return () => {\r\n window.onhashchange = null;\r\n };\r\n }, []);\r\n\r\n // Find the selected tab\r\n const visibleTabs = tabs.filter(t => !t.hidden || !t.hidden(state));\r\n const mainTab = visibleTabs.find(t => {\r\n return t.id && t.id === tabId || t.tabs?.find(s => s.id === tabId);\r\n }) || visibleTabs[0];\r\n const mainTabIndex = visibleTabs.findIndex(t => t.id === mainTab?.id);\r\n\r\n // Find the selected subTab\r\n const visibleSubTabs = mainTab.tabs?.filter(t => !t.hidden || !t.hidden(state)) || [];\r\n const hasSubTabs = visibleSubTabs.length > 0;\r\n const subTab = visibleSubTabs.find(t => t.id && t.id === tabId) || (hasSubTabs ? visibleSubTabs[0] : undefined);\r\n const subTabIndex = visibleSubTabs.findIndex(t => t.id === subTab?.id);\r\n\r\n // Get selected tab errors\r\n const errors: TabError[] = subTab || mainTab ? allTabErrors([subTab || mainTab], state, adminState) : [];\r\n const visibleErrors = [...new Set([\r\n errors.filter(e => !e?.msg).length ? { msg: 'Some required fields are missing.' } : null,\r\n ...errors.filter(e => !e?.hide && e?.msg),\r\n ].filter(e => e).map(e => e?.msg))];\r\n\r\n // Get all visible tab errors\r\n const allErrors = allTabErrors(visibleTabs, state, adminState);\r\n\r\n const isLast = mainTabIndex + 1 === visibleTabs.length;\r\n const submitStatus = mainTab?.submit ? mainTab.submit(state, adminState!, allErrors) : subTab?.submit ? subTab?.submit(state, adminState!, allErrors) : undefined;\r\n const submitText = mainTab?.submitText || subTab?.submitText || 'Submit';\r\n\r\n function prev() {\r\n // Change to previous sub tab\r\n if(subTabIndex > 0) {\r\n changeTab(visibleSubTabs[subTabIndex - 1]?.id);\r\n return;\r\n }\r\n\r\n // Change to previous main tab\r\n changeTab(visibleTabs[mainTabIndex - 1]?.id);\r\n }\r\n function next() {\r\n if(!subTab || subTabIndex + 1 === visibleSubTabs.length)\r\n changeTab(visibleTabs[mainTabIndex + 1]?.id);\r\n else\r\n changeTab(visibleSubTabs[subTabIndex + 1]?.id);\r\n }\r\n async function submit() {\r\n if(!onSubmit)\r\n return;\r\n\r\n setSubmitting(true);\r\n await onSubmit();\r\n setSubmitting(false);\r\n }\r\n\r\n const hideNav = subTab?.hideNav?.(state) || mainTab?.hideNav?.(state);\r\n return \r\n changeTab(visibleTabs[i]?.id)}\r\n preTabContent={children}\r\n tabsRef={refMain as React.Ref}\r\n mb={mainTab?.padding}\r\n >\r\n {visibleTabs.map(t => {\r\n const tabErrors = allTabErrors([t], state, adminState);\r\n const name = typeof t.name === 'function'\r\n ? t.name(state, t.indexOverride) : t.name;\r\n return React.createElement(t.component!, {\r\n state, adminState, tabErrors, allErrors, indexOverride: t.indexOverride, ...t.componentProps\r\n }) : undefined} errors={tabErrors} icon={t.icon} />;\r\n })}\r\n \r\n\r\n {visibleSubTabs.length ?

    \r\n {mainTab.tabsHeader ? mainTab.tabsHeader(state) : null}\r\n {\r\n changeTab(visibleSubTabs[t]?.id);\r\n }} mt=\"0\" sticky={height} preTabContent={mainTab?.preTabContent}>\r\n {visibleSubTabs.map(t => {\r\n const tabErrors = t.validator ? t.validator(state, adminState!, t.indexOverride).filter(e => e) : [];\r\n const name = typeof t.name === 'function'\r\n ? t.name(state, t.indexOverride) : t.name;\r\n return React.createElement(t.component!, {\r\n state, adminState, tabErrors, allErrors, indexOverride: t.indexOverride, ...t.componentProps\r\n }) : undefined} errors={tabErrors} icon={t.icon} />;\r\n })}\r\n \r\n
    : null}\r\n\r\n
    \r\n \r\n {/* Render any errors for the selected tab */}\r\n {visibleErrors && visibleErrors.length > 0 ?
    setShowErrors(!showErrors)}>\r\n
    \r\n {visibleErrors.map((e, i) =>
    \r\n {e}\r\n
    )}\r\n\r\n {showErrors ?
    {errors.map((e, i) =>
    \r\n {e?.field ?? e?.msg}\r\n
    )}
    : null}\r\n
    \r\n
    : null}\r\n\r\n {hideNav || !navigation ? null :
    \r\n {mainTabIndex > 0 ? : null}\r\n\r\n
    \r\n\r\n {submitStatus != undefined ? : null}\r\n\r\n {isLast ? null : }\r\n
    }\r\n \r\n
    \r\n ;\r\n};\r\n","import * as React from 'react';\r\nimport { Icon, IconNames, TabError } from '..';\r\nimport { classNames } from '../../lib';\r\n\r\nexport interface TabProps {\r\n name: string | JSX.Element;\r\n icon?: IconNames;\r\n active?: boolean;\r\n render?: () => any;\r\n disabled?: boolean;\r\n hidden?: boolean;\r\n pathname?: string;\r\n title?: string;\r\n errors?: TabError[];\r\n onClick?: (e: any) => void;\r\n}\r\n\r\nexport const Tab: React.FC = ({ name, icon, active, onClick, disabled, title, hidden, errors }) => {\r\n const visibleErrors = [...new Set(errors?.map(e => e?.msg || 'Some required fields are missing.'))]\r\n .join('\\n');\r\n return hidden ? null :
  • !disabled && onClick && onClick(e)}>\r\n \r\n \r\n {icon ? : null}\r\n {icon && name ? : null}\r\n {name}\r\n {errors?.length ? : null}\r\n \r\n
  • ;\r\n};\r\n","import * as React from 'react';\nimport { objectKeysToLowerCase } from '../lib';\n\nconst regexReplace = /(\\s*[^<]*\\s*)<\\/b>/g;\n\ninterface VariableMap {\n [name: string]: any;\n}\n\ninterface Props {\n template: string;\n variables: VariableMap;\n asHtml?: boolean;\n style?: object;\n}\n\nexport const TemplateString: React.FC = function ({ template = '', variables = {}, asHtml, style }) {\n const vars = objectKeysToLowerCase(variables);\n\n let parts = template.split(/{{\\s*([a-zA-Z0-9\\.]*)\\s*}}/g).map((s, i) => {\n const prop = s.toLowerCase();\n const isVar = vars.hasOwnProperty(prop);\n const variableValue = isVar && (vars[prop] || '');\n const isObjectVar = isVar && variableValue && typeof (variableValue) === 'object';\n const highlight = isVar && !(isObjectVar && variableValue.hasOwnProperty('highlight') && !variableValue.highlight);\n\n const text = !isVar ? s :\n isObjectVar ? variableValue.text : variableValue;\n\n return !asHtml\n ? {text}\n : isVar && highlight ? '' + text + '' : text;\n });\n\n if(asHtml)\n parts = parts.join('').split(/(\\s*[^<]*\\s*<\\/b>)/g).map((s, i) => {\n const text = s.startsWith('')\n ? {s.replace(regexReplace, '$1')}\n : ;\n return {text};\n });\n\n return {parts};\n};\n","import * as React from 'react';\r\nimport styled from 'styled-components';\r\nimport { classNames, formatUtcDate } from 'web-shared/lib';\r\nimport { RelativeTime } from '.';\r\n\r\nconst Container = styled.div`\r\n\t& .relative { font-style: italic; color: #999; font-weight: normal !important; }\r\n \t& .time-line {\r\n\t\tposition: relative;\r\n\t\tmargin: 0 0 0px 0;\r\n\t\tpadding: 0;\r\n\t\tlist-style: none;\r\n\t\t&:before {\r\n\t\t\tcontent: '';\r\n\t\t\tposition: absolute;\r\n\t\t\ttop: 0;\r\n\t\t\tbottom: -10px;\r\n\t\t\twidth: 2px;\r\n\t\t\tbackground: var(--color-secondary-light-50);\r\n\t\t\tleft: 32px;\r\n\t\t\tborder-radius: 2px;\r\n\t\t}\r\n \t> .time-label {\r\n \t\t> span {\r\n\t\t\t\tfont-weight: 600;\r\n\t\t\t\tpadding: 5px 10px;\r\n\t\t\t\tdisplay: inline-block;\r\n\t\t\t\tbackground-color: #efefef;\r\n\t\t\t\tborder-radius: 2px;\r\n\t\t\t\tfont-size: 14px;\r\n\t \t}\r\n \t}\r\n\r\n \t> li {\r\n \t\tposition: relative;\r\n \t\tmargin-bottom: 10px;\r\n \t\tmargin-right: 0;\r\n\r\n \t\t> .time-line-item {\r\n\t\t\t\tdisplay: flex;\r\n\t\t\t\t-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);\r\n\t\t\t\tbox-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);\r\n\t\t\t\tborder-radius: 3px;\r\n\t\t\t\tbackground: #fff;\r\n\t\t\t\tcolor: #444;\r\n\t\t\t\tmargin-right: 15px;\r\n\t\t\t\tposition: relative;\r\n\t\t\t\tmargin-left: 50px;\r\n\t\t\t\ttransition: 0.25s;\r\n\r\n\t\t\t\t&.hover { background-color: #d3d8c9; }\r\n\r\n \t\t> .time-line-header, .annotation { font-size: 14px; padding: 6px 10px; }\r\n \t\t.annotation { font-size: 12px; color: #999; }\r\n\r\n \t\t.time-line-header {\r\n\t\t\t\t\tmargin: 0;\r\n\t\t\t\t\tcolor: #555;\r\n\t\t\t\t\tline-height: 1.1;\r\n\t\t\t\t\tflex: 1;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t> .fa {\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\tborder-radius: 50%;\r\n\t\t\t\twidth: 10px;\r\n\t\t\t\theight: 10px;\r\n\t\t\t\tcolor: #666;\r\n\t\t\t\tbackground: #ecf0f1;\r\n\t\t\t\tleft: 28px;\r\n\t\t\t\ttop: 9px;\r\n\t\t\t\tborder: 2px solid var(--color-secondary-light-50);\r\n\t\t\t\tdisplay: inline-block;\r\n\t\t\t\tbox-sizing: border-box;\r\n\t\t\t}\r\n\t\t}\r\n \t}\r\n`;\r\n\r\nfunction getFormattedData(items: api.ApplicationDetailEvent[], format = \"p\") {\r\n\tconst activities: Record = {};\r\n\titems.forEach(({ logTimeUtc, summary, userId, userIp }, index) => {\r\n\t\tconst dateStr = formatUtcDate(logTimeUtc, \"M/d/yyyy\");\r\n\t\tconst list = activities[dateStr] || [];\r\n\t\tlist.push({\r\n\t\t\ttime: formatUtcDate(logTimeUtc, format),\r\n\t\t\ttext: summary,\r\n\t\t\tkey: index,\r\n\t\t\tuserId,\r\n\t\t\tuserIp,\r\n\t\t});\r\n\t\tactivities[dateStr] = list;\r\n\t});\r\n\treturn activities;\r\n}\r\n\r\ntype ActivityItem = {\r\n\ttime: string;\r\n\ttext: string;\r\n\tkey: number;\r\n\tuserId?: number;\r\n\tuserIp?: string;\r\n}\r\ninterface Props {\r\n\titems: api.ApplicationDetailEvent[];\r\n\tformat?: string;\r\n\tusers?: api.UserDetails[];\r\n}\r\nexport const Timeline: React.FC = ({ items, format, users }) => {\r\n\tconst activities = getFormattedData(items, format);\r\n\tconst dates = Object.keys(activities);\r\n\tconst [hoverUserId, setHoverUserId] = React.useState(0)\r\n\tconst [hoverIp, setHoverIp] = React.useState('')\r\n\r\n\tfunction onHoverUser(userId: number, hovering: boolean) {\r\n\t\tsetHoverUserId(hovering ? userId : 0);\r\n\t}\r\n\tfunction onHoverIp(ip: string, hovering: boolean) {\r\n\t\tsetHoverIp(hovering ? ip : '');\r\n\t}\r\n\r\n\treturn \r\n\t\t{dates.map(d => {\r\n\t\t\treturn
      \r\n\t\t\t\t
    • \r\n\t\t\t\t\t{d} \r\n\t\t\t\t
    • \r\n\t\t\t\t{activities[d].map(({ time, text, key, userId, userIp }) => {\r\n\t\t\t\t\tconst user = users?.find(u => u.id === userId);\r\n\t\t\t\t\treturn ;\r\n\t\t\t\t})}\r\n\t\t\t
    \r\n\t\t})}\r\n\t
    ;\r\n}\r\n\r\ninterface ItemProps {\r\n\ttime: string;\r\n\ttext: string;\r\n\tuser?: string;\r\n\tuserId?: number;\r\n\tuserIp?: string;\r\n\temail?: string;\r\n\thover?: boolean;\r\n\tonHoverUser?: (userId: number, hovering: boolean) => void;\r\n\tonHoverIp?: (ip: string, hovering: boolean) => void;\r\n}\r\nconst TimlineItem: React.FC = ({ time, text, user, userId, userIp, hover, onHoverUser, onHoverIp, email }) => {\r\n\treturn
  • \r\n\t\t\r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\t {time}\r\n\t\t\t\r\n\t\t\t
    {text}
    \r\n\t\t\t{userId ? onHoverUser?.(userId, true)}\r\n\t\t\t\tonMouseOut={() => onHoverUser?.(userId, false)}\r\n\t\t\t> {user} : null}\r\n\t\t\t{userIp ? onHoverIp?.(userIp, true)}\r\n\t\t\t\tonMouseOut={() => onHoverIp?.(userIp, false)}\r\n\t\t\t> {userIp} : null}\r\n\t\t
    \r\n\t
  • ;\r\n}\r\n","import * as React from 'react';\n\ninterface Props {\n name: string;\n value: boolean;\n disabled?: boolean;\n trueText?: string;\n falseText?: string;\n showText?: boolean;\n onClick: (name: string, value: boolean) => void;\n}\nexport const Toggle: React.FC = (props) => {\n const { name, trueText = 'On', falseText = 'Off', disabled = false, showText = true, value } = props;\n\n function _onClick() {\n props.onClick(name, !value);\n }\n\n let text = !showText ? null : value ? trueText : falseText;\n\n return \n \n\n {text}\n ;\n};\n","import * as React from 'react';\nimport { IconNames } from './index';\n\ninterface Props {\n text: string;\n icon?: IconNames;\n}\nexport const Tooltip: React.FC = ({ text, icon = 'info-circle' }) => {\n return ;\n};\n","import * as React from 'react';\r\nimport styled from 'styled-components';\r\nimport Axios, { CancelTokenSource } from 'axios';\r\n\r\nimport { Button } from 'web-shared/components/button';\r\nimport { Modal, NonIdealState } from 'web-shared/components';\r\nimport { classNames, formatNumber, postForm } from 'web-shared/lib';\r\nimport { Spinner } from './spinners/Spinner';\r\n\r\nconst StyledDiv = styled.div`\r\n\t.header-text { font-size: 1.6em; }\r\n\t.instructions { font-size: 1.1em; font-style: italic; }\r\n\t.uploader { display: flex; flex-direction: row; margin-top: 1em; }\r\n\t.dropzone {\r\n\t\tpadding: 2em;\r\n\t\tdisplay: flex;\r\n\t\talign-items: flex-start;\r\n\t\tjustify-content: flex-start;\r\n\t\tbox-sizing: border-box;\r\n\t}\r\n\t.dropzone > div {\r\n\t\theight: 200px;\r\n\t\twidth: 200px;\r\n\t\tborder: 2px dashed rgb(187, 186, 186);\r\n\t\tborder-radius: 50%;\r\n\t\tdisplay: flex;\r\n\t\talign-items: center;\r\n\t\tjustify-content: center;\r\n\t\tflex-direction: column;\r\n\t\tfont-size: 16px;\r\n\t\tcursor: pointer;\r\n\t}\r\n\t.file-input { display: none; }\r\n\t.file-list { flex-grow: 1; }\r\n\t.actions {\r\n\t\tdisplay: flex;\r\n\t\tjustify-content: flex-end;\r\n\t\tmargin-top: 2em;\r\n\t}\r\n\t.actions .spacer { flex: 1; }\r\n\t.highlight { background-color: var(--color-primary-light-90); }\r\n\t.table { background: transparent; }\r\n\t.table td { font-size: 0.8em; background: transparent; }\r\n\t.table td:first-child { text-align: center; width: 40px; }\r\n\t&& .ar { text-align: right; }\r\n\t.uploader .fa-times { color: #c0504d; cursor: pointer; }\r\n\t.nodrop .dropzone > div { cursor: no-drop; }\r\n\t.error { color: #c0504d; }\r\n\t.fa-check { color: #3b4a1e; }\r\n\t&& .progress-row {\r\n\t\tposition: absolute;\r\n\t\tleft: 0;\r\n\t\ttop: 0;\r\n\t\tbottom: 0;\r\n\t\twidth: 0;\r\n\t\tbackground-color: #4F622838;\r\n\t\tpadding: 0;\r\n\t\tpointer-events: none;\r\n\t}\r\n`;\r\n\r\ninterface FileStatus {\r\n\tfile: File;\r\n\tpct: number;\r\n\tstatus?: 'uploading' | 'success' | 'failed' | 'aborted';\r\n\terrorMsg?: string;\r\n}\r\n\r\ninterface Props {\r\n\ttitle: string;\r\n\tdisabled?: boolean;\r\n\tuploadUrl: string;\r\n\tuploadFields?: { [name: string]: string | number };\r\n\tonClose?: () => void;\r\n\tonComplete?: (file: File, response: T) => void;\r\n\taccept?: string[];\r\n}\r\nexport const UploadModal = function UploadModal(props: Props) {\r\n\tconst { title, disabled = false, onClose, onComplete, uploadUrl, uploadFields = {}, accept } = props;\r\n\tconst [uploading, setUploading] = React.useState(false);\r\n\tconst [highlight, setHighlight] = React.useState(false);\r\n\tconst [files, setFiles] = React.useState([]);\r\n\tconst fileInputRef = React.useRef(undefined);\r\n\tconst cancelTokenRef = React.useRef(undefined);\r\n\r\n\tfunction openFileDialog() {\r\n\t\tif(disabled || uploading)\r\n\t\t\treturn;\r\n\t\tfileInputRef.current.click();\r\n\t}\r\n\tfunction onFilesAdded(e: React.ChangeEvent) {\r\n\t\tif(disabled || uploading || !e.target.files) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\taddFiles(e.target.files)\r\n\t}\r\n\tfunction onDragOver(e: React.DragEvent) {\r\n\t\te.preventDefault();\r\n\t\tif(disabled || uploading) {\r\n\t\t\te.dataTransfer.dropEffect = 'none';\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tsetHighlight(true);\r\n\t}\r\n\tfunction onDrop(e: React.DragEvent) {\r\n\t\te.preventDefault();\r\n\t\tif(disabled || uploading) {\r\n\t\t\te.dataTransfer.dropEffect = 'none';\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\taddFiles(e.dataTransfer.files);\r\n\t\tsetHighlight(false);\r\n\t}\r\n\tfunction addFiles(fileList: FileList) {\r\n\t\tconst newFiles = [...fileList].map(f => ({ file: f, pct: 0 }));\r\n\t\tsetFiles(f => [...f, ...newFiles]);\r\n\t}\r\n\r\n\tasync function beginUpload() {\r\n\t\tsetUploading(true);\r\n\r\n\t\tfor(let i = 0; i < files.length; i++) {\r\n\t\t\tconst fs = files[i];\r\n\t\t\tif(fs.status === 'success')\r\n\t\t\t\tcontinue;\r\n\r\n\t\t\tfs.errorMsg = undefined;\r\n\t\t\tfs.status = undefined;\r\n\t\t\tfs.pct = 0;\r\n\t\t}\r\n\t\tsetFiles([...files]);\r\n\r\n\t\tfor(let i = 0; i < files.length; i++) {\r\n\t\t\tconst fs = files[i];\r\n\t\t\tif(fs.status === 'success')\r\n\t\t\t\tcontinue;\r\n\r\n\t\t\tconst file = fs.file;\r\n\r\n\t\t\t// Add the file to the form data\r\n\t\t\tconst formData = new FormData();\r\n\t\t\tformData.append(\"file\", file, file.name);\r\n\r\n\t\t\t// Add additional fields to the form data\r\n\t\t\tif(uploadFields) {\r\n\t\t\t\tObject.keys(uploadFields).map(k => {\r\n\t\t\t\t\tformData.append(k, String(uploadFields[k]));\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tfs.status = 'uploading';\r\n\t\t\tsetFiles([...files]);\r\n\r\n\t\t\t// Upload the file\r\n\t\t\tcancelTokenRef.current = Axios.CancelToken.source();\r\n\t\t\tconst response = await postForm(uploadUrl, formData,\r\n\t\t\t\tcancelTokenRef.current.token, e => {\r\n\t\t\t\t\tconst pct = Math.round(e.loaded * 1.0 / e.total * 10000) / 100;\r\n\t\t\t\t\tfs.pct = pct;\r\n\t\t\t\t\tsetFiles([...files]);\r\n\t\t\t\t}\r\n\t\t\t);\r\n\r\n\t\t\tif(cancelTokenRef.current.token.reason?.message) {\r\n\t\t\t\tfs.status = 'aborted';\r\n\t\t\t\tfs.errorMsg = 'Aborted';\r\n\t\t\t\tfs.pct = 0;\r\n\t\t\t\tsetFiles([...files]);\r\n\t\t\t\tbreak;\r\n\t\t\t} else {\r\n\t\t\t\tif(response.isError) {\r\n\t\t\t\t\tfs.status = 'failed';\r\n\t\t\t\t\tfs.errorMsg = response.error;\r\n\t\t\t\t\tfs.pct = 0;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tfs.status = 'success';\r\n\r\n\t\t\t\t\t// Tell the component we successfully uploaded a file\r\n\t\t\t\t\tonComplete && onComplete(file, response.payload as T);\r\n\t\t\t\t}\r\n\t\t\t\tsetFiles([...files]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tsetUploading(false);\r\n\t}\r\n\r\n\r\n\tconst hasBegun = files.some(f => f.status != undefined);\r\n\tconst isComplete = hasBegun && files.every(f => f.status === 'success');\r\n\treturn { }} okText=\"\" fullHeight={false}>\r\n\t\t\r\n\t\t\t
    {title}
    \r\n\t\t\t
    \r\n\t\t\t\tClick on the upload button below or drag your files below to get started. Once you have selected all the files you wish to upload, click the button below to send.\r\n\t\t\t
    \r\n\t\t\t
    setHighlight(false)}\r\n\t\t\t\tonDrop={onDrop}\r\n\t\t\t\t>\r\n\t\t\t\t
    openFileDialog()}\r\n\t\t\t\t>\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t
    Click here to
    select file(s).
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t{files.length\r\n\t\t\t\t\t\t? \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{hasBegun ? : null}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{files.map((f, i) => \r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{hasBegun ? : null}\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
    NameSizeStatus
    \r\n\t\t\t\t\t\t\t\t\t\t{f.status === 'success' ? \r\n\t\t\t\t\t\t\t\t\t\t\t: !uploading ? setFiles(files.filter((_f, index) => i !== index))} />\r\n\t\t\t\t\t\t\t\t\t\t\t\t: f.status === 'uploading' ? \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t: f.status === 'failed' ? \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: f.status === 'aborted' ? \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: null}\r\n\t\t\t\t\t\t\t\t\t{f.file.name}{formatNumber(f.file.size)}\r\n\t\t\t\t\t\t\t\t\t\t{f.errorMsg ?
    {f.errorMsg}
    :
    }\r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t: }\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\r\n\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t{uploading || isComplete ? null : }\r\n\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t{isComplete ? \r\n\t\t\t\t\t\t: uploading ? \r\n\t\t\t\t\t\t: }\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t
    \r\n\t
    ;\r\n};\r\n","import * as React from 'react';\n\ninterface Props {\n addonLeft: React.ReactNode;\n}\nexport const WithAddon: React.FC = function ({ addonLeft, children }) {\n return
    \n
    \n
    \n \n
    \n {children}\n
    \n
    \n
    \n
    ;\n};\n","import axios, { CancelToken, AxiosResponse } from 'axios';\r\nimport { serializeFormData, getToken } from '../lib';\r\n\r\nexport type Failable = {\r\n isError: true;\r\n error: string;\r\n payload: TError;\r\n} | {\r\n isError: false;\r\n payload: TSuccess;\r\n};\r\nexport type UploadProgressFn = (e: ProgressEvent) => void;\r\n\r\nexport function postForm(url: string, body: {}, cancelToken?: CancelToken, onUploadProgress?: UploadProgressFn) {\r\n return ajax(url, false, body, { method: 'POST', cancelToken, onUploadProgress });\r\n}\r\nexport function postJson(url: string, body?: {}, cancelToken?: CancelToken, onUploadProgress?: UploadProgressFn) {\r\n return ajax(url, true, body, { method: 'POST', cancelToken, onUploadProgress });\r\n}\r\nexport function get(url: string, cancelToken?: CancelToken, init: IAxiosOptions = {}) {\r\n return ajax(url, false, null, { method: 'GET', cancelToken, ...init });\r\n}\r\n\r\ninterface IAxiosOptions {\r\n headers?: HeadersInit;\r\n method?: 'GET' | 'POST' | 'PUT' | 'DELETE';\r\n cancelToken?: CancelToken;\r\n onUploadProgress?: UploadProgressFn;\r\n skipAuthorization?: boolean;\r\n}\r\nexport async function ajax(url: string, json: boolean, body?: {}, init: IAxiosOptions = {}): Promise> {\r\n const token = getToken();\r\n const method = init.method || 'GET';\r\n\r\n const isFormData = body && 'append' in body;\r\n const headers: HeadersInit = {\r\n ...init.headers,\r\n 'Content-Type': isFormData ? 'multipart/form-data' : json ? 'application/json; charset=UTF-8' : 'application/x-www-form-urlencoded; charset=UTF-8',\r\n Authorization: init.skipAuthorization ? '' : token ? `Bearer ${token}` : '',\r\n };\r\n\r\n // Allow client ID to be specified for admin requests\r\n try {\r\n const currentClientId = 'localStorage' in window ? Number(localStorage.currentClientId) : undefined;\r\n if(!isNaN(currentClientId)) {\r\n headers['clientId'] = currentClientId.toString();\r\n }\r\n } catch { }\r\n\r\n let response: AxiosResponse;\r\n try {\r\n response = await axios({\r\n url,\r\n method,\r\n data: method === 'GET' || !body ? null :\r\n json ? body : isFormData ? body : serializeFormData(body),\r\n cancelToken: init.cancelToken,\r\n headers,\r\n onUploadProgress: init.onUploadProgress,\r\n });\r\n } catch(ex) {\r\n // console.dir(ex);\r\n return {\r\n isError: true,\r\n error: ex?.response?.statusText || 'Unable to contact the server.',\r\n payload: {} as TError,\r\n };\r\n }\r\n\r\n // Try to decode the response as a typed object\r\n let payload: TSuccess | undefined;\r\n try {\r\n payload = response.data;\r\n } catch { }\r\n\r\n const payloadError = !payload ? undefined :\r\n (payload as any).error || (payload as any).errorMessage || (payload as any).error_message;\r\n\r\n const isError = response.status !== 200\r\n || !!payloadError\r\n || (payload && (payload as any).isError)\r\n || (payload && (payload as any).IsError);\r\n\r\n return isError\r\n ? { isError, error: payloadError || response.statusText || (response as any).message, payload: (payload || {}) as TError }\r\n : { isError, payload: (payload || {}) as TSuccess };\r\n}\r\n","export type LoginData = {\r\n isError: false;\r\n access_token: string;\r\n token_type: string;\r\n '.issued': string;\r\n '.expires': string;\r\n userName: string;\r\n name: string;\r\n id: string;\r\n Admin?: string;\r\n GlobalAdmin?: string;\r\n ClientId: string;\r\n LenderAssisted?: string;\r\n ViewDemographics?: string;\r\n};\r\n\r\nexport interface LoginCredentials {\r\n email: string;\r\n password: string;\r\n remember: boolean;\r\n clientId?: number;\r\n}\r\n\r\nconst loginDataKey = 'loginDataKey';\r\nconst branchLoginDataKey = 'branchLoginDataKey';\r\n\r\nif(typeof window === 'undefined') {\r\n (global as any).window = {};\r\n}\r\n\r\nexport function getBranchLoginData(): LoginData {\r\n try {\r\n return JSON.parse(getTokenStorage().getItem(branchLoginDataKey) || '{}');\r\n } catch(e) {\r\n return JSON.parse('{}');\r\n }\r\n}\r\nexport function setBranchLoginData(data: LoginData) {\r\n let storage: Storage;\r\n try {\r\n storage = localStorage.getItem('rememberLogin') === 'true' ? localStorage : sessionStorage;\r\n } catch(err) {\r\n storage = getFakeStorage();\r\n }\r\n\r\n storage.setItem(branchLoginDataKey, JSON.stringify(data));\r\n}\r\nexport function clearBranchLoginData() {\r\n try {\r\n const fakeStorage = getFakeStorage();\r\n\r\n // Clear branch login\r\n fakeStorage.removeItem(branchLoginDataKey);\r\n sessionStorage.removeItem(branchLoginDataKey);\r\n localStorage.removeItem(branchLoginDataKey);\r\n } catch(err) { }\r\n}\r\nexport function getBranchUserToken(branchLoginData?: LoginData) {\r\n // Get the token and expiration\r\n const data = branchLoginData || getBranchLoginData();\r\n\r\n const tokenExpirationString = data['.expires'];\r\n const tokenExpiration = tokenExpirationString ? new Date(tokenExpirationString) : new Date();\r\n\r\n if(data.access_token == null || tokenExpiration <= new Date()) {\r\n return null;\r\n }\r\n\r\n return data.access_token;\r\n}\r\n\r\n/** Get the login info found in localStorage or sessionStorage */\r\nexport function getLoginData(): LoginData {\r\n try {\r\n return JSON.parse(getTokenStorage().getItem(loginDataKey) || '{}');\r\n } catch(e) {\r\n return JSON.parse('{}');\r\n }\r\n}\r\n\r\n/** Store login info in localStorage or sessionStorage as well as a cookie */\r\nexport function setLoginData(data: LoginData, remember: boolean) {\r\n // Store in a cookie\r\n document.cookie = `api_key=${data.access_token}; expires=${data['.expires']}; path=/`;\r\n\r\n // Store in storage\r\n let storage: Storage;\r\n try {\r\n storage = remember ? localStorage : sessionStorage;\r\n } catch(err) {\r\n storage = getFakeStorage();\r\n }\r\n\r\n storage.setItem(loginDataKey, JSON.stringify(data));\r\n localStorage.setItem('rememberLogin', remember.toString());\r\n}\r\n\r\n/** Clear all authentication data from localStorage and sessionStorage */\r\nexport function clearLoginData() {\r\n // Store in a cookie\r\n document.cookie = `api_key=; expires=; path=/`;\r\n\r\n try {\r\n const fakeStorage = getFakeStorage();\r\n\r\n // Clear regular login\r\n fakeStorage.removeItem(loginDataKey);\r\n sessionStorage.removeItem(loginDataKey);\r\n localStorage.removeItem(loginDataKey);\r\n } catch(err) { }\r\n}\r\n\r\n/** Extract the access token from stored login data */\r\nexport function getToken(loginData?: LoginData, ignoreExpires?: boolean) {\r\n // Get the token and expiration\r\n const data = loginData || getLoginData();\r\n\r\n const tokenExpirationString = data['.expires'];\r\n const tokenExpiration = tokenExpirationString ? new Date(tokenExpirationString) : new Date();\r\n\r\n if(data.access_token == null || (!ignoreExpires && tokenExpiration <= new Date())) {\r\n return null;\r\n }\r\n\r\n return data.access_token;\r\n}\r\n\r\nexport function getFakeStorage(): Storage {\r\n if(!(window as any).fakeStorage) {\r\n (window as any).fakeStorage = {} as any;\r\n (window as any).fakeStorage.setItem = (key: string, value: string) => (window as any).fakeStorage[key] = value;\r\n (window as any).fakeStorage.getItem = (key: string) => (window as any).fakeStorage[key];\r\n (window as any).fakeStorage.removeItem = (key: string) => delete (window as any).fakeStorage[key];\r\n (window as any).fakeStorage.clear = () => { };\r\n (window as any).fakeStorage.key = (_index: number) => '';\r\n }\r\n return (window as any).fakeStorage;\r\n}\r\nexport function getLocalStorage(): Storage {\r\n try {\r\n return localStorage;\r\n } catch(err) {\r\n return getFakeStorage();\r\n }\r\n}\r\nexport function getTokenStorage(): Storage {\r\n try {\r\n return sessionStorage.getItem(loginDataKey) ? sessionStorage : localStorage;\r\n } catch(err) {\r\n return getFakeStorage();\r\n }\r\n}\r\n","export function base64ToBlob(base64: string, mimetype: string = '', slicesize: number = 512) {\n if(!window.atob || !Uint8Array) {\n // The current browser doesn't have the atob function. Cannot continue\n return null;\n }\n\n var bytechars = atob(base64);\n var bytearrays = [];\n\n for(var offset = 0; offset < bytechars.length; offset += slicesize) {\n var slice = bytechars.slice(offset, offset + slicesize);\n var bytenums = new Array(slice.length);\n for(var i = 0; i < slice.length; i++) {\n bytenums[i] = slice.charCodeAt(i);\n }\n var bytearray = new Uint8Array(bytenums);\n bytearrays[bytearrays.length] = bytearray;\n }\n\n return new Blob(bytearrays, { type: mimetype });\n}\n","export function chunk(arr: T[], len: number) {\n const chunks = [];\n const n = arr.length;\n let i = 0;\n\n while(i < n) {\n // tslint:disable-next-line: no-array-mutation\n chunks.push(arr.slice(i, i += len));\n }\n\n return chunks;\n}\n","export function clamp(n: number, min: number, max: number) {\n\treturn Math.min(Math.max(n, min), max);\n}\n","type ClassValue = string | number | ClassDictionary | ClassArray | undefined | null | false;\n\ninterface ClassDictionary {\n [id: string]: boolean | undefined | null;\n}\n\ninterface ClassArray extends Array { }\n\nconst hasOwn = {}.hasOwnProperty;\n\nexport function classNames(...args: ClassValue[]) {\n const classes: string[] = [];\n\n for(let i = 0; i < args.length; i++) {\n const arg = args[i];\n if(!arg) continue;\n\n if(typeof arg === 'string' || typeof arg === 'number') {\n // tslint:disable-next-line: no-array-mutation\n classes.push(String(arg));\n } else if(Array.isArray(arg) && arg.length) {\n const inner = classNames.apply(null, arg as []);\n if(inner) {\n // tslint:disable-next-line: no-array-mutation\n classes.push(inner);\n }\n } else if(typeof arg === 'object') {\n for(const key in arg) {\n if(hasOwn.call(arg, key) && (arg as ClassDictionary)[key]) {\n // tslint:disable-next-line: no-array-mutation\n classes.push(key);\n }\n }\n }\n }\n\n return classes.join(' ');\n}\n","import { shadeColor } from \"../\";\n\nexport function hexToCssVars(name: string, h: string) {\n return `\n --color-${name}: ${h};\n --color-${name}-light-25: ${shadeColor(20, h)};\n --color-${name}-light-50: ${shadeColor(50, h)};\n --color-${name}-light-75: ${shadeColor(75, h)};\n --color-${name}-light-90: ${shadeColor(90, h)};\n --color-${name}-dark-25: ${shadeColor(-25, h)};\n --color-${name}-dark-50: ${shadeColor(-50, h)};\n --color-${name}-dark-75: ${shadeColor(-75, h)};\n --color-${name}-dark-90: ${shadeColor(-90, h)};\n `;\n}\n","export type RGB = { r: number, g: number, b: number };\n\nexport function hexToRgb(h: string): RGB {\n let r = 0, g = 0, b = 0;\n\n // 3 digits\n if(h.length === 4) {\n r = +('0x' + h[1] + h[1]);\n g = +('0x' + h[2] + h[2]);\n b = +('0x' + h[3] + h[3]);\n\n // 6 digits\n } else if(h.length === 7) {\n r = +('0x' + h[1] + h[2]);\n g = +('0x' + h[3] + h[4]);\n b = +('0x' + h[5] + h[6]);\n }\n\n return { r, g, b };\n}\n","import { isDevelopment } from \"./isDevelopment\";\n\nexport function dbg(label: string, key?: string, color?: string, ...details: any[]) {\n if(isDevelopment) {\n console.groupCollapsed(`%c${label}: %c[${key}]`, `color: ${color};`, 'color: inherit;');\n (details || []).forEach(d => console.error(d));\n console.groupEnd();\n }\n}\n","export function deepCompare(o1: any, o2: any) {\n let i, l, leftChain: any[], rightChain: any[];\n\n function compare2Objects(x: any, y: any) {\n let p;\n\n // remember that NaN === NaN returns false\n // and isNaN(undefined) returns true\n if(isNaN(x) && isNaN(y) && typeof x === 'number' && typeof y === 'number') {\n return true;\n }\n\n // Compare primitives and functions.\n // Check if both arguments link to the same object.\n // Especially useful on the step where we compare prototypes\n if(x === y) {\n return true;\n }\n\n // Works in case when functions are created in constructor.\n // Comparing dates is a common scenario. Another built-ins?\n // We can even handle functions passed across iframes\n if((typeof x === 'function' && typeof y === 'function') ||\n (x instanceof Date && y instanceof Date) ||\n (x instanceof RegExp && y instanceof RegExp) ||\n (x instanceof String && y instanceof String) ||\n (x instanceof Number && y instanceof Number)) {\n return x.toString() === y.toString();\n }\n\n // Quick checking of one object being a subset of another.\n // todo: cache the structure of arguments[0] for performance\n for(p in y) {\n if(y.hasOwnProperty(p) !== x.hasOwnProperty(p)) {\n return false;\n }\n else if(typeof y[p] !== typeof x[p]) {\n return false;\n }\n }\n\n for(p in x) {\n if(y.hasOwnProperty(p) !== x.hasOwnProperty(p)) {\n return false;\n }\n else if(typeof y[p] !== typeof x[p]) {\n return false;\n }\n\n switch(typeof (x[p])) {\n case 'object':\n leftChain.push(x);\n rightChain.push(y);\n\n if(!compare2Objects(x[p], y[p])) {\n return false;\n }\n\n leftChain.pop();\n rightChain.pop();\n break;\n\n default:\n if(x[p] !== y[p]) {\n return false;\n }\n break;\n }\n }\n\n return true;\n }\n\n leftChain = []; //Todo: this can be cached\n rightChain = [];\n\n return !compare2Objects(o1, o2);\n}","import { parse, parseISO, format, formatDistance, differenceInDays, startOfYear } from 'date-fns';\r\nimport numeral from 'numeral';\r\nimport moize from 'moize';\r\n\r\nfunction asLocalDate(dateString: string | undefined) {\r\n const d = toDate(dateString);\r\n const ret = d?.getUTCHours() === 0\r\n ? new Date(d.getUTCFullYear(), d.getUTCMonth(), d.getUTCDate()) : d;\r\n return ret;\r\n}\r\nexport function toDate(d: string | Date | undefined) {\r\n if(typeof d !== 'string')\r\n return d;\r\n return d.indexOf('-') !== -1 ? parseISO(d) : parse(d, 'M/d/yyyy', new Date());\r\n}\r\nfunction formatBase(d: Date | string | undefined, fmt: string, parser?: (dateString: string | undefined) => Date | undefined) {\r\n if(d == undefined)\r\n return '';\r\n try {\r\n const date = typeof d !== 'string' ? d :\r\n parser ? parser(d) : new Date(d);\r\n return date == undefined ? '' : format(date, fmt);\r\n } catch(e) {\r\n return d.toString();\r\n }\r\n}\r\nexport function formatUtcDate(d: Date | string | undefined, fmt: string = 'MM/dd/yyyy') {\r\n return formatBase(d, fmt);\r\n}\r\nexport function formatUtcDateTime(d: Date | string | undefined, fmt: string = 'MM/dd/yyyy hh:mm:ss a') {\r\n return formatBase(d, fmt);\r\n}\r\nexport function formatLocalDate(d: Date | string | undefined, fmt: string = 'MM/dd/yyyy') {\r\n return formatBase(d, fmt, asLocalDate);\r\n}\r\nexport function formatRelativeDateTime(d: Date | string, from: Date | string = new Date(), addSuffix: boolean = true) {\r\n const d1 = toDate(d);\r\n const d2 = toDate(from);\r\n if(d1 == undefined || d2 == undefined)\r\n return '';\r\n return formatDistance(d1, d2, { addSuffix });\r\n}\r\nexport function isDateValid(d: string | Date | undefined) {\r\n if(typeof (d) === 'string') {\r\n const parts = d.split('/');\r\n if(parts.length == 3 && parts[2].length !== 4)\r\n return false;\r\n }\r\n if(d == undefined)\r\n return false;\r\n return toDate(d || '')!.toString() !== 'Invalid Date';\r\n}\r\nexport function formatYesNo(v: boolean | undefined | null): '' | 'Yes' | 'No' {\r\n return v === true ? 'Yes' : v === false ? 'No' : '';\r\n}\r\n\r\nexport const daysElapsedInYear = moize((d: string | Date | undefined) => {\r\n const date = toDate(d);\r\n if(date == undefined)\r\n return 0;\r\n return differenceInDays(date, startOfYear(date));\r\n});\r\n\r\n// Polyfill from MDN\r\nexport function repeatString(s: string, repeatCount: number) {\r\n if(s == null) {\r\n throw new TypeError('can\\'t convert ' + s + ' to object');\r\n }\r\n if(repeatCount === 0)\r\n return '';\r\n\r\n let str = '' + s;\r\n\r\n // To convert string to integer.\r\n let count = +repeatCount;\r\n if(count !== count) {\r\n count = 0;\r\n }\r\n if(count < 0) {\r\n throw new RangeError('repeat count must be non-negative');\r\n }\r\n if(count === Infinity) {\r\n throw new RangeError('repeat count must be less than infinity');\r\n }\r\n count = Math.floor(count);\r\n if(str.length === 0 || count === 0) {\r\n return '';\r\n }\r\n\r\n // Ensuring count is a 31-bit integer allows us to heavily optimize the\r\n // main part. But anyway, most current (August 2014) browsers can't handle\r\n // strings 1 << 28 chars or longer, so:\r\n if(str.length * count >= 1 << 28) {\r\n throw new RangeError('repeat count must not overflow maximum string size');\r\n }\r\n const maxCount = str.length * count;\r\n count = Math.floor(Math.log(count) / Math.log(2));\r\n while(count) {\r\n str += str;\r\n count--;\r\n }\r\n str += str.substring(0, maxCount - str.length);\r\n return str;\r\n}\r\n\r\n/**\r\n * Format a number as money\r\n * @param {number} value The value to format.\r\n * @param {boolean} decimals Round the value to the specified decimal place.\r\n * @param {boolean} hideZeroDecimal Don't show the decimal separator and cent value when 0.\r\n */\r\nexport function formatMoney(value: number | undefined, decimals: number = 2, hideZeroDecimal?: boolean) {\r\n return '$' + formatNumber(value, decimals, hideZeroDecimal);\r\n}\r\n\r\nexport function formatNumberSuffix(value: number | undefined, decimals: number = 2, hideZeroDecimal?: boolean) {\r\n return formatNumber(value, decimals, hideZeroDecimal, true);\r\n}\r\n\r\n/**\r\n * Format a number\r\n * @param {number} value The value to format.\r\n * @param {boolean} decimals Round the value to the specified decimal place.\r\n * @param {boolean} hideZeroDecimal Don't show the decimal separator and cent value when 0.\r\n */\r\nexport function formatNumber(value: number | string | undefined, decimals: number = 2, hideZeroDecimal: boolean = true, addSuffix?: boolean) {\r\n if(value === undefined)\r\n return '';\r\n const num = typeof (value) === 'number' ? value :\r\n Number(String(value).replace(/[^\\d\\-\\.]/g, ''));\r\n return numeral(num).format('0,0' + getDecimalFormat(decimals, hideZeroDecimal) + (addSuffix ? 'o' : ''));\r\n}\r\nfunction getDecimalFormat(decimals: number, hideZeroDecimal?: boolean) {\r\n if(decimals <= 0) return '';\r\n const decimalFormat = `${repeatString('0', decimals)}`;\r\n return hideZeroDecimal ? `.[${decimalFormat}]` : `.${decimalFormat}`;\r\n}\r\n","import { auth } from 'web-shared/store';\r\nimport { isDevelopment } from '.';\r\n\r\ninterface Location {\r\n\tpathname: string;\r\n\tsearch: string;\r\n\tstate: any;\r\n\thash: string;\r\n}\r\n\r\nlet currentClientId: number = 0;\r\nlet googleAnalyticsCodes: string[] = [];\r\nconst enabled = () => googleAnalyticsCodes.length > 0 // & !isDevelopment;\r\nexport function initializeGa(clientId: number, gaCode: string) {\r\n\tcurrentClientId = clientId;\r\n\tgoogleAnalyticsCodes = gaCode.split(',').map(c => c?.trim() || '').filter(c => c);\r\n}\r\n\r\nfunction gaConfig() {\r\n\tif(!enabled() || !window.gtag)\r\n\t\treturn;\r\n\r\n\tconst linker = currentClientId === 1032 ? { linker: { domains: ['ucbi.com'] } } : {};\r\n\tconst user_id = auth.getStateSnapshot().userName;\r\n\r\n\tgoogleAnalyticsCodes.forEach(gaCode => {\r\n\t\twindow.gtag('config', gaCode, {\r\n\t\t\tsend_page_view: false,\r\n\t\t\t...linker,\r\n\t\t});\r\n\t});\r\n\twindow.gtag('set', { user_id });\r\n}\r\n\r\nexport function gaPageView(location: Location) {\r\n\tif(!enabled() || !window.gtag)\r\n\t\treturn;\r\n\r\n\tgaConfig();\r\n\twindow.gtag('event', 'page_view', {\r\n\t\tpage_path: location.pathname + location.search + location.hash,\r\n\t\tpage_search: location.search,\r\n\t\tpage_hash: location.hash,\r\n\t});\r\n}\r\nexport function gaEvent(category: string, action: string) {\r\n\tif(!enabled() || !window.gtag)\r\n\t\treturn;\r\n\r\n\tgaConfig();\r\n\twindow.gtag('event', action, { category });\r\n}\r\nexport function gaUserCreate() {\r\n\tif(!enabled() || !window.gtag)\r\n\t\treturn;\r\n\r\n\tgaConfig();\r\n\twindow.gtag('event', 'sign_up', { });\r\n}\r\nexport function gaLogin() {\r\n\tif(!enabled() || !window.gtag)\r\n\t\treturn;\r\n\r\n\twindow.gtag('event', 'login', {});\r\n}\r\n","function s4() {\n return Math.floor((1 + Math.random()) * 0x10000)\n .toString(16)\n .substring(1)\n}\n\nexport function guid() {\n return s4() + s4() + '-' + s4() + '-' + s4() + '-' + s4() + '-' + s4() + s4() + s4();\n}\n","import * as React from 'react';\r\nimport { Bugsnag } from \"@bugsnag/js/types\";\r\nimport bugsnag from '@bugsnag/js';\r\nimport bugsnagReact from '@bugsnag/plugin-react';\r\n\r\nexport const envConfig = getConfigFromElement('env_config') as api.EnvConfig;\r\n\r\nlet bugsnagClient: Bugsnag.Client;\r\nexport function initializeBugsnag() {\r\n if(bugsnagClient)\r\n return bugsnagClient;\r\n\r\n // Configure Bugsnag error reporting\r\n bugsnagClient = bugsnag({\r\n apiKey: envConfig?.apiKey || 'test',\r\n releaseStage: envConfig?.env || 'local',\r\n });\r\n\r\n bugsnagClient.use(bugsnagReact, React);\r\n return bugsnagClient;\r\n}\r\n\r\nexport function getConfigFromElement(elementId: string) {\r\n // Read the JSON-formatted data from the DOM.\r\n const element = document.getElementById(elementId);\r\n const json = element?.textContent || element?.innerText; // fallback for IE ≤ 8\r\n\r\n if(element)\r\n element.innerHTML = '';\r\n\r\n if(!json)\r\n return {};\r\n\r\n return JSON.parse(json);\r\n}\r\n","export const isDevelopment = process.env.NODE_ENV === 'development';\n","const poBoxRegex = /P\\.?O\\.?\\s?Box/i;\n\nexport function isPoBox(address: string | undefined): boolean {\n return address && address.match(poBoxRegex) !== null;\n}\n","export function isTin(tinString: string | undefined): boolean {\n const tin = tinString || '';\n return tin.match(/^\\d\\d\\-\\d\\d\\d\\d\\d\\d\\d$/g) !== null || tin.match(/^\\d\\d\\d\\-\\d\\d\\-\\d\\d\\d\\d$/g) !== null;\n}\n","export function objectKeysToLowerCase(input: Object) {\n if(typeof input !== 'object') return input;\n if(Array.isArray(input)) return input.map(objectKeysToLowerCase);\n return Object.keys(input).reduce(function (newObj, key) {\n newObj[key.toLowerCase()] = input[key];\n return newObj;\n }, {});\n}\n","import ReactDOMServer from 'react-dom/server';\r\nimport { ServerStyleSheet } from \"styled-components\";\r\n\r\nexport function renderComponent(component: React.ReactElement) {\r\n\tconst sheet = new ServerStyleSheet();\r\n\tconst body = ReactDOMServer.renderToStaticMarkup(sheet.collectStyles(component));\r\n\tconst styleTags = sheet.getStyleTags();\r\n\tconst styles = [...document.getElementsByTagName(\"style\")].map(s => s.innerHTML ? s.outerHTML : null).filter(s => s).join(' ') + styleTags;\r\n\treturn '' +\r\n\t\t'' + styles +\r\n\t\t'' + body + ' ';\r\n}\r\n\r\nexport function printHtml(html: string) {\r\n\tconst iframe = document.createElement('iframe');\r\n\tiframe.style.width = '0';\r\n\tiframe.style.height = '0';\r\n\tiframe.style.position = 'absolute';\r\n\tdocument.body.appendChild(iframe);\r\n\tconst doc = iframe?.contentDocument || iframe?.contentWindow?.document;\r\n\tif(doc) {\r\n\t\tdoc.open();\r\n\t\tdoc.write(html);\r\n\t\tdoc.close();\r\n\r\n\t\tiframe.contentWindow?.focus();\r\n\t\tiframe.contentWindow?.print();\r\n\t}\r\n\tdocument.body.removeChild(iframe);\r\n}\r\n\r\nexport function printComponent(component: React.ReactElement) {\r\n\tconst html = renderComponent(component);\r\n\tprintHtml(html);\r\n}\r\n","import * as React from 'react';\r\nimport equals from 'fast-deep-equal';\r\nimport { produce, Draft, Patch } from 'immer';\r\nimport moize from 'moize';\r\n\r\nimport { BehaviorSubject, Observable, Subscription } from 'rxjs';\r\nimport { map, distinctUntilChanged } from 'rxjs/operators';\r\nimport { formatNumber, dbg, isTin, Failable } from 'web-shared/lib';\r\nimport { isDevelopment } from './isDevelopment';\r\nimport { isPoBox } from './isPoBox';\r\nimport { isDateValid } from './format';\r\nimport { TabError } from 'web-shared/components';\r\n\r\nconst withDevTools = isDevelopment\r\n && typeof window !== 'undefined'\r\n && (window as any).__REDUX_DEVTOOLS_EXTENSION__;\r\n\r\nexport type ApiState = { working?: boolean; error?: string };\r\nexport type ActionState = { ui: { actions: { [action: string]: ApiState } } };\r\nexport type ActionFn = (s: RootState) => Promise>;\r\nexport type PatchFilter = (patche: Patch, index: number, patches: Patch[]) => boolean;\r\n\r\nexport class RxStore {\r\n private stateSubject: BehaviorSubject;\r\n private computed: ComputedState | undefined;\r\n private devTools: any;\r\n private patchFilter: PatchFilter | undefined;\r\n public patches: Patch[];\r\n\r\n // Initialize the store with the initial state value.\r\n constructor(initialState: RootState, name: string, computed?: ComputedState, patchFilter?: PatchFilter) {\r\n this.stateSubject = new BehaviorSubject(initialState);\r\n this.computed = computed;\r\n this.patchFilter = patchFilter;\r\n this.patches = [];\r\n if(withDevTools) {\r\n this.devTools = withDevTools.connect({ name });\r\n this.devTools.init(initialState);\r\n this.devTools.subscribe((m: any) => {\r\n if(m.type === 'DISPATCH') {\r\n switch(m.payload?.type) {\r\n case 'JUMP_TO_STATE':\r\n case 'JUMP_TO_ACTION':\r\n this.stateSubject.next(JSON.parse(m.state));\r\n break;\r\n default:\r\n //console.log('DEVTOOLS:', m);\r\n break;\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n // Get the current state as a stream\r\n public getState(): Observable {\r\n return this.stateSubject.pipe(distinctUntilChanged());\r\n }\r\n\r\n // Get the current state as a snapshot\r\n public getStateSnapshot(): RootState {\r\n return this.stateSubject.getValue();\r\n }\r\n\r\n public update(fn: (s: Draft) => void, action?: string) {\r\n const nextState = produce(this.getStateSnapshot(), fn\r\n , this.patchFilter ? _patches => {\r\n // const filteredPatches = patches.filter(this.patchFilter);\r\n // if(filteredPatches.length)\r\n // console.log(filteredPatches);\r\n } : undefined\r\n );\r\n if(isDevelopment && this.devTools)\r\n this.devTools.send(action || 'unknown action', nextState);\r\n this.stateSubject.next(nextState);\r\n }\r\n\r\n public async action(actionName: keyof RootState['ui']['actions'], action: ActionFn): Promise> {\r\n const actionState = this.getStateSnapshot().ui.actions[actionName as any];\r\n if(actionState.working)\r\n return { isError: true, error: 'Action is in progress.' } as any;\r\n\r\n // Set action state to working\r\n this.update(s => {\r\n const actionState = s.ui.actions[actionName as any];\r\n actionState.error = '';\r\n actionState.working = true;\r\n }, `${actionName.toString()}_begin`);\r\n\r\n // Execute action\r\n const response = await action(this.getStateSnapshot());\r\n\r\n // Handle action state from response\r\n this.update(s => {\r\n const actionState = (s.ui.actions as any)[actionName];\r\n actionState.error = response.isError ? response.error : undefined;\r\n actionState.working = false;\r\n }, actionName.toString() + (response.isError ? '_error' : '_success'));\r\n\r\n return response;\r\n }\r\n\r\n // Merge in a new state object\r\n public setState(partialState: Partial): void {\r\n let currentState = this.getStateSnapshot();\r\n let nextState = Object.assign({}, currentState, partialState);\r\n\r\n this.stateSubject.next(nextState);\r\n }\r\n\r\n // Subscribe to a portion of state values\r\n public useState(selector: (state: RootState, computed: ComputedState) => S) {\r\n if(!selector)\r\n throw new Error('Selector fn is not provided.');\r\n\r\n let id = '';\r\n if(isDevelopment) {\r\n try {\r\n const stackLine = new Error().stack?.split('\\n')[2];\r\n const match = /at\\s+(\\w+)/g.exec(stackLine || '');\r\n id = match?.[1] || '';\r\n } catch { }\r\n }\r\n\r\n const computed = this.computed || { state: {} } as ComputedState;\r\n computed.state = this.stateSubject.value;\r\n const [val, setVal] = React.useState(() => selector(this.stateSubject.value, computed));\r\n let getCurrentState = () => val;\r\n\r\n React.useLayoutEffect(() => {\r\n const selectSubscription = this.stateSubject.pipe(\r\n map(s => {\r\n computed.state = s;\r\n return selector(s, computed);\r\n }),\r\n distinctUntilChanged(),\r\n ).subscribe(s => {\r\n const currentState = getCurrentState();\r\n if(!equals(s, currentState)) {\r\n // if(isDevelopment)\r\n // dbg('Subscription', id, '#FFDC5D', currentState, '->', s);\r\n getCurrentState = () => s;\r\n setVal(s);\r\n }\r\n });\r\n return () => { selectSubscription.unsubscribe(); };\r\n }, [selector.toString()]);\r\n\r\n return val;\r\n }\r\n\r\n // Helper for binding form fields to state values\r\n public useForm(formOptions: FormOptions = {}) {\r\n const bindField = this.bindField.bind(this);\r\n const formState = React.useState({\r\n values: {},\r\n errors: {},\r\n required: {},\r\n updating: {},\r\n focused: '',\r\n subscriptions: {},\r\n submitAttempted: false,\r\n });\r\n const formStateRef = React.useRef(formState[0]);\r\n\r\n // Need to check all required fields plus extra validation\r\n const fs = formState[0];\r\n formStateRef.current = fs;\r\n const keys = Object.keys(fs.values);\r\n const isValid = keys.length > 0 && keys.every(k => {\r\n return (!fs.required[k] || !!fs.values[k]) && !fs.errors[k];\r\n });\r\n\r\n const updateFn = React.useRef<(key: string, value: any) => void>(() => { });\r\n let fields: { [k: string]: (nv: any) => void };\r\n const addField = moize(function (fieldProps: BoundField) {\r\n const { key, updateRxState, ...props } = fieldProps;\r\n fields = { ...fields, [key]: updateRxState };\r\n return props;\r\n });\r\n\r\n // Destroy subscriptions on unmount\r\n React.useEffect(() => {\r\n return () => {\r\n Object.keys(fs.subscriptions).map(k => {\r\n fs.subscriptions[k]?.unsubscribe();\r\n });\r\n };\r\n }, []);\r\n\r\n // Return the field binding helpers\r\n return {\r\n isValid,\r\n submit: (fn?: () => void) => {\r\n return (e: React.FormEvent) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n // See if we need to update the curently focused field\r\n const { focused, values } = formState[0];\r\n if(focused) {\r\n fields[focused](values[focused]);\r\n }\r\n\r\n // Mark the form with a submit attempt to show all errors\r\n formState[1](s => ({\r\n ...s,\r\n errors: keys.reduce((errors, k) => {\r\n errors[k] = errors[k] ? errors[k] : s.required[k] && !s.values[k] ? 'This field is required.' : '';\r\n return errors;\r\n }, s.errors),\r\n submitAttempted: true,\r\n }));\r\n if(isValid) {\r\n fn && fn();\r\n }\r\n };\r\n },\r\n onChange: (fn: (key: string, value: any) => void) => { updateFn.current = fn; },\r\n formState: fs,\r\n\r\n bindText(selector: StateSelector | string[], options?: BindOptions) {\r\n return addField(bindField({ updateFn, selector, formState, formStateRef, options: { ...formOptions, type: 'text', ...options } }));\r\n },\r\n bindTextMultiple(selector: StateSelector | string[], options?: BindOptions) {\r\n return addField(bindField({\r\n updateFn, selector, formState, formStateRef, options: { ...formOptions, type: 'text', ...options, defaultValue: [] },\r\n\r\n // parse: (v: string[]) => v,\r\n }));\r\n },\r\n bindNumeric(selector: StateSelector | string[], options?: BindOptionsNumeric) {\r\n return addField(bindField({\r\n updateFn, selector, formState, formStateRef,\r\n options: { ...formOptions, ...options, type: options?.type || 'numeric' },\r\n parse: (v: string) => {\r\n return v === ''\r\n ? undefined\r\n : v.trim() === '-' ? -0 : Number(v.replace(options?.decimals! > 0 ? /[^0-9\\-\\.]/g : /[^0-9\\-]/g, ''));\r\n },\r\n format: (v: number | undefined, key?: string) => {\r\n const formatted = v == null || v.toString() === ''\r\n ? ''\r\n : (options?.currency ? '$' : '') + formatNumber(v, options?.decimals || 0, false) + (options?.percentage ? '%' : '');\r\n return options?.comma === false ? formatted.replace(',', '') : formatted;\r\n },\r\n }));\r\n },\r\n bindBoolean(selector: StateSelector | string[], options?: BindOptions) {\r\n return addField(bindField({\r\n updateFn, selector, formState, formStateRef,\r\n options: { ...formOptions, ...options },\r\n parse: (v: string | boolean) => v === 'true' || v === true ? true : v === 'false' || v === false ? false : undefined,\r\n // format: (v: boolean) => v === true ? 'true' : v === false ? 'false' : undefined,\r\n }));\r\n },\r\n bindDate(selector: StateSelector | string[], options?: BindOptions) {\r\n return addField(bindField({\r\n updateFn, selector, formState, formStateRef, options: { ...formOptions, ...options, type: 'date', placeholder: 'M/D/YYYY' },\r\n // format: (v: string) => v ? formatLocalDate(v, 'yyyy-MM-dd') : '',\r\n // parse: (v: string) => v ? formatLocalDate(v) : undefined,\r\n }));\r\n },\r\n };\r\n }\r\n\r\n bindField({ updateFn, selector, format, parse, formState, formStateRef, options }: BindFieldProps): BoundField {\r\n const { mask, index, index2, required, type = 'text', defaultValue } = options || {};\r\n const isSelectorFn = typeof selector === 'function';\r\n const name = isSelectorFn\r\n ? parseFn(selector)[1].trim()\r\n : selector.join('.');\r\n // console.log({name})\r\n\r\n const key = `${name}|${index ?? ''}`.trim()\r\n + (index2 == undefined ? '' : `|${index2}`);\r\n const [state, setState] = formState;\r\n const isFocused = state.focused === key;\r\n\r\n let v = state.values[key];\r\n\r\n // Set the default value for local state\r\n const value = format ? format(v, key) : v;\r\n const maskRegex = mask ? new RegExp(mask) : null;\r\n\r\n // Update Rx store\r\n const updateRxState = (nv: any) => {\r\n this.update(s => {\r\n // Prevent updates when there is no change\r\n const currentStateValue = isSelectorFn\r\n ? selector(s as RootState, (index || 0) as any, (index2 || 0) as any) ?? ''\r\n : getSelector(selector, s as RootState, index, index2);\r\n if(currentStateValue === (nv ?? '')) return;\r\n\r\n // dbg('updateRxFn', key, '#FFEDAC', { currentStateValue, nv });\r\n updateSelector(selector, s, index, index2, parse ? parse(nv) : nv);\r\n }, key);\r\n };\r\n\r\n // Update local state\r\n const updateLocalState = (value: any, updateRx?: boolean, externalChange?: boolean) => {\r\n formStateRef.current.updating[key] = true;\r\n\r\n // dbg('updateLocalState', key, 'purple', { value, updateRx });\r\n if(maskRegex && (value || '').replace(maskRegex, '') !== value) {\r\n return;\r\n }\r\n\r\n // Try our mask function\r\n const [maskedValue, error] = maskValue(type, value, options);\r\n if(maskedValue === null) {\r\n return;\r\n }\r\n\r\n updateRx && updateRxState(maskedValue);\r\n\r\n // Update form state\r\n setState(s => {\r\n const ret = {\r\n ...s,\r\n values: { ...s.values, [key]: maskedValue },\r\n errors: { ...s.errors, [key]: error },\r\n };\r\n return ret;\r\n });\r\n\r\n // Notify the component that the form changed.\r\n if(updateFn.current && !externalChange) {\r\n // dbg('updateFn', key, '#F79646', { value, updateRx });\r\n setTimeout(() => updateFn.current(key, value), 100);\r\n }\r\n\r\n formStateRef.current.updating[key] = false;\r\n };\r\n\r\n // Subscribe to state changes\r\n if(!state.subscriptions[key]) {\r\n const selectSubscription = this.stateSubject.pipe(\r\n map(v => {\r\n try {\r\n return isSelectorFn\r\n ? selector(v, index as any, index2 as any)\r\n : getSelector(selector, v, index, index2);\r\n } catch(ex) {\r\n if(formStateRef.current.subscriptions[key])\r\n formStateRef.current.subscriptions[key]?.unsubscribe();\r\n else\r\n dbg('Unsubscribe Failed', key, 'red', formStateRef.current.subscriptions[key]);\r\n setState(s => ({ ...s, subscriptions: { ...s.subscriptions, [key]: undefined } }));\r\n }\r\n }),\r\n distinctUntilChanged(),\r\n ).subscribe(nv => {\r\n const v = formStateRef.current.values[key];\r\n // tslint:disable-next-line: triple-equals\r\n if((v ?? '') !== (nv ?? '') && !formStateRef.current.updating[key]) {\r\n // dbg('Form Subscription', key, '#FFEDAC', { v, nv });\r\n updateLocalState(nv?.toString(), undefined, true);\r\n }\r\n });\r\n\r\n // Add this subscription to the form state\r\n setState(s => {\r\n return { ...s, subscriptions: { ...s.subscriptions, [key]: selectSubscription } };\r\n });\r\n }\r\n\r\n let inputType = type;\r\n switch(type) {\r\n case 'password':\r\n\t\t\tcase 'checkbox':\r\n\t\t\tcase 'number':\r\n inputType = type;\r\n\t\t\t\tbreak;\r\n default:\r\n inputType = 'text';\r\n break;\r\n }\r\n if(options?.hide && !isFocused)\r\n inputType = 'password';\r\n\r\n const error = options.allErrors?.find(e => e && e.field && name === e.field && (e.i == index || e.i === -1) && (e.j == index2 || e.j === -1));\r\n // if(name === 's.ui.actions.withdraw.denialReasons')\r\n // console.log({ name, value, v, defaultValue });\r\n const errorMsg = error?.msg ? error.msg : state.errors[key] || (error ? '' : undefined);\r\n const numericOptions = options as BindOptionsNumeric;\r\n const style: React.CSSProperties = {};\r\n if(numericOptions?.currency || numericOptions?.percentage)\r\n style.textAlign = 'right';\r\n if(options.align)\r\n style.textAlign = options.align;\r\n const valueKey = type === 'checkbox' ? 'checked' : 'value';\r\n\r\n return {\r\n key,\r\n placeholder: options.placeholder,\r\n updateRxState,\r\n\t\t\ttype: inputType,\r\n\t\t\tmax: inputType === 'number' ? numericOptions?.max : undefined,\r\n [valueKey]: type === 'checkbox'\r\n ? (v === 'true' || v === true)\r\n : !v && defaultValue\r\n ? defaultValue\r\n : value === undefined || v === undefined\r\n ? ''\r\n : isFocused\r\n ? v\r\n : value,\r\n onChange: (e: React.ChangeEvent, valueOverride?: any) => {\r\n const value = 'checked' in e.target && type === 'checkbox' ? e.target.checked :\r\n 'multiple' in e.target && e.target.multiple && 'selectedOptions' in e.target ? ([...e.target.selectedOptions].map(o => o.value) || []) :\r\n e.target.value;\r\n const updateRx = options?.update === 'onChange' || !updateOnBlur(e.target);\r\n updateLocalState(valueOverride !== undefined ? valueOverride : value, updateRx);\r\n },\r\n onFocus: e => {\r\n setState(s => ({ ...s, focused: key }));\r\n if('select' in e.target) {\r\n const t = e.target;\r\n setTimeout(() => {\r\n if(t === document.activeElement)\r\n t.select();\r\n }, 0);\r\n }\r\n },\r\n onBlur: (e: React.FocusEvent) => {\r\n if(!options?.disableOnBlur) {\r\n setState(s => ({ ...s, focused: '' }));\r\n }\r\n if(options?.update !== 'onChange' && updateOnBlur(e.target)) {\r\n const value = 'checked' in e.target && type === 'checkbox' ? e.target.checked : e.target.value;\r\n updateRxState(value);\r\n }\r\n },\r\n required,\r\n 'aria-required': required,\r\n 'data-error': errorMsg,\r\n // tslint:disable-next-line: triple-equals\r\n 'aria-invalid': errorMsg != undefined,\r\n style,\r\n title: error?.msg,\r\n autoComplete: 'sfsf9uhef3',\r\n };\r\n }\r\n}\r\n\r\nfunction updateOnBlur(element: HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement) {\r\n return element?.nodeName.toLowerCase() === 'input'\r\n && element.type !== 'radio' && element.type !== 'checkbox';\r\n}\r\n\r\nfunction maskValue(type: InputType, value: string, options: BindOptions | BindOptionsNumeric): [null | string, string] {\r\n let v = value === undefined ? '' : value;\r\n let e = '';\r\n switch(type) {\r\n case 'date':\r\n if(v.match(/[^0-9\\/]/) !== null || v.replace(/[^0-9]/g, '').length > 8 || v.replace(/[^\\/]/g, '').length > 2)\r\n return [null, e];\r\n if(v.match(/^\\d\\d\\d$/))\r\n v = v.substring(0, 2) + '/' + v.substring(2, 3);\r\n if(v.match(/^\\d\\d\\/\\d\\d\\d$/))\r\n v = v.substring(0, 5) + '/' + v.substring(5, 6);\r\n e = isDateValid(v) ? '' : 'Not a valid date (mm/dd/yyyy)';\r\n break;\r\n case 'ssn':\r\n if(v.match(/[^0-9\\-]/) !== null || v.replace(/[^0-9]/g, '').length > 9 || v.replace(/[^\\-]/g, '').length > 2)\r\n return [null, e];\r\n if(v.match(/^\\d\\-/) !== null || v.match(/^\\d\\d\\-/) !== null || v.match(/^\\d\\d\\d\\-\\-/) !== null || v.match(/^\\d\\d\\d\\-\\d\\-/) !== null)\r\n return [null, e];\r\n if(v.match(/^\\d\\d\\d\\d$/))\r\n v = v.substring(0, 3) + '-' + v.substring(3, 4);\r\n if(v.match(/^\\d\\d\\d-\\d\\d\\d$/))\r\n v = v.substring(0, 6) + '-' + v.substring(6, 7);\r\n e = v.replace(/[\\s_-]/g, '').length === 9 ? '' : 'SSN is not valid';\r\n break;\r\n case 'ssn4':\r\n if(v.match(/[^0-9]/) !== null || v.length > 4)\r\n return [null, e];\r\n e = v.length === 0 ? 'This field is required' : v.length < 4 ? 'Please enter the last 4 digits of your SSN' : '';\r\n break;\r\n case 'physicalAddress':\r\n e = isPoBox(value) ? 'The business address must be a physical address.' : '';\r\n break;\r\n case 'tin':\r\n if(v.replace(/[^0-9]/g, '').length > 9)\r\n return [null, e];\r\n e = isTin(v) ? '' : 'Not a valid EIN or SSN';\r\n break;\r\n case 'ein':\r\n if(v.match(/[^0-9\\-]/) !== null || v.replace(/[^0-9]/g, '').length > 9 || v.replace(/[^\\-]/g, '').length > 1)\r\n return [null, e];\r\n if(v.match(/^\\d\\-/) !== null)\r\n return [null, e];\r\n if(v.match(/^\\d\\d\\d$/))\r\n v = v.substring(0, 2) + '-' + v.substring(2, 3);\r\n e = v.replace(/[\\s_-]/g, '').length === 9 ? '' : 'EIN is not valid';\r\n break;\r\n case 'phone':\r\n if(v.match(/[^0-9\\-]/) !== null || v.replace(/[^0-9]/g, '').length > 10 || v.replace(/[^\\-]/g, '').length > 2)\r\n return [null, e];\r\n if(v.match(/^\\d\\d\\d\\d$/))\r\n v = v.substring(0, 3) + '-' + v.substring(3, 4);\r\n if(v.match(/^\\d\\d\\d-\\d\\d\\d\\d$/))\r\n v = v.substring(0, 7) + '-' + v.substring(7, 8);\r\n e = v.replace(/[^0-9]/g, '').length === 10 ? '' : 'Phone number is not valid';\r\n break;\r\n case 'numeric':\r\n const numericOptions = options as BindOptionsNumeric;\r\n try {\r\n v = numericOptions.positive\r\n ? v.replace(/[^0-9\\.]/g, '')\r\n : v.replace(/[^0-9\\.\\-]/g, '');\r\n if(!numericOptions.positive && v?.trim() === '-')\r\n break;\r\n\r\n const num = Number(v);\r\n if(isNaN(num)) {\r\n return [null, 'Invalid number'];\r\n }\r\n\r\n if(v !== '' && numericOptions.min !== undefined) {\r\n if(num < numericOptions.min) {\r\n return [v, `Must be at least ${numericOptions.min}`];\r\n }\r\n }\r\n if(v !== '' && numericOptions.max !== undefined) {\r\n if(num > numericOptions.max) {\r\n return [v, `Cannot be more than ${numericOptions.max}`];\r\n }\r\n }\r\n\r\n const [whole, dec] = v.split('.');\r\n if((numericOptions.decimals || 0) === 0) {\r\n v = whole;\r\n } else if(dec !== undefined) {\r\n v = `${whole}.${dec.substring(0, numericOptions.decimals)}`;\r\n }\r\n } catch(e) {\r\n return [null, 'Invalid number'];\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n return [v, e];\r\n}\r\n\r\ntype InputType = 'text' | 'checkbox' | 'date' | 'email' | 'ssn' | 'ssn4' | 'password' | 'accountNumber' | 'physicalAddress' | 'phone' | 'numeric' | 'number' | 'tin' | 'ein';\r\ntype LocalFormState = {\r\n values: { [k: string]: any };\r\n errors: { [k: string]: string };\r\n required: { [k: string]: boolean };\r\n updating: { [k: string]: boolean };\r\n subscriptions: { [k: string]: Subscription | undefined };\r\n focused: string;\r\n submitAttempted: boolean;\r\n};\r\nexport type StateSelector = (state: State, i: number, j: number) => T | undefined;\r\ntype BindFieldProps = {\r\n formState: [LocalFormState, React.Dispatch>];\r\n formStateRef: React.MutableRefObject;\r\n selector: StateSelector | string[];\r\n format?: (value: any, key?: string) => string,\r\n parse?: (value: string) => any,\r\n options: BindOptions;\r\n updateFn: React.MutableRefObject<(key: string, value: any) => void>\r\n};\r\ntype BindOptions = {\r\n mask?: string;\r\n hide?: boolean;\r\n index?: number | string;\r\n index2?: number | string;\r\n type?: InputType;\r\n required?: boolean;\r\n placeholder?: string;\r\n update?: 'onBlur' | 'onChange';\r\n disableOnBlur?: boolean;\r\n allErrors?: TabError[];\r\n defaultValue?: string | string[];\r\n align?: React.CSSProperties['textAlign'];\r\n};\r\ntype BindOptionsNumeric = BindOptions & {\r\n decimals?: number;\r\n min?: number;\r\n max?: number;\r\n currency?: boolean;\r\n percentage?: boolean;\r\n positive?: boolean;\r\n defaultValue?: number;\r\n comma?: boolean;\r\n};\r\nexport type BoundFieldProps = {\r\n type: InputType;\r\n value?: any;\r\n checked?: boolean;\r\n onChange: (e: React.ChangeEvent, valueOverride?: any) => void;\r\n onFocus: (e: React.FocusEvent) => void;\r\n onBlur: (e: React.FocusEvent) => void;\r\n required?: boolean;\r\n placeholder?: string,\r\n 'aria-required'?: boolean;\r\n 'aria-invalid': boolean;\r\n 'data-error': string | undefined;\r\n style: any;\r\n title?: string;\r\n\tautoComplete?: string;\r\n\tmax?: number;\r\n};\r\ntype BoundField = BoundFieldProps & {\r\n key: string;\r\n updateRxState: (nv: any) => void;\r\n};\r\n\r\nfunction parseFn(selector: Function | string) {\r\n // Sanitize the fn string\r\n const fnString = selector.toString()\r\n .replace(/[\\r\\n]/g, '')\r\n .replace(/\\s\\s/g, ' ');\r\n\r\n // Parse a full function body\r\n if(fnString.startsWith('function')) {\r\n const fnRegex = new RegExp('\\\\(([^\\)]*)\\\\).*return\\s*([^;}]*)', 'gi');\r\n const result = fnRegex.exec(fnString);\r\n if(!result)\r\n return ['', ''];\r\n const p = (result[1] || '').trim();\r\n const f = (result[2] || '').trim();\r\n return [p, f];\r\n }\r\n\r\n // Parse a lambda\r\n const [params, body] = fnString.split('=>').map(p => p.trim());\r\n const stateVars = params.replace('(', '').replace(')', '');\r\n return [stateVars, body];\r\n}\r\n\r\nexport function executeSelector(selector: (string|number)[] | Function, state: {}, i?: string | number, i2?: string | number) : T {\r\n return typeof selector === 'function'\r\n ? selector(state, i, i2)\r\n : getSelector(selector, state, i, i2);\r\n}\r\nexport function getSelector(parts: (string|number)[], data: {}, i: string | number | undefined, j: string | number | undefined): any {\r\n let o: any = data;\r\n const normalizedParts = parts.join('.')\r\n .replace('[i]', `.${i}`)\r\n .replace('[i2]', `.${j}`)\r\n .replace('[j]', `.${j}`)\r\n .split('.');\r\n\r\n for(let i = 1, n = normalizedParts.length; i < n; ++i) {\r\n const k = normalizedParts[i];\r\n if(k in o) {\r\n o = o[k];\r\n } else {\r\n return undefined;\r\n }\r\n }\r\n return o;\r\n}\r\n\r\nexport function getSelectorPaths(selector: Function | string, i?: string | number, i2?: string | number) {\r\n const [, fnBody] = parseFn(selector)\r\n return replaceIndexParts(fnBody, i, i2)\r\n .flatMap(v => v.trim().split('['))\r\n .map(v => v.replace(']', ''));\r\n}\r\nfunction replaceIndexParts(selector: string | string[], i: string | number | undefined, i2: string | number | undefined) {\r\n const parts = typeof selector === 'string' ? selector.split('.') : selector;\r\n return parts\r\n .map(v => v\r\n .replace('[i]', `.${i}`)\r\n .replace('[i2]', `.${i2}`)\r\n .replace('[j]', `.${i2}`))\r\n .join('.')\r\n .split('.');\r\n}\r\nexport function updateSelector(selector: Function | string | string[], data: {}, i: number | string | undefined, i2: number | string | undefined, v: any) {\r\n const parts = typeof selector === 'function'\r\n ? getSelectorPaths(selector, i, i2)\r\n : replaceIndexParts(selector, i, i2);\r\n\r\n // Skip the first\r\n parts.shift();\r\n\r\n let o: any = data;\r\n while(parts.length - 1) {\r\n const n = parts.shift() ?? '';\r\n if(!(n in o)) {\r\n // o[n] = {};\r\n console.log('Object missing:', { selector, data: JSON.parse(JSON.stringify(data)), i, i2, v, n, o: JSON.parse(JSON.stringify(o)), 'o[n]': o[n] });\r\n return;\r\n }\r\n o = o[n];\r\n }\r\n o[parts[0]] = v;\r\n}\r\nexport interface FormOptions {\r\n required?: boolean;\r\n update?: 'onBlur' | 'onChange';\r\n disableOnBlur?: boolean;\r\n allErrors?: TabError[];\r\n}\r\n","export function serializeFormData(obj: { [a: string]: string }) {\n return Object.keys(obj).reduce((a, k) => {\n // tslint:disable-next-line: no-array-mutation\n a.push(k + '=' + encodeURIComponent(obj[k]));\n return a;\n }, [] as string[]).join('&');\n}\n","export function shadeColor(percent: number, from: string, to?: string): string {\n // Error check\n if(typeof (percent) !== 'number' || percent < -100 || percent > 100) {\n return from;\n }\n if(typeof (from) !== 'string' || (from[0] !== 'r' && from[0] !== '#')) {\n return from;\n }\n if((typeof (to) !== 'string' && typeof (to) !== 'undefined')) {\n return from;\n }\n\n const p = percent / 100.0;\n const b = p < 0;\n const r = Math.round;\n let h = from.length > 9;\n h = typeof (to) === 'string' ? to.length > 9 ? true : to === 'c' ? !h : false : h;\n\n const p2 = b ? p * -1 : p;\n const f = sbcRip(from);\n const t = sbcRip(to && to !== 'c' ? to : b ? '#000000' : '#FFFFFF');\n\n // ErrorCheck\n if(!f || !t) {\n return from;\n }\n\n if(h) {\n return 'rgb(' +\n r((t[0] - f[0]) * p2 + f[0]) + ',' +\n r((t[1] - f[1]) * p2 + f[1]) + ',' +\n r((t[2] - f[2]) * p2 + f[2]) +\n (f[3] < 0 && t[3] < 0 ? ')' : ',' + (f[3] > -1 && t[3] > -1 ? r(((t[3] - f[3]) * p2 + f[3]) * 10000) / 10000 : t[3] < 0 ? f[3] : t[3]) + ')');\n } else {\n return '#' + (0x100000000 + (f[3] > -1 && t[3] > -1 ? r(((t[3] - f[3]) * p2 + f[3]) * 255) : t[3] > -1 ? r(t[3] * 255) : f[3] > -1 ? r(f[3] * 255) : 255)\n * 0x1000000 + r((t[0] - f[0]) * p2 + f[0]) * 0x10000 + r((t[1] - f[1]) * p2 + f[1]) * 0x100 + r((t[2] - f[2]) * p2 + f[2])).toString(16).slice(f[3] > -1 || t[3] > -1 ? 1 : 3);\n }\n}\nfunction sbcRip(input: string) {\n const length = input.length;\n const RGB: { 0: number, 1: number, 2: number, 3: number } = { 0: 0, 1: 0, 2: 0, 3: 0 };\n\n if(length > 9) {\n const inputParts = input.split(',');\n if(inputParts.length < 3 || inputParts.length > 4)\n return null;\n RGB[0] = parseInt(inputParts[0].slice(4), 10);\n RGB[1] = parseInt(inputParts[1], 10);\n RGB[2] = parseInt(inputParts[2], 10);\n RGB[3] = inputParts[3] ? parseFloat(inputParts[3]) : -1;\n } else {\n let colorStr = input;\n if(length === 8 || length === 6 || length < 4)\n return null;\n if(length < 6)\n colorStr = '#' + input[1] + input[1] + input[2] + input[2] + input[3] + input[3] + (length > 4 ? input[4] + '' + input[4] : '');\n const colorHex = parseInt(colorStr.slice(1), 16);\n RGB[0] = colorHex >> 16 & 255;\n RGB[1] = colorHex >> 8 & 255;\n RGB[2] = colorHex & 255;\n RGB[3] = length === 9 || length === 5 ? Math.round(((colorHex >> 24 & 255) / 255) * 10000) / 10000 : -1;\n }\n return RGB;\n}\n","import Axios, { CancelTokenSource } from 'axios';\r\nimport { SimpleEventDispatcher } from 'ste-simple-events';\r\n\r\nimport { get, postJson } from \"web-shared/lib\";\r\n\r\ntype NegotiateResponse = {\r\n\tConnectionId: string;\r\n\tConnectionTimeout: number;\r\n\tConnectionToken: string;\r\n\tDisconnectTimeout: number;\r\n\tKeepAliveTimeout: number;\r\n\tProtocolVersion: string;\r\n\tTransportConnectTimeout: number;\r\n\tUrl: string;\r\n\tRedirectUrl?: string;\r\n};\r\ntype KeepAliveData = {\r\n\tmonitoring?: boolean;\r\n\tactivated?: boolean;\r\n\treconnectKeepAliveUpdate?: () => void,\r\n\ttimeout?: number;\r\n\ttimeoutWarning?: number;\r\n\tuserNotified?: boolean;\r\n}\r\ntype ResponseDataMin = {\r\n\tC?: string;\r\n\tM?: string[];\r\n\tS?: boolean;\r\n\tT?: boolean;\r\n\tG?: string;\r\n\tE?: string;\r\n}\r\ntype ResponseData = {\r\n\tMessageId?: string;\r\n\tMessages?: string[];\r\n\tInitialized?: boolean;\r\n\tShouldReconnect?: boolean;\r\n\tGroupsToken?: string;\r\n\tError?: string;\r\n}\r\n\r\ntype ConnectionState = 'connecting' | 'connected' | 'reconnecting' | 'disconnected';\r\n\r\n// const defaultContentType = 'application/x-www-form-urlencoded; charset=UTF-8';\r\nconst keepAliveWarnAt = 2 / 3; // Warn user of slow connection if we breach the X% mark of the keep alive timeout\r\nconst pingInterval = 300000;\r\n\r\nfunction stringifySend(message: any) {\r\n\tif(typeof (message) === \"string\" || typeof (message) === \"undefined\" || message === null)\r\n\t\treturn message;\r\n\treturn JSON.stringify(message);\r\n}\r\n\r\nexport class SignalR {\r\n\tversion = \"2.4.3\";\r\n\turl: string = '';\r\n\tnegotiateCancelSource = Axios.CancelToken.source();\r\n\tstartCancelSource = Axios.CancelToken.source();\r\n\tbeatHandle = 0;\r\n\ttransportTimeoutHandle = 0;\r\n\ttransportConnectTimeout = 0;\r\n\ttotalTransportConnectTimeout = 0;\r\n\treconnectTimeout = 0;\r\n\tpingIntervalId = 0;\r\n\tbeatInterval = 5000;\r\n\tkeepAliveData: KeepAliveData = {};\r\n\tstate: ConnectionState = 'disconnected';\r\n\tid: string = '';\r\n\ttoken: string = '';\r\n\tdisconnectTimeout = 30000; // This should be set by the server in response to the negotiate request (30s default)\r\n\treconnectWindow = 30000; // This should be set by the server in response to the negotiate request\r\n\tlastMessageAt = new Date().getTime();\r\n\tlastActiveAt = new Date().getTime();\r\n\tconfiguredStopReconnectingTimeout = false;\r\n\tsocket: WebSocket | undefined = undefined;\r\n\tappRelativeUrl: string = '';\r\n\tstartRequested = false;\r\n\tstartCompleted = false;\r\n\tconnectionStopped = false;\r\n\tredirectQs = '';\r\n\tqs = '';\r\n\tmessageId = '';\r\n\twebSocketServerUrl = '';\r\n\r\n\tbuffer: string[] = [];\r\n\r\n\tdrainBuffer() {\r\n\t\t// Ensure that the connection is connected when we drain (do not want to drain while a connection is not active)\r\n\t\tif(this.state === 'connected') {\r\n\t\t\twhile(this.buffer.length > 0) {\r\n\t\t\t\tthis.onReceivedEvent.dispatch(this.buffer.shift() || '');\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tclearBuffer() { this.buffer = []; }\r\n\ttryBuffer(message: string) {\r\n\t\tif(this.state === 'connecting') {\r\n\t\t\tthis.buffer.push(message);\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t};\r\n\r\n\tprivate onStartEvent = new SimpleEventDispatcher();\r\n\tprivate onStartingEvent = new SimpleEventDispatcher();\r\n\tprivate onReceivedEvent = new SimpleEventDispatcher();\r\n\tprivate onErrorEvent = new SimpleEventDispatcher();\r\n\tprivate onConnectionSlowEvent = new SimpleEventDispatcher();\r\n\tprivate onReconnectingEvent = new SimpleEventDispatcher();\r\n\tprivate onReconnectEvent = new SimpleEventDispatcher();\r\n\tprivate onStateChangedEvent = new SimpleEventDispatcher<{ oldState: ConnectionState, newState: ConnectionState }>();\r\n\tprivate onDisconnectEvent = new SimpleEventDispatcher();\r\n\r\n\tpublic get onStart() { return this.onStartEvent.asEvent(); }\r\n\tpublic get onStarting() { return this.onStartingEvent.asEvent(); }\r\n\tpublic get onReceived() { return this.onReceivedEvent.asEvent(); }\r\n\tpublic get onError() { return this.onErrorEvent.asEvent(); }\r\n\tpublic get onConnectionSlow() { return this.onConnectionSlowEvent.asEvent(); }\r\n\tpublic get onReconnecting() { return this.onReconnectingEvent.asEvent(); }\r\n\tpublic get onReconnect() { return this.onReconnectEvent.asEvent(); }\r\n\tpublic get onStateChanged() { return this.onStateChangedEvent.asEvent(); }\r\n\tpublic get onDisconnect() { return this.onDisconnectEvent.asEvent(); }\r\n\r\n\tconstructor(url: string) {\r\n\t\tthis.url = url;\r\n\t}\r\n\r\n\tchangeState(expectedState: ConnectionState, newState: ConnectionState) {\r\n\t\tif(expectedState === this.state) {\r\n\t\t\tthis.state = newState;\r\n\r\n\t\t\tthis.onStateChangedEvent.dispatch({ oldState: expectedState, newState });\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tconfigurePingInterval() {\r\n\t\tif(!this.pingIntervalId && pingInterval) {\r\n\t\t\tthis.pingIntervalId = window.setInterval(() => {\r\n\t\t\t\tthis.pingServer();\r\n\t\t\t}, pingInterval);\r\n\t\t}\r\n\t}\r\n\r\n\tasync pingServer() {\r\n\t\tlet url = `${this.url}/ping`;\r\n\t\turl = this.addQs(url, this.qs);\r\n\r\n\t\tconst pingResponse = await get<{ Response: string }>(url);\r\n\r\n\t\tif(pingResponse.isError) {\r\n\t\t\tthis.onErrorEvent.dispatch(pingResponse.error);\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif(pingResponse.payload?.Response === 'pong')\r\n\t\t\treturn true;\r\n\r\n\t\tthis.onErrorEvent.dispatch(`Ping response was unexpected: ${pingResponse.payload?.Response}`);\r\n\t\treturn false;\r\n\t}\r\n\r\n\tasync start(reconnecting: boolean) {\r\n\t\t// Begin with the /negotiate request to the server to get a connection token\r\n\t\tconst res = await this.negotiate(this.url, this.negotiateCancelSource);\r\n\t\tthis.id = res.ConnectionId;\r\n\t\tthis.token = res.ConnectionToken;\r\n\r\n\t\tif(res.KeepAliveTimeout) {\r\n\t\t\tthis.keepAliveData.activated = true;\r\n\r\n\t\t\t// Timeout to designate when to force the connection into reconnecting converted to milliseconds\r\n\t\t\tthis.keepAliveData.timeout = res.KeepAliveTimeout * 1000;\r\n\r\n\t\t\t// Timeout to designate when to warn the developer that the connection may be dead or is not responding.\r\n\t\t\tthis.keepAliveData.timeoutWarning = this.keepAliveData.timeout * keepAliveWarnAt;\r\n\r\n\t\t\t// Instantiate the frequency in which we check the keep alive. It must be short in order to not miss/pick up any changes\r\n\t\t\tthis.beatInterval = (this.keepAliveData.timeout - this.keepAliveData.timeoutWarning) / 3;\r\n\t\t} else {\r\n\t\t\tthis.keepAliveData.activated = false;\r\n\t\t}\r\n\r\n\t\tthis.appRelativeUrl = res.Url;\r\n\r\n\t\t// Once the server has labeled the PersistentConnection as Disconnected, we should stop attempting to reconnect\r\n\t\t// after res.DisconnectTimeout seconds.\r\n\t\tthis.disconnectTimeout = res.DisconnectTimeout * 1000; // in ms\r\n\r\n\t\t// Add the TransportConnectTimeout from the response to the transportConnectTimeout from the client to calculate the total timeout\r\n\t\tthis.totalTransportConnectTimeout = this.transportConnectTimeout + res.TransportConnectTimeout * 1000;\r\n\r\n\t\tthis.reconnectWindow = res.DisconnectTimeout + (this.keepAliveData.timeout || 0);\r\n\r\n\t\t// Start the web socket connection\r\n\r\n\t\tif(this.startRequested || this.connectionStopped) {\r\n\t\t\tlog(\"WARNING! webSockets transport cannot be started. Initialization ongoing or completed.\");\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlog(\"webSockets transport starting.\");\r\n\r\n\t\tlet failCalled = false;\r\n\t\tconst onFailed = (error: string | undefined) => {\r\n\t\t\t// Don't allow the same transport to cause onFallback to be called twice\r\n\t\t\tif(!failCalled) {\r\n\t\t\t\tfailCalled = true;\r\n\t\t\t\tthis.transportFailed(error);\r\n\t\t\t}\r\n\r\n\t\t\t// Returns true if the transport should stop;\r\n\t\t\t// false if it should attempt to reconnect\r\n\t\t\treturn !this.startCompleted || this.connectionStopped;\r\n\t\t}\r\n\t\tthis.transportTimeoutHandle = window.setTimeout(() => {\r\n\t\t\tif(!failCalled) {\r\n\t\t\t\tfailCalled = true;\r\n\t\t\t\tlog(\"webSockets transport timed out when trying to connect.\");\r\n\t\t\t\tthis.transportFailed(undefined);\r\n\t\t\t}\r\n\t\t}, this.totalTransportConnectTimeout);\r\n\r\n\r\n\t\t// ws: /connect\r\n\t\tlet opened = false;\r\n\r\n\t\tif(!window.WebSocket) {\r\n\t\t\tonFailed('No WebSocket support on this browser.');\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif(!this.socket) {\r\n\t\t\tconst parser = window.document.createElement(\"a\");\r\n\t\t\tparser.href = this.url;\r\n\r\n\t\t\tconst wsProtocol = parser.protocol === \"https:\" ? \"wss://\" : \"ws://\";\r\n\t\t\tlet url = this.webSocketServerUrl ? this.webSocketServerUrl : wsProtocol + parser.host;\r\n\r\n\t\t\turl += this.getUrl(reconnecting);\r\n\r\n\t\t\tlog(`Connecting to websocket endpoint '${url}'.`);\r\n\t\t\tthis.socket = new window.WebSocket(url);\r\n\r\n\t\t\tthis.socket.onopen = () => {\r\n\t\t\t\topened = true;\r\n\t\t\t\tlog(\"Websocket opened.\");\r\n\r\n\t\t\t\tthis.clearReconnectTimeout();\r\n\r\n\t\t\t\tif(this.changeState('reconnecting', 'connected') === true)\r\n\t\t\t\t\tthis.onReconnectEvent.dispatch();\r\n\t\t\t};\r\n\r\n\t\t\tconst that = this;\r\n\t\t\tthis.socket.onclose = function(event: CloseEvent) {\r\n\t\t\t\tlet error;\r\n\r\n\t\t\t\t// Only handle a socket close if the close is from the current socket.\r\n\t\t\t\t// Sometimes on disconnect the server will push down an onclose event\r\n\t\t\t\t// to an expired socket.\r\n\r\n\t\t\t\tif(this === that.socket) {\r\n\t\t\t\t\tif(opened && typeof event.wasClean !== \"undefined\" && event.wasClean === false) {\r\n\t\t\t\t\t\t// Ideally this would use the websocket.onerror handler (rather than checking wasClean in onclose) but\r\n\t\t\t\t\t\t// I found in some circumstances Chrome won't call onerror. This implementation seems to work on all browsers.\r\n\t\t\t\t\t\terror = 'WebSocket closed.';\r\n\r\n\t\t\t\t\t\tlog(`Unclean disconnect from websocket: ${event.reason || \"[no reason given].\"}`);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tlog(\"Websocket closed.\");\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(!onFailed || !onFailed(error)) {\r\n\t\t\t\t\t\tif(error)\r\n\t\t\t\t\t\t\tthat.onErrorEvent.dispatch(error);\r\n\r\n\t\t\t\t\t\tthat.reconnect();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\tthis.socket.onmessage = function (event) {\r\n\t\t\t\tvar data;\r\n\r\n\t\t\t\ttry {\r\n\t\t\t\t\tdata = event.data ? JSON.parse(event.data) : event.data;\r\n\t\t\t\t}\r\n\t\t\t\tcatch(error) {\r\n\t\t\t\t\tthat.onErrorEvent.dispatch(String(error));\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(data) {\r\n\t\t\t\t\tthat.processMessages(data, reconnecting, () => {\r\n\t\t\t\t\t\tif(!failCalled) {\r\n\t\t\t\t\t\t\tthat.initReceived();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n\r\n\tgetUrl(reconnecting: boolean, ajaxPost?: boolean) {\r\n\t\tlet url = this.appRelativeUrl;\r\n\t\tlet qs = \"transport=webSockets\";\r\n\r\n\t\t// if(!ajaxPost && connection.groupsToken) {\r\n\t\t// \tqs += \"&groupsToken=\" + window.encodeURIComponent(connection.groupsToken);\r\n\t\t// }\r\n\r\n\t\tif(!reconnecting) {\r\n\t\t\turl += \"/connect\";\r\n\t\t} else {\r\n\t\t\turl += \"/reconnect\";\r\n\r\n\t\t\tif(!ajaxPost && this.messageId) {\r\n\t\t\t\tqs += `&messageId=${window.encodeURIComponent(this.messageId)}`;\r\n\t\t\t}\r\n\t\t}\r\n\t\turl += `?${qs}`;\r\n\t\turl = this.prepareQueryString(url);\r\n\r\n\t\tif(!ajaxPost) {\r\n\t\t\turl += `&tid=${Math.floor(Math.random() * 11)}`;\r\n\t\t}\r\n\r\n\t\treturn url;\r\n\t}\r\n\r\n\tasync initReceived() {\r\n\t\tif(this.startRequested) {\r\n\t\t\tlog(\"WARNING! The client received multiple init messages.\");\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif(this.connectionStopped)\r\n\t\t\treturn;\r\n\r\n\t\tthis.startRequested = true;\r\n\t\twindow.clearTimeout(this.transportTimeoutHandle);\r\n\r\n\t\tlog(\"webSockets transport connected. Initiating start request.\");\r\n\r\n\t\tconst startResponse = await get<{ Response: string }>(this.getAjaxUrl(\"/start\"), this.startCancelSource?.token, {\r\n\t\t\tskipAuthorization: true,\r\n\t\t});\r\n\r\n\t\tif(startResponse.isError) {\r\n\t\t\tlog(\"The start request failed. Stopping the connection.\");\r\n\t\t\tthis.onErrorEvent.dispatch(`Invalid start response: '${startResponse.error}'. Stopping the connection.`)\r\n\t\t\tthis.stop();\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif(startResponse.payload.Response !== 'started') {\r\n\t\t\tlog(\"The start request failed. Stopping the connection.\");\r\n\t\t\tthis.onErrorEvent.dispatch(`Invalid start response: '${startResponse.payload.Response}'. Stopping the connection.`)\r\n\t\t\tthis.stop();\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.startCompleted = true;\r\n\r\n\t\tlog(\"The start request succeeded. Transitioning to the connected state.\");\r\n\r\n\t\tthis.monitorKeepAlive();\r\n\r\n\t\tif(this.keepAliveData.activated)\r\n\t\t\tthis.startHeartbeat();\r\n\r\n\t\t// Used to ensure low activity clients maintain their authentication.\r\n\t\t// Must be configured once a transport has been decided to perform valid ping requests.\r\n\t\tthis.configurePingInterval();\r\n\r\n\t\tif(!this.changeState('connecting', 'connected'))\r\n\t\t\tlog(\"WARNING! The connection was not in the connecting state.\");\r\n\r\n\t\t// Drain any incoming buffered messages (messages that came in prior to connect)\r\n\t\tthis.drainBuffer();\r\n\r\n\t\tthis.onStartEvent.dispatch();\r\n\r\n\t\t// wire the stop handler for when the user leaves the page\r\n\t\taddEventListener(\"unload\", () => {\r\n\t\t\tlog(\"Window unloading, stopping the connection.\");\r\n\t\t\tthis.stop();\r\n\t\t});\r\n\t}\r\n\r\n\ttriggerReceived(data: string) {\r\n\t\tif(!this.tryBuffer(data)) {\r\n\t\t\tthis.onReceivedEvent.dispatch(data);\r\n\t\t}\r\n\t}\r\n\r\n\tprocessMessages(minData: ResponseDataMin, reconnecting: boolean, onInitialized: Function) {\r\n\t\t// Update the last message time stamp\r\n\t\tthis.markLastMessage();\r\n\r\n\t\tif(minData) {\r\n\t\t\t// This is a message send directly to the client\r\n\t\t\tconst data = maximizePersistentResponse(minData);\r\n\r\n\t\t\tif(data.Error) {\r\n\t\t\t\t// This is a global error, stop the connection.\r\n\t\t\t\tlog(`Received an error message from the server: ${data.Error}`);\r\n\t\t\t\tthis.onErrorEvent.dispatch(data.Error);\r\n\t\t\t\tthis.stop(false);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif(data.MessageId) {\r\n\t\t\t\tthis.messageId = data.MessageId;\r\n\t\t\t}\r\n\r\n\t\t\tif(data.Messages) {\r\n\t\t\t\tdata.Messages.forEach(m => {\r\n\t\t\t\t\tthis.triggerReceived(m);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.tryInitialize(data, reconnecting, onInitialized);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\ttryInitialize(persistentResponse: ResponseData, reconnecting: boolean, onInitialized: Function) {\r\n\t\tif(persistentResponse.Initialized && onInitialized && !reconnecting) {\r\n\t\t\tonInitialized();\r\n\t\t} else if(persistentResponse.Initialized) {\r\n\t\t\tlog(\"WARNING! The client received an init message after reconnecting.\");\r\n\t\t}\r\n\t}\r\n\r\n\ttransportFailed(error: string | undefined) {\r\n\t\tif(this.connectionStopped)\r\n\t\t\treturn;\r\n\r\n\t\twindow.clearTimeout(this.transportTimeoutHandle);\r\n\r\n\t\tif(!this.startRequested) {\r\n\t\t\tthis.stop();\r\n\r\n\t\t\tlog(\"WebSockets transport failed to connect.\");\r\n\t\t} else if(!this.startCompleted) {\r\n\t\t\t// Do not attempt to fall back if a start request is ongoing during a transport failure.\r\n\t\t\t// Instead, trigger an error and stop the connection.\r\n\t\t\tconst wrappedError = `Error during start request. Stopping the connection. ${error}`;\r\n\r\n\t\t\tlog(\"WebSockets transport failed during the start request. Stopping the connection.\");\r\n\t\t\tthis.onErrorEvent.dispatch(wrappedError);\r\n\r\n\t\t\tthis.stop();\r\n\t\t} else {\r\n\t\t\t// The start request has completed, but the connection has not stopped.\r\n\t\t\t// No need to do anything here. The transport should attempt its normal reconnect logic.\r\n\t\t}\r\n\t}\r\n\r\n\tasync abort() {\r\n\t\tconst url = this.getAjaxUrl(\"/abort\");\r\n\t\tawait postJson(url);\r\n\t\tlog(\"Fired ajax abort\");\r\n\t}\r\n\r\n\tgetAjaxUrl(path: string) { return this.prepareQueryString(`${this.url + path}?transport=webSockets`); }\r\n\r\n\tprepareQueryString(url: string) {\r\n\t\t// Use addQs to start since it handles the ?/& prefix for us\r\n\t\tlet preparedUrl = this.addQs(url, \"clientProtocol=2.1\");\r\n\r\n\t\tif(typeof (this.redirectQs) === \"string\") {\r\n\t\t\t// Add the redirect-specified query string params if any\r\n\t\t\tpreparedUrl = this.addQs(preparedUrl, this.redirectQs);\r\n\t\t} else {\r\n\t\t\t// Otherwise, add the user-specified query string params if any\r\n\t\t\tpreparedUrl = this.addQs(preparedUrl, this.qs);\r\n\t\t}\r\n\r\n\t\tif(this.token) {\r\n\t\t\tpreparedUrl += \"&connectionToken=\" + window.encodeURIComponent(this.token);\r\n\t\t}\r\n\r\n\t\treturn preparedUrl + `&_=${Date.now()}`;\r\n\t}\r\n\r\n\taddQs(url: string, qs: string) {\r\n\t\tlet appender = url.indexOf(\"?\") !== -1 ? \"&\" : \"?\";\r\n\r\n\t\tif(!qs)\r\n\t\t\treturn url;\r\n\r\n\t\tif(typeof (qs) === \"string\") {\r\n\t\t\tconst firstChar = qs.charAt(0);\r\n\r\n\t\t\tif(firstChar === \"?\" || firstChar === \"&\") {\r\n\t\t\t\tappender = \"\";\r\n\t\t\t}\r\n\r\n\t\t\treturn url + appender + qs;\r\n\t\t}\r\n\r\n\t\tthrow new Error(\"Query string property must be a string.\");\r\n\t}\r\n\r\n\tstop(notifyServer: boolean = true) {\r\n\t\tif(this.state === 'disconnected')\r\n\t\t\treturn;\r\n\r\n\t\tlog(\"Stopping connection.\");\r\n\r\n\t\t// Clear this no matter what\r\n\t\twindow.clearTimeout(this.beatHandle);\r\n\t\twindow.clearInterval(this.pingIntervalId);\r\n\r\n\t\tthis.connectionStopped = true;\r\n\t\twindow.clearTimeout(this.transportTimeoutHandle);\r\n\t\tthis.startCancelSource?.cancel();\r\n\r\n\t\t// Don't trigger a reconnect after stopping\r\n\t\tthis.clearReconnectTimeout();\r\n\r\n\t\tif(this.socket) {\r\n\t\t\tlog(\"Closing the Websocket.\");\r\n\t\t\tthis.socket.close();\r\n\t\t\tthis.socket = undefined;\r\n\t\t}\r\n\r\n\t\tif(notifyServer !== false) {\r\n\t\t\tthis.abort();\r\n\t\t}\r\n\r\n\t\tthis.stopMonitoringKeepAlive();\r\n\t\tthis.negotiateCancelSource?.cancel();\r\n\r\n\t\tthis.messageId = '';\r\n\t\tthis.id = '';\r\n\t\tthis.pingIntervalId = 0;\r\n\t\tthis.lastMessageAt = 0;\r\n\t\tthis.lastActiveAt = 0;\r\n\t\tthis.redirectQs = '';\r\n\r\n\t\t// Clear out our message buffer\r\n\t\tthis.clearBuffer();\r\n\r\n\t\t// Clean up this event\r\n\t\tthis.onStartEvent.clear();\r\n\r\n\t\t// Trigger the disconnect event\r\n\t\tthis.changeState(this.state, 'disconnected');\r\n\t\tthis.onDisconnectEvent.clear();\r\n\t}\r\n\r\n\tmonitorKeepAlive() {\r\n\t\t// If we haven't initiated the keep alive timeouts then we need to\r\n\t\tif(!this.keepAliveData.monitoring) {\r\n\t\t\tthis.keepAliveData.monitoring = true;\r\n\r\n\t\t\tthis.markLastMessage();\r\n\r\n\t\t\t// Save the function so we can unbind it on stop\r\n\t\t\tthis.keepAliveData.reconnectKeepAliveUpdate = () => {\r\n\t\t\t\t// Mark a new message so that keep alive doesn't time out connections\r\n\t\t\t\tthis.markLastMessage();\r\n\t\t\t};\r\n\r\n\t\t\t// Update Keep alive on reconnect\r\n\t\t\tthis.onReconnectEvent.sub(this.keepAliveData.reconnectKeepAliveUpdate);\r\n\r\n\t\t\tlog(`Now monitoring keep alive with a warning timeout of ${this.keepAliveData.timeoutWarning}, keep alive timeout of ${this.keepAliveData.timeout} and disconnecting timeout of ${this.disconnectTimeout}`);\r\n\t\t} else {\r\n\t\t\tlog(\"Tried to monitor keep alive but it's already being monitored.\");\r\n\t\t}\r\n\t}\r\n\r\n\tstopMonitoringKeepAlive() {\r\n\t\t// Only attempt to stop the keep alive monitoring if its being monitored\r\n\t\tif(this.keepAliveData.monitoring) {\r\n\t\t\t// Stop monitoring\r\n\t\t\tthis.keepAliveData.monitoring = false;\r\n\r\n\t\t\t// Remove the updateKeepAlive function from the reconnect event\r\n\t\t\tthis.onReconnectEvent.clear();\r\n\r\n\t\t\t// Clear all the keep alive data\r\n\t\t\tthis.keepAliveData = {};\r\n\t\t\tlog(\"Stopping the monitoring of the keep alive.\");\r\n\t\t}\r\n\t}\r\n\r\n\treconnect() {\r\n\t\t// We should only set a reconnectTimeout if we are currently connected and a reconnectTimeout isn't already set.\r\n\t\tif((this.state === 'connected' || this.state === 'reconnecting') && !this.reconnectTimeout) {\r\n\t\t\t// Need to verify before the setTimeout occurs because an application sleep could occur during the setTimeout duration.\r\n\t\t\tif(!this.verifyLastActive())\r\n\t\t\t\treturn;\r\n\r\n\t\t\tthis.reconnectTimeout = window.setTimeout(() => {\r\n\t\t\t\tif(!this.verifyLastActive())\r\n\t\t\t\t\treturn;\r\n\r\n\t\t\t\tthis.stop();\r\n\r\n\t\t\t\tif(this.ensureReconnectingState()) {\r\n\t\t\t\t\tlog(\"webSockets reconnecting.\");\r\n\t\t\t\t\tthis.start(true);\r\n\t\t\t\t}\r\n\t\t\t}, 2000);\r\n\t\t}\r\n\t}\r\n\r\n\tensureReconnectingState() {\r\n\t\tif(this.changeState('connected', 'reconnecting') === true)\r\n\t\t\tthis.onReconnectingEvent.dispatch();\r\n\t\treturn this.state === 'reconnecting';\r\n\t}\r\n\r\n\tclearReconnectTimeout() {\r\n\t\tif(this.reconnectTimeout) {\r\n\t\t\twindow.clearTimeout(this.reconnectTimeout);\r\n\t\t\tthis.reconnectTimeout = 0;\r\n\t\t}\r\n\t}\r\n\r\n\tsend(data: any) {\r\n\t\tif(this.state === 'disconnected') {\r\n\t\t\t// Connection hasn't been started yet\r\n\t\t\tthrow new Error('SignalR: Connection must be started before data can be sent. Call .start() before .send()');\r\n\t\t}\r\n\r\n\t\tif(this.state === 'connecting') {\r\n\t\t\t// Connection hasn't been started yet\r\n\t\t\tthrow new Error('SignalR: Connection has not been fully initialized. Use .start().done() or .start().fail() to run logic after the connection has started.');\r\n\t\t}\r\n\r\n\t\tconst payload = stringifySend(data);\r\n\r\n\t\ttry {\r\n\t\t\tthis.socket?.send(payload);\r\n\t\t} catch(ex) {\r\n\t\t\tthis.onErrorEvent.dispatch('The Web Socket transport is in an invalid state, transitioning into reconnecting.');\r\n\t\t}\r\n\t}\r\n\r\n\tstartHeartbeat() {\r\n\t\tthis.lastActiveAt = new Date().getTime();\r\n\t\tthis.beat();\r\n\t}\r\n\r\n\tmarkLastMessage() {\r\n\t\tthis.lastMessageAt = new Date().getTime();\r\n\t\tthis.lastActiveAt = this.lastMessageAt;\r\n\t}\r\n\r\n\tmarkActive() {\r\n\t\tif(this.verifyLastActive()) {\r\n\t\t\tthis.lastActiveAt = new Date().getTime();\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tverifyLastActive() {\r\n\t\t// If there is no keep alive configured, we cannot assume that timer callbacks will\r\n\t\t// run frequently enough to keep lastActiveAt updated.\r\n\t\t// https://github.com/SignalR/SignalR/issues/4536\r\n\t\tif(!this.keepAliveData.activated ||\r\n\t\t\tnew Date().getTime() - this.lastActiveAt < this.reconnectWindow) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tconst message = `The client has been inactive since ${new Date(this.lastActiveAt)} and it has exceeded the inactivity timeout of ${this.reconnectWindow} ms. Stopping the connection.`;\r\n\t\tlog(message);\r\n\r\n\t\tthis.onErrorEvent.dispatch(message);\r\n\t\tthis.stop(false);\r\n\t\treturn false;\r\n\t}\r\n\r\n\tbeat() {\r\n\t\tif(this.keepAliveData.monitoring)\r\n\t\t\tthis.checkIfAlive();\r\n\r\n\t\t// Ensure that we successfully marked active before continuing the heartbeat.\r\n\t\tif(this.markActive()) {\r\n\t\t\tthis.beatHandle = window.setTimeout(() => {\r\n\t\t\t\tthis.beat();\r\n\t\t\t}, this.beatInterval);\r\n\t\t}\r\n\t}\r\n\r\n\tcheckIfAlive() {\r\n\t\t// Only check if we're connected\r\n\t\tif(this.state === 'connected') {\r\n\t\t\tconst timeElapsed = new Date().getTime() - this.lastMessageAt;\r\n\r\n\t\t\t// Check if the keep alive has completely timed out\r\n\t\t\tif(timeElapsed >= this.keepAliveData.timeout!) {\r\n\t\t\t\tlog(\"Keep alive timed out. Notifying transport that connection has been lost.\");\r\n\t\t\t\tthis.reconnect();\r\n\t\t\t} else if(timeElapsed >= this.keepAliveData.timeoutWarning!) {\r\n\t\t\t\t// This is to assure that the user only gets a single warning\r\n\t\t\t\tif(!this.keepAliveData.userNotified) {\r\n\t\t\t\t\tlog(\"Keep alive has been missed, connection may be dead/slow.\");\r\n\t\t\t\t\tthis.onConnectionSlowEvent.dispatch();\r\n\t\t\t\t\tthis.keepAliveData.userNotified = true;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tthis.keepAliveData.userNotified = false;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tconfigureStopReconnectingTimeout() {\r\n\t\tlet stopReconnectingTimeout: number;\r\n\r\n\t\t// Check if this connection has already been configured to stop reconnecting after a specified timeout.\r\n\t\t// Without this check if a connection is stopped then started events will be bound multiple times.\r\n\t\tif(!this.configuredStopReconnectingTimeout) {\r\n\t\t\tconst onReconnectTimeout = () => {\r\n\t\t\t\tconst message = `Couldn't reconnect within the configured timeout of ${this.disconnectTimeout} ms, disconnecting.`;\r\n\t\t\t\tlog(message);\r\n\t\t\t\tthis.onErrorEvent.dispatch(message);\r\n\t\t\t\tthis.stop(false);\r\n\t\t\t};\r\n\r\n\t\t\tthis.onReconnecting.sub(() => {\r\n\t\t\t\t// Guard against state changing in a previous user defined even handler\r\n\t\t\t\tif(this.state === 'reconnecting')\r\n\t\t\t\t\tstopReconnectingTimeout = window.setTimeout(() => { onReconnectTimeout(); }, this.disconnectTimeout);\r\n\t\t\t});\r\n\r\n\t\t\tthis.onStateChanged.sub((data) => {\r\n\t\t\t\tif(data.oldState === 'reconnecting') {\r\n\t\t\t\t\t// Clear the pending reconnect timeout check\r\n\t\t\t\t\twindow.clearTimeout(stopReconnectingTimeout);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.configuredStopReconnectingTimeout = true;\r\n\t\t}\r\n\t}\r\n\r\n\tasync negotiate(url: string, cancelToken: CancelTokenSource | undefined) {\r\n\t\tconst response = await get(this.prepareQueryString(`${url}/negotiate`), cancelToken?.token, {\r\n\t\t\tskipAuthorization: true,\r\n\t\t});\r\n\r\n\t\tif(response.isError)\r\n\t\t\tthrow `Error during negotiation request: ${response.error}`;\r\n\r\n\t\treturn response.payload;\r\n\t}\r\n\r\n\tisDisconnecting() { return this.state === 'disconnected' }\r\n}\r\n\r\nconst LOGGING = true;\r\nfunction log(msg: string, logging: boolean = LOGGING) {\r\n\tif(logging === false)\r\n\t\treturn;\r\n\r\n\tif(typeof (window.console) === \"undefined\")\r\n\treturn;\r\n\r\n\tconst m = `[${new Date().toTimeString()}] SignalR: ${msg}`;\r\n\tif(window.console.debug) {\r\n\t\twindow.console.debug(m);\r\n\t} else if(window.console.log) {\r\n\t\t// window.console.log(m);\r\n\t}\r\n};\r\nfunction maximizePersistentResponse(minPersistentResponse: ResponseDataMin): ResponseData {\r\n\treturn {\r\n\t\tMessageId: minPersistentResponse.C,\r\n\t\tMessages: minPersistentResponse.M,\r\n\t\tInitialized: typeof (minPersistentResponse.S) !== \"undefined\" ? true : false,\r\n\t\tShouldReconnect: typeof (minPersistentResponse.T) !== \"undefined\" ? true : false,\r\n\t\tGroupsToken: minPersistentResponse.G,\r\n\t\tError: minPersistentResponse.E,\r\n\t};\r\n}\r\n\r\nexport const wsClient = new SignalR('/api/secured/ws');\r\n","export function sort(array: Array, compareFn?: (a: T, b: T) => number): Array {\n // tslint:disable-next-line: no-array-mutation\n return [...array].sort(compareFn);\n}\n","export function throttle void>(func: T, threshhold: number = 250, scope?: any): T {\n let last: number, deferTimer: number;\n return function (this: any) {\n const context = scope || this;\n\n const now = Date.now();\n const args = Array.from(arguments);\n if(last && now < last + threshhold) {\n // hold on to it\n clearTimeout(deferTimer);\n deferTimer = window.setTimeout(function () {\n last = now;\n func.apply(context, args);\n }, threshhold);\n } else {\n last = now;\n func.apply(context, args);\n }\n } as T;\n}\n","export const states = [\n\t{ value: \"AL\", name: \"Alabama\" },\n\t{ value: \"AK\", name: \"Alaska\" },\n\t{ value: \"AZ\", name: \"Arizona\" },\n\t{ value: \"AR\", name: \"Arkansas\" },\n\t{ value: \"CA\", name: \"California\" },\n\t{ value: \"CO\", name: \"Colorado\" },\n\t{ value: \"CT\", name: \"Connecticut\" },\n\t{ value: \"DE\", name: \"Delaware\" },\n\t{ value: \"DC\", name: \"District Of Columbia\" },\n\t{ value: \"FL\", name: \"Florida\" },\n\t{ value: \"GA\", name: \"Georgia\" },\n\t{ value: \"HI\", name: \"Hawaii\" },\n\t{ value: \"ID\", name: \"Idaho\" },\n\t{ value: \"IL\", name: \"Illinois\" },\n\t{ value: \"IN\", name: \"Indiana\" },\n\t{ value: \"IA\", name: \"Iowa\" },\n\t{ value: \"KS\", name: \"Kansas\" },\n\t{ value: \"KY\", name: \"Kentucky\" },\n\t{ value: \"LA\", name: \"Louisiana\" },\n\t{ value: \"ME\", name: \"Maine\" },\n\t{ value: \"MD\", name: \"Maryland\" },\n\t{ value: \"MA\", name: \"Massachusetts\" },\n\t{ value: \"MI\", name: \"Michigan\" },\n\t{ value: \"MN\", name: \"Minnesota\" },\n\t{ value: \"MS\", name: \"Mississippi\" },\n\t{ value: \"MO\", name: \"Missouri\" },\n\t{ value: \"MT\", name: \"Montana\" },\n\t{ value: \"NE\", name: \"Nebraska\" },\n\t{ value: \"NV\", name: \"Nevada\" },\n\t{ value: \"NH\", name: \"New Hampshire\" },\n\t{ value: \"NJ\", name: \"New Jersey\" },\n\t{ value: \"NM\", name: \"New Mexico\" },\n\t{ value: \"NY\", name: \"New York\" },\n\t{ value: \"NC\", name: \"North Carolina\" },\n\t{ value: \"ND\", name: \"North Dakota\" },\n\t{ value: \"OH\", name: \"Ohio\" },\n\t{ value: \"OK\", name: \"Oklahoma\" },\n\t{ value: \"OR\", name: \"Oregon\" },\n\t{ value: \"PA\", name: \"Pennsylvania\" },\n\t{ value: \"RI\", name: \"Rhode Island\" },\n\t{ value: \"SC\", name: \"South Carolina\" },\n\t{ value: \"SD\", name: \"South Dakota\" },\n\t{ value: \"TN\", name: \"Tennessee\" },\n\t{ value: \"TX\", name: \"Texas\" },\n\t{ value: \"UT\", name: \"Utah\" },\n\t{ value: \"VT\", name: \"Vermont\" },\n\t{ value: \"VA\", name: \"Virginia\" },\n\t{ value: \"WA\", name: \"Washington\" },\n\t{ value: \"WV\", name: \"West Virginia\" },\n\t{ value: \"WI\", name: \"Wisconsin\" },\n\t{ value: \"WY\", name: \"Wyoming\" }\n];\n\nexport const territories = [\n\t{ value: \"AS\", name: \"American Samoa\" },\n\t{ value: \"GU\", name: \"Guam\" },\n\t{ value: \"MH\", name: \"Marshall Islands\" },\n\t{ value: \"FM\", name: \"Micronesia\" },\n\t{ value: \"MP\", name: \"Northern Marianas\" },\n\t{ value: \"PW\", name: \"Palau\" },\n\t{ value: \"PR\", name: \"Puerto Rico\" },\n\t{ value: \"VI\", name: \"Virgin Islands\" }\n];\n","import * as React from 'react';\nimport { useDebounce } from 'use-debounce';\nimport Axios, { CancelTokenSource } from 'axios';\nimport { ajax, useEffectDeep } from '../lib';\nimport { isDevelopment } from './isDevelopment';\n\ninterface IApiConfig {\n url: string | ((state: P) => string);\n method?: 'GET' | 'POST';\n debounce?: number;\n body: P;\n format?: (state: P) => any;\n valid?: (state: P) => boolean;\n onComplete?: (result: ResultState) => void;\n}\ntype ResultState = {\n working: boolean;\n error: string | undefined;\n results: Partial,\n};\ntype Dispatch = (value: A, immediate?: boolean) => void;\n\nexport function useApi(config: IApiConfig): [ResultState, typeof config.body, Dispatch>] {\n\n // Track requestPayload with deferred execution\n const [requestPayload, setRequestPayload] = React.useState(config.body);\n const __execute = (requestPayload as any).__execute;\n const [debouncedPayload] = useDebounce(requestPayload, __execute ? 0 : (config.debounce || 0));\n\n // Internal state used for tracking API progress and results\n const [state, setResultState] = React.useState({\n working: !!requestPayload,\n error: undefined as string | undefined,\n results: {} as Partial,\n });\n\n let id = '';\n if(isDevelopment) {\n try {\n const stackLine = new Error().stack?.split('\\n')[2];\n const match = /at\\s+(\\w+)/g.exec(stackLine || '');\n id = match?.[1] || '';\n } catch { }\n }\n\n const cancelTokenRef = React.useRef();\n useEffectDeep(\n () => {\n // dbg('useApi effect run', id, 'teal', JSON.stringify(debouncedPayload));\n if(cancelTokenRef.current) {\n cancelTokenRef.current.cancel();\n }\n cancelTokenRef.current = Axios.CancelToken.source();\n\n if(requestPayload) {\n // Payload is not valid so don't call the API\n if(config.valid && !config.valid(requestPayload)) {\n return;\n }\n\n // Clear state before working\n if(!state.working || JSON.stringify(state.results) !== '{}')\n setResultState({ working: true, error: undefined, results: {} });\n\n // Call the API\n const url = typeof (config.url) === 'string' ? config.url : config.url(requestPayload);\n ajax(url, true, config.format ? config.format(requestPayload) : requestPayload, {\n method: config.method || 'GET',\n cancelToken: cancelTokenRef.current.token,\n }).then(response => {\n if(response.isError === true) {\n setResultState({ working: false, error: response.error, results: {} });\n config.onComplete && config.onComplete({ working: false, error: response.error, results: {} });\n return;\n }\n\n setResultState({ working: false, error: undefined, results: response.payload });\n config.onComplete && config.onComplete({ working: false, error: undefined, results: response.payload });\n }).catch(e => {\n if(Axios.isCancel(e)) {\n return;\n }\n setResultState({ working: false, error: e, results: {} });\n config.onComplete && config.onComplete({ working: false, error: e, results: {} });\n });\n }\n\n return () => {\n if(cancelTokenRef.current) {\n cancelTokenRef.current.cancel('Canceled because of component unmounted or debounce data changed');\n }\n };\n },\n [debouncedPayload],\n );\n\n return [state, requestPayload, (p: React.SetStateAction

    , executeNow?: boolean) => {\n setRequestPayload(s => {\n const newState = typeof p === 'object' ? p : (p as any)(s);\n return Object.assign(newState, { __execute: executeNow });\n });\n }];\n}\n","import * as React from 'react';\nimport equals from 'fast-deep-equal';\n\nexport function useEffectDeep(fn: React.EffectCallback, deps: React.DependencyList) {\n const isFirst = React.useRef(true);\n const prevDeps = React.useRef(deps);\n\n React.useEffect(() => {\n const isSame = prevDeps.current.every((obj, index) => equals(obj, deps[index]));\n\n if(isFirst.current || !isSame) {\n fn();\n }\n\n isFirst.current = false;\n prevDeps.current = deps;\n }, deps);\n}\n","import * as React from 'react';\nimport { ui, HeaderLink } from 'web-shared/store';\n\nexport function useHeaderLinks(links: HeaderLink[]) {\n React.useEffect(() => {\n ui.setHeaderLinks({ links, hideLogin: false });\n }, []);\n}\n","import * as React from 'react';\nexport function useInterval(callback: () => void, delay: number | null) {\n\tconst savedCallback = React.useRef<() => void | Promise>();\n\tconst [count, setCount] = React.useState(0);\n\n\tReact.useEffect(() => {\n\t\t// Store the most recent callback fn\n\t\tsavedCallback.current = callback;\n\t});\n\n\tReact.useEffect(() => {\n\t\tasync function tick() {\n\t\t\t// Execute the callback and wait for return;\n\t\t\tawait savedCallback.current();\n\n\t\t\t// Increment the counter, which causes rerenders\n\t\t\tif(savedCallback.current) {\n\t\t\t\tsetCount(count + 1);\n\t\t\t}\n\t\t}\n\n\t\tconst timer = window.setTimeout(tick, delay);\n\t\treturn () => {\n\t\t\tsavedCallback.current = undefined;\n\t\t\ttimer && clearTimeout(timer);\n\t\t};\n\t}, [delay, count]);\n}\n","import { useState, useEffect } from 'react';\n\nconst breakpoints = {\n xxs: 0,\n xs: 600,\n sm: 768,\n md: 992,\n lg: 1200,\n}\n\nexport type Breakpoints = typeof breakpoints;\nexport type MediaSize = keyof Breakpoints;\n\nfunction getMediaQueries(bps: Breakpoints) {\n const sizes = Object.keys(bps) as MediaSize[];\n const bpArray = sizes\n .sort((a, b) => bps[a] - bps[b])\n .map(bp => ({ name: bp, min: bps[bp] }));\n\n return bpArray.map((bp, i) => {\n const query = [\n i === 0 ? '' : `(min-width: ${bp.min}px)`,\n i === bpArray.length - 1 ? '' : `(max-width: ${bpArray[i + 1].min - 1}px)`\n ].filter(q => q).join(' and ');\n return { name: bp.name, query };\n });\n}\n\nconst mediaQueries = getMediaQueries(breakpoints);\n\nexport function useMedia() {\n const [state, setState] = useState('xs' as MediaSize);\n\n useEffect(\n () => {\n // Configure all media query breakpoints\n const mediaQueryLists = mediaQueries.map(q => ({\n name: q.name,\n mediaQueryList: window.matchMedia(q.query),\n }));\n\n //const mediaQueryList = window.matchMedia(query);\n let active = true;\n\n // Extract state\n function getState() {\n return mediaQueryLists.reduce((newState, bp) => {\n return bp.mediaQueryList.matches ? bp.name : newState;\n }, state);\n }\n\n // Define the listener update function\n const listener = () => {\n if(!active) {\n return;\n }\n\n setState(getState());\n };\n\n // Attach listeners\n mediaQueryLists.forEach(q => q.mediaQueryList.addListener(listener))\n setState(getState());\n\n // Unmount\n return () => {\n active = false;\n mediaQueryLists.forEach(q => q.mediaQueryList.removeListener(listener));\n };\n },\n []\n );\n\n return state;\n}","import * as React from 'react';\nimport { throttle } from 'web-shared/lib';\n\nexport const useWindowScrollPosition = (throttleMs: number = 100) => {\n const [scroll, setScroll] = React.useState({\n x: window.pageXOffset,\n y: window.pageYOffset,\n });\n\n const handle = throttle(() => {\n setScroll({\n x: window.pageXOffset,\n y: window.pageYOffset,\n });\n }, throttleMs);\n\n React.useEffect(() => {\n window.addEventListener('scroll', handle);\n\n return () => {\n window.removeEventListener('scroll', handle);\n };\n }, []);\n\n return scroll;\n};\n\nexport const useWindowScrolledTo = (yOffset: number) => {\n const [state, setState] = React.useState(false);\n\n React.useEffect(() => {\n const handle = throttle(() => {\n const isScrolled = window.pageYOffset >= yOffset;\n if(isScrolled !== state) {\n setState(isScrolled);\n }\n }, 100);\n\n window.addEventListener('scroll', handle);\n return () => window.removeEventListener('scroll', handle);\n }, [state]);\n\n return state;\n};\n","import React from 'react';\nimport { throttle } from 'web-shared/lib';\n\nconst events = new Set<() => void>();\nconst onResize = () => events.forEach(fn => fn());\n\nexport const useWindowSize = (options: { throttleMs?: number } = {}) => {\n const { throttleMs = 100 } = options;\n const [size, setSize] = React.useState({\n width: window.innerWidth,\n height: window.innerHeight,\n });\n\n const handle = throttle(() => {\n setSize({\n width: window.innerWidth,\n height: window.innerHeight,\n });\n }, throttleMs);\n\n React.useEffect(() => {\n if(events.size === 0) {\n window.addEventListener('resize', onResize, true);\n }\n\n events.add(handle);\n\n return () => {\n events.delete(handle);\n\n if(events.size === 0) {\n window.removeEventListener('resize', onResize, true);\n }\n };\n }, []);\n\n return size;\n};\n","export function validatePasswordComplexity(password: string = '') {\n if(password.length < 8) {\n return 'Password must be at least 8 characters';\n }\n\n return '';\n}\n","import styled from 'styled-components';\n\nexport const StyledInstructions = styled.div`margin-bottom: 1em; font-style: italic; color: #555; font-size: 1.2em; line-height: 1.1;`;\n","import * as React from 'react';\r\nimport { Link, useHistory } from 'react-router-dom';\r\nimport { useFormState } from 'react-use-form-state';\r\n\r\nimport { Spinner, Section, SectionHeader, Button } from 'web-shared/components';\r\nimport { auth } from 'web-shared/store';\r\nimport { StyledInstructions } from './instructions';\r\n\r\ninterface FormFields {\r\n userName: string;\r\n password: string;\r\n remember: boolean;\r\n}\r\ninterface Props {\r\n title: string;\r\n skipRedirect?: boolean;\r\n showOnlineBankingNote?: boolean;\r\n}\r\nexport const LoginForm: React.FC = ({ title, skipRedirect, showOnlineBankingNote }) => {\r\n const history = useHistory();\r\n\r\n // See if the remember option was checked\r\n let remember_default = false;\r\n try {\r\n remember_default = localStorage.getItem('rememberLogin') === 'true';\r\n } catch(err) { }\r\n\r\n const [state, setState] = React.useState({\r\n busy: false,\r\n error: '',\r\n });\r\n\r\n const [formState, { checkbox, email, password, label }] = useFormState({\r\n remember: remember_default,\r\n }, {\r\n withIds: true,\r\n onBlur: e => e.target.classList.add('modified'),\r\n });\r\n\r\n async function handleSubmit(e: React.FormEvent) {\r\n e.preventDefault();\r\n const { userName, password, remember } = formState.values;\r\n\r\n setState(() => ({ busy: true, error: '' }));\r\n\r\n try {\r\n const response = await auth.login(userName, password, remember);\r\n\r\n if(response.isError) {\r\n setState({ busy: false, error: response.errorMessage });\r\n if(response.expiredUrl) {\r\n history.replace(response.expiredUrl);\r\n }\r\n return;\r\n }\r\n\r\n if(!skipRedirect) {\r\n setState({ busy: false, error: '' });\r\n\r\n // Redirect\r\n const { from, search } = history.location.state || {};\r\n if(search)\r\n from.search = search;\r\n history.replace(from || '/');\r\n }\r\n } catch(ex) {\r\n const error = 'Unable to contact the login server.';\r\n setState({ busy: false, error: error });\r\n }\r\n }\r\n\r\n return

    \r\n \r\n\r\n
    \r\n
    \r\n
    \r\n {title || 'Welcome Back!'}\r\n \r\n Please enter your email address and password below. If you can't remember your password, select the \"I forgot my password\" button below.\r\n \r\n {showOnlineBankingNote ? \r\n (please note: this is not your online banking login and password)\r\n : null}\r\n
    \r\n\r\n {state.error ?
    \r\n
    {state.error}
    \r\n
    : null}\r\n\r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    ;\r\n};\r\n","import * as React from 'react';\nimport { RouteChildrenProps } from 'react-router-dom';\n\nimport { auth } from 'web-shared/store';\n\nconst LogoffPage: React.FC = () => {\n React.useEffect(() => {\n if(!history) {\n throw new Error('Router component not found!');\n }\n\n auth.logoff();\n\n // Return to the previous page\n history.back();\n });\n\n return null;\n};\n\nexport default LogoffPage;\n","import * as React from 'react';\nimport { RouteChildrenProps } from 'react-router-dom';\n\nimport { Section, NonIdealState } from 'web-shared/components';\n\nconst NotFoundPage: React.FC = () => {\n return
    \n \n\n \n
    ;\n};\n\nexport default NotFoundPage;\n","import {\r\n clearLoginData, getTokenStorage, getToken, getLocalStorage, postForm,\r\n RxStore, clearBranchLoginData, getBranchUserToken, LoginData, setBranchLoginData, setLoginData, getLoginData, gaLogin,\r\n} from 'web-shared/lib';\r\nimport { Bugsnag } from '@bugsnag/js';\r\n\r\nexport type AuthCallback = (isAuthenticated: boolean) => void;\r\nexport type TokenResponseError = {\r\n error: string;\r\n error_description: string;\r\n error_uri?: string;\r\n};\r\nexport interface LoginErrorResponse {\r\n isError: true;\r\n errorMessage: string;\r\n expiredUrl?: string;\r\n}\r\n\r\ntype AuthState = {\r\n admin: boolean;\r\n globalAdmin: boolean;\r\n viewDemographics: boolean;\r\n name: string;\r\n userId: number;\r\n clientId: number;\r\n userName: string;\r\n expires?: string;\r\n token?: string;\r\n emailVerified: boolean;\r\n lenderAssisted?: boolean;\r\n\r\n branchUser: string;\r\n branchLoginModalOpen: boolean;\r\n ui: {\r\n actions: {};\r\n };\r\n};\r\n\r\ninterface UpdateUserParams { email?: string; name?: string; verified?: boolean; }\r\n\r\nclass AuthService extends RxStore {\r\n private onAuthChangeCallback?: AuthCallback;\r\n private bugsnagClient?: Bugsnag.Client;\r\n\r\n constructor(initialState: AuthState) {\r\n super(initialState, 'Auth');\r\n }\r\n initialize(bugsnagClient: Bugsnag.Client | undefined, onAuthChange?: AuthCallback) {\r\n this.bugsnagClient = bugsnagClient;\r\n this.onAuthChangeCallback = onAuthChange;\r\n\r\n // Check for user auth\r\n this.update(s => {\r\n const loginData = getLoginData();\r\n if(getToken(loginData)) {\r\n const name = loginData.name;\r\n const userName = loginData.userName;\r\n const userId = loginData.id;\r\n\r\n s.name = name || '';\r\n s.userName = userName || '';\r\n s.userId = parseInt(userId || '0', 10);\r\n s.clientId = parseInt(loginData.ClientId, 10);\r\n s.admin = loginData.Admin === 'true';\r\n s.globalAdmin = loginData.GlobalAdmin === 'true';\r\n s.viewDemographics = loginData.ViewDemographics === 'true';\r\n s.expires = loginData[\".expires\"];\r\n s.token = loginData.access_token;\r\n s.lenderAssisted = loginData.LenderAssisted === 'true';\r\n\r\n if(this.bugsnagClient) {\r\n this.bugsnagClient.user = {\r\n id: userId,\r\n name: name,\r\n email: userName,\r\n };\r\n }\r\n\r\n this.onAuthChangeCallback && this.onAuthChangeCallback(true);\r\n }\r\n\r\n // Check for branch auth\r\n if(getBranchUserToken()) {\r\n const storage = getLocalStorage();\r\n s.branchUser = storage.getItem('branchUser') || '';\r\n }\r\n }, 'initialize');\r\n }\r\n\r\n async login(userName: string, password: string, remember: boolean): Promise {\r\n // Remove any current auth\r\n clearLoginData();\r\n\r\n // Contact the token server\r\n const result = await postForm('/api/token', {\r\n grant_type: 'password',\r\n username: userName,\r\n password: password,\r\n });\r\n\r\n if(result.isError === true) {\r\n clearLoginData();\r\n return {\r\n isError: true,\r\n errorMessage: result.payload.error_description,\r\n expiredUrl: result.payload.error_uri,\r\n };\r\n }\r\n\r\n const { payload } = result;\r\n\r\n // Store results in local/session storage\r\n setLoginData(payload, remember);\r\n\r\n\r\n // Mark this client as having logged in successfully\r\n localStorage.setItem('successful-login', 'true');\r\n\t\tgaLogin();\r\n\r\n this.update(s => {\r\n s.name = payload.name;\r\n s.userName = userName;\r\n s.userId = parseInt(payload.id, 10);\r\n s.clientId = parseInt(payload.ClientId, 10);\r\n s.admin = payload.Admin === 'true';\r\n s.globalAdmin = payload.GlobalAdmin === 'true';\r\n s.viewDemographics = payload.ViewDemographics === 'true';\r\n s.expires = payload[\".expires\"];\r\n s.token = payload.access_token;\r\n s.lenderAssisted = payload.LenderAssisted === 'true';\r\n }, 'login');\r\n\r\n // Set APM user details\r\n if(this.bugsnagClient) {\r\n this.bugsnagClient.user = {\r\n id: payload.id,\r\n name: payload.name,\r\n email: userName,\r\n };\r\n }\r\n\r\n this.onAuthChangeCallback && this.onAuthChangeCallback(true);\r\n\r\n return payload;\r\n }\r\n logoff() {\r\n this.update(s => {\r\n s.name = '';\r\n s.userName = '';\r\n s.userId = 0;\r\n s.clientId = 0;\r\n s.admin = false;\r\n s.globalAdmin = false;\r\n s.viewDemographics = false;\r\n s.expires = undefined;\r\n s.token = undefined;\r\n s.lenderAssisted = undefined;\r\n }, 'logoff');\r\n\r\n this.onAuthChangeCallback && this.onAuthChangeCallback(false);\r\n\r\n // Remove any current token\r\n clearLoginData();\r\n }\r\n\r\n async branchLogin(userName: string, password: string) {\r\n // Contact the token server\r\n const result = await postForm('/api/token?type=signup', {\r\n grant_type: 'password',\r\n username: userName,\r\n password: password,\r\n });\r\n\r\n if(result.isError === true) {\r\n clearBranchLoginData();\r\n return {\r\n isError: true,\r\n errorMessage: result.payload.error_description,\r\n expiredUrl: result.payload.error_uri,\r\n };\r\n }\r\n\r\n // Set login info\r\n setBranchLoginData(result.payload);\r\n\r\n // Update application state\r\n this.update(s => { s.branchUser = userName; }, 'branchLogin');\r\n\r\n return { error: '' };\r\n }\r\n branchLogoff() {\r\n this.update(s => {\r\n s.branchLoginModalOpen = false;\r\n s.branchUser = '';\r\n }, 'branchLogoff');\r\n\r\n clearBranchLoginData();\r\n }\r\n\r\n toggleBranchLoginModal(visible: boolean) {\r\n this.update(s => { s.branchLoginModalOpen = visible; }, 'toggleBranchLoginModal');\r\n }\r\n\r\n updateUser({ email, name }: UpdateUserParams) {\r\n const tokenStorage = getTokenStorage();\r\n this.update(s => {\r\n if(email !== undefined) {\r\n tokenStorage.setItem('userName', email);\r\n s.userName = email;\r\n }\r\n if(name !== undefined) {\r\n tokenStorage.setItem('name', name);\r\n s.name = name;\r\n }\r\n }, 'updateUser');\r\n }\r\n}\r\nexport const auth = new AuthService({\r\n admin: false,\r\n globalAdmin: false,\r\n name: '',\r\n userId: 0,\r\n clientId: 0,\r\n userName: '',\r\n emailVerified: false,\r\n viewDemographics: false,\r\n\r\n branchUser: '',\r\n branchLoginModalOpen: false,\r\n ui: {\r\n actions: {},\r\n },\r\n});\r\n","import { RxStore } from 'web-shared/lib';\n\nexport interface HeaderLink {\n name: string;\n href: string;\n isHidden?: boolean;\n}\n\nexport interface UIState {\n name: string;\n pageTitle: string;\n\n hideLoginLinks: boolean;\n headerLinks: HeaderLink[];\n}\n\nclass UIService extends RxStore {\n constructor(initialState: UIState) {\n super(initialState, 'UI');\n }\n initialize(appName: string) {\n this.update(s => { s.name = appName; });\n }\n setPageTitle(title: string) {\n this.update(s => { s.pageTitle = title; });\n }\n setHeaderLinks(p: { links: HeaderLink[]; hideLogin: boolean }) {\n this.setState({\n hideLoginLinks: p.hideLogin,\n headerLinks: p.links,\n });\n }\n}\n\nexport const ui = new UIService({\n name: '',\n pageTitle: '',\n\n hideLoginLinks: false,\n headerLinks: [] as HeaderLink[],\n});\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tresult = fn();\n\t\t}\n\t}\n\treturn result;\n};","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"web-frontend:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\t;\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","__webpack_require__.amdD = function () {\n\tthrow new Error('define cannot be used indirect');\n};","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \".\" + {\"4\":\"a7f12b0dfccd36856a2f\",\"20\":\"c52ebb8a9f5f2dd0165e\",\"29\":\"7f6e17d8da8fa42d2c43\",\"46\":\"750876e3b8cfd0f56506\",\"47\":\"0c51110261deadbd4a86\",\"51\":\"8f2e041bb2f7c66e3f34\",\"107\":\"6dff8aa56e480918eb9c\",\"120\":\"ec08877935232f636701\",\"155\":\"2d82c2e123a15f38dc27\",\"199\":\"3d7bd882fc5dc1bac46e\",\"205\":\"310b345dca61df20bfea\",\"209\":\"df3cf6af0e4a58e16150\",\"271\":\"8b4f3df7213c940cf15e\",\"272\":\"2a294bf89584d03ef9ca\",\"336\":\"8d9e166d3a1b0ba87208\",\"344\":\"3c2d520fb1d6dc1198b0\",\"351\":\"1c36399337c0d165d39f\",\"409\":\"780105b52e8e6fbf71db\",\"416\":\"974c56980f3fccf61604\",\"479\":\"09a806121389505a955d\",\"534\":\"22e03588192e5544a839\",\"542\":\"9dc817641f9e9b124f7b\",\"549\":\"35a6b77d7950ee19462b\",\"635\":\"2c6f61f7318717e51770\",\"637\":\"de7fa0b1af3370819077\",\"643\":\"a6beec15a896bc80cff5\",\"661\":\"3f125a97c648282ad6b5\",\"667\":\"ebc57328a0345f0a86d6\",\"698\":\"a9a07a898bd42e0cd8d8\",\"728\":\"6a89ba62b76295897f61\",\"784\":\"0f74388de5cc2c6be2ba\",\"786\":\"0667eece0a5682cf1e21\",\"844\":\"1688eee096a78134c86d\",\"890\":\"9f044c1141ca83905f3f\"}[chunkId] + \".js\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.hmd = (module) => {\n\tmodule = Object.create(module);\n\tif (!module.children) module.children = [];\n\tObject.defineProperty(module, 'exports', {\n\t\tenumerable: true,\n\t\tset: () => {\n\t\t\tthrow new Error('ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: ' + module.id);\n\t\t}\n\t});\n\treturn module;\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"/build/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t143: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tfor(moduleId in moreModules) {\n\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t}\n\t}\n\tif(runtime) runtime(__webpack_require__);\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkIds[i]] = 0;\n\t}\n\t__webpack_require__.O();\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkweb_frontend\"] = self[\"webpackChunkweb_frontend\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [216], () => (__webpack_require__(96848)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"sourceRoot":""}