{"version":3,"sources":["components/PushNotificationIcon.module.css","utils/Configuration.ts","utils/BasePath.ts","utils/AssetPath.ts","hooks/NotificationsContext.ts","components/ColoredSnackbarContent.tsx","components/NotificationBar.tsx","Routes.ts","themes/Light.ts","themes/Dark.ts","themes/Grey.ts","assets/images/applestore-badge.svg","assets/images/googleplay-badge.svg","components/AppStoreBadges.tsx","constants.ts","assets/images/user.svg","layouts/LoginLayout.tsx","services/Api.ts","services/Client.ts","services/RegisterDevice.ts","utils/IdentityToken.ts","views/DeviceRegistration/RegisterOneTimePassword.tsx","models/Methods.ts","services/State.ts","components/FingerTouchIcon.tsx","views/DeviceRegistration/RegisterSecurityKey.tsx","services/UserPreferences.ts","services/Configuration.ts","hooks/RemoteCall.ts","hooks/RedirectionURL.ts","hooks/RequestMethod.ts","views/LoadingPage/LoadingPage.tsx","components/SuccessIcon.tsx","views/LoginPortal/Authenticated.tsx","views/LoginPortal/AuthenticatedView/AuthenticatedView.tsx","components/FixedTextField.tsx","services/FirstFactor.ts","views/LoginPortal/FirstFactor/FirstFactorForm.tsx","components/PushNotificationIcon.tsx","hooks/IntermittentClass.ts","components/PieChartIcon.tsx","components/TimerIcon.tsx","views/LoginPortal/SecondFactor/MethodSelectionDialog.tsx","services/OneTimePassword.ts","components/InformationIcon.tsx","views/LoginPortal/SecondFactor/MethodContainer.tsx","views/LoginPortal/SecondFactor/OneTimePasswordMethod.tsx","views/LoginPortal/SecondFactor/IconWithContext.tsx","views/LoginPortal/SecondFactor/OTPDial.tsx","views/LoginPortal/SecondFactor/PushNotificationMethod.tsx","components/FailureIcon.tsx","hooks/Mounted.ts","services/PushNotification.ts","views/LoginPortal/SecondFactor/SecurityKeyMethod.tsx","components/LinearProgressBar.tsx","services/SecurityKey.ts","hooks/Timer.ts","views/LoginPortal/SecondFactor/SecondFactorForm.tsx","views/LoginPortal/LoginPortal.tsx","hooks/State.ts","hooks/UserInfo.ts","hooks/Configuration.ts","services/SignOut.ts","views/LoginPortal/SignOut/SignOut.tsx","services/ResetPassword.ts","views/ResetPassword/ResetPasswordStep1.tsx","views/ResetPassword/ResetPasswordStep2.tsx","App.tsx","serviceWorker.ts","index.tsx","components/FingerTouchIcon.module.css"],"names":["module","exports","getEmbeddedVariable","variableName","value","document","body","getAttribute","Error","getBasePath","__webpack_public_path__","defaultOptions","NotificationsContext","createContext","notification","setNotification","useNotifications","useNotificationsProps","useContext","notificationBuilder","level","message","timeout","createInfoNotification","useCallback","createSuccessNotification","createWarnNotification","createErrorNotification","isActive","resetNotification","variantIcon","success","CheckCircleIcon","warning","WarningIcon","error","ErrorIcon","info","InfoIcon","ColoredSnackbarContent","props","classes","useStyles","Icon","className","variant","others","SnackbarContent","classnames","icon","iconVariant","makeStyles","theme","backgroundColor","green","palette","dark","primary","main","amber","fontSize","opacity","marginRight","spacing","display","alignItems","NotificationBar","useState","tmpNotification","setTmpNotification","useEffect","shouldSnackbarBeOpen","undefined","Snackbar","open","anchorOrigin","vertical","horizontal","autoHideDuration","onClose","onExited","FirstFactorRoute","AuthenticatedRoute","SecondFactorRoute","SecondFactorU2FRoute","SecondFactorTOTPRoute","SecondFactorPushRoute","ResetPasswordStep1Route","LogoutRoute","Light","createMuiTheme","custom","loadingBar","background","default","paper","Dark","type","Grey","overrides","MuiCssBaseline","color","MuiOutlinedInput","root","borderColor","borderWidth","notchedOutline","MuiCheckbox","MuiInputBase","input","MuiInputLabel","AppStoreBadges","target","targetBlank","width","iconSize","Link","href","googlePlayLink","src","GooglePlay","alt","style","appleStoreLink","AppleStore","GoogleAuthenticator","_extends","Object","assign","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","this","_objectWithoutProperties","excluded","sourceKeys","keys","indexOf","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","id","d","stroke","fill","fillRule","SvgUser","_ref","svgRef","title","titleId","xmlns","xmlnsXlink","height","viewBox","ref","ForwardRef","LoginLayout","Grid","container","justify","Container","maxWidth","rootContainer","item","xs","Typography","children","showBrand","minHeight","textAlign","paddingLeft","paddingRight","margin","poweredBy","grey","basePath","FirstFactorPath","InitiateTOTPRegistrationPath","CompleteTOTPRegistrationPath","InitiateU2FRegistrationPath","CompleteU2FRegistrationStep1Path","CompleteU2FRegistrationStep2Path","InitiateU2FSignInPath","CompleteU2FSignInPath","CompletePushNotificationSignInPath","CompleteTOTPSignInPath","InitiateResetPasswordPath","CompleteResetPasswordPath","ResetPasswordPath","LogoutPath","StatePath","UserInfoPath","UserInfo2FAMethodPath","ConfigurationPath","toData","resp","data","hasServiceError","errResp","toErrorResponse","status","errored","PostWithOptionalResponse","path","a","axios","post","res","Post","Get","get","initiateTOTPRegistrationProcess","completeTOTPRegistrationProcess","processToken","token","initiateU2FRegistrationProcess","completeU2FRegistrationProcessStep1","completeU2FRegistrationProcessStep2","response","extractIdentityToken","locationSearch","queryParams","queryString","parse","SecondFactorMethod","AuthenticationLevel","RegisterOneTimePassword","history","useHistory","location","useLocation","secretURL","setSecretURL","secretBase32","setSecretBase32","hasErrored","setHasErrored","isLoading","setIsLoading","search","completeRegistrationProcess","secret","otpauth_url","base32_secret","console","SecretButton","text","action","IconButton","secretButtons","onClick","navigator","clipboard","writeText","qrcodeFuzzyStyle","fuzzy","googleAuthenticator","googleAuthenticatorText","googleAuthenticatorBadges","qrcodeContainer","qrcode","size","CircularProgress","loader","failureIcon","faTimesCircle","TextField","label","InputProps","readOnly","faKey","faCopy","Button","doneButton","push","disabled","paddingTop","paddingBottom","marginTop","marginBottom","filter","typography","position","top","left","red","FingerTouchIcon","shakingClass","animated","shaking","strong","x","y","hand","wave","RegisterSecurityKey","setRegistrationInProgress","handleBackClick","registerStep1","registerRequests","r","appId","challenge","version","u2fApi","register","registerResponse","instruction","toEnum","method","U2F","TOTP","MobilePush","toString","getUserPreferences","setPreferred2FAMethod","getConfiguration","config","available_methods","Set","map","useRemoteCall","fn","deps","setData","inProgress","setInProgress","setError","fnCallback","useRedirectionURL","useRequestMethod","getState","LoadingPage","useTheme","SuccessIcon","faCheckCircle","Authenticated","iconContainer","flex","AuthenticatedView","name","SignOutRoute","mainContainer","border","borderRadius","padding","FixedTextField","InputLabelProps","inputProps","autoCapitalize","postFirstFactor","username","password","rememberMe","targetURL","requestMethod","keepMeLoggedIn","FirstFactorForm","redirectionURL","setRememberMe","setUsername","usernameError","setUsernameError","setPassword","passwordError","setPasswordError","usernameRef","useRef","passwordRef","setTimeout","current","focus","clearTimeout","handleSignIn","onAuthenticationStart","onAuthenticationSuccess","redirect","onAuthenticationFailure","inputRef","required","fullWidth","onChange","v","onFocus","onKeyPress","ev","preventDefault","resetPassword","leftAlign","actionRow","flexEnd","FormControlLabel","control","Checkbox","checked","component","rd","variable","vars","window","substring","split","pair","getQueryVariable","resetLink","flexDirection","cursor","flexGrow","justifyContent","rightAlign","verticalAlign","PushNotificationIcon","wiggleClass","classname","activeMilliseconds","inactiveMillisecond","startMillisecond","currentClass","setCurrentClass","firstTime","setFirstTime","useIntermittentClass","wiggle","PieChartIcon","maxProgress","cx","cy","strokeWidth","strokeDasharray","progress","transform","TimerIcon","radius","timeProgress","setTimeProgress","initialValue","Date","getTime","period","interval","setInterval","clearInterval","MethodSelectionDialog","pieChartIcon","Dialog","DialogContent","methods","has","MethodItem","u2fSupported","DialogActions","buttonRoot","completeTOTPSignIn","passcode","State","InformationIcon","faInfoCircle","DefaultMethodContainer","registerMessage","registered","stateClass","state","ALREADY_AUTHENTICATED","NOT_REGISTERED","NotRegisteredContainer","METHOD","explanation","containerFlex","onRegisterClick","flexWrap","alignContent","MethodContainer","IconWithContext","context","OTPDial","dial","otpInput","shouldAutoFocus","numInputs","isDisabled","InProgress","Success","isInputNum","Failure","inputStyle","otpDigitInput","inputError","boxSizing","marginLeft","OneTimePasswordMethod","setPasscode","authenticationLevel","TwoFactor","Idle","setState","onSignInSuccess","onSignInError","onSignInErrorCallback","onSignInSuccessCallback","signInFunc","passcodeStr","methodState","MethodContainerState","totp_period","FailureIcon","useIsMountedRef","isMountedRef","completePushNotificationSignIn","PushNotificationMethod","SignInInProgress","mounted","LinearProgressBar","progressRoot","transition","LinearProgress","bar1Determinate","initiateU2FSignin","completeU2FSignin","signResponse","SecurityKeyMethod","WaitTouch","timeoutMs","startDate","setStartDate","percent","setPercent","trigger","clear","intervalNode","p","useTimer","signInTimeout","timerPercent","triggerTimer","doInitiateSignIn","signRequest","signRequests","registeredKeys","keyHandle","sign","SigninInProgress","timer","onRetryClick","progressBarStyle","touch","failure","SecondFactorForm","methodSelectionOpen","setMethodSelectionOpen","registrationInProgress","setU2fSupported","ensureSupport","then","initiateRegistration","initiateRegistrationFunc","handleMethodSelected","onMethodChanged","userInfo","display_name","configuration","methodContainer","exact","has_totp","err","has_u2f","to","LoginPortal","firstFactorDisabled","setFirstFactorDisabled","fetchState","fetchStateError","fetchUserInfo","fetchUserInfoError","fetchConfiguration","fetchConfigurationError","url","authentication_level","OneFactor","Unauthenticated","redirectionSuffix","encodeURIComponent","second_factor_enabled","handleAuthSuccess","firstFactorReady","pathname","ComponentOrLoading","ready","signOut","SignOut","timedOut","setTimedOut","safeRedirect","setSafeRedirect","doSignOut","safeTargetURL","typo","initiateResetPasswordProcess","completeResetPasswordProcess","newPassword","ResetPasswordStep1","doInitiateResetPasswordProcess","pre","msg","e","ResetPasswordStep2","formDisabled","setFormDisabled","password1","setPassword1","password2","setPassword2","errorPassword1","setErrorPassword1","errorPassword2","setErrorPassword2","completeProcess","doResetPassword","includes","Theme","themes","faConfig","autoAddCss","App","ThemeProvider","CssBaseline","Provider","basename","Boolean","hostname","match","ReactDOM","render","getElementById","serviceWorker","registration","unregister"],"mappings":"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","file":"static/js/main.d6a84a59.chunk.js","sourcesContent":["// extracted by mini-css-extract-plugin\nmodule.exports = {\"wiggle\":\"PushNotificationIcon_wiggle__kPe3e\"};","export function getEmbeddedVariable(variableName: string) {\n const value = document.body.getAttribute(`data-${variableName}`);\n if (value === null) {\n throw new Error(`No ${variableName} embedded variable detected`);\n }\n\n return value;\n}\n\nexport function getRememberMe() {\n return getEmbeddedVariable(\"rememberme\") === \"true\";\n}\n\nexport function getResetPassword() {\n return getEmbeddedVariable(\"resetpassword\") === \"true\";\n}\n\nexport function getTheme() {\n return getEmbeddedVariable(\"theme\");\n}\n","import { getEmbeddedVariable } from \"./Configuration\";\n\nexport function getBasePath() {\n return getEmbeddedVariable(\"basepath\");\n}\n","import { getBasePath } from \"./BasePath\";\n\n__webpack_public_path__ = \"/\";\n\nif (getBasePath() !== \"\") {\n __webpack_public_path__ = getBasePath() + \"/\";\n}\n","import { useCallback, createContext, useContext } from \"react\";\n\nimport { Level } from \"../components/ColoredSnackbarContent\";\nimport { Notification } from \"../models/Notifications\";\n\nconst defaultOptions = {\n timeout: 5,\n};\n\ninterface NotificationContextProps {\n notification: Notification | null;\n setNotification: (n: Notification | null) => void;\n}\n\nconst NotificationsContext = createContext({ notification: null, setNotification: () => {} });\n\nexport default NotificationsContext;\n\nexport function useNotifications() {\n let useNotificationsProps = useContext(NotificationsContext);\n\n const notificationBuilder = (level: Level) => {\n return (message: string, timeout?: number) => {\n useNotificationsProps.setNotification({\n level,\n message,\n timeout: timeout ? timeout : defaultOptions.timeout,\n });\n };\n };\n\n const resetNotification = () => useNotificationsProps.setNotification(null);\n /* eslint-disable react-hooks/exhaustive-deps */\n const createInfoNotification = useCallback(notificationBuilder(\"info\"), []);\n const createSuccessNotification = useCallback(notificationBuilder(\"success\"), []);\n const createWarnNotification = useCallback(notificationBuilder(\"warning\"), []);\n const createErrorNotification = useCallback(notificationBuilder(\"error\"), []);\n /* eslint-enable react-hooks/exhaustive-deps */\n const isActive = useNotificationsProps.notification !== null;\n\n return {\n notification: useNotificationsProps.notification,\n resetNotification,\n createInfoNotification,\n createSuccessNotification,\n createWarnNotification,\n createErrorNotification,\n isActive,\n };\n}\n","import React from \"react\";\n\nimport { makeStyles, SnackbarContent } from \"@material-ui/core\";\nimport { amber, green } from \"@material-ui/core/colors\";\nimport { SnackbarContentProps } from \"@material-ui/core/SnackbarContent\";\nimport CheckCircleIcon from \"@material-ui/icons/CheckCircle\";\nimport ErrorIcon from \"@material-ui/icons/Error\";\nimport InfoIcon from \"@material-ui/icons/Info\";\nimport WarningIcon from \"@material-ui/icons/Warning\";\nimport classnames from \"classnames\";\n\nconst variantIcon = {\n success: CheckCircleIcon,\n warning: WarningIcon,\n error: ErrorIcon,\n info: InfoIcon,\n};\n\nexport type Level = keyof typeof variantIcon;\n\nexport interface Props extends SnackbarContentProps {\n className?: string;\n level: Level;\n message: string;\n}\n\nconst ColoredSnackbarContent = function (props: Props) {\n const classes = useStyles();\n const Icon = variantIcon[props.level];\n\n const { className, variant, message, ...others } = props;\n\n return (\n \n \n {message}\n \n }\n {...others}\n />\n );\n};\n\nexport default ColoredSnackbarContent;\n\nconst useStyles = makeStyles((theme) => ({\n success: {\n backgroundColor: green[600],\n },\n error: {\n backgroundColor: theme.palette.error.dark,\n },\n info: {\n backgroundColor: theme.palette.primary.main,\n },\n warning: {\n backgroundColor: amber[700],\n },\n icon: {\n fontSize: 20,\n },\n iconVariant: {\n opacity: 0.9,\n marginRight: theme.spacing(1),\n },\n message: {\n display: \"flex\",\n alignItems: \"center\",\n },\n}));\n","import React, { useState, useEffect } from \"react\";\n\nimport { Snackbar } from \"@material-ui/core\";\n\nimport { useNotifications } from \"../hooks/NotificationsContext\";\nimport { Notification } from \"../models/Notifications\";\nimport ColoredSnackbarContent from \"./ColoredSnackbarContent\";\n\nexport interface Props {\n onClose: () => void;\n}\n\nconst NotificationBar = function (props: Props) {\n const [tmpNotification, setTmpNotification] = useState(null as Notification | null);\n const { notification } = useNotifications();\n\n useEffect(() => {\n if (notification && notification !== null) {\n setTmpNotification(notification);\n }\n }, [notification]);\n\n const shouldSnackbarBeOpen = notification !== undefined && notification !== null;\n\n return (\n setTmpNotification(null)}\n >\n \n \n );\n};\n\nexport default NotificationBar;\n","export const FirstFactorRoute = \"/\";\nexport const AuthenticatedRoute = \"/authenticated\";\n\nexport const SecondFactorRoute = \"/2fa\";\nexport const SecondFactorU2FRoute = \"/2fa/security-key\";\nexport const SecondFactorTOTPRoute = \"/2fa/one-time-password\";\nexport const SecondFactorPushRoute = \"/2fa/push-notification\";\n\nexport const ResetPasswordStep1Route = \"/reset-password/step1\";\nexport const ResetPasswordStep2Route = \"/reset-password/step2\";\nexport const RegisterSecurityKeyRoute = \"/security-key/register\";\nexport const RegisterOneTimePasswordRoute = \"/one-time-password/register\";\nexport const LogoutRoute = \"/logout\";\n","import { createMuiTheme } from \"@material-ui/core/styles\";\n\nconst Light = createMuiTheme({\n custom: {\n icon: \"#000\",\n loadingBar: \"#000\",\n },\n palette: {\n primary: {\n main: \"#1976d2\",\n },\n background: {\n default: \"#fff\",\n paper: \"#fff\",\n },\n },\n});\n\nexport default Light;\n","import { createMuiTheme } from \"@material-ui/core/styles\";\n\nconst Dark = createMuiTheme({\n custom: {\n icon: \"#fff\",\n loadingBar: \"#fff\",\n },\n palette: {\n type: \"dark\",\n primary: {\n main: \"#1976d2\",\n },\n },\n});\n\nexport default Dark;\n","import { createMuiTheme } from \"@material-ui/core/styles\";\n\nconst Grey = createMuiTheme({\n custom: {\n icon: \"#929aa5\",\n loadingBar: \"#929aa5\",\n },\n palette: {\n primary: {\n main: \"#929aa5\",\n },\n background: {\n default: \"#2f343e\",\n paper: \"#2f343e\",\n },\n },\n overrides: {\n MuiCssBaseline: {\n \"@global\": {\n body: {\n backgroundColor: \"#2f343e\",\n color: \"#929aa5\",\n },\n },\n },\n MuiOutlinedInput: {\n root: {\n \"& $notchedOutline\": {\n borderColor: \"#929aa5\",\n },\n \"&:hover:not($disabled):not($focused):not($error) $notchedOutline\": {\n borderColor: \"#929aa5\",\n borderWidth: 2,\n },\n \"&$focused $notchedOutline\": {\n borderColor: \"#929aa5\",\n },\n },\n notchedOutline: {},\n },\n MuiCheckbox: {\n root: {\n color: \"#929aa5\",\n },\n },\n MuiInputBase: {\n input: {\n color: \"#929aa5\",\n },\n },\n MuiInputLabel: {\n root: {\n color: \"#929aa5\",\n },\n },\n },\n});\n\nexport default Grey;\n","export default __webpack_public_path__ + \"static/media/applestore-badge.15f01eef.svg\";","export default __webpack_public_path__ + \"static/media/googleplay-badge.6577102c.svg\";","import React from \"react\";\n\nimport { Link } from \"@material-ui/core\";\n\nimport AppleStore from \"../assets/images/applestore-badge.svg\";\nimport GooglePlay from \"../assets/images/googleplay-badge.svg\";\n\nexport interface Props {\n iconSize: number;\n googlePlayLink: string;\n appleStoreLink: string;\n\n targetBlank?: boolean;\n className?: string;\n}\n\nconst AppStoreBadges = function (props: Props) {\n const target = props.targetBlank ? \"_blank\" : undefined;\n\n const width = props.iconSize;\n\n return (\n
\n \n \"google\n \n \n \"apple\n \n
\n );\n};\n\nexport default AppStoreBadges;\n","export const GoogleAuthenticator = {\n googlePlay: \"https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2&hl=en_us\",\n appleStore: \"https://apps.apple.com/us/app/google-authenticator/id388497605\",\n};\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"g\", {\n id: \"svgg\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n id: \"path0\",\n d: \"M188.000 122.522 C 184.240 123.548,181.354 124.881,178.890 126.734 C 177.504 127.776,175.500 129.653,175.500 129.910 C 175.500 130.263,180.768 131.988,181.002 131.712 C 181.062 131.641,181.672 130.721,182.358 129.666 C 183.837 127.392,186.033 124.788,187.674 123.362 C 188.325 122.796,188.795 122.340,188.720 122.348 C 188.645 122.357,188.321 122.435,188.000 122.522 M199.598 123.287 C 201.807 125.193,204.001 127.914,205.988 131.214 C 206.244 131.639,206.457 131.819,206.642 131.766 C 206.793 131.722,207.254 131.602,207.667 131.500 C 208.565 131.276,211.289 130.356,211.728 130.128 C 212.009 129.983,211.943 129.868,211.062 128.968 C 208.268 126.114,204.126 123.757,200.128 122.747 C 199.554 122.601,198.940 122.440,198.764 122.388 C 198.589 122.336,198.964 122.741,199.598 123.287 M191.108 123.861 C 188.757 125.627,185.517 129.250,184.099 131.699 L 183.646 132.481 184.281 132.580 C 184.631 132.635,185.329 132.750,185.833 132.836 C 187.105 133.053,190.223 133.333,191.375 133.333 L 192.333 133.333 192.333 128.167 C 192.333 125.325,192.315 123.001,192.292 123.002 C 192.269 123.002,191.736 123.389,191.108 123.861 M195.000 128.167 L 195.000 133.333 195.958 133.333 C 197.111 133.333,200.228 133.053,201.500 132.836 C 202.004 132.750,202.698 132.636,203.042 132.582 L 203.667 132.485 203.396 131.951 C 202.587 130.358,199.837 126.985,198.067 125.417 C 196.928 124.406,195.180 123.000,195.063 123.000 C 195.028 123.000,195.000 125.325,195.000 128.167 M173.137 132.451 C 171.060 135.596,169.370 140.261,169.073 143.667 L 168.957 145.000 173.124 145.000 L 177.290 145.000 177.405 143.792 C 177.671 141.008,178.305 138.182,179.250 135.571 C 179.659 134.442,179.765 133.966,179.620 133.917 C 179.508 133.880,178.968 133.722,178.420 133.568 C 177.606 133.339,174.983 132.403,173.819 131.927 C 173.633 131.851,173.430 132.006,173.137 132.451 M213.309 132.004 C 212.933 132.223,210.353 133.143,208.833 133.599 C 208.146 133.806,207.599 134.037,207.618 134.112 C 207.637 134.188,207.949 135.112,208.312 136.167 C 209.093 138.438,209.788 141.605,209.940 143.580 L 210.049 145.000 214.216 145.000 L 218.383 145.000 218.282 143.700 C 218.017 140.257,216.487 135.883,214.497 132.875 C 213.767 131.773,213.739 131.752,213.309 132.004 M181.778 136.254 C 180.808 138.714,180.000 142.391,180.000 144.345 L 180.000 145.000 186.167 145.000 L 192.333 145.000 192.333 140.361 L 192.333 135.722 189.542 135.531 C 188.006 135.426,185.887 135.189,184.833 135.004 C 183.779 134.820,182.801 134.668,182.661 134.668 C 182.492 134.667,182.191 135.207,181.778 136.254 M202.417 135.014 C 201.500 135.184,199.456 135.415,197.875 135.527 L 195.000 135.730 195.000 140.365 L 195.000 145.000 201.253 145.000 L 207.506 145.000 207.430 144.625 C 207.387 144.419,207.307 143.762,207.250 143.167 C 207.035 140.893,206.418 138.406,205.462 135.958 C 204.878 134.463,205.070 134.522,202.417 135.014 M169.056 149.404 C 169.412 153.622,172.632 161.655,173.814 161.274 C 173.962 161.226,175.021 160.854,176.167 160.448 C 177.313 160.041,178.588 159.610,179.000 159.490 C 179.412 159.370,179.767 159.262,179.789 159.250 C 179.810 159.238,179.603 158.645,179.329 157.932 C 178.339 155.361,177.617 152.223,177.398 149.542 L 177.285 148.167 173.118 148.167 L 168.951 148.167 169.056 149.404 M180.068 149.708 C 180.348 153.414,182.035 158.771,182.868 158.596 C 185.312 158.081,187.863 157.743,190.625 157.566 L 192.333 157.457 192.333 152.812 L 192.333 148.167 186.143 148.167 L 179.952 148.167 180.068 149.708 M195.000 152.812 L 195.000 157.457 196.708 157.566 C 199.322 157.733,201.848 158.061,204.686 158.600 C 205.569 158.768,208.047 149.353,207.396 148.299 C 207.351 148.226,204.543 148.167,201.157 148.167 L 195.000 148.167 195.000 152.812 M210.092 148.375 C 210.056 148.490,209.983 149.221,209.928 150.000 C 209.756 152.433,208.778 156.501,207.758 159.017 C 207.671 159.231,207.861 159.344,208.700 159.579 C 209.277 159.741,210.650 160.204,211.750 160.609 L 213.750 161.346 214.110 160.898 C 216.186 158.311,218.314 152.249,218.330 148.875 L 218.333 148.167 214.245 148.167 C 211.119 148.167,210.141 148.216,210.092 148.375 M189.667 159.957 C 187.568 160.141,184.122 160.645,183.978 160.789 C 183.433 161.334,189.037 167.889,191.542 169.635 L 192.333 170.187 192.333 165.010 L 192.333 159.833 191.375 159.862 C 190.848 159.878,190.079 159.921,189.667 159.957 M195.000 165.150 L 195.000 170.516 195.708 170.026 C 198.444 168.131,201.510 164.778,203.309 161.713 L 203.819 160.842 203.201 160.683 C 202.428 160.483,198.777 160.047,196.625 159.897 L 195.000 159.784 195.000 165.150 M178.811 161.996 C 177.653 162.349,176.386 162.777,175.995 162.947 L 175.285 163.257 176.851 164.731 C 179.933 167.633,184.829 170.234,188.239 170.781 L 188.895 170.886 187.906 169.994 C 185.691 167.998,183.161 164.924,181.802 162.578 C 181.407 161.896,181.046 161.341,181.000 161.346 C 180.954 161.351,179.969 161.643,178.811 161.996 M206.109 162.100 C 205.205 163.996,202.572 167.415,200.441 169.458 C 199.653 170.215,199.082 170.833,199.173 170.833 C 201.409 170.833,207.812 167.368,210.750 164.568 L 212.083 163.298 211.392 162.983 C 210.521 162.587,207.070 161.500,206.684 161.500 C 206.516 161.500,206.275 161.752,206.109 162.100 \",\n stroke: \"none\",\n fill: \"#fbfbfb\",\n fillRule: \"evenodd\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"path1\",\n d: \"M189.583 0.282 C 186.312 0.955,182.111 2.770,180.696 4.123 C 180.575 4.239,180.418 4.333,180.348 4.333 C 180.277 4.333,179.862 4.671,179.426 5.083 C 178.989 5.496,178.598 5.833,178.558 5.833 C 178.489 5.833,178.326 6.003,177.194 7.250 C 170.153 15.015,169.637 26.975,175.979 35.417 C 176.842 36.565,179.393 39.167,179.656 39.167 C 179.754 39.167,179.833 39.235,179.833 39.318 C 179.833 39.497,182.552 41.333,182.817 41.333 C 182.918 41.333,183.000 41.390,183.000 41.459 C 183.000 41.529,183.394 41.759,183.875 41.971 C 184.356 42.182,184.900 42.424,185.083 42.507 C 186.420 43.113,189.436 43.989,190.208 43.996 L 190.667 44.000 190.667 81.572 C 190.667 117.213,190.652 119.148,190.375 119.224 C 190.215 119.268,189.558 119.393,188.917 119.502 C 181.868 120.695,174.957 125.113,171.057 130.917 C 170.564 131.650,170.106 132.329,170.039 132.426 C 169.270 133.537,167.895 136.661,167.403 138.417 C 167.249 138.967,167.021 139.754,166.897 140.167 C 165.484 144.869,166.213 152.979,168.468 157.643 C 168.755 158.237,168.625 158.424,167.470 159.083 C 166.440 159.672,163.541 161.366,163.333 161.501 C 162.946 161.754,160.614 163.091,160.333 163.221 C 160.196 163.285,159.858 163.485,159.583 163.667 C 159.308 163.848,158.971 164.046,158.833 164.107 C 158.696 164.168,158.471 164.310,158.333 164.423 C 158.196 164.537,157.708 164.831,157.250 165.076 C 156.792 165.322,156.192 165.667,155.917 165.843 C 155.642 166.019,155.304 166.220,155.167 166.290 C 154.766 166.493,152.676 167.723,152.192 168.040 C 151.949 168.199,151.636 168.387,151.496 168.456 C 150.643 168.882,148.074 170.420,148.028 170.532 C 147.997 170.606,147.902 170.667,147.816 170.667 C 147.730 170.667,147.380 170.841,147.038 171.055 C 146.696 171.269,145.892 171.728,145.250 172.075 C 144.608 172.422,143.965 172.810,143.820 172.937 C 143.675 173.063,143.508 173.167,143.448 173.167 C 143.389 173.167,142.929 173.429,142.428 173.750 C 141.926 174.071,141.467 174.333,141.407 174.333 C 141.347 174.333,140.965 174.558,140.557 174.833 C 140.150 175.108,139.781 175.333,139.738 175.333 C 139.695 175.333,139.343 175.534,138.955 175.778 C 138.567 176.023,137.837 176.448,137.333 176.723 C 136.829 176.997,136.379 177.266,136.333 177.321 C 136.287 177.375,135.950 177.569,135.583 177.752 C 135.217 177.934,134.879 178.127,134.833 178.181 C 134.787 178.235,134.300 178.523,133.750 178.823 C 133.200 179.122,132.712 179.420,132.667 179.485 C 132.621 179.549,132.283 179.751,131.917 179.932 C 131.550 180.114,130.950 180.450,130.583 180.679 C 130.217 180.909,129.560 181.281,129.125 181.506 C 128.690 181.732,128.333 181.972,128.333 182.041 C 128.333 182.110,128.231 182.167,128.106 182.167 C 127.981 182.167,127.699 182.306,127.481 182.476 C 127.262 182.647,126.558 183.072,125.917 183.421 C 125.275 183.770,124.712 184.101,124.667 184.156 C 124.621 184.211,124.396 184.348,124.167 184.461 C 123.938 184.573,123.638 184.739,123.500 184.831 C 123.139 185.071,119.963 186.911,119.667 187.052 C 119.529 187.117,119.192 187.318,118.917 187.499 C 118.642 187.680,118.267 187.903,118.083 187.995 C 117.900 188.086,117.450 188.349,117.083 188.579 C 116.717 188.808,116.267 189.073,116.083 189.167 C 115.900 189.261,115.525 189.482,115.250 189.657 C 114.975 189.833,114.375 190.178,113.917 190.424 C 113.458 190.671,112.982 190.954,112.857 191.055 C 112.619 191.247,112.085 191.570,111.667 191.777 C 111.529 191.844,110.679 192.335,109.778 192.867 C 108.877 193.398,108.112 193.833,108.078 193.833 C 108.044 193.833,107.694 194.049,107.300 194.313 C 106.906 194.577,106.186 195.008,105.700 195.272 C 105.214 195.535,104.660 195.837,104.469 195.943 C 104.155 196.118,103.934 195.946,102.103 194.099 C 99.456 191.430,95.201 188.667,93.736 188.667 C 93.597 188.667,93.273 188.558,93.015 188.424 C 90.586 187.168,83.658 187.142,79.667 188.373 C 78.146 188.842,75.747 189.926,74.583 190.670 C 74.308 190.846,73.877 191.107,73.625 191.249 C 73.373 191.392,73.167 191.582,73.167 191.671 C 73.167 191.760,73.091 191.833,72.999 191.833 C 72.530 191.833,68.500 195.880,68.500 196.350 C 68.500 196.433,68.437 196.500,68.360 196.500 C 68.282 196.500,68.078 196.762,67.905 197.083 C 67.732 197.404,67.533 197.667,67.462 197.667 C 67.391 197.667,67.333 197.743,67.333 197.837 C 67.333 197.930,67.154 198.290,66.936 198.637 C 66.717 198.983,66.371 199.675,66.167 200.175 C 65.964 200.675,65.702 201.308,65.585 201.583 C 63.849 205.684,63.667 211.971,65.160 216.287 C 65.814 218.178,65.984 218.596,66.498 219.583 C 68.829 224.059,72.073 227.272,76.417 229.405 C 78.406 230.382,78.501 230.421,79.583 230.712 C 80.133 230.859,81.071 231.112,81.667 231.273 C 83.241 231.699,89.049 231.706,90.833 231.284 C 92.723 230.837,94.572 230.235,95.403 229.797 C 95.579 229.704,96.278 229.336,96.956 228.979 C 99.915 227.421,104.024 223.541,105.052 221.333 C 105.117 221.196,105.355 220.783,105.582 220.417 C 106.431 219.046,107.298 216.749,107.939 214.167 C 108.374 212.416,108.374 206.459,107.939 204.833 C 107.416 202.878,106.955 201.419,106.810 201.258 C 106.367 200.768,106.814 200.353,109.250 198.994 C 109.800 198.687,110.275 198.376,110.306 198.301 C 110.336 198.227,110.436 198.167,110.527 198.167 C 110.681 198.167,113.815 196.365,114.000 196.171 C 114.046 196.123,114.421 195.910,114.833 195.699 C 115.246 195.488,115.808 195.170,116.083 194.993 C 116.358 194.816,116.733 194.597,116.917 194.505 C 117.100 194.414,117.550 194.151,117.917 193.921 C 118.283 193.692,118.733 193.425,118.917 193.328 C 119.100 193.231,119.400 193.061,119.583 192.949 C 119.767 192.837,120.430 192.447,121.058 192.081 C 121.685 191.716,122.398 191.286,122.641 191.127 C 122.884 190.967,123.196 190.784,123.333 190.719 C 123.471 190.653,124.321 190.165,125.222 189.633 C 126.123 189.102,126.888 188.667,126.922 188.667 C 126.956 188.667,127.306 188.451,127.700 188.187 C 128.094 187.923,128.792 187.505,129.250 187.258 C 129.708 187.012,130.308 186.666,130.583 186.490 C 130.858 186.314,131.196 186.119,131.333 186.057 C 131.471 185.994,131.958 185.708,132.417 185.420 C 132.875 185.132,133.362 184.844,133.500 184.780 C 133.637 184.716,133.975 184.515,134.250 184.333 C 134.525 184.152,134.862 183.947,135.000 183.877 C 135.401 183.673,137.491 182.443,137.974 182.127 C 138.218 181.967,138.529 181.784,138.667 181.718 C 138.804 181.653,139.442 181.291,140.083 180.914 C 140.725 180.537,141.362 180.176,141.500 180.112 C 141.637 180.049,141.949 179.866,142.192 179.706 C 142.675 179.390,144.765 178.160,145.167 177.956 C 145.304 177.887,145.642 177.681,145.917 177.500 C 146.192 177.319,146.529 177.118,146.667 177.054 C 146.804 176.989,147.292 176.701,147.750 176.413 C 148.208 176.126,148.696 175.839,148.833 175.776 C 148.971 175.714,149.308 175.515,149.583 175.333 C 149.858 175.152,150.196 174.947,150.333 174.877 C 150.735 174.673,152.825 173.443,153.308 173.127 C 153.551 172.967,153.862 172.785,154.000 172.721 C 154.137 172.657,154.775 172.296,155.417 171.919 C 156.058 171.542,156.696 171.180,156.833 171.115 C 156.971 171.050,157.282 170.866,157.526 170.706 C 157.769 170.547,158.481 170.118,159.109 169.752 C 159.737 169.387,160.400 168.995,160.583 168.882 C 160.767 168.769,161.123 168.592,161.375 168.489 C 161.627 168.385,161.833 168.233,161.833 168.150 C 161.833 168.068,161.907 168.000,161.997 168.000 C 162.137 168.000,162.954 167.532,164.254 166.708 C 164.435 166.593,164.769 166.420,164.997 166.323 C 165.224 166.225,165.449 166.094,165.497 166.031 C 165.544 165.968,165.921 165.736,166.333 165.516 C 166.746 165.296,167.395 164.909,167.776 164.657 C 168.157 164.405,168.626 164.149,168.818 164.088 C 169.010 164.027,169.167 163.908,169.167 163.822 C 169.167 163.737,169.238 163.667,169.326 163.667 C 169.414 163.667,169.865 163.443,170.329 163.169 C 171.131 162.696,171.833 162.804,171.833 163.401 C 171.833 163.690,175.051 166.990,176.250 167.930 C 176.708 168.289,177.175 168.670,177.287 168.775 C 177.399 168.881,177.774 169.139,178.121 169.350 C 178.467 169.560,178.787 169.774,178.833 169.825 C 179.003 170.012,179.961 170.534,181.583 171.323 C 190.023 175.428,200.245 174.950,208.083 170.083 C 208.450 169.855,208.919 169.581,209.125 169.474 C 209.331 169.367,209.500 169.217,209.500 169.140 C 209.500 169.063,209.612 169.000,209.750 169.000 C 209.887 169.000,210.000 168.935,210.000 168.855 C 210.000 168.776,210.288 168.520,210.641 168.287 C 211.544 167.689,214.449 164.796,215.484 163.463 L 216.355 162.343 217.007 162.755 C 217.366 162.981,217.695 163.167,217.737 163.167 C 217.779 163.167,218.625 163.640,219.615 164.218 C 220.606 164.796,221.529 165.322,221.667 165.386 C 221.804 165.451,222.142 165.652,222.417 165.833 C 222.692 166.014,223.067 166.230,223.250 166.313 C 223.617 166.481,225.464 167.530,226.250 168.019 C 226.525 168.189,226.936 168.410,227.163 168.508 C 227.391 168.607,227.616 168.739,227.663 168.802 C 227.711 168.865,228.088 169.090,228.500 169.301 C 228.912 169.512,229.475 169.829,229.750 170.005 C 230.348 170.388,231.004 170.757,232.196 171.381 C 232.684 171.636,233.308 171.991,233.583 172.170 C 233.858 172.349,234.269 172.576,234.497 172.675 C 234.724 172.773,234.949 172.906,234.997 172.969 C 235.045 173.032,235.346 173.225,235.667 173.398 C 237.198 174.224,237.789 174.554,238.250 174.839 C 238.525 175.008,239.125 175.342,239.583 175.580 C 240.042 175.817,240.642 176.159,240.917 176.340 C 241.192 176.520,241.642 176.782,241.917 176.922 C 242.192 177.063,242.642 177.322,242.917 177.499 C 243.192 177.677,243.792 178.018,244.250 178.258 C 245.449 178.887,245.884 179.131,246.167 179.333 C 246.476 179.555,246.907 179.797,247.944 180.333 C 248.387 180.562,248.789 180.801,248.837 180.864 C 248.884 180.928,249.109 181.063,249.337 181.165 C 249.953 181.442,251.322 182.205,252.133 182.724 C 252.527 182.975,253.015 183.254,253.216 183.343 C 253.418 183.432,253.808 183.650,254.083 183.827 C 254.358 184.004,254.921 184.318,255.333 184.526 C 255.746 184.733,256.196 184.992,256.333 185.101 C 256.609 185.320,258.002 186.106,259.167 186.700 C 259.579 186.911,259.956 187.135,260.003 187.198 C 260.051 187.261,260.276 187.392,260.503 187.489 C 260.731 187.586,261.062 187.760,261.240 187.875 C 262.152 188.463,263.331 189.149,264.000 189.482 C 264.412 189.687,264.975 189.996,265.250 190.169 C 265.525 190.341,266.087 190.655,266.500 190.866 C 266.912 191.077,267.287 191.290,267.333 191.340 C 267.545 191.569,270.735 193.333,270.938 193.333 C 271.064 193.333,271.167 193.403,271.167 193.489 C 271.167 193.574,271.324 193.694,271.516 193.755 C 271.708 193.816,272.176 194.072,272.557 194.325 C 272.938 194.578,273.740 195.050,274.340 195.376 C 274.939 195.701,275.824 196.199,276.305 196.484 C 276.787 196.768,277.214 197.000,277.254 197.000 C 277.294 197.000,277.722 197.247,278.205 197.549 C 278.688 197.852,279.440 198.283,279.876 198.508 C 280.312 198.733,280.828 199.037,281.024 199.185 L 281.380 199.453 281.000 200.268 C 280.097 202.203,279.737 203.300,279.324 205.387 C 278.916 207.449,278.875 211.864,279.249 213.451 C 279.383 214.019,279.530 214.694,279.575 214.951 C 279.987 217.278,281.570 220.508,283.602 223.167 C 289.457 230.829,300.022 233.734,309.250 230.220 C 310.004 229.933,309.930 229.969,311.934 228.914 C 312.749 228.485,313.442 228.067,313.472 227.984 C 313.503 227.901,313.634 227.833,313.764 227.833 C 313.894 227.833,314.000 227.775,314.000 227.703 C 314.000 227.631,314.221 227.442,314.490 227.282 C 314.760 227.123,315.291 226.694,315.670 226.330 C 316.050 225.965,316.394 225.667,316.435 225.667 C 316.673 225.667,319.833 221.879,319.833 221.594 C 319.833 221.546,320.082 221.111,320.386 220.628 C 322.983 216.500,323.976 209.631,322.717 204.500 C 322.185 202.330,320.810 198.899,320.156 198.108 C 320.070 198.003,319.690 197.444,319.314 196.867 C 318.367 195.416,315.073 192.089,314.284 191.786 C 314.128 191.726,314.000 191.600,314.000 191.505 C 314.000 191.411,313.897 191.333,313.770 191.333 C 313.644 191.333,313.449 191.222,313.336 191.087 C 313.224 190.951,312.933 190.737,312.691 190.612 C 310.680 189.569,309.827 189.167,309.630 189.167 C 309.504 189.167,309.329 189.103,309.242 189.025 C 309.005 188.812,306.430 188.052,304.954 187.758 C 302.989 187.367,298.986 187.410,296.907 187.844 C 295.405 188.157,294.748 188.350,292.736 189.069 C 290.399 189.904,287.285 192.001,285.231 194.123 C 284.143 195.246,284.079 195.261,283.093 194.625 C 282.146 194.015,281.005 193.333,280.929 193.333 C 280.882 193.333,280.272 192.996,279.574 192.583 C 278.877 192.171,278.285 191.833,278.259 191.833 C 278.233 191.833,276.316 190.746,274.000 189.417 C 271.684 188.088,269.767 187.000,269.741 187.000 C 269.715 187.000,269.123 186.662,268.426 186.250 C 267.728 185.837,267.131 185.500,267.100 185.500 C 267.069 185.500,266.211 185.016,265.194 184.425 C 264.177 183.834,263.004 183.159,262.589 182.925 C 262.173 182.691,261.481 182.302,261.050 182.060 C 260.620 181.817,259.904 181.405,259.460 181.143 C 259.015 180.881,258.627 180.667,258.596 180.667 C 258.565 180.667,257.509 180.067,256.250 179.333 C 254.991 178.600,253.935 178.000,253.904 178.000 C 253.873 178.000,253.485 177.786,253.040 177.524 C 252.283 177.077,251.122 176.413,250.167 175.880 C 249.938 175.753,249.525 175.507,249.250 175.334 C 248.975 175.161,248.375 174.825,247.917 174.587 C 247.458 174.349,246.858 174.007,246.583 173.827 C 246.308 173.647,245.858 173.385,245.583 173.246 C 244.998 172.949,243.664 172.194,242.833 171.691 C 242.512 171.497,242.064 171.257,241.837 171.158 C 241.609 171.060,241.384 170.928,241.337 170.865 C 241.242 170.739,240.660 170.404,239.500 169.804 C 239.088 169.591,238.711 169.365,238.663 169.302 C 238.616 169.239,238.391 169.105,238.163 169.004 C 237.527 168.721,236.162 167.961,235.367 167.448 C 234.973 167.194,234.485 166.913,234.284 166.824 C 234.082 166.735,233.692 166.517,233.417 166.340 C 233.142 166.163,232.579 165.845,232.167 165.634 C 231.754 165.423,231.379 165.206,231.333 165.151 C 231.255 165.058,231.020 164.926,229.750 164.261 C 229.475 164.118,228.875 163.772,228.417 163.492 C 227.958 163.213,227.358 162.873,227.083 162.737 C 226.808 162.601,226.358 162.346,226.083 162.171 C 225.808 161.995,225.396 161.747,225.167 161.620 C 224.498 161.247,223.162 160.488,222.342 160.015 C 221.925 159.775,221.283 159.429,220.917 159.247 C 220.550 159.065,220.213 158.874,220.167 158.821 C 220.121 158.768,219.773 158.553,219.394 158.343 C 218.728 157.973,218.713 157.945,218.931 157.522 C 220.635 154.223,221.663 147.092,220.989 143.250 C 220.893 142.700,220.745 141.800,220.661 141.250 C 220.516 140.302,220.355 139.675,219.759 137.750 C 219.450 136.752,219.443 136.737,218.317 134.417 C 217.446 132.621,215.802 129.971,215.491 129.861 C 215.404 129.831,215.333 129.745,215.333 129.670 C 215.333 129.356,213.094 127.000,211.412 125.544 C 208.220 122.781,203.239 120.369,199.251 119.654 C 198.701 119.555,197.894 119.399,197.458 119.307 L 196.667 119.139 196.667 81.570 L 196.667 44.000 197.140 44.000 C 197.690 44.000,199.984 43.442,200.833 43.102 C 202.831 42.301,204.095 41.748,204.170 41.643 C 204.218 41.576,204.443 41.441,204.670 41.344 C 206.802 40.433,211.191 36.279,212.429 34.000 C 212.604 33.679,212.834 33.304,212.941 33.167 C 215.930 29.321,216.712 20.180,214.546 14.417 C 213.869 12.614,213.826 12.529,212.250 9.860 C 211.849 9.181,210.932 8.000,210.805 8.000 C 210.729 8.000,210.667 7.932,210.667 7.848 C 210.667 7.437,206.476 3.667,206.018 3.667 C 205.916 3.667,205.833 3.606,205.833 3.531 C 205.833 3.415,202.550 1.709,201.583 1.323 C 198.474 0.083,192.904 -0.401,189.583 0.282 M198.083 7.256 C 199.262 7.638,200.501 8.191,201.695 8.868 C 202.828 9.510,205.333 11.664,205.333 11.995 C 205.333 12.090,205.400 12.167,205.482 12.167 C 205.840 12.167,207.639 15.172,208.325 16.917 C 209.168 19.063,209.401 23.845,208.752 25.708 C 208.616 26.098,208.504 26.518,208.502 26.641 C 208.500 26.863,208.299 27.366,207.625 28.833 C 206.834 30.557,203.513 34.500,202.853 34.500 C 202.766 34.500,202.669 34.556,202.639 34.625 C 202.498 34.941,200.801 35.868,198.773 36.737 C 194.584 38.531,188.312 37.495,184.333 34.351 C 183.146 33.413,181.500 31.677,180.891 30.721 C 180.726 30.462,180.552 30.212,180.504 30.167 C 180.456 30.121,180.180 29.596,179.891 29.000 C 175.647 20.250,179.892 10.381,189.222 7.305 C 191.588 6.525,195.756 6.502,198.083 7.256 M154.333 25.262 C 152.821 25.760,151.433 26.236,151.250 26.320 C 151.067 26.404,150.767 26.511,150.583 26.558 C 150.190 26.660,148.892 27.115,148.417 27.318 C 148.233 27.396,147.783 27.578,147.417 27.722 C 146.325 28.149,143.790 29.185,143.211 29.439 C 142.914 29.569,142.427 29.780,142.127 29.908 C 141.575 30.144,138.641 31.533,136.667 32.493 C 134.636 33.480,133.250 34.200,133.167 34.309 C 133.121 34.369,132.521 34.706,131.833 35.057 C 131.146 35.409,130.358 35.835,130.083 36.005 C 129.808 36.175,129.377 36.431,129.125 36.574 C 128.873 36.717,128.460 36.950,128.208 37.093 C 127.956 37.235,127.550 37.479,127.306 37.634 C 127.062 37.790,126.500 38.135,126.056 38.402 C 124.019 39.626,118.389 43.494,116.750 44.793 C 116.658 44.866,115.908 45.446,115.083 46.083 C 114.258 46.720,113.546 47.283,113.500 47.335 C 113.454 47.387,112.948 47.794,112.375 48.239 C 111.802 48.685,111.333 49.113,111.333 49.191 C 111.333 49.269,111.227 49.333,111.097 49.333 C 110.967 49.333,110.836 49.396,110.806 49.473 C 110.775 49.550,110.112 50.169,109.331 50.848 C 106.005 53.744,101.040 58.700,100.897 59.267 C 100.749 59.860,100.922 61.391,101.146 61.465 C 101.249 61.500,101.333 61.603,101.333 61.696 C 101.333 62.170,102.100 62.489,103.253 62.494 L 104.424 62.500 105.920 60.985 C 107.200 59.690,109.383 57.623,112.500 54.757 C 113.561 53.781,116.207 51.561,117.583 50.492 C 118.225 49.993,118.900 49.450,119.083 49.284 C 119.266 49.118,119.772 48.753,120.208 48.474 C 120.643 48.194,121.000 47.898,121.000 47.816 C 121.000 47.734,121.078 47.667,121.174 47.667 C 121.269 47.667,121.438 47.591,121.549 47.498 C 122.248 46.910,126.447 44.000,126.596 44.000 C 126.637 44.000,127.026 43.750,127.460 43.445 C 128.496 42.717,133.220 39.895,134.917 38.990 C 137.526 37.598,141.432 35.634,142.417 35.218 C 142.967 34.985,143.904 34.569,144.500 34.293 C 146.768 33.243,149.802 32.051,153.333 30.822 C 153.654 30.711,154.179 30.526,154.500 30.411 C 154.821 30.297,155.496 30.081,156.000 29.933 C 158.169 29.293,159.058 28.966,159.312 28.716 C 161.019 27.037,160.098 24.315,157.833 24.346 C 157.399 24.352,155.928 24.737,154.333 25.262 M228.282 24.657 C 227.269 25.306,226.839 27.083,227.465 28.033 C 227.834 28.591,228.486 29.167,228.750 29.167 C 228.936 29.167,232.963 30.428,234.083 30.837 C 234.358 30.938,235.108 31.207,235.750 31.435 C 236.999 31.880,237.931 32.241,238.775 32.606 C 239.064 32.731,239.359 32.833,239.431 32.833 C 239.560 32.833,240.809 33.377,241.373 33.679 C 241.532 33.764,241.735 33.833,241.824 33.833 C 242.341 33.833,252.892 39.118,254.735 40.300 C 255.110 40.540,255.717 40.887,256.083 41.070 C 256.450 41.253,256.849 41.500,256.970 41.618 C 257.091 41.737,257.255 41.833,257.333 41.833 C 257.412 41.833,257.575 41.928,257.696 42.044 C 257.818 42.160,258.273 42.441,258.708 42.669 C 259.144 42.896,259.500 43.130,259.500 43.188 C 259.500 43.246,259.725 43.386,260.000 43.500 C 260.275 43.614,260.500 43.773,260.500 43.854 C 260.500 43.934,260.573 44.000,260.663 44.000 C 260.752 44.000,261.558 44.501,262.454 45.114 C 263.350 45.726,264.458 46.483,264.917 46.795 C 265.375 47.107,265.775 47.431,265.806 47.515 C 265.836 47.598,265.929 47.667,266.012 47.667 C 266.095 47.667,266.295 47.775,266.456 47.907 C 266.863 48.241,268.439 49.432,269.292 50.050 C 269.681 50.333,270.000 50.625,270.000 50.699 C 270.000 50.773,270.104 50.833,270.232 50.833 C 270.360 50.833,270.508 50.946,270.560 51.083 C 270.613 51.221,270.730 51.333,270.821 51.333 C 270.911 51.333,271.158 51.502,271.369 51.708 C 271.580 51.915,272.117 52.383,272.563 52.750 C 273.008 53.117,273.541 53.567,273.748 53.750 C 273.954 53.933,274.637 54.533,275.265 55.083 C 275.893 55.633,277.886 57.527,279.693 59.292 L 282.978 62.500 284.128 62.500 C 285.823 62.500,286.500 61.820,286.500 60.119 L 286.500 58.961 283.437 55.939 C 280.293 52.838,278.617 51.279,276.597 49.580 C 275.963 49.047,275.325 48.492,275.179 48.347 C 275.033 48.202,274.408 47.713,273.790 47.260 C 273.172 46.806,272.667 46.375,272.667 46.301 C 272.667 46.227,272.554 46.167,272.417 46.167 C 272.279 46.167,272.167 46.110,272.166 46.042 C 272.166 45.973,271.791 45.661,271.333 45.349 C 270.875 45.037,270.500 44.718,270.500 44.641 C 270.500 44.563,270.394 44.500,270.264 44.500 C 270.134 44.500,270.003 44.443,269.972 44.373 C 269.889 44.184,267.389 42.415,264.333 40.383 C 263.188 39.622,262.159 38.924,262.049 38.832 C 261.938 38.741,261.805 38.667,261.754 38.667 C 261.702 38.667,261.343 38.462,260.955 38.213 C 260.567 37.963,260.100 37.677,259.917 37.577 C 258.953 37.054,257.906 36.418,257.830 36.310 C 257.782 36.243,257.557 36.106,257.330 36.007 C 257.103 35.908,256.467 35.577,255.917 35.271 C 255.367 34.966,254.429 34.445,253.833 34.115 C 252.195 33.205,244.964 29.667,244.744 29.667 C 244.683 29.667,244.360 29.546,244.025 29.399 C 243.017 28.954,242.462 28.719,241.500 28.329 C 240.996 28.124,240.433 27.892,240.250 27.813 C 239.537 27.506,236.933 26.597,233.601 25.490 C 229.912 24.265,229.095 24.137,228.282 24.657 M299.917 65.170 C 298.346 65.366,296.103 66.016,295.333 66.499 C 295.104 66.643,294.617 66.897,294.250 67.064 C 293.883 67.231,293.261 67.584,292.867 67.850 C 292.472 68.116,292.085 68.333,292.006 68.333 C 291.926 68.333,291.836 68.396,291.806 68.473 C 291.775 68.550,291.346 68.969,290.853 69.404 C 289.141 70.915,286.500 74.423,286.500 75.185 C 286.500 75.284,286.398 75.564,286.273 75.808 C 284.702 78.871,284.431 84.863,285.722 88.000 C 286.330 89.476,286.304 89.561,285.051 90.258 C 284.427 90.604,283.879 90.932,283.833 90.986 C 283.787 91.039,283.450 91.233,283.083 91.417 C 282.717 91.600,282.106 91.956,281.726 92.208 C 281.346 92.460,280.986 92.667,280.926 92.667 C 280.866 92.667,280.427 92.915,279.950 93.218 C 279.473 93.522,278.971 93.823,278.833 93.887 C 278.696 93.951,278.358 94.148,278.083 94.323 C 277.808 94.499,277.208 94.845,276.750 95.092 C 276.292 95.338,275.594 95.756,275.200 96.020 C 274.806 96.284,274.456 96.500,274.422 96.500 C 274.364 96.500,271.198 98.323,270.667 98.662 C 270.234 98.939,267.437 100.577,267.171 100.710 C 267.031 100.780,266.692 100.981,266.417 101.157 C 266.142 101.333,265.545 101.678,265.091 101.924 C 264.637 102.171,263.962 102.568,263.591 102.807 C 263.220 103.046,262.767 103.324,262.583 103.424 C 262.400 103.524,261.626 103.976,260.862 104.428 C 260.099 104.880,259.124 105.438,258.696 105.667 C 258.267 105.896,257.879 106.127,257.833 106.180 C 257.787 106.233,256.962 106.715,256.000 107.250 C 255.037 107.785,254.213 108.273,254.167 108.334 C 254.121 108.395,253.671 108.670,253.166 108.944 C 252.319 109.406,249.914 110.803,249.333 111.172 C 248.890 111.454,246.591 112.768,246.333 112.887 C 246.196 112.951,245.839 113.151,245.541 113.332 L 244.998 113.661 244.510 112.956 C 244.242 112.567,243.905 112.119,243.761 111.958 C 243.618 111.798,243.500 111.629,243.500 111.584 C 243.500 111.469,242.299 109.788,242.071 109.583 C 241.968 109.492,241.521 108.929,241.076 108.333 C 240.040 106.946,239.105 105.927,236.416 103.250 C 234.295 101.139,233.826 100.708,232.336 99.500 C 231.941 99.179,231.384 98.712,231.100 98.461 C 230.816 98.210,230.490 98.004,230.375 98.003 C 230.260 98.001,230.167 97.928,230.167 97.840 C 230.167 97.753,229.829 97.483,229.417 97.241 C 229.004 96.999,228.667 96.734,228.667 96.651 C 228.667 96.568,228.599 96.500,228.517 96.500 C 228.435 96.500,227.704 96.063,226.892 95.528 C 226.081 94.993,225.079 94.377,224.667 94.158 C 224.254 93.940,223.804 93.673,223.667 93.566 C 223.321 93.297,220.117 91.665,219.000 91.190 C 218.496 90.975,217.708 90.628,217.250 90.419 C 216.444 90.052,215.874 89.823,214.372 89.265 C 211.606 88.237,209.480 91.313,211.535 93.369 C 211.698 93.532,212.526 93.933,213.374 94.261 C 214.223 94.589,215.179 94.977,215.500 95.123 C 215.821 95.270,216.346 95.502,216.667 95.638 C 217.841 96.139,221.367 97.974,222.362 98.601 C 222.709 98.821,223.036 99.000,223.087 99.000 C 223.139 99.000,223.271 99.078,223.382 99.173 C 223.493 99.268,224.106 99.684,224.745 100.098 C 225.384 100.511,225.946 100.907,225.995 100.978 C 226.044 101.049,226.196 101.151,226.333 101.204 C 226.930 101.433,231.091 104.972,233.000 106.873 C 235.233 109.096,235.569 109.460,236.584 110.750 C 236.944 111.208,237.369 111.713,237.526 111.872 C 237.684 112.031,238.057 112.519,238.354 112.956 C 238.651 113.393,238.937 113.787,238.989 113.833 C 239.042 113.879,239.309 114.254,239.584 114.667 C 239.859 115.079,240.140 115.442,240.208 115.472 C 240.277 115.503,240.333 115.600,240.333 115.687 C 240.333 115.874,241.026 116.891,241.208 116.972 C 241.277 117.003,241.333 117.092,241.333 117.171 C 241.333 117.250,241.802 118.125,242.375 119.117 C 243.306 120.728,244.103 122.283,244.748 123.750 C 244.869 124.025,245.125 124.592,245.317 125.011 C 245.509 125.429,245.667 125.831,245.667 125.902 C 245.667 125.974,245.769 126.269,245.894 126.558 C 246.727 128.482,247.914 132.493,248.564 135.583 C 249.777 141.347,249.984 150.066,249.026 155.083 C 248.349 158.635,248.394 159.113,249.486 160.014 C 250.857 161.144,253.138 160.311,253.407 158.582 C 253.464 158.216,253.627 157.354,253.770 156.667 C 253.913 155.979,254.094 154.704,254.173 153.833 C 254.252 152.962,254.404 151.313,254.511 150.167 C 254.973 145.220,254.214 137.361,252.716 131.583 C 251.862 128.290,250.612 124.559,249.996 123.461 C 249.906 123.301,249.833 123.094,249.833 122.999 C 249.833 122.768,248.530 119.979,247.736 118.512 C 247.473 118.025,247.530 117.912,248.219 117.559 C 248.511 117.409,248.787 117.240,248.833 117.183 C 248.879 117.127,249.217 116.931,249.583 116.748 C 249.950 116.566,250.287 116.373,250.333 116.319 C 250.379 116.266,250.942 115.938,251.583 115.591 C 252.225 115.244,252.868 114.857,253.013 114.730 C 253.158 114.604,253.338 114.500,253.413 114.500 C 253.487 114.500,253.944 114.237,254.428 113.917 C 254.911 113.596,255.348 113.333,255.398 113.333 C 255.449 113.333,256.861 112.523,258.537 111.533 C 260.212 110.543,261.696 109.679,261.833 109.614 C 261.971 109.550,262.308 109.348,262.583 109.167 C 262.858 108.985,263.196 108.784,263.333 108.720 C 263.471 108.656,263.958 108.368,264.417 108.080 C 264.875 107.792,265.362 107.506,265.500 107.443 C 265.637 107.381,265.975 107.186,266.250 107.010 C 266.525 106.834,267.125 106.488,267.583 106.242 C 268.042 105.995,268.739 105.577,269.133 105.313 C 269.528 105.049,269.916 104.833,269.996 104.833 C 270.077 104.833,270.242 104.737,270.363 104.618 C 270.484 104.500,270.883 104.253,271.250 104.070 C 271.617 103.887,272.234 103.534,272.622 103.285 C 273.009 103.037,273.367 102.833,273.416 102.833 C 273.465 102.833,273.898 102.587,274.378 102.286 C 274.857 101.985,275.400 101.652,275.583 101.546 C 278.453 99.888,279.459 99.301,279.667 99.166 C 280.138 98.858,283.360 97.000,283.422 97.000 C 283.456 97.000,283.806 96.784,284.200 96.520 C 284.594 96.256,285.292 95.838,285.750 95.592 C 286.208 95.345,286.808 95.004,287.083 94.833 C 287.358 94.662,287.873 94.364,288.227 94.171 L 288.871 93.819 289.844 94.817 C 290.740 95.736,292.449 97.139,293.250 97.614 C 293.967 98.040,295.951 99.000,296.112 99.000 C 296.205 99.000,296.500 99.108,296.766 99.241 C 301.963 101.827,311.591 99.306,315.670 94.290 C 316.135 93.718,316.662 93.075,316.841 92.861 C 317.020 92.647,317.167 92.435,317.167 92.391 C 317.167 92.346,317.381 91.997,317.643 91.613 C 318.207 90.790,319.333 88.244,319.333 87.793 C 319.333 87.620,319.410 87.334,319.504 87.159 C 320.195 85.868,320.234 79.842,319.562 78.188 C 319.436 77.879,319.333 77.478,319.333 77.297 C 319.333 77.116,319.226 76.769,319.096 76.526 C 318.965 76.282,318.689 75.652,318.482 75.125 C 318.275 74.598,318.044 74.167,317.969 74.167 C 317.895 74.167,317.833 74.080,317.833 73.974 C 317.833 73.598,316.232 71.439,315.083 70.267 C 311.140 66.241,305.778 64.440,299.917 65.170 M82.833 65.761 C 82.604 65.800,81.892 65.916,81.250 66.019 C 78.084 66.528,74.536 68.260,72.333 70.371 C 71.369 71.296,70.000 72.799,70.000 72.934 C 70.000 73.012,69.330 74.004,69.167 74.167 C 69.074 74.259,68.775 74.877,68.035 76.500 C 66.393 80.106,66.264 85.406,67.720 89.433 C 68.098 90.476,69.211 92.667,69.364 92.667 C 69.439 92.667,69.500 92.745,69.500 92.840 C 69.500 93.079,70.838 94.833,71.020 94.833 C 71.101 94.833,71.167 94.906,71.167 94.994 C 71.167 95.355,74.230 98.000,74.647 98.000 C 74.750 98.000,74.833 98.058,74.833 98.129 C 74.833 98.262,76.761 99.279,77.917 99.754 C 81.813 101.357,88.200 101.138,91.750 99.281 C 92.985 98.635,94.416 97.769,94.472 97.634 C 94.503 97.560,94.599 97.500,94.685 97.500 C 94.839 97.500,95.549 96.910,96.589 95.917 C 97.723 94.833,97.776 94.801,98.025 95.034 C 98.152 95.153,98.667 95.467,99.170 95.732 C 100.300 96.328,100.776 96.597,101.417 97.000 C 101.692 97.173,102.292 97.509,102.750 97.746 C 103.208 97.984,103.808 98.325,104.083 98.503 C 104.358 98.682,104.737 98.897,104.925 98.981 C 105.267 99.133,107.694 100.521,108.167 100.835 C 108.304 100.926,108.603 101.080,108.830 101.177 C 109.057 101.275,109.282 101.406,109.330 101.469 C 109.378 101.532,109.754 101.758,110.167 101.971 C 111.264 102.538,111.905 102.903,112.000 103.016 C 112.046 103.071,112.308 103.232,112.583 103.375 C 114.198 104.214,114.803 104.547,115.250 104.840 C 115.525 105.020,115.975 105.282,116.250 105.422 C 116.525 105.563,116.975 105.822,117.250 105.999 C 117.697 106.288,118.326 106.632,119.917 107.458 C 120.192 107.601,120.454 107.764,120.500 107.821 C 120.546 107.877,120.771 108.017,121.000 108.131 C 121.229 108.244,121.792 108.565,122.250 108.843 C 122.708 109.121,123.308 109.460,123.583 109.596 C 123.858 109.732,124.308 109.985,124.583 110.157 C 125.043 110.445,125.606 110.760,127.167 111.602 C 127.487 111.775,127.787 111.961,127.833 112.016 C 127.917 112.115,128.118 112.227,129.612 113.000 C 130.055 113.229,130.454 113.461,130.500 113.516 C 130.580 113.611,130.998 113.849,132.083 114.416 C 132.358 114.560,132.808 114.822,133.083 114.999 C 133.358 115.177,133.958 115.516,134.417 115.754 C 134.875 115.991,135.475 116.331,135.750 116.507 C 136.025 116.684,136.400 116.904,136.583 116.995 C 137.083 117.246,138.735 118.215,139.148 118.500 L 139.510 118.750 139.021 119.750 C 137.495 122.869,136.946 124.207,135.910 127.333 C 132.808 136.694,132.003 145.917,133.438 155.667 C 134.032 159.705,134.504 160.500,136.310 160.500 C 138.273 160.500,139.169 159.157,138.673 156.961 C 136.029 145.259,138.840 128.953,145.303 118.500 C 145.501 118.179,145.716 117.804,145.780 117.667 C 145.844 117.529,146.144 117.061,146.448 116.627 C 146.752 116.192,147.000 115.761,147.000 115.668 C 147.000 115.576,147.056 115.499,147.125 115.497 C 147.194 115.495,147.475 115.122,147.750 114.667 C 148.025 114.212,148.306 113.838,148.375 113.836 C 148.444 113.835,148.500 113.758,148.500 113.667 C 148.500 113.575,148.631 113.360,148.792 113.189 C 148.952 113.018,149.458 112.399,149.917 111.814 C 152.418 108.620,154.900 106.117,158.513 103.143 C 158.918 102.809,159.486 102.341,159.774 102.102 C 160.062 101.862,160.373 101.667,160.465 101.667 C 160.556 101.667,160.674 101.554,160.727 101.417 C 160.780 101.279,160.931 101.167,161.064 101.167 C 161.197 101.167,161.331 101.107,161.361 101.033 C 161.412 100.912,163.145 99.743,164.980 98.593 C 165.381 98.341,166.549 97.701,167.576 97.171 C 169.988 95.924,169.975 95.930,170.708 95.608 C 172.042 95.022,172.440 94.855,173.083 94.612 C 175.483 93.706,175.733 93.572,176.195 92.933 C 177.656 90.919,175.298 88.108,173.106 89.251 C 172.843 89.388,172.524 89.500,172.395 89.500 C 172.267 89.500,172.032 89.573,171.873 89.661 C 171.714 89.750,170.758 90.174,169.750 90.603 C 167.612 91.513,163.751 93.481,162.417 94.341 C 162.142 94.518,161.804 94.716,161.667 94.781 C 161.244 94.980,156.740 98.073,156.500 98.329 C 156.454 98.378,155.854 98.867,155.167 99.415 C 152.567 101.488,148.197 105.849,146.478 108.085 C 146.267 108.359,146.050 108.621,145.995 108.667 C 145.940 108.712,145.507 109.275,145.034 109.917 C 144.560 110.558,144.096 111.174,144.003 111.285 C 143.910 111.395,143.833 111.558,143.833 111.646 C 143.833 111.734,143.770 111.831,143.693 111.861 C 143.490 111.941,142.167 113.922,142.167 114.145 C 142.167 114.409,142.118 114.394,141.167 113.833 C 140.700 113.558,140.291 113.333,140.256 113.333 C 140.222 113.333,139.623 112.996,138.926 112.583 C 138.228 112.171,137.618 111.833,137.571 111.833 C 137.523 111.833,137.074 111.571,136.572 111.250 C 136.071 110.929,135.626 110.667,135.585 110.667 C 135.543 110.667,134.939 110.329,134.241 109.917 C 133.543 109.504,132.945 109.167,132.913 109.167 C 132.880 109.167,132.019 108.679,131.000 108.083 C 129.981 107.487,129.120 107.000,129.087 107.000 C 129.055 107.000,128.457 106.663,127.759 106.250 C 127.061 105.837,126.457 105.500,126.415 105.500 C 126.374 105.500,125.929 105.237,125.428 104.917 C 124.926 104.596,124.478 104.333,124.432 104.333 C 124.386 104.333,123.985 104.119,123.540 103.857 C 123.096 103.595,122.399 103.194,121.991 102.967 C 121.584 102.739,119.600 101.612,117.583 100.462 C 115.567 99.312,113.546 98.165,113.092 97.912 C 112.639 97.659,111.904 97.238,111.460 96.976 C 111.015 96.714,110.619 96.500,110.579 96.500 C 110.516 96.500,109.419 95.846,108.413 95.208 C 108.232 95.093,107.897 94.920,107.670 94.823 C 107.443 94.725,107.218 94.594,107.170 94.531 C 107.122 94.468,106.671 94.200,106.167 93.935 C 105.043 93.344,104.564 93.074,103.917 92.667 C 103.642 92.494,103.042 92.159,102.583 91.923 C 100.544 90.873,100.303 90.651,100.594 90.090 C 100.726 89.836,100.833 89.527,100.833 89.403 C 100.833 89.279,100.939 88.932,101.068 88.631 C 102.304 85.754,102.006 79.202,100.513 76.371 C 100.429 76.213,100.158 75.671,99.909 75.167 C 99.660 74.662,99.410 74.212,99.353 74.167 C 99.296 74.121,99.144 73.878,99.015 73.628 C 98.886 73.377,98.642 73.024,98.473 72.843 C 98.305 72.662,98.167 72.454,98.167 72.381 C 98.167 71.921,94.700 68.961,93.083 68.040 C 90.269 66.436,85.322 65.336,82.833 65.761 M73.162 106.284 C 72.433 106.787,72.312 107.056,71.392 110.250 C 71.259 110.708,71.010 111.571,70.838 112.167 C 70.666 112.763,70.414 113.662,70.278 114.167 C 70.142 114.671,69.912 115.502,69.766 116.015 C 69.619 116.527,69.500 117.083,69.500 117.250 C 69.500 117.417,69.392 117.936,69.260 118.402 C 69.129 118.868,68.904 119.850,68.762 120.583 C 68.619 121.317,68.356 122.667,68.177 123.583 C 66.931 129.966,66.352 135.907,66.226 143.583 C 66.102 151.149,66.335 156.502,67.018 161.750 C 67.113 162.483,67.258 163.687,67.340 164.426 C 67.422 165.164,67.596 166.228,67.727 166.790 C 67.858 167.352,67.933 167.844,67.894 167.884 C 67.855 167.923,67.975 168.697,68.161 169.603 C 68.348 170.509,68.617 171.850,68.761 172.583 C 68.904 173.317,69.129 174.298,69.260 174.765 C 69.392 175.231,69.500 175.761,69.500 175.943 C 69.500 176.125,69.603 176.606,69.729 177.012 C 69.855 177.418,70.087 178.313,70.245 179.000 C 71.002 182.293,71.473 183.142,72.738 183.497 C 74.916 184.106,76.378 182.149,75.600 179.667 C 75.245 178.536,74.888 177.215,74.586 175.917 C 74.437 175.275,74.176 174.188,74.006 173.500 C 73.837 172.813,73.607 171.762,73.495 171.167 C 73.383 170.571,73.185 169.521,73.055 168.833 C 72.925 168.146,72.753 167.133,72.673 166.583 C 72.593 166.033,72.449 165.058,72.351 164.417 C 72.117 162.869,71.728 159.703,71.480 157.333 C 71.136 154.042,71.087 140.622,71.406 137.000 C 71.865 131.778,72.440 127.292,72.923 125.167 C 73.059 124.571,73.169 123.908,73.168 123.694 C 73.167 123.480,73.287 122.805,73.433 122.194 C 73.580 121.583,73.847 120.446,74.028 119.667 C 74.531 117.486,75.269 114.544,75.574 113.500 C 75.695 113.087,75.925 112.300,76.086 111.750 C 76.247 111.200,76.518 110.384,76.689 109.936 C 77.707 107.271,75.319 104.798,73.162 106.284 M311.440 106.316 C 310.384 107.012,310.057 108.254,310.568 109.622 C 311.045 110.895,312.268 115.090,312.744 117.083 C 312.897 117.725,313.125 118.662,313.249 119.167 C 313.374 119.671,313.593 120.683,313.737 121.417 C 313.880 122.150,314.144 123.500,314.323 124.417 C 314.864 127.183,315.670 132.771,315.670 133.750 C 315.669 134.117,315.792 135.279,315.941 136.333 C 316.350 139.213,316.357 153.681,315.952 157.333 C 315.361 162.661,315.133 164.448,314.903 165.562 C 314.773 166.192,314.667 166.905,314.667 167.145 C 314.668 167.386,314.511 168.258,314.320 169.083 C 314.128 169.908,313.860 171.108,313.724 171.750 C 313.283 173.825,313.004 175.002,312.221 178.083 C 312.081 178.633,311.862 179.386,311.733 179.756 C 310.930 182.070,312.534 184.162,314.604 183.500 C 315.844 183.103,316.178 182.563,316.923 179.750 C 317.045 179.292,317.296 178.354,317.481 177.667 C 318.116 175.308,318.645 172.723,319.570 167.458 C 321.362 157.255,321.787 145.333,320.738 134.667 C 320.207 129.270,318.898 121.208,318.070 118.235 C 317.940 117.769,317.833 117.249,317.833 117.081 C 317.833 116.912,317.689 116.281,317.512 115.678 C 317.336 115.076,317.071 114.133,316.924 113.583 C 316.535 112.124,316.162 110.820,315.969 110.250 C 315.877 109.975,315.738 109.487,315.661 109.167 C 314.984 106.326,313.226 105.139,311.440 106.316 M175.417 110.879 C 175.233 111.008,174.558 111.397,173.917 111.744 C 173.275 112.090,172.632 112.477,172.487 112.603 C 172.342 112.730,172.170 112.833,172.105 112.833 C 171.949 112.833,170.932 113.548,170.861 113.708 C 170.831 113.777,170.735 113.833,170.649 113.833 C 170.507 113.833,168.993 114.964,167.750 116.000 C 166.592 116.965,164.072 119.501,163.195 120.583 C 162.676 121.225,162.184 121.798,162.103 121.857 C 162.022 121.916,161.759 122.262,161.519 122.626 C 161.280 122.990,160.739 123.805,160.318 124.436 C 159.277 125.997,159.019 126.450,157.911 128.667 C 156.903 130.682,156.707 131.116,156.249 132.333 C 156.093 132.746,155.861 133.330,155.733 133.631 C 155.605 133.932,155.500 134.329,155.500 134.514 C 155.500 134.699,155.399 135.052,155.276 135.300 C 155.153 135.547,154.896 136.462,154.703 137.333 C 153.983 140.599,153.810 142.055,153.780 145.114 L 153.750 148.145 154.314 148.728 C 155.477 149.932,157.483 149.617,158.278 148.105 C 158.450 147.778,158.572 146.781,158.667 144.939 C 158.743 143.460,158.888 141.800,158.990 141.250 C 159.355 139.282,159.704 137.739,159.933 137.078 C 160.062 136.708,160.167 136.279,160.167 136.125 C 160.167 135.971,160.271 135.598,160.398 135.297 C 160.525 134.996,160.799 134.337,161.005 133.833 C 161.668 132.217,163.392 128.761,163.701 128.427 C 163.865 128.249,164.000 128.012,164.000 127.899 C 164.000 127.787,164.056 127.669,164.125 127.639 C 164.273 127.573,165.000 126.557,165.000 126.416 C 165.000 126.363,165.076 126.229,165.169 126.118 C 165.261 126.007,165.568 125.617,165.849 125.250 C 167.811 122.693,170.413 120.157,172.958 118.320 C 173.760 117.741,174.454 117.226,174.500 117.175 C 174.546 117.125,174.921 116.901,175.333 116.679 C 175.746 116.457,176.121 116.232,176.167 116.179 C 176.213 116.126,176.605 115.910,177.039 115.698 C 178.560 114.955,179.117 114.020,178.887 112.598 C 178.666 111.237,176.459 110.143,175.417 110.879 M209.914 110.824 C 207.705 111.720,207.972 114.500,210.385 115.714 C 210.892 115.970,211.807 116.514,212.417 116.923 C 213.027 117.332,213.595 117.667,213.680 117.667 C 213.764 117.667,213.833 117.732,213.833 117.811 C 213.833 117.891,214.148 118.164,214.533 118.419 C 215.533 119.081,217.203 120.562,219.065 122.441 C 220.813 124.203,222.865 126.922,223.828 128.750 C 223.925 128.933,224.188 129.383,224.414 129.750 C 224.914 130.561,225.663 132.098,226.160 133.333 C 226.362 133.837,226.634 134.496,226.764 134.797 C 226.894 135.098,227.000 135.434,227.000 135.544 C 227.000 135.654,227.144 136.120,227.320 136.580 C 227.617 137.357,227.772 138.000,228.407 141.083 C 228.539 141.725,228.700 143.530,228.764 145.095 C 228.920 148.912,229.412 149.833,231.297 149.833 C 233.434 149.833,234.027 148.323,233.674 143.773 C 233.344 139.501,231.724 132.913,230.414 130.507 C 230.287 130.274,229.801 129.296,229.334 128.333 C 228.419 126.447,228.357 126.337,227.542 125.135 C 227.244 124.696,227.000 124.295,227.000 124.245 C 227.000 124.194,226.924 124.062,226.830 123.951 C 226.737 123.841,226.273 123.225,225.800 122.583 C 225.326 121.942,224.896 121.379,224.844 121.333 C 224.792 121.287,224.300 120.725,223.751 120.083 C 222.867 119.052,221.540 117.667,221.435 117.667 C 221.414 117.667,221.026 117.310,220.573 116.874 C 219.827 116.156,216.249 113.333,216.085 113.333 C 216.047 113.333,215.694 113.118,215.300 112.855 C 214.906 112.591,214.058 112.092,213.417 111.745 C 212.775 111.398,212.102 111.013,211.921 110.890 C 211.561 110.645,210.445 110.609,209.914 110.824 M189.000 122.314 C 189.000 122.394,188.755 122.647,188.455 122.876 C 186.372 124.465,183.287 128.177,181.497 131.250 C 181.284 131.617,181.097 131.935,181.083 131.958 C 180.953 132.163,175.167 130.255,175.167 130.007 C 175.167 129.885,177.218 127.892,178.087 127.171 C 180.551 125.123,184.356 123.295,188.083 122.367 C 188.973 122.146,189.000 122.144,189.000 122.314 M199.667 122.486 C 202.920 123.202,207.053 125.267,209.660 127.478 C 210.697 128.358,212.167 129.834,212.167 129.997 C 212.167 130.267,206.382 132.186,206.253 131.958 C 204.304 128.507,201.784 125.340,199.231 123.134 C 198.383 122.401,198.171 122.094,198.604 122.226 C 198.776 122.278,199.254 122.395,199.667 122.486 M192.500 128.192 L 192.500 133.551 190.542 133.448 C 188.306 133.331,183.835 132.735,183.627 132.527 C 182.948 131.848,191.055 122.833,192.344 122.833 C 192.438 122.833,192.500 124.981,192.500 128.192 M196.183 123.643 C 198.672 125.532,201.959 129.181,203.328 131.574 C 203.987 132.727,204.112 132.615,201.819 132.924 C 198.392 133.385,197.267 133.497,196.042 133.499 L 194.833 133.500 194.833 128.167 C 194.833 125.233,194.897 122.833,194.975 122.833 C 195.053 122.833,195.597 123.198,196.183 123.643 M176.500 132.783 C 177.371 133.102,178.481 133.460,178.966 133.578 C 180.121 133.859,180.091 133.690,179.354 135.764 C 178.270 138.814,177.788 141.002,177.570 143.875 L 177.472 145.167 173.152 145.167 L 168.833 145.167 168.833 144.503 C 168.833 141.577,170.716 135.949,172.725 132.871 L 173.502 131.682 174.209 131.943 C 174.598 132.086,175.629 132.464,176.500 132.783 M215.142 133.674 C 217.001 136.871,218.503 141.619,218.501 144.292 L 218.500 145.167 214.265 145.167 L 210.029 145.167 209.931 144.542 C 209.877 144.198,209.758 143.242,209.667 142.417 C 209.478 140.698,208.731 137.624,208.088 135.917 C 207.263 133.730,207.259 133.895,208.142 133.664 C 209.025 133.433,211.273 132.668,212.750 132.096 L 213.750 131.709 214.129 132.146 C 214.338 132.387,214.794 133.074,215.142 133.674 M185.083 134.922 C 185.725 135.047,187.317 135.230,188.620 135.327 C 189.924 135.425,191.331 135.552,191.745 135.609 L 192.500 135.712 192.500 140.439 L 192.500 145.167 186.142 145.167 L 179.784 145.167 179.892 143.708 C 180.078 141.191,180.918 137.841,182.023 135.211 L 182.320 134.504 183.118 134.599 C 183.557 134.651,184.442 134.796,185.083 134.922 M205.357 135.292 C 206.370 137.618,207.229 141.109,207.428 143.710 L 207.540 145.171 201.228 145.127 L 194.917 145.083 194.872 140.397 L 194.828 135.710 196.622 135.525 C 197.609 135.422,199.054 135.296,199.833 135.244 C 200.612 135.191,201.737 135.041,202.333 134.911 C 202.929 134.780,203.679 134.646,204.000 134.613 C 204.321 134.580,204.680 134.541,204.798 134.527 C 204.915 134.512,205.167 134.856,205.357 135.292 M177.544 149.500 C 177.807 152.432,178.616 155.849,179.606 158.216 C 180.011 159.182,180.007 159.500,179.592 159.500 C 179.325 159.500,176.276 160.500,175.000 161.005 C 173.607 161.558,173.504 161.534,172.806 160.500 C 170.775 157.489,168.833 151.798,168.833 148.858 C 168.833 147.957,168.655 147.990,173.239 148.039 L 177.417 148.083 177.544 149.500 M192.461 152.856 L 192.505 157.630 190.461 157.743 C 188.346 157.860,184.100 158.399,183.157 158.669 C 182.476 158.865,182.379 158.799,181.969 157.857 C 180.746 155.050,179.497 149.283,179.890 148.259 C 179.980 148.025,180.674 148.001,186.204 148.040 L 192.417 148.083 192.461 152.856 M207.426 149.790 C 207.169 153.625,205.583 158.974,204.765 158.769 C 204.399 158.677,202.029 158.285,200.167 158.009 C 199.571 157.921,198.127 157.800,196.958 157.741 L 194.833 157.633 194.833 152.928 C 194.833 150.340,194.883 148.172,194.944 148.111 C 195.006 148.050,197.866 148.000,201.301 148.000 L 207.545 148.000 207.426 149.790 M218.500 148.904 C 218.500 151.809,217.026 156.396,215.032 159.697 C 213.920 161.537,213.796 161.641,213.112 161.293 C 212.488 160.976,210.196 160.162,208.667 159.715 C 207.412 159.348,207.440 159.523,208.252 157.167 C 209.132 154.612,209.885 150.706,209.995 148.125 C 209.998 148.056,211.912 148.000,214.250 148.000 L 218.500 148.000 218.500 148.904 M192.500 165.000 C 192.500 167.933,192.444 170.333,192.375 170.332 C 191.469 170.321,186.518 165.283,184.668 162.489 C 183.473 160.684,183.483 160.752,184.389 160.524 C 185.365 160.279,190.158 159.731,191.708 159.688 L 192.500 159.667 192.500 165.000 M198.449 159.921 C 200.871 160.141,203.802 160.580,203.969 160.747 C 204.083 160.861,202.133 163.818,201.085 165.122 C 199.559 167.019,195.536 170.667,194.970 170.667 C 194.895 170.667,194.833 168.192,194.833 165.167 L 194.833 159.667 195.241 159.667 C 195.465 159.667,196.909 159.781,198.449 159.921 M181.846 162.375 C 183.279 164.789,184.602 166.462,186.871 168.732 L 189.187 171.048 188.468 170.947 C 184.777 170.431,179.387 167.520,176.270 164.360 L 175.123 163.198 175.603 162.954 C 175.867 162.821,176.871 162.466,177.833 162.167 C 178.796 161.868,179.883 161.527,180.250 161.408 C 180.617 161.290,180.964 161.187,181.023 161.180 C 181.081 161.173,181.451 161.710,181.846 162.375 M208.667 161.862 C 211.945 162.868,212.384 163.134,211.804 163.766 C 208.943 166.883,204.580 169.451,199.940 170.747 C 198.579 171.127,198.594 170.996,200.068 169.638 C 202.144 167.725,204.611 164.567,206.011 162.030 C 206.462 161.211,206.530 161.207,208.667 161.862 M172.000 175.757 C 170.703 176.327,170.163 178.872,171.167 179.682 C 172.376 180.658,176.508 182.928,178.417 183.665 C 178.600 183.736,179.050 183.909,179.417 184.050 C 179.783 184.191,180.458 184.426,180.917 184.571 C 181.375 184.716,182.216 184.985,182.786 185.168 C 183.356 185.350,183.950 185.500,184.105 185.500 C 184.260 185.500,184.769 185.607,185.235 185.739 C 187.578 186.398,189.346 186.570,193.750 186.570 C 198.154 186.570,199.922 186.398,202.265 185.739 C 202.731 185.607,203.219 185.499,203.348 185.498 C 204.222 185.493,210.345 183.203,212.000 182.263 C 212.412 182.029,212.862 181.788,213.000 181.727 C 214.691 180.976,216.269 179.595,216.433 178.721 C 216.716 177.214,215.520 175.833,213.932 175.833 C 213.079 175.833,213.001 175.869,211.067 177.123 C 210.893 177.236,210.525 177.433,210.250 177.560 C 209.975 177.688,209.112 178.091,208.333 178.457 C 206.021 179.543,205.914 179.584,203.250 180.417 C 196.728 182.455,187.237 181.985,180.917 179.312 C 178.958 178.484,176.794 177.472,176.667 177.325 C 176.581 177.226,174.976 176.263,174.217 175.857 C 173.575 175.512,172.650 175.471,172.000 175.757 M230.417 188.941 C 230.142 189.085,229.842 189.292,229.750 189.402 C 229.658 189.512,228.758 190.216,227.750 190.965 C 226.742 191.715,225.785 192.442,225.625 192.581 C 225.465 192.720,225.301 192.833,225.262 192.833 C 225.223 192.833,224.642 193.195,223.971 193.637 C 223.299 194.079,222.637 194.492,222.500 194.555 C 222.362 194.619,222.025 194.815,221.750 194.991 C 221.014 195.464,216.064 197.913,215.000 198.331 C 214.496 198.530,213.858 198.789,213.583 198.907 C 212.456 199.393,208.899 200.522,207.500 200.837 C 201.221 202.255,199.800 202.415,193.583 202.411 C 187.682 202.407,184.684 202.100,181.083 201.130 C 180.717 201.031,180.154 200.895,179.833 200.828 C 178.782 200.608,177.448 200.199,175.500 199.501 C 174.446 199.123,173.342 198.741,173.048 198.651 C 172.753 198.561,172.467 198.415,172.413 198.327 C 172.358 198.239,172.200 198.167,172.061 198.167 C 171.794 198.167,166.439 195.542,165.583 194.992 C 165.308 194.815,164.967 194.613,164.825 194.544 C 164.262 194.268,159.677 191.087,158.500 190.157 C 156.055 188.224,153.565 189.169,153.874 191.912 C 153.976 192.821,154.429 193.301,157.000 195.228 C 158.054 196.018,159.007 196.740,159.118 196.832 C 159.229 196.925,159.354 197.000,159.396 197.000 C 159.438 197.000,160.033 197.375,160.718 197.833 C 161.403 198.292,162.041 198.667,162.135 198.667 C 162.229 198.667,162.331 198.729,162.361 198.805 C 162.473 199.086,166.950 201.424,169.083 202.318 C 169.817 202.625,170.717 203.006,171.083 203.165 C 171.924 203.530,174.274 204.355,175.583 204.744 C 176.133 204.907,176.866 205.144,177.212 205.270 C 177.557 205.397,178.013 205.500,178.224 205.500 C 178.435 205.500,178.939 205.603,179.345 205.730 C 181.431 206.378,185.692 207.090,188.520 207.262 C 189.493 207.322,190.375 207.423,190.479 207.487 C 190.619 207.573,190.657 213.830,190.626 231.492 L 190.583 255.380 189.833 255.604 C 189.421 255.727,188.942 255.829,188.770 255.831 C 188.369 255.834,185.268 257.151,185.194 257.350 C 185.164 257.432,185.044 257.500,184.928 257.500 C 184.812 257.500,184.406 257.725,184.026 258.000 C 183.647 258.275,183.293 258.500,183.240 258.500 C 183.186 258.500,183.048 258.594,182.932 258.708 C 182.815 258.823,182.287 259.292,181.756 259.750 C 180.321 260.991,178.738 263.148,177.646 265.353 C 175.257 270.173,175.731 277.586,178.715 282.095 C 179.023 282.560,179.323 283.066,179.382 283.220 C 179.441 283.374,179.567 283.500,179.661 283.500 C 179.756 283.500,179.833 283.582,179.833 283.682 C 179.833 283.859,181.500 285.570,182.668 286.592 C 183.359 287.197,185.757 288.667,186.052 288.667 C 186.166 288.667,186.407 288.768,186.588 288.893 C 189.668 291.010,196.981 290.764,201.792 288.381 C 202.823 287.870,203.667 287.388,203.667 287.310 C 203.667 287.231,203.734 287.167,203.816 287.167 C 204.224 287.167,208.000 283.462,208.000 283.062 C 208.000 282.936,208.070 282.833,208.155 282.833 C 208.241 282.833,208.358 282.684,208.416 282.501 C 208.474 282.318,208.611 282.073,208.719 281.957 C 208.828 281.840,209.056 281.446,209.227 281.081 C 209.397 280.716,209.596 280.299,209.668 280.155 C 211.087 277.318,211.728 271.683,210.927 269.083 C 210.786 268.625,210.669 268.105,210.668 267.928 C 210.667 267.750,210.525 267.300,210.353 266.928 C 210.180 266.555,209.867 265.819,209.656 265.292 C 209.445 264.765,209.211 264.333,209.136 264.333 C 209.061 264.333,209.000 264.232,209.000 264.108 C 209.000 262.104,201.116 255.851,198.563 255.831 C 198.391 255.829,197.912 255.727,197.500 255.604 L 196.750 255.380 196.708 231.451 C 196.668 208.767,196.681 207.519,196.958 207.440 C 197.118 207.394,198.037 207.312,199.000 207.256 C 202.153 207.074,205.087 206.545,210.208 205.233 C 210.781 205.086,211.438 204.888,211.667 204.793 C 211.896 204.698,212.346 204.562,212.667 204.492 C 213.291 204.354,215.486 203.562,216.583 203.079 C 216.950 202.917,217.475 202.688,217.750 202.570 C 219.686 201.735,224.275 199.384,225.455 198.622 C 225.843 198.372,226.237 198.167,226.330 198.167 C 226.424 198.167,226.500 198.109,226.500 198.038 C 226.500 197.967,226.762 197.768,227.083 197.595 C 227.404 197.422,227.667 197.218,227.667 197.140 C 227.667 197.063,227.745 197.000,227.840 197.000 C 228.037 197.000,229.055 196.315,229.139 196.125 C 229.169 196.056,229.294 196.000,229.417 196.000 C 229.539 196.000,229.664 195.939,229.694 195.865 C 229.725 195.791,230.088 195.500,230.500 195.219 C 230.912 194.937,231.438 194.526,231.667 194.304 C 231.896 194.083,232.393 193.662,232.772 193.369 C 235.295 191.417,233.204 187.485,230.417 188.941 M304.100 193.655 C 305.762 194.015,306.918 194.427,308.473 195.215 C 310.153 196.066,310.333 196.176,310.333 196.342 C 310.333 196.429,310.430 196.500,310.547 196.500 C 311.136 196.500,314.181 199.756,314.990 201.250 C 315.864 202.866,315.978 203.100,316.257 203.873 C 318.987 211.413,316.184 219.310,309.247 223.622 C 303.079 227.456,293.886 226.004,289.129 220.443 C 288.645 219.879,288.194 219.392,288.125 219.361 C 288.056 219.331,288.000 219.199,288.000 219.069 C 288.000 218.940,287.936 218.833,287.857 218.833 C 287.676 218.833,286.117 215.714,285.691 214.500 C 284.896 212.235,284.653 209.409,285.069 207.285 C 285.198 206.624,285.340 205.896,285.385 205.667 C 285.584 204.643,286.851 201.659,287.280 201.207 C 287.389 201.092,287.526 200.848,287.584 200.666 C 287.642 200.483,287.759 200.333,287.845 200.333 C 287.930 200.333,288.000 200.252,288.000 200.152 C 288.000 199.867,290.732 197.000,291.004 197.000 C 291.074 197.000,291.174 196.887,291.227 196.750 C 291.280 196.612,291.403 196.500,291.502 196.500 C 291.654 196.500,292.579 195.921,292.833 195.667 C 294.483 194.014,300.664 192.910,304.100 193.655 M89.333 194.398 C 98.519 196.501,104.215 206.243,101.013 214.372 C 100.327 216.115,100.065 216.677,99.647 217.300 C 99.383 217.694,99.167 218.061,99.167 218.116 C 99.167 218.467,96.812 220.977,95.750 221.758 C 95.383 222.027,95.046 222.286,95.000 222.332 C 93.748 223.598,87.765 225.393,85.778 225.098 C 85.488 225.055,84.650 224.931,83.917 224.822 C 73.997 223.344,68.391 213.283,72.035 203.500 C 72.304 202.779,73.349 200.937,73.532 200.861 C 73.606 200.831,73.667 200.708,73.667 200.589 C 73.667 200.228,76.515 197.425,77.583 196.735 C 81.250 194.366,85.501 193.521,89.333 194.398 M104.614 233.616 C 103.873 234.005,103.501 234.769,103.501 235.905 L 103.500 236.893 105.208 238.572 C 106.148 239.496,107.396 240.664,107.981 241.168 C 108.566 241.671,109.241 242.271,109.481 242.501 C 109.721 242.731,110.329 243.253,110.833 243.660 C 111.337 244.068,111.871 244.517,112.018 244.659 C 112.484 245.108,113.062 245.577,114.087 246.340 C 114.635 246.748,115.121 247.121,115.167 247.170 C 115.505 247.528,117.501 249.000,117.649 249.000 C 117.750 249.000,117.833 249.072,117.833 249.160 C 117.833 249.247,118.171 249.517,118.583 249.759 C 118.996 250.001,119.333 250.266,119.333 250.349 C 119.333 250.432,119.416 250.500,119.518 250.500 C 119.677 250.500,119.995 250.723,120.951 251.503 C 121.062 251.593,121.201 251.667,121.261 251.667 C 121.320 251.667,121.653 251.892,122.000 252.167 C 122.347 252.442,122.667 252.667,122.710 252.667 C 122.753 252.667,123.493 253.140,124.353 253.718 C 125.213 254.296,126.029 254.824,126.167 254.891 C 126.304 254.958,126.567 255.105,126.750 255.218 C 126.933 255.331,127.386 255.609,127.756 255.837 C 128.126 256.064,128.576 256.344,128.756 256.460 C 128.936 256.575,129.271 256.761,129.500 256.873 C 129.729 256.985,129.954 257.126,130.000 257.187 C 130.046 257.248,130.701 257.624,131.455 258.024 C 132.209 258.423,133.484 259.107,134.288 259.543 C 135.092 259.979,136.313 260.606,137.000 260.936 C 140.691 262.710,141.716 263.184,143.083 263.749 C 143.908 264.090,144.808 264.467,145.083 264.586 C 145.358 264.705,145.921 264.932,146.333 265.091 C 146.746 265.249,147.336 265.489,147.645 265.623 C 147.954 265.758,148.404 265.930,148.645 266.005 C 148.886 266.080,149.496 266.301,150.000 266.495 C 150.504 266.690,151.404 267.003,152.000 267.191 C 152.596 267.379,153.346 267.631,153.667 267.751 C 154.650 268.119,158.703 269.335,160.833 269.901 C 161.337 270.035,162.231 270.278,162.818 270.440 C 165.760 271.254,167.500 270.466,167.500 268.319 C 167.500 266.869,166.774 266.244,164.417 265.668 C 163.592 265.467,162.579 265.204,162.167 265.084 C 161.754 264.965,160.929 264.738,160.333 264.579 C 159.737 264.421,158.950 264.196,158.583 264.080 C 158.217 263.964,157.467 263.736,156.917 263.575 C 155.146 263.056,153.778 262.583,150.667 261.417 C 150.300 261.279,149.700 261.054,149.333 260.917 C 147.479 260.221,146.833 259.962,145.625 259.427 C 145.327 259.295,144.708 259.026,144.250 258.829 C 143.792 258.632,143.079 258.320,142.667 258.135 C 141.394 257.565,134.613 254.156,134.083 253.821 C 133.808 253.646,133.396 253.411,133.167 253.297 C 132.938 253.183,132.711 253.037,132.663 252.972 C 132.616 252.907,132.391 252.775,132.163 252.677 C 131.936 252.580,131.601 252.407,131.418 252.292 C 131.236 252.177,130.673 251.830,130.168 251.521 C 129.663 251.211,128.929 250.742,128.537 250.479 C 128.145 250.216,127.793 250.000,127.756 250.000 C 127.718 250.000,127.195 249.662,126.592 249.250 C 125.990 248.838,125.455 248.500,125.403 248.500 C 125.352 248.500,125.209 248.406,125.086 248.292 C 124.963 248.177,124.482 247.821,124.016 247.500 C 122.911 246.738,120.805 245.223,120.549 245.005 C 120.438 244.910,120.273 244.833,120.182 244.833 C 120.091 244.833,119.957 244.735,119.883 244.616 C 119.810 244.496,119.450 244.177,119.083 243.907 C 118.717 243.638,118.230 243.248,118.002 243.042 C 117.773 242.835,117.492 242.667,117.377 242.667 C 117.261 242.667,117.167 242.607,117.167 242.534 C 117.167 242.461,116.804 242.126,116.362 241.788 C 115.919 241.450,115.368 241.003,115.138 240.795 C 114.907 240.587,114.279 240.042,113.742 239.583 C 112.600 238.609,111.105 237.281,110.470 236.676 C 110.224 236.442,109.436 235.686,108.720 234.996 C 106.956 233.298,105.896 232.942,104.614 233.616 M280.390 233.548 C 280.192 233.659,279.217 234.512,278.223 235.444 C 275.723 237.790,275.450 238.034,273.752 239.462 C 272.928 240.155,272.168 240.808,272.063 240.913 C 271.958 241.018,271.338 241.512,270.686 242.009 C 270.034 242.506,269.500 242.970,269.500 243.040 C 269.500 243.110,269.387 243.167,269.250 243.167 C 269.112 243.167,269.000 243.230,269.000 243.307 C 269.000 243.385,268.625 243.703,268.167 244.016 C 267.709 244.328,267.334 244.640,267.334 244.708 C 267.333 244.777,267.227 244.833,267.097 244.833 C 266.967 244.833,266.836 244.892,266.806 244.963 C 266.675 245.266,258.953 250.557,257.833 251.110 C 257.696 251.178,257.321 251.414,257.000 251.634 C 256.679 251.853,256.267 252.102,256.083 252.186 C 255.900 252.270,255.525 252.483,255.250 252.660 C 253.829 253.574,247.099 257.050,244.417 258.257 C 244.142 258.380,243.333 258.748,242.619 259.074 C 241.905 259.400,241.255 259.667,241.174 259.667 C 241.093 259.667,240.815 259.773,240.555 259.903 C 240.296 260.034,239.746 260.269,239.333 260.426 C 238.921 260.583,238.347 260.814,238.058 260.939 C 237.769 261.064,237.481 261.167,237.417 261.167 C 237.353 261.167,237.064 261.272,236.775 261.400 C 236.486 261.528,236.100 261.672,235.917 261.720 C 235.733 261.767,235.058 262.007,234.417 262.253 C 233.775 262.499,233.025 262.758,232.750 262.829 C 232.475 262.899,232.063 263.034,231.833 263.127 C 231.604 263.221,230.967 263.429,230.417 263.589 C 229.867 263.749,229.079 263.980,228.667 264.102 C 227.244 264.522,226.245 264.801,224.833 265.171 C 224.054 265.375,223.085 265.645,222.679 265.771 C 222.273 265.897,221.781 266.000,221.586 266.000 C 220.867 266.000,219.833 267.505,219.834 268.550 C 219.836 270.426,221.765 271.209,224.500 270.444 C 225.096 270.278,226.033 270.029,226.583 269.891 C 228.567 269.393,230.844 268.721,231.920 268.316 C 232.380 268.142,232.846 268.000,232.956 268.000 C 233.066 268.000,233.402 267.897,233.703 267.772 C 234.380 267.489,235.258 267.182,235.917 266.997 C 236.717 266.772,237.892 266.345,238.206 266.165 C 238.365 266.074,238.575 266.000,238.672 266.000 C 238.770 266.000,239.160 265.850,239.539 265.667 C 239.919 265.483,240.322 265.333,240.434 265.333 C 240.547 265.333,240.852 265.223,241.111 265.088 C 241.371 264.953,241.846 264.738,242.167 264.610 C 242.487 264.483,243.088 264.245,243.500 264.081 C 246.050 263.069,253.736 259.347,254.588 258.711 C 254.682 258.641,255.057 258.434,255.421 258.251 C 256.137 257.891,258.093 256.762,258.808 256.294 C 259.051 256.135,259.400 255.936,259.583 255.852 C 259.767 255.769,260.179 255.520,260.500 255.300 C 260.821 255.080,261.196 254.847,261.333 254.782 C 261.471 254.716,261.786 254.533,262.033 254.373 C 263.030 253.730,265.595 252.003,265.758 251.865 C 265.853 251.784,266.009 251.687,266.103 251.650 C 266.529 251.483,273.565 246.199,273.639 245.990 C 273.669 245.904,273.797 245.833,273.922 245.833 C 274.048 245.833,274.210 245.740,274.283 245.625 C 274.357 245.510,274.792 245.119,275.250 244.756 C 276.033 244.135,276.251 243.950,277.358 242.973 C 277.600 242.759,278.313 242.135,278.941 241.587 C 279.569 241.039,280.603 240.083,281.237 239.462 C 281.872 238.841,282.415 238.333,282.445 238.333 C 282.555 238.333,283.257 237.591,283.541 237.176 C 284.890 235.199,282.449 232.389,280.390 233.548 M0.000 295.583 L 0.000 301.167 5.583 301.167 L 11.167 301.167 11.167 295.583 L 11.167 290.000 5.583 290.000 L 0.000 290.000 0.000 295.583 M296.667 325.917 L 296.667 361.833 302.333 361.833 L 308.000 361.833 308.000 360.000 C 308.000 358.992,308.039 358.167,308.087 358.167 C 308.134 358.167,308.457 358.346,308.804 358.565 C 313.730 361.674,322.108 362.744,327.664 360.973 C 332.175 359.535,336.258 357.118,338.564 354.520 C 338.758 354.302,339.107 353.927,339.340 353.687 C 339.572 353.446,339.985 352.950,340.255 352.583 C 340.526 352.217,340.789 351.879,340.838 351.833 C 341.603 351.125,343.611 347.194,344.286 345.083 C 345.778 340.417,345.828 334.756,344.418 330.083 C 344.077 328.950,342.272 325.051,341.988 324.833 C 341.929 324.787,341.759 324.513,341.611 324.224 C 340.986 323.004,338.910 320.638,337.100 319.083 C 336.567 318.625,336.031 318.156,335.910 318.042 C 335.789 317.927,335.610 317.833,335.512 317.833 C 335.414 317.833,335.333 317.756,335.333 317.663 C 335.333 317.569,335.165 317.415,334.958 317.322 C 334.562 317.143,334.324 317.003,333.250 316.318 C 332.673 315.950,332.011 315.621,330.583 314.989 C 323.979 312.069,314.770 312.669,308.853 316.404 C 308.479 316.640,308.134 316.833,308.087 316.833 C 308.039 316.833,308.000 310.796,308.000 303.417 L 308.000 290.000 302.333 290.000 L 296.667 290.000 296.667 325.917 M85.069 300.986 C 85.031 301.024,85.000 303.780,85.000 307.109 L 85.000 313.162 79.375 313.206 L 73.750 313.250 73.706 318.792 L 73.662 324.333 79.331 324.333 L 85.000 324.333 85.000 335.311 C 85.000 341.496,85.069 346.650,85.157 347.117 C 85.244 347.573,85.355 348.277,85.404 348.682 C 85.777 351.745,88.579 356.169,91.500 358.305 C 91.821 358.539,92.160 358.810,92.253 358.907 C 92.603 359.270,95.152 360.601,96.167 360.951 C 98.356 361.707,99.660 361.833,105.275 361.833 L 110.667 361.833 110.667 356.250 L 110.667 350.667 105.848 350.667 C 100.060 350.667,99.753 350.598,98.083 348.921 C 96.260 347.090,96.424 348.370,96.367 335.542 L 96.318 324.333 103.492 324.333 L 110.667 324.333 110.667 318.750 L 110.667 313.167 103.502 313.167 L 96.337 313.167 96.294 307.079 L 96.250 300.991 90.694 300.954 C 87.639 300.933,85.108 300.948,85.069 300.986 M173.333 307.042 L 173.333 313.167 167.667 313.167 L 162.000 313.167 162.000 318.750 L 162.000 324.333 167.655 324.333 L 173.310 324.333 173.379 336.208 C 173.454 349.149,173.400 348.365,174.410 351.165 C 175.235 353.450,178.764 358.167,179.649 358.167 C 179.751 358.167,179.833 358.235,179.833 358.319 C 179.833 358.632,183.104 360.479,184.500 360.955 C 186.714 361.709,187.999 361.833,193.609 361.833 L 199.000 361.833 199.000 356.257 L 199.000 350.680 193.958 350.632 L 188.917 350.583 187.917 350.100 C 186.666 349.495,185.610 348.424,185.077 347.220 L 184.667 346.292 184.667 335.313 L 184.667 324.333 191.833 324.333 L 199.000 324.333 199.000 318.750 L 199.000 313.167 191.835 313.167 L 184.671 313.167 184.627 307.079 L 184.583 300.991 178.958 300.954 L 173.333 300.917 173.333 307.042 M0.000 337.417 L 0.000 361.833 5.583 361.833 L 11.167 361.833 11.167 337.417 L 11.167 313.000 5.583 313.000 L 0.000 313.000 0.000 337.417 M207.056 327.875 C 207.136 344.491,207.132 344.434,208.419 347.990 C 209.307 350.445,213.024 355.972,213.808 356.004 C 213.868 356.007,214.329 356.381,214.833 356.836 C 215.970 357.862,216.340 358.140,217.417 358.776 C 218.466 359.397,221.575 360.833,221.868 360.833 C 221.980 360.833,222.375 360.939,222.744 361.067 C 227.068 362.573,235.458 361.701,238.912 359.387 C 239.168 359.215,240.467 359.167,244.787 359.167 L 250.333 359.167 250.333 336.167 L 250.333 313.167 244.750 313.167 L 239.167 313.167 239.163 327.042 C 239.160 336.094,239.098 341.177,238.984 341.667 C 238.888 342.079,238.785 342.604,238.756 342.833 C 238.703 343.236,238.283 344.318,237.979 344.833 C 237.898 344.971,237.782 345.196,237.721 345.333 C 236.852 347.310,233.723 349.617,231.030 350.267 C 229.192 350.711,225.281 350.423,224.906 349.816 C 224.855 349.734,224.687 349.665,224.532 349.662 C 223.106 349.641,220.072 346.452,218.827 343.667 L 218.417 342.750 218.369 327.875 L 218.321 313.000 212.652 313.000 L 206.983 313.000 207.056 327.875 M38.000 313.491 C 35.456 314.004,31.303 315.541,30.833 316.143 C 30.787 316.202,30.394 316.436,29.958 316.663 C 29.523 316.890,29.167 317.134,29.167 317.205 C 29.167 317.276,29.084 317.333,28.982 317.333 C 28.823 317.333,27.995 317.915,27.167 318.609 C 26.127 319.479,23.833 321.781,23.833 321.953 C 23.833 322.071,23.774 322.167,23.702 322.167 C 23.568 322.167,22.333 323.748,22.333 323.919 C 22.333 323.971,22.257 324.105,22.164 324.215 C 20.457 326.249,18.707 331.251,18.317 335.216 C 17.992 338.514,18.475 342.746,19.431 344.964 C 19.561 345.265,19.667 345.612,19.667 345.735 C 19.667 346.360,21.089 349.162,22.380 351.083 C 23.680 353.016,26.963 356.500,27.485 356.500 C 27.585 356.500,27.667 356.562,27.667 356.639 C 27.667 356.761,28.425 357.313,29.810 358.198 C 38.937 364.035,51.418 362.760,59.383 355.178 C 59.823 354.759,60.254 354.392,60.341 354.361 C 60.429 354.331,60.500 354.233,60.500 354.145 C 60.500 354.056,60.673 353.819,60.885 353.617 C 61.096 353.415,61.490 352.950,61.759 352.583 C 62.028 352.217,62.289 351.879,62.338 351.833 C 62.922 351.293,64.672 348.019,65.546 345.833 C 67.243 341.587,67.412 335.319,65.962 330.417 C 65.772 329.775,65.553 329.179,65.475 329.092 C 65.397 329.005,65.333 328.834,65.333 328.714 C 65.333 328.417,63.666 324.976,63.388 324.697 C 63.266 324.576,63.167 324.411,63.167 324.332 C 63.167 323.804,58.950 319.000,58.487 319.000 C 58.402 319.000,58.333 318.934,58.333 318.853 C 58.333 318.707,56.602 317.333,56.417 317.333 C 56.315 317.333,55.311 316.654,55.167 316.487 C 54.993 316.286,51.540 314.667,51.286 314.667 C 51.139 314.667,50.977 314.597,50.925 314.513 C 50.872 314.428,50.587 314.309,50.290 314.247 C 49.993 314.186,49.413 314.032,49.000 313.906 C 46.426 313.116,40.895 312.908,38.000 313.491 M262.167 337.500 L 262.167 361.833 267.825 361.833 L 273.484 361.833 273.535 348.292 L 273.586 334.750 273.974 333.750 C 275.719 329.251,278.170 326.710,282.333 325.081 C 283.666 324.560,285.619 324.340,288.958 324.337 L 292.167 324.333 292.167 318.750 L 292.167 313.167 287.962 313.167 C 284.841 313.167,283.413 313.233,282.420 313.426 C 279.658 313.962,278.048 314.511,275.542 315.771 L 273.500 316.798 273.500 314.982 L 273.500 313.167 267.833 313.167 L 262.167 313.167 262.167 337.500 M371.250 313.450 C 368.800 313.911,365.564 315.100,363.750 316.206 C 358.951 319.131,355.821 322.411,353.842 326.583 C 353.538 327.225,353.216 327.893,353.127 328.067 C 351.430 331.396,350.859 336.818,351.656 342.027 C 351.792 342.913,352.811 346.299,353.139 346.953 C 353.221 347.116,353.542 347.775,353.853 348.416 C 354.494 349.742,356.154 352.333,356.362 352.333 C 356.438 352.333,356.503 352.427,356.506 352.542 C 356.515 352.851,360.800 357.000,361.110 357.000 C 361.152 357.000,361.470 357.228,361.817 357.507 C 362.766 358.269,365.527 359.724,367.417 360.457 C 372.160 362.296,379.119 362.279,384.000 360.416 C 385.619 359.799,386.927 359.185,387.750 358.658 C 388.025 358.481,388.363 358.278,388.500 358.206 C 389.232 357.823,390.000 357.282,390.000 357.150 C 390.000 357.068,390.106 357.000,390.236 357.000 C 390.366 357.000,390.497 356.944,390.528 356.875 C 390.558 356.806,390.939 356.464,391.373 356.115 C 393.205 354.643,395.746 351.713,396.387 350.333 C 396.451 350.196,396.660 349.821,396.851 349.500 C 399.588 344.916,400.653 338.780,399.671 333.250 C 399.346 331.419,399.250 331.058,398.631 329.333 C 398.037 327.678,396.666 324.833,396.462 324.833 C 396.391 324.833,396.333 324.740,396.333 324.625 C 396.330 323.514,391.607 318.654,388.833 316.908 C 387.768 316.237,386.169 315.386,385.167 314.954 C 383.547 314.258,383.301 314.167,383.042 314.167 C 382.887 314.167,382.459 314.061,382.089 313.933 C 379.872 313.161,374.145 312.906,371.250 313.450 M44.937 324.579 C 48.813 325.265,53.260 328.682,54.596 332.000 C 54.652 332.137,54.764 332.400,54.847 332.583 C 56.345 335.919,55.877 341.161,53.789 344.403 C 52.153 346.945,48.552 349.673,46.167 350.177 C 44.168 350.599,43.661 350.667,42.512 350.667 C 41.811 350.667,40.805 350.554,40.277 350.417 C 39.749 350.279,39.201 350.167,39.059 350.167 C 38.801 350.167,38.172 349.911,36.917 349.296 C 29.607 345.712,27.229 336.131,32.086 329.833 C 32.731 328.997,34.101 327.628,35.192 326.729 C 37.394 324.914,41.594 323.987,44.937 324.579 M323.417 324.581 C 325.222 324.907,326.988 325.606,328.114 326.440 C 328.406 326.657,328.689 326.833,328.743 326.833 C 328.835 326.833,329.562 327.453,330.406 328.250 C 333.304 330.987,334.974 336.620,333.918 340.099 C 333.782 340.548,333.669 341.053,333.668 341.219 C 333.657 343.180,329.854 347.751,327.083 349.135 C 315.771 354.785,303.720 342.741,309.437 331.500 C 310.022 330.351,311.196 328.789,312.060 328.011 C 312.424 327.684,312.809 327.330,312.917 327.224 C 313.024 327.118,313.518 326.780,314.014 326.474 C 317.084 324.579,320.076 323.976,323.417 324.581 M377.917 324.576 C 379.465 324.850,381.286 325.553,382.401 326.305 C 382.831 326.596,383.247 326.833,383.324 326.833 C 383.401 326.833,383.508 326.946,383.560 327.083 C 383.613 327.221,383.765 327.333,383.898 327.333 C 384.030 327.333,384.164 327.403,384.194 327.489 C 384.225 327.574,384.666 328.081,385.175 328.614 C 390.761 334.468,389.892 343.219,383.233 348.167 C 381.178 349.694,378.919 350.476,376.135 350.624 C 373.056 350.788,369.487 349.578,367.524 347.704 C 367.358 347.546,366.948 347.179,366.611 346.889 C 366.275 346.599,366.000 346.280,366.000 346.181 C 366.000 346.081,365.931 346.000,365.846 346.000 C 365.448 346.000,363.684 342.980,363.178 341.434 C 360.176 332.244,368.362 322.882,377.917 324.576 M119.167 333.000 L 119.167 338.667 136.333 338.667 L 153.500 338.667 153.500 333.000 L 153.500 327.333 136.333 327.333 L 119.167 327.333 119.167 333.000 \",\n stroke: \"none\",\n fill: \"#1454a4\",\n fillRule: \"evenodd\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"path2\",\n d: \"M194.873 128.125 L 194.917 133.417 195.709 133.432 L 196.502 133.447 195.747 133.381 L 194.991 133.315 195.037 128.074 C 195.063 125.192,195.026 122.833,194.956 122.833 C 194.886 122.833,194.848 125.215,194.873 128.125 M176.158 128.958 L 175.583 129.583 176.208 129.009 C 176.790 128.474,176.910 128.333,176.783 128.333 C 176.755 128.333,176.474 128.615,176.158 128.958 M191.211 133.453 C 191.464 133.491,191.839 133.490,192.044 133.451 C 192.249 133.411,192.042 133.380,191.583 133.381 C 191.125 133.382,190.957 133.415,191.211 133.453 M194.907 140.333 C 194.907 142.946,194.930 144.015,194.958 142.708 C 194.986 141.402,194.986 139.265,194.958 137.958 C 194.930 136.652,194.907 137.721,194.907 140.333 M194.907 152.833 C 194.907 155.446,194.930 156.515,194.958 155.208 C 194.986 153.902,194.986 151.765,194.958 150.458 C 194.930 149.152,194.907 150.221,194.907 152.833 M191.460 159.785 C 191.668 159.824,191.968 159.823,192.127 159.781 C 192.286 159.739,192.117 159.707,191.750 159.709 C 191.383 159.711,191.253 159.745,191.460 159.785 M194.909 159.877 C 194.865 159.992,194.849 162.448,194.875 165.335 L 194.922 170.583 194.961 165.218 L 195.000 159.852 195.708 159.789 L 196.417 159.725 195.703 159.696 C 195.260 159.678,194.959 159.746,194.909 159.877 M199.075 167.208 L 198.417 167.917 199.125 167.258 C 199.784 166.645,199.910 166.500,199.784 166.500 C 199.757 166.500,199.438 166.819,199.075 167.208 M200.740 169.042 L 200.250 169.583 200.792 169.094 C 201.297 168.638,201.410 168.500,201.281 168.500 C 201.252 168.500,201.009 168.744,200.740 169.042 \",\n stroke: \"none\",\n fill: \"#5a83be\",\n fillRule: \"evenodd\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"path3\",\n d: \"M192.408 128.167 C 192.408 131.054,192.430 132.235,192.458 130.792 C 192.486 129.348,192.486 126.985,192.458 125.542 C 192.430 124.098,192.408 125.279,192.408 128.167 M200.667 124.417 C 201.257 125.013,201.778 125.500,201.824 125.500 C 201.870 125.500,201.424 125.013,200.833 124.417 C 200.243 123.821,199.722 123.333,199.676 123.333 C 199.630 123.333,200.076 123.821,200.667 124.417 M186.500 124.417 C 186.095 124.829,185.801 125.167,185.847 125.167 C 185.893 125.167,186.262 124.829,186.667 124.417 C 187.072 124.004,187.365 123.667,187.319 123.667 C 187.274 123.667,186.905 124.004,186.500 124.417 M197.333 124.719 C 197.333 124.748,197.577 124.991,197.875 125.260 L 198.417 125.750 197.927 125.208 C 197.471 124.703,197.333 124.590,197.333 124.719 M211.051 128.968 C 211.578 129.500,211.951 129.999,211.880 130.078 C 211.808 130.156,211.851 130.162,211.975 130.090 C 212.174 129.975,210.475 128.000,210.177 128.000 C 210.131 128.000,210.525 128.435,211.051 128.968 M188.794 133.285 C 189.001 133.324,189.301 133.323,189.460 133.281 C 189.620 133.239,189.450 133.207,189.083 133.209 C 188.717 133.211,188.586 133.245,188.794 133.285 M197.960 133.285 C 198.168 133.324,198.468 133.323,198.627 133.281 C 198.786 133.239,198.617 133.207,198.250 133.209 C 197.883 133.211,197.753 133.245,197.960 133.285 M196.542 135.615 C 196.702 135.657,196.965 135.657,197.125 135.615 C 197.285 135.573,197.154 135.539,196.833 135.539 C 196.512 135.539,196.381 135.573,196.542 135.615 M192.407 140.333 C 192.407 142.946,192.430 144.015,192.458 142.708 C 192.486 141.402,192.486 139.265,192.458 137.958 C 192.430 136.652,192.407 137.721,192.407 140.333 M177.379 144.333 C 177.379 144.746,177.411 144.915,177.451 144.708 C 177.491 144.502,177.491 144.165,177.451 143.958 C 177.411 143.752,177.379 143.921,177.379 144.333 M177.383 149.000 C 177.383 149.504,177.415 149.710,177.453 149.458 C 177.491 149.206,177.491 148.794,177.453 148.542 C 177.415 148.290,177.383 148.496,177.383 149.000 M192.372 152.783 L 192.333 157.483 191.375 157.544 L 190.417 157.604 191.380 157.635 C 192.601 157.675,192.514 158.077,192.458 152.664 L 192.411 148.083 192.372 152.783 M195.461 157.621 C 195.761 157.658,196.211 157.657,196.461 157.619 C 196.712 157.581,196.467 157.551,195.917 157.552 C 195.367 157.553,195.162 157.584,195.461 157.621 M188.460 157.785 C 188.668 157.824,188.968 157.823,189.127 157.781 C 189.286 157.739,189.117 157.707,188.750 157.709 C 188.383 157.711,188.253 157.745,188.460 157.785 M198.375 157.782 C 198.535 157.823,198.798 157.823,198.958 157.782 C 199.119 157.740,198.987 157.705,198.667 157.705 C 198.346 157.705,198.215 157.740,198.375 157.782 M192.408 165.000 C 192.408 167.887,192.430 169.069,192.458 167.625 C 192.486 166.181,192.486 163.819,192.458 162.375 C 192.430 160.931,192.408 162.112,192.408 165.000 M186.375 160.282 C 186.535 160.323,186.798 160.323,186.958 160.282 C 187.119 160.240,186.987 160.205,186.667 160.205 C 186.346 160.205,186.215 160.240,186.375 160.282 M200.375 160.282 C 200.535 160.323,200.798 160.323,200.958 160.282 C 201.119 160.240,200.987 160.205,200.667 160.205 C 200.346 160.205,200.215 160.240,200.375 160.282 M176.417 164.500 C 176.775 164.867,177.105 165.167,177.151 165.167 C 177.197 165.167,176.941 164.867,176.583 164.500 C 176.225 164.133,175.895 163.833,175.849 163.833 C 175.803 163.833,176.059 164.133,176.417 164.500 M188.417 167.000 C 188.961 167.550,189.444 168.000,189.490 168.000 C 189.535 168.000,189.128 167.550,188.583 167.000 C 188.039 166.450,187.556 166.000,187.510 166.000 C 187.465 166.000,187.872 166.450,188.417 167.000 M201.740 168.042 L 201.250 168.583 201.792 168.094 C 202.297 167.638,202.410 167.500,202.281 167.500 C 202.252 167.500,202.009 167.744,201.740 168.042 M199.740 170.042 L 199.250 170.583 199.792 170.094 C 200.297 169.638,200.410 169.500,200.281 169.500 C 200.252 169.500,200.009 169.744,199.740 170.042 M87.958 300.958 C 89.448 300.986,91.885 300.986,93.375 300.958 C 94.865 300.930,93.646 300.908,90.667 300.908 C 87.688 300.908,86.469 300.930,87.958 300.958 M176.219 300.958 C 177.760 300.986,180.235 300.986,181.719 300.958 C 183.203 300.930,181.942 300.908,178.917 300.908 C 175.892 300.908,174.678 300.931,176.219 300.958 \",\n stroke: \"none\",\n fill: \"#8cacd4\",\n fillRule: \"evenodd\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"path4\",\n d: \"M185.991 125.125 L 185.417 125.750 186.042 125.176 C 186.623 124.641,186.743 124.500,186.616 124.500 C 186.588 124.500,186.307 124.781,185.991 125.125 M187.740 126.708 L 187.250 127.250 187.792 126.760 C 188.297 126.304,188.410 126.167,188.281 126.167 C 188.252 126.167,188.009 126.410,187.740 126.708 M189.960 133.451 C 190.168 133.491,190.468 133.490,190.627 133.448 C 190.786 133.406,190.617 133.374,190.250 133.375 C 189.883 133.377,189.753 133.411,189.960 133.451 M196.792 133.451 C 196.998 133.491,197.335 133.491,197.542 133.451 C 197.748 133.411,197.579 133.379,197.167 133.379 C 196.754 133.379,196.585 133.411,196.792 133.451 M189.127 135.451 C 189.334 135.491,189.634 135.490,189.794 135.448 C 189.953 135.406,189.783 135.374,189.417 135.375 C 189.050 135.377,188.920 135.411,189.127 135.451 M197.794 135.451 C 198.001 135.491,198.301 135.490,198.460 135.448 C 198.620 135.406,198.450 135.374,198.083 135.375 C 197.717 135.377,197.586 135.411,197.794 135.451 M170.958 145.125 C 172.173 145.153,174.160 145.153,175.375 145.125 C 176.590 145.096,175.596 145.073,173.167 145.073 C 170.737 145.073,169.744 145.096,170.958 145.125 M182.958 145.125 C 184.723 145.152,187.610 145.152,189.375 145.125 C 191.140 145.098,189.696 145.076,186.167 145.076 C 182.637 145.076,181.194 145.098,182.958 145.125 M198.136 145.125 C 199.907 145.152,202.757 145.152,204.469 145.125 C 206.182 145.098,204.733 145.076,201.250 145.076 C 197.767 145.076,196.365 145.098,198.136 145.125 M212.032 145.124 C 213.195 145.153,215.145 145.153,216.365 145.125 C 217.585 145.096,216.633 145.073,214.250 145.073 C 211.867 145.073,210.868 145.096,212.032 145.124 M171.042 148.125 C 172.210 148.153,174.123 148.153,175.292 148.125 C 176.460 148.096,175.504 148.072,173.167 148.072 C 170.829 148.072,169.873 148.096,171.042 148.125 M183.042 148.125 C 184.760 148.152,187.573 148.152,189.292 148.125 C 191.010 148.098,189.604 148.076,186.167 148.076 C 182.729 148.076,181.323 148.098,183.042 148.125 M198.136 148.125 C 199.907 148.152,202.757 148.152,204.469 148.125 C 206.182 148.098,204.733 148.076,201.250 148.076 C 197.767 148.076,196.365 148.098,198.136 148.125 M212.032 148.124 C 213.195 148.153,215.145 148.153,216.365 148.125 C 217.585 148.096,216.633 148.073,214.250 148.073 C 211.867 148.073,210.868 148.096,212.032 148.124 M186.667 168.750 C 187.165 169.254,187.609 169.667,187.655 169.667 C 187.701 169.667,187.331 169.254,186.833 168.750 C 186.335 168.246,185.891 167.833,185.845 167.833 C 185.799 167.833,186.169 168.246,186.667 168.750 \",\n stroke: \"none\",\n fill: \"#3b6fb4\",\n fillRule: \"evenodd\"\n}));\n\nfunction SvgUser(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"svg\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n width: 128,\n height: 128,\n viewBox: \"0, 0, 400,361.95307545973367\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgUser);\nexport default __webpack_public_path__ + \"static/media/user.17caf8a1.svg\";\nexport { ForwardRef as ReactComponent };","import React, { ReactNode } from \"react\";\n\nimport { Grid, makeStyles, Container, Typography, Link } from \"@material-ui/core\";\nimport { grey } from \"@material-ui/core/colors\";\n\nimport { ReactComponent as UserSvg } from \"../assets/images/user.svg\";\n\nexport interface Props {\n id?: string;\n children?: ReactNode;\n title: string;\n showBrand?: boolean;\n}\n\nconst LoginLayout = function (props: Props) {\n const style = useStyles();\n return (\n \n \n \n \n \n \n \n \n {props.title}\n \n \n \n {props.children}\n \n {props.showBrand ? (\n \n {/**/}\n {/* Powered by Authelia*/}\n {/**/}\n \n ) : null}\n \n \n \n );\n};\n\nexport default LoginLayout;\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n minHeight: \"90vh\",\n textAlign: \"center\",\n },\n rootContainer: {\n paddingLeft: 32,\n paddingRight: 32,\n },\n title: {},\n icon: {\n margin: theme.spacing(),\n width: \"128px\",\n fill: theme.custom.icon,\n },\n body: {},\n poweredBy: {\n fontSize: \"0.7em\",\n color: grey[500],\n },\n}));\n","import { AxiosResponse } from \"axios\";\n\nimport { getBasePath } from \"../utils/BasePath\";\n\nconst basePath = getBasePath();\n\nexport const FirstFactorPath = basePath + \"/api/firstfactor\";\nexport const InitiateTOTPRegistrationPath = basePath + \"/api/secondfactor/totp/identity/start\";\nexport const CompleteTOTPRegistrationPath = basePath + \"/api/secondfactor/totp/identity/finish\";\n\nexport const InitiateU2FRegistrationPath = basePath + \"/api/secondfactor/u2f/identity/start\";\nexport const CompleteU2FRegistrationStep1Path = basePath + \"/api/secondfactor/u2f/identity/finish\";\nexport const CompleteU2FRegistrationStep2Path = basePath + \"/api/secondfactor/u2f/register\";\n\nexport const InitiateU2FSignInPath = basePath + \"/api/secondfactor/u2f/sign_request\";\nexport const CompleteU2FSignInPath = basePath + \"/api/secondfactor/u2f/sign\";\n\nexport const CompletePushNotificationSignInPath = basePath + \"/api/secondfactor/duo\";\nexport const CompleteTOTPSignInPath = basePath + \"/api/secondfactor/totp\";\n\nexport const InitiateResetPasswordPath = basePath + \"/api/reset-password/identity/start\";\nexport const CompleteResetPasswordPath = basePath + \"/api/reset-password/identity/finish\";\n// Do the password reset during completion.\nexport const ResetPasswordPath = basePath + \"/api/reset-password\";\n\nexport const LogoutPath = basePath + \"/api/logout\";\nexport const StatePath = basePath + \"/api/state\";\nexport const UserInfoPath = basePath + \"/api/user/info\";\nexport const UserInfo2FAMethodPath = basePath + \"/api/user/info/2fa_method\";\n\nexport const ConfigurationPath = basePath + \"/api/configuration\";\n\nexport interface ErrorResponse {\n status: \"KO\";\n message: string;\n}\n\nexport interface Response {\n status: \"OK\";\n data: T;\n}\n\nexport type ServiceResponse = Response | ErrorResponse;\n\nfunction toErrorResponse(resp: AxiosResponse>): ErrorResponse | undefined {\n if (resp.data && \"status\" in resp.data && resp.data[\"status\"] === \"KO\") {\n return resp.data as ErrorResponse;\n }\n return undefined;\n}\n\nexport function toData(resp: AxiosResponse>): T | undefined {\n if (resp.data && \"status\" in resp.data && resp.data[\"status\"] === \"OK\") {\n return resp.data.data as T;\n }\n return undefined;\n}\n\nexport function hasServiceError(resp: AxiosResponse>) {\n const errResp = toErrorResponse(resp);\n if (errResp && errResp.status === \"KO\") {\n return { errored: true, message: errResp.message };\n }\n return { errored: false, message: null };\n}\n","import axios from \"axios\";\n\nimport { ServiceResponse, hasServiceError, toData } from \"./Api\";\n\nexport async function PostWithOptionalResponse(path: string, body?: any): Promise {\n const res = await axios.post>(path, body);\n\n if (res.status !== 200 || hasServiceError(res).errored) {\n throw new Error(`Failed POST to ${path}. Code: ${res.status}. Message: ${hasServiceError(res).message}`);\n }\n return toData(res);\n}\n\nexport async function Post(path: string, body?: any) {\n const res = await PostWithOptionalResponse(path, body);\n if (!res) {\n throw new Error(\"unexpected type of response\");\n }\n return res;\n}\n\nexport async function Get(path: string): Promise {\n const res = await axios.get>(path);\n\n if (res.status !== 200 || hasServiceError(res).errored) {\n throw new Error(`Failed GET from ${path}. Code: ${res.status}.`);\n }\n\n const d = toData(res);\n if (!d) {\n throw new Error(\"unexpected type of response\");\n }\n return d;\n}\n","import U2fApi from \"u2f-api\";\n\nimport {\n InitiateTOTPRegistrationPath,\n CompleteTOTPRegistrationPath,\n InitiateU2FRegistrationPath,\n CompleteU2FRegistrationStep1Path,\n CompleteU2FRegistrationStep2Path,\n} from \"./Api\";\nimport { Post, PostWithOptionalResponse } from \"./Client\";\n\nexport async function initiateTOTPRegistrationProcess() {\n await PostWithOptionalResponse(InitiateTOTPRegistrationPath);\n}\n\ninterface CompleteTOTPRegistrationResponse {\n base32_secret: string;\n otpauth_url: string;\n}\n\nexport async function completeTOTPRegistrationProcess(processToken: string) {\n return Post(CompleteTOTPRegistrationPath, { token: processToken });\n}\n\nexport async function initiateU2FRegistrationProcess() {\n return PostWithOptionalResponse(InitiateU2FRegistrationPath);\n}\n\ninterface U2RRegistrationStep1Response {\n appId: string;\n registerRequests: [\n {\n version: string;\n challenge: string;\n },\n ];\n}\n\nexport async function completeU2FRegistrationProcessStep1(processToken: string) {\n return Post(CompleteU2FRegistrationStep1Path, { token: processToken });\n}\n\nexport async function completeU2FRegistrationProcessStep2(response: U2fApi.RegisterResponse) {\n return PostWithOptionalResponse(CompleteU2FRegistrationStep2Path, response);\n}\n","import queryString from \"query-string\";\n\nexport function extractIdentityToken(locationSearch: string) {\n const queryParams = queryString.parse(locationSearch);\n return queryParams && \"token\" in queryParams ? (queryParams[\"token\"] as string) : null;\n}\n","import React, { useEffect, useCallback, useState } from \"react\";\n\nimport { IconDefinition, faCopy, faKey, faTimesCircle } from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { makeStyles, Typography, Button, IconButton, Link, CircularProgress, TextField } from \"@material-ui/core\";\nimport { red } from \"@material-ui/core/colors\";\nimport classnames from \"classnames\";\nimport QRCode from \"qrcode.react\";\nimport { useHistory, useLocation } from \"react-router\";\n\nimport AppStoreBadges from \"../../components/AppStoreBadges\";\nimport { GoogleAuthenticator } from \"../../constants\";\nimport { useNotifications } from \"../../hooks/NotificationsContext\";\nimport LoginLayout from \"../../layouts/LoginLayout\";\nimport { FirstFactorRoute } from \"../../Routes\";\nimport { completeTOTPRegistrationProcess } from \"../../services/RegisterDevice\";\nimport { extractIdentityToken } from \"../../utils/IdentityToken\";\n\nconst RegisterOneTimePassword = function () {\n const style = useStyles();\n const history = useHistory();\n const location = useLocation();\n\n // The secret retrieved from the API is all is ok.\n const [secretURL, setSecretURL] = useState(\"empty\");\n const [secretBase32, setSecretBase32] = useState(undefined as string | undefined);\n const { createSuccessNotification, createErrorNotification } = useNotifications();\n const [hasErrored, setHasErrored] = useState(false);\n const [isLoading, setIsLoading] = useState(false);\n\n // Get the token from the query param to give it back to the API when requesting\n // the secret for OTP.\n const processToken = extractIdentityToken(location.search);\n\n const handleDoneClick = () => {\n history.push(FirstFactorRoute);\n };\n\n const completeRegistrationProcess = useCallback(async () => {\n if (!processToken) {\n return;\n }\n\n setIsLoading(true);\n try {\n const secret = await completeTOTPRegistrationProcess(processToken);\n setSecretURL(secret.otpauth_url);\n setSecretBase32(secret.base32_secret);\n } catch (err) {\n console.error(err);\n createErrorNotification(\"Failed to generate the code to register your device\", 10000);\n setHasErrored(true);\n }\n setIsLoading(false);\n }, [processToken, createErrorNotification]);\n\n useEffect(() => {\n completeRegistrationProcess();\n }, [completeRegistrationProcess]);\n function SecretButton(text: string | undefined, action: string, icon: IconDefinition) {\n return (\n {\n navigator.clipboard.writeText(`${text}`);\n createSuccessNotification(`${action}`);\n }}\n >\n \n \n );\n }\n const qrcodeFuzzyStyle = isLoading || hasErrored ? style.fuzzy : undefined;\n\n return (\n \n
\n
\n Need Google Authenticator?\n \n
\n
\n \n \n {!hasErrored && isLoading ? : null}\n {hasErrored ? : null}\n \n
\n
\n {secretURL !== \"empty\" ? (\n \n ) : null}\n {secretBase32 ? SecretButton(secretBase32, \"OTP Secret copied to clipboard.\", faKey) : null}\n {secretURL !== \"empty\" ? SecretButton(secretURL, \"OTP URL copied to clipboard.\", faCopy) : null}\n
\n \n Done\n \n
\n
\n );\n};\n\nexport default RegisterOneTimePassword;\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n paddingTop: theme.spacing(4),\n paddingBottom: theme.spacing(4),\n },\n qrcode: {\n marginTop: theme.spacing(2),\n marginBottom: theme.spacing(2),\n },\n fuzzy: {\n filter: \"blur(10px)\",\n },\n secret: {\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(1),\n width: \"256px\",\n },\n googleAuthenticator: {},\n googleAuthenticatorText: {\n fontSize: theme.typography.fontSize * 0.8,\n },\n googleAuthenticatorBadges: {},\n secretButtons: {\n width: \"128px\",\n },\n doneButton: {\n width: \"256px\",\n },\n qrcodeContainer: {\n position: \"relative\",\n display: \"inline-block\",\n },\n loader: {\n position: \"absolute\",\n top: \"calc(128px - 64px)\",\n left: \"calc(128px - 64px)\",\n color: \"rgba(255, 255, 255, 0.5)\",\n },\n failureIcon: {\n position: \"absolute\",\n top: \"calc(128px - 64px)\",\n left: \"calc(128px - 64px)\",\n color: red[400],\n fontSize: \"128px\",\n },\n}));\n","export enum SecondFactorMethod {\n TOTP = 1,\n U2F = 2,\n MobilePush = 3,\n}\n","import { StatePath } from \"./Api\";\nimport { Get } from \"./Client\";\n\nexport enum AuthenticationLevel {\n Unauthenticated = 0,\n OneFactor = 1,\n TwoFactor = 2,\n}\n\nexport interface AutheliaState {\n username: string;\n authentication_level: AuthenticationLevel;\n}\n\nexport async function getState(): Promise {\n return Get(StatePath);\n}\n","import React from \"react\";\n\nimport classnames from \"classnames\";\n\nimport style from \"./FingerTouchIcon.module.css\";\n\nexport interface Props {\n size: number;\n\n animated?: boolean;\n strong?: boolean;\n}\n\nconst FingerTouchIcon = function (props: Props) {\n const shakingClass = props.animated ? style.shaking : undefined;\n const strong = props.strong ? style.strong : undefined;\n\n return (\n \n \n \n \n );\n};\n\nexport default FingerTouchIcon;\n","import React, { useState, useEffect, useCallback } from \"react\";\n\nimport { makeStyles, Typography, Button } from \"@material-ui/core\";\nimport { useHistory, useLocation } from \"react-router\";\nimport u2fApi from \"u2f-api\";\n\nimport FingerTouchIcon from \"../../components/FingerTouchIcon\";\nimport { useNotifications } from \"../../hooks/NotificationsContext\";\nimport LoginLayout from \"../../layouts/LoginLayout\";\nimport { FirstFactorPath } from \"../../services/Api\";\nimport {\n completeU2FRegistrationProcessStep1,\n completeU2FRegistrationProcessStep2,\n} from \"../../services/RegisterDevice\";\nimport { extractIdentityToken } from \"../../utils/IdentityToken\";\n\nconst RegisterSecurityKey = function () {\n const style = useStyles();\n const history = useHistory();\n const location = useLocation();\n const { createErrorNotification } = useNotifications();\n const [, setRegistrationInProgress] = useState(false);\n\n const processToken = extractIdentityToken(location.search);\n\n const handleBackClick = () => {\n history.push(FirstFactorPath);\n };\n\n const registerStep1 = useCallback(async () => {\n if (!processToken) {\n return;\n }\n try {\n setRegistrationInProgress(true);\n const res = await completeU2FRegistrationProcessStep1(processToken);\n const registerRequests: u2fApi.RegisterRequest[] = [];\n for (var i in res.registerRequests) {\n const r = res.registerRequests[i];\n registerRequests.push({\n appId: res.appId,\n challenge: r.challenge,\n version: r.version,\n });\n }\n const registerResponse = await u2fApi.register(registerRequests, [], 60);\n await completeU2FRegistrationProcessStep2(registerResponse);\n setRegistrationInProgress(false);\n history.push(FirstFactorPath);\n } catch (err) {\n console.error(err);\n createErrorNotification(\n \"Failed to register your security key. The identity verification process might have timed out.\",\n );\n }\n }, [processToken, createErrorNotification, history]);\n\n useEffect(() => {\n registerStep1();\n }, [registerStep1]);\n\n return (\n \n
\n \n
\n Touch the token on your security key\n \n \n
\n );\n};\n\nexport default RegisterSecurityKey;\n\nconst useStyles = makeStyles((theme) => ({\n icon: {\n paddingTop: theme.spacing(4),\n paddingBottom: theme.spacing(4),\n },\n instruction: {\n paddingBottom: theme.spacing(4),\n },\n}));\n","import { SecondFactorMethod } from \"../models/Methods\";\nimport { UserInfo } from \"../models/UserInfo\";\nimport { UserInfoPath, UserInfo2FAMethodPath } from \"./Api\";\nimport { Get, PostWithOptionalResponse } from \"./Client\";\n\nexport type Method2FA = \"u2f\" | \"totp\" | \"mobile_push\";\n\nexport interface UserInfoPayload {\n display_name: string;\n method: Method2FA;\n has_u2f: boolean;\n has_totp: boolean;\n}\n\nexport interface MethodPreferencePayload {\n method: Method2FA;\n}\n\nexport function toEnum(method: Method2FA): SecondFactorMethod {\n switch (method) {\n case \"u2f\":\n return SecondFactorMethod.U2F;\n case \"totp\":\n return SecondFactorMethod.TOTP;\n case \"mobile_push\":\n return SecondFactorMethod.MobilePush;\n }\n}\n\nexport function toString(method: SecondFactorMethod): Method2FA {\n switch (method) {\n case SecondFactorMethod.U2F:\n return \"u2f\";\n case SecondFactorMethod.TOTP:\n return \"totp\";\n case SecondFactorMethod.MobilePush:\n return \"mobile_push\";\n }\n}\n\nexport async function getUserPreferences(): Promise {\n const res = await Get(UserInfoPath);\n return { ...res, method: toEnum(res.method) };\n}\n\nexport function setPreferred2FAMethod(method: SecondFactorMethod) {\n return PostWithOptionalResponse(UserInfo2FAMethodPath, { method: toString(method) } as MethodPreferencePayload);\n}\n","import { Configuration } from \"../models/Configuration\";\nimport { ConfigurationPath } from \"./Api\";\nimport { Get } from \"./Client\";\nimport { toEnum, Method2FA } from \"./UserPreferences\";\n\ninterface ConfigurationPayload {\n available_methods: Method2FA[];\n second_factor_enabled: boolean;\n totp_period: number;\n}\n\nexport async function getConfiguration(): Promise {\n const config = await Get(ConfigurationPath);\n return { ...config, available_methods: new Set(config.available_methods.map(toEnum)) };\n}\n","import { useState, useCallback, DependencyList } from \"react\";\n\ntype PromisifiedFunction = (...args: any) => Promise;\n\nexport function useRemoteCall(\n fn: PromisifiedFunction,\n deps: DependencyList,\n): [Ret | undefined, PromisifiedFunction, boolean, Error | undefined] {\n const [data, setData] = useState(undefined as Ret | undefined);\n const [inProgress, setInProgress] = useState(false);\n const [error, setError] = useState(undefined as Error | undefined);\n\n const fnCallback = useCallback(fn, [fn, deps]);\n\n const triggerCallback = useCallback(async () => {\n try {\n setInProgress(true);\n const res = await fnCallback();\n setInProgress(false);\n setData(res);\n } catch (err) {\n console.error(err);\n setError(err);\n }\n }, [setInProgress, setError, fnCallback]);\n\n return [data, triggerCallback, inProgress, error];\n}\n","import queryString from \"query-string\";\nimport { useLocation } from \"react-router\";\n\nexport function useRedirectionURL() {\n const location = useLocation();\n const queryParams = queryString.parse(location.search);\n return queryParams && \"rd\" in queryParams ? (queryParams[\"rd\"] as string) : undefined;\n}\n","import queryString from \"query-string\";\nimport { useLocation } from \"react-router\";\n\nexport function useRequestMethod() {\n const location = useLocation();\n const queryParams = queryString.parse(location.search);\n return queryParams && \"rm\" in queryParams ? (queryParams[\"rm\"] as string) : undefined;\n}\n","import React from \"react\";\n\nimport { useTheme, Typography, Grid } from \"@material-ui/core\";\nimport ReactLoading from \"react-loading\";\n\nconst LoadingPage = function () {\n const theme = useTheme();\n return (\n \n \n \n Loading...\n \n \n );\n};\n\nexport default LoadingPage;\n","import React from \"react\";\n\nimport { faCheckCircle } from \"@fortawesome/free-regular-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\n\nconst SuccessIcon = function () {\n return ;\n};\n\nexport default SuccessIcon;\n","import React from \"react\";\n\nimport { Typography, makeStyles } from \"@material-ui/core\";\n\nimport SuccessIcon from \"../../components/SuccessIcon\";\n\nconst Authenticated = function () {\n const classes = useStyles();\n return (\n
\n
\n \n
\n Authenticated\n
\n );\n};\n\nexport default Authenticated;\n\nconst useStyles = makeStyles((theme) => ({\n iconContainer: {\n marginBottom: theme.spacing(2),\n flex: \"0 0 100%\",\n },\n}));\n","import React from \"react\";\n\nimport { Grid, makeStyles, Button } from \"@material-ui/core\";\nimport { useHistory } from \"react-router\";\n\nimport LoginLayout from \"../../../layouts/LoginLayout\";\nimport { LogoutRoute as SignOutRoute } from \"../../../Routes\";\nimport Authenticated from \"../Authenticated\";\n\nexport interface Props {\n name: string;\n}\n\nconst AuthenticatedView = function (props: Props) {\n const style = useStyles();\n const history = useHistory();\n\n const handleLogoutClick = () => {\n history.push(SignOutRoute);\n };\n\n return (\n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default AuthenticatedView;\n\nconst useStyles = makeStyles((theme) => ({\n mainContainer: {\n border: \"1px solid #d6d6d6\",\n borderRadius: \"10px\",\n padding: theme.spacing(4),\n marginTop: theme.spacing(2),\n marginBottom: theme.spacing(2),\n },\n}));\n","import React from \"react\";\n\nimport { makeStyles } from \"@material-ui/core\";\nimport TextField, { TextFieldProps } from \"@material-ui/core/TextField\";\n\n/**\n * This component fixes outlined TextField\n * https://github.com/mui-org/material-ui/issues/14530#issuecomment-463576879\n *\n * @param props the TextField props\n */\nconst FixedTextField = function (props: TextFieldProps) {\n const style = useStyles();\n return (\n \n {props.children}\n \n );\n};\n\nexport default FixedTextField;\n\nconst useStyles = makeStyles((theme) => ({\n label: {\n backgroundColor: theme.palette.background.default,\n paddingLeft: theme.spacing(0.1),\n paddingRight: theme.spacing(0.1),\n },\n}));\n","import { FirstFactorPath } from \"./Api\";\nimport { PostWithOptionalResponse } from \"./Client\";\nimport { SignInResponse } from \"./SignIn\";\n\ninterface PostFirstFactorBody {\n username: string;\n password: string;\n keepMeLoggedIn: boolean;\n targetURL?: string;\n requestMethod?: string;\n}\n\nexport async function postFirstFactor(\n username: string,\n password: string,\n rememberMe: boolean,\n targetURL?: string,\n requestMethod?: string,\n) {\n const data: PostFirstFactorBody = {\n username,\n password,\n keepMeLoggedIn: rememberMe,\n };\n\n if (targetURL) {\n data.targetURL = targetURL;\n }\n\n if (requestMethod) {\n data.requestMethod = requestMethod;\n }\n\n const res = await PostWithOptionalResponse(FirstFactorPath, data);\n return res ? res : ({} as SignInResponse);\n}\n","import React, { MutableRefObject, useEffect, useRef, useState } from \"react\";\n\nimport { makeStyles, Grid, Button, FormControlLabel, Checkbox, Link } from \"@material-ui/core\";\nimport classnames from \"classnames\";\nimport { useHistory } from \"react-router\";\n\nimport FixedTextField from \"../../../components/FixedTextField\";\nimport { useNotifications } from \"../../../hooks/NotificationsContext\";\nimport { useRedirectionURL } from \"../../../hooks/RedirectionURL\";\nimport { useRequestMethod } from \"../../../hooks/RequestMethod\";\nimport LoginLayout from \"../../../layouts/LoginLayout\";\nimport { ResetPasswordStep1Route } from \"../../../Routes\";\nimport { postFirstFactor } from \"../../../services/FirstFactor\";\n\nexport interface Props {\n disabled: boolean;\n rememberMe: boolean;\n resetPassword: boolean;\n\n onAuthenticationStart: () => void;\n onAuthenticationFailure: () => void;\n onAuthenticationSuccess: (redirectURL: string | undefined) => void;\n}\n\nconst getQueryVariable = (variable: string) => {\n let query = window.location.search.substring(1);\n let vars = query.split(\"&\");\n for (let i = 0; i < vars.length; i++) {\n let pair = vars[i].split(\"=\");\n if (pair[0] === variable) {\n return pair[1];\n }\n }\n return false;\n};\n\nconst FirstFactorForm = function (props: Props) {\n const style = useStyles();\n const history = useHistory();\n const redirectionURL = useRedirectionURL();\n const requestMethod = useRequestMethod();\n\n const [rememberMe, setRememberMe] = useState(false);\n const [username, setUsername] = useState(\"\");\n const [usernameError, setUsernameError] = useState(false);\n const [password, setPassword] = useState(\"\");\n const [passwordError, setPasswordError] = useState(false);\n const { createErrorNotification } = useNotifications();\n // TODO (PR: #806, Issue: #511) potentially refactor\n const usernameRef = useRef() as MutableRefObject;\n const passwordRef = useRef() as MutableRefObject;\n useEffect(() => {\n const timeout = setTimeout(() => usernameRef.current.focus(), 10);\n return () => clearTimeout(timeout);\n }, [usernameRef]);\n\n const disabled = props.disabled;\n\n const handleRememberMeChange = () => {\n setRememberMe(!rememberMe);\n };\n\n const handleSignIn = async () => {\n if (username === \"\" || password === \"\") {\n if (username === \"\") {\n setUsernameError(true);\n }\n\n if (password === \"\") {\n setPasswordError(true);\n }\n return;\n }\n\n props.onAuthenticationStart();\n try {\n const res = await postFirstFactor(username, password, rememberMe, redirectionURL, requestMethod);\n props.onAuthenticationSuccess(res ? res.redirect : undefined);\n } catch (err) {\n console.error(err);\n createErrorNotification(\"Incorrect Email or password.\");\n props.onAuthenticationFailure();\n setPassword(\"\");\n passwordRef.current.focus();\n }\n };\n\n const handleResetPasswordClick = () => {\n history.push(ResetPasswordStep1Route);\n };\n\n const handleRegisterClick = () => {\n const rd = getQueryVariable(\"rd\");\n window.location.href = \"/register?rd\" + rd;\n };\n\n return (\n \n \n \n setUsername(v.target.value)}\n onFocus={() => setUsernameError(false)}\n autoCapitalize=\"none\"\n onKeyPress={(ev) => {\n if (ev.key === \"Enter\") {\n if (!username.length) {\n setUsernameError(true);\n } else if (username.length && password.length) {\n handleSignIn();\n } else {\n setUsernameError(false);\n passwordRef.current.focus();\n }\n }\n }}\n />\n \n \n setPassword(v.target.value)}\n onFocus={() => setPasswordError(false)}\n type=\"password\"\n onKeyPress={(ev) => {\n if (ev.key === \"Enter\") {\n if (!username.length) {\n usernameRef.current.focus();\n } else if (!password.length) {\n passwordRef.current.focus();\n }\n handleSignIn();\n ev.preventDefault();\n }\n }}\n />\n \n {props.rememberMe || props.resetPassword ? (\n \n {props.rememberMe ? (\n {\n if (ev.key === \"Enter\") {\n if (!username.length) {\n usernameRef.current.focus();\n } else if (!password.length) {\n passwordRef.current.focus();\n }\n handleSignIn();\n }\n }}\n value=\"rememberMe\"\n color=\"primary\"\n />\n }\n className={style.rememberMe}\n label=\"Remember Me\"\n />\n ) : null}\n \n Register\n \n
    
\n {props.resetPassword ? (\n \n Reset Password\n \n ) : null}\n
\n ) : null}\n \n \n Sign in\n \n \n \n
\n );\n};\n\nexport default FirstFactorForm;\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n marginTop: theme.spacing(),\n marginBottom: theme.spacing(),\n },\n actionRow: {\n display: \"flex\",\n flexDirection: \"row\",\n marginTop: theme.spacing(-1),\n marginBottom: theme.spacing(-1),\n },\n resetLink: {\n cursor: \"pointer\",\n paddingTop: 13.5,\n paddingBottom: 13.5,\n },\n rememberMe: {\n flexGrow: 1,\n },\n flexEnd: {\n justifyContent: \"flex-end\",\n },\n leftAlign: {\n textAlign: \"left\",\n },\n rightAlign: {\n textAlign: \"right\",\n verticalAlign: \"bottom\",\n },\n}));\n","import React from \"react\";\n\nimport { useIntermittentClass } from \"../hooks/IntermittentClass\";\nimport style from \"./PushNotificationIcon.module.css\";\n\nexport interface Props {\n width: number;\n height: number;\n\n animated?: boolean;\n}\n\nconst PushNotificationIcon = function (props: Props) {\n const idleMilliseconds = 2500;\n const wiggleMilliseconds = 500;\n const startMilliseconds = 500;\n const wiggleClass = useIntermittentClass(\n props.animated ? style.wiggle : \"\",\n wiggleMilliseconds,\n idleMilliseconds,\n startMilliseconds,\n );\n\n return (\n \n \n \n \n \n \n \n\n \n \n \n \n \n );\n};\n\nexport default PushNotificationIcon;\n","import { useState, useEffect } from \"react\";\n\nexport function useIntermittentClass(\n classname: string,\n activeMilliseconds: number,\n inactiveMillisecond: number,\n startMillisecond?: number,\n) {\n const [currentClass, setCurrentClass] = useState(\"\");\n const [firstTime, setFirstTime] = useState(true);\n\n useEffect(() => {\n let timeout: NodeJS.Timeout;\n\n if (firstTime) {\n if (startMillisecond && startMillisecond > 0) {\n timeout = setTimeout(() => {\n setCurrentClass(classname);\n setFirstTime(false);\n }, startMillisecond);\n } else {\n timeout = setTimeout(() => {\n setCurrentClass(classname);\n setFirstTime(false);\n }, 0);\n }\n } else {\n if (currentClass === \"\") {\n timeout = setTimeout(() => setCurrentClass(classname), inactiveMillisecond);\n } else {\n timeout = setTimeout(() => setCurrentClass(\"\"), activeMilliseconds);\n }\n }\n return () => clearTimeout(timeout);\n }, [currentClass, classname, activeMilliseconds, inactiveMillisecond, startMillisecond, firstTime]);\n\n return currentClass;\n}\n","import React from \"react\";\n\nexport interface Props {\n maxProgress?: number;\n progress: number;\n\n width?: number;\n height?: number;\n\n color?: string;\n backgroundColor?: string;\n}\n\nconst PieChartIcon = function (props: Props) {\n const maxProgress = props.maxProgress ? props.maxProgress : 100;\n const width = props.width ? props.width : 20;\n const height = props.height ? props.height : 20;\n\n const color = props.color ? props.color : \"black\";\n const backgroundColor = props.backgroundColor ? props.backgroundColor : \"white\";\n\n return (\n \n \n \n \n \n );\n};\n\nexport default PieChartIcon;\n","import React, { useState, useEffect } from \"react\";\n\nimport PieChartIcon from \"./PieChartIcon\";\n\nexport interface Props {\n width: number;\n height: number;\n period: number;\n\n color?: string;\n backgroundColor?: string;\n}\n\nconst TimerIcon = function (props: Props) {\n const radius = 31.6;\n const [timeProgress, setTimeProgress] = useState(0);\n\n useEffect(() => {\n // Get the current number of seconds to initialize timer.\n const initialValue = (((new Date().getTime() / 1000) % props.period) / props.period) * radius;\n setTimeProgress(initialValue);\n\n const interval = setInterval(() => {\n const value = (((new Date().getTime() / 1000) % props.period) / props.period) * radius;\n setTimeProgress(value);\n }, 100);\n return () => clearInterval(interval);\n }, [props]);\n\n return (\n \n );\n};\n\nexport default TimerIcon;\n","import React, { ReactNode } from \"react\";\n\nimport {\n Dialog,\n Grid,\n makeStyles,\n DialogContent,\n Button,\n DialogActions,\n Typography,\n useTheme,\n} from \"@material-ui/core\";\n\nimport FingerTouchIcon from \"../../../components/FingerTouchIcon\";\nimport PushNotificationIcon from \"../../../components/PushNotificationIcon\";\nimport TimerIcon from \"../../../components/TimerIcon\";\nimport { SecondFactorMethod } from \"../../../models/Methods\";\n\nexport interface Props {\n open: boolean;\n methods: Set;\n u2fSupported: boolean;\n\n onClose: () => void;\n onClick: (method: SecondFactorMethod) => void;\n}\n\nconst MethodSelectionDialog = function (props: Props) {\n const style = useStyles();\n const theme = useTheme();\n\n const pieChartIcon = (\n \n );\n\n return (\n \n \n \n {props.methods.has(SecondFactorMethod.TOTP) ? (\n props.onClick(SecondFactorMethod.TOTP)}\n />\n ) : null}\n {props.methods.has(SecondFactorMethod.U2F) && props.u2fSupported ? (\n }\n onClick={() => props.onClick(SecondFactorMethod.U2F)}\n />\n ) : null}\n {props.methods.has(SecondFactorMethod.MobilePush) ? (\n }\n onClick={() => props.onClick(SecondFactorMethod.MobilePush)}\n />\n ) : null}\n \n \n \n \n \n \n );\n};\n\nexport default MethodSelectionDialog;\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n textAlign: \"center\",\n },\n}));\n\ninterface MethodItemProps {\n id: string;\n method: string;\n icon: ReactNode;\n\n onClick: () => void;\n}\n\nfunction MethodItem(props: MethodItemProps) {\n const style = makeStyles((theme) => ({\n item: {\n paddingTop: theme.spacing(4),\n paddingBottom: theme.spacing(4),\n width: \"100%\",\n },\n icon: {\n display: \"inline-block\",\n fill: \"white\",\n },\n buttonRoot: {\n display: \"block\",\n },\n }))();\n\n return (\n \n \n
{props.icon}
\n
\n {props.method}\n
\n \n
\n );\n}\n","import { CompleteTOTPSignInPath } from \"./Api\";\nimport { PostWithOptionalResponse } from \"./Client\";\nimport { SignInResponse } from \"./SignIn\";\n\ninterface CompleteU2FSigninBody {\n token: string;\n targetURL?: string;\n}\n\nexport function completeTOTPSignIn(passcode: string, targetURL: string | undefined) {\n const body: CompleteU2FSigninBody = { token: `${passcode}` };\n if (targetURL) {\n body.targetURL = targetURL;\n }\n return PostWithOptionalResponse(CompleteTOTPSignInPath, body);\n}\n","import React from \"react\";\n\nimport { faInfoCircle } from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\n\nexport interface Props {}\n\nconst InformationIcon = function (props: Props) {\n return ;\n};\n\nexport default InformationIcon;\n","import React, { ReactNode, Fragment } from \"react\";\n\nimport { makeStyles, Typography, Link, useTheme } from \"@material-ui/core\";\nimport classnames from \"classnames\";\n\nimport InformationIcon from \"../../../components/InformationIcon\";\nimport Authenticated from \"../Authenticated\";\n\nexport enum State {\n ALREADY_AUTHENTICATED = 1,\n NOT_REGISTERED = 2,\n METHOD = 3,\n}\n\nexport interface Props {\n id: string;\n title: string;\n registered: boolean;\n explanation: string;\n state: State;\n children: ReactNode;\n\n onRegisterClick?: () => void;\n}\n\nconst DefaultMethodContainer = function (props: Props) {\n const style = useStyles();\n const registerMessage = props.registered ? \"Lost your device?\" : \"Not registered yet?\";\n\n let container: ReactNode;\n let stateClass: string = \"\";\n switch (props.state) {\n case State.ALREADY_AUTHENTICATED:\n container = ;\n stateClass = \"state-already-authenticated\";\n break;\n case State.NOT_REGISTERED:\n container = ;\n stateClass = \"state-not-registered\";\n break;\n case State.METHOD:\n container = {props.children};\n stateClass = \"state-method\";\n break;\n }\n\n return (\n
\n {props.title}\n
\n
{container}
\n
\n {props.onRegisterClick ? (\n \n {registerMessage}\n \n ) : null}\n
\n );\n};\n\nexport default DefaultMethodContainer;\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n height: \"200px\",\n },\n containerFlex: {\n display: \"flex\",\n flexWrap: \"wrap\",\n height: \"100%\",\n width: \"100%\",\n alignItems: \"center\",\n alignContent: \"center\",\n justifyContent: \"center\",\n },\n}));\n\nfunction NotRegisteredContainer() {\n const theme = useTheme();\n return (\n \n
\n \n
\n \n Register your first device by clicking on the link below\n \n
\n );\n}\n\ninterface MethodContainerProps {\n explanation: string;\n children: ReactNode;\n}\n\nfunction MethodContainer(props: MethodContainerProps) {\n const theme = useTheme();\n return (\n \n
{props.children}
\n {props.explanation}\n
\n );\n}\n","import React, { useState, useEffect, useCallback } from \"react\";\n\nimport { useRedirectionURL } from \"../../../hooks/RedirectionURL\";\nimport { completeTOTPSignIn } from \"../../../services/OneTimePassword\";\nimport { AuthenticationLevel } from \"../../../services/State\";\nimport MethodContainer, { State as MethodContainerState } from \"./MethodContainer\";\nimport OTPDial from \"./OTPDial\";\n\nexport enum State {\n Idle = 1,\n InProgress = 2,\n Success = 3,\n Failure = 4,\n}\n\nexport interface Props {\n id: string;\n authenticationLevel: AuthenticationLevel;\n registered: boolean;\n totp_period: number;\n\n onRegisterClick: () => void;\n onSignInError: (err: Error) => void;\n onSignInSuccess: (redirectURL: string | undefined) => void;\n}\n\nconst OneTimePasswordMethod = function (props: Props) {\n const [passcode, setPasscode] = useState(\"\");\n const [state, setState] = useState(\n props.authenticationLevel === AuthenticationLevel.TwoFactor ? State.Success : State.Idle,\n );\n const redirectionURL = useRedirectionURL();\n\n const { onSignInSuccess, onSignInError } = props;\n /* eslint-disable react-hooks/exhaustive-deps */\n const onSignInErrorCallback = useCallback(onSignInError, []);\n const onSignInSuccessCallback = useCallback(onSignInSuccess, []);\n /* eslint-enable react-hooks/exhaustive-deps */\n\n const signInFunc = useCallback(async () => {\n if (props.authenticationLevel === AuthenticationLevel.TwoFactor) {\n return;\n }\n\n const passcodeStr = `${passcode}`;\n\n if (!passcode || passcodeStr.length !== 6) {\n return;\n }\n\n try {\n setState(State.InProgress);\n const res = await completeTOTPSignIn(passcodeStr, redirectionURL);\n setState(State.Success);\n onSignInSuccessCallback(res ? res.redirect : undefined);\n } catch (err) {\n console.error(err);\n onSignInErrorCallback(new Error(\"The one-time password might be wrong\"));\n setState(State.Failure);\n }\n setPasscode(\"\");\n }, [passcode, onSignInErrorCallback, onSignInSuccessCallback, redirectionURL, props.authenticationLevel]);\n\n // Set successful state if user is already authenticated.\n useEffect(() => {\n if (props.authenticationLevel >= AuthenticationLevel.TwoFactor) {\n setState(State.Success);\n }\n }, [props.authenticationLevel, setState]);\n\n useEffect(() => {\n signInFunc();\n }, [signInFunc]);\n\n let methodState = MethodContainerState.METHOD;\n if (props.authenticationLevel === AuthenticationLevel.TwoFactor) {\n methodState = MethodContainerState.ALREADY_AUTHENTICATED;\n } else if (!props.registered) {\n methodState = MethodContainerState.NOT_REGISTERED;\n }\n\n return (\n \n \n \n );\n};\n\nexport default OneTimePasswordMethod;\n","import React, { ReactNode } from \"react\";\n\nimport { makeStyles } from \"@material-ui/core\";\nimport classnames from \"classnames\";\n\ninterface IconWithContextProps {\n icon: ReactNode;\n context: ReactNode;\n\n className?: string;\n}\n\nconst IconWithContext = function (props: IconWithContextProps) {\n const iconSize = 64;\n const style = makeStyles((theme) => ({\n root: {},\n iconContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n },\n icon: {\n width: iconSize,\n height: iconSize,\n },\n context: {\n display: \"block\",\n },\n }))();\n\n return (\n
\n
\n
{props.icon}
\n
\n
{props.context}
\n
\n );\n};\n\nexport default IconWithContext;\n","import React, { Fragment } from \"react\";\n\nimport { makeStyles } from \"@material-ui/core\";\nimport classnames from \"classnames\";\nimport OtpInput from \"react-otp-input\";\n\nimport SuccessIcon from \"../../../components/SuccessIcon\";\nimport TimerIcon from \"../../../components/TimerIcon\";\nimport IconWithContext from \"./IconWithContext\";\nimport { State } from \"./OneTimePasswordMethod\";\n\nexport interface Props {\n passcode: string;\n state: State;\n period: number;\n\n onChange: (passcode: string) => void;\n}\n\nconst OTPDial = function (props: Props) {\n const style = useStyles();\n const dial = (\n \n \n \n );\n\n return } context={dial} />;\n};\n\nexport default OTPDial;\n\nconst useStyles = makeStyles((theme) => ({\n timeProgress: {},\n register: {\n marginTop: theme.spacing(),\n },\n otpInput: {\n display: \"inline-block\",\n marginTop: theme.spacing(2),\n },\n otpDigitInput: {\n boxSizing: \"content-box\",\n padding: theme.spacing(),\n marginLeft: theme.spacing(0.5),\n marginRight: theme.spacing(0.5),\n fontSize: \"1rem\",\n borderRadius: \"5px\",\n border: \"1px solid rgba(0,0,0,0.3)\",\n },\n inputError: {\n border: \"1px solid rgba(255, 2, 2, 0.95)\",\n },\n}));\n\ninterface IconProps {\n state: State;\n period: number;\n}\n\nfunction Icon(props: IconProps) {\n return (\n \n {props.state !== State.Success ? (\n \n ) : null}\n {props.state === State.Success ? : null}\n \n );\n}\n","import React, { useEffect, useCallback, useState, ReactNode } from \"react\";\n\nimport { Button, makeStyles } from \"@material-ui/core\";\n\nimport FailureIcon from \"../../../components/FailureIcon\";\nimport PushNotificationIcon from \"../../../components/PushNotificationIcon\";\nimport SuccessIcon from \"../../../components/SuccessIcon\";\nimport { useIsMountedRef } from \"../../../hooks/Mounted\";\nimport { useRedirectionURL } from \"../../../hooks/RedirectionURL\";\nimport { completePushNotificationSignIn } from \"../../../services/PushNotification\";\nimport { AuthenticationLevel } from \"../../../services/State\";\nimport MethodContainer, { State as MethodContainerState } from \"./MethodContainer\";\n\nexport enum State {\n SignInInProgress = 1,\n Success = 2,\n Failure = 3,\n}\n\nexport interface Props {\n id: string;\n authenticationLevel: AuthenticationLevel;\n\n onSignInError: (err: Error) => void;\n onSignInSuccess: (redirectURL: string | undefined) => void;\n}\n\nconst PushNotificationMethod = function (props: Props) {\n const style = useStyles();\n const [state, setState] = useState(State.SignInInProgress);\n const redirectionURL = useRedirectionURL();\n const mounted = useIsMountedRef();\n\n const { onSignInSuccess, onSignInError } = props;\n /* eslint-disable react-hooks/exhaustive-deps */\n const onSignInErrorCallback = useCallback(onSignInError, []);\n const onSignInSuccessCallback = useCallback(onSignInSuccess, []);\n /* eslint-enable react-hooks/exhaustive-deps */\n\n const signInFunc = useCallback(async () => {\n if (props.authenticationLevel === AuthenticationLevel.TwoFactor) {\n return;\n }\n\n try {\n setState(State.SignInInProgress);\n const res = await completePushNotificationSignIn(redirectionURL);\n // If the request was initiated and the user changed 2FA method in the meantime,\n // the process is interrupted to avoid updating state of unmounted component.\n if (!mounted.current) return;\n\n setState(State.Success);\n setTimeout(() => {\n if (!mounted.current) return;\n onSignInSuccessCallback(res ? res.redirect : undefined);\n }, 1500);\n } catch (err) {\n // If the request was initiated and the user changed 2FA method in the meantime,\n // the process is interrupted to avoid updating state of unmounted component.\n if (!mounted.current) return;\n\n console.error(err);\n onSignInErrorCallback(new Error(\"There was an issue completing sign in process\"));\n setState(State.Failure);\n }\n }, [onSignInErrorCallback, onSignInSuccessCallback, setState, redirectionURL, mounted, props.authenticationLevel]);\n\n useEffect(() => {\n signInFunc();\n }, [signInFunc]);\n\n // Set successful state if user is already authenticated.\n useEffect(() => {\n if (props.authenticationLevel >= AuthenticationLevel.TwoFactor) {\n setState(State.Success);\n }\n }, [props.authenticationLevel, setState]);\n\n let icon: ReactNode;\n switch (state) {\n case State.SignInInProgress:\n icon = ;\n break;\n case State.Success:\n icon = ;\n break;\n case State.Failure:\n icon = ;\n }\n\n let methodState = MethodContainerState.METHOD;\n if (props.authenticationLevel === AuthenticationLevel.TwoFactor) {\n methodState = MethodContainerState.ALREADY_AUTHENTICATED;\n }\n\n return (\n \n
{icon}
\n
\n \n
\n \n );\n};\n\nexport default PushNotificationMethod;\n\nconst useStyles = makeStyles((theme) => ({\n icon: {\n width: \"64px\",\n height: \"64px\",\n display: \"inline-block\",\n },\n}));\n","import React from \"react\";\n\nimport { faTimesCircle } from \"@fortawesome/free-regular-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\n\nexport interface Props {}\n\nconst FailureIcon = function (props: Props) {\n return ;\n};\n\nexport default FailureIcon;\n","import { useRef, useEffect } from \"react\";\n\nexport function useIsMountedRef() {\n const isMountedRef = useRef(false);\n useEffect(() => {\n isMountedRef.current = true;\n return () => {\n isMountedRef.current = false;\n };\n });\n return isMountedRef;\n}\n","import { CompletePushNotificationSignInPath } from \"./Api\";\nimport { PostWithOptionalResponse } from \"./Client\";\nimport { SignInResponse } from \"./SignIn\";\n\ninterface CompleteU2FSigninBody {\n targetURL?: string;\n}\n\nexport function completePushNotificationSignIn(targetURL: string | undefined) {\n const body: CompleteU2FSigninBody = {};\n if (targetURL) {\n body.targetURL = targetURL;\n }\n return PostWithOptionalResponse(CompletePushNotificationSignInPath, body);\n}\n","import React, { useCallback, useEffect, useState, Fragment } from \"react\";\n\nimport { makeStyles, Button, useTheme } from \"@material-ui/core\";\nimport { CSSProperties } from \"@material-ui/styles\";\nimport u2fApi from \"u2f-api\";\n\nimport FailureIcon from \"../../../components/FailureIcon\";\nimport FingerTouchIcon from \"../../../components/FingerTouchIcon\";\nimport LinearProgressBar from \"../../../components/LinearProgressBar\";\nimport { useIsMountedRef } from \"../../../hooks/Mounted\";\nimport { useRedirectionURL } from \"../../../hooks/RedirectionURL\";\nimport { useTimer } from \"../../../hooks/Timer\";\nimport { initiateU2FSignin, completeU2FSignin } from \"../../../services/SecurityKey\";\nimport { AuthenticationLevel } from \"../../../services/State\";\nimport IconWithContext from \"./IconWithContext\";\nimport MethodContainer, { State as MethodContainerState } from \"./MethodContainer\";\n\nexport enum State {\n WaitTouch = 1,\n SigninInProgress = 2,\n Failure = 3,\n}\n\nexport interface Props {\n id: string;\n authenticationLevel: AuthenticationLevel;\n registered: boolean;\n\n onRegisterClick: () => void;\n onSignInError: (err: Error) => void;\n onSignInSuccess: (redirectURL: string | undefined) => void;\n}\n\nconst SecurityKeyMethod = function (props: Props) {\n const signInTimeout = 30;\n const [state, setState] = useState(State.WaitTouch);\n const style = useStyles();\n const redirectionURL = useRedirectionURL();\n const mounted = useIsMountedRef();\n const [timerPercent, triggerTimer] = useTimer(signInTimeout * 1000 - 500);\n\n const { onSignInSuccess, onSignInError } = props;\n /* eslint-disable react-hooks/exhaustive-deps */\n const onSignInErrorCallback = useCallback(onSignInError, []);\n const onSignInSuccessCallback = useCallback(onSignInSuccess, []);\n /* eslint-enable react-hooks/exhaustive-deps */\n\n const doInitiateSignIn = useCallback(async () => {\n // If user is already authenticated, we don't initiate sign in process.\n if (!props.registered || props.authenticationLevel >= AuthenticationLevel.TwoFactor) {\n return;\n }\n\n try {\n triggerTimer();\n setState(State.WaitTouch);\n const signRequest = await initiateU2FSignin();\n const signRequests: u2fApi.SignRequest[] = [];\n for (var i in signRequest.registeredKeys) {\n const r = signRequest.registeredKeys[i];\n signRequests.push({\n appId: signRequest.appId,\n challenge: signRequest.challenge,\n keyHandle: r.keyHandle,\n version: r.version,\n });\n }\n const signResponse = await u2fApi.sign(signRequests, signInTimeout);\n // If the request was initiated and the user changed 2FA method in the meantime,\n // the process is interrupted to avoid updating state of unmounted component.\n if (!mounted.current) return;\n\n setState(State.SigninInProgress);\n const res = await completeU2FSignin(signResponse, redirectionURL);\n onSignInSuccessCallback(res ? res.redirect : undefined);\n } catch (err) {\n // If the request was initiated and the user changed 2FA method in the meantime,\n // the process is interrupted to avoid updating state of unmounted component.\n if (!mounted.current) return;\n console.error(err);\n onSignInErrorCallback(new Error(\"Failed to initiate security key sign in process\"));\n setState(State.Failure);\n }\n }, [\n onSignInSuccessCallback,\n onSignInErrorCallback,\n redirectionURL,\n mounted,\n triggerTimer,\n props.authenticationLevel,\n props.registered,\n ]);\n\n useEffect(() => {\n doInitiateSignIn();\n }, [doInitiateSignIn]);\n\n let methodState = MethodContainerState.METHOD;\n if (props.authenticationLevel === AuthenticationLevel.TwoFactor) {\n methodState = MethodContainerState.ALREADY_AUTHENTICATED;\n } else if (!props.registered) {\n methodState = MethodContainerState.NOT_REGISTERED;\n }\n\n return (\n \n
\n \n
\n \n );\n};\n\nexport default SecurityKeyMethod;\n\nconst useStyles = makeStyles((theme) => ({\n icon: {\n display: \"inline-block\",\n },\n}));\n\ninterface IconProps {\n state: State;\n\n timer: number;\n onRetryClick: () => void;\n}\n\nfunction Icon(props: IconProps) {\n const state = props.state as State;\n const theme = useTheme();\n\n const progressBarStyle: CSSProperties = {\n marginTop: theme.spacing(),\n };\n\n const touch = (\n }\n context={}\n className={state === State.WaitTouch ? undefined : \"hidden\"}\n />\n );\n\n const failure = (\n }\n context={\n \n }\n className={state === State.Failure ? undefined : \"hidden\"}\n />\n );\n\n return (\n \n {touch}\n {failure}\n \n );\n}\n","import React from \"react\";\n\nimport { makeStyles, LinearProgress } from \"@material-ui/core\";\nimport { CSSProperties } from \"@material-ui/styles\";\n\nexport interface Props {\n value: number;\n height?: number;\n className?: string;\n style?: CSSProperties;\n}\n\nconst LinearProgressBar = function (props: Props) {\n const style = makeStyles((theme) => ({\n progressRoot: {\n height: props.height ? props.height : theme.spacing(),\n },\n transition: {\n transition: \"transform .2s linear\",\n },\n }))();\n return (\n \n );\n};\n\nexport default LinearProgressBar;\n","import u2fApi from \"u2f-api\";\n\nimport { InitiateU2FSignInPath, CompleteU2FSignInPath } from \"./Api\";\nimport { Post, PostWithOptionalResponse } from \"./Client\";\nimport { SignInResponse } from \"./SignIn\";\n\ninterface InitiateU2FSigninResponse {\n appId: string;\n challenge: string;\n registeredKeys: {\n appId: string;\n keyHandle: string;\n version: string;\n }[];\n}\n\nexport async function initiateU2FSignin() {\n return Post(InitiateU2FSignInPath);\n}\n\ninterface CompleteU2FSigninBody {\n signResponse: u2fApi.SignResponse;\n targetURL?: string;\n}\n\nexport function completeU2FSignin(signResponse: u2fApi.SignResponse, targetURL: string | undefined) {\n const body: CompleteU2FSigninBody = { signResponse };\n if (targetURL) {\n body.targetURL = targetURL;\n }\n return PostWithOptionalResponse(CompleteU2FSignInPath, body);\n}\n","import { useState, useCallback, useEffect } from \"react\";\n\nexport function useTimer(timeoutMs: number): [number, () => void, () => void] {\n const Interval = 100;\n const [startDate, setStartDate] = useState(undefined as Date | undefined);\n const [percent, setPercent] = useState(0);\n\n const trigger = useCallback(() => {\n setPercent(0);\n setStartDate(new Date());\n }, [setStartDate, setPercent]);\n\n const clear = useCallback(() => {\n setPercent(0);\n setStartDate(undefined);\n }, []);\n\n useEffect(() => {\n if (!startDate) {\n return;\n }\n\n const intervalNode = setInterval(() => {\n const elapsedMs = startDate ? new Date().getTime() - startDate.getTime() : 0;\n let p = (elapsedMs / timeoutMs) * 100.0;\n if (p >= 100) {\n p = 100;\n setStartDate(undefined);\n }\n setPercent(p);\n }, Interval);\n\n return () => clearInterval(intervalNode);\n }, [startDate, setPercent, setStartDate, timeoutMs]);\n\n return [percent, trigger, clear];\n}\n","import React, { useState, useEffect } from \"react\";\n\nimport { Grid, makeStyles, Button } from \"@material-ui/core\";\nimport { useHistory, Switch, Route, Redirect } from \"react-router\";\nimport u2fApi from \"u2f-api\";\n\nimport { useNotifications } from \"../../../hooks/NotificationsContext\";\nimport LoginLayout from \"../../../layouts/LoginLayout\";\nimport { Configuration } from \"../../../models/Configuration\";\nimport { SecondFactorMethod } from \"../../../models/Methods\";\nimport { UserInfo } from \"../../../models/UserInfo\";\nimport {\n LogoutRoute as SignOutRoute,\n SecondFactorTOTPRoute,\n SecondFactorPushRoute,\n SecondFactorU2FRoute,\n SecondFactorRoute,\n} from \"../../../Routes\";\nimport { initiateTOTPRegistrationProcess, initiateU2FRegistrationProcess } from \"../../../services/RegisterDevice\";\nimport { AuthenticationLevel } from \"../../../services/State\";\nimport { setPreferred2FAMethod } from \"../../../services/UserPreferences\";\nimport MethodSelectionDialog from \"./MethodSelectionDialog\";\nimport OneTimePasswordMethod from \"./OneTimePasswordMethod\";\nimport PushNotificationMethod from \"./PushNotificationMethod\";\nimport SecurityKeyMethod from \"./SecurityKeyMethod\";\n\nconst EMAIL_SENT_NOTIFICATION = \"An email has been sent to your address to complete the process.\";\n\nexport interface Props {\n authenticationLevel: AuthenticationLevel;\n\n userInfo: UserInfo;\n configuration: Configuration;\n\n onMethodChanged: (method: SecondFactorMethod) => void;\n onAuthenticationSuccess: (redirectURL: string | undefined) => void;\n}\n\nconst SecondFactorForm = function (props: Props) {\n const style = useStyles();\n const history = useHistory();\n const [methodSelectionOpen, setMethodSelectionOpen] = useState(false);\n const { createInfoNotification, createErrorNotification } = useNotifications();\n const [registrationInProgress, setRegistrationInProgress] = useState(false);\n const [u2fSupported, setU2fSupported] = useState(false);\n\n // Check that U2F is supported.\n useEffect(() => {\n u2fApi.ensureSupport().then(\n () => setU2fSupported(true),\n () => console.error(\"U2F not supported\"),\n );\n }, [setU2fSupported]);\n\n const initiateRegistration = (initiateRegistrationFunc: () => Promise) => {\n return async () => {\n if (registrationInProgress) {\n return;\n }\n setRegistrationInProgress(true);\n try {\n await initiateRegistrationFunc();\n createInfoNotification(EMAIL_SENT_NOTIFICATION);\n } catch (err) {\n console.error(err);\n createErrorNotification(\"There was a problem initiating the registration process\");\n }\n setRegistrationInProgress(false);\n };\n };\n\n const handleMethodSelectionClick = () => {\n setMethodSelectionOpen(true);\n };\n\n const handleMethodSelected = async (method: SecondFactorMethod) => {\n try {\n await setPreferred2FAMethod(method);\n setMethodSelectionOpen(false);\n props.onMethodChanged(method);\n } catch (err) {\n console.error(err);\n createErrorNotification(\"There was an issue updating preferred second factor method\");\n }\n };\n\n const handleLogoutClick = () => {\n history.push(SignOutRoute);\n };\n\n return (\n \n setMethodSelectionOpen(false)}\n onClick={handleMethodSelected}\n />\n \n \n \n {\" | \"}\n \n \n \n \n \n createErrorNotification(err.message)}\n onSignInSuccess={props.onAuthenticationSuccess}\n />\n \n \n createErrorNotification(err.message)}\n onSignInSuccess={props.onAuthenticationSuccess}\n />\n \n \n createErrorNotification(err.message)}\n onSignInSuccess={props.onAuthenticationSuccess}\n />\n \n \n \n \n \n \n \n \n );\n};\n\nexport default SecondFactorForm;\n\nconst useStyles = makeStyles((theme) => ({\n methodContainer: {\n border: \"1px solid #d6d6d6\",\n borderRadius: \"10px\",\n padding: theme.spacing(4),\n marginTop: theme.spacing(2),\n marginBottom: theme.spacing(2),\n },\n}));\n","import React, { useEffect, Fragment, ReactNode, useState, useCallback } from \"react\";\n\nimport { Switch, Route, Redirect, useHistory, useLocation } from \"react-router\";\n\nimport { useConfiguration } from \"../../hooks/Configuration\";\nimport { useNotifications } from \"../../hooks/NotificationsContext\";\nimport { useRedirectionURL } from \"../../hooks/RedirectionURL\";\nimport { useRequestMethod } from \"../../hooks/RequestMethod\";\nimport { useAutheliaState } from \"../../hooks/State\";\nimport { useUserPreferences as userUserInfo } from \"../../hooks/UserInfo\";\nimport { SecondFactorMethod } from \"../../models/Methods\";\nimport {\n FirstFactorRoute,\n SecondFactorRoute,\n SecondFactorTOTPRoute,\n SecondFactorPushRoute,\n SecondFactorU2FRoute,\n AuthenticatedRoute,\n} from \"../../Routes\";\nimport { AuthenticationLevel } from \"../../services/State\";\nimport LoadingPage from \"../LoadingPage/LoadingPage\";\nimport AuthenticatedView from \"./AuthenticatedView/AuthenticatedView\";\nimport FirstFactorForm from \"./FirstFactor/FirstFactorForm\";\nimport SecondFactorForm from \"./SecondFactor/SecondFactorForm\";\n\nexport interface Props {\n rememberMe: boolean;\n resetPassword: boolean;\n}\n\nconst LoginPortal = function (props: Props) {\n const history = useHistory();\n const location = useLocation();\n const redirectionURL = useRedirectionURL();\n const requestMethod = useRequestMethod();\n const { createErrorNotification } = useNotifications();\n const [firstFactorDisabled, setFirstFactorDisabled] = useState(true);\n\n const [state, fetchState, , fetchStateError] = useAutheliaState();\n const [userInfo, fetchUserInfo, , fetchUserInfoError] = userUserInfo();\n const [configuration, fetchConfiguration, , fetchConfigurationError] = useConfiguration();\n\n const redirect = useCallback((url: string) => history.push(url), [history]);\n\n // Fetch the state when portal is mounted.\n useEffect(() => {\n fetchState();\n }, [fetchState]);\n\n // Fetch preferences and configuration when user is authenticated.\n useEffect(() => {\n if (state && state.authentication_level >= AuthenticationLevel.OneFactor) {\n fetchUserInfo();\n fetchConfiguration();\n }\n }, [state, fetchUserInfo, fetchConfiguration]);\n\n // Enable first factor when user is unauthenticated.\n useEffect(() => {\n if (state && state.authentication_level > AuthenticationLevel.Unauthenticated) {\n setFirstFactorDisabled(true);\n }\n }, [state, setFirstFactorDisabled]);\n\n // Display an error when state fetching fails\n useEffect(() => {\n if (fetchStateError) {\n createErrorNotification(\"There was an issue fetching the current user state\");\n }\n }, [fetchStateError, createErrorNotification]);\n\n // Display an error when configuration fetching fails\n useEffect(() => {\n if (fetchConfigurationError) {\n createErrorNotification(\"There was an issue retrieving global configuration\");\n }\n }, [fetchConfigurationError, createErrorNotification]);\n\n // Display an error when preferences fetching fails\n useEffect(() => {\n if (fetchUserInfoError) {\n createErrorNotification(\"There was an issue retrieving user preferences\");\n }\n }, [fetchUserInfoError, createErrorNotification]);\n\n // Redirect to the correct stage if not enough authenticated\n useEffect(() => {\n if (state) {\n const redirectionSuffix = redirectionURL\n ? `?rd=${encodeURIComponent(redirectionURL)}${requestMethod ? `&rm=${requestMethod}` : \"\"}`\n : \"\";\n\n if (state.authentication_level === AuthenticationLevel.Unauthenticated) {\n setFirstFactorDisabled(false);\n redirect(`${FirstFactorRoute}${redirectionSuffix}`);\n } else if (state.authentication_level >= AuthenticationLevel.OneFactor && userInfo && configuration) {\n if (!configuration.second_factor_enabled) {\n redirect(AuthenticatedRoute);\n } else {\n if (userInfo.method === SecondFactorMethod.U2F) {\n redirect(`${SecondFactorU2FRoute}${redirectionSuffix}`);\n } else if (userInfo.method === SecondFactorMethod.MobilePush) {\n redirect(`${SecondFactorPushRoute}${redirectionSuffix}`);\n } else {\n redirect(`${SecondFactorTOTPRoute}${redirectionSuffix}`);\n }\n }\n }\n }\n }, [state, redirectionURL, requestMethod, redirect, userInfo, setFirstFactorDisabled, configuration]);\n\n const handleAuthSuccess = async (redirectionURL: string | undefined) => {\n if (redirectionURL) {\n // Do an external redirection pushed by the server.\n window.location.href = redirectionURL;\n } else {\n // Refresh state\n fetchState();\n }\n };\n\n const firstFactorReady =\n state !== undefined &&\n state.authentication_level === AuthenticationLevel.Unauthenticated &&\n location.pathname === FirstFactorRoute;\n\n return (\n \n \n \n setFirstFactorDisabled(true)}\n onAuthenticationFailure={() => setFirstFactorDisabled(false)}\n onAuthenticationSuccess={handleAuthSuccess}\n />\n \n \n \n {state && userInfo && configuration ? (\n fetchUserInfo()}\n onAuthenticationSuccess={handleAuthSuccess}\n />\n ) : null}\n \n \n {userInfo ? : null}\n \n \n \n \n \n );\n};\n\nexport default LoginPortal;\n\ninterface ComponentOrLoadingProps {\n ready: boolean;\n\n children: ReactNode;\n}\n\nfunction ComponentOrLoading(props: ComponentOrLoadingProps) {\n return (\n \n
\n \n
\n {props.ready ? props.children : null}\n
\n );\n}\n","import { getState } from \"../services/State\";\nimport { useRemoteCall } from \"./RemoteCall\";\n\nexport function useAutheliaState() {\n return useRemoteCall(getState, []);\n}\n","import { getUserPreferences } from \"../services/UserPreferences\";\nimport { useRemoteCall } from \"./RemoteCall\";\n\nexport function useUserPreferences() {\n return useRemoteCall(getUserPreferences, []);\n}\n","import { getConfiguration } from \"../services/Configuration\";\nimport { useRemoteCall } from \"./RemoteCall\";\n\nexport function useConfiguration() {\n return useRemoteCall(getConfiguration, []);\n}\n","import { LogoutPath } from \"./Api\";\nimport { PostWithOptionalResponse } from \"./Client\";\n\nexport type SignOutResponse = { safeTargetURL: boolean } | undefined;\n\nexport type SignOutBody = {\n targetURL?: string;\n};\n\nexport async function signOut(targetURL: string | undefined): Promise {\n const body: SignOutBody = {};\n if (targetURL) {\n body.targetURL = targetURL;\n }\n\n return PostWithOptionalResponse(LogoutPath, body);\n}\n","import React, { useEffect, useCallback, useState } from \"react\";\n\nimport { Typography, makeStyles } from \"@material-ui/core\";\nimport { Redirect } from \"react-router\";\n\nimport { useIsMountedRef } from \"../../../hooks/Mounted\";\nimport { useNotifications } from \"../../../hooks/NotificationsContext\";\nimport { useRedirectionURL } from \"../../../hooks/RedirectionURL\";\nimport LoginLayout from \"../../../layouts/LoginLayout\";\nimport { FirstFactorRoute } from \"../../../Routes\";\nimport { signOut } from \"../../../services/SignOut\";\n\nexport interface Props {}\n\nconst SignOut = function (props: Props) {\n const mounted = useIsMountedRef();\n const style = useStyles();\n const { createErrorNotification } = useNotifications();\n const redirectionURL = useRedirectionURL();\n const [timedOut, setTimedOut] = useState(false);\n const [safeRedirect, setSafeRedirect] = useState(false);\n\n const doSignOut = useCallback(async () => {\n try {\n const res = await signOut(redirectionURL);\n if (res !== undefined && res.safeTargetURL) {\n setSafeRedirect(true);\n }\n setTimeout(() => {\n if (!mounted) {\n return;\n }\n setTimedOut(true);\n }, 2000);\n } catch (err) {\n console.error(err);\n createErrorNotification(\"There was an issue signing out\");\n }\n }, [createErrorNotification, redirectionURL, setSafeRedirect, setTimedOut, mounted]);\n\n useEffect(() => {\n doSignOut();\n }, [doSignOut]);\n\n if (timedOut) {\n if (redirectionURL && safeRedirect) {\n window.location.href = redirectionURL;\n } else {\n return ;\n }\n }\n\n return (\n \n You're being signed out and redirected...\n \n );\n};\n\nexport default SignOut;\n\nconst useStyles = makeStyles((theme) => ({\n typo: {\n padding: theme.spacing(),\n },\n}));\n","import { InitiateResetPasswordPath, CompleteResetPasswordPath, ResetPasswordPath } from \"./Api\";\nimport { PostWithOptionalResponse } from \"./Client\";\n\nexport async function initiateResetPasswordProcess(username: string) {\n return PostWithOptionalResponse(InitiateResetPasswordPath, { username });\n}\n\nexport async function completeResetPasswordProcess(token: string) {\n return PostWithOptionalResponse(CompleteResetPasswordPath, { token });\n}\n\nexport async function resetPassword(newPassword: string) {\n return PostWithOptionalResponse(ResetPasswordPath, { password: newPassword });\n}\n","import React, { useState } from \"react\";\n\nimport { Grid, Button, makeStyles } from \"@material-ui/core\";\nimport { useHistory } from \"react-router\";\n\nimport FixedTextField from \"../../components/FixedTextField\";\nimport { useNotifications } from \"../../hooks/NotificationsContext\";\nimport LoginLayout from \"../../layouts/LoginLayout\";\nimport { FirstFactorRoute } from \"../../Routes\";\nimport { initiateResetPasswordProcess } from \"../../services/ResetPassword\";\n\nconst ResetPasswordStep1 = function () {\n const style = useStyles();\n const [username, setUsername] = useState(\"\");\n const [error, setError] = useState(false);\n const { createInfoNotification, createErrorNotification } = useNotifications();\n const history = useHistory();\n\n const doInitiateResetPasswordProcess = async () => {\n if (username === \"\") {\n setError(true);\n return;\n }\n let pre = \"We have sent you an email to the address below,\";\n let msg = \"you may need to check your spam folder if you can't find it in your inbox.\";\n try {\n await initiateResetPasswordProcess(username);\n createInfoNotification(pre + msg);\n } catch (err) {\n createErrorNotification(\"There was an issue initiating the password reset process.\");\n }\n };\n\n const handleResetClick = () => {\n doInitiateResetPasswordProcess();\n };\n\n const handleCancelClick = () => {\n history.push(FirstFactorRoute);\n };\n\n return (\n \n \n \n setUsername(e.target.value)}\n onKeyPress={(ev) => {\n if (ev.key === \"Enter\") {\n doInitiateResetPasswordProcess();\n ev.preventDefault();\n }\n }}\n />\n \n \n \n \n \n \n Cancel\n \n \n \n \n );\n};\n\nexport default ResetPasswordStep1;\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n marginTop: theme.spacing(2),\n marginBottom: theme.spacing(2),\n },\n}));\n","import React, { useState, useCallback, useEffect } from \"react\";\n\nimport { Grid, Button, makeStyles } from \"@material-ui/core\";\nimport classnames from \"classnames\";\nimport { useHistory, useLocation } from \"react-router\";\n\nimport FixedTextField from \"../../components/FixedTextField\";\nimport { useNotifications } from \"../../hooks/NotificationsContext\";\nimport LoginLayout from \"../../layouts/LoginLayout\";\nimport { FirstFactorRoute } from \"../../Routes\";\nimport { completeResetPasswordProcess, resetPassword } from \"../../services/ResetPassword\";\nimport { extractIdentityToken } from \"../../utils/IdentityToken\";\n\nconst ResetPasswordStep2 = function () {\n const style = useStyles();\n const location = useLocation();\n const [formDisabled, setFormDisabled] = useState(true);\n const [password1, setPassword1] = useState(\"\");\n const [password2, setPassword2] = useState(\"\");\n const [errorPassword1, setErrorPassword1] = useState(false);\n const [errorPassword2, setErrorPassword2] = useState(false);\n const { createSuccessNotification, createErrorNotification } = useNotifications();\n const history = useHistory();\n // Get the token from the query param to give it back to the API when requesting\n // the secret for OTP.\n const processToken = extractIdentityToken(location.search);\n\n const completeProcess = useCallback(async () => {\n if (!processToken) {\n setFormDisabled(true);\n createErrorNotification(\"No verification token provided\");\n return;\n }\n\n try {\n setFormDisabled(true);\n await completeResetPasswordProcess(processToken);\n setFormDisabled(false);\n } catch (err) {\n console.error(err);\n createErrorNotification(\n \"There was an issue completing the process. The verification token might have expired.\",\n );\n setFormDisabled(true);\n }\n }, [processToken, createErrorNotification]);\n\n useEffect(() => {\n completeProcess();\n }, [completeProcess]);\n\n const doResetPassword = async () => {\n if (password1 === \"\" || password2 === \"\") {\n if (password1 === \"\") {\n setErrorPassword1(true);\n }\n if (password2 === \"\") {\n setErrorPassword2(true);\n }\n return;\n }\n if (password1 !== password2) {\n setErrorPassword1(true);\n setErrorPassword2(true);\n createErrorNotification(\"Passwords do not match.\");\n return;\n }\n\n try {\n await resetPassword(password1);\n createSuccessNotification(\"Password has been reset.\");\n setTimeout(() => history.push(FirstFactorRoute), 1500);\n setFormDisabled(true);\n } catch (err) {\n console.error(err);\n if (err.message.includes(\"0000052D.\")) {\n createErrorNotification(\"Your supplied password does not meet the password policy requirements.\");\n } else {\n createErrorNotification(\"There was an issue resetting the password.\");\n }\n }\n };\n\n const handleResetClick = () => doResetPassword();\n\n const handleCancelClick = () => history.push(FirstFactorRoute);\n\n return (\n \n \n \n setPassword1(e.target.value)}\n error={errorPassword1}\n className={classnames(style.fullWidth)}\n />\n \n \n setPassword2(e.target.value)}\n error={errorPassword2}\n onKeyPress={(ev) => {\n if (ev.key === \"Enter\") {\n doResetPassword();\n ev.preventDefault();\n }\n }}\n className={classnames(style.fullWidth)}\n />\n \n \n \n Reset\n \n \n \n \n Cancel\n \n \n \n \n );\n};\n\nexport default ResetPasswordStep2;\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n marginTop: theme.spacing(2),\n marginBottom: theme.spacing(2),\n },\n fullWidth: {\n width: \"100%\",\n },\n}));\n","import React, { useState } from \"react\";\n\nimport { config as faConfig } from \"@fortawesome/fontawesome-svg-core\";\nimport { CssBaseline, ThemeProvider } from \"@material-ui/core\";\nimport { BrowserRouter as Router, Route, Switch, Redirect } from \"react-router-dom\";\n\nimport NotificationBar from \"./components/NotificationBar\";\nimport NotificationsContext from \"./hooks/NotificationsContext\";\nimport { Notification } from \"./models/Notifications\";\nimport {\n FirstFactorRoute,\n ResetPasswordStep2Route,\n ResetPasswordStep1Route,\n RegisterSecurityKeyRoute,\n RegisterOneTimePasswordRoute,\n LogoutRoute,\n} from \"./Routes\";\nimport * as themes from \"./themes\";\nimport { getBasePath } from \"./utils/BasePath\";\nimport { getRememberMe, getResetPassword, getTheme } from \"./utils/Configuration\";\nimport RegisterOneTimePassword from \"./views/DeviceRegistration/RegisterOneTimePassword\";\nimport RegisterSecurityKey from \"./views/DeviceRegistration/RegisterSecurityKey\";\nimport LoginPortal from \"./views/LoginPortal/LoginPortal\";\nimport SignOut from \"./views/LoginPortal/SignOut/SignOut\";\nimport ResetPasswordStep1 from \"./views/ResetPassword/ResetPasswordStep1\";\nimport ResetPasswordStep2 from \"./views/ResetPassword/ResetPasswordStep2\";\n\nimport \"@fortawesome/fontawesome-svg-core/styles.css\";\n\nfaConfig.autoAddCss = false;\n\nfunction Theme() {\n switch (getTheme()) {\n case \"dark\":\n return themes.Dark;\n case \"grey\":\n return themes.Grey;\n default:\n return themes.Light;\n }\n}\n\nconst App: React.FC = () => {\n const [notification, setNotification] = useState(null as Notification | null);\n\n return (\n \n \n \n \n setNotification(null)} />\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default App;\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === \"localhost\" ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === \"[::1]\" ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(/^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/),\n);\n\ntype Config = {\n onSuccess?: (registration: ServiceWorkerRegistration) => void;\n onUpdate?: (registration: ServiceWorkerRegistration) => void;\n};\n\nexport function register(config?: Config) {\n if (process.env.NODE_ENV === \"production\" && \"serviceWorker\" in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL((process as { env: { [key: string]: string } }).env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener(\"load\", () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n \"This web app is being served cache-first by a service \" +\n \"worker. To learn more, visit https://bit.ly/CRA-PWA\",\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl: string, config?: Config) {\n navigator.serviceWorker\n .register(swUrl)\n .then((registration) => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === \"installed\") {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n \"New content is available and will be used when all \" +\n \"tabs for this page are closed. See https://bit.ly/CRA-PWA.\",\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log(\"Content is cached for offline use.\");\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch((error) => {\n console.error(\"Error during service worker registration:\", error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl: string, config?: Config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl)\n .then((response) => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get(\"content-type\");\n if (response.status === 404 || (contentType != null && contentType.indexOf(\"javascript\") === -1)) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then((registration) => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\"No internet connection found. App is running in offline mode.\");\n });\n}\n\nexport function unregister() {\n if (\"serviceWorker\" in navigator) {\n navigator.serviceWorker.ready.then((registration) => {\n registration.unregister();\n });\n }\n}\n","import \"./utils/AssetPath\";\n\nimport React from \"react\";\n\nimport ReactDOM from \"react-dom\";\n\nimport \"./index.css\";\nimport App from \"./App\";\nimport * as serviceWorker from \"./serviceWorker\";\n\nReactDOM.render(, document.getElementById(\"root\"));\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"hand\":\"FingerTouchIcon_hand__fZM01\",\"strong\":\"FingerTouchIcon_strong__XLkjn\",\"shaking\":\"FingerTouchIcon_shaking__2J7jA\"};"],"sourceRoot":""}