{"version":3,"sources":["Assets/linkedin.svg","Assets/greenCheck.svg","components/AlertConfirmation.tsx","Assets/circle-help.svg","components/FullContainerBack.tsx","SVGs/arrow-left-white.svg","components/TopNavigationHeader.tsx","components/Alert.tsx","components/Spinner.tsx","../node_modules/@zedeid-sdk/zedeid-hdk-wallet/dist/browser sync","components/Button.tsx","../node_modules/@zedeid-sdk/sd-vc-lib/dist/browser sync","Views/1.2 Signup.tsx","Assets/ProfilePictureDefault.tsx","Views/Callback.tsx","components/TxtMain.tsx","components/TxtValueAndStatus.tsx","components/WrapFull.tsx","components/ButtonDisabled.tsx","Assets/editIconBlack.svg","components/TxtValueDomainVerify.tsx","components/LogoTop.tsx","components/Wrap.tsx","components/TxtHelpGuide.tsx","utils.ts","components/InputLarge.tsx","Assets/chevronDown.svg","Views/1.0 Onbording.tsx","Views/1.1 Signin.tsx","Assets/arrowAccept.svg","Assets/arrowIssue.svg","Assets/notoficationIcon.svg","Assets/notoficationHaveIcon.svg","Assets/defaultUser.jpg","components/Boxbtn.tsx","socket.ts","Views/2.0 Home.tsx","components/BoxbtnCustom.tsx","Assets/trophy.svg","Assets/badge.svg","Assets/editIcon.svg","components/AlertWithText.tsx","Assets/camera.png","Assets/greenInfo.svg","Views/2.1 MyProfile.tsx","components/ContactListItem.tsx","components/ContactSearchInput.tsx","Assets/search.svg","Assets/addDone.svg","Assets/adding.svg","Views/2.2 MyContacts.tsx","Assets/linkedinBlueColor.svg","components/UserProfile.tsx","Assets/deleteIcon.svg","redux/signerSlice.ts","components/PopupQuestion.tsx","Views/2.2.1 ContactsProfile.tsx","Assets/addCircle.svg","Views/2.2.3 GlobalContactProfile.tsx","Assets/u1.png","components/RewardRequestItem.tsx","Views/2.4 ReceivedRequests.tsx","components/CustomTextField.tsx","components/ImageUploadField.tsx","components/SectionHeader.tsx","components/ProfileImageUploadField.tsx","Assets/AddAttribute.svg","Assets/attributeDelete.svg","Assets/attributeEdit.svg","components/AddSectionAttribute.tsx","components/AddAttributePopUp.tsx","components/EditAttributePopUp.tsx","Views/2.4.1 PrepareReward.tsx","components/AcceptRewardListItem.tsx","Assets/closeIcon.svg","Views/2.5 ReceivedRewards.tsx","components/BoxbtnTransparent.tsx","components/RewardPreviewUser.tsx","components/RewardPreviewItem.tsx","Assets/closeIconGreen.svg","CertificateTemplates/Template1/Template1.jsx","Assets/certificateLogo.png","Assets/certificateLogoLight.png","CertificateTemplates/Template2/Template2.jsx","CertificateTemplates/Template3/Template3.jsx","components/Certificate.tsx","CertificateTemplates/Template4/Template4.jsx","Views/2.5.1 ReceivedRewardPreview.tsx","Views/2.5.2 RequestReward.tsx","components/RewardItem.tsx","redux/myRewardsSlice.ts","Views/2.6 MyRewards.tsx","Assets/plusCircle.svg","Assets/shareIconSolid.svg","components/BoxBtnNew.tsx","Assets/closeIconShare.svg","Assets/LinkedInVectorGreen.svg","Assets/FacebookVectorGreen.svg","Assets/CopyVector.svg","components/ShareComponent.tsx","Views/2.6.1 MyRewardPreview.tsx","Views/2.6.3 IssuedRewardPreview.tsx","Assets/shareIcon.svg","Assets/propic.svg","Views/2.7 TrophyCase.tsx","Assets/singleCloseIcon.svg","Views/2.7.1 ReceivedRewardPreviewTrophyCase.tsx","Views/2.7.3 ReceivedRewardPreviewPublicTrophyCase.tsx","Assets/shareIconDark.svg","Views/2.7.2 TrophyCasePublicView.tsx","redux/verifierSlice.ts","Assets/rightMarkIcon.svg","components/SmallTransparentBtn.tsx","Views/2.8.1 VerifiedReward.tsx","Views/2.9 InviteCollegues.tsx","redux/presenterSlice.ts","components/Reward.tsx","components/UserDetailCard.tsx","components/Card.tsx","Views/SignedX.tsx","Views/2.1.1 ViewMyId.tsx","SVGs/expand.svg","Views/Presenter.tsx","SVGs/collapse.svg","SVGs/copy-primary.svg","SVGs/export-primary.svg","components/CollpasibleText.tsx","Assets/logoGreen.svg","Views/2.8.3 VerificationDetailsVC.tsx","Views/5.0 ClaimIDByDomain.tsx","Views/VerifyReward.tsx","Assets/download.svg","Views/2.4.1.2 GeneratedRewardPreview.tsx","Views/2.3 Notifications.tsx","components/BadgeTemplatesItem.tsx","Assets/addIcon.svg","Views/2.4.1.1 BadgeTemplates.tsx","Assets/certificateSignature.png","Views/RewardCertificateView.tsx","App.tsx","app/store.ts","serviceWorker.ts","index.tsx","components/Logo.tsx","Assets/copy.svg","Assets/logo.svg","app/hooks.ts","Assets/correctMark.svg","redux/identitySlice.ts"],"names":["AlertConfirmation","props","open","onClose","handleClose","aria-labelledby","id","aria-describedby","className","message","onClick","handleAction","yesTxt","FullContainerBack","children","_path","_excluded","_extends","Object","assign","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","this","_objectWithoutProperties","excluded","sourceKeys","keys","indexOf","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","SvgArrowLeftWhite","_ref","svgRef","title","titleId","width","height","viewBox","fill","xmlns","ref","d","ForwardRef","TopNavigationHeader","handleBack","IconButton","caption","handleDone","disabled","src","rightIcon","Alert","content","autoFocus","useStyles","makeStyles","theme","backdrop","zIndex","drawer","color","Spinner","classes","webpackEmptyContext","req","e","Error","code","resolve","module","exports","Button","name","Signup","dispatch","useAppDispatch","history","useHistory","useState","isLoading","setIsLoading","userName","setUserName","userEmail","setUserEmail","alertOpen","setAlertOpen","userLogged","useParams","org","invitationId","activityInvitationId","a","mnemonic","generateMnemonic","wallet","Wallet","Types","MNEMONIC","uid","createHash","update","digest","getChildKeys","process","issuerPrivateKey","privateKey","issuerDID","did","holderPrivateKey","holderDID","axios","post","issuerChallengeResponse","jwt","decode","data","challengeToken","issuerChallenge","challenge","Buffer","from","publicKeyCreate","toString","ecdsaSign","signature","issuerResponse","holderChallengeResponse","holderChallenge","holderResponse","email","receivingDID","photo","ProfilePictureDefault","userTokenResponse","userToken","token","sessionStorage","setItem","decodedUser","setMnemonic","setHolderDID","setHolderPrivateKey","setIssuerDID","setIssuerPrivateKey","setIsIdentityCreated","setName","setEmail","setImage","push","VIEWS","IDENTITY","response","isKeysGenerated","isInput","ONBORDING","type","onChange","event","value","placeholder","maxLength","SIGNIN","window","LinkedinIco","handleOpen","Callback","query","URLSearchParams","useLocation","search","useAppSelector","_mnemonic","useEffect","get","then","encryptedMnemonic","linkedin","components","split","iv_from_ciphertext","shift","decipher","crypto","createDecipheriv","decryptedMnemonic","join","final","issuerRes","holderRes","HOME","catch","error","console","log","getItem","iv","randomBytes","cipher","createCipheriv","ciphered","TxtMain","alertWithConfirmation","setAlertWithConfirmation","onceGenerateTxt","setOnceGenerateTxt","helpDisplay","setHelpDisplay","isEditBtnActive","setIsEditBtnActive","domainInputDisabled","setDomainInputDisabled","issuingPrivateKey","_rewardingPrivateKey","domain","setDomain","txt","setTxt","verifiedDomain","setVerifiedDomain","isDomainVerify","setIsDomainVerify","issuingDID","_rewardingDID","backToDomainVerify","validateDomain","test","domainHash","shajs","sha256","domainHashBuffer","issuingPrivateKeyBuffer","user","signatureArray","decodedSignatureArray","domainVerified","decodedUserToken","checkDomainStatuToken","Fragment","back","done","PROFILE","correctMark","editBtn","generateTxtValue","handleDomain","enableEdit","helpTxtPage","checkStatus","TxtValueAndStatus","helpTxtValue","setHelpTxtValue","copyText","setCopyText","onMouseEnter","onMouseLeave","circleHelp","navigator","clipboard","writeText","setTimeout","copy","greenCheck","WrapFull","ButtonDisabled","TxtValueDomainVerify","helpTxtValueDomain","setHelpTxtValueDomain","domainTextRef","useRef","current","focus","editIconBlack","LogoTop","logo","Wrap","AnchoringProfile03","shareOnLinkedIn","uri","url","shareOnFacebookHelper","rewardTypes","receivedReward","acceptedReward","isAddress","address","replace","addressHash","keccak256","toLowerCase","parseInt","toUpperCase","isChecksumAddress","isDID","InputLarge","text","Onbording","verificationURL","setVerificationURL","validationTxt","Logo","SIGNUP","elements","rewardId","VERIFIER","chevronDown","href","Signin","setIsValidMnemonic","validateMnemonic","alt","Boxbtn","icon","socket","io","Home","isOpen","setIsOpen","profileImage","_image","notificationIn","setNotificationIn","socketHandler","getRewards","res","unread","err","on","off","params","rewards","dropdownMenuRef","handler","maybeHandler","contains","document","addEventListener","removeEventListener","useClickOutside","NOTIFICATIONS","notoficationHaveIcon","notoficationIcon","propic","MYCONTACT","MYREWARDS","removeItem","arrowIssue","RECEIVEDREQUESTS","arrowAccept","RECEIVEDREWARDS","INVITE","BoxbtnCustom","AlertWithText","Dialog","Myprofile","alertWithTextOpen","setAlertWithTextOpen","_name","showCamera","setShowCamera","changeBackground","setChangeBackground","newName","verifyDomain","VERIFYDOMAIN","greenInfo","htmlFor","style","cursor","accept","reader","FileReader","files","img","onloadend","imageData","result","readAsDataURL","substring","editIcon","trophyIcon","TROPHYCASE","badgeIcon","userNamePreviously","ContactListItem","userPropic","clickable","greyTxt","blueTxt","onPress","actionBtn","ContactSearchInput","placehldr","onKeyPress","keyEvent","onPressEnter","searchIcon","MyContacts","contacts","setContacts","myContacts","setMyContacts","filteredContacts","setFilteredContacts","noResultFound","noContacts","setNoContacts","searchType","setSearchType","searchName","setSearchName","getContacts","location","onClickSearch","getGlobalContacts","filtered","globalContacts","contactsList","myContactsList","map","item","some","contact","filterByMyContacts","CONTACTPROFILE","GLOBALCONTACTPROFILE","refreshList","addContact","contactName","contactDID","put","trim","index","addDone","adding","onAdd","UserProfile","openLikedIn","userProfilePicture","linkedIn","linkedinBlueColor","userProfileName","initialState","holderDIDError","holderName","holderNameError","holderImage","holderImageError","holderProfileURL","holderProfileURLError","issuerName","issuerNameError","issuerImage","issuerImageError","issuerProfileURL","issuerProfileURLError","issuedDate","Date","toISOString","slice","issuedDateError","titleError","remarks","remarksError","rewardImage","rewardImageError","vc","attributes","signerSlice","createSlice","reducers","state","action","payload","setHolderName","setHolderImage","setHolderProfileURL","setIssuerName","setIssuerImage","setIssuerProfileURL","setIssuedDate","setTitle","setTitleError","setRemarks","setRewardImage","setVC","setHolderDIDError","setHolderNameError","setHolderImageError","setHolderProfileURLError","setIssuerNameError","setIssuerImageError","setIssuerProfileURLError","setIssuedDateError","setRemarksError","setRewardImageError","setAttributes","actions","_holderDID","signer","_holderName","_holderImage","_holderProfileURL","_issuerProfileURL","_issuedDate","_title","_remarks","_rewardImage","_vc","_holderDIDError","_holderNameError","_holderImageError","_holderProfileURLError","_issuerProfileURLError","_issuedDateError","_titleError","_remarksError","_attributes","PopupQuestion","headingText","bodyMessage","onClickConfirm","buttonTxtConfirm","onClickCancel","buttonTxtCancel","ContactsProfile","setContact","popUp","setPopUp","success","getContact","removeContact","delete","goBack","deleteIcon","ISSUE","receiverReceivingDID","issuerReceivingDID","receiverName","receiverImage","onClickRemove","GlobalContactProfile","addCircle","onAccept","onDeny","ReceivedRequests","requests","setRequests","getRequests","u1","idx","receiverDID","reload","CustomInput","withStyles","createStyles","input","background","border","boxSizing","borderRadius","padding","fontFamily","fontSize","InputBase","label","fontWeight","lineHeight","marginTop","marginBottom","formControlWrapper","display","margin","hidden","CustomTextField","FormControl","fullWidth","multiline","endAdornment","autoComplete","helperText","root","flexDirection","alignItems","position","justifyContent","labelWrapper","pointer","removeIcon","backgroundColor","top","right","uploadHint","textAlign","letterSpacing","placeholderImage","ImageUploadField","removeCallback","SectionHeader","placeholderTxt","fontStyle","ProfileImageUploadField","handleImageData","AddSectionAttribute","attributeList","updateAttribute","attributeEdit","removeAttribute","attributeDelete","AddAttributePopUp","inputAttribute","setInputAttribute","inputValue","setInputValue","inputRef","preventDefault","EditAttributePopUp","inputKey","setInputKey","PrepareReward","savedAttributes","JSON","parse","addAttributePopUpOpen","setAddAttributePopUpOpen","editAttributePopUpOpen","setEditAttributePopUpOpen","profileImageSample","newAttributes","stringify","AddAttribute","BADGES","holderPublicKey","didDocument","authentication","publicKey","claims","rewardBadge","attributesValues","issue","GENREWARDPREVIEW","attribute","newValue","AcceptRewardListItem","onSelect","rewardDesc","role","userimg","onCancel","date","ReceivedRewards","setRewards","setIndex","credentials","cancelReward","closeIcon","_id","RECEIVEDREWARDPREVIEW","REQUESTREWARD","BoxbtnTransparent","ReceivedRewardPreviewUser","heading","companyUrl","RewardPreviewItem","rewardTitle","holderProfileUrl","issuerProfileUrl","date2","month","getMonth","monthString","day","getDate","dayString","getFullYear","Template1","certificate","React","logoURL","setLogoURL","seal1URL","setSeal1URL","seal2URL","setSeal2URL","newLogoURL","certificate_logo","newSeal1URL","signature_one","newSeal2URL","signature_two","signatureRowContent","useMemo","sign1","sign1Label","signature_title_one","sign2","sign2Label","signature_title_two","hasSignature1","hasSignature2","description","custom_attributes","display_qr","shareLink","size","renderAs","issuer_image","Template2","CertificateLogo","CertificateLogoLight","Template3","templates","template","Certificate","CertificateTemplate","template_name","findIndex","templateRef","AcceptReward","_receivingPrivateKey","showButtons","setShowButtons","tabBtn","setTabBtn","isCertificateAvailable","setIsCertificateAvailable","isBadgeAvailable","setIsBadgeAvailable","displayBadge","setDisplayBadge","displayCertificate","setDisplayCertificate","displyBatch","displyCertificate","acceptRewards","vp","rewardsRes","acceptRewardFunc","present","seeMore","SEEMORE","closeIconGreen","RequestReward","setNoResultFound","GLOBALCONTACTS","reg","RegExp","filter","RewardItem","coin","myRewardsSlice","view","setView","_view","myRewards","MyRewards","setMyRewards","issuedRewards","setIssuedRewards","emptyMyRewardsMsg","setEmptyMyRewardsMsg","emptyIsseRewardsMsg","setEmptyIsseRewardsMsg","accepted_credentials","getIssuedRewards","issued_credentials","toggleTab","MYREWARDPREVIEW","ISSUEDREWARDPREVIEW","showIssuedReward","BoxBtnNew","xl","addToBtn","ShareComponent","closeShareOn","closeIconShare","LinkedInVector","addToLinkedIn","FacebookVector","shareOnFacebook","CopyVector","linkValue","clickCopy","copiedTooltip","stylesheet","MyRewardPreview","shareOn","setShareOn","setCopiedTooltip","addToLinkedInUrl","setAddToLinkedInUrl","fbShareRef","certificateRef","on_trophy","trophy_case","forEach","reward","DATE","certUrl","URL","searchParams","append","addToCase","copyOption","addToTrphyCase","shareOnLinkedin","subject","issuer","proof","WinPrint","write","close","print","styles","element","innerHTML","shareOnDisplay","copyURL","copyClicked","copyIcon","plusCircle","FacebookShareButton","undefined","shareIconSolid","click","IssuedRewardPreview","itemDetails","setItemDetails","TrophyCase","emptyTrophyCase","setEmptyTrophyCase","shareIcon","TROPHYVIEW","ReceivedRewardPreviewTrophyCase","removeFromCase","removeFromTrophyCase","singleCloseIcon","ReceivedRewardPrvPubTrCase","shareIconDark","TROPHYVIEWPUBLIC","isVerified","verifierSlice","setVP","setIsVerifid","_vp","verifier","SmallTransparentBtn","Verifier","vpId","handeleVerify","issuerPublicKey","verify","verificationResult","verifysign","RewardPreviewUser","MORE","InviteCollegues","alertOpenGoToHome","setAlertOpenGoToHome","presenterSlice","vcData","setVCData","_vcData","presenter","Reward","profileCard","cardCaption","profileCardInner","marginRight","profileName","profileUrl","UserDetailCard","image","MainCard","SignedX","vpData","setVpData","setVcData","ACCEPT","link","createElement","body","appendChild","parentNode","removeChild","blob","Blob","createObjectURL","setAttribute","Viewmyid","rewardingDID","_receivingDID","copyTextDid","setCopyTextDid","currentUrl","enableEmail","setEnableEmail","disableSend","setDisableSend","mailFormat","match","Checkbox","defaultChecked","currentEmail","Presenter","setVc","parsedVC","multiple","onload","readAsText","component","SIGNEDVP","SvgExpand","SvgCollapse","SvgCopyPrimary","SvgExportPrimary","contentRow","hiddenContent","valueLength","flexGrow","iconSet","collapsibleText","whiteSpace","overflow","textOverflow","collapsibleTextFalse","wordWrap","wordBreak","divider","subText","CollapsibleText","movementTimer","collapsed","setCollapsed","setWidth","offsetWidth","clearInterval","onCopy","onExport","VerificationDetails","setURL","LogoGreen","ClaimIDByDomain","VerifyReward","data-buttonText","GeneratedRewardPreview","shareWithReceiveralertOpen","setShareWithReceiveralertOpen","requestid","status","downloadIcon","Notifications","removeNotification","onAcceptReward","BadgeTemplatesItem","badgeType","BadgeTemplates","scrollTo","badgeGold","badgeSilver","badgeBronze","badgeDiploma","badgeFoundation","badgeAdvancedDiploma","badgeCertificate","handleOnClick","addIcon","logoGreen","RewardCertificateView","linkedInUrl","CustomAttributes","CertificateSignature","App","isIdentityCreated","_isIdentityCreated","exact","path","to","TROPHYCASEPUBLIC","SIGNEDVC","VERIFYREWARD","REWARDCERTIFICATE","CALLBACK","store","configureStore","reducer","identity","identityReducer","signerReducer","presenterReducer","verifierReducer","myRewardsReducer","Boolean","hostname","ReactDOM","render","StrictMode","getElementById","serviceWorker","ready","registration","unregister","useDispatch","useSelector","identityState","receivingPrivateKey","rewardingPrivateKey","identitySlice","IssuerPrivateKey"],"mappings":"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","file":"static/js/main.8c0d6505.chunk.js","sourcesContent":["export default __webpack_public_path__ + \"static/media/linkedin.37cb3d1c.svg\";","export default __webpack_public_path__ + \"static/media/greenCheck.c40b7c2b.svg\";","import { Dialog, DialogTitle, DialogContent, DialogContentText, DialogActions, Button, TextField } from \"@material-ui/core\";\nimport { ChangeEvent, useState } from \"react\";\n\nexport default function AlertConfirmation(props: { id?: string, message: string, content?: string, open: boolean, handleOpen: any, handleClose: any, handleAction:any, yesTxt?:boolean}) {\n\n function action(){\n props.handleAction()\n props.handleClose()\n }\n\n return (\n \n \n
\n
\n
\n

Alert

\n
\n

{props.message}

\n \n \n
\n
\n\n \n )\n}","export default __webpack_public_path__ + \"static/media/circle-help.08c0a3b5.svg\";","import React, { Component } from 'react'\n\n\nexport default function FullContainerBack(props:any){\n\n return(
\n {props.children}\n
);\n}","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _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\nfunction SvgArrowLeftWhite(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11.7071 5.29289C12.0976 5.68342 12.0976 6.31658 11.7071 6.70711L7.41421 11H19C19.5523 11 20 11.4477 20 12C20 12.5523 19.5523 13 19 13H7.41421L11.7071 17.2929C12.0976 17.6834 12.0976 18.3166 11.7071 18.7071C11.3166 19.0976 10.6834 19.0976 10.2929 18.7071L4.29289 12.7071C4.10536 12.5196 4 12.2652 4 12C4 11.7348 4.10536 11.4804 4.29289 11.2929L10.2929 5.29289C10.6834 4.90237 11.3166 4.90237 11.7071 5.29289Z\",\n fill: \"#fff\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgArrowLeftWhite);\nexport default __webpack_public_path__ + \"static/media/arrow-left-white.24ac275d.svg\";\nexport { ForwardRef as ReactComponent };","import { IconButton } from '@material-ui/core'\nimport { ReactComponent as BackIcon } from '../SVGs/arrow-left-white.svg'\n\n\nexport default function TopNavigationHeader(props: { caption: string, handleBack?: any, handleDone?: any, disabled?: boolean, rightIcon?: any }) {\n\n return (\n
\n
\n {props.handleBack?\n \n \n \n :
}\n
\n

{props.caption}

\n
\n \n \n \n
\n
\n )\n}\n","import { Dialog, DialogTitle, DialogContent, DialogContentText, DialogActions, Button } from \"@material-ui/core\";\n\nexport default function Alert(props: { id?: string, title: string, content: string, open: boolean, handleOpen: any, handleClose: any }) {\n\n return (\n \n\n
\n
\n

{props.title}

\n
\n

{props.content}

\n \n
\n\n \n )\n}","import { Backdrop, CircularProgress, makeStyles } from \"@material-ui/core\";\nimport React from \"react\";\n\n\nconst useStyles = makeStyles((theme) => ({\n backdrop: {\n zIndex: theme.zIndex.drawer + 1,\n color: '#fff',\n },\n}));\n\nexport default function Spinner() {\n\n const classes = useStyles();\n\n return (\n \n \n \n )\n}","function webpackEmptyContext(req) {\n\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\te.code = 'MODULE_NOT_FOUND';\n\tthrow e;\n}\nwebpackEmptyContext.keys = function() { return []; };\nwebpackEmptyContext.resolve = webpackEmptyContext;\nmodule.exports = webpackEmptyContext;\nwebpackEmptyContext.id = 146;","import React, { Component } from 'react'\n\nfunction Button(props: {onClick:any, name:any, disabled?:any}){\n return(\n \n );\n}\n\nexport default Button;","function webpackEmptyContext(req) {\n\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\te.code = 'MODULE_NOT_FOUND';\n\tthrow e;\n}\nwebpackEmptyContext.keys = function() { return []; };\nwebpackEmptyContext.resolve = webpackEmptyContext;\nmodule.exports = webpackEmptyContext;\nwebpackEmptyContext.id = 208;","import { ChangeEvent, Fragment, useState } from \"react\";\n\nimport { useAppDispatch } from '../app/hooks';\nimport { useHistory, useParams } from \"react-router-dom\";\n\nimport Spinner from \"../components/Spinner\";\nimport { VIEWS } from \"../utils\";\nimport axios from \"axios\";\nimport Wallet, { generateMnemonic, Types } from \"@zedeid-sdk/zedeid-hdk-wallet\";\nimport { publicKeyCreate, ecdsaSign } from \"secp256k1\";\nimport jwt from 'jsonwebtoken'\nimport { createHash } from \"crypto\";\nimport { setHolderDID, setHolderPrivateKey, setImage, setIsIdentityCreated, setIssuerDID, setIssuerPrivateKey, setMnemonic, setName, setEmail } from \"../redux/identitySlice\";\nimport Alert from \"../components/Alert\";\nimport TopNavigationHeader from '../components/TopNavigationHeader'\nimport ProfilePictureDefault from '../Assets/ProfilePictureDefault'\n\n\nimport Logo from '../components/Logo'\nimport Button from '../components/Button'\nimport LinkedinIco from '../Assets/linkedin.svg'\n\nexport default function Signup() {\n\n const dispatch = useAppDispatch();\n const history = useHistory()\n const [isLoading, setIsLoading] = useState(false)\n const [userName, setUserName] = useState('');\n const [userEmail, setUserEmail] = useState('');\n const [alertOpen, setAlertOpen] = useState({ open: false, title: '', content: '' })\n const userLogged = 'hkfsuhfry77yr43riuhf34fy7fheiwowjf89r4';\n const { org, invitationId, activityInvitationId } = useParams()\n\n function handleSignupWithLinkedin() {\n window.open(`https://www.linkedin.com/oauth/v2/authorization?response_type=code&client_id=${process.env.REACT_APP_LINKEDIN_CLIENT_ID}&redirect_uri=${process.env.REACT_APP_REDIRECT_URI}/signup&scope=r_liteprofile`, \"_blank\")\n }\n\n async function handleSignupWithMnemonic() {\n try {\n const mnemonic = generateMnemonic(128)\n\n const wallet = new Wallet(Types.MNEMONIC, mnemonic)\n const uid: string = createHash('sha256').update(mnemonic).digest('hex')\n const { privateKey: issuerPrivateKey, did: issuerDID } = wallet.getChildKeys(process.env.REACT_APP_ISSUER_DERIVATION_PATH || 'm/256/256/1')\n const { privateKey: holderPrivateKey, did: holderDID } = wallet.getChildKeys(process.env.REACT_APP_HOLDER_DERIVATION_PATH || 'm/256/256/2')\n\n try {\n setIsLoading(true)\n const issuerChallengeResponse = await axios.post(`${process.env.REACT_APP_RESOLVER}`, { did: issuerDID })\n const { challenge: issuerChallenge } = jwt.decode(issuerChallengeResponse.data.challengeToken) as any\n\n const issuerResponse = await axios.post(`${process.env.REACT_APP_RESOLVER}`,\n {\n did: issuerDID,\n \"challengeResponse\": {\n \"publicKey\": Buffer.from(publicKeyCreate(Buffer.from(issuerPrivateKey as string, 'hex'))).toString('hex'),\n \"cipherText\": Buffer.from(ecdsaSign(\n Buffer.from(issuerChallenge, 'hex'),\n Buffer.from(issuerPrivateKey as string, 'hex')).signature).toString('hex'),\n \"jwt\": issuerChallengeResponse.data.challengeToken\n }\n })\n\n if (!issuerResponse.data || !issuerResponse.data.did) {\n return false\n }\n\n const holderChallengeResponse = await axios.post(`${process.env.REACT_APP_RESOLVER}`, { did: holderDID })\n const { challenge: holderChallenge } = jwt.decode(holderChallengeResponse.data.challengeToken) as any\n const holderResponse = await axios.post(`${process.env.REACT_APP_RESOLVER}`,\n {\n did: holderDID,\n \"challengeResponse\": {\n \"publicKey\": Buffer.from(publicKeyCreate(Buffer.from(holderPrivateKey as string, 'hex'))).toString('hex'),\n \"cipherText\": Buffer.from(ecdsaSign(\n Buffer.from(holderChallenge, 'hex'),\n Buffer.from(holderPrivateKey as string, 'hex')).signature).toString('hex'),\n \"jwt\": holderChallengeResponse.data.challengeToken\n }\n })\n\n const userTokenResponse = await axios.post(`${process.env.REACT_APP_REWARD_BACKEND}user/signup/mnemonic`,\n {\n uid,\n name: userName,\n email: userEmail,\n receivingDID: holderDID,\n photo: ProfilePictureDefault,\n org,\n invitationId,\n activityInvitationId\n })\n\n\n if (issuerResponse.data && holderResponse.data) {\n if (!userTokenResponse.data) {\n return setAlertOpen({ open: true, title: \"Error\", content: \"Unknown error. Try again\" })\n }\n\n const userToken = userTokenResponse.data.token\n sessionStorage.setItem(\"userToken\", userToken);\n const decodedUser: any = jwt.decode(userToken)\n\n dispatch(setMnemonic(mnemonic))\n dispatch(setHolderDID(holderDID))\n dispatch(setHolderPrivateKey(holderPrivateKey as string))\n dispatch(setIssuerDID(issuerDID))\n dispatch(setIssuerPrivateKey(issuerPrivateKey as string))\n dispatch(setIsIdentityCreated(true))\n dispatch(setName(userName))\n dispatch(setEmail(userEmail))\n dispatch(setImage(decodedUser?.photo))\n history.push(`${VIEWS.IDENTITY}/${userLogged}`)\n } else {\n setAlertOpen({ open: true, title: \"Error\", content: \"DID documents not found\" })\n }\n\n setIsLoading(false)\n\n } catch (err: any) {\n setIsLoading(false)\n if (err?.response?.data?.message) {\n setAlertOpen({ open: true, title: \"Error\", content: err?.response?.data?.message })\n } else {\n setAlertOpen({ open: true, title: \"Error\", content: \"Couldn't resolve DID Doc. Try again\" })\n }\n }\n\n } catch (error: any) {\n setAlertOpen({ open: true, title: \"Error\", content: error?.response?.data?.message })\n }\n }\n\n function handleSetName(event: ChangeEvent) {\n const name = event.target.value\n setUserName(name)\n }\n\n function handleSetEmail(event: ChangeEvent) {\n const email = event.target.value\n setUserEmail(email)\n }\n\n const [isKeysGenerated, setIsKeysGenerated] = useState(true)\n const [isInput, setisInput] = useState(true)\n\n function handleBack() {\n history.push(VIEWS.ONBORDING)\n }\n\n function goToSignIn() {\n //history.push(`${VIEWS.SIGNIN}/`)\n history.push(`${VIEWS.SIGNIN}/${org ?? org}/${invitationId ?? invitationId}/${activityInvitationId ?? activityInvitationId}`)\n }\n\n return (\n\n \n
\n \n \n
\n

Almost there

\n \n \n {/*

{validationTxt}

*/}\n \n
\n
\n {isLoading && }\n setAlertOpen({ ...alertOpen, open: false })}\n handleOpen={() => setAlertOpen({ ...alertOpen, open: true })}\n title={alertOpen.title}\n content={alertOpen.content}\n />\n
\n )\n}\n","import * as React from 'react';\nimport { Component } from 'react';\n\nconst ProfilePictureDefault = \"data:image/png;base64,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\";\n\nexport default ProfilePictureDefault;","import axios from \"axios\";\nimport { useEffect, useState } from \"react\";\nimport { useHistory, useLocation, useParams } from \"react-router-dom\";\nimport { useAppDispatch, useAppSelector } from \"../app/hooks\";\nimport jwt from 'jsonwebtoken'\nimport crypto, { createHash } from \"crypto\";\nimport Wallet, { Types } from \"@zedeid-sdk/zedeid-hdk-wallet\";\nimport { setHolderDID, setHolderPrivateKey, setImage, setIsIdentityCreated, setIssuerDID, setIssuerPrivateKey, setMnemonic, setName, _mnemonic } from \"../redux/identitySlice\";\nimport { VIEWS } from \"../utils\";\nimport Alert from \"../components/Alert\";\nimport Spinner from \"../components/Spinner\";\n\n\nexport default function Callback() {\n\n const query = useQuery();\n const dispatch = useAppDispatch();\n const { type } = useParams()\n const history = useHistory()\n const [isLoading, setIsLoading] = useState(false)\n const [alertOpen, setAlertOpen] = useState({ open: false, title: '', content: '' })\n const mnemonic = useAppSelector(_mnemonic)\n\n function useQuery() {\n return new URLSearchParams(useLocation().search);\n }\n\n useEffect(() => {\n if (type === 'signin') {\n axios.post(`${process.env.REACT_APP_REWARD_BACKEND}user/signin/linkedin`, { code: query.get('code') })\n .then(async response => {\n if (response.data && response.data.token) {\n const userToken = response.data.token\n sessionStorage.setItem(\"userToken\", userToken);\n const decodedUser: any = jwt.decode(userToken)\n const encryptedMnemonic = decodedUser.mnemonic\n\n const key = Buffer.from(createHash('sha256').update(decodedUser?.linkedin).digest('hex'), 'hex')\n const components = encryptedMnemonic.split(':')\n const iv_from_ciphertext = Buffer.from(components.shift(), 'hex');\n const decipher = crypto.createDecipheriv('aes256', key, iv_from_ciphertext);\n let decryptedMnemonic = decipher.update(components.join(':'), 'hex', 'utf8')\n decryptedMnemonic += decipher.final('utf8')\n\n const wallet = new Wallet(Types.MNEMONIC, decryptedMnemonic)\n const { privateKey: issuerPrivateKey, did: issuerDID } = wallet.getChildKeys(process.env.REACT_APP_ISSUER_DERIVATION_PATH || 'm/256/256/1')\n const { privateKey: holderPrivateKey, did: holderDID } = wallet.getChildKeys(process.env.REACT_APP_HOLDER_DERIVATION_PATH || 'm/256/256/2')\n\n setIsLoading(true)\n const issuerRes = await axios.get(`${process.env.REACT_APP_RESOLVER}${issuerDID}`)\n const holderRes = await axios.get(`${process.env.REACT_APP_RESOLVER}${holderDID}`)\n\n if (issuerRes.data && holderRes.data) {\n dispatch(setMnemonic(decryptedMnemonic))\n dispatch(setHolderDID(holderDID))\n dispatch(setHolderPrivateKey(holderPrivateKey as string))\n dispatch(setIssuerDID(issuerDID))\n dispatch(setIssuerPrivateKey(issuerPrivateKey as string))\n dispatch(setIsIdentityCreated(true))\n dispatch(setImage(decodedUser?.photo))\n dispatch(setName(decodedUser?.name))\n history.push(VIEWS.HOME)\n } else {\n setAlertOpen({ open: true, title: \"Error\", content: \"DID documents not found\" })\n }\n setIsLoading(false)\n }\n })\n .catch(error => {\n console.log(error)\n setAlertOpen({ open: true, title: \"Error\", content: \"User not found. Please login\" })\n })\n } else if (type === 'signup') {\n axios.post(`${process.env.REACT_APP_REWARD_BACKEND}user/signup/linkedin`, { code: query.get('code') })\n .then(async response => {\n if (response.data && response.data.token) {\n const userToken = response.data.token\n sessionStorage.setItem(\"userToken\", userToken);\n const decodedUser: any = jwt.decode(userToken)\n const encryptedMnemonic = decodedUser.mnemonic\n\n const key = Buffer.from(createHash('sha256').update(decodedUser?.linkedin).digest('hex'), 'hex')\n const components = encryptedMnemonic.split(':')\n const iv_from_ciphertext = Buffer.from(components.shift(), 'hex');\n const decipher = crypto.createDecipheriv('aes256', key, iv_from_ciphertext);\n let decryptedMnemonic = decipher.update(components.join(':'), 'hex', 'utf8')\n decryptedMnemonic += decipher.final('utf8')\n\n const wallet = new Wallet(Types.MNEMONIC, decryptedMnemonic)\n const { privateKey: issuerPrivateKey, did: issuerDID } = wallet.getChildKeys(process.env.REACT_APP_ISSUER_DERIVATION_PATH || 'm/256/256/1')\n const { privateKey: holderPrivateKey, did: holderDID } = wallet.getChildKeys(process.env.REACT_APP_HOLDER_DERIVATION_PATH || 'm/256/256/2')\n\n setIsLoading(true)\n const issuerRes = await axios.get(`${process.env.REACT_APP_RESOLVER}${issuerDID}`)\n const holderRes = await axios.get(`${process.env.REACT_APP_RESOLVER}${holderDID}`)\n\n if (issuerRes.data && holderRes.data) {\n dispatch(setMnemonic(decryptedMnemonic))\n dispatch(setHolderDID(holderDID))\n dispatch(setHolderPrivateKey(holderPrivateKey as string))\n dispatch(setIssuerDID(issuerDID))\n dispatch(setIssuerPrivateKey(issuerPrivateKey as string))\n dispatch(setIsIdentityCreated(true))\n dispatch(setImage(decodedUser?.photo))\n dispatch(setName(decodedUser?.name))\n history.push(VIEWS.HOME)\n } else {\n setAlertOpen({ open: true, title: \"Error\", content: \"DID documents not found\" })\n }\n setIsLoading(false)\n }\n })\n .catch(error => {\n console.log(error.response.data.message)\n if(error.response.data.message === \"User exists\"){\n setAlertOpen({ open: true, title: \"Error\", content: \"Already signed up. Sign in instead\" })\n }else{\n setAlertOpen({ open: true, title: \"Error\", content: \"Unknown error. Try again\" })\n }\n \n })\n } else if (type === 'change') {\n const token = sessionStorage.getItem('userToken')\n const decodedToken:any = jwt.decode(token as string)\n const uid = decodedToken['_id']\n // sessionStorage.removeItem('userToken')\n\n const key = Buffer.from(createHash('sha256').update(uid).digest('hex'), 'hex')\n const iv = crypto.randomBytes(16)\n\n const cipher = crypto.createCipheriv('aes256', key, iv)\n let ciphered = cipher.update(mnemonic, 'utf8', 'hex')\n ciphered += cipher.final('hex')\n const encryptedMnemonic = iv.toString('hex') + ':' + ciphered\n\n axios.post(`${process.env.REACT_APP_REWARD_BACKEND}user/set/linkedin`, { token, code: query.get('code'), encryptedMnemonic })\n .then(async response => {\n if (response.data && response.data.token) {\n const userToken = response.data.token\n sessionStorage.setItem(\"userToken\", userToken);\n const decodedUser: any = jwt.decode(userToken)\n const encryptedMnemonic = decodedUser.mnemonic\n\n const key = Buffer.from(createHash('sha256').update(decodedUser?.linkedin).digest('hex'), 'hex')\n const components = encryptedMnemonic.split(':')\n const iv_from_ciphertext = Buffer.from(components.shift(), 'hex');\n const decipher = crypto.createDecipheriv('aes256', key, iv_from_ciphertext);\n let decryptedMnemonic = decipher.update(components.join(':'), 'hex', 'utf8')\n decryptedMnemonic += decipher.final('utf8')\n\n const wallet = new Wallet(Types.MNEMONIC, decryptedMnemonic)\n const { privateKey: issuerPrivateKey, did: issuerDID } = wallet.getChildKeys(process.env.REACT_APP_ISSUER_DERIVATION_PATH || 'm/256/256/1')\n const { privateKey: holderPrivateKey, did: holderDID } = wallet.getChildKeys(process.env.REACT_APP_HOLDER_DERIVATION_PATH || 'm/256/256/2')\n\n setIsLoading(true)\n const issuerRes = await axios.get(`${process.env.REACT_APP_RESOLVER}${issuerDID}`)\n const holderRes = await axios.get(`${process.env.REACT_APP_RESOLVER}${holderDID}`)\n\n if (issuerRes.data && holderRes.data) {\n dispatch(setMnemonic(decryptedMnemonic))\n dispatch(setHolderDID(holderDID))\n dispatch(setHolderPrivateKey(holderPrivateKey as string))\n dispatch(setIssuerDID(issuerDID))\n dispatch(setIssuerPrivateKey(issuerPrivateKey as string))\n dispatch(setIsIdentityCreated(true))\n dispatch(setImage(decodedUser?.photo))\n dispatch(setName(decodedUser?.name))\n history.push(VIEWS.HOME)\n } else {\n setAlertOpen({ open: true, title: \"Error\", content: \"DID documents not found\" })\n }\n setIsLoading(false)\n }\n })\n .catch(error => {\n console.log(error)\n })\n }\n }, [])\n\n return (\n
\n {isLoading && }\n setAlertOpen({ ...alertOpen, open: false })}\n handleOpen={() => setAlertOpen({ ...alertOpen, open: true })}\n title={alertOpen.title}\n content={alertOpen.content}\n />\n
\n )\n}","import React from 'react'\nimport '../Style/App.scss'\nimport '../Style/Responsive.scss'\nimport TopNavigationHeader from '../components/TopNavigationHeader'\nimport { useState } from \"react\";\nimport { useEffect } from \"react\";\nimport { useHistory } from \"react-router\";\nimport { VIEWS } from \"../utils\";\nimport Spinner from \"../components/Spinner\";\nimport Alert from \"../components/Alert\";\nimport correctMark from '../Assets/correctMark.svg';\nimport TxtValueAndStatus from '../components/TxtValueAndStatus'\nimport TxtValueDomainVerify from '../components/TxtValueDomainVerify'\nimport FullContainerBack from '../components/FullContainerBack'\nimport WrapFull from '../components/WrapFull'\nimport TxtHelpGuide from '../components/TxtHelpGuide'\nimport shajs from 'sha.js'\nimport { ecdsaSign } from 'secp256k1'\nimport { useAppSelector } from '../app/hooks';\nimport { _rewardingDID, _rewardingPrivateKey } from '../redux/identitySlice';\nimport axios from 'axios';\nimport jwt from 'jsonwebtoken'\nimport AlertConfirmation from '../components/AlertConfirmation'\n\nexport default function TxtMain() {\n\n const history = useHistory()\n const [isLoading, setIsLoading] = useState(false)\n const [alertOpen, setAlertOpen] = useState({ open: false, title: '', content: '' })\n const [alertWithConfirmation, setAlertWithConfirmation] = useState({ open: false, title: '', content: '' })\n const [onceGenerateTxt, setOnceGenerateTxt] = useState(false)\n const [helpDisplay, setHelpDisplay] = useState(false)\n const [isEditBtnActive, setIsEditBtnActive] = useState(false)\n const [domainInputDisabled, setDomainInputDisabled] = useState(false)\n const issuingPrivateKey = useAppSelector(_rewardingPrivateKey);\n const [domain, setDomain] = useState('')\n const [txt, setTxt] = useState('')\n const [verifiedDomain, setVerifiedDomain] = useState('')\n const [isDomainVerify, setIsDomainVerify] = useState(false)\n const issuingDID = useAppSelector(_rewardingDID);\n\n\n useEffect(() => {\n setIsLoading(true)\n const userToken = sessionStorage.getItem('userToken')\n const decodedUserToken: any = jwt.decode(userToken as string)\n setIsDomainVerify(decodedUserToken?.domainVerified)\n setVerifiedDomain(decodedUserToken?.domain)\n try {\n if (decodedUserToken.domainVerified || decodedUserToken.domain) {\n setDomain(decodedUserToken.domain)\n setOnceGenerateTxt(true)\n setIsEditBtnActive(true)\n setDomainInputDisabled(true)\n checkDomainStatuToken()\n const domainHash: string = new shajs.sha256().update(decodedUserToken?.domain).digest('hex');\n const domainHashBuffer = Buffer.from(domainHash, 'hex');\n const issuingPrivateKeyBuffer = Buffer.from(issuingPrivateKey, 'hex');\n const signatureArray = Buffer.from(ecdsaSign(domainHashBuffer, issuingPrivateKeyBuffer).signature)\n const decodedSignatureArray = signatureArray.toString('base64')\n setTxt(decodedSignatureArray)\n }\n setIsLoading(false)\n }\n catch (error) {\n setIsLoading(false)\n }\n }, [])\n\n\n function handleBack() {\n history.push(VIEWS.PROFILE)\n }\n\n function goToHelp() {\n setHelpDisplay(true)\n }\n\n function backToDomainVerify() {\n setHelpDisplay(false)\n }\n\n function handleDomain(event: any) {\n const domain = event.target.value\n setDomain(domain)\n }\n\n function validateDomain() {\n const regexp = /^((?:(?:(?:\\w[\\.\\-\\+]?)*)\\w)+)((?:(?:(?:\\w[\\.\\-\\+]?){0,62})\\w)+)\\.(\\w{2,6})$/g;\n if (!domain || regexp.test(domain) === false) {\n setAlertOpen({ open: true, title: \"Alert\", content: \"Domain invalid. Please enter a valid domain.\" })\n return false;\n }\n return true;\n }\n\n async function generateTxt() {\n if (validateDomain()) {\n setIsLoading(true)\n setDomain(domain);\n setIsDomainVerify(false)\n try {\n const domainHash: string = new shajs.sha256().update(domain).digest('hex');\n const domainHashBuffer = Buffer.from(domainHash, 'hex');\n const issuingPrivateKeyBuffer = Buffer.from(issuingPrivateKey, 'hex');\n const token = sessionStorage.getItem('userToken')\n const userTokenResponse = await axios.post(`${process.env.REACT_APP_REWARD_BACKEND}user/set/domain`,\n { token, domain: domain })\n sessionStorage.setItem('userToken', userTokenResponse.data.user)\n const signatureArray = Buffer.from(ecdsaSign(domainHashBuffer, issuingPrivateKeyBuffer).signature)\n const decodedSignatureArray = signatureArray.toString('base64')\n setIsLoading(false)\n setOnceGenerateTxt(true)\n setIsEditBtnActive(true)\n setDomainInputDisabled(true)\n setTxt(decodedSignatureArray)\n } catch (e) {\n setIsLoading(false)\n }\n }\n }\n\n async function checkDomainStatusBackend() {\n setIsLoading(true)\n const token = sessionStorage.getItem('userToken')\n try {\n const userTokenResponse = await axios.post(`${process.env.REACT_APP_REWARD_BACKEND}user/verify/txtRecords`,\n {\n token,\n issuingDID\n })\n if (userTokenResponse.data) {\n setIsLoading(false)\n const userToken = userTokenResponse.data.user \n if (userTokenResponse.data.domainVerified) {\n sessionStorage.setItem(\"userToken\", userToken);\n setIsDomainVerify(true)\n setAlertOpen({ open: true, title: \"Sucess\", content: \"Domain is verified.\" })\n } else {\n setIsLoading(false)\n setIsDomainVerify(false)\n setAlertOpen({ open: true, title: \"Alert\", content: \"Domain verification is still pending. Please try agin later or check the TXT file added into the DNS correctly\" })\n }\n } else {\n setIsLoading(false)\n setIsDomainVerify(false)\n setAlertOpen({ open: true, title: \"Alert\", content: \"Response is empty. Please try again\" })\n }\n } catch (error: any) {\n setIsLoading(false)\n setIsDomainVerify(false)\n setAlertOpen({ open: true, title: \"Alert\", content: error.message })\n }\n\n }\n\n function checkDomainStatuToken() {\n const userToken = sessionStorage.getItem('userToken')\n const decodedUserToken: any = jwt.decode(userToken as string)\n setIsDomainVerify(decodedUserToken?.domainVerified)\n setVerifiedDomain(decodedUserToken?.domain)\n }\n\n function handleDone() {\n history.push(VIEWS.PROFILE)\n }\n\n\n function enableEdit() {\n setAlertWithConfirmation({ ...alertWithConfirmation, open: true })\n }\n\n\n function alertWithConfirmationOk() {\n setIsEditBtnActive(false);\n setDomainInputDisabled(false)\n }\n\n return (\n \n {helpDisplay ? (\n \n ) : (\n \n \n \n \n {onceGenerateTxt ? (\n \n ) : null}\n \n \n )}\n\n {isLoading && }\n setAlertOpen({ ...alertOpen, open: false })}\n handleOpen={() => setAlertOpen({ ...alertOpen, open: true })}\n title={alertOpen.title}\n content={alertOpen.content}\n />\n setAlertWithConfirmation({ ...alertWithConfirmation, open: false })}\n handleOpen={() => setAlertWithConfirmation({ ...alertWithConfirmation, open: true })}\n handleAction={alertWithConfirmationOk}\n message=\"Are you sure you want to change your domain ?\"\n yesTxt={true}\n />\n \n );\n}\n","import React, { useState, useEffect } from 'react';\nimport greenCheck from '../Assets/greenCheck.svg'\nimport circleHelp from '../Assets/circle-help.svg'\nimport copy from '../Assets/copy.svg';\nimport jwt from 'jsonwebtoken'\n\n\nexport default function TxtValueAndStatus(props:{helpTxtPage:any, txt:any, domain:string, checkStatus:any, isDomainVerify:any,}){\n\n const [helpTxtValue, setHelpTxtValue] = useState(false)\n const [copyText, setCopyText] = useState(false);\n const userToken = sessionStorage.getItem('userToken')\n const decodedUserToken:any = jwt.decode(userToken as string)\n\n\n function displyTxtHelp(){\n setHelpTxtValue(true)\n }\n\n function hideTxtHelp(){\n setHelpTxtValue(false)\n }\n\n\n function copyClick(){\n setCopyText(true)\n navigator.clipboard.writeText(props.txt)\n setTimeout(()=>{\n setCopyText(false)\n },2000)\n }\n\n\n return(\n \n
\n
\n

\n TXT Value\n \n \n

\n
\n {helpTxtValue?(
Please add the below value as a txt record to your domain

Click the below link if you need more details
):null}\n\n
\n \n \n
\n\n \n

How to add this to your domain ?

\n
\n\n
\n
\n

TXT Status

\n
\n
\n {props.isDomainVerify? (\n

\n VERIFIED\n

\n ):(\n

Pending

\n )}\n \n

\n {decodedUserToken?.domain}\n

\n
\n \n
\n
\n );\n}\n\n","import React, { Component } from 'react'\n\n\nexport default function WrapFull(props: any){\n\n return(
\n {props.children}\n
)\n}\n","import React, { Component } from 'react'\n\nfunction ButtonDisabled(props: {onClick:any, name:any, disabled?:any}){\n return(\n \n );\n}\n\nexport default ButtonDisabled;","export default __webpack_public_path__ + \"static/media/editIconBlack.e1017e5c.svg\";","import React, { useState, useRef, useEffect } from 'react';\nimport Button from '../components/Button'\nimport ButtonDisabled from '../components/ButtonDisabled'\nimport editIconBlack from '../Assets/editIconBlack.svg'\nimport circleHelp from '../Assets/circle-help.svg'\n\n\nexport default function TxtValueDomainVerify(props:{editBtn:any, generateTxtValue?:any, handleDomain:any, enableEdit:any, domain:string, disabled:any, foxusDomainInput?:any}){\n\n\n const [helpTxtValueDomain, setHelpTxtValueDomain] = useState(false)\n const domainTextRef = useRef(null)\n\n useEffect(() => {\n if(!props.disabled){\n domainTextRef.current?.focus()\n // domainTextRef.current?.select()\n }\n })\n\n function displyTxtHelp(){\n setHelpTxtValueDomain(true)\n }\n\n function hideTxtHelp(){\n setHelpTxtValueDomain(false)\n }\n\n return(\n \n\n
\n

\n Domain Details\n \n \n

\n
\n {helpTxtValueDomain?(
Enter your domain name without the www part
E.g. yourbusinessname.com
):null}\n\n
\n

Domain Name

\n {props.editBtn? (\n \n ):null}\n
\n \n\n \n {props.disabled? (\n \n ):(\n */}\n \n \n
\n Click here to find out how it works\n
\n \n {isLoading && }\n setAlertOpen({ ...alertOpen, open: false })}\n handleOpen={() => setAlertOpen({ ...alertOpen, open: true })}\n title={alertOpen.title}\n content={alertOpen.content}\n />\n \n )\n}\n","import React, { ChangeEvent, useState } from 'react'\n\nimport '../Style/App.scss'\nimport '../Style/Responsive.scss'\n\nimport Logo from '../components/Logo'\nimport Button from '../components/Button'\nimport TopNavigationHeader from '../components/TopNavigationHeader'\n\nimport LinkedinIco from '../Assets/linkedin.svg'\nimport { VIEWS } from \"../utils\";\nimport { setHolderDID, setHolderPrivateKey, setImage, setIsIdentityCreated, setIssuerDID, setIssuerPrivateKey, setMnemonic, setName, _mnemonic } from \"../redux/identitySlice\";\nimport Wallet, { Types, validateMnemonic } from \"@zedeid-sdk/zedeid-hdk-wallet\";\nimport axios from \"axios\";\nimport Alert from \"../components/Alert\";\nimport { createHash } from \"crypto\";\nimport jwt from 'jsonwebtoken'\nimport { useAppDispatch, useAppSelector } from '../app/hooks'\nimport { useHistory, useParams } from 'react-router-dom'\nimport Spinner from '../components/Spinner'\n\nexport default function Signin() {\n\n const dispatch = useAppDispatch();\n const history = useHistory()\n const [isLoading, setIsLoading] = useState(false)\n const [isValidMnemonic, setIsValidMnemonic] = useState()\n const mnemonic = useAppSelector(_mnemonic)\n const [alertOpen, setAlertOpen] = useState({ open: false, title: '', content: '' })\n const { org, invitationId, activityInvitationId } = useParams()\n\n const [validationTxt, setValidationTxt] = useState();\n\n\n async function handleSigningWithMnemonic() {\n if (validateMnemonic(mnemonic)) {\n setIsLoading(true)\n const uid: string = createHash('sha256').update(mnemonic).digest('hex')\n\n try {\n const userTokenResponse: any = await axios.post(`${process.env.REACT_APP_REWARD_BACKEND}user/signin/mnemonic`, { uid, org, invitationId, activityInvitationId })\n if (userTokenResponse.data) {\n const userToken = userTokenResponse.data.token\n sessionStorage.setItem(\"userToken\", userToken);\n const decodedUser: any = jwt.decode(userToken)\n\n const wallet = new Wallet(Types.MNEMONIC, mnemonic)\n const { privateKey: issuerPrivateKey, did: issuerDID } = wallet.getChildKeys(process.env.REACT_APP_ISSUER_DERIVATION_PATH || 'm/256/256/1')\n const { privateKey: holderPrivateKey, did: holderDID } = wallet.getChildKeys(process.env.REACT_APP_HOLDER_DERIVATION_PATH || 'm/256/256/2')\n\n try {\n const issuerRes = await axios.get(`${process.env.REACT_APP_RESOLVER}${issuerDID}`)\n const holderRes = await axios.get(`${process.env.REACT_APP_RESOLVER}${holderDID}`)\n\n if (issuerRes.data && holderRes.data) {\n dispatch(setHolderDID(holderDID))\n dispatch(setHolderPrivateKey(holderPrivateKey as string))\n dispatch(setIssuerDID(issuerDID))\n dispatch(setIssuerPrivateKey(issuerPrivateKey as string))\n dispatch(setIsIdentityCreated(true))\n dispatch(setImage(decodedUser?.photo))\n dispatch(setName(decodedUser?.name))\n history.push(VIEWS.HOME)\n } else {\n setAlertOpen({ open: true, title: \"Error\", content: \"DID documents not found\" })\n }\n setIsLoading(false)\n\n } catch (err: any) {\n setIsLoading(false)\n setAlertOpen({ open: true, title: \"Error\", content: \"Couldn't resolve DID Doc. Try again\" })\n }\n } else {\n setAlertOpen({ open: true, title: \"Error\", content: \"Unknown error. Try again\" })\n }\n } catch (err: any) {\n if (err.response.data) {\n setAlertOpen({ open: true, title: \"Error\", content: err.response.data.message })\n } else {\n setAlertOpen({ open: true, title: \"Error\", content: \"Backend server error. Try again\" })\n }\n }\n setIsLoading(false)\n } else {\n setAlertOpen({ open: true, title: \"Error\", content: \"Invalid secret ID\" })\n }\n\n }\n\n function handleSigninWithLinkedin() {\n window.open(`https://www.linkedin.com/oauth/v2/authorization?response_type=code&client_id=${process.env.REACT_APP_LINKEDIN_CLIENT_ID}&redirect_uri=${process.env.REACT_APP_REDIRECT_URI}/signin&scope=r_liteprofile`, \"_blank\")\n }\n\n function handleSetMenmonic(event: ChangeEvent) {\n const mnemonic = event.target.value\n dispatch(setMnemonic(mnemonic))\n if (validateMnemonic(mnemonic)) {\n setIsValidMnemonic(true)\n } else {\n setIsValidMnemonic(false)\n }\n }\n\n const [isKeysGenerated, setIsKeysGenerated] = useState(true)\n const [isInput, setisInput] = useState(true)\n\n function handleBack() {\n history.push(VIEWS.ONBORDING)\n }\n\n function goToSignUp() {\n //history.push(`${VIEWS.SIGNUP}/`)\n history.push(`${VIEWS.SIGNUP}/${org ?? org}/${invitationId ?? invitationId}/${activityInvitationId ?? activityInvitationId}`)\n }\n\n return (\n \n
\n \n \n
\n \n\n

Or use ID Secret

\n \n\n

{validationTxt}

\n
\n
\n {isLoading && }\n setAlertOpen({ ...alertOpen, open: false })}\n handleOpen={() => setAlertOpen({ ...alertOpen, open: true })}\n title={alertOpen.title}\n content={alertOpen.content}\n />\n
\n );\n}","export default __webpack_public_path__ + \"static/media/arrowAccept.ffce9c97.svg\";","export default __webpack_public_path__ + \"static/media/arrowIssue.8e1f2a8c.svg\";","export default __webpack_public_path__ + \"static/media/notoficationIcon.f053af03.svg\";","export default __webpack_public_path__ + \"static/media/notoficationHaveIcon.861595da.svg\";","export default \"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/4QBsRXhpZgAASUkqAAgAAAADADEBAgAHAAAAMgAAABICAwACAAAAAgACAGmHBAABAAAAOgAAAAAAAABQaWNhc2EAAAMAAJAHAAQAAAAwMjIwAqAEAAEAAAAsAQAAA6AEAAEAAAAsAQAAAAAAAP/bAEMABgQEBQQEBgUFBQYGBgcJDgkJCAgJEg0NCg4VEhYWFRIUFBcaIRwXGB8ZFBQdJx0fIiMlJSUWHCksKCQrISQlJP/bAEMBBgYGCQgJEQkJESQYFBgkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJP/AABEIASwBLAMBIgACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/APqmiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKyr/AMSWNgSm8zSD+CPnH1NAGrRXF3XjC9mJEEccC/Tc35nj9Kz5dZ1Gb797N/wFtv8AKgD0SivNDeXLdbiY/VzTk1G9jOVu5wfaQ0Aek0VwUHiXU4CP9I8wekig/wD1617LxpG2FvICn+3Gcj8qAOmoqG1vIL2PzLeVZF9VPSpqACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAqG8vILCAzXDhEH5n2FJfX0On2zTzthV7dyfQVwOp6pPqtwZJThR9xB0UUAXNW8SXOoFo4SYLfptB5b6n+lY9FFABRRRQAUUUUAFFFFAEtrdz2colt5Wjcdwev1rr9F8TRX5EFziK4PAP8L/T0PtXF0dKAPUaK5vw34hM+2yu2/edI3P8AF7H3rpKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKRmCgkkADkk9qWsLxbqP2ayFsjYkn4Psvf/D86AOe17V21S7IUkQRnCD19/xrMoooAKKKKACiiigAooooAKKKKACiiigBQSpBBwRyDXdeHtX/ALStNshHnxcP/te9cJVzSL86bfxT5OzO1x6qetAHotFIrB1DKcgjII70tABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAVwPiS7N3q03Pyxfu1/Dr+ua7yRxGjOeigk15lI5kkZ2OSxJNADaKKKACiiigAooooAKKKKACiiigAooooAKKKKAO88M3Zu9Ji3HLRfuz+HT9MVq1y3gmYj7VCTx8rAfmD/SupoAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAK2pnbp10fSFz/wCOmvN69I1Jd2n3S+sTj9DXm9ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQBv8AgxsajMvrCT+orsq47wYudQmb0ix+o/wrsaACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigBHUOpU9CMGvMpojBNJE33kYqfwNenVwviiz+y6q7gfJMPMH17/rQBkUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAdV4KgIjupyOCVQfhkn+Yrp6zvD1p9j0qFCMM48xvqf/rYrRoAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACsfxPppvtPLxrmWH51x1I7j/PpWxRQB5dRW14k0c2Fx9oiX/R5T2/gb0rFoAKKKKACiiigAooooAKKKKACiiigArR0LTjqWoIjAmJPnkPsO341QjjeWRY41LOxwAOpNd/oelLpVmI+DK/zSN6n0/CgDQAxRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFZ93r+n2RKyXCs46rH8x/TpWZL41twf3VrK4/2mC/40Ab9xbxXcLQzIHRxgg1wmtaJNpUucF7dj8r46ex966bSvE9vqUphePyJT90Fshvx9a1poY7iNo5UV0YYKkcGgDzGiui1bwpLCWlscyx9fL/iX6etc8ylGKsCpHBBGCKAEooooAKKKKACiiigApyI8rqiKWZjgADJNWdP0q61N9tvGSvdzwo/Guy0fQbfS138STnrIR09h6UAV/D/AIfGnr9ouADcsOB2Qf41uVDd3cNjA087hEXqT/IVz/8Awm0e4j7E+3PB8wZP4YoA6aisO38X6fKQJBLCfVlyP0rXt7qG7TfBKki+qnNAEtFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUVDeXcVjbvPMcIgz9fagBt/fwadAZrh9q9h3Y+grjNV8RXeosURjBB/cU8n6nvVTUtSm1S5M0pwOiIDwo9KqUAFFFFAACQQQSCO4rpdG8VmMCDUCWXoJu4+vr9a5qigD06KaOeMSROro3IZTkGq19pFnqI/0iEM3Zxww/GuDstSu9PbdbzMgPVeqn8K6Ky8ZxkBbyBkP9+PkflQAy78F8k2t1x2WQf1H+FZ0vhbVI/uwpJ/uuP611ttrNhdY8q6iJP8JO0/kaugg9OaAPPjoGqD/lzk/SnJ4c1VzgWjD6sB/Wu/ooA4yDwffSEedJFEPruNbFn4SsbfDTFrhh/e4X8hWvNcw267ppY4x6uwFZd34q062BCO07ekY4/M8UAa0caxIERVVRwABgCqGqa9aaWpDt5k2OIlPP4+lczqHiq8u8pABbIf7pyx/H/CsYksSzEknkk96ALepapc6pLvnf5R91B91ap0UUAFS291NaSCSCVo3HdTioqKAOx0TxQl2Vt7zbHMeA/RX/wNdBXl1db4X10zgWNy2ZAP3bk/eHofegDpKKKKACiiigAooooAKKKKACiiigAooooAKKKKACuM8V6mbm6+yRt+6hPzY7t/9bp+ddTql4LCxmuD1Vfl927V5yzFmLMSSTkk96AEooooAKKKKACiiigAooooAKfHNLD/AKuV0/3WIplFAFkanfL0vbkfSVv8aa99dyDDXU7fWQn+tQUUAHJOSSaKKKACiiigAooooAKKKKACnRyNFIsiMVZSCCOxptFAHoukagupWMdwMBjw49GHX/PvVyuN8IXxgvGtWb5JhlfZh/8AWrsqACiiigAooooAKKKKACiiigAooooAKKKKAOX8aXnywWgPX9438h/WuWrT8R3H2nWJzniMiMfh1/XNZlABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUASW8zW1xHMn3o2DD8K9LhlWeJJUOVdQw+hrzCu78L3JuNHiBOTETGfw6foRQBrUUUUAFFFFABRRRQAUUUUAFFFFABSO4jRnbooJNLVLWZfJ0q6f/pkw/MYoA89lkMsryN1dix/Gm0UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAV1Pgqf5bqAnurj9Qf6Vy1bfhCTZqpX+/Ew/kf6UAdtRRRQAUUUUAFFFFABRRRQAUUUUAFZXih9miz/7RUf8AjwrVrE8XtjSMesij+dAHE0UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAVp+G32a1bH1LL+amsyruiNt1e0P/TQCgD0SiiigAooooAKKKKACiiigAooooAKwfGf/ACC4v+uw/wDQWrerC8ZLnSkP92ZT+hH9aAOLooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAq3pJxqlmf+myf+hCqlW9IXdqtoP+myH8iKAPRqKKKACiiigAooooAKKKKACiiigArM8SQG40a4AGSgDj8Dk/pmtOmyRrKjI4yrAgj1FAHmFFT3to9jdy27jlGI+o7GoKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK1vC8Bm1mE4yIwXP5Y/mRWTXW+DbEx28t44wZDtX6Dr+v8qAOkooooAKKKKACiiigAooooAKKKKACiiigDnPFmkGeIX0K5kjGJAO6+v4VyNeokZrkNf8NvCzXVkhaI8tGOq+49qAOdooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKsWNhcajMIrdCx7nso9SaAHabp8mp3aW8eQDyzf3V7mvRIIEtoUhiG1EAUD2qppGlQ6VbeWnzO3LuRyx/wq9QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAZl/4dsNQYu8ZjkP8cfBP17GsiTwU2791eDH+0n/166qigDkv+EKuP+fuL/vk0f8ACFXH/P3F/wB8mutooA5L/hCrj/n7i/75NH/CFXH/AD9xf98mutooA5L/AIQq4/5+4v8Avk0f8IVcf8/cX/fJrraKAOS/4Qq4/wCfuL/vk0f8IVcf8/cX/fJrraKAOS/4Qq4/5+4v++TR/wAIVcf8/cX/AHya62igDkv+EKuP+fuL/vk0f8IVcf8AP3F/3ya62igDkv8AhCrj/n7i/wC+TR/whVx/z9xf98mutooA5L/hCrj/AJ+4v++TR/whVx/z9xf98mutooA5L/hCrj/n7i/75NA8FT97uP8A75NdbRQBztr4MtUINxPJNjso2g/1rdtrWG0jEUEaxoOyipaKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA/9k=\"","import React, { Component } from 'react'\n\nfunction Boxbtn(props: {onClick: any, icon: any, name?: any, disabled?: boolean}){\n return(\n \n \n \n );\n}\n\nexport default Boxbtn;\n","import {io} from \"socket.io-client\";\n\nconst socket = io(process.env.REACT_APP_REWARD_BACKEND || \"http://localhost:4000\");\nexport default socket;\n","import React, { ChangeEvent, useState, useEffect, useRef } from \"react\";\n\nimport '../Style/App.scss'\nimport '../Style/Responsive.scss'\n\nimport arrowAccept from '../Assets/arrowAccept.svg';\nimport arrowIssue from '../Assets/arrowIssue.svg';\nimport notoficationIcon from '../Assets/notoficationIcon.svg';\nimport notoficationHaveIcon from '../Assets/notoficationHaveIcon.svg';\nimport propic from '../Assets/defaultUser.jpg';\n\nimport { isDID, VIEWS } from \"../utils\";\nimport { useHistory, Link } from \"react-router-dom\";\nimport { useAppDispatch, useAppSelector } from \"../app/hooks\";\nimport { setHolderDID, setHolderPrivateKey, setImage, setIsIdentityCreated, setIssuerDID, setIssuerPrivateKey, setMnemonic, setName, _image } from \"../redux/identitySlice\";\n\nimport {isAddress} from '../utils'\n\nimport Logo from '../components/Logo'\nimport Button from '../components/Button'\nimport InputLarge from '../components/InputLarge'\nimport Boxbtn from '../components/Boxbtn'\nimport MyContacts from \"./2.2 MyContacts\";\nimport Spinner from '../components/Spinner';\nimport Alert from \"../components/Alert\";\nimport { type } from \"os\";\nimport axios from \"axios\";\nimport jwt from \"jsonwebtoken\";\nimport socket from \"../socket\";\n\n\nlet useClickOutside = (handler:any) => {\n let dropdownMenuRef = useRef(null);\n useEffect(() => {\n let maybeHandler = (event:any) => {\n if (!dropdownMenuRef?.current?.contains(event.target)) {\n handler();\n }\n };\n document.addEventListener(\"mousedown\", maybeHandler);\n return () => {\n document.removeEventListener(\"mousedown\", maybeHandler);\n };\n });\n return dropdownMenuRef;\n};\n\n\nexport default function Home() {\n\n const history = useHistory()\n const dispatch = useAppDispatch()\n const [isLoading, setIsLoading] = useState(false)\n const [alertOpen, setAlertOpen] = useState({ open: false, title: '', content: '' })\n const [isOpen, setIsOpen] = useState(false);\n const [isInput, setisInput] = useState(true)\n const [validationTxt, setValidationTxt] = useState();\n const [verificationURL, setVerificationURL] = useState('')\n const profileImage = useAppSelector(_image)\n\n const userToken = sessionStorage.getItem('userToken')\n const decodedUserToken:any = jwt.decode(userToken as string)\n const uid = decodedUserToken.receivingDID;\n const [notificationIn, setNotificationIn] = useState(false)\n\n const socketHandler = (data:any)=> {\n console.log('NEW DATA RECIEVED HOME', data)\n if(data){\n setNotificationIn(true);\n }\n }\n\n useEffect(() => {\n //setIsLoading(true)\n getRewards(uid).then(res => {\n if(res.data[0].unread.length !== 0){\n console.log(\"Notification have\");\n setNotificationIn(true);\n setIsLoading(false)\n }\n console.log(res.data[0].unread);\n //setIsLoading(false)\n }).catch(err => {\n\n })\n socket.on(uid || \"\", socketHandler);\n return () => {\n socket.off(uid,socketHandler)\n };\n }, []);\n\n const getRewards = async (uid: string) => {\n const rewards = await axios.get(`${process.env.REACT_APP_REWARD_BACKEND}notifications/getUnreadNotifications`, {\n params: {\n uid\n }\n });\n return rewards;\n };\n\n\n function handleIssueReward() {\n history.push(VIEWS.RECEIVEDREQUESTS)\n }\n\n function handleAcceptReward() {\n history.push(VIEWS.RECEIVEDREWARDS)\n }\n\n function handleLogout() {\n dispatch(setMnemonic(''))\n dispatch(setName(''))\n dispatch(setImage(''))\n dispatch(setHolderPrivateKey(''))\n dispatch(setHolderDID(''))\n dispatch(setIssuerPrivateKey(''))\n dispatch(setIssuerDID(''))\n dispatch(setIsIdentityCreated(false))\n sessionStorage.removeItem('userToken')\n }\n\n function verify() {\n let elements = verificationURL.split('/')\n const rewardId = elements[elements.length - 1]\n const did = elements[elements.length - 2]\n if(isDID(did) && rewardId.length === 64){\n console.log(rewardId)\n history.push(`${VIEWS.VERIFIER}/${did}/${rewardId}`)\n }else{\n setAlertOpen({ open: true, title: \"Error\", content: \"Enter valid verification URL\" })\n }\n\n }\n\n function inviteCollegues() {\n history.push(VIEWS.INVITE)\n }\n\n function goToMyProfile() {\n history.push(VIEWS.PROFILE)\n }\n\n function goMyContacts() {\n history.push(VIEWS.MYCONTACT)\n }\n\n function goMyRewards() {\n history.push(VIEWS.MYREWARDS)\n }\n\n function goToNotifications(){\n history.push(VIEWS.NOTIFICATIONS)\n }\n\n let dropdownMenuRef = useClickOutside(() => {\n setIsOpen(false);\n });\n\n function handleSetVerificationURL(event: ChangeEvent) {\n setVerificationURL(event.target.value)\n }\n\n return (\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 \n
\n \n

{validationTxt}

\n
\n
\n {isLoading && }\n setAlertOpen({ ...alertOpen, open: false })}\n handleOpen={() => setAlertOpen({ ...alertOpen, open: true })}\n title={alertOpen.title}\n content={alertOpen.content}\n />\n
\n )\n}\n\n","import React, { Component } from 'react'\n\nfunction BoxbtnCustom(props: {onClick: any, icon: any; name: any}){\n return(\n \n \n \n );\n}\n\nexport default BoxbtnCustom;","export default __webpack_public_path__ + \"static/media/trophy.dcfc5236.svg\";","export default __webpack_public_path__ + \"static/media/badge.719ae279.svg\";","export default __webpack_public_path__ + \"static/media/editIcon.60ca56ec.svg\";","import { Dialog, DialogTitle, DialogContent, DialogContentText, DialogActions, Button, TextField } from \"@material-ui/core\";\nimport { ChangeEvent, useState } from \"react\";\n\nexport default function AlertWithText(props: { id?: string, title: string, content: string, open: boolean, handleOpen: any, handleClose: any, handleAction:any, userNamePreviously?:any}) {\n\n const [name, setName] = useState('')\n\n function handleNameInput(event: ChangeEvent) {\n const name = event.target.value\n setName(name)\n }\n\n function action(){\n props.handleAction(name)\n props.handleClose()\n }\n\n return (\n \n \n
\n
\n
\n

Change your name

\n
\n
\n \n
\n \n \n
\n
\n\n \n )\n}","export default \"data:image/png;base64,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\"","export default __webpack_public_path__ + \"static/media/greenInfo.d00777df.svg\";","import React, { ChangeEvent, useEffect, useState } from 'react'\n\nimport '../Style/App.scss'\nimport '../Style/Responsive.scss'\n\nimport Button from '../components/Button'\nimport BoxbtnCustom from '../components/BoxbtnCustom'\nimport TopNavigationHeader from '../components/TopNavigationHeader'\nimport Spinner from '../components/Spinner'\nimport Alert from \"../components/Alert\";\n\n\nimport backBtn from '../Assets/backBtn.svg';\nimport correctMark from '../Assets/correctMark.svg';\nimport trophyIcon from '../Assets/trophy.svg';\nimport badgeIcon from '../Assets/badge.svg';\nimport propic from '../Assets/defaultUser.jpg';\nimport editIcon from '../Assets/editIcon.svg';\nimport { useHistory } from 'react-router'\nimport { VIEWS } from '../utils'\nimport axios, { AxiosError } from 'axios'\nimport { useAppDispatch, useAppSelector } from '../app/hooks'\nimport { setImage, setName, _image, _name } from '../redux/identitySlice'\nimport AlertWithText from '../components/AlertWithText'\nimport cameraIcon from '../Assets/camera.png';\nimport greenInfo from '../Assets/greenInfo.svg'\nimport greenCheck from '../Assets/greenCheck.svg'\nimport jwt from 'jsonwebtoken'\n\n\nfunction Myprofile() {\n\n const [isLoading, setIsLoading] = useState(false)\n const [alertOpen, setAlertOpen] = useState({ open: false, title: '', content: '' })\n const [alertWithTextOpen, setAlertWithTextOpen] = useState({ open: false, title: '', content: '' })\n const profileImage = useAppSelector(_image)\n const name = useAppSelector(_name)\n const history = useHistory()\n const dispatch = useAppDispatch()\n const [showCamera, setShowCamera] = useState(false)\n const [changeBackground, setChangeBackground] = useState(false)\n const [isDomainVerify, setIsDomainVerify] = useState(false)\n const [verifiedDomain, setVerifiedDomain] = useState('')\n const domainVerified = 'true';\n\n useEffect(() => {\n const userToken = sessionStorage.getItem('userToken')\n const decodedUserToken:any = jwt.decode(userToken as string)\n setIsDomainVerify(decodedUserToken?.domainVerified)\n setVerifiedDomain(decodedUserToken?.domain)\n })\n\n function addLinkedinAcc() {\n window.open(`https://www.linkedin.com/oauth/v2/authorization?response_type=code&client_id=${process.env.REACT_APP_LINKEDIN_CLIENT_ID}&redirect_uri=${process.env.REACT_APP_REDIRECT_URI}/change&scope=r_liteprofile`, \"_self\")\n }\n\n function viewIdSecret() {\n history.push(VIEWS.IDENTITY)\n }\n\n function tropyCase() {\n history.push(VIEWS.TROPHYCASE)\n }\n\n function myRewards() {\n history.push(VIEWS.MYREWARDS)\n }\n\n function handleBack() {\n history.push(VIEWS.HOME)\n }\n\n function handleDone() {\n history.push(VIEWS.HOME)\n }\n\n function changeProfileImage(event: ChangeEvent) {\n setIsLoading(true)\n const reader = new FileReader();\n if (event.target.files && event.target.files[0]) {\n const img = event.target.files[0];\n reader.onloadend = async () => {\n const imageData: string = reader.result as string\n const token = sessionStorage.getItem('userToken')\n try {\n const userTokenResponse = await axios.post(`${process.env.REACT_APP_REWARD_BACKEND}user/set/image`, { token, photo: imageData })\n if (userTokenResponse.data) {\n const userToken = userTokenResponse.data.user\n sessionStorage.setItem(\"userToken\", userToken);\n dispatch(setImage(imageData))\n setIsLoading(false)\n }\n } catch (error: any) {\n console.log(error.message)\n }\n }\n reader.readAsDataURL(img);\n }\n \n }\n\n async function changeName(newName:string) {\n setIsLoading(true)\n const token = sessionStorage.getItem('userToken')\n try {\n const userTokenResponse = await axios.post(`${process.env.REACT_APP_REWARD_BACKEND}user/set/name`, { token, name: newName })\n if (userTokenResponse.data) {\n const userToken = userTokenResponse.data.user\n sessionStorage.setItem(\"userToken\", userToken);\n dispatch(setName(newName))\n setIsLoading(false)\n setAlertOpen({ open: true, title: 'Success', content: 'Your profile name changed successfully.' });\n }\n } catch (error: any) {\n setAlertOpen({ open: true, title: 'Error', content: 'Something went wrong. Try again.' })\n console.log(error.message)\n }\n setIsLoading(false)\n }\n\n function openChangeName() {\n setAlertWithTextOpen({ ...alertWithTextOpen, open: true })\n }\n\n function closeChangeName() {\n\n }\n\n function showCameraIcon(){\n setShowCamera(true)\n setChangeBackground(true)\n }\n\n function hideCameraIcon(){\n setShowCamera(false)\n setChangeBackground(false)\n }\n\n function verifyDomain(){\n history.push(VIEWS.VERIFYDOMAIN)\n }\n\n\n return (\n \n
\n \n\n
\n {isDomainVerify? (\n
\n \n

\n Verified\n

\n
\n

{verifiedDomain}

\n
\n ):(\n \n )}\n
\n
\n \n \n
\n
\n

{name.substring(0, 30)}\n \n

\n
\n
\n \n \n
\n
\n
\n {isLoading && }\n setAlertOpen({ ...alertOpen, open: false })}\n handleOpen={() => setAlertOpen({ ...alertOpen, open: true })}\n title={alertOpen.title}\n content={alertOpen.content}\n />\n setAlertWithTextOpen({ ...alertWithTextOpen, open: false })}\n handleOpen={() => setAlertWithTextOpen({ ...alertWithTextOpen, open: true })}\n handleAction={changeName}\n title={alertWithTextOpen.title}\n content={alertWithTextOpen.content}\n userNamePreviously={name}\n />\n
\n );\n}\n\nexport default Myprofile;","import React, { Component } from 'react'\n\nfunction ContactListItem(props: {userPropic: any, userName: any, actionBtn: any, blueTxt?: any, greyTxt?: any, onPress?:any, clickable?:boolean, onClick?:any}){\n return(\n \n
\n
\n \n
\n

{props.userName}

\n {props.greyTxt ? (

{props.greyTxt}

):(

)}\n {props.blueTxt ? (

{props.blueTxt}

):(

)}\n
\n
\n
\n \n
\n
\n
\n );\n}\n\nexport default ContactListItem;\n","import React, { Component } from 'react'\n//import KeyboardEventHandler from \"react-keyboard-event-handler\";\n\n\nfunction ContactSearchInput(props: {placehldr: any, searchIcon?: any, onChange?: any, onClick?: any, onPressEnter?:any, value?: string,}){\n const onKeyPress = (keyEvent:any)=> {\n if(keyEvent.key === \"Enter\"){\n props.onPressEnter();\n console.log(\"enter pressed\")\n }\n };\n return(\n \n
\n \n \n
\n\n
\n );\n}\n\nexport default ContactSearchInput;\n","export default __webpack_public_path__ + \"static/media/search.a488c796.svg\";","export default __webpack_public_path__ + \"static/media/addDone.e6ffd99b.svg\";","export default __webpack_public_path__ + \"static/media/adding.4851f9b6.svg\";","import React, { useEffect } from 'react'\n\nimport '../Style/App.scss'\nimport '../Style/Responsive.scss'\n\nimport ContactListItem from '../components/ContactListItem'\nimport ContactSearchInput from '../components/ContactSearchInput'\nimport TopNavigationHeader from '../components/TopNavigationHeader'\n\nimport chevronDown from '../Assets/chevronDown.svg';\nimport search from '../Assets/search.svg';\nimport addDone from '../Assets/addDone.svg';\nimport adding from '../Assets/adding.svg';\n\nimport { useState } from \"react\";\nimport axios from \"axios\";\nimport { useHistory } from \"react-router\";\nimport { VIEWS } from \"../utils\";\nimport jwt from 'jsonwebtoken'\nimport Spinner from \"../components/Spinner\";\nimport Alert from \"../components/Alert\";\n\n\n\nfunction MyContacts() {\n\n const [contacts, setContacts] = useState([] as any)\n const [myContacts, setMyContacts] = useState([] as any)\n const [filteredContacts, setFilteredContacts] = useState([])\n const history = useHistory()\n const [isLoading, setIsLoading] = useState(false)\n const [alertOpen, setAlertOpen] = useState({ open: false, title: '', content: '' })\n const [noResultFound, setNoResultFound] = useState(false);\n const [noContacts, setNoContacts] = useState(false);\n const [searchType, setSearchType] = useState(\"\")\n const [searchName, setSearchName] = useState(\"\")\n const userToken = sessionStorage.getItem('userToken')\n const decodedUserToken: any = jwt.decode(userToken as string)\n const uid = decodedUserToken[\"_id\"]\n const did = decodedUserToken[\"receivingDID\"]\n\n\n useEffect(() => {\n setIsLoading(true);\n const userToken = sessionStorage.getItem('userToken')\n const decodedUserToken: any = jwt.decode(userToken as string)\n const uid = decodedUserToken[\"_id\"]\n getContacts(uid).then(res => {\n console.log(res.data.contacts);\n setMyContacts(res.data.contacts);\n if (res.data.contacts.length === 0) {\n console.log(\"You don't have contacts, Please add new contacts.\");\n setNoContacts(true);\n }\n setFilteredContacts(res.data.contacts);\n const searchType = new URLSearchParams(history.location.search).get(\"type\");\n const query = new URLSearchParams(history.location.search).get(\"query\") || \"\";\n if(searchType === \"name\"){\n setSearchName(query || \"\")\n onClickSearch(query, res.data.contacts)\n }\n setIsLoading(false);\n })\n setNoContacts(false);\n }, []);\n\n const onReturn = ()=> {\n getContacts(uid).then(res => {\n setMyContacts(res.data.contacts);\n const searchType = new URLSearchParams(history.location.search).get(\"type\");\n const query = new URLSearchParams(history.location.search).get(\"query\") || \"\";\n if(searchType === \"name\"){\n setSearchName(query || \"\")\n onClickSearch(query, res.data.contacts)\n }\n })\n };\n\n const getGlobalContacts = async (value: string, type: string) => {\n const contacts = await axios.get(`${process.env.REACT_APP_REWARD_BACKEND}contacts/users`, {\n params: {\n type,\n value,\n did\n }\n });\n return contacts;\n };\n\n const filterByMyContacts = (globalContacts: any[], contactsList?: any[]) => {\n\n let myContactsList = contactsList ? contactsList : myContacts;\n console.log('MY CONTACTS LIST', myContactsList)\n return globalContacts.map(item => { myContactsList.some((contact: any) => contact[\"receivingDID\"] == item[\"receivingDID\"]) ? item[\"contact\"] = true : item[\"contact\"] = false; return item })\n };\n\n function onClickSearch(query?: string, contacts?: any[]) {\n setIsLoading(true);\n setSearchType(\"name\");\n if (searchName === \"\") {\n // setAlertOpen({ open: true, title: \"Error\", content: \"Please enter a name\" });\n setIsLoading(false);\n }\n if (searchName || query) {\n getGlobalContacts(searchName ? searchName : query || \"\", \"name\").then((res: any) => {\n if (res.data.length > 0) {\n const filtered = filterByMyContacts(res.data, contacts);\n setContacts(filtered);\n setIsLoading(false);\n }\n }).catch(e => {\n setContacts([]);\n console.log(e.response.data.error)\n // setAlertOpen({ open: true, title: \"Error\", content: e.response.data.error });\n setIsLoading(false);\n });\n }\n\n }\n\n const getContacts = async (uid: string) => {\n const contacts = await axios.get(`${process.env.REACT_APP_REWARD_BACKEND}contacts/getAllContacts`, {\n params: {\n uid\n }\n });\n return contacts;\n };\n\n function handleBack() {\n history.push(VIEWS.HOME)\n }\n\n const handleSetSearchName = (event: any) => {\n const value = event.target.value;\n setSearchName(value.trim());\n onClickSearch();\n };\n\n function onPress(receivingDID: string, contact: boolean) {\n if (contact) {\n history.push(VIEWS.CONTACTPROFILE + \"?receivingDID=\" + receivingDID + \"&from=gc&type=\" + searchType + \"&query=\" + searchName);\n } else {\n history.push(VIEWS.GLOBALCONTACTPROFILE + \"?receivingDID=\" + receivingDID + \"&from=gc&type=\" + searchType + \"&query=\" + searchName);\n }\n }\n\n function onAdd(contact: any) {\n setIsLoading(true);\n const userToken = sessionStorage.getItem('userToken')\n const decodedUserToken: any = jwt.decode(userToken as string)\n const uid = decodedUserToken[\"_id\"]\n // @ts-ignore\n addContact(uid, contact[\"name\"], contact[\"receivingDID\"], contact[\"photo\"]).then(res => {\n setIsLoading(false);\n setAlertOpen({ title: \"Success\", content: \"Contact added successfully\", open: true })\n setNoContacts(false);\n refreshList()\n }).catch((e: any) => {\n setIsLoading(false);\n setAlertOpen({ title: \"Error\", content: e.response.data.error, open: true })\n console.log(e.response.data.error)\n })\n }\n\n const refreshList = () => {\n getContacts(uid).then(res => {\n setMyContacts(res.data.contacts);\n onClickSearch(\"\", res.data.contacts)\n })\n };\n\n const addContact = async (uid: string, contactName: string, contactDID: string, photo: string) => {\n const response = await axios.put(`${process.env.REACT_APP_REWARD_BACKEND}contacts/addContact`, {\n uid,\n contactName,\n contactDID,\n photo\n });\n return response;\n };\n\n return (\n \n
\n \n
\n \n\n {noResultFound ? (

No results, Please try another name

) : (

)}\n\n {noContacts ? (

You do not have any contacts yet, Please add people from global contacts to receive and issue rewards faster

) : (

)}\n\n {\n searchName !== '' &&\n contacts.map((item: any, index: number) => (\n { onPress(item[\"receivingDID\"], item[\"contact\"]) }}\n onPress={() => { item.contact ? setAlertOpen({ title: \"Alert !\", content: \"Already a contact\", open: true }) : onAdd(item) }}\n key={index.toString()}\n />))\n }\n {\n searchName === '' &&\n filteredContacts.map((item, index) => (\n { onPress(item[\"receivingDID\"], true) }}\n key={index.toString()}\n clickable={true}\n onClick={() => { onPress(item[\"receivingDID\"], true)}}\n />\n ))\n }\n setAlertOpen({ ...alertOpen, open: false })}\n handleOpen={() => setAlertOpen({ ...alertOpen, open: true })}\n title={alertOpen.title}\n content={alertOpen.content}\n />\n
\n
\n {isLoading && }\n
\n );\n}\n\nexport default MyContacts;\n","export default __webpack_public_path__ + \"static/media/linkedinBlueColor.36b2161c.svg\";","import React, { Component } from 'react'\n\n\nimport linkedinBlueColor from '../Assets/linkedinBlueColor.svg';\nimport likedIn from '../Assets/linkedin.svg';\n\nfunction UserProfile(props: { userProfilePicture: any, userProfileName: any, linkedIn?: boolean }) {\n const openLikedIn = () => {\n // window.open(props.linkedIn, \"_blank\")\n };\n\n return (\n \n
\n \n
\n {props.linkedIn ?\n <>\n \n

{props.userProfileName}

\n \n\n : <>\n {/* */}\n

{props.userProfileName}

\n }\n\n
\n
\n
\n );\n}\n\nexport default UserProfile;\n","export default __webpack_public_path__ + \"static/media/deleteIcon.2fe2f71f.svg\";","import { createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport { RootState } from '../app/store';\n\nexport interface SignerState {\n holderDID: string;\n holderDIDError: boolean;\n holderName: string;\n holderNameError: boolean;\n holderImage: string;\n holderImageError: boolean;\n holderProfileURL: string;\n holderProfileURLError: boolean;\n issuerName: string;\n issuerNameError: boolean;\n issuerImage: string;\n issuerImageError: boolean;\n issuerProfileURL: string;\n issuerProfileURLError: boolean;\n issuedDate: string;\n issuedDateError: boolean;\n title: string;\n titleError: boolean;\n remarks: string;\n remarksError: boolean;\n rewardImage: string;\n rewardImageError: boolean;\n vc: string;\n attributes: {[key:string]: string};\n}\n\nconst initialState: SignerState = {\n holderDID: '',\n holderDIDError: false,\n holderName: '',\n holderNameError: false,\n holderImage: '',\n holderImageError: false,\n holderProfileURL: '',\n holderProfileURLError: false,\n issuerName: '',\n issuerNameError: false,\n issuerImage: '',\n issuerImageError: false,\n issuerProfileURL: '',\n issuerProfileURLError: false,\n issuedDate: `${new Date().toISOString().slice(0, 10)}`,\n issuedDateError: false,\n title: '',\n titleError: false,\n remarks: 'Rewarded for',\n remarksError: false,\n rewardImage: '',\n rewardImageError: false,\n vc: '',\n attributes: {},\n};\n\nexport const signerSlice = createSlice({\n name: 'signer',\n initialState,\n reducers: {\n setHolderDID: (state, action: PayloadAction) => {\n state.holderDID = action.payload;\n },\n setHolderName: (state, action: PayloadAction) => {\n state.holderName = action.payload;\n },\n setHolderImage: (state, action: PayloadAction) => {\n state.holderImage = action.payload;\n },\n setHolderProfileURL: (state, action: PayloadAction) => {\n state.holderProfileURL = action.payload;\n },\n setIssuerName: (state, action: PayloadAction) => {\n state.issuerName = action.payload;\n },\n setIssuerImage: (state, action: PayloadAction) => {\n state.issuerImage = action.payload;\n },\n setIssuerProfileURL: (state, action: PayloadAction) => {\n state.issuerProfileURL = action.payload;\n },\n setIssuedDate: (state, action: PayloadAction) => {\n state.issuedDate = action.payload;\n },\n setTitle: (state, action: PayloadAction) => {\n state.title = action.payload;\n },\n setTitleError: (state, action: PayloadAction) => {\n state.titleError = action.payload;\n },\n setRemarks: (state, action: PayloadAction) => {\n state.remarks = action.payload;\n },\n setRewardImage: (state, action: PayloadAction) => {\n state.rewardImage = action.payload;\n },\n setVC: (state, action: PayloadAction) => {\n state.vc = action.payload;\n },\n setHolderDIDError: (state, action: PayloadAction) => {\n state.holderDIDError = action.payload;\n },\n setHolderNameError: (state, action: PayloadAction) => {\n state.holderNameError = action.payload;\n },\n setHolderImageError: (state, action: PayloadAction) => {\n state.holderImageError = action.payload;\n },\n setHolderProfileURLError: (state, action: PayloadAction) => {\n state.holderProfileURLError = action.payload;\n },\n setIssuerNameError: (state, action: PayloadAction) => {\n state.issuerNameError = action.payload;\n },\n setIssuerImageError: (state, action: PayloadAction) => {\n state.issuerImageError = action.payload;\n },\n setIssuerProfileURLError: (state, action: PayloadAction) => {\n state.issuerProfileURLError = action.payload;\n },\n setIssuedDateError: (state, action: PayloadAction) => {\n state.issuedDateError = action.payload;\n },\n setRemarksError: (state, action: PayloadAction) => {\n state.remarksError = action.payload;\n },\n setRewardImageError: (state, action: PayloadAction) => {\n state.rewardImageError = action.payload;\n },\n setAttributes: (state, action: PayloadAction<{[key:string]: string}>) => {\n state.attributes = action.payload;\n },\n },\n});\n\nexport const { setHolderDID, setIssuedDate, setRemarks,\n setHolderProfileURL, setIssuerProfileURL, setRewardImage,\n setVC, setHolderImage, setHolderName,\n setIssuerImage, setIssuerName, setHolderDIDError,\n setHolderImageError, setHolderNameError, setHolderProfileURLError,\n setIssuedDateError, setIssuerImageError, setIssuerNameError,\n setIssuerProfileURLError, setRemarksError, setRewardImageError,\n setTitle, setTitleError, setAttributes } = signerSlice.actions;\n\nexport const _holderDID = (state: RootState) => state.signer.holderDID;\nexport const _holderName = (state: RootState) => state.signer.holderName;\nexport const _holderImage = (state: RootState) => state.signer.holderImage;\nexport const _holderProfileURL = (state: RootState) => state.signer.holderProfileURL;\nexport const _issuerName = (state: RootState) => state.signer.issuerName;\nexport const _issuerImage = (state: RootState) => state.signer.issuerImage;\nexport const _issuerProfileURL = (state: RootState) => state.signer.issuerProfileURL;\nexport const _issuedDate = (state: RootState) => state.signer.issuedDate;\nexport const _title = (state: RootState) => state.signer.title;\nexport const _remarks = (state: RootState) => state.signer.remarks;\nexport const _rewardImage = (state: RootState) => state.signer.rewardImage;\nexport const _vc = (state: RootState) => state.signer.vc;\nexport const _holderDIDError = (state: RootState) => state.signer.holderDIDError;\nexport const _holderNameError = (state: RootState) => state.signer.holderNameError;\nexport const _holderImageError = (state: RootState) => state.signer.holderImageError;\nexport const _holderProfileURLError = (state: RootState) => state.signer.holderProfileURLError;\nexport const _issuerNameError = (state: RootState) => state.signer.issuerNameError;\nexport const _issuerImageError = (state: RootState) => state.signer.issuerImageError;\nexport const _issuerProfileURLError = (state: RootState) => state.signer.issuerProfileURLError;\nexport const _issuedDateError = (state: RootState) => state.signer.issuedDateError;\nexport const _titleError = (state: RootState) => state.signer.titleError;\nexport const _remarksError = (state: RootState) => state.signer.remarksError;\nexport const _rewardImageError = (state: RootState) => state.signer.rewardImageError;\nexport const _attributes = (state: RootState) => state.signer.attributes;\n\n\nexport default signerSlice.reducer;\n","import React, { Component} from 'react'\n\nexport default function PopupQuestion(props: {onClickConfirm: any, onClickCancel: any, headingText: any, bodyMessage: any, buttonTxtConfirm: any, buttonTxtCancel: any,}){\n\n return(\n \n
\n
\n
\n

{props.headingText}

\n
\n

{props.bodyMessage}

\n \n \n
\n
\n
\n );\n}\n","import React, { useEffect } from 'react'\n\nimport '../Style/App.scss'\nimport '../Style/Responsive.scss'\n\nimport Boxbtn from '../components/Boxbtn'\nimport UserProfile from '../components/UserProfile'\nimport TopNavigationHeader from '../components/TopNavigationHeader'\n\nimport arrowAccept from '../Assets/arrowAccept.svg';\nimport arrowIssue from '../Assets/arrowIssue.svg';\nimport deleteIcon from '../Assets/deleteIcon.svg';\nimport userProfile from '../Assets/userProfile.png';\nimport jwt from 'jsonwebtoken'\n\nimport { useState } from \"react\";\nimport { useHistory } from \"react-router\";\nimport axios from \"axios\";\nimport { VIEWS } from \"../utils\";\nimport { useAppDispatch } from '../app/hooks'\nimport { setHolderDID, setHolderImage, setHolderName } from '../redux/signerSlice'\nimport PopupQuestion from \"../components/PopupQuestion\";\nimport Alert from \"../components/Alert\";\nimport Spinner from \"../components/Spinner\";\n\n\nfunction ContactsProfile() {\n const history = useHistory()\n const [contact, setContact] = useState(null);\n const dispatch = useAppDispatch()\n const [popUp, setPopUp] = useState(false)\n const [alertOpen, setAlertOpen] = useState({ open: false, title: '', content: '' })\n const [isLoading, setIsLoading] = useState(false)\n const receivingDID = new URLSearchParams(history.location.search).get(\"receivingDID\");\n const searchType = new URLSearchParams(history.location.search).get(\"type\");\n const success = new URLSearchParams(history.location.search).get(\"success\");\n const query = new URLSearchParams(history.location.search).get(\"query\");\n const from = new URLSearchParams(history.location.search).get(\"from\");\n\n useEffect(() => {\n setIsLoading(true)\n if (receivingDID && receivingDID !== \"undefined\") {\n getContact(receivingDID).then(res => {\n console.log(res.data);\n setContact(res.data);\n setIsLoading(false)\n if (success === \"true\" && from === \"gc\") {\n setAlertOpen({ open: true, title: 'Success', content: 'Contact added successfully' })\n }\n })\n }\n\n }, []);\n\n const getContact = async (receivingDID: string) => {\n const contact = await axios.get(`${process.env.REACT_APP_REWARD_BACKEND}contacts/getContact`, {\n params: {\n receivingDID\n }\n });\n return contact;\n };\n\n const removeContact = async (uid: string, contactName: string, contactDID: string) => {\n const contact = await axios.delete(`${process.env.REACT_APP_REWARD_BACKEND}contacts/removeContact`, {\n data: {\n uid,\n contactName,\n contactDID\n }\n });\n return contact;\n };\n\n function onClickRemove() {\n setIsLoading(true)\n const userToken = sessionStorage.getItem('userToken')\n const decodedUserToken: any = jwt.decode(userToken as string)\n const uid = decodedUserToken[\"_id\"]\n // @ts-ignore\n removeContact(uid, contact.name, contact.receivingDID).then((res: any) => {\n console.log('REMOVE RESPONSE', res);\n if (res.data[\"message\"] === \"Contact Removed\") {\n history.push(VIEWS.MYCONTACT);\n }\n setIsLoading(false)\n })\n\n };\n\n function handleBack() {\n // if (from === \"gc\") {\n // history.push(VIEWS.GLOBALCONTACTS + \"?type=\" + searchType + \"&query=\" + query)\n // } else {\n // history.goBack()\n // }\n history.goBack();\n }\n\n function issueReward() {\n // @ts-ignore\n dispatch(setHolderDID(contact.receivingDID))\n // @ts-ignore\n dispatch(setHolderName(contact.name))\n // @ts-ignore\n dispatch(setHolderImage(contact.photo))\n history.push(VIEWS.ISSUE)\n }\n\n function requestReward() {\n setIsLoading(true)\n const userToken = sessionStorage.getItem('userToken')\n const decodedUserToken: any = jwt.decode(userToken as string)\n const receiverReceivingDID = decodedUserToken.receivingDID\n\n axios.put(`${process.env.REACT_APP_REWARD_BACKEND}rewardRequest`,\n {\n // @ts-ignore\n issuerReceivingDID: contact.receivingDID,\n receiverReceivingDID,\n // @ts-ignore\n receiverName: decodedUserToken.name,\n // @ts-ignore\n receiverImage: decodedUserToken.photo,\n }).then((res) => {\n setIsLoading(false)\n setAlertOpen({ title: \"Success\", content: \"Reward Request sent successfully.\", open: true })\n console.log(res.data);\n }).catch(() => { setAlertOpen({ title: \"Reward Request Error\", content: \"Reward Request Unsuccessful\", open: false }) })\n //setIsLoading(false)\n }\n\n\n return (\n \n
\n \n
\n {\n contact ? (\n <>\n
\n \n
\n\n \n
\n \n \n
\n \n ) : null\n }\n
\n
\n {\n popUp ? { onClickRemove() }} onClickCancel={() => { setPopUp(false) }} headingText={\"Alert\"} bodyMessage={\"Are you sure you want to remove this contact ?\"} buttonTxtCancel={\"NO\"} buttonTxtConfirm={\"YES\"} />\n : null\n\n }\n {isLoading && }\n setAlertOpen({ ...alertOpen, open: false })}\n handleOpen={() => setAlertOpen({ ...alertOpen, open: true })}\n title={alertOpen.title}\n content={alertOpen.content}\n />\n
\n );\n}\n\nexport default ContactsProfile;\n","export default __webpack_public_path__ + \"static/media/addCircle.2b97ac43.svg\";","import React, { useEffect } from 'react'\n\nimport '../Style/App.scss'\nimport '../Style/Responsive.scss'\n\nimport Boxbtn from '../components/Boxbtn'\nimport UserProfile from '../components/UserProfile'\nimport TopNavigationHeader from '../components/TopNavigationHeader'\n\nimport arrowAccept from '../Assets/arrowAccept.svg';\nimport arrowIssue from '../Assets/arrowIssue.svg';\nimport userProfile from '../Assets/userProfile.png';\nimport addCircle from '../Assets/addCircle.svg';\nimport addDone from '../Assets/addDone.svg';\n\nimport { useState } from \"react\";\nimport { useHistory } from \"react-router\";\nimport axios from \"axios\";\nimport jwt from 'jsonwebtoken'\nimport { VIEWS } from \"../utils\";\nimport { useAppDispatch } from '../app/hooks'\nimport { setHolderDID, setHolderName, setHolderImage } from '../redux/signerSlice'\nimport Spinner from \"../components/Spinner\";\nimport Alert from \"../components/Alert\";\n\n\nfunction GlobalContactProfile() {\n const history = useHistory()\n const [contact, setContact] = useState(null)\n const dispatch = useAppDispatch()\n const [isLoading, setIsLoading] = useState(false)\n const [alertOpen, setAlertOpen] = useState({ open: false, title: '', content: '' })\n\n useEffect(() => {\n\n const receivingDID = new URLSearchParams(history.location.search).get(\"receivingDID\");\n if (receivingDID && receivingDID !== \"undefined\") {\n getContact(receivingDID).then(res => {\n setContact(res.data);\n })\n }\n }, []);\n\n const getContact = async (receivingDID: string) => {\n const contact = await axios.get(`${process.env.REACT_APP_REWARD_BACKEND}contacts/users`, {\n params: {\n type: \"did\",\n value: receivingDID\n }\n });\n return contact;\n };\n\n function issueReward() {\n // @ts-ignore\n dispatch(setHolderDID(contact.receivingDID))\n // @ts-ignore\n dispatch(setHolderName(contact.name))\n // @ts-ignore\n dispatch(setHolderImage(contact.photo)) //update\n history.push(VIEWS.ISSUE)\n }\n\n function acceptReward() {\n console.log('Clicked successfully.');\n }\n\n function handleBack() {\n const searchType = new URLSearchParams(history.location.search).get(\"type\");\n const query = new URLSearchParams(history.location.search).get(\"query\");\n history.push(VIEWS.MYCONTACT + \"?type=\" + searchType + \"&query=\" + query)\n }\n\n function onAdd() {\n setIsLoading(true);\n const userToken = sessionStorage.getItem('userToken')\n const decodedUserToken: any = jwt.decode(userToken as string)\n const uid = decodedUserToken[\"_id\"]\n const searchType = new URLSearchParams(history.location.search).get(\"type\");\n const query = new URLSearchParams(history.location.search).get(\"query\");\n // @ts-ignore\n addContact(uid, contact[\"name\"], contact[\"receivingDID\"], contact[\"photo\"]).then(res => {\n setIsLoading(false);\n // @ts-ignore\n history.push(VIEWS.CONTACTPROFILE + \"?receivingDID=\" + contact[\"receivingDID\"]+ \"&from=gc&success=true&type=\" + searchType + \"&query=\" + query);\n }).catch(e => {\n setAlertOpen({open: true, title: \"Error\", content: e.response.data.error})\n setIsLoading(false);\n });\n }\n\n const addContact = async (uid: string, contactName: string, contactDID: string, photo: string) => {\n const response = await axios.put(`${process.env.REACT_APP_REWARD_BACKEND}contacts/addContact`, {\n uid,\n contactName,\n contactDID,\n photo\n });\n return response;\n };\n\n return (\n \n
\n \n
\n {\n contact ?\n <>\n
\n \n
\n \n
\n \n \n
\n : null\n }\n\n
\n
\n setAlertOpen({ ...alertOpen, open: false })}\n handleOpen={() => setAlertOpen({ ...alertOpen, open: true })}\n title={alertOpen.title}\n content={alertOpen.content}\n />\n {isLoading && }\n
\n );\n}\n\nexport default GlobalContactProfile;\n","export default \"data:image/png;base64,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\"","import React from \"react\";\n\nexport default function ContactListItem(props: {\n userPropic: any,\n userName: any,\n actionBtn: any,\n blueTxt: any,\n onAccept: any\n onDeny: any\n}) {\n return (\n \n
\n
\n \n
\n

{props.userName}

\n {props.blueTxt ? (

{props.blueTxt}

) : (

)}\n
\n
\n
\n \n
\n
\n
\n );\n}\n","import React, { useEffect } from 'react'\nimport jwt from 'jsonwebtoken'\n\nimport '../Style/App.scss'\nimport '../Style/Responsive.scss'\n\nimport ContactListItem from '../components/ContactListItem'\nimport TopNavigationHeader from '../components/TopNavigationHeader'\nimport Button from '../components/Button'\n\nimport closeIcon from '../Assets/closeIcon.svg';\nimport u1 from '../Assets/u1.png';\n\nimport { useState } from \"react\";\nimport { useHistory } from 'react-router'\nimport { VIEWS } from '../utils'\nimport axios, { AxiosRequestConfig } from 'axios'\nimport deleteIcon from '../Assets/deleteIcon.svg';\nimport { useAppDispatch } from '../app/hooks'\nimport { setHolderDID, setHolderImage, setHolderName } from '../redux/signerSlice'\nimport RewardRequestItem from '../components/RewardRequestItem'\nimport Spinner from \"../components/Spinner\";\nimport Alert from \"../components/Alert\";\n\n\nfunction ReceivedRequests() {\n\n const history = useHistory()\n const dispatch = useAppDispatch()\n const [requests, setRequests] = useState([])\n const [isLoading, setIsLoading] = useState(false)\n const [alertOpen, setAlertOpen] = useState({ open: false, title: '', content: ''})\n\n\n useEffect(() => {\n setIsLoading(true);\n const userToken = sessionStorage.getItem('userToken')\n getRequests(userToken as string).then(res => {\n setRequests(res.data.requests)\n console.log(res.data.requests);\n if(res.data.requests.length === 0){\n setAlertOpen({ open: true, title: 'Alert', content: 'You don\\'t have new rewards request.'});\n }\n // setContacts(res.data.contacts);\n // setFilteredContacts(res.data.contacts);\n setIsLoading(false);\n }).catch((error) => {\n console.log(error)\n setIsLoading(false)\n })\n }, []);\n\n const getRequests = async (token: string) => {\n const contacts = await axios.post(`${process.env.REACT_APP_REWARD_BACKEND}rewardRequest`, {\n token\n });\n return contacts;\n };\n\n function handleBack() {\n history.push(VIEWS.HOME)\n }\n\n function handleDone() {\n history.push(VIEWS.HOME)\n }\n\n function issueReward() {\n history.push(VIEWS.ISSUE)\n }\n\n function onAccept(idx: number) {\n const { name, receivingDID, photo } = requests[idx]\n dispatch(setHolderDID(receivingDID))\n dispatch(setHolderImage(photo))\n dispatch(setHolderName(name))\n history.push(VIEWS.ISSUE + '?requestid=' + requests[idx]['id'] )\n }\n\n function onDeny(idx: number) {\n const { receivingDID,id } = requests[idx]\n const token = sessionStorage.getItem('userToken')\n axios.delete(`${process.env.REACT_APP_REWARD_BACKEND}rewardRequest`, {\n data: {token, receiverDID: receivingDID, id:id}\n }).then(res => {\n window.location.reload()\n })\n }\n\n return (\n \n
\n \n
\n
\n {\n requests.map((item, index) => (\n { onAccept(index) }}\n onDeny ={() => { onDeny(index) }}\n blueTxt=\"Sent you a reward request\"\n key={index.toString()} />\n ))\n }\n
\n\n
\n
\n\n setAlertOpen({ ...alertOpen, open: false })}\n handleOpen={() => setAlertOpen({ ...alertOpen, open: true })}\n title={alertOpen.title}\n content={alertOpen.content}\n />\n
\n
\n {isLoading && }\n
\n );\n}\n\nexport default ReceivedRequests;\n","import { createStyles, FormControl, InputBase, makeStyles, Theme, withStyles } from \"@material-ui/core\";\n\nconst CustomInput = withStyles((theme: Theme) =>\n createStyles({\n input: {\n height: '48px',\n background: '#FFFFFF',\n border: '0.5px solid #e5e5e5',\n boxSizing: 'border-box',\n borderRadius: '8px',\n padding: '9px 12px 8px 12px',\n fontFamily: 'Poppins',\n fontSize: '13px'\n },\n }),\n)(InputBase);\n\nconst useStyles = makeStyles((theme) => ({\n label: {\n fontWeight: 'bold',\n fontSize: '11px',\n lineHeight: '16px',\n color: '#24C3B5',\n marginTop: '11px',\n marginBottom: '6px',\n fontFamily: 'Poppins'\n },\n formControlWrapper: {\n width: '100%',\n display: 'flex',\n marginBottom: 5\n },\n error: {\n color: 'red',\n margin: 1\n },\n hidden: {\n display: 'none'\n }\n}))\n\nexport default function CustomTextField(props: { multiline?: boolean, type?: string, value?: string, id?: string, onChange?: any, helperText?: string, fullWidth?: boolean, placeholder?: string, label?: string, error?: boolean, endAdornment?:any }) {\n\n const classes = useStyles()\n return (\n \n

\n {props.label}\n

\n \n

{props.helperText}

\n
\n )\n}\n","import { IconButton, makeStyles } from \"@material-ui/core\"\nimport { ReactComponent as RemoveButton } from '../SVGs/close.svg'\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n position: 'relative',\n justifyContent: 'center',\n background: '#FFFFFF',\n border: 'none',\n boxSizing: 'border-box',\n borderRadius: '8px',\n height: '206px',\n margin: '30px 0px',\n padding: '35px 0px',\n cursor: 'pointer'\n },\n label: {\n fontWeight: 'bold',\n fontSize: '0.9rem',\n lineHeight: '1.5rem',\n color: '#161719'\n },\n labelWrapper: {\n width: '100%'\n },\n pointer: {\n cursor: 'pointer',\n '&:hover': {\n },\n },\n removeIcon: {\n position: 'absolute',\n height: 1,\n width: 1,\n backgroundColor:'#fff',\n margin: 10,\n top: '0.3rem',\n right: 0\n },\n uploadHint: {\n fontSize: '12px',\n lineHeight: '21px',\n textAlign: 'center',\n letterSpacing: '-0.32px',\n color: '#757575',\n fontFamily: 'Poppins',\n },\n placeholderImage:{\n height: 45,\n width: 45\n },\n rewardImage:{\n width:'auto',\n height:200\n }\n}))\n\nexport default function ImageUploadField(props: { id: string,onClick?:any, handleImageData?: any, imageData: any, accept: string, caption?: string, removeCallback?: any }) {\n\n const classes = useStyles()\n\n return (\n
props.onClick()}>\n
\n \n
\n {/* */}\n \n \n {props.imageData && props.removeCallback && \n {/* */}\n x\n }\n
\n )\n}","\nexport default function SectionHeader(props: { title: string }) {\n\n return (\n
\n

{props.title}

\n
\n )\n}","import { IconButton, makeStyles } from \"@material-ui/core\"\nimport { ReactComponent as RemoveButton } from './../SVGs/close.svg'\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n display: 'flex',\n flexDirection: 'column',\n position: 'relative',\n width: '100px',\n height: '100px'\n },\n label: {\n fontWeight: 'bold',\n fontSize: '0.9rem',\n lineHeight: '1.5rem',\n color: '#161719'\n },\n pointer: {\n cursor: 'pointer',\n '&:hover': {\n\n },\n },\n removeIcon: {\n position: 'absolute',\n height: 1,\n width: 1,\n backgroundColor:'#fff',\n top: 2,\n right: 2,\n fontSize: '1rem',\n zIndex: 100,\n cursor: 'pointer',\n '&:hover': {\n backgroundColor:'#fff',\n },\n },\n\n placeholder: {\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n flexDirection: 'column',\n height: 100,\n width: 100,\n borderRadius: 10,\n backgroundColor: 'white'\n },\n placeholderTxt:{\n fontFamily: 'Poppins',\n fontStyle: 'normal',\n fontWeight: 'normal',\n fontSize: '6px',\n lineHeight: '9px',\n color: '#A8A4A4',\n position: 'absolute',\n marginTop: '85px',\n zIndex: 0\n },\n placeholderImage: {\n height: 24,\n width: 24\n },\n error: {\n color: 'red',\n margin: 1\n },\n hidden: {\n display: 'none'\n }\n}))\n\nexport default function ProfileImageUploadField(props: { id: string, handleImageData: any, imageData: any, accept: string, caption?: string, removeCallback?: any, error?: boolean, helperText?: string }) {\n\n const classes = useStyles()\n\n return (\n
\n \n \n \n \n {props.removeCallback && props.imageData && \n {/* */}\n x\n }\n

{props.helperText}

\n
\n )\n}","export default __webpack_public_path__ + \"static/media/AddAttribute.405229ef.svg\";","export default __webpack_public_path__ + \"static/media/attributeDelete.5ea97c16.svg\";","export default __webpack_public_path__ + \"static/media/attributeEdit.60ca56ec.svg\";","import React, { useState } from 'react'\nimport attributeDelete from '../Assets/attributeDelete.svg';\nimport attributeEdit from '../Assets/attributeEdit.svg';\n\n\nexport default function AddSectionAttribute(props: { attributeList: any, updateAttribute: any, removeAttribute: any, setAddAttributePopUpOpen?: any }) {\n\n return \n {Object.keys(props.attributeList).map((key: string, index: number) => (\n \n
\n
{key}
\n
{props.attributeList[key]}
\n
\n \n \n
\n
\n
\n ))\n }\n
\n\n}\n","import { Dialog } from \"@material-ui/core\";\nimport { useState, useRef } from \"react\";\n\nexport default function AddAttributePopUp(props: { id?: string, title?: string, content?: string, open: boolean, handleOpen?: any, handleClose?: any, handleAction?:any, handleUpdate?:any}) {\n \n\n const [inputAttribute, setInputAttribute] = useState('')\n const [inputValue, setInputValue] = useState('')\n const inputRef = useRef(null);\n\n\n const handleChangeAttribute = (e:any) => {\n setInputAttribute(e.target.value)\n }\n\n const handleChangeValue = (e:any) => {\n setInputValue(e.target.value)\n }\n\n\n const handleSubmit = (e:any) => {\n e.preventDefault();\n props.handleAction({\n key: inputAttribute,\n value: inputValue\n });\n setInputAttribute('')\n setInputValue('')\n props.handleClose()\n }\n\n\n\n return (\n \n \n
\n
\n
\n

New Attribute

\n
\n

Please enter an Attribute and Value

\n
\n \n
\n \n
\n
\n \n \n
\n
\n
\n\n \n )\n}","import { Dialog } from \"@material-ui/core\";\nimport { useState, useRef, useEffect } from \"react\";\nimport { useAppSelector } from \"../app/hooks\";\nimport { _attributes } from \"../redux/signerSlice\";\n\nexport default function EditAttributePopUp(props: { id?: string, title?: string, content?: string, open: boolean, handleOpen?: any, handleClose?: any, handleAction?:any}) {\n \n const [inputKey, setInputKey] = useState('')\n const [inputValue, setInputValue] = useState('')\n const inputRef = useRef(null);\n const attributes = useAppSelector(_attributes)\n\n useEffect(() => {\n if(props.content){\n setInputKey(props.content)\n setInputValue(attributes[props.content])\n } \n }, [attributes, props.content])\n\n const handleChangeAttribute = (e:any) => {\n setInputKey(e.target.value)\n }\n\n const handleChangeValue = (e:any) => {\n setInputValue(e.target.value)\n }\n\n const handleEdit = (e:any) => {\n e.preventDefault();\n props.handleAction(inputKey, inputValue);\n setInputKey('')\n setInputValue('')\n props.handleClose()\n }\n\n return (\n \n \n
\n
\n
\n

Edit Value

\n
\n

Enter the new value

\n
\n {/* */}\n
\n \n
\n
\n \n \n
\n
\n
\n\n \n )\n}","import React, { ChangeEvent, useState, useEffect } from 'react'\nimport { Claims, issue } from '@zedeid-sdk/sd-vc-lib'\n\nimport { useAppSelector, useAppDispatch } from '../app/hooks';\nimport { setHolderDID, setRewardImage, setIssuedDate, setRemarks, _holderDID, _holderProfileURL, _rewardImage, _issuedDate, _remarks, setHolderProfileURL, setVC, _issuerProfileURL, setIssuerProfileURL, _holderName, _holderImage, setHolderName, setHolderImage, setHolderDIDError, setHolderProfileURLError, setHolderNameError, setIssuerProfileURLError, setHolderImageError, setRemarksError, setIssuedDateError, setRewardImageError, _holderDIDError, _holderImageError, _holderNameError, _holderProfileURLError, _issuedDateError, _issuerImageError, _issuerNameError, _issuerProfileURLError, _remarksError, _rewardImageError, _title, _titleError, setTitle, setTitleError, _attributes, setAttributes } from '../redux/signerSlice';\nimport { VIEWS } from '../utils';\nimport axios, { AxiosResponse } from 'axios';\nimport CustomTextField from '../components/CustomTextField';\nimport ImageUploadField from '../components/ImageUploadField'\nimport { _image, _rewardingPrivateKey, _name } from '../redux/identitySlice'\nimport { useHistory } from 'react-router-dom'\n\nimport '../Style/App.scss'\nimport '../Style/Responsive.scss'\n\nimport TopNavigationHeader from '../components/TopNavigationHeader'\nimport Button from '../components/Button'\nimport SectionHeader from '../components/SectionHeader';\nimport Spinner from '../components/Spinner';\nimport ProfileImageUploadField from '../components/ProfileImageUploadField';\nimport Alert from '../components/Alert';\nimport jwt from \"jsonwebtoken\";\nimport profileImageSample from '../Assets/defaultUser.jpg';\nimport AddAttribute from '../Assets/AddAttribute.svg';\nimport AddSectionAttribute from '../components/AddSectionAttribute'\nimport AddAttributePopUp from '../components/AddAttributePopUp'\nimport EditAttributePopUp from '../components/EditAttributePopUp';\n\n\nexport default function PrepareReward() {\n\n const dispatch = useAppDispatch();\n const history = useHistory()\n const holderDID = useAppSelector(_holderDID);\n const holderName = useAppSelector(_holderName);\n const holderImage = useAppSelector(_holderImage);\n const holderProfileURL = useAppSelector(_holderProfileURL);\n const issuerPrivateKey = useAppSelector(_rewardingPrivateKey);\n const issuerName = useAppSelector(_name);\n const issuerImage = useAppSelector(_image);\n const issuerProfileURL = useAppSelector(_issuerProfileURL);\n const issuedDate = useAppSelector(_issuedDate);\n const title = useAppSelector(_title)\n const remarks = useAppSelector(_remarks);\n const rewardImage = useAppSelector(_rewardImage);\n const [isLoading, setIsLoading] = useState(false);\n const profileImage = useAppSelector(_image)\n const attributes = useAppSelector(_attributes)\n\n\n const holderDIDError = useAppSelector(_holderDIDError);\n const holderNameError = useAppSelector(_holderNameError);\n const holderImageError = useAppSelector(_holderImageError);\n const holderProfileURLError = useAppSelector(_holderProfileURLError);\n const issuerProfileURLError = useAppSelector(_issuerProfileURLError);\n const issuedDateError = useAppSelector(_issuedDateError);\n const titleError = useAppSelector(_titleError);\n const remarksError = useAppSelector(_remarksError);\n\n const userToken = sessionStorage.getItem('userToken')\n const decodedUserToken: any = jwt.decode(userToken as string)\n const uid = decodedUserToken.receivingDID;\n const id = new URLSearchParams(history.location.search).get(\"requestid\");\n\n const [alertOpen, setAlertOpen] = useState({ open: false, title: '', content: '' })\n\n useEffect(() => {\n const savedAttributes = sessionStorage.getItem(\"attributes\");\n let attributes;\n if (savedAttributes) {\n attributes = JSON.parse(savedAttributes);\n } else {\n attributes = {};\n }\n dispatch(setAttributes(attributes))\n }, []);\n\n const [addAttributePopUpOpen, setAddAttributePopUpOpen] = useState({ open: false, title: '', content: '' });\n const [editAttributePopUpOpen, setEditAttributePopUpOpen] = useState({ open: false, title: '', content: '' });\n // const attributesValues = JSON.stringify(attributes);\n\n function handelHolderDID(event: ChangeEvent) {\n dispatch(setHolderDID(event.target.value))\n }\n\n function handleHolderProfileURL(event: ChangeEvent) {\n dispatch(setHolderProfileURL(event.target.value))\n }\n\n function handleHolderName(event: ChangeEvent) {\n dispatch(setHolderName(event.target.value))\n }\n\n function handleHolderImage(event: ChangeEvent) {\n setIsLoading(true)\n const reader = new FileReader();\n if (event.target.files && event.target.files[0]) {\n const img = event.target.files[0];\n reader.onloadend = () => {\n const imageData: string = reader.result as string\n dispatch(setHolderImage(imageData))\n setIsLoading(false)\n }\n reader.readAsDataURL(img);\n }\n setIsLoading(false)\n };\n\n function handleIssuerProfileURL(event: ChangeEvent) {\n dispatch(setIssuerProfileURL(event.target.value))\n }\n\n function handleIssuedDate(event: ChangeEvent) {\n dispatch(setIssuedDate(event.target.value))\n }\n\n function handleTitle(event: ChangeEvent) {\n dispatch(setTitle(event.target.value))\n }\n\n function handleRemarks(event: ChangeEvent) {\n dispatch(setRemarks(event.target.value))\n }\n\n\n function removeRewardImage() {\n dispatch(setRewardImage(''))\n }\n\n function removeHolderImage() {\n dispatch(setHolderImage(''))\n }\n\n\n function handleGenerate() {\n if (validateInputs()) {\n dispatch(setHolderDIDError(false))\n dispatch(setHolderNameError(false))\n dispatch(setHolderImageError(false))\n dispatch(setHolderProfileURLError(false))\n dispatch(setIssuerProfileURLError(false))\n dispatch(setTitleError(false))\n dispatch(setRemarksError(false))\n dispatch(setIssuedDateError(false))\n dispatch(setRewardImageError(false))\n\n setIsLoading(true)\n axios.get(`${process.env.REACT_APP_RESOLVER}${holderDID}`).then(async (res: AxiosResponse) => {\n const holderPublicKey = res.data.didDocument.authentication[0].publicKey\n const claims: Claims = {\n rewardBadge: rewardImage,\n remarks,\n title,\n issuedDate,\n issuerName,\n issuerImage,\n issuerProfileURL,\n holderName,\n holderImage,\n holderProfileURL,\n attributesValues : JSON.stringify(attributes)\n }\n try {\n const vc = issue(issuerPrivateKey, claims, holderPublicKey) as any\n setIsLoading(false)\n dispatch(setVC(JSON.stringify(vc)))\n history.push(id ? VIEWS.GENREWARDPREVIEW + '?requestid=' + id : VIEWS.GENREWARDPREVIEW)\n sessionStorage.removeItem('attributes');\n setAlertOpen({ open: true, title: \"Error\", content: \"Reward generate successfully.\" })\n } catch (err: any) {\n setAlertOpen({ open: true, title: \"Error\", content: \"Signing error. Try again\" })\n setIsLoading(false)\n }\n }).catch(err => {\n if (err.response && err.response.data) {\n setAlertOpen({ open: true, title: \"Error\", content: err.response.data.error })\n } else {\n setAlertOpen({ open: true, title: \"Error\", content: \"Unknown error. Try again\" })\n }\n setIsLoading(false)\n })\n } else {\n setAlertOpen({ open: true, title: \"Enter all fields\", content: \"Enter all fields and images to issue a reward\" })\n dispatch(setHolderDIDError(holderDID === \"\"))\n dispatch(setHolderNameError(holderName === \"\"))\n dispatch(setHolderImageError(holderImage === \"\"))\n dispatch(setHolderProfileURLError(holderProfileURL === \"\"))\n dispatch(setIssuerProfileURLError(issuerProfileURL === \"\"))\n dispatch(setTitleError(title === \"\"))\n dispatch(setRemarksError(remarks === \"\"))\n dispatch(setIssuedDateError(issuedDate === \"\"))\n dispatch(setRewardImageError(rewardImage === \"\"))\n }\n }\n\n function handleDone() {\n try {\n sessionStorage.removeItem('attributes');\n } catch (error) {\n }\n dispatch(setHolderDIDError(false))\n dispatch(setHolderNameError(false))\n dispatch(setHolderImageError(false))\n dispatch(setHolderProfileURLError(false))\n dispatch(setIssuerProfileURLError(false))\n dispatch(setTitleError(false))\n dispatch(setRemarksError(false))\n dispatch(setIssuedDateError(false))\n dispatch(setRewardImageError(false))\n dispatch(setHolderDID(''))\n dispatch(setHolderProfileURL(''))\n dispatch(setHolderName(''))\n dispatch(setHolderImage(''))\n dispatch(setIssuerProfileURL(''))\n dispatch(setRemarks(''))\n dispatch(setRewardImage(''))\n history.push(VIEWS.HOME)\n }\n\n function handleBack() {\n try {\n sessionStorage.removeItem('attributes');\n } catch (error) {\n }\n dispatch(setHolderDIDError(false))\n dispatch(setHolderNameError(false))\n dispatch(setHolderImageError(false))\n dispatch(setHolderProfileURLError(false))\n dispatch(setIssuerProfileURLError(false))\n dispatch(setTitleError(false))\n dispatch(setRemarksError(false))\n dispatch(setIssuedDateError(false))\n dispatch(setRewardImageError(false))\n dispatch(setHolderDID(''))\n dispatch(setHolderProfileURL(''))\n dispatch(setHolderName(''))\n dispatch(setHolderImage(''))\n dispatch(setIssuerProfileURL(''))\n dispatch(setRemarks(''))\n dispatch(setRewardImage(''))\n history.goBack()\n }\n\n function handleCancel() {\n try {\n sessionStorage.removeItem('attributes');\n } catch (error) {\n }\n dispatch(setHolderDIDError(false))\n dispatch(setHolderNameError(false))\n dispatch(setHolderImageError(false))\n dispatch(setHolderProfileURLError(false))\n dispatch(setIssuerProfileURLError(false))\n dispatch(setTitleError(false))\n dispatch(setRemarksError(false))\n dispatch(setIssuedDateError(false))\n dispatch(setRewardImageError(false))\n dispatch(setHolderDID(''))\n dispatch(setHolderProfileURL(''))\n dispatch(setHolderName(''))\n dispatch(setHolderImage(''))\n dispatch(setIssuerProfileURL(''))\n dispatch(setRemarks(''))\n dispatch(setRewardImage(''))\n history.push(VIEWS.HOME)\n }\n\n function validateInputs(): boolean {\n if (\n holderDID === \"\" ||\n holderName === \"\" ||\n holderImage === \"\" ||\n holderProfileURL === \"\" ||\n issuerPrivateKey === \"\" ||\n issuedDate === \"\" ||\n issuerProfileURL === \"\" ||\n title === \"\" ||\n remarks === \"\"\n ) {\n return false\n } else {\n return true\n }\n }\n\n function goToBagesTemplates() {\n history.push(VIEWS.BADGES)\n }\n\n function addSection() {\n if (Object.keys(attributes).length > 9) {\n setAddAttributePopUpOpen({ ...addAttributePopUpOpen, open: false })\n setAlertOpen({ open: true, title: \"Alert\", content: \"You added maximum number of attributes.\" })\n } else {\n setAddAttributePopUpOpen({ ...addAttributePopUpOpen, open: true })\n }\n }\n\n function openEditPopUp(key: string){\n setEditAttributePopUpOpen({ ...addAttributePopUpOpen, open: true, content: key })\n }\n\n const addAttribute = (attribute: any) => {\n if (!attribute.key || /^\\s*$/.test(attribute.key) || !attribute.value || /^\\s*$/.test(attribute.value)) {\n setAlertOpen({ open: true, title: \"Alert\", content: \"Please enter the all fields.\" })\n return\n }\n\n console.log(attribute.key !== 'undefined');\n \n if(attributes.key !== 'undefined'){\n setAlertOpen({ open: true, title: \"Alert\", content: \"Attribute already exists.\" })\n }\n\n const newAttributes = {...attributes, [attribute.key]: attribute.value}\n dispatch(setAttributes(newAttributes))\n sessionStorage.setItem(\"attributes\", JSON.stringify(newAttributes));\n }\n \n\n const updateAttribute = (key: string, newValue: string) => {\n if (!key || /^\\s*$/.test(newValue)) {\n return;\n }\n const newAttributes = {...attributes, [key]:newValue}\n dispatch(setAttributes(newAttributes));\n sessionStorage.setItem(\"attributes\", JSON.stringify(newAttributes));\n }\n\n const removeAttribute = (id: string) => {\n let newAttributes = {...attributes}\n delete newAttributes[id]\n dispatch(setAttributes(newAttributes));\n sessionStorage.setItem(\"attributes\", JSON.stringify(newAttributes));\n }\n\n\n return (\n \n
\n \n\n
\n\n
\n \n
\n
\n \n
\n
\n { }}\n fullWidth\n helperText=\"Enter issuer name\"\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 {/* Add attribute codes goes from here */}\n \n
\n \n \n
\n
\n\n
\n \n \n \n
\n
\n\n setAlertOpen({ ...alertOpen, open: false })}\n handleOpen={() => setAlertOpen({ ...alertOpen, open: true })}\n title={alertOpen.title}\n content={alertOpen.content}\n />\n setAddAttributePopUpOpen({ ...addAttributePopUpOpen, open: false })}\n handleOpen={() => setAddAttributePopUpOpen({ ...addAttributePopUpOpen, open: true })}\n title={addAttributePopUpOpen.title}\n content={addAttributePopUpOpen.content}\n handleAction={addAttribute}\n />\n setEditAttributePopUpOpen({ ...editAttributePopUpOpen, open: false })}\n handleOpen={() => setEditAttributePopUpOpen({ ...editAttributePopUpOpen, open: true })}\n title={editAttributePopUpOpen.title}\n content={editAttributePopUpOpen.content || \"\"}\n handleAction={updateAttribute}\n />\n
\n
\n {isLoading && }\n
\n )\n}\n\n","import React, { Component } from 'react'\n\nfunction AcceptRewardListItem(props: {userPropic: any, rewardDesc: any, role: any, actionBtn: any, blueTxt: any, userimg: any, date: any, onSelect?:any, onCancel?:any}){\n return(\n \n
\n
\n \n
\n

{props.rewardDesc}

\n

{props.role}

\n
\n

{props.blueTxt}

\n \n
\n
\n
\n
\n \n
\n

{props.date}

\n
\n
\n );\n}\n\nexport default AcceptRewardListItem;\n","export default __webpack_public_path__ + \"static/media/closeIcon.9b91a8f2.svg\";","import React, {useEffect} from 'react'\n\nimport '../Style/App.scss'\nimport '../Style/Responsive.scss'\n\nimport AcceptRewardListItem from '../components/AcceptRewardListItem'\nimport TopNavigationHeader from '../components/TopNavigationHeader'\nimport Button from '../components/Button'\n\nimport closeIcon from '../Assets/closeIcon.svg';\n\nimport { useState } from \"react\";\nimport { useHistory } from 'react-router'\nimport { VIEWS } from '../utils'\nimport axios from \"axios\";\nimport jwt from \"jsonwebtoken\";\nimport PopupQuestion from \"../components/PopupQuestion\";\nimport Spinner from \"../components/Spinner\";\nimport Alert from \"../components/Alert\";\n\n\n\n\nfunction ReceivedRewards(){\n\n const [isKeysGenerated, setIsKeysGenerated] = useState(true)\n const [rewards, setRewards] = useState([])\n const [popUp, setPopUp] = useState(false)\n const [index, setIndex] = useState(-1)\n const [isLoading, setIsLoading] = useState(false)\n const history = useHistory()\n //get rewards\n const userToken = sessionStorage.getItem('userToken')\n const decodedUserToken:any = jwt.decode(userToken as string)\n const uid = decodedUserToken.receivingDID;\n const [alertOpen, setAlertOpen] = useState({ open: false, title: '', content: ''})\n\n\n useEffect(() => {\n setIsLoading(true);\n getRewards(uid).then(res => {\n setRewards(res.data.credentials);\n if(res.data.credentials.length === 0){\n setAlertOpen({ open: true, title: 'Alert', content: 'You don\\'t have any new received rewards.'});\n }\n console.log(res.data.credentials);\n setIsLoading(false);\n })\n }, []);\n\n const getRewards = async (did: string) => {\n const rewards = await axios.get(`${process.env.REACT_APP_REWARD_BACKEND}reward/getUnacceptedRewardCredentials`, {\n params: {\n did\n }\n });\n return rewards;\n };\n\n\n function handleBack() {\n history.push(VIEWS.HOME)\n }\n\n function handleDone() {\n history.push(VIEWS.HOME)\n }\n\n function requestReward(){\n history.push(VIEWS.REQUESTREWARD)\n }\n\n function onSelect(id:string) {\n history.push(VIEWS.RECEIVEDREWARDPREVIEW + \"?id=\" + id);\n }\n\n const cancelReward = async (did: string,id:string) => {\n const rewards = await axios.delete(`${process.env.REACT_APP_REWARD_BACKEND}reward/declineRewardCredential`, {\n data: {\n did,\n id\n }\n });\n return rewards;\n };\n const onRemove = (id:string)=> {\n console.log('ID REMOVE',id)\n setIsLoading(true);\n cancelReward(uid, id).then(res => {\n getRewards(uid).then(res => {\n setRewards(res.data.credentials);\n console.log('ON REMOVE RES',res.data.credentials);\n setIsLoading(false);\n })\n });\n setPopUp(false)\n };\n\n\n return(\n \n
\n \n
\n
\n {\n rewards.map((item:any,index)=> (\n {onSelect(item._id)}}\n onCancel={()=>{setPopUp(true);setIndex(index)}}\n />))\n }\n
\n
\n
\n
\n
\n {isLoading && }\n {\n popUp ?{// @ts-ignore\n onRemove(rewards ? rewards[0]._id : \"\")}} onClickCancel={()=>{setPopUp(false)}} headingText={\"Are you sure you want to remove this reward ?\"} bodyMessage={\"You won't be able to revert this action\"} buttonTxtCancel={\"NO\"} buttonTxtConfirm={\"YES\"}/>\n : null\n }\n setAlertOpen({ ...alertOpen, open: false})}\n handleOpen={() => setAlertOpen({ ...alertOpen, open: true })}\n title={alertOpen.title}\n content={alertOpen.content}\n /> \n
\n );\n}\n\nexport default ReceivedRewards;\n","import React, { Component } from 'react'\n\nfunction BoxbtnTransparent(props: {onClick: any, icon: any, name: any}){\n return(\n \n \n \n );\n}\n\nexport default BoxbtnTransparent;","import React, { Component } from 'react'\n\nfunction ReceivedRewardPreviewUser(props: {heading: any, profileImage?: any, userName?: any, url?: any, companyUrl?: any,}){\n //console.log(props)\n return(\n \n
\n

{props.heading}

\n
\n
\n {props.profileImage ? () :
}\n
\n
\n

{props.userName.substring(0, 30)}

\n {props.url ?

Public Profile

: null}\n {/*

Public Profile

*/}\n

{props.companyUrl}

\n
\n
\n
\n
\n );\n}\n\nexport default ReceivedRewardPreviewUser;\n","import React from 'react'\n\nimport ReceivedRewardPreviewUser from './RewardPreviewUser'\nimport { IconButton } from '@material-ui/core'\n\nfunction RewardPreviewItem(props: {\n copyClicked?: any,\n copyIcon?: any,\n rewardImage: any,\n holderImage: any,\n issuerImage: any,\n holderName: string,\n issuerName: string,\n holderProfileUrl: string,\n issuerProfileUrl: string,\n issuedDate: string,\n rewardTitle: string,\n remarks: string,\n seeMore?: any,\n attributesValues: { [key: string]: string },\n copyText?: any\n}) {\n function getDate(date:string) {\n try{\n const date2 = new Date(date)\n const month:number = date2.getMonth() + 1\n const monthString = month.toString().length > 1 ? month.toString() : \"0\"+ month\n const day = date2.getDate()\n const dayString = day.toString().length > 1 ? day.toString() : \"0\"+ day\n return (date2.getFullYear() + \"-\" + monthString + \"-\" + dayString)\n }catch (e) {\n return date\n }\n }\n return (\n \n
\n\n {/*
\n {props.copyClicked && props.copyIcon &&\n \n \n {props.copyText ? (
Copied to

Clipboard
) : \"\"}\n
\n }\n
*/}\n\n
\n \n

{props.rewardTitle}

\n

{props.remarks}

\n
\n\n
\n\n \n\n
\n\n \n\n
\n\n \n\n
\n

Attributes

\n {\n Object.keys(props.attributesValues).map((key: string, index: number) => (\n
\n
{key}
\n
{props.attributesValues[key]}
\n
\n ))\n }\n
\n\n
\n
\n );\n}\n\nexport default RewardPreviewItem;\n","export default __webpack_public_path__ + \"static/media/closeIconGreen.d311a572.svg\";","import React from \"react\";\nimport QRCode from \"qrcode.react\";\nimport \"../../Style/certificateTemplates/Template1.styles.scss\";\n\nconst Template1 = ({ certificate }) => {\n const [logoURL, setLogoURL] = React.useState(\"\");\n const [seal1URL, setSeal1URL] = React.useState(\"\");\n const [seal2URL, setSeal2URL] = React.useState(\"\");\n\n React.useEffect(() => {\n const newLogoURL = certificate?.certificate_logo && certificate?.certificate_logo;\n const newSeal1URL = certificate?.signature_one && certificate?.signature_one;\n const newSeal2URL = certificate?.signature_two && certificate?.signature_two;\n setLogoURL(newLogoURL);\n setSeal1URL(newSeal1URL);\n setSeal2URL(newSeal2URL);\n }, [certificate]);\n\n const signatureRowContent = React.useMemo(() => {\n const content = {\n sign1: '',\n sign1Label: certificate?.signature_title_one,\n sign2: '',\n sign2Label: certificate?.signature_title_two,\n };\n const hasSignature1 = !!certificate?.signature_one;\n const hasSignature2 = !!certificate?.signature_two;\n if (hasSignature1 && hasSignature2) {\n content.sign1 = seal1URL;\n content.sign2 = seal2URL;\n }\n if (hasSignature1 && !hasSignature2) {\n content.sign2 = seal1URL;\n content.sign2Label = certificate?.signature_title_one;\n }\n if (!hasSignature1 && hasSignature2) {\n content.sign2 = seal2URL;\n content.sign2Label = certificate?.signature_title_two;\n }\n return content;\n }, [certificate, seal1URL, seal2URL]);\n\n return (\n
\n
\n
\n \"\"\n
\n \n
\n
\n {certificate?.title || \"Certificate Title\"}\n
\n
\n
Awarded to
\n
\n {certificate?.userName}\n
\n
\n
\n {certificate?.description || \"\"}\n
\n {certificate?.custom_attributes?.length ? (\n
\n {certificate.custom_attributes.map((attribute, idx) => (\n
\n {attribute?.label || \"\"}\n -\n {attribute?.value || \"\"}\n
\n ))}\n
\n ) : ''}\n
\n {certificate?.issuedDate}\n
\n
Date
\n
\n
\n
\n {signatureRowContent.sign1 ?
\n {!signatureRowContent.sign1 && (\n
\n Signature 1\n
\n )}\n {signatureRowContent.sign1 && (\n
\n \n
\n )}\n
\n
\n {signatureRowContent.sign1Label || \"\"}\n
\n
: ''}\n\n {signatureRowContent.sign2 ?\n
\n
\n \n
\n
\n
\n {signatureRowContent.sign2Label || \"\"}\n
\n
: ''}\n
\n
\n
\n {\n (!!certificate?.display_qr) &&\n
\n \n
\n }\n
\n {\n certificate?.issuer_image &&\n
\n \n
\n }\n
{certificate?.issuerName}
\n
\n {/*
{certificate?.issuerProfileURL}
*/}\n
\n
\n
\n
\n );\n};\n\nexport default Template1;\n","export default __webpack_public_path__ + \"static/media/certificateLogo.f1db7551.png\";","export default __webpack_public_path__ + \"static/media/certificateLogoLight.63416a26.png\";","// Ceylon Exchange Mentoring - Certificate of Mastery\nimport React from \"react\";\nimport QRCode from \"qrcode.react\";\nimport \"../../Style/certificateTemplates/Template2.styles.scss\";\nimport CertificateLogo from '../../Assets/certificateLogo.png'\nimport CertificateLogoLight from '../../Assets/certificateLogoLight.png'\n\nconst Template2 = ({ certificate }) => {\n const [logoURL, setLogoURL] = React.useState(\"\");\n const [seal1URL, setSeal1URL] = React.useState(\"\");\n const [seal2URL, setSeal2URL] = React.useState(\"\");\n\n React.useEffect(() => {\n const newLogoURL = certificate?.certificate_logo && certificate?.certificate_logo;\n const newSeal1URL = certificate?.signature_one && certificate?.signature_one;\n const newSeal2URL = certificate?.signature_two && certificate?.signature_two;\n setLogoURL(newLogoURL);\n setSeal1URL(newSeal1URL);\n setSeal2URL(newSeal2URL);\n }, [certificate]);\n\n const signatureRowContent = React.useMemo(() => {\n const content = {\n sign1: '',\n sign1Label: certificate?.signature_title_one,\n sign2: '',\n sign2Label: certificate?.signature_title_two,\n };\n const hasSignature1 = !!certificate?.signature_one;\n const hasSignature2 = !!certificate?.signature_two;\n if (hasSignature1 && hasSignature2) {\n content.sign1 = seal1URL;\n content.sign2 = seal2URL;\n }\n if (hasSignature1 && !hasSignature2) {\n content.sign2 = seal1URL;\n content.sign2Label = certificate?.signature_title_one;\n }\n if (!hasSignature1 && hasSignature2) {\n content.sign2 = seal2URL;\n content.sign2Label = certificate?.signature_title_two;\n }\n return content;\n }, [certificate, seal1URL, seal2URL]);\n\n return (\n
\n
\n
\n
\n \n
\n
\n {certificate?.title || \"Certificate Title\"}\n
\n
\n
Awarded to
\n
\n {certificate?.userName}\n
\n
\n
\n {certificate?.description || \"\"}\n
\n {certificate?.custom_attributes?.length ? (\n
\n {certificate.custom_attributes.map(\n (attribute, idx) => (\n
\n
\n {attribute?.label || \"\"}\n
\n
\n {attribute?.value || \"\"}\n
\n
\n )\n )}\n
\n ) : ''}\n
\n
\n {signatureRowContent.sign1 ?
\n {!signatureRowContent.sign1 && (\n
\n Signature 1\n
\n )}\n {signatureRowContent.sign1 && (\n
\n \n
\n )}\n
\n
\n {signatureRowContent.sign1Label || \"\"}\n
\n
: ''}\n\n {signatureRowContent.sign2 ?\n
\n
\n \n
\n
\n
\n {signatureRowContent.sign2Label || \"\"}\n
\n
: ''}\n
\n
\n
\n {\n (!!certificate?.display_qr) &&\n
\n \n
\n }\n
\n
\n \n
\n
\n
\n
\n
\n
\n );\n};\n\nexport default Template2;\n","// Ceylon Exchange Mentoring - Certificate of Mastery 2\nimport React from \"react\";\nimport QRCode from \"qrcode.react\";\nimport \"../../Style/certificateTemplates/Template3.styles.scss\";\nimport CertificateLogo from '../../Assets/certificateLogo.png'\nimport CertificateLogoLight from '../../Assets/certificateLogoLight.png'\n\nconst Template3 = ({ certificate }) => {\n const [logoURL, setLogoURL] = React.useState(\"\");\n const [seal1URL, setSeal1URL] = React.useState(\"\");\n const [seal2URL, setSeal2URL] = React.useState(\"\");\n\n React.useEffect(() => {\n const newLogoURL = certificate?.certificate_logo && certificate?.certificate_logo;\n const newSeal1URL = certificate?.signature_one && certificate?.signature_one;\n const newSeal2URL = certificate?.signature_two && certificate?.signature_two;\n\n setLogoURL(newLogoURL);\n setSeal1URL(newSeal1URL);\n setSeal2URL(newSeal2URL);\n }, [certificate]);\n\n const signatureRowContent = React.useMemo(() => {\n const content = {\n sign1: '',\n sign1Label: certificate?.signature_title_one,\n sign2: '',\n sign2Label: certificate?.signature_title_two,\n };\n const hasSignature1 = !!certificate?.signature_one;\n const hasSignature2 = !!certificate?.signature_two;\n if (hasSignature1 && hasSignature2) {\n content.sign1 = seal1URL;\n content.sign2 = seal2URL;\n }\n if (hasSignature1 && !hasSignature2) {\n content.sign2 = seal1URL;\n content.sign2Label = certificate?.signature_title_one;\n }\n if (!hasSignature1 && hasSignature2) {\n content.sign2 = seal2URL;\n content.sign2Label = certificate?.signature_title_two;\n }\n return content;\n }, [certificate, seal1URL, seal2URL]);\n\n return (\n
\n
\n
\n
\n \n
\n
\n {certificate?.title || \"Certificate Title\"}\n
\n
\n
Awarded to
\n
\n {certificate?.userName}\n
\n
\n
\n {certificate?.description || \"\"}\n
\n {certificate?.custom_attributes?.length ? (\n
\n {certificate.custom_attributes.map(\n (attribute, idx) => (\n
\n
\n {attribute?.label || \"\"}\n
\n
\n {attribute?.value || \"\"}\n
\n
\n )\n )}\n
\n ) : ''}\n
\n
\n {signatureRowContent.sign1 ?
\n {!signatureRowContent.sign1 && (\n
\n Signature 1\n
\n )}\n {signatureRowContent.sign1 && (\n
\n \n
\n )}\n
\n
\n {signatureRowContent.sign1Label || \"\"}\n
\n
: ''}\n
\n
\n {certificate?.issuedDate}\n
\n
\n
Date
\n
\n\n {signatureRowContent.sign2 ?\n
\n
\n \n
\n
\n
\n {signatureRowContent.sign2Label || \"\"}\n
\n
: ''}\n
\n
\n
\n {\n (!!certificate?.display_qr) &&\n
\n \n
\n }\n
\n \n
\n
\n
\n
\n
\n );\n};\n\nexport default Template3;\n","import React, { useEffect } from 'react';\nimport Template1 from '../CertificateTemplates/Template1';\nimport Template2 from '../CertificateTemplates/Template2';\nimport Template3 from '../CertificateTemplates/Template3';\nimport Template4 from '../CertificateTemplates/Template4';\n\nexport const templates = [\n { name: \"Default Arrangement\", template: Template1 },\n { name: \"Certificate of Mastery\", template: Template2 },\n { name: \"Certificate of Mastery 2\", template: Template3 },\n { name: \"Certificate of Mind Bait\", template: Template4 },\n];\n\nexport default function Certificate(props: { templateRef?: any, certificate?: any }) {\n var CertificateTemplate = Template1\n \n if (props.certificate?.template_name) {\n let index = templates.findIndex(i => i.name == props.certificate?.template_name)\n if (index > -1) CertificateTemplate = templates[index].template\n }\n return (\n
\n \n
\n );\n}\n","// Ceylon Exchange Mentoring - Certificate of Mastery 2\nimport React from \"react\";\nimport QRCode from \"qrcode.react\";\nimport \"../../Style/certificateTemplates/Template4.styles.scss\";\n\nconst Template4 = ({ certificate }) => {\n const [logoURL, setLogoURL] = React.useState(\"\");\n const [seal1URL, setSeal1URL] = React.useState(\"\");\n const [seal2URL, setSeal2URL] = React.useState(\"\");\n\n React.useEffect(() => {\n const newLogoURL = certificate?.certificate_logo && certificate?.certificate_logo;\n const newSeal1URL = certificate?.signature_one && certificate?.signature_one;\n const newSeal2URL = certificate?.signature_two && certificate?.signature_two;\n setLogoURL(newLogoURL);\n setSeal1URL(newSeal1URL);\n setSeal2URL(newSeal2URL);\n }, [certificate]);\n\n const signatureRowContent = React.useMemo(() => {\n const content = {\n sign1: '',\n sign1Label: certificate?.signature_title_one,\n sign2: '',\n sign2Label: certificate?.signature_title_two,\n };\n\n const hasSignature1 = !!certificate?.signature_one;\n const hasSignature2 = !!certificate?.signature_two;\n if (hasSignature1 && hasSignature2) {\n content.sign1 = seal1URL;\n content.sign2 = seal2URL;\n }\n if (hasSignature1 && !hasSignature2) {\n content.sign1 = seal1URL;\n content.sign1Label = certificate?.signature_title_one;\n }\n if (!hasSignature1 && hasSignature2) {\n content.sign1 = seal2URL;\n content.sign1Label = certificate?.signature_title_two;\n }\n return content;\n }, [certificate, seal1URL, seal2URL]);\n\n return (\n
\n
\n
\n
\n
\n {certificate?.title || \"Certificate Title\"}\n
\n
CERTIFICATE OF ATTENDANCE
\n
\n
\n
Awarded to
\n
\n
\n {certificate?.userName}\n
\n
\n {certificate?.description || \"Certificate description\"}\n
\n
\n
\n
\n
\n {\n (!!certificate?.display_qr) &&\n
\n \n
\n }\n
\n \n
\n
\n\n
\n
\n
\n {signatureRowContent.sign1 ?
\n {!signatureRowContent.sign1 && (\n
\n Signature 1\n
\n )}\n {signatureRowContent.sign1 && (\n
\n \n
\n )}\n
\n
\n {signatureRowContent.sign1Label || <>WASAAM ISMAIL
Founder}\n
\n
: ''}\n
\n {certificate?.issuedDate}\n
\n
DATE
\n
\n
\n
\n
\n
\n
\n
\n
\n );\n};\n\nexport default Template4;\n","import React, { useEffect, useState } from 'react'\n\nimport '../Style/App.scss'\nimport '../Style/Responsive.scss'\n\nimport TopNavigationHeader from '../components/TopNavigationHeader'\nimport Boxbtn from '../components/Boxbtn'\nimport BoxbtnTransparent from '../components/BoxbtnTransparent'\nimport RewardPreviewItem from '../components/RewardPreviewItem'\n\nimport arrowAccept from '../Assets/arrowAccept.svg';\nimport closeIconGreen from '../Assets/closeIconGreen.svg';\nimport { useHistory } from \"react-router\";\nimport axios from \"axios\";\nimport { rewardTypes, shareOnFacebookHelper, VIEWS } from \"../utils\";\nimport jwt from \"jsonwebtoken\";\nimport { present } from \"@zedeid-sdk/sd-vc-lib\";\nimport { useAppSelector } from \"../app/hooks\";\nimport { _receivingPrivateKey } from \"../redux/identitySlice\";\nimport Spinner from \"../components/Spinner\";\nimport PopupQuestion from \"../components/PopupQuestion\";\nimport Alert from \"../components/Alert\";\nimport Certificate from '../components/Certificate'\nimport ReceivedRewardPreviewUser from '../components/RewardPreviewUser'\n\n\nfunction AcceptReward() {\n\n const [isKeysGenerated, setIsKeysGenerated] = useState(true)\n const [rewards, setRewards] = useState([])\n const history = useHistory()\n const [popUp, setPopUp] = useState(false)\n const [alertOpen, setAlertOpen] = useState({ open: false, title: '', content: '' })\n const [isLoading, setIsLoading] = useState(false)\n\n const userToken = sessionStorage.getItem('userToken')\n const decodedUserToken: any = jwt.decode(userToken as string)\n const uid = decodedUserToken.receivingDID;\n const holderPrivateKey = useAppSelector(_receivingPrivateKey);\n const id = new URLSearchParams(history.location.search).get(\"id\");\n const [showButtons, setShowButtons] = useState(false)\n\n\n const [tabBtn, setTabBtn] = useState('')\n const [isCertificateAvailable, setIsCertificateAvailable] = useState(false);\n const [isBadgeAvailable, setIsBadgeAvailable] = useState(false);\n const [displayBadge, setDisplayBadge] = useState(true)\n const [displayCertificate, setDisplayCertificate] = useState(false)\n\n useEffect(() => {\n setIsLoading(true);\n if (id && id != \"undefined\") {\n getRewards(uid, id).then(res => {\n setRewards(res.data.credentials);\n console.log(res.data)\n // console.log(JSON.parse(res.data.credentials[0].claims?.certificate))\n //Checking the the certificate is available or not \n if (!!res.data.credentials[0].claims?.rewardBadge) {\n setIsBadgeAvailable(true);\n }\n if (!!res.data.credentials[0].claims?.certificate) {\n setIsCertificateAvailable(true);\n }\n //Checking the active tab\n /* if (res.data.credentials[0]) {\n setTabBtn('badge');\n } else {\n setTabBtn('certificate');\n } */\n if (!!res.data.credentials[0].claims?.rewardBadge) {\n //setTabBtn('badge');\n\n displyBatch()\n } else if (!!res.data.credentials[0].claims?.certificate) {\n //setTabBtn('certificate');\n\n displyCertificate()\n }\n\n\n\n setIsLoading(false);\n setShowButtons(true);\n })\n }\n }, []);\n\n const getRewards = async (did: string, id: string) => {\n const rewards = await axios.get(`${process.env.REACT_APP_REWARD_BACKEND}reward/getUnacceptedRewardCredentials`, {\n params: {\n did,\n id\n }\n });\n return rewards;\n };\n\n const cancelReward = async (did: string, id: string) => {\n const rewards = await axios.delete(`${process.env.REACT_APP_REWARD_BACKEND}reward/declineRewardCredential`, {\n data: {\n did,\n id\n }\n });\n return rewards;\n };\n\n const acceptRewards = async (did: string, id: string, vp: any) => {\n const rewardsRes = await axios.put(`${process.env.REACT_APP_REWARD_BACKEND}reward/acceptRewardCredential`, {\n did,\n id,\n vp\n });\n return rewardsRes;\n };\n\n function handleBack() {\n history.goBack();\n console.log('Clicked successfully.');\n }\n\n function handleDone() {\n console.log('Clicked successfully.');\n }\n\n function copyOption() {\n navigator.clipboard.writeText(window.location.href)\n }\n\n\n function declineReward() {\n setIsLoading(true)\n cancelReward(uid, id || \"\").then(res => {\n console.log('declined.', res.data);\n setIsLoading(false)\n history.push(VIEWS.RECEIVEDREWARDS);\n }).catch(e => {\n setIsLoading(false)\n console.log(e)\n })\n }\n\n function acceptRewardFunc() {\n setIsLoading(true)\n const vp = present(holderPrivateKey, rewards as any, [{}]) as any\n acceptRewards(uid, id || \"\", vp).then(res => {\n setIsLoading(false)\n console.log('accepted', res.data);\n setAlertOpen({ title: \"Success\", content: \"You have successfully signed and accepted the reward, visit My rewards section to view your rewards\", open: true });\n }).catch(e => {\n setIsLoading(false)\n console.log(e)\n });\n }\n\n function seeMore() {\n console.log(id + \"type recivedReward\")\n history.push(VIEWS.SEEMORE + \"?id=\" + id + \"&type=\" + rewardTypes.receivedReward);\n }\n\n function goToMyRewards() {\n setAlertOpen({ ...alertOpen, open: false })\n history.push(VIEWS.MYREWARDS);\n }\n\n function displyBatch() {\n setTabBtn('badge')\n setDisplayBadge(true)\n setDisplayCertificate(false)\n }\n\n function displyCertificate() {\n setTabBtn('certificate')\n setDisplayCertificate(true)\n setDisplayBadge(false)\n }\n\n return (\n \n
\n \n
\n\n
\n {isBadgeAvailable && (\n \n )}\n {isCertificateAvailable && (\n \n )}\n
\n\n\n {displayBadge && (\n
\n {\n rewards.map((item: any, index) => (\n \n ))\n }\n {\n showButtons ? (\n
\n { setPopUp(true) }} />\n \n
) : null\n }\n
\n )}\n\n\n {displayCertificate && (\n
\n {\n rewards.map((item: any, index) => {\n const certificate = JSON.parse(item.claims.certificate)\n certificate['issuedDate'] = item.claims.issuedDate\n certificate['issuerImage'] = item.claims.issuerImage\n certificate['issuerName'] = item.claims.issuerName\n certificate['issuerProfileURL'] = item.claims.issuerProfileURL\n certificate['userName'] = item.claims.holderName\n certificate['shareLink'] = shareOnFacebookHelper(uid, id || \"\")\n certificate['linkedInUrl'] = item.claims.holderProfileURL\n\n return \n })\n }\n {\n !isBadgeAvailable && isCertificateAvailable ?\n <>\n
\n {\n rewards.map((item: any, index) => (\n \n ))\n }\n
\n {\n showButtons ? (\n
\n { setPopUp(true) }} />\n \n
) : null\n }\n \n : null\n }\n
\n )}\n\n\n
\n
\n {isLoading && }\n {\n popUp ? { declineReward() }} onClickCancel={() => { setPopUp(false) }} headingText={\"Are you sure you want to remove this reward ?\"} bodyMessage={\"You won't be able to revert this action\"} buttonTxtCancel={\"NO\"} buttonTxtConfirm={\"YES\"} />\n : null\n }\n setAlertOpen({ ...alertOpen, open: true })}\n title={alertOpen.title}\n content={alertOpen.content}\n />\n
\n );\n}\n\nexport default AcceptReward;\n","import React, { useEffect } from 'react'\n\nimport '../Style/App.scss'\nimport '../Style/Responsive.scss'\n\nimport ContactListItem from '../components/ContactListItem'\nimport ContactSearchInput from '../components/ContactSearchInput'\nimport TopNavigationHeader from '../components/TopNavigationHeader'\n\nimport search from '../Assets/search.svg';\nimport chevronDown from '../Assets/chevronDown.svg';\nimport u1 from '../Assets/u1.png';\n\nimport { useState } from \"react\";\nimport axios from \"axios\";\nimport { useHistory } from \"react-router\";\nimport { VIEWS } from \"../utils\";\nimport jwt from 'jsonwebtoken'\nimport Spinner from \"../components/Spinner\";\n\n\nexport default function RequestReward(){\n\n const [contacts, setContacts] = useState([])\n const [filteredContacts, setFilteredContacts] = useState([])\n const history = useHistory()\n const [isLoading, setIsLoading] = useState(false)\n const [noResultFound, setNoResultFound] = useState(false);\n\n\n \n useEffect(() => {\n setIsLoading(true);\n const userToken = sessionStorage.getItem('userToken')\n const decodedUserToken:any = jwt.decode(userToken as string)\n const uid = decodedUserToken[\"_id\"]\n getContacts(uid).then(res => {\n console.log(res.data.contacts);\n setContacts(res.data.contacts);\n setFilteredContacts(res.data.contacts);\n setIsLoading(false);\n })\n }, []);\n\n const getContacts = async (uid: string) => {\n const contacts = await axios.get(`${process.env.REACT_APP_REWARD_BACKEND}contacts/getAllContacts`, {\n params: {\n uid\n }\n });\n return contacts;\n };\n\n function handleBack() {\n history.push(VIEWS.HOME)\n }\n\n function handleAdd() {\n history.push(VIEWS.GLOBALCONTACTS)\n }\n const onSearch = (event: any) => {\n setNoResultFound(false)\n const name = event.target.value;\n const reg = new RegExp(`^${name}|\\\\s${name}`);\n const filtered = contacts.filter((item) => (reg.test(item[\"name\"])));\n console.log(filtered);\n setFilteredContacts(filtered);\n if(filtered.length === 0){\n console.log(\"No results, Please try another name\");\n setNoResultFound(true);\n }\n //filter the list by name\n };\n\n function onPress(receivingDID: string) {\n history.push(VIEWS.CONTACTPROFILE + \"?receivingDID=\" + receivingDID);\n }\n\n return (\n \n
\n \n
\n\n

Select a contact to Request a Reward

\n\n \n\n {noResultFound? (

No results, Please try another name

):(

)}\n\n {\n filteredContacts.map((item, index) => (\n { onPress(item[\"receivingDID\"]) }} key={index.toString()} />\n ))\n }\n
\n
\n {isLoading && }\n
\n );\n}","import React, { Component } from 'react'\n\nfunction RewardItem(props: {coin: any, rewardDesc: any, blueTxt: any, userimg: any, date: any, onClick?:any}){\n return(\n \n
\n \n

{props.rewardDesc}

\n
\n \n

{props.blueTxt}

\n
\n

{props.date}

\n
\n
\n );\n}\n\nexport default RewardItem;","import { createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport { RootState } from '../app/store';\n\nexport interface MyRewardState {\n view: string;\n}\n\nconst initialState: MyRewardState = {\n view: 'myRewards'\n};\n\nexport const myRewardsSlice = createSlice({\n name: 'myRewards',\n initialState,\n reducers: {\n setView: (state, action: PayloadAction) => {\n state.view = action.payload;\n }\n },\n});\n\nexport const { setView } = myRewardsSlice.actions;\n\nexport const _view = (state: RootState) => state.myRewards.view;\n\nexport default myRewardsSlice.reducer;\n","import React, {useEffect, useState} from 'react'\n\nimport '../Style/App.scss'\nimport '../Style/Responsive.scss'\n\nimport TopNavigationHeader from '../components/TopNavigationHeader'\nimport RewardItem from '../components/RewardItem'\nimport Spinner from '../components/Spinner'\nimport { useHistory } from 'react-router'\nimport { VIEWS } from '../utils'\nimport axios from \"axios\";\nimport jwt from \"jsonwebtoken\";\nimport { useAppDispatch, useAppSelector } from '../app/hooks'\nimport { setView, _view } from '../redux/myRewardsSlice'\n\n\nfunction MyRewards(){\n\n // const [toggleState, setToggleState] = useState(\"myRewards\");\n const view = useAppSelector(_view)\n const [myRewards, setMyRewards] = useState([]);\n const [isLoading, setIsLoading] = useState(false)\n const [issuedRewards, setIssuedRewards] = useState([]);\n const dispatch = useAppDispatch()\n const [emptyMyRewardsMsg, setEmptyMyRewardsMsg] = useState(false)\n const [emptyIsseRewardsMsg, setEmptyIsseRewardsMsg] = useState(false)\n\n const history = useHistory()\n\n\n useEffect(() => {\n setIsLoading(true);\n const userToken = sessionStorage.getItem('userToken')\n const decodedUserToken:any = jwt.decode(userToken as string)\n const receivingDID = decodedUserToken.receivingDID;\n getRewards(receivingDID).then(res => {\n console.log(res.data);\n setMyRewards(res.data.accepted_credentials);\n if(res.data.accepted_credentials.length === 0){\n setEmptyMyRewardsMsg(true);\n }\n setIsLoading(false);\n })\n\n getIssuedRewards(receivingDID).then(res => {\n console.log(res.data);\n setIssuedRewards(res.data.issued_credentials);\n console.log(setIssuedRewards)\n if(res.data.issued_credentials.length === 0){\n setEmptyIsseRewardsMsg(true);\n }\n setIsLoading(false);\n })\n\n }, []);\n\n const getRewards = async (did: string) => {\n const rewards = await axios.get(`${process.env.REACT_APP_REWARD_BACKEND}reward/getAcceptedRewardCredentials`, {\n params: {\n did\n }\n });\n return rewards;\n };\n\n const getIssuedRewards = async (did: string) => {\n const rewards = await axios.get(`${process.env.REACT_APP_REWARD_BACKEND}reward/getIssuedRewardCredentials`, {\n params: {\n did\n }\n });\n return rewards;\n };\n\n const toggleTab = (index: any,) => {\n // setToggleState(index);\n dispatch(setView(index))\n };\n\n function handleBack(){\n history.push(VIEWS.PROFILE)\n }\n\n function onSelect(id:string) {\n history.push(VIEWS.MYREWARDPREVIEW + \"?id=\" + id);\n }\n\n function showIssuedReward(item:any){\n history.push(VIEWS.ISSUEDREWARDPREVIEW, item)\n }\n\n function handleOnClickReward(type:'MY'|'ISSUED', id:number){\n if(type === 'MY'){\n history.push(VIEWS.MYREWARDPREVIEW)\n }else if(type === 'ISSUED'){\n history.push(VIEWS.MYREWARDPREVIEW)\n }\n }\n\n return(\n \n\n
\n\n \n\n
\n\n
\n \n \n
\n\n\n
\n {emptyMyRewardsMsg? (

You have not received any Rewards yet.

):(

)}\n {\n myRewards.map((item:any,index)=> (\n {onSelect(item._id)}}\n />))\n }\n
\n\n
\n {emptyIsseRewardsMsg? (

You have not issued any Rewards yet.

):(

)}\n {\n issuedRewards.map((item:any,index)=> (\n {showIssuedReward(item)}}\n />))\n }\n
\n\n
\n\n
\n {isLoading && }\n
\n );\n}\n\nexport default MyRewards;\n\n","export default __webpack_public_path__ + \"static/media/plusCircle.6ecc3411.svg\";","export default __webpack_public_path__ + \"static/media/shareIconSolid.06326fa9.svg\";","import React from 'react'\nimport '../Style/BoxBtnNew.scss'\n\nfunction BoxBtnNew(props: { onClick: any, icon: any, name?: any, disabled?: boolean, xl?: boolean, addToBtn?: any }) {\n\n function onAddToProfile() {\n window.open(props.addToBtn, '_blank') \n }\n\n return (\n
\n
\n {props.name}\n
\n \n {\n props.addToBtn && (\n \n )\n }\n
\n );\n}\n\nexport default BoxBtnNew;\n","export default __webpack_public_path__ + \"static/media/closeIconShare.9aa90704.svg\";","export default __webpack_public_path__ + \"static/media/LinkedInVectorGreen.e8f45266.svg\";","export default __webpack_public_path__ + \"static/media/FacebookVectorGreen.c432eb8e.svg\";","export default __webpack_public_path__ + \"static/media/CopyVector.184db6cd.svg\";","import React from 'react'\nimport BoxBtnNew from './BoxBtnNew'\nimport closeIconShare from '../Assets/closeIconShare.svg'\nimport LinkedInVector from '../Assets/LinkedInVectorGreen.svg'\nimport FacebookVector from '../Assets/FacebookVectorGreen.svg'\nimport CopyVector from '../Assets/CopyVector.svg'\n\n\nexport default function ShareComponent(props: { closeShareOn: any, shareOnLinkedIn: any, shareOnFacebook: any, linkValue: any, clickCopy: any, copiedTooltip?: any, addToLinkedIn?: any, }) {\n\n function closeShareOn() {\n props.closeShareOn(false);\n }\n\n return (\n \n
\n
\n
\n

Share On

\n \n
\n {/*

Share this via

*/}\n
\n \n \n
\n

Or copy link

\n
\n
\n \"\"\n \n
\n \n {props.copiedTooltip ? (\n
Copied to
Clipboard
\n ) : null}\n
\n
\n
\n )\n}\n","import React, { useEffect, useRef, useState } from 'react'\nimport { renderToStaticMarkup, renderToString } from 'react-dom/server'\nimport ReactDOM from 'react-dom'\n\nimport '../Style/App.scss'\nimport '../Style/Responsive.scss'\n\nimport { FacebookShareButton } from 'react-share'\n\nimport TopNavigationHeader from '../components/TopNavigationHeader'\nimport Boxbtn from '../components/Boxbtn'\nimport RewardPreviewItem from '../components/RewardPreviewItem'\nimport Button from '../components/Button'\n\nimport copy from '../Assets/copy.svg';\nimport plusCircle from '../Assets/plusCircle.svg';\nimport shareIconSolid from '../Assets/shareIconSolid.svg';\nimport { useHistory } from 'react-router'\nimport axios from \"axios\";\nimport { shareOnFacebookHelper, shareOnLinkedIn, VIEWS } from \"../utils\";\nimport jwt from \"jsonwebtoken\";\nimport Spinner from \"../components/Spinner\";\nimport { present, VC } from '@zedeid-sdk/sd-vc-lib'\nimport { _receivingPrivateKey } from '../redux/identitySlice'\nimport { useAppSelector } from '../app/hooks'\nimport Alert from \"../components/Alert\";\nimport ShareComponent from '../components/ShareComponent'\nimport Certificate from '../components/Certificate'\nimport CertificateSignature from '../Assets/certificateSignature.png'\nimport ReceivedRewardPreviewUser from '../components/RewardPreviewUser'\n\nexport const templates = [\n { name: \"Default Arrangement\", stylesheet: 'Template1.styles.css' },\n { name: \"Certificate of Mastery\", stylesheet: 'Template2.styles.css' },\n { name: \"Certificate of Mastery 2\", stylesheet: 'Template3.styles.css' },\n { name: \"Certificate of Mind Bait\", stylesheet: 'Template4.styles.css' },\n];\n\nfunction MyRewardPreview() {\n\n const history = useHistory()\n const [rewards, setRewards] = useState([])\n const userToken = sessionStorage.getItem('userToken')\n const decodedUserToken: any = jwt.decode(userToken as string)\n const uid = decodedUserToken.receivingDID;\n const id = new URLSearchParams(history.location.search).get(\"id\");\n const [isLoading, setIsLoading] = useState(false)\n const holderPrivateKey = useAppSelector(_receivingPrivateKey);\n const [alertOpen, setAlertOpen] = useState({ open: false, title: '', content: '' })\n const [showButtons, setShowButtons] = useState(false)\n const [copyText, setCopyText] = useState(false);\n const [shareOn, setShareOn] = useState(false);\n const [copiedTooltip, setCopiedTooltip] = useState(false)\n const [addToLinkedInUrl, setAddToLinkedInUrl] = useState('')\n\n const [tabBtn, setTabBtn] = useState('')\n const [isCertificateAvailable, setIsCertificateAvailable] = useState(false);\n const [isBadgeAvailable, setIsBadgeAvailable] = useState(false);\n const [displayBadge, setDisplayBadge] = useState(true)\n const [displayCertificate, setDisplayCertificate] = useState(false)\n\n const fbShareRef = useRef(null);\n const certificateRef = useRef();\n\n\n useEffect(() => {\n setIsLoading(true);\n if (id && id != \"undefined\") {\n getRewards(uid, id).then(res => {\n console.log(res.data);\n res.data.accepted_credentials[0].on_trophy = false;\n res.data.trophy_case.forEach((reward: any) => {\n if (reward._id === res.data.accepted_credentials[0]._id) {\n res.data.accepted_credentials[0].on_trophy = true;\n // @ts-ignore\n }\n });\n //Checking the the badge is available or not \n if (!!res.data.accepted_credentials[0].claims?.rewardBadge) {\n setIsBadgeAvailable(true);\n }\n //Checking the the certificate is available or not \n if (!!res.data.accepted_credentials[0].claims?.certificate) {\n setIsCertificateAvailable(true);\n }\n //Checking the active tab\n /* if (res.data.accepted_credentials[0]) {\n setTabBtn('badge');\n } else {\n setTabBtn('certificate');\n } */\n if (!!res.data.accepted_credentials[0].claims?.rewardBadge) {\n //setTabBtn('badge');\n\n displyBatch()\n } else if (!!res.data.accepted_credentials[0].claims?.certificate) {\n //setTabBtn('certificate');\n\n displyCertificate()\n }\n\n setRewards(res.data.accepted_credentials);\n setIsLoading(false);\n setShowButtons(true);\n })\n }\n //console.log(rewards)\n }, []);\n\n useEffect(() => {\n if (rewards[0]) {\n try {\n const item: any = rewards[0];\n const certificate = JSON.parse(item.claims.certificate)\n const date = new Date(certificate.DATE)\n const certUrl: any = shareOnFacebookHelper(uid, id || \"\")\n console.log(date.getMonth())\n const url = new URL(\"https://www.linkedin.com/profile/add\")\n url.searchParams.append('startTask', 'CERTIFICATION_NAME')\n url.searchParams.append('name', certificate.title)\n url.searchParams.append('organizationName', item.claims.issuerName)\n url.searchParams.append('issueYear', date.getFullYear().toString())\n url.searchParams.append('issueMonth', (date.getMonth() + 1).toString())\n url.searchParams.append('certUrl', certUrl)\n\n if (url) setAddToLinkedInUrl(url.href)\n } catch (error) {\n console.log(error)\n }\n };\n\n }, [rewards])\n\n\n const getRewards = async (did: string, id: string) => {\n const rewards = await axios.get(`${process.env.REACT_APP_REWARD_BACKEND}reward/getAcceptedRewardCredentials`, {\n params: {\n did,\n id\n }\n });\n return rewards;\n };\n\n const addToCase = async (did: string, id: string) => {\n const rewards = await axios.put(`${process.env.REACT_APP_REWARD_BACKEND}reward/addToTrophyCase`, {\n did,\n id\n });\n return rewards;\n };\n\n function handleBack() {\n history.goBack()\n }\n\n function copyOption() {\n const uri = `/${uid}/${id}`\n const url = `${process.env.REACT_APP_REWARD_BACKEND}rewardPage${uri}`\n console.log(url)\n navigator.clipboard.writeText(url)\n setCopyText(true)\n setTimeout(() => {\n setCopyText(false)\n }, 2000)\n }\n\n\n function addToTrphyCase() {\n setIsLoading(true)\n addToCase(uid, id || \"\").then(res => {\n setIsLoading(false);\n setAlertOpen({ open: true, title: 'Success', content: 'Reward added to Favorite Rewards.' });\n console.log(res)\n }).catch(e => {\n console.log(e)\n })\n\n }\n\n function shareOnLinkedin() {\n shareOnLinkedIn(uid, id || \"\")\n }\n\n function shareOnFacebook() {\n return shareOnFacebookHelper(uid, id || \"\")\n }\n\n async function handleSaveBadge() {\n try {\n //@ts-ignore\n const { subject, issuer, type, claims, proof } = { ...rewards[0] }\n const vc: VC = { subject, issuer, type, claims, proof } //rewards[0] as VC\n const vp = present(holderPrivateKey, [vc], [{}]) as any\n\n var WinPrint: any = window.open('', '', 'left=0,top=0,width=800,height=900,toolbar=0,scrollbars=0,status=0');\n WinPrint.document.write(``);\n WinPrint.document.title = `MR_${vp?.credentials?.[0].claims.holderName}_${vp?.credentials?.[0].claims.issuedDate}.pdf`;\n WinPrint.document.write(``);\n WinPrint.document.close();\n WinPrint.setTimeout(async function () {\n WinPrint.focus();\n WinPrint.print();\n WinPrint.close();\n\n setAlertOpen({ open: true, title: 'Success', content: 'You have successfully downloaded the file' });\n }, 1000);\n\n } catch (error) {\n console.log({ error })\n setAlertOpen({ open: true, title: 'Failed', content: 'Something went wrong' });\n }\n }\n\n async function handleSaveCert() {\n try {\n //@ts-ignore\n const { subject, issuer, type, claims, proof } = { ...rewards[0] }\n const vc: VC = { subject, issuer, type, claims, proof } //rewards[0] as VC\n const vp = present(holderPrivateKey, [vc], [{}]) as any\n const certificate = JSON.parse(claims.certificate)\n let styles: any = 'Template1.styles.css';\n\n if (certificate?.template_name) {\n let index = templates.findIndex(i => i.name == certificate?.template_name)\n if (index > -1) styles = templates[index].stylesheet\n }\n\n const element: any = certificateRef.current\n \n var WinPrint: any = window.open('', '', 'left=0,top=0,width=800,height=900,toolbar=0,scrollbars=0,status=0');\n WinPrint.document.write(``);\n WinPrint.document.title = `MR_${vp?.credentials?.[0].claims.holderName}_${vp?.credentials?.[0].claims.issuedDate}.pdf`;\n WinPrint.document.write(element.innerHTML);\n WinPrint.document.close();\n WinPrint.setTimeout(async function () {\n WinPrint.focus();\n WinPrint.print();\n WinPrint.close();\n\n setAlertOpen({ open: true, title: 'Success', content: 'You have successfully downloaded the file' });\n }, 1000);\n\n } catch (error) {\n console.log({ error })\n setAlertOpen({ open: true, title: 'Failed', content: 'Something went wrong' });\n }\n }\n\n // save a vp file\n function handleSave1() {\n //@ts-ignore\n const { subject, issuer, type, claims, proof } = { ...rewards[0] }\n const vc: VC = { subject, issuer, type, claims, proof } //rewards[0] as VC\n const vp = present(holderPrivateKey, [vc], [{}]) as any\n const blob = new Blob([JSON.stringify(vp)]);\n const url = URL.createObjectURL(blob);\n const link = document.createElement('a');\n link.href = url;\n link.setAttribute(\n 'download',\n `MR_${vp?.credentials?.[0].claims.holderName}_${vp?.credentials?.[0].claims.issuedDate}.vp`,\n );\n document.body.appendChild(link);\n link.click();\n link?.parentNode?.removeChild(link);\n setAlertOpen({ open: true, title: 'Success', content: 'You have successfully downloaded the file' });\n }\n\n function goToMyRewards() {\n setAlertOpen({ ...alertOpen, open: false })\n history.push(VIEWS.MYREWARDS);\n }\n\n function shareOnDisplay() {\n setShareOn(true);\n }\n\n function copyURL() {\n setCopiedTooltip(true)\n navigator.clipboard.writeText(shareOnFacebookHelper(uid, id || \"\"))\n setTimeout(() => {\n setCopiedTooltip(false)\n }, 2000)\n }\n\n function displyBatch() {\n setTabBtn('badge')\n setDisplayBadge(true)\n setDisplayCertificate(false)\n }\n\n function displyCertificate() {\n setTabBtn('certificate')\n setDisplayCertificate(true)\n setDisplayBadge(false)\n }\n\n // @ts-ignore\n return (\n \n {shareOn ? (\n
\n ) : null}\n
\n \n\n
\n\n
\n {isBadgeAvailable && (\n \n )}\n {isCertificateAvailable && (\n \n )}\n
\n\n {displayBadge && (\n
\n {\n rewards.map((item: any, index) => (\n \n ))\n }\n {\n showButtons ?\n
\n \n \n \n
\n : null\n }\n {\n showButtons ?
\n : null\n }\n {shareOn ? (\n { fbShareRef!.current?.click() }}\n linkValue={shareOnFacebookHelper(uid, id || \"\")}\n clickCopy={copyURL}\n closeShareOn={setShareOn}\n copiedTooltip={copiedTooltip}\n />\n ) : null}\n
\n )}\n\n {displayCertificate && (\n
\n {\n rewards.map((item: any, index) => {\n const certificate = JSON.parse(item.claims.certificate)\n certificate['issuedDate'] = item.claims.issuedDate\n certificate['issuerImage'] = item.claims.issuerImage\n certificate['issuerName'] = item.claims.issuerName\n certificate['issuerProfileURL'] = item.claims.issuerProfileURL\n certificate['userName'] = item.claims.holderName\n certificate['shareLink'] = shareOnFacebookHelper(uid, id || \"\")\n certificate['linkedInUrl'] = item.claims.holderProfileURL\n\n return \n })\n }\n\n {\n !isBadgeAvailable && isCertificateAvailable ?\n <>\n
\n {\n rewards.map((item: any, index) => (\n \n ))\n }\n
\n {\n showButtons ?\n
\n \n \n \n
\n : null\n }\n {\n shareOn ? (\n { fbShareRef!.current?.click() }}\n linkValue={shareOnFacebookHelper(uid, id || \"\")}\n clickCopy={copyURL}\n closeShareOn={setShareOn}\n copiedTooltip={copiedTooltip}\n />\n ) : null\n }\n \n : null\n }\n {\n showButtons ?
\n : null\n }\n
\n )}\n\n setAlertOpen({ ...alertOpen, open: true })}\n title={alertOpen.title}\n content={alertOpen.content}\n />\n\n
\n\n
\n {isLoading && }\n
\n );\n}\n\nexport default MyRewardPreview;","import React, { useEffect, useState } from 'react'\n\nimport '../Style/App.scss'\nimport '../Style/Responsive.scss'\n\nimport TopNavigationHeader from '../components/TopNavigationHeader'\nimport Boxbtn from '../components/Boxbtn'\nimport RewardPreviewItem from '../components/RewardPreviewItem'\n\nimport copy from '../Assets/copy.svg';\nimport badgeGold from '../Assets/badgeGold.svg';\nimport u3 from '../Assets/u3.png';\nimport u9 from '../Assets/u9.png';\nimport plusCircle from '../Assets/plusCircle.svg';\nimport shareIconSolid from '../Assets/shareIconSolid.svg';\nimport { useHistory } from 'react-router'\n\nfunction IssuedRewardPreview(props:any){\n\n const history = useHistory()\n const [itemDetails, setItemDetails] = useState({} as any)\n const [copyText, setCopyText] = useState(false);\n\n\n useEffect(() => {\n setItemDetails(history.location.state as any)\n }, [history.location.state])\n\n function handleBack(){\n history.goBack()\n }\n\n function handleDone(){\n console.log('Clicked successfully.');\n }\n\n function copyOption(){\n setCopyText(true)\n console.log('Clicked successfully.');\n console.log(itemDetails.claims)\n setTimeout(() => {\n setCopyText(false)\n }, 2000)\n }\n\n return(\n \n
\n \n
\n\n \n \n {/*
\n \n
*/}\n
\n
\n
\n );\n}\n\nexport default IssuedRewardPreview;","export default __webpack_public_path__ + \"static/media/shareIcon.10e73f39.svg\";","export default __webpack_public_path__ + \"static/media/propic.61eb9f93.svg\";","import React, { useEffect, useState } from 'react'\n\nimport '../Style/App.scss'\nimport '../Style/Responsive.scss'\n\nimport TopNavigationHeader from '../components/TopNavigationHeader'\nimport RewardItem from '../components/RewardItem'\nimport UserProfile from '../components/UserProfile'\nimport Spinner from '../components/Spinner'\nimport Alert from \"../components/Alert\";\n\nimport shareIcon from '../Assets/shareIcon.svg';\nimport badgeGold from '../Assets/badgeGold.svg';\nimport badgeSilver from '../Assets/badgeSilver.svg';\nimport u3 from '../Assets/u3.png';\nimport propic from '../Assets/propic.svg';\nimport { useHistory } from 'react-router'\nimport { VIEWS } from '../utils'\nimport { useAppSelector } from '../app/hooks'\nimport { _image, _name } from '../redux/identitySlice'\nimport axios from \"axios\";\nimport jwt from \"jsonwebtoken\";\n\nfunction TrophyCase() {\n\n const [isLoading, setIsLoading] = useState(false)\n const [alertOpen, setAlertOpen] = useState({ open: false, title: '', content: '' })\n const [rewards, setRewards] = useState([]);\n const history = useHistory()\n const name = useAppSelector(_name)\n const profileImage = useAppSelector(_image)\n const userToken = sessionStorage.getItem('userToken')\n const decodedUserToken: any = jwt.decode(userToken as string)\n const uid = decodedUserToken.receivingDID;\n const [emptyTrophyCase, setEmptyTrophyCase] = useState(false)\n\n\n useEffect(() => {\n setIsLoading(true);\n getRewards(uid).then(res => {\n setRewards(res.data.trophy_case);\n if (res.data.trophy_case.length === 0) {\n setEmptyTrophyCase(true);\n }\n console.log(res.data);\n setIsLoading(false);\n })\n }, []);\n\n const getRewards = async (did: string) => {\n const rewards = await axios.get(`${process.env.REACT_APP_REWARD_BACKEND}reward/viewTrophyCase`, {\n params: {\n did\n }\n });\n return rewards;\n };\n\n function handleBack() {\n history.push(VIEWS.PROFILE)\n }\n\n function handleShare() {\n const url = `${process.env.REACT_APP_URL}trophyCase/public?did=${uid}`\n navigator.clipboard.writeText(url)\n setAlertOpen({ open: true, title: 'Favorite Rewards', content: 'Link copied to clipboard , share this with anyone to showcase your achievements ! ' })\n console.log(url);\n }\n\n function onSelect(id: string) {\n history.push(VIEWS.TROPHYVIEW + \"?id=\" + id);\n }\n\n return (\n \n
\n \n
\n
\n

Its time to show your achievements !

\n
\n \n {emptyTrophyCase ? (

You have not added any rewards to your Favorite Rewards. Please add some rewards from My Rewards section.

) : (

)}\n
\n {\n rewards.map((item: any, index) => {\n return (\n { onSelect(item._id) }}\n />)\n })\n }\n
\n
\n
\n {isLoading && }\n setAlertOpen({ ...alertOpen, open: false })}\n handleOpen={() => setAlertOpen({ ...alertOpen, open: true })}\n title={alertOpen.title}\n content={alertOpen.content}\n />\n
\n );\n}\n\nexport default TrophyCase;\n","export default __webpack_public_path__ + \"static/media/singleCloseIcon.d311a572.svg\";","import React, { useEffect, useRef, useState } from 'react'\n\nimport '../Style/App.scss'\nimport '../Style/Responsive.scss'\n\nimport TopNavigationHeader from '../components/TopNavigationHeader'\nimport Boxbtn from '../components/Boxbtn'\nimport RewardPreviewItem from '../components/RewardPreviewItem'\nimport BoxbtnTransparent from '../components/BoxbtnTransparent'\n\nimport copy from '../Assets/copy.svg';\nimport badgeGold from '../Assets/badgeGold.svg';\nimport u3 from '../Assets/u3.png';\nimport u9 from '../Assets/u9.png';\nimport singleCloseIcon from '../Assets/singleCloseIcon.svg';\nimport shareIconSolid from '../Assets/shareIconSolid.svg';\nimport axios from \"axios\";\nimport Alert from \"../components/Alert\";\n\nimport jwt from \"jsonwebtoken\";\nimport { useHistory } from \"react-router\";\nimport { shareOnFacebookHelper, shareOnLinkedIn, VIEWS } from \"../utils\";\nimport Spinner from \"../components/Spinner\";\nimport ShareComponent from '../components/ShareComponent'\nimport { FacebookShareButton } from 'react-share'\nimport Certificate from '../components/Certificate'\nimport CertificateSignature from '../Assets/certificateSignature.png'\nimport ReceivedRewardPreviewUser from '../components/RewardPreviewUser'\n\n\nfunction ReceivedRewardPreviewTrophyCase() {\n const [isKeysGenerated, setIsKeysGenerated] = useState(true)\n const history = useHistory()\n const [rewards, setRewards] = useState([])\n const [isLoading, setIsLoading] = useState(false)\n const userToken = sessionStorage.getItem('userToken')\n const decodedUserToken: any = jwt.decode(userToken as string)\n const uid = decodedUserToken.receivingDID;\n const id = new URLSearchParams(history.location.search).get(\"id\");\n const [alertOpen, setAlertOpen] = useState({ open: false, title: '', content: '' })\n const [showButtons, setShowButtons] = useState(false)\n const [copyText, setCopyText] = useState(false);\n const [shareOn, setShareOn] = useState(false);\n const [copiedTooltip, setCopiedTooltip] = useState(false)\n const [addToLinkedInUrl, setAddToLinkedInUrl] = useState('')\n\n const [tabBtn, setTabBtn] = useState('')\n const [isCertificateAvailable, setIsCertificateAvailable] = useState(false);\n const [isBadgeAvailable, setIsBadgeAvailable] = useState(false);\n const [displayBadge, setDisplayBadge] = useState(true)\n const [displayCertificate, setDisplayCertificate] = useState(false)\n\n const fbShareRef = useRef(null);\n\n useEffect(() => {\n setIsLoading(true)\n if (id && id != \"undefined\") {\n getRewards(uid, id).then(res => {\n // setRewards(res.data.credentials);\n setRewards(res.data.trophy_case);\n console.log(res.data);\n\n //Checking the the badge is available or not \n if (!!res.data.trophy_case[0].claims?.rewardBadge) {\n setIsBadgeAvailable(true);\n }\n //Checking the the certificate is available or not \n if (!!res.data.trophy_case[0].claims?.certificate) {\n setIsCertificateAvailable(true);\n }\n\n //Checking the active tab\n /* if (res.data.trophy_case[0]) {\n setTabBtn('badge');\n } else {\n setTabBtn('certificate');\n } */\n if (!!res.data.trophy_case[0].claims?.rewardBadge) {\n //setTabBtn('badge');\n\n displyBatch()\n } else if (!!res.data.trophy_case[0].claims?.certificate) {\n //setTabBtn('certificate');\n\n displyCertificate()\n }\n\n setIsLoading(false);\n setShowButtons(true);\n })\n }\n }, []);\n\n useEffect(() => {\n if (rewards[0]) {\n try {\n const item: any = rewards[0];\n const certificate = JSON.parse(item.claims.certificate)\n const date = new Date(certificate.DATE)\n const certUrl: any = shareOnFacebookHelper(uid, id || \"\")\n \n const url = new URL(\"https://www.linkedin.com/profile/add\")\n url.searchParams.append('startTask', 'CERTIFICATION_NAME')\n url.searchParams.append('name', certificate.title)\n url.searchParams.append('organizationName', item.claims.issuerName)\n url.searchParams.append('issueYear', date.getFullYear().toString())\n url.searchParams.append('issueMonth', (date.getMonth() + 1).toString())\n url.searchParams.append('certUrl', certUrl)\n\n if (url) setAddToLinkedInUrl(url.href)\n } catch (error) {\n console.log(error)\n }\n };\n\n }, [rewards])\n\n function handleBack() {\n history.goBack()\n }\n\n function handleDone() {\n console.log('Clicked successfully.');\n }\n\n function copyOption() {\n setCopyText(true)\n navigator.clipboard.writeText(window.location.href)\n setTimeout(() => {\n setCopyText(false)\n }, 2000)\n }\n\n const getRewards = async (did: string, id: string) => {\n const rewards = await axios.get(`${process.env.REACT_APP_REWARD_BACKEND}reward/viewTrophyCase`, {\n params: {\n did,\n id\n }\n });\n return rewards;\n };\n\n const removeFromCase = async (did: string, id: string) => {\n const rewards = await axios.put(`${process.env.REACT_APP_REWARD_BACKEND}reward/removeFromTrophyCase`, {\n did,\n id\n });\n return rewards;\n };\n\n function removeFromTrophyCase() {\n setIsLoading(true)\n console.log('remove from TROPHY CASE', uid, id);\n removeFromCase(uid, id || \"\").then(res => {\n console.log(res)\n setIsLoading(false)\n setAlertOpen({ open: true, title: 'Success', content: 'Reward removed from Favorite Rewards.' });\n }).catch(e => {\n console.log(e)\n })\n }\n\n function goToTrophyCase() {\n setAlertOpen({ ...alertOpen, open: false })\n history.push(VIEWS.TROPHYCASE);\n }\n\n function shareOnLinkedin() {\n shareOnLinkedIn(uid, id || \"\")\n }\n\n function shareOnFacebook() {\n return shareOnFacebookHelper(uid, id || \"\")\n }\n\n function shareOnDisplay() {\n setShareOn(true);\n }\n\n function copyURL() {\n setCopiedTooltip(true)\n navigator.clipboard.writeText(shareOnFacebookHelper(uid, id || \"\"))\n setTimeout(() => {\n setCopiedTooltip(false)\n }, 2000)\n }\n\n function displyBatch() {\n setTabBtn('badge')\n setDisplayBadge(true)\n setDisplayCertificate(false)\n }\n\n function displyCertificate() {\n setTabBtn('certificate')\n setDisplayCertificate(true)\n setDisplayBadge(false)\n }\n\n return (\n \n
\n \n
\n\n
\n {isBadgeAvailable && (\n \n )}\n {isCertificateAvailable && (\n \n )}\n
\n\n {displayBadge && (\n
\n {\n rewards.map((item: any, index) => (\n \n ))\n }\n {\n showButtons ? (\n
\n \n {/* */}\n \n \n
\n ) : null\n }\n {shareOn ? (\n { fbShareRef!.current?.click() }}\n linkValue={shareOnFacebookHelper(uid, id || \"\")}\n clickCopy={copyURL}\n closeShareOn={setShareOn}\n copiedTooltip={copiedTooltip}\n />\n ) : null}\n
\n )}\n\n {displayCertificate && (\n
\n {\n rewards.map((item: any, index) => {\n const certificate = JSON.parse(item.claims.certificate)\n certificate['issuedDate'] = item.claims.issuedDate\n certificate['issuerImage'] = item.claims.issuerImage\n certificate['issuerName'] = item.claims.issuerName\n certificate['issuerProfileURL'] = item.claims.issuerProfileURL\n certificate['userName'] = item.claims.holderName\n certificate['shareLink'] = shareOnFacebookHelper(uid, id || \"\")\n certificate['linkedInUrl'] = item.claims.holderProfileURL\n\n return \n })\n }\n {\n !isBadgeAvailable && isCertificateAvailable ?\n <>\n
\n {\n rewards.map((item: any, index) => (\n \n ))\n }\n
\n {\n showButtons ? (\n
\n \n {/* */}\n \n \n
\n ) : null\n }\n {shareOn ? (\n { fbShareRef!.current?.click() }}\n linkValue={shareOnFacebookHelper(uid, id || \"\")}\n clickCopy={copyURL}\n closeShareOn={setShareOn}\n copiedTooltip={copiedTooltip}\n />\n ) : null}\n : null\n }\n
\n )}\n\n setAlertOpen({ ...alertOpen, open: true })}\n title={alertOpen.title}\n content={alertOpen.content}\n />\n
\n
\n {isLoading && }\n
\n );\n}\n\nexport default ReceivedRewardPreviewTrophyCase;\n","import React, {useEffect, useState} from 'react'\n\nimport '../Style/App.scss'\nimport '../Style/Responsive.scss'\n\nimport Boxbtn from '../components/Boxbtn'\nimport RewardPreviewItem from '../components/RewardPreviewItem'\n\nimport copy from '../Assets/copy.svg';\nimport badgeGold from '../Assets/badgeGold.svg';\nimport u3 from '../Assets/u3.png';\nimport u9 from '../Assets/u9.png';\nimport logo from '../Assets/logo.svg';\nimport shareIconSolid from '../Assets/shareIconSolid.svg';\nimport {useHistory} from \"react-router\";\nimport axios from \"axios\";\n\nexport default function ReceivedRewardPrvPubTrCase() {\n const history = useHistory()\n const uid = new URLSearchParams(history.location.search).get(\"did\");\n const id = new URLSearchParams(history.location.search).get(\"id\");\n const [rewards, setRewards] = useState([]);\n\n useEffect(() => {\n if(id && id!= \"undefined\"){\n getRewards(uid || \"\",id).then(res => {\n setRewards(res.data.trophy_case);\n console.log(res.data);\n })\n }\n }, []);\n\n function handleBack(){\n console.log('Clicked successfully.');\n }\n\n function handleDone(){\n console.log('Clicked successfully.');\n }\n\n function copyOption(){\n navigator.clipboard.writeText(window.location.href)\n }\n\n\n function addToTrphyCase() {\n console.log('Clicked successfully.');\n }\n\n function shareOnLinkedin() {\n console.log('Clicked successfully.');\n }\n\n const getRewards = async (did: string,id:string) => {\n const rewards = await axios.get(`${process.env.REACT_APP_REWARD_BACKEND}reward/viewTrophyCase`, {\n params: {\n did,\n id\n }\n });\n return rewards;\n };\n\n return (\n \n
\n\n \n\n
\n {\n rewards.map((item:any,index)=> (\n \n ))\n }\n
\n \n
\n
\n
\n
\n )\n}\n","export default __webpack_public_path__ + \"static/media/shareIconDark.aa07953e.svg\";","import React, {useEffect, useState} from 'react'\n\nimport '../Style/App.scss'\nimport '../Style/Responsive.scss'\n\nimport RewardItem from '../components/RewardItem'\nimport UserProfile from '../components/UserProfile'\nimport Spinner from '../components/Spinner'\nimport Alert from \"../components/Alert\";\n\nimport logo from '../Assets/logo.svg';\nimport shareIconDark from '../Assets/shareIconDark.svg';\nimport badgeGold from '../Assets/badgeGold.svg';\nimport badgeSilver from '../Assets/badgeSilver.svg';\nimport u3 from '../Assets/u3.png';\nimport propic from '../Assets/propic.svg';\nimport {useHistory} from \"react-router\";\nimport axios from \"axios\";\nimport {VIEWS} from \"../utils\";\n\nfunction TrophyCase(){\n\n const [isKeysGenerated, setIsKeysGenerated] = useState(false)\n const [isLoading, setIsLoading] = useState(false)\n const [alertOpen, setAlertOpen] = useState({ open: false, title: '', content: '' })\n const [contact, setContact] = useState({} as any)\n const history = useHistory()\n const [rewards, setRewards] = useState([]);\n const did = new URLSearchParams(history.location.search).get(\"did\");\n\n useEffect(() => {\n getGlobalContacts(did || \"\", \"did\").then((res: any) => {\n console.log(res.data);\n setContact(res.data);\n })\n\n getRewards(did|| \"\").then(res => {\n setRewards(res.data.trophy_case);\n console.log(res.data);\n })\n\n }, []);\n\n const getRewards = async (did: string) => {\n const rewards = await axios.get(`${process.env.REACT_APP_REWARD_BACKEND}reward/viewTrophyCase`, {\n params: {\n did\n }\n });\n return rewards;\n };\n\n function shareOption(){\n console.log(\"Done\");\n }\n\n const getGlobalContacts = async (value: string, type: string) => {\n const contacts = await axios.get(`${process.env.REACT_APP_REWARD_BACKEND}contacts/users`, {\n params: {\n type,\n value\n }\n });\n return contacts;\n };\n\n function onSelect(did:string, id:string) {\n history.push(VIEWS.TROPHYVIEWPUBLIC + \"?did=\" + did + \"&id=\" + id);\n }\n\n return(\n \n
\n \n
\n
\n \n
\n \n\n
\n {\n rewards.map((item:any,index)=> (\n {onSelect(did || \"\", item._id)}}\n />))\n }\n
\n
\n
\n {isLoading && }\n setAlertOpen({ ...alertOpen, open: false })}\n handleOpen={() => setAlertOpen({ ...alertOpen, open: true })}\n title={alertOpen.title}\n content={alertOpen.content}\n />\n
\n );\n}\n\nexport default TrophyCase;\n","import { createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport { RootState } from '../app/store';\n\nexport interface VerifierState {\n vp: any;\n isVerified: boolean;\n}\n\nconst initialState: VerifierState = {\n vp: undefined,\n isVerified: false\n};\n\nexport const verifierSlice = createSlice({\n name: 'verifier',\n initialState,\n reducers: {\n setVP: (state, action: PayloadAction) => {\n state.vp = action.payload? JSON.parse(action.payload): action.payload;\n },\n setIsVerifid: (state, action: PayloadAction) => {\n state.isVerified = action.payload;\n },\n },\n});\n\nexport const { setVP, setIsVerifid } = verifierSlice.actions;\n\nexport const _vp = (state: RootState) => state.verifier.vp;\nexport const _isVerified = (state: RootState) => state.verifier.isVerified;\n\nexport default verifierSlice.reducer;\n","export default __webpack_public_path__ + \"static/media/rightMarkIcon.0ba5f0de.svg\";","import React, { Component } from 'react'\n\nfunction SmallTransparentBtn(props: {onClick: any, txt: any}){\n return(\n \n \n \n );\n}\n\nexport default SmallTransparentBtn;","import { useEffect, useState } from \"react\";\nimport { useHistory, useParams } from 'react-router-dom'\n\nimport { useAppDispatch, useAppSelector } from \"../app/hooks\";\nimport { setIsVerifid, setVP, _isVerified, _vp } from \"../redux/verifierSlice\";\nimport { shareOnLinkedIn, VIEWS } from \"../utils\";\nimport { verify, VP } from \"@zedeid-sdk/sd-vc-lib\";\nimport axios, { AxiosResponse } from \"axios\";\n\nimport verifysign from '../Assets/rightMarkIcon.svg'\nimport shareIconSolid from '../Assets/shareIconSolid.svg';\n\nimport TopNavigationHeader from \"../components/TopNavigationHeader\";\nimport Spinner from \"../components/Spinner\";\nimport Alert from \"../components/Alert\";\nimport Boxbtn from '../components/Boxbtn'\nimport RewardPreviewUser from '../components/RewardPreviewUser'\nimport SmallTransparentBtn from '../components/SmallTransparentBtn'\n\nexport default function Verifier() {\n\n const dispatch = useAppDispatch();\n const history = useHistory()\n const vp: VP = useAppSelector(_vp);\n const { vpId, did } = useParams()\n const [isLoading, setIsLoading] = useState(false)\n const [alertOpen, setAlertOpen] = useState({ open: false, title: '', content: '' })\n\n\n useEffect(() => {\n console.log(vpId, did)\n if (vpId !== '' && did !== '') {\n console.log(vpId, did)\n setIsLoading(true)\n axios.get(`${process.env.REACT_APP_REWARD_BACKEND}reward/getPresentation`,\n {\n params: {\n id: vpId,\n did\n }\n }).then(async (res: AxiosResponse) => {\n if (res.data) {\n const vp = res.data\n dispatch(setVP(JSON.stringify(vp)))\n const verificationResult = await handeleVerify(vp)\n dispatch(setIsVerifid(verificationResult))\n setIsLoading(false)\n } else {\n setIsLoading(false)\n setAlertOpen({ open: true, title: \"Error\", content: \"Unknown error. Try again\" })\n }\n }).catch((err: any) => {\n setIsLoading(false)\n })\n\n }\n }, [dispatch, vpId])\n\n\n async function handeleVerify(vp: VP) {\n try {\n const holderDID = vp.subject.did\n const issuerDID = vp.credentials[0].issuer.did\n\n const holderRes = await axios.get(`${process.env.REACT_APP_RESOLVER}${holderDID}`)\n const holderPublicKey = holderRes.data.didDocument.authentication[0].publicKey\n\n const issuerRes = await axios.get(`${process.env.REACT_APP_RESOLVER}${issuerDID}`)\n const issuerPublicKey = issuerRes.data.didDocument.authentication[0].publicKey\n\n const verificationResult = await verify(vp, [issuerPublicKey], holderPublicKey)\n\n return verificationResult\n\n } catch (err: any) {\n return false\n }\n }\n\n\n function handleDone() {\n dispatch(setVP(undefined))\n dispatch(setIsVerifid(false))\n history.push(VIEWS.ONBORDING)\n }\n\n function handleShowMore() {\n console.log(\"Clicked\")\n history.push(VIEWS.MORE)\n }\n\n function handleShare() {\n shareOnLinkedIn(did, vpId || \"\")\n }\n\n function handleBack() {\n history.push(VIEWS.ONBORDING)\n }\n\n return (\n\n <>\n
\n\n \n\n
\n\n {/* */}\n\n \n\n {/* \n */}\n\n\n\n {/* */}\n\n\n
\n
\n \n

{vp?.credentials?.[0].claims.title}

\n

{vp?.credentials?.[0].claims.remarks}

\n
\n \n \n \n \n
\n\n\n {/*
\n {isVerifid ? : }\n \n \n \n
\n
Issued on
\n
\n {vp?.credentials?.[0].claims.issuedDate}\n
\n
\n
\n \n Start issuing rewards or learn more about Micro Rewards */}\n\n\n
\n \n
\n\n
\n
\n {isLoading && }\n setAlertOpen({ ...alertOpen, open: false })}\n handleOpen={() => setAlertOpen({ ...alertOpen, open: true })}\n title={alertOpen.title}\n content={alertOpen.content}\n />\n \n )\n}\n","import React, {ChangeEvent, useState} from 'react'\n\nimport '../Style/App.scss'\nimport '../Style/Responsive.scss'\n\nimport Logo from '../components/Logo'\nimport Button from '../components/Button'\nimport TopNavigationHeader from '../components/TopNavigationHeader'\nimport Spinner from '../components/Spinner'\nimport Alert from \"../components/Alert\";\nimport { useHistory } from 'react-router'\nimport { VIEWS } from '../utils'\nimport axios from 'axios'\n\nfunction InviteCollegues(){\n\n const history = useHistory()\n const [isLoading, setIsLoading] = useState(false)\n const [alertOpen, setAlertOpen] = useState({ open: false, title: '', content: '' })\n const [alertOpenGoToHome, setAlertOpenGoToHome] = useState({ open: false, title: '', content: '' })\n const [email, setEmail] = useState('')\n\n\n function handleBack(){\n history.push(VIEWS.HOME)\n }\n\n function handleSetEmail(event: ChangeEvent){\n setEmail(event.target.value)\n }\n\n function sendInvite(){\n setIsLoading(true)\n const token = sessionStorage.getItem('userToken')\n axios.post(`${process.env.REACT_APP_REWARD_BACKEND}invite`, \n {\n token,\n email\n }\n ).then((res) =>{\n console.log(res)\n setIsLoading(false)\n setAlertOpenGoToHome({ open: true, title: \"Success\", content: \"Invite successfully sent !\" })\n })\n .catch((res) => {\n console.log(res)\n setIsLoading(false)\n setAlertOpen({ open: true, title: \"Error\", content: \"Invitation failed, please try again later.\" })\n })\n }\n\n function goToHome(){\n setAlertOpenGoToHome({ ...alertOpenGoToHome, open: false })\n history.push(VIEWS.HOME)\n }\n\n return(\n \n
\n \n \n
\n

Invite your Colleagues to Join Micro Rewards

\n \n
\n
\n {isLoading && }\n setAlertOpen({ ...alertOpen, open: false })}\n handleOpen={() => setAlertOpen({ ...alertOpen, open: true })}\n title={alertOpen.title}\n content={alertOpen.content}\n />\n setAlertOpenGoToHome({ ...alertOpenGoToHome, open: true })}\n title={alertOpenGoToHome.title}\n content={alertOpenGoToHome.content}\n />\n
\n );\n}\n\nexport default InviteCollegues;","import { createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport { RootState } from '../app/store';\n\nexport interface PresenterState {\n vcData: string;\n vp: string;\n}\n\nconst initialState: PresenterState = {\n vcData: '',\n vp: ''\n};\n\nexport const presenterSlice = createSlice({\n name: 'presenter',\n initialState,\n reducers: {\n setVCData: (state, action: PayloadAction) => {\n state.vcData = action.payload;\n },\n setVP: (state, action: PayloadAction) => {\n state.vp = action.payload;\n },\n },\n});\n\nexport const { setVCData, setVP } = presenterSlice.actions;\n\nexport const _vcData = (state: RootState) => state.presenter.vcData;\nexport const _vp = (state: RootState) => state.presenter.vp;\n\nexport default presenterSlice.reducer;\n","export default function Reward(props:{rewardImage:string | undefined, title:string | undefined, remarks:string | undefined}) {\n\n return (\n
\n \"\"\n\n
\n {props.title}\n
\n\n
\n {props.remarks}\n
\n
\n )\n}","import { makeStyles } from \"@material-ui/core\"\n\nconst useStyles = makeStyles((theme) => ({\n profileCard: {\n margin: '1rem'\n },\n cardCaption: {\n fontWeight: 'bold',\n fontSize: '0.9rem',\n lineHeight: '3rem',\n color: '#161719'\n },\n profileCardInner: {\n display: 'flex'\n },\n profileImage: {\n width: 100,\n height: 'auto',\n borderRadius: 10,\n marginRight: '2rem'\n },\n profileName: {\n fontSize: '0.9rem',\n lineHeight: '1rem',\n color: '#161719'\n },\n profileUrl: {\n fontSize: '0.9rem',\n lineHeight: '1rem',\n color: '#757575'\n }\n}))\nexport default function UserDetailCard(props: any) {\n\n const classes = useStyles()\n return (\n
\n
{props.caption}
\n
\n \"\"\n
\n

{props.name}

\n

{props.url}

\n
\n
\n
\n )\n}","import { makeStyles } from '@material-ui/core'\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'space-between',\n padding: '2.5rem 2rem',\n backgroundColor: '#f1f1fa',\n borderRadius: '30px 30px 30px 30px',\n marginBottom: 0,\n },\n}));\n\nexport default function MainCard(props: any) {\n const classes = useStyles();\n\n return (\n
\n {props.children}\n
\n )\n}\n","import React, { useEffect, useState } from \"react\";\nimport { Button } from \"@material-ui/core\";\nimport TopNavigationHeader from \"../components/TopNavigationHeader\";\n\nimport { useAppDispatch, useAppSelector } from \"../app/hooks\";\nimport { setVC, _vc } from \"../redux/signerSlice\";\nimport { VIEWS } from \"../utils\";\nimport { setVCData, setVP, _vp } from \"../redux/presenterSlice\";\nimport { useHistory } from \"react-router-dom\";\n\nimport axios, { AxiosResponse } from \"axios\";\nimport Reward from \"../components/Reward\";\nimport { VC, VP } from \"@zedeid-sdk/sd-vc-lib\";\nimport UserDetailCard from \"../components/UserDetailCard\";\nimport MainCard from \"../components/Card\";\nimport Spinner from \"../components/Spinner\";\nimport Alert from \"../components/Alert\";\n\nexport default function SignedX(props: { type: 'Credential' | 'Presentation' }) {\n\n const history = useHistory()\n const vc = useAppSelector(_vc);\n const vp = useAppSelector(_vp);\n const [vpData, setVpData] = useState()\n const [vcData, setVcData] = useState()\n const [isLoading, setIsLoading] = useState(false)\n const [alertOpen, setAlertOpen] = useState({ open: false, title: '', content: '' })\n const dispatch = useAppDispatch()\n\n useEffect(() => {\n if (props.type === 'Credential') {\n try {\n setVcData(JSON.parse(vc))\n } catch (error) {\n\n }\n } else {\n try {\n setVpData(JSON.parse(vp))\n } catch (error) {\n \n }\n }\n\n }, [props.type, vc, vcData, vp])\n\n function handleShare() {\n if (props.type === 'Credential') {\n const url = `mailto: ?subject=Signed Reward Credential&body=${vc}`\n const link = document.createElement('a');\n link.href = url;\n document.body.appendChild(link);\n link.click();\n link?.parentNode?.removeChild(link);\n } else {\n setIsLoading(true)\n axios.put(`${process.env.REACT_APP_REWARD_BACKEND}rewardPresentation/`, vpData).then((res: AxiosResponse) => {\n if (res.data) {\n setIsLoading(false)\n const url = `${process.env.REACT_APP_REWARD_BACKEND || \"https://micro-rewards-app.herokuapp.com/\"}rewardPage/${res.data.reward._id}`\n window.open(`https://www.linkedin.com/sharing/share-offsite/?url=${url}`, \"_blank\")\n } else {\n setIsLoading(false)\n setAlertOpen({ open: true, title: \"Error\", content: \"Sharing error. Try again\" })\n }\n }).catch(err => {\n if (err.response?.data?.code === 11000) {\n setIsLoading(false)\n const url = `${process.env.REACT_APP_REWARD_BACKEND || \"https://micro-rewards-app.herokuapp.com/\"}rewardPage/${err.response?.data?.id}`\n window.open(`https://www.linkedin.com/sharing/share-offsite/?url=${url}`, \"_blank\")\n }\n else {\n setIsLoading(false)\n setAlertOpen({ open: true, title: \"Error\", content: \"Sharing error. Try again\" })\n }\n\n })\n\n }\n\n }\n\n function handleSave() {\n if (props.type === 'Credential') {\n const blob = new Blob([vc]);\n const url = URL.createObjectURL(blob);\n const link = document.createElement('a');\n link.href = url;\n link.setAttribute(\n 'download',\n `MR_${vcData?.claims?.holderName}_${vcData?.claims?.issuedDate}.vc`,\n );\n document.body.appendChild(link);\n link.click();\n link?.parentNode?.removeChild(link);\n } else {\n const blob = new Blob([vp]);\n const url = URL.createObjectURL(blob);\n const link = document.createElement('a');\n link.href = url;\n link.setAttribute(\n 'download',\n `MR_${vpData?.credentials?.[0].claims.holderName}_${vpData?.credentials?.[0].claims.issuedDate}.vp`,\n );\n document.body.appendChild(link);\n link.click();\n link?.parentNode?.removeChild(link);\n }\n\n }\n\n function handleBack() {\n if (props.type === 'Credential') {\n history.push(VIEWS.ISSUE)\n } else {\n history.push(VIEWS.ACCEPT)\n }\n }\n\n function handleDone() {\n dispatch(setVC(''))\n dispatch(setVP(''))\n dispatch(setVCData(''))\n history.push(VIEWS.HOME)\n }\n\n return (\n
\n \n \n {\n props.type === 'Credential' ? (\n <>\n
\n \n
\n\n
\n \n \n\n
\n
Issued on
\n
\n {vcData?.claims.issuedDate}\n
\n
\n
\n \n ) :\n (\n <>\n
\n \n
\n\n
\n \n \n\n
\n
Issued on
\n
\n {vpData?.credentials?.[0].claims.issuedDate}\n
\n
\n
\n \n )\n }\n\n \n
\n \n\n
\n {isLoading && }\n setAlertOpen({ ...alertOpen, open: false })}\n handleOpen={() => setAlertOpen({ ...alertOpen, open: true })}\n title={alertOpen.title}\n content={alertOpen.content}\n />\n\n
\n )\n}\n","import React, {ChangeEvent, useEffect} from 'react'\n\nimport '../Style/App.scss'\nimport '../Style/Responsive.scss'\n\nimport Button from '../components/Button'\nimport TopNavigationHeader from '../components/TopNavigationHeader'\n\nimport backBtn from '../Assets/backBtn.svg';\nimport copy from '../Assets/copy.svg';\nimport correctMark from '../Assets/correctMark.svg';\n\nimport { useState } from \"react\";\nimport { useHistory } from 'react-router'\nimport { VIEWS } from '../utils'\nimport { useAppSelector } from '../app/hooks'\nimport { _receivingDID, _rewardingDID, _mnemonic } from '../redux/identitySlice'\nimport { Checkbox, IconButton } from '@material-ui/core'\nimport Alert from \"../components/Alert\";\nimport PopupQuestion from \"../components/PopupQuestion\";\nimport AlertConfirmation from '../components/AlertConfirmation'\nimport axios from \"axios\";\n\nfunction Viewmyid() {\n\n const history = useHistory()\n const mnemonic = useAppSelector(_mnemonic)\n const rewardingDID = useAppSelector(_rewardingDID)\n const receivingDID = useAppSelector(_receivingDID)\n const [copyTextDid, setCopyTextDid] = useState(false);\n const [copyText, setCopyText] = useState(false);\n const [alertOpen, setAlertOpen] = useState({ open: false, title: '', content: '' })\n const [clickHandleDone, setClickHandleDone] = useState(false)\n const currentUrl = window.location.href;\n const [popUp, setPopUp] = useState(false)\n const [alertWithConfirmation, setAlertWithConfirmation] = useState({ open: false, title: '', content: '' })\n const [enableEmail,setEnableEmail] =useState(true)\n const [email,setEmail] = useState('')\n const [disableSend,setDisableSend]= useState(false)\n\n useEffect(() => {\n console.log(currentUrl);\n if(currentUrl == `${process.env.REACT_APP_URL}identity/hkfsuhfry77yr43riuhf34fy7fheiwowjf89r4`){\n setAlertOpen({ open: true, title: \"Alert\", content: \"Heads up! Make sure to copy and save your ID Secrete safely\" })\n }\n }, []);\n\n\n function shareViaEmail() {\n const url = `mailto: ?subject=My DIDs&body=My receiving DID: ${receivingDID} %0D%0AMy rewarding DID: ${rewardingDID}`\n const link = document.createElement('a');\n link.href = url;\n document.body.appendChild(link);\n link.click();\n link?.parentNode?.removeChild(link);\n }\n\n function handleBack() {\n history.push(VIEWS.PROFILE)\n }\n\n function handleDone() {\n if(currentUrl === `${process.env.REACT_APP_URL}identity/hkfsuhfry77yr43riuhf34fy7fheiwowjf89r4`){\n console.log(\"Popup Display\");\n setAlertWithConfirmation({ ...alertWithConfirmation, open: true })\n }else{\n history.push(VIEWS.PROFILE)\n console.log(\"Go to profile\");\n }\n }\n\n\n\n function onCopy(value: string) {\n setCopyText(true)\n navigator.clipboard.writeText(value)\n setTimeout(() => {\n setCopyText(false)\n }, 2000)\n }\n\n function onCopyDid(value: string) {\n setCopyTextDid(true)\n navigator.clipboard.writeText(value)\n setTimeout(() => {\n setCopyTextDid(false)\n }, 2000)\n }\n function emailChange(event: ChangeEvent) {\n const currentEmail = event.target.value;\n setEmail(currentEmail);\n };\n async function sendIdEmail() {\n if(!enableEmail){return;}\n var mailFormat = /^\\w+([\\.-]?\\w+)*@\\w+([\\.-]?\\w+)*(\\.\\w{2,3})+$/;\n if(!email.match(mailFormat)){\n setAlertOpen({ open: true, title: \"Error\", content: \"You have entered an invalid email address!\" })\n return;\n }\n const token = sessionStorage.getItem('userToken')\n setDisableSend(true)\n await axios.post(`${process.env.REACT_APP_REWARD_BACKEND}user/emailSecretID`,\n {\n token,\n email,\n mnemonic\n })\n .then((res) =>{\n console.log(res)\n setAlertOpen({ open: true, title: \"Success\", content: \"Email sent !\" })\n })\n .catch((res) => {\n console.log(res)\n setAlertOpen({ open: true, title: \"Error\", content: \"Email sent failed, please try again.\" })\n })\n setEmail('')\n setDisableSend(false)\n }\n return (\n \n
\n \n\n
\n
\n

Your ID Secret

\n
\n \n \n
\n

Important : This word collection is top secret. You must keep this safe. You can use this to login to Micro Rewards directly without Email, password combination.

\n
\n
\n
\n setEnableEmail(!enableEmail)}/>\n Send ID Secret to My Email\n
\n {\n enableEmail?\n
\n \n
\n :\"\"\n }\n
\n
\n
\n

Your Receiving DID

\n

{receivingDID}

\n onCopyDid(receivingDID)}>\n \n {copyTextDid? (
Copied to Clipboard
) : \"\"}\n
\n

\n

Use this DID when you want to Receive a Reward from someone else

\n
\n
\n

Your Issuing DID

\n

{rewardingDID}

\n

This DID is used when you Issue a Reward to someone else

\n
\n {/*
\n
\n {\n popUp ? { setPopUp(false) }} headingText={\"Alert\"} bodyMessage={\"Heads up ! Did you copy and save your ID Secrete safely ? you will not be able to recover this later.\"} buttonTxtCancel={\"CANCEL\"} buttonTxtConfirm={\"CONFIRM\"} />\n : null\n\n }\n setAlertOpen({ ...alertOpen, open: false })}\n handleOpen={() => setAlertOpen({ ...alertOpen, open: true })}\n title={alertOpen.title}\n content={alertOpen.content}\n />\n setAlertWithConfirmation({ ...alertWithConfirmation, open: false })}\n handleOpen={() => setAlertWithConfirmation({ ...alertWithConfirmation, open: true })}\n handleAction={handleBack}\n message=\"Heads up ! Did you copy and save your ID Secrete safely? you will not be able to recover this later.\"\n />\n \n );\n}\n\nexport default Viewmyid;","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _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\nfunction SvgExpand(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12 4C12.2652 4 12.5196 4.10536 12.7071 4.29289L16.7071 8.29289C17.0976 8.68342 17.0976 9.31658 16.7071 9.70711C16.3166 10.0976 15.6834 10.0976 15.2929 9.70711L12 6.41421L8.70711 9.70711C8.31658 10.0976 7.68342 10.0976 7.29289 9.70711C6.90237 9.31658 6.90237 8.68342 7.29289 8.29289L11.2929 4.29289C11.4804 4.10536 11.7348 4 12 4ZM7.29289 14.2929C7.68342 13.9024 8.31658 13.9024 8.70711 14.2929L12 17.5858L15.2929 14.2929C15.6834 13.9024 16.3166 13.9024 16.7071 14.2929C17.0976 14.6834 17.0976 15.3166 16.7071 15.7071L12.7071 19.7071C12.3166 20.0976 11.6834 20.0976 11.2929 19.7071L7.29289 15.7071C6.90237 15.3166 6.90237 14.6834 7.29289 14.2929Z\",\n fill: \"#0D0D0D\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgExpand);\nexport default __webpack_public_path__ + \"static/media/expand.0298685b.svg\";\nexport { ForwardRef as ReactComponent };","import { ChangeEvent, useEffect, useState } from \"react\";\nimport { Button } from \"@material-ui/core\";\n\nimport { useAppDispatch, useAppSelector } from \"../app/hooks\";\nimport { setVCData, setVP, _vcData } from \"../redux/presenterSlice\";\nimport { VIEWS } from \"../utils\";\nimport { present, VC } from \"@zedeid-sdk/sd-vc-lib\";\nimport { _receivingPrivateKey, _receivingDID } from \"../redux/identitySlice\";\nimport { useHistory } from \"react-router-dom\";\nimport MainCard from \"../components/Card\";\nimport TopNavigationHeader from \"../components/TopNavigationHeader\";\nimport Reward from \"../components/Reward\";\nimport UserDetailCard from \"../components/UserDetailCard\";\nimport Alert from \"../components/Alert\";\n\nexport default function Presenter() {\n\n const dispatch = useAppDispatch();\n const history = useHistory()\n const holderPrivateKey = useAppSelector(_receivingPrivateKey);\n const holderDID = useAppSelector(_receivingDID);\n const vcData = useAppSelector(_vcData);\n const [vc, setVc] = useState()\n const [alertOpen, setAlertOpen] = useState({ open: false, title: '', content: '' })\n\n useEffect(() => {\n try {\n const parsedVC:VC = JSON.parse(vcData)\n if(holderDID !== parsedVC.subject.did){\n dispatch(setVCData(''))\n setAlertOpen({ open: true, title: \"Error\", content: \"Not a reward issued to your DID\" })\n throw Error()\n }\n setVc(parsedVC)\n } catch (error) {\n\n }\n }, [dispatch, holderDID, vcData])\n\n function handleVCData(event: ChangeEvent) {\n if (event.target.files && event.target.files[0]) {\n\n const reader = new FileReader()\n reader.onload = async (e) => {\n const vc = (e?.target?.result) as string\n dispatch(setVCData(vc))\n };\n reader.readAsText(event.target.files[0])\n }\n\n\n };\n\n function handleGenerate() {\n try {\n const vp = present(holderPrivateKey, [vc as VC], [{}]) as any\n dispatch(setVP(JSON.stringify(vp)))\n history.push(VIEWS.SIGNEDVP)\n } catch (err) {\n setAlertOpen({ open: true, title: \"Error\", content: \"Unknown error. Try again\" })\n }\n }\n\n function handleDone() {\n dispatch(setVP(''))\n dispatch(setVCData(''))\n history.push(VIEWS.HOME)\n }\n\n function handleBack() {\n history.push(VIEWS.HOME)\n }\n\n return (\n
\n \n \n \n \n\n {vc?\n <>\n
\n \n
\n\n
\n\n \n \n\n
\n
Issued on
\n
\n {vc?.claims.issuedDate}\n
\n
\n\n
\n \n\n \n \n :\n
\n \n
\n\n }\n
\n setAlertOpen({ ...alertOpen, open: false })}\n handleOpen={() => setAlertOpen({ ...alertOpen, open: true })}\n title={alertOpen.title}\n content={alertOpen.content}\n />\n\n
\n )\n}\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _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\nfunction SvgCollapse(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12 10C11.7 10 11.5 9.9 11.3 9.7L7.3 5.7C6.9 5.3 6.9 4.7 7.3 4.3C7.7 3.9 8.3 3.9 8.7 4.3L12 7.6L15.3 4.3C15.7 3.9 16.3 3.9 16.7 4.3C17.1 4.7 17.1 5.3 16.7 5.7L12.7 9.7C12.5 9.9 12.3 10 12 10ZM16.7 19.7C16.3 20.1 15.7 20.1 15.3 19.7L12 16.4L8.7 19.7C8.3 20.1 7.7 20.1 7.3 19.7C6.9 19.3 6.9 18.7 7.3 18.3L11.3 14.3C11.7 13.9 12.3 13.9 12.7 14.3L16.7 18.3C17.1 18.7 17.1 19.3 16.7 19.7Z\",\n fill: \"#0D0D0D\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgCollapse);\nexport default __webpack_public_path__ + \"static/media/collapse.83dd4230.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _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\nfunction SvgCopyPrimary(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M3 4C3 2.89543 3.89543 2 5 2H14C15.1046 2 16 2.89543 16 4V6H19C20.1046 6 21 6.89543 21 8V20C21 21.1046 20.1046 22 19 22H10C8.89543 22 8 21.1046 8 20V18H5C3.89543 18 3 17.1046 3 16V4ZM10 18V20H19V8H16V16C16 17.1046 15.1046 18 14 18H10ZM14 16V4H5V16H14Z\",\n fill: \"#24C3B5\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgCopyPrimary);\nexport default __webpack_public_path__ + \"static/media/copy-primary.08238a89.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _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\nfunction SvgExportPrimary(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11.2929 2.29289C11.6834 1.90237 12.3166 1.90237 12.7071 2.29289L16.7071 6.29289C17.0976 6.68342 17.0976 7.31658 16.7071 7.70711C16.3166 8.09763 15.6834 8.09763 15.2929 7.70711L13 5.41421V16C13 16.5523 12.5523 17 12 17C11.4477 17 11 16.5523 11 16V5.41421L8.70711 7.70711C8.31658 8.09763 7.68342 8.09763 7.29289 7.70711C6.90237 7.31658 6.90237 6.68342 7.29289 6.29289L11.2929 2.29289ZM5 17C5.55228 17 6 17.4477 6 18V20H18V18C18 17.4477 18.4477 17 19 17C19.5523 17 20 17.4477 20 18V20C20 21.1046 19.1046 22 18 22H6C4.89543 22 4 21.1046 4 20V18C4 17.4477 4.44772 17 5 17Z\",\n fill: \"#24C3B5\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgExportPrimary);\nexport default __webpack_public_path__ + \"static/media/export-primary.334a17fc.svg\";\nexport { ForwardRef as ReactComponent };","import {\n IconButton,\n makeStyles,\n} from \"@material-ui/core\";\n\nimport { ReactComponent as ExpandIcon } from \"../SVGs/expand.svg\";\nimport { ReactComponent as CollapseIcon } from \"../SVGs/collapse.svg\";\nimport { ReactComponent as CopyIcon } from \"../SVGs/copy-primary.svg\";\nimport { ReactComponent as ExportIcon } from \"../SVGs/export-primary.svg\";\n\nimport { useEffect, useRef, useState } from \"react\";\n\nconst useStyles = makeStyles((theme) => ({\n label: {\n fontWeight: 'bold',\n fontSize: '0.9rem',\n lineHeight: '1.5rem',\n color: '#24C3B5',\n marginTop: 0\n },\n formControlWrapper: {\n display: 'flex',\n justifyContent: 'center',\n width: '450px',\n marginBottom: 25,\n flexDirection: 'column',\n marginRight: '40px'\n },\n error: {\n color: 'red',\n margin: 1\n },\n hidden: {\n display: 'none'\n },\n contentRow: {\n display: 'flex',\n width: '100%',\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'flex-start',\n backgroundColor: '#FFFFFF',\n borderRadius: '10px',\n padding: '2px 15px 2px 15px',\n color: '#A19696',\n marginTop: '10px'\n },\n hiddenContent: {\n display: 'flex',\n width: '100%',\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center'\n },\n valueLength: {\n display: 'flex',\n flexGrow: 1,\n flexDirection: 'row'\n },\n iconSet: {\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-between',\n },\n collapsibleText: {\n marginTop: 10,\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis'\n },\n\n collapsibleTextFalse: {\n marginTop: 10,\n wordWrap: 'break-word',\n whiteSpace: 'pre-wrap',\n wordBreak: 'break-word'\n },\n divider: {\n height: 1,\n backgroundColor: '#757575',\n width: '95%',\n marginTop: 10,\n marginBottom: 5\n },\n subText: {\n color: '#757575',\n fontSize: '12px',\n fontWeight: 'bold'\n }\n}));\n\nexport default function CollapsibleText(props: { label: string, value: string, onCopy: Function, onExport: Function, error?: string, helperText?: string }) {\n const classes = useStyles();\n const [collapsed, setCollapsed] = useState(true);\n const ref = useRef()\n const [width, setWidth] = useState(50)\n let movementTimer: NodeJS.Timeout;\n\n useEffect(() => {\n setWidth(ref.current?.offsetWidth as number)\n }, []);\n\n function middleClip(text:string, length:number){\n if(text.length > length){\n return text.substring(0,length/2 - 1) + '...' + text.substring(text.length - length/2, text.length)\n }\n return text\n }\n\n window.addEventListener('resize', ()=>{\n console.log(ref.current?.offsetWidth )\n clearInterval(movementTimer);\n movementTimer = setTimeout(() => {\n setWidth(ref.current?.offsetWidth as number)\n }, 100);\n });\n\n return (\n
\n

\n {props.label}\n

\n
\n

\n {collapsed ? middleClip(props.value, width/10 - 3) : props.value}\n

\n {\n setCollapsed(!collapsed)\n }} >\n {collapsed ? : }\n \n
\n {!collapsed ?\n
\n
\n
\n\n
\n

{props.value ? `Length ${props.value.length}` : \"\"}

\n
\n
\n { props.onCopy(props.value) }} >\n \n \n { props.onExport(props.value) }}>\n \n \n
\n
\n
: null\n }\n

{props.helperText}

\n
\n\n )\n}\n","export default __webpack_public_path__ + \"static/media/logoGreen.daf37865.svg\";","import { Button, makeStyles } from \"@material-ui/core\";\nimport axios, { AxiosResponse } from \"axios\";\nimport { useState } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport { useAppDispatch, useAppSelector } from \"../app/hooks\";\nimport MainCard from \"../components/Card\";\nimport CollapsibleText from \"../components/CollpasibleText\";\nimport TopNavigationHeader from \"../components/TopNavigationHeader\";\nimport { setIsVerifid, setVP, _vp } from \"../redux/verifierSlice\";\nimport { VIEWS } from \"../utils\";\nimport LogoGreen from \"../Assets/logoGreen.svg\"\n\nconst useStyles = makeStyles((theme) => ({\n caption: {\n fontWeight: 'bold',\n fontSize: '0.9rem',\n lineHeight: '3rem',\n color: '#161719',\n margin: 0,\n }\n}))\n\nexport default function VerificationDetails() {\n\n const history = useHistory()\n const dispatch = useAppDispatch()\n const vp = useAppSelector(_vp);\n const [url, setURL] = useState('Loading...')\n const classes = useStyles()\n\n useState(() => {\n axios.put(`${process.env.REACT_APP_REWARD_BACKEND}reward/presentaion`, vp).then((res: AxiosResponse) => {\n if (res.data) {\n const url = `${process.env.REACT_APP_URL || \"https://micro-rewards-view.herokuapp.com/\"}verify/${res.data.reward._id}`\n setURL(url)\n }\n }).catch(err => {\n if (err.response?.data?.code === 11000) {\n const url = `${process.env.REACT_APP_URL || \"https://micro-rewards-view.herokuapp.com/\"}verify/${err.response?.data?.id}`\n setURL(url)\n }\n else {\n setURL('Fetching URL failed')\n }\n\n })\n })\n\n\n function handleDone() {\n dispatch(setVP(undefined))\n dispatch(setIsVerifid(false))\n history.push(VIEWS.ONBORDING)\n }\n\n function handleBack() {\n history.goBack()\n }\n\n function onCopy(value: string) {\n navigator.clipboard.writeText(value)\n }\n\n function onExport(value: string) {\n const url = `mailto: ?subject= &body=${value}`\n const link = document.createElement('a');\n link.href = url;\n document.body.appendChild(link);\n link.click();\n link?.parentNode?.removeChild(link);\n }\n\n return (\n
\n \n
\n \n
\n
\n \n \n \n
\n
\n
\n
\n \n
\n
\n
\n\n
\n )\n}\n\n","import React from 'react'\nimport '../Style/App.scss'\nimport '../Style/Responsive.scss'\nimport TxtMain from '../components/TxtMain'\n\n\nfunction ClaimIDByDomain() {\n\n return (\n \n \n \n );\n}\n\nexport default ClaimIDByDomain;\n","import React, { useState } from 'react'\nimport Alert from '../components/Alert'\nimport { useHistory } from 'react-router'\nimport Logo from '../components/Logo'\nimport Spinner from '../components/Spinner'\nimport TopNavigationHeader from '../components/TopNavigationHeader'\nimport { VIEWS } from '../utils'\nimport Button from '../components/Button'\n\nexport default function VerifyReward() {\n\n const history = useHistory()\n const [isLoading, setIsLoading] = useState(false)\n const [alertOpen, setAlertOpen] = useState({ open: false, title: '', content: '' })\n \n\n function handleBack(){\n history.push(VIEWS.HOME)\n }\n\n function sendInvite(){\n console.log(\"Clicked\")\n }\n\n function handleRewardUrl(){\n console.log(\"Clicked\")\n }\n\n return (\n \n
\n \n \n
\n\n

Validate using the Reward URL

\n \n\n
\n
\n\n

Validate using the .vp Reward File

\n
\n \n
\n\n
\n
\n\n
\n
\n {isLoading && }\n setAlertOpen({ ...alertOpen, open: false })}\n handleOpen={() => setAlertOpen({ ...alertOpen, open: true })}\n title={alertOpen.title}\n content={alertOpen.content}\n />\n
\n )\n}\n","export default __webpack_public_path__ + \"static/media/download.ee240337.svg\";","import React, { useEffect, useState } from 'react'\n\nimport '../Style/App.scss'\nimport '../Style/Responsive.scss'\n\nimport TopNavigationHeader from '../components/TopNavigationHeader'\nimport Boxbtn from '../components/Boxbtn'\nimport RewardPreviewItem from '../components/RewardPreviewItem'\n\nimport shareIconSolid from '../Assets/shareIconSolid.svg';\nimport downloadIcon from '../Assets/download.svg';\nimport { useHistory } from 'react-router'\nimport { useAppDispatch, useAppSelector } from '../app/hooks'\nimport { setHolderDID, setRewardImage, setRemarks, setHolderProfileURL, setHolderName, setHolderImage, setHolderDIDError, setHolderProfileURLError, setHolderNameError, setIssuerProfileURLError, setHolderImageError, setRemarksError, setIssuedDateError, setRewardImageError, setTitle, setTitleError, _vc } from '../redux/signerSlice';\nimport { VC } from '@zedeid-sdk/sd-vc-lib'\nimport axios from 'axios'\nimport jwt from 'jsonwebtoken'\nimport { VIEWS } from '../utils'\nimport Spinner from '../components/Spinner'\nimport Alert from '../components/Alert'\n\n\nexport default function GeneratedRewardPreview() {\n\n const history = useHistory()\n const vc = useAppSelector(_vc);\n const [vcData, setVcData] = useState()\n const [isLoading, setIsLoading] = useState(false)\n const dispatch = useAppDispatch()\n const [alertOpen, setAlertOpen] = useState({ open: false, title: '', content: '' })\n const [shareWithReceiveralertOpen, setShareWithReceiveralertOpen] = useState({ open: false, title: '', content: '' })\n const id = new URLSearchParams(history.location.search).get(\"requestid\");\n\n useEffect(() => {\n try {\n console.log(vc)\n setVcData(JSON.parse(vc))\n setAlertOpen({ open: true, title: \"Success\", content: \"You have successfully generated the Reward, You can share this with the receiver now.\" })\n } catch (error) {\n console.log(error)\n }\n\n }, [])\n\n\n function handleBack() {\n history.goBack()\n }\n\n function shareReward() {\n setIsLoading(true)\n const userToken = sessionStorage.getItem('userToken')\n const { receivingDID } = jwt.decode(userToken as string) as any\n\n axios.put(`${process.env.REACT_APP_REWARD_BACKEND}reward/credential`, {\n vc: vcData,\n issuerReceivingDID: receivingDID,\n requestid:id\n }).then((res) => {\n setIsLoading(false)\n\n dispatch(setHolderDIDError(false))\n dispatch(setHolderNameError(false))\n dispatch(setHolderImageError(false))\n dispatch(setHolderProfileURLError(false))\n dispatch(setIssuerProfileURLError(false))\n dispatch(setTitleError(false))\n dispatch(setRemarksError(false))\n dispatch(setIssuedDateError(false))\n dispatch(setRewardImageError(false))\n dispatch(setHolderDID(''))\n dispatch(setHolderProfileURL(''))\n dispatch(setHolderName(''))\n dispatch(setHolderImage(''))\n dispatch(setRemarks(''))\n dispatch(setRewardImage(''))\n dispatch(setTitle(''))\n\n setShareWithReceiveralertOpen({ open: true, title: \"Success\", content: \"The Reward has been shared successfully\" })\n \n }).catch((error) => {\n console.log(error.response.status)\n if(error.response.status === 302){\n setAlertOpen({ open: true, title: \"Error\", content: \"You have shared the exact same reward before\" })\n }else{\n setAlertOpen({ open: true, title: \"Error\", content: \"Unknown error\" })\n }\n setIsLoading(false)\n \n })\n }\n\n function handleSave() {\n const blob = new Blob([vc]);\n const url = URL.createObjectURL(blob);\n const link = document.createElement('a');\n link.href = url;\n link.setAttribute(\n 'download',\n `MR_${vcData?.claims?.holderName}_${vcData?.claims?.issuedDate}.vc`,\n );\n document.body.appendChild(link);\n link.click();\n link?.parentNode?.removeChild(link);\n setAlertOpen({ open: true, title: \"Success\", content: \"You have successfully downloaded the file\" })\n }\n\n function goToReceivedRequest(){\n setAlertOpen({ ...shareWithReceiveralertOpen, open: false })\n history.push(VIEWS.RECEIVEDREQUESTS)\n }\n\n return (\n \n
\n \n
\n\n \n
\n
\n
\n \n \n
\n
\n
\n {isLoading && }\n setAlertOpen({ ...alertOpen, open: false })}\n handleOpen={() => setAlertOpen({ ...alertOpen, open: true })}\n title={alertOpen.title}\n content={alertOpen.content}\n />\n setAlertOpen({ ...shareWithReceiveralertOpen, open: true })}\n title={shareWithReceiveralertOpen.title}\n content={shareWithReceiveralertOpen.content}\n />\n
\n );\n}\n","import React, {useEffect, useState} from 'react'\n\nimport '../Style/App.scss'\nimport '../Style/Responsive.scss'\n\nimport ContactListItem from '../components/ContactListItem'\nimport TopNavigationHeader from '../components/TopNavigationHeader'\nimport Button from '../components/Button'\nimport { io } from \"socket.io-client\";\n\nimport closeIcon from '../Assets/closeIcon.svg';\nimport u1 from '../Assets/u1.png';\nimport u6 from '../Assets/u6.png';\nimport u3 from '../Assets/u3.png';\nimport u4 from '../Assets/u4.png';\nimport u5 from '../Assets/u5.png';\n\nimport chevronDown from '../Assets/chevronDown.svg';\nimport { useHistory } from 'react-router'\nimport axios from \"axios\";\nimport jwt from \"jsonwebtoken\";\nimport AcceptRewardListItem from \"../components/AcceptRewardListItem\";\nimport Alert from \"../components/Alert\";\nimport {VIEWS} from \"../utils\";\nimport Spinner from \"../components/Spinner\";\nimport {setHolderDID, setHolderImage, setHolderName} from \"../redux/signerSlice\";\nimport {useAppDispatch} from \"../app/hooks\";\nimport PopupQuestion from \"../components/PopupQuestion\";\nimport socket from \"../socket\";\n\n\nexport default function Notifications() {\n\n const [rewards, setRewards] = useState([])\n const history = useHistory()\n const [alertOpen, setAlertOpen] = useState({ open: false, title: '', content: ''})\n const [isLoading, setIsLoading] = useState(false)\n const [popUp, setPopUp] = useState(false)\n const userToken = sessionStorage.getItem('userToken')\n const decodedUserToken:any = jwt.decode(userToken as string)\n const uid = decodedUserToken.receivingDID;\n const dispatch = useAppDispatch()\n //remove / if doesnot work\n\n\n const socketHandler = (data:any)=> {\n console.log('NEW DATA RECIEVED', data)\n setRewards(data);\n }\n\n useEffect(() => {\n setIsLoading(true);\n console.log(uid)\n getRewards(uid).then(res => {\n setRewards(res.data[0].unread);\n if(res.data[0].unread.length === 0){\n setAlertOpen({ open: true, title: 'Alert', content: 'You don\\'t have any new notifications'});\n }\n console.log(res.data[0].unread);\n setIsLoading(false);\n }).catch(err => {\n setAlertOpen({ open: true, title: 'Alert', content: 'You don\\'t have any new notifications'});\n console.log(err.message)\n })\n socket.on(uid || \"\", socketHandler);\n return () => {\n socket.off(uid,socketHandler)\n };\n }, []);\n\n const getRewards = async (uid: string) => {\n const rewards = await axios.get(`${process.env.REACT_APP_REWARD_BACKEND}notifications/getUnreadNotifications`, {\n params: {\n uid\n }\n });\n return rewards;\n };\n\n function onClickRemove(id:string) {\n setIsLoading(true)\n const userToken = sessionStorage.getItem('userToken')\n const decodedUserToken:any = jwt.decode(userToken as string)\n const receivingDID = decodedUserToken.receivingDID;\n // @ts-ignore\n removeNotification(receivingDID,id ).then((res:any) => {\n console.log('REMOVE RESPONSE',res);\n if(res.data[\"message\"] === \"Notification Removed\"){\n getRewards(uid).then(res => {\n setRewards(res.data[0].unread);\n if(res.data[0].unread.length === 0){\n setAlertOpen({ open: true, title: 'Alert', content: 'You don\\'t have any new notifications' });\n }\n console.log(res.data[0].unread);\n setIsLoading(false)\n })\n }\n })\n\n };\n\n const removeNotification = async (uid:string, id:string) => {\n const contact = await axios.delete(`${process.env.REACT_APP_REWARD_BACKEND}notifications/removeNotification`, {\n data: {\n uid,\n id,\n }\n });\n return contact;\n };\n\n function handleBack() {\n history.push(VIEWS.HOME)\n }\n\n function onClick(item:any) {\n if(item.remarks){\n // rewards\n onAcceptReward(item)\n }else{\n // request\n setPopUp(true);\n }\n }\n\n function onAcceptReward(item: any) {\n onClickRemove(item._id)\n history.push(VIEWS.RECEIVEDREWARDPREVIEW + \"?id=\" + item._id);\n }\n\n function onAcceptRequest(item: any) {\n onClickRemove(item._id)\n dispatch(setHolderDID(item.issuerDID))\n dispatch(setHolderImage(item.issuerImage))\n dispatch(setHolderName(item.issuerName))\n history.push(VIEWS.ISSUE)\n }\n\n function handleClose(){\n setAlertOpen({ ...alertOpen, open: false })\n history.push(VIEWS.HOME)\n }\n\n return (\n \n
\n \n
\n\n
\n {\n rewards.map((item:any,index)=> (\n \n ))\n }\n
\n
\n setAlertOpen({ ...alertOpen, open: true })}\n title={alertOpen.title}\n content={alertOpen.content}\n />\n
\n {\n popUp ? {onAcceptRequest(rewards ? rewards[0]: {})}} onClickCancel={()=>{setPopUp(false)}} headingText={\"Do you wish to issue a reward to \"+ (rewards ? rewards[0][\"issuerName\"]: \"\") + \" ?\"} bodyMessage={\"\"} buttonTxtCancel={\"NO\"} buttonTxtConfirm={\"YES\"}/>\n : null\n }\n {isLoading && }\n
\n );\n}\n","import React, { Component } from 'react'\n\nexport default function BadgeTemplatesItem(props: {badgeType: any, onClick: any,}){\n return(\n \n \n \n );\n}\n","export default __webpack_public_path__ + \"static/media/addIcon.aecf2bbe.svg\";","import React, { ChangeEvent, useEffect, useRef, useState } from 'react'\nimport '../Style/App.scss'\nimport '../Style/Responsive.scss'\nimport TopNavigationHeader from '../components/TopNavigationHeader'\nimport BadgeTemplatesItem from '../components/BadgeTemplatesItem'\nimport PopupMessage from '../components/PopupMessage'\n\nimport addIcon from '../Assets/addIcon.svg';\nimport logoGreen from '../Assets/logoGreen.svg';\nimport { useHistory } from 'react-router'\nimport { useAppDispatch } from '../app/hooks'\nimport { setRewardImage } from '../redux/signerSlice'\nimport { VIEWS } from '../utils'\n\nexport default function BadgeTemplates() {\n\n const history = useHistory()\n const dispatch = useAppDispatch()\n const inputRef = useRef(null)\n\n useEffect(() => {\n window.scrollTo(0, 0)\n }, [])\n\n\n const badgeGold = 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNjIiIGhlaWdodD0iNjIiIHZpZXdCb3g9IjAgMCA2MiA2MiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwKSI+CjxwYXRoIGQ9Ik02MS40OTMyIDMyLjQwMTFDNjEuNjc2MiAzMi41ODQ4IDYxLjgxNTMgMzIuODA3NSA2MS45MDAxIDMzLjA1MjNDNjEuOTg0OSAzMy4yOTcyIDYyLjAxMzMgMzMuNTU4IDYxLjk4MzIgMzMuODE1NEM2MS45NTMgMzQuMDcyNyA2MS44NjUxIDM0LjMyIDYxLjcyNTkgMzQuNTM4N0M2MS41ODY4IDM0Ljc1NzQgNjEuNCAzNC45NDIgNjEuMTc5NSAzNS4wNzg2QzYxLjA2NjUgMzUuMTQ3NCA2MC45NjEzIDM1LjIyODIgNjAuODY1OCAzNS4zMTk4QzYwLjU2ODQgMzUuNjE2NSA2MC4zODk4IDM2LjAxMTQgNjAuMzYzNSAzNi40MzA0QzYwLjMzNzMgMzYuODQ5MyA2MC40NjUxIDM3LjI2MzQgNjAuNzIzMSAzNy41OTQ5QzYwLjg4ODUgMzcuODAzNCA2MS4wMDI3IDM4LjA0NzYgNjEuMDU2OSAzOC4zMDc5QzYxLjExMSAzOC41NjgzIDYxLjEwMzUgMzguODM3NyA2MS4wMzUgMzkuMDk0N0M2MC45NjY0IDM5LjM1MTcgNjAuODM4NyAzOS41ODkxIDYwLjY2MjEgMzkuNzg4MkM2MC40ODU0IDM5Ljk4NzIgNjAuMjY0NiA0MC4xNDIzIDYwLjAxNzMgNDAuMjQxMUM1OS43OTMzIDQwLjMzIDU5LjU5MDYgNDAuNDY1MSA1OS40MjI1IDQwLjYzNzZDNTkuMjU0NCA0MC44MTAxIDU5LjEyNDYgNDEuMDE2IDU5LjA0MTcgNDEuMjQyQzU4Ljk1ODggNDEuNDY4IDU4LjkyNDYgNDEuNzA4OSA1OC45NDE0IDQxLjk0OUM1OC45NTgxIDQyLjE4OTEgNTkuMDI1NSA0Mi40MjI5IDU5LjEzOSA0Mi42MzUyQzU5LjMwOTYgNDIuOTYxMiA1OS4zNzEyIDQzLjMzMzIgNTkuMzE0NyA0My42OTY3QzU5LjI1ODMgNDQuMDYwMSA1OS4wODY4IDQ0LjM5NiA1OC44MjUzIDQ0LjY1NTFDNTguNTg4OSA0NC44ODcgNTguMjkxNCA0NS4wNDcyIDU3Ljk2NzQgNDUuMTE3MUM1Ny42NDE4IDQ1LjE4MTUgNTcuMzQyOSA0NS4zNDE4IDU3LjEwOTUgNDUuNTc3NEM1Ni44ODI4IDQ1LjgwMDEgNTYuNzIyNiA0Ni4wODEzIDU2LjY0NjcgNDYuMzg5NUM1Ni41NzA4IDQ2LjY5NzggNTYuNTgyMyA0Ny4wMjExIDU2LjY3OTcgNDcuMzIzM0M1Ni43Nzc2IDQ3LjYyNTEgNTYuNzg5NCA0Ny45NDgxIDU2LjcxMzcgNDguMjU2MkM1Ni42MzgxIDQ4LjU2NDIgNTYuNDc4MSA0OC44NDUyIDU2LjI1MTUgNDkuMDY3NkM1NS45NDIyIDQ5LjM3MDkgNTUuNTMwNSA0OS41NDggNTUuMDk3MiA0OS41NjRDNTQuNjYxNiA0OS41NzI3IDU0LjI0NjYgNDkuNzUwMSA1My45Mzk3IDUwLjA1ODhDNTMuNzUxMSA1MC4yNDczIDUzLjYwODkgNTAuNDc2OSA1My41MjQyIDUwLjcyOTZDNTMuNDM5NiA1MC45ODIzIDUzLjQxNDggNTEuMjUxMSA1My40NTE5IDUxLjUxNUM1My40ODczIDUxLjc4MDEgNTMuNDYxMSA1Mi4wNDk5IDUzLjM3NTEgNTIuMzAzM0M1My4yODkyIDUyLjU1NjYgNTMuMTQ1OCA1Mi43ODY4IDUyLjk1NjMgNTIuOTc1OUM1Mi43Njc1IDUzLjE2NiA1Mi41MzcgNTMuMzA5NSA1Mi4yODMgNTMuMzk1MUM1Mi4wMjg5IDUzLjQ4MDcgNTEuNzU4NCA1My41MDYxIDUxLjQ5MjkgNTMuNDY5MUM1MS4yNTM5IDUzLjQzNjYgNTEuMDEwNyA1My40NTQ0IDUwLjc3OSA1My41MjE1QzUwLjU0NzMgNTMuNTg4NyA1MC4zMzIzIDUzLjcwMzYgNTAuMTQ3OCA1My44NTg4QzQ5Ljk2MzMgNTQuMDE0IDQ5LjgxMzUgNTQuMjA2MSA0OS43MDgxIDU0LjQyMjdDNDkuNjAyNiA1NC42Mzk0IDQ5LjU0MzggNTQuODc1NyA0OS41MzU1IDU1LjExNjRDNDkuNTI1OCA1NS41NDk3IDQ5LjM0ODggNTUuOTYyNiA0OS4wNDE1IDU2LjI2ODhDNDguODE3OCA1Ni40OTQyIDQ4LjUzNjIgNTYuNjUzNSA0OC4yMjc2IDU2LjcyOTJDNDcuOTE5IDU2LjgwNDkgNDcuNTk1NSA1Ni43OTQgNDcuMjkyNyA1Ni42OTc4QzQ3LjA2MzEgNTYuNjI1IDQ2LjgyMDggNTYuNjAxMSA0Ni41ODE0IDU2LjYyNzRDNDYuMzQyIDU2LjY1MzcgNDYuMTEwOCA1Ni43Mjk4IDQ1LjkwMjYgNTYuODUwOEM0NS42OTQ1IDU2Ljk3MTcgNDUuNTE0IDU3LjEzNDggNDUuMzcyNyA1Ny4zMjk2QzQ1LjIzMTUgNTcuNTI0NCA0NS4xMzI4IDU3Ljc0NjYgNDUuMDgyNyA1Ny45ODE4QzQ1LjAxMTUgNTguMzA1MiA0NC44NTEzIDU4LjYwMjQgNDQuNjIwMSA1OC44Mzk5QzQ0LjM2MDUgNTkuMTAwOSA0NC4wMjQxIDU5LjI3MjEgNDMuNjYgNTkuMzI4NUM0My4yOTU5IDU5LjM4NDggNDIuOTIzMyA1OS4zMjMzIDQyLjU5NjggNTkuMTUzQzQyLjI3MDEgNTguOTgyMyA0MS44OTcyIDU4LjkyMDcgNDEuNTMyOCA1OC45NzdDNDEuMTY4NCA1OS4wMzM0IDQwLjgzMTYgNTkuMjA0OCA0MC41NzE5IDU5LjQ2NjJDNDAuNDA5NyA1OS42MjkyIDQwLjI4MjcgNTkuODIzNyA0MC4xOTg3IDYwLjAzNzdDNDAuMTEzOSA2MC4yNTE3IDM5Ljk4NjQgNjAuNDQ2MSAzOS44MjM4IDYwLjYwOTJDMzkuNTI2NSA2MC45MDU1IDM5LjEzMTEgNjEuMDgzMyAzOC43MTE4IDYxLjEwOTJDMzguMjkyNSA2MS4xMzUyIDM3Ljg3ODIgNjEuMDA3NSAzNy41NDY0IDYwLjc1MDJDMzcuMjE0NSA2MC40OTM3IDM2LjgwMDIgNjAuMzY2OCAzNi4zODEzIDYwLjM5MzNDMzUuOTYyNCA2MC40MTk4IDM1LjU2NzUgNjAuNTk3OSAzNS4yNzA3IDYwLjg5NDJDMzUuMTc3NSA2MC45ODgzIDM1LjA5NjQgNjEuMDkzNSAzNS4wMjkxIDYxLjIwNzRDMzQuOTYxOCA2MS4zMjEzIDM0Ljg4MDcgNjEuNDI2NSAzNC43ODc2IDYxLjUyMDVDMzQuNjIxMiA2MS42ODU3IDM0LjQyMyA2MS44MTU0IDM0LjIwNSA2MS45MDE5QzMzLjk4NyA2MS45ODg1IDMzLjc1MzYgNjIuMDMgMzMuNTE5MSA2Mi4wMjRDMzMuMjg0NSA2Mi4wMTggMzMuMDUzNyA2MS45NjQ2IDMyLjg0MDQgNjEuODY3QzMyLjYyNzEgNjEuNzY5NSAzMi40MzU4IDYxLjYyOTggMzIuMjc4MSA2MS40NTYzTDMyLjIxMDYgNjEuMzkwNkMzMi4wNDU5IDYxLjIyNTcgMzEuODQ5MyA2MS4wOTU4IDMxLjYzMjggNjEuMDA4OUMzMS40MTY0IDYwLjkyMiAzMS4xODQ1IDYwLjg3OTkgMzAuOTUxMiA2MC44ODVDMzAuNzE4IDYwLjg5MDEgMzAuNDg4MiA2MC45NDI0IDMwLjI3NTcgNjEuMDM4N0MzMC4wNjMzIDYxLjEzNTEgMjkuODcyNiA2MS4yNzM0IDI5LjcxNTMgNjEuNDQ1NEwyOS42NDk0IDYxLjUwOTZDMjkuNDY1MyA2MS42OTI1IDI5LjI0MjIgNjEuODMxNiAyOC45OTY4IDYxLjkxNjVDMjguNzUxNCA2Mi4wMDEzIDI4LjQ4OTkgNjIuMDI5OCAyOC4yMzE5IDYxLjk5OTdDMjcuOTczOSA2MS45Njk2IDI3LjcyNjEgNjEuODgxNyAyNy41MDY4IDYxLjc0MjZDMjcuMjg3NiA2MS42MDM1IDI3LjEwMjcgNjEuNDE2OCAyNi45NjU4IDYxLjE5NjRDMjYuODk2MiA2MS4wODM3IDI2LjgxNDcgNjAuOTc4NyAyNi43MjI3IDYwLjg4MzNDMjYuNDI2NyA2MC41ODUzIDI2LjAzMTUgNjAuNDA2MyAyNS42MTIgNjAuMzhDMjUuMTkyNSA2MC4zNTM3IDI0Ljc3NzkgNjAuNDgyMSAyNC40NDY5IDYwLjc0MDhDMjQuMTE1MiA2MC45OTgxIDIzLjcwMDkgNjEuMTI1OCAyMy4yODE2IDYxLjA5OThDMjIuODYyMyA2MS4wNzM5IDIyLjQ2NjkgNjAuODk2MSAyMi4xNjk2IDYwLjU5OThDMjIuMDA3NyA2MC40MzY1IDIxLjg4MDcgNjAuMjQyMSAyMS43OTYzIDYwLjAyODNDMjEuNzExNyA1OS44MTQ3IDIxLjU4NDcgNTkuNjIwMyAyMS40MjMgNTkuNDU2OEMyMS4xNjMzIDU5LjE5NTQgMjAuODI2NiA1OS4wMjQgMjAuNDYyMiA1OC45Njc2QzIwLjA5NzggNTguOTExMyAxOS43MjQ5IDU4Ljk3MjkgMTkuMzk4MiA1OS4xNDM2QzE5LjA3MzIgNTkuMzE3OSAxOC43MDA0IDU5LjM4MjQgMTguMzM1NiA1OS4zMjczQzE3Ljk3MDggNTkuMjcyMyAxNy42MzM3IDU5LjEwMDcgMTcuMzc0OSA1OC44MzgzQzE3LjE0MzMgNTguNjAxOSAxNi45ODM0IDU4LjMwNSAxNi45MTM4IDU3Ljk4MThDMTYuODY1NiA1Ny43NDU0IDE2Ljc2ODIgNTcuNTIxNyAxNi42Mjc5IDU3LjMyNTJDMTYuNDg3NSA1Ny4xMjg4IDE2LjMwNzUgNTYuOTYzOSAxNi4wOTkzIDU2Ljg0MTRDMTUuODkxMSA1Ni43MTg5IDE1LjY1OTQgNTYuNjQxNCAxNS40MTkzIDU2LjYxNEMxNS4xNzkyIDU2LjU4NjUgMTQuOTM2IDU2LjYwOTggMTQuNzA1NCA1Ni42ODIyQzE0LjQwMjUgNTYuNzc4OSAxNC4wNzg4IDU2Ljc5MDEgMTMuNzY5OSA1Ni43MTQ3QzEzLjQ2MSA1Ni42MzkzIDEzLjE3OSA1Ni40ODAxIDEyLjk1NSA1Ni4yNTQ3QzEyLjY1MjMgNTUuOTQ0NiAxMi40NzU3IDU1LjUzMzQgMTIuNDU5NCA1NS4xMDA3QzEyLjQ0OTMgNTQuNjY3NCAxMi4yNzI0IDU0LjI1NDcgMTEuOTY1NCA1My45NDgzQzExLjc3NjggNTMuNzU5OSAxMS41NDcyIDUzLjYxNzggMTEuMjk0MyA1My41MzMxQzExLjA0MTUgNTMuNDQ4MyAxMC43NzI1IDUzLjQyMzIgMTAuNTA4MyA1My40NTk3QzEwLjI0MjkgNTMuNDkzNCA5Ljk3MzI5IDUzLjQ2NjUgOS43MTk4MSA1My4zODExQzkuNDY2MzIgNTMuMjk1NyA5LjIzNTU3IDUzLjE1MzkgOS4wNDQ5NSA1Mi45NjY1QzguODUwODIgNTIuNzY1IDguNzA2MjYgNTIuNTIxMiA4LjYyMjcgNTIuMjU0M0M4LjUzOTEzIDUxLjk4NzUgOC41MTg4NSA1MS43MDQ5IDguNTYzNDQgNTEuNDI4OUM4LjU5OTggNTEuMTYzOCA4LjU3MzggNTAuODkzOSA4LjQ4NzUgNTAuNjQwNkM4LjQwMTIgNTAuMzg3MyA4LjI1Njk3IDUwLjE1NzUgOC4wNjYyNSA0OS45Njk1QzcuNzU0ODIgNDkuNjYzNSA3LjMzNzgyIDQ5LjQ4ODEgNi45MDA5MSA0OS40Nzk0QzYuNDY2MDkgNDkuNDY5NSA2LjA1MTk0IDQ5LjI5MjIgNS43NDQ5OCA0OC45ODQ2QzUuNTE4MTQgNDguNzYyMSA1LjM1NzkyIDQ4LjQ4MDggNS4yODIyOSA0OC4xNzI0QzUuMjA2NjUgNDcuODY0MSA1LjIxODYgNDcuNTQwNyA1LjMxNjc5IDQ3LjIzODdDNS40MTE0MyA0Ni45MzY1IDUuNDIxNDEgNDYuNjE0MiA1LjM0NTY1IDQ2LjMwNjdDNS4yNjk5IDQ1Ljk5OTMgNS4xMTEzIDQ1LjcxODMgNC44ODcwNCA0NS40OTQ0QzQuNjUyNTggNDUuMjU5OSA0LjM1NDI1IDQ1LjA5OTIgNC4wMjkxMSA0NS4wMzI1QzMuNzA1NDggNDQuOTYxNyAzLjQwODI0IDQ0LjgwMTcgMy4xNzExOCA0NC41NzA2QzIuOTEwOTkgNDQuMzEwNSAyLjc0MDk2IDQzLjk3NDIgMi42ODU5MyA0My42MTA4QzIuNjMwOSA0My4yNDc0IDIuNjkzNzcgNDIuODc1OSAyLjg2NTM0IDQyLjU1MDdDMy4wMzU5MyA0Mi4yMjQ3IDMuMDk3NTIgNDEuODUyNyAzLjA0MTA3IDQxLjQ4OTNDMi45ODQ2MyA0MS4xMjU4IDIuODEzMTIgNDAuNzg5OSAyLjU1MTY1IDQwLjUzMDhDMi4zODkyNiA0MC4zNjgxIDIuMTk0ODggNDAuMjQwNiAxLjk4MDc1IDQwLjE1NjZDMS43Njc4NiA0MC4wNjk2IDEuNTc0MzUgMzkuOTQxMyAxLjQxMTQxIDM5Ljc3OTJDMS4xMTUwOCAzOS40ODI0IDAuOTM3MjY4IDM5LjA4OCAwLjkxMTI4NCAzOC42Njk4QzAuODg1MyAzOC4yNTE2IDEuMDEyOTIgMzcuODM4MiAxLjI3MDI1IDM3LjUwNzJDMS41MjkwOCAzNy4xNzYgMS42NTc3NSAzNi43NjE4IDEuNjMyMDQgMzYuMzQyNUMxLjYwNjMzIDM1LjkyMzIgMS40MjgwMiAzNS41Mjc3IDEuMTMwNjYgMzUuMjMwNUMxLjAzODk1IDM1LjEzOCAwLjkzNjI0MiAzNS4wNTcgMC44MjQ4MTQgMzQuOTg5NEMwLjcxMDQ2OSAzNC45MjI1IDAuNjA1MDY4IDM0Ljg0MTUgMC41MTExMjggMzQuNzQ4MkMwLjM0NTQyMSAzNC41ODIyIDAuMjE1MjIyIDM0LjM4NDMgMC4xMjg0MjggMzQuMTY2NkMwLjA0MTYzNDkgMzMuOTQ4OCA1LjcwMzY5ZS0wNSAzMy43MTU4IDAuMDA2MjE3MDkgMzMuNDgxNUMwLjAxMjM3NzEgMzMuMjQ3MiAwLjA2NjE0NjcgMzMuMDE2NiAwLjE2NDI2NCAzMi44MDM3QzAuMjYyMzgxIDMyLjU5MDggMC40MDI4IDMyLjQgMC41NzcwMDIgMzIuMjQyOUwwLjYzMTg5NyAzMi4xODgxQzAuNzk3NCAzMi4wMjIgMC45Mjc0MTkgMzEuODI0MSAxLjAxNDA5IDMxLjYwNjRDMS4xMDA3NSAzMS4zODg2IDEuMTQyMjYgMzEuMTU1NiAxLjEzNjEgMzAuOTIxNEMxLjEyOTk0IDMwLjY4NzIgMS4wNzYyNSAzMC40NTY3IDAuOTc4MjU3IDMwLjI0MzhDMC44ODAyNjggMzAuMDMwOSAwLjc0MDAyNyAyOS44NCAwLjU2NjAyMyAyOS42ODI4TDAuNTAwMTQ5IDI5LjYxNTVDMC4zMTcxOSAyOS40MzE3IDAuMTc4MTE4IDI5LjIwOTEgMC4wOTMyOTAzIDI4Ljk2NDJDMC4wMDg0NjMwOCAyOC43MTk0IC0wLjAxOTkzMzMgMjguNDU4NSAwLjAxMDIxNjEgMjguMjAxMkMwLjA0MDM2NTQgMjcuOTQzOSAwLjEyODI4NCAyNy42OTY2IDAuMjY3NDIzIDI3LjQ3NzlDMC40MDY1NjIgMjcuMjU5MiAwLjU5MzMzNiAyNy4wNzQ2IDAuODEzODM1IDI2LjkzNzlDMC45Mjc5OTEgMjYuODcwMiAxLjAzMzM1IDI2Ljc4ODcgMS4xMjc1MiAyNi42OTUyQzEuNDI0NDYgMjYuMzk5MyAxLjYwMjM2IDI2LjAwNDggMS42Mjc1IDI1LjU4NjdDMS42NTI2NSAyNS4xNjg1IDEuNTIzMzEgMjQuNzU1NyAxLjI2Mzk3IDI0LjQyNjRDMS4wOTgxOCAyNC4yMTc2IDAuOTgzNzExIDIzLjk3MjkgMC45Mjk3MzcgMjMuNzEyQzAuODc1NzYzIDIzLjQ1MSAwLjg4Mzc4OSAyMy4xODExIDAuOTUzMTcyIDIyLjkyMzhDMS4wMjI1NiAyMi42NjY1IDEuMTUxMzYgMjIuNDI5MSAxLjMyOTI3IDIyLjIzMDVDMS41MDcxNyAyMi4wMzE5IDEuNzI5MjIgMjEuODc3NiAxLjk3NzYxIDIxLjc4MDJDMi4yMDE5OCAyMS42OTE0IDIuNDA1MDMgMjEuNTU2NCAyLjU3MzQ3IDIxLjM4MzlDMi43NDE5MSAyMS4yMTEzIDIuODcxOTMgMjEuMDA1MiAyLjk1NTAxIDIwLjc3OUMzLjAzODA4IDIwLjU1MjggMy4wNzIzNCAyMC4zMTE3IDMuMDU1NTQgMjAuMDcxM0MzLjAzODczIDE5LjgzMSAyLjk3MTI1IDE5LjU5NjkgMi44NTc1IDE5LjM4NDVDMi42ODQyOCAxOS4wNTk0IDIuNjIxMjIgMTguNjg3IDIuNjc3NzcgMTguMzIzMkMyLjczNDMyIDE3Ljk1OTMgMi45MDc0NCAxNy42MjM1IDMuMTcxMTggMTcuMzY2MUMzLjQwNjg4IDE3LjEzMTYgMy43MDQzOCAxNi45Njg4IDQuMDI5MTEgMTYuODk2NEM0LjM1MDU4IDE2LjgyNzEgNC42NDYxNyAxNi42NjkyIDQuODgyMzQgMTYuNDQwN0M1LjEwODcxIDE2LjIxNzkgNS4yNjg2MiAxNS45MzY2IDUuMzQ0MjMgMTUuNjI4NEM1LjQxOTg0IDE1LjMyMDEgNS40MDgxNiAxNC45OTY5IDUuMzEwNTIgMTQuNjk0OEM1LjIxNDE0IDE0LjM5MzUgNS4yMDMyOCAxNC4wNzE1IDUuMjc5MTQgMTMuNzY0NEM1LjM1NSAxMy40NTczIDUuNTE0NjIgMTMuMTc3MiA1Ljc0MDI3IDEyLjk1NTJDNi4wNTEzOSAxMi42NTA3IDYuNDY1NDggMTIuNDczNiA2LjkwMDkxIDEyLjQ1ODlDNy4zMzU2OCAxMi40NTAyIDcuNzUwMDkgMTIuMjczMyA4LjA1Njg0IDExLjk2NTZDOC4yNDcgMTEuNzc3MyA4LjM5MDY0IDExLjU0NzUgOC40NzYzOSAxMS4yOTQyQzguNTYyMTQgMTEuMDQwOSA4LjU4NzY1IDEwLjc3MTEgOC41NTA5IDEwLjUwNjNDOC41MTc2IDEwLjI0MTMgOC41NDQ3NCA5Ljk3MjMyIDguNjMwMyA5LjcxOTMzQzguNzE1ODYgOS40NjYzNSA4Ljg1NzYxIDkuMjM1OTUgOS4wNDQ5NSA5LjA0NTM4QzkuMjQ2OTkgOC44NTM2NiA5LjQ4ODQ4IDguNzA4MjUgOS43NTI2IDguNjE5MjdDMTAuMDE2NyA4LjUzMDMgMTAuMjk3MSA4LjQ5OTkxIDEwLjU3NDIgOC41MzAyMkMxMC44MTIyIDguNTYxNzkgMTEuMDU0MiA4LjU0MzM5IDExLjI4NDggOC40NzYyMUMxMS41MTUzIDguNDA5MDMgMTEuNzI5MiA4LjI5NDU0IDExLjkxMjkgOC4xNDAwOEMxMi4wOTY1IDcuOTg1NjIgMTIuMjQ1OSA3Ljc5NDU4IDEyLjM1MTMgNy41NzkyQzEyLjQ1NjggNy4zNjM4MSAxMi41MTYgNy4xMjg4MSAxMi41MjUzIDYuODg5MjVDMTIuNTMzNiA2LjQ1MzYgMTIuNzEgNi4wMzc5NSAxMy4wMTc4IDUuNzI4OThDMTMuMjQxIDUuNTAyOTkgMTMuNTIyNyA1LjM0MzM0IDEzLjgzMTUgNS4yNjc4NkMxNC4xNDAzIDUuMTkyMzggMTQuNDY0IDUuMjA0MDMgMTQuNzY2NiA1LjMwMTUxQzE0Ljk5NjMgNS4zNzQ1NCAxNS4yMzg5IDUuMzk4NjggMTUuNDc4NiA1LjM3MjM3QzE1LjcxODIgNS4zNDYwNiAxNS45NDk3IDUuMjY5ODggMTYuMTU4MSA1LjE0ODc1QzE2LjM2NjUgNS4wMjc2MiAxNi41NDcxIDQuODY0MjMgMTYuNjg4MyA0LjY2OTEyQzE2LjgyOTYgNC40NzQwMSAxNi45MjgzIDQuMjUxNTEgMTYuOTc4MSA0LjAxNTk4QzE3LjA0ODcgMy42OTI3NyAxNy4yMDkgMy4zOTU5NCAxNy40NDA4IDMuMTU5NDhDMTcuNzAwMyAyLjg5ODQ1IDE4LjAzNjggMi43MjcyMyAxOC40MDA4IDIuNjcwODhDMTguNzY0OSAyLjYxNDUzIDE5LjEzNzUgMi42NzYwMSAxOS40NjQgMi44NDYzMkMxOS43OTA2IDMuMDE2NjMgMjAuMTYzMiAzLjA3ODExIDIwLjUyNzIgMy4wMjE3NkMyMC44OTEzIDIuOTY1NCAyMS4yMjc3IDIuNzk0MTggMjEuNDg3MyAyLjUzMzE1QzIxLjY0OTEgMi4zNjk3NSAyMS43NzcgMi4xNzYwNiAyMS44NjM3IDEuOTYzMkMyMS45NDk1IDEuNzU1MjMgMjIuMDc2NSAxLjU2NjcgMjIuMjM3IDEuNDA4OUMyMi41MzEgMS4xMDg2MSAyMi45MjU0IDAuOTI2NzIgMjMuMzQ1IDAuODk3ODQ4QzIzLjc2NDcgMC44Njg5NzYgMjQuMTgwMyAwLjk5NTEzNSAyNC41MTI4IDEuMjUyMzJDMjQuODQ0NyAxLjUxMDUyIDI1LjI1OTggMS42Mzg3IDI1LjY3OTggMS42MTI3NUMyNi4wOTk4IDEuNTg2NzkgMjYuNDk1OCAxLjQwODQ5IDI2Ljc5MzMgMS4xMTEzOUMyNi44ODUyIDEuMDE2NjUgMjYuOTY1NyAwLjkxMTU1NCAyNy4wMzMzIDAuNzk4MjNDMjcuMTAxNSAwLjY4NDkzNiAyNy4xODI1IDAuNTc5ODU2IDI3LjI3NDggMC40ODUwNjdDMjcuNDQxMiAwLjMxOTk0NSAyNy42Mzk0IDAuMTkwMjAzIDI3Ljg1NzQgMC4xMDM2NzdDMjguMDc1NCAwLjAxNzE0OTYgMjguMzA4OCAtMC4wMjQzNjczIDI4LjU0MzMgLTAuMDE4MzY3M0MyOC43Nzc4IC0wLjAxMjM2NzMgMjkuMDA4NyAwLjA0MTAyNTIgMjkuMjIyIDAuMTM4NTg2QzI5LjQzNTMgMC4yMzYxNDcgMjkuNjI2NiAwLjM3NTg1MiAyOS43ODQzIDAuNTQ5MjY2TDI5Ljg1MTcgMC42MTY1OTZDMzAuMTYyNSAwLjkyODcyNSAzMC41ODEyIDEuMTEwMjUgMzEuMDIxOCAxLjEyMzkyQzMxLjI3MDUgMS4xMzIzMyAzMS41MTgxIDEuMDg2MjIgMzEuNzQ3MSAwLjk4ODgzNkMzMS45NzYgMC44OTE0NDcgMzIuMTgwOSAwLjc0NTE0NiAzMi4zNDcxIDAuNTYwMjI2TDMyLjQxMyAwLjQ5NjAyOEMzMi41OTc4IDAuMzE0NDYxIDMyLjgyMSAwLjE3NjU5NSAzMy4wNjYyIDAuMDkyNTg1OUMzMy4zMTE0IDAuMDA4NTc2ODggMzMuNTcyNCAtMC4wMTk0MzQxIDMzLjgyOTkgMC4wMTA2MTY1QzM0LjA4NzQgMC4wNDA2NjcyIDM0LjMzNDkgMC4xMjgwMTQgMzQuNTU0MSAwLjI2NjIyMUMzNC43NzMzIDAuNDA0NDI5IDM0Ljk1ODcgMC41ODk5NzUgMzUuMDk2NiAwLjgwOTE5MUMzNS4xNjQ3IDAuOTIyNTU3IDM1LjI0NTcgMS4wMjc2NSAzNS4zMzgxIDEuMTIyMzVDMzUuNjM1MiAxLjQxODQyIDM2LjAzMDEgMS41OTYyMiAzNi40NDkxIDEuNjIyNDVDMzYuODY4IDEuNjQ4NjggMzcuMjgyMSAxLjUyMTU0IDM3LjYxMzkgMS4yNjQ4NEMzNy45NDU5IDEuMDA4MzUgMzguMzYwMSAwLjg4MTQ3NyAzOC43NzkgMC45MDc5OTVDMzkuMTk4IDAuOTM0NTEzIDM5LjU5MjggMS4xMTI2IDM5Ljg4OTcgMS40MDg5QzQwLjA1MTkgMS41NzE3IDQwLjE3OTQgMS43NjU1NyA0MC4yNjQ1IDEuOTc4ODZDNDAuMzUyNiAyLjIwMzEzIDQwLjQ4NzIgMi40MDYyNyA0MC42NTk1IDIuNTc0OTRDNDAuODMxOCAyLjc0MzYxIDQxLjAzNzggMi44NzQgNDEuMjY0MiAyLjk1NzU1QzQxLjQ5MDUgMy4wNDExIDQxLjczMTkgMy4wNzU5MSA0MS45NzI3IDMuMDU5NzFDNDIuMjEzNSAzLjA0MzUxIDQyLjQ0OCAyLjk3NjY1IDQyLjY2MTEgMi44NjM1NEM0Mi45ODcgMi42OTA0OCA0My4zNjAyIDIuNjI3NDYgNDMuNzI0OSAyLjY4MzkyQzQ0LjA4OTcgMi43NDAzNyA0NC40MjYzIDIuOTEzMjYgNDQuNjg0NCAzLjE3NjdDNDQuOTE3MSAzLjQxMjgxIDQ1LjA3NzEgMy43MTA2MSA0NS4xNDU1IDQuMDM0NzdDNDUuMTk1NSA0LjI3MDE2IDQ1LjI5NDMgNC40OTI0OSA0NS40MzU2IDQuNjg3NDJDNDUuNTc2OSA0Ljg4MjM1IDQ1Ljc1NzYgNS4wNDU1NiA0NS45NjU5IDUuMTY2NTNDNDYuMTc0MyA1LjI4NzUgNDYuNDA1NyA1LjM2MzU0IDQ2LjY0NTMgNS4zODk3NkM0Ni44ODQ5IDUuNDE1OTcgNDcuMTI3MyA1LjM5MTc4IDQ3LjM1NyA1LjMxODc0QzQ3LjY1OTMgNS4yMjEyMSA0Ny45ODI4IDUuMjA5NTMgNDguMjkxMyA1LjI4NTAyQzQ4LjU5OTkgNS4zNjA1MSA0OC44ODEzIDUuNTIwMTkgNDkuMTA0MiA1Ljc0NjIxQzQ5LjQwNyA2LjA1MTkyIDQ5LjU4NDQgNi40NTk2NCA0OS42MDE0IDYuODg5MjVDNDkuNjEyIDcuMzIyNzIgNDkuNzg5NSA3LjczNTQ0IDUwLjA5NyA4LjA0MTY5QzUwLjI4NTYgOC4yMzE1MyA1MC41MTU5IDguMzc0OTMgNTAuNzY5NiA4LjQ2MDU0QzUxLjAyMzMgOC41NDYxNSA1MS4yOTM1IDguNTcxNjIgNTEuNTU4OCA4LjUzNDkyQzUxLjgyNDMgOC41MDA5NSA1Mi4wOTQxIDguNTI3ODUgNTIuMzQ3NyA4LjYxMzU5QzUyLjYwMTMgOC42OTkzMyA1Mi44MzE5IDguODQxNjQgNTMuMDIyMSA5LjAyOTcyQzUzLjIxMzQgOS4yMTc1OCA1My4zNTc5IDkuNDQ3NjEgNTMuNDQ0IDkuNzAxMzNDNTMuNTMgOS45NTUwNSA1My41NTUzIDEwLjIyNTQgNTMuNTE3OCAxMC40OTA2QzUzLjQ4MDMgMTAuNzU1NiA1My41MDU3IDExLjAyNTcgNTMuNTkxNyAxMS4yNzkxQzUzLjY3NzggMTEuNTMyNiA1My44MjIyIDExLjc2MjMgNTQuMDEzNCAxMS45NUM1NC4zMjI4IDEyLjIzNTEgNTQuNjk2IDEyLjQ0MjMgNTUuMTAxOSAxMi41NTQ0QzU1LjUzNTUgMTIuNTY0NyA1NS45NDg3IDEyLjc0MDYgNTYuMjU2MiAxMy4wNDZDNTYuNDgyNSAxMy4yNjk2IDU2LjY0MjUgMTMuNTUxMyA1Ni43MTgzIDEzLjg2QzU2Ljc5NDIgMTQuMTY4NyA1Ni43ODMgMTQuNDkyMyA1Ni42ODYgMTQuNzk1MUM1Ni41OTIgMTUuMDk3MiA1Ni41ODIyIDE1LjQxOTIgNTYuNjU3NyAxNS43MjY1QzU2LjczMzEgMTYuMDMzOCA1Ni44OTA5IDE2LjMxNDggNTcuMTE0MiAxNi41Mzk0QzU3LjM0ODMgMTYuNzc1OSA1Ny42NDY0IDE2LjkzOTIgNTcuOTcyMSAxNy4wMDkxQzU4LjI5NyAxNy4wODEyIDU4LjU5NDUgMTcuMjQ0MSA1OC44MyAxNy40Nzg5QzU5LjA5MTUgMTcuNzM4IDU5LjI2MyAxOC4wNzM5IDU5LjMxOTQgMTguNDM3M0M1OS4zNzU5IDE4LjgwMDggNTkuMzE0MyAxOS4xNzI4IDU5LjE0MzcgMTkuNDk4OEM1OS4wMzIyIDE5LjcxMTYgNTguOTY2NiAxOS45NDUzIDU4Ljk1MDkgMjAuMTg0OUM1OC45MzUzIDIwLjQyNDYgNTguOTcgMjAuNjY0OCA1OS4wNTI4IDIwLjg5MDNDNTkuMTM1NyAyMS4xMTU3IDU5LjI2NDkgMjEuMzIxNCA1OS40MzIgMjEuNDk0QzU5LjU5OTIgMjEuNjY2NyA1OS44MDA3IDIxLjgwMjYgNjAuMDIzNiAyMS44OTI5QzYwLjI3MTMgMjEuOTkwOSA2MC40OTI3IDIyLjE0NTIgNjAuNjcwMiAyMi4zNDM3QzYwLjg0NzYgMjIuNTQyMSA2MC45NzYzIDIyLjc3OTEgNjEuMDQ1OSAyMy4wMzU5QzYxLjExNTUgMjMuMjkyNyA2MS4xMjQxIDIzLjU2MjEgNjEuMDcxIDIzLjgyMjhDNjEuMDE4IDI0LjA4MzUgNjAuOTA0OCAyNC4zMjgyIDYwLjc0MDQgMjQuNTM3NkM2MC40ODI4IDI0Ljg2ODkgNjAuMzU1MiAyNS4yODI3IDYwLjM4MTUgMjUuNzAxM0M2MC40MDc4IDI2LjExOTggNjAuNTg2MSAyNi41MTQ1IDYwLjg4MzEgMjYuODExMUM2MC45NzU4IDI2LjkwMyA2MS4wNzg0IDI2Ljk4NDQgNjEuMTg4OSAyNy4wNTM4QzYxLjQxNjggMjcuMTkyOSA2MS42MDkgMjcuMzgzMSA2MS43NTAzIDI3LjYwOTRDNjEuODkxNiAyNy44MzU2IDYxLjk3OCAyOC4wOTE3IDYyLjAwMjYgMjguMzU3MkM2Mi4wMjczIDI4LjYyMjcgNjEuOTg5NiAyOC44OTAyIDYxLjg5MjQgMjkuMTM4NkM2MS43OTUzIDI5LjM4NjkgNjEuNjQxNCAyOS42MDkyIDYxLjQ0MyAyOS43ODc3TDYxLjM3NzIgMjkuODUzNUM2MS4yMTIgMzAuMDE4IDYxLjA4MTkgMzAuMjE0MiA2MC45OTQ5IDMwLjQzMDNDNjAuOTA3OCAzMC42NDY1IDYwLjg2NTYgMzAuODc4IDYwLjg3MDcgMzEuMTEwOEM2MC44NzU5IDMxLjM0MzcgNjAuOTI4MiAzMS41NzMxIDYxLjAyNDcgMzEuNzg1MkM2MS4xMjEyIDMxLjk5NzMgNjEuMjU5OCAzMi4xODc2IDYxLjQzMiAzMi4zNDQ3TDYxLjQ5MzIgMzIuNDAxMVoiIGZpbGw9InVybCgjcGFpbnQwX2xpbmVhcikiLz4KPHBhdGggZD0iTTUxLjQ4ODUgNTEuNDU0MkM0Ni4wNTYzIDU2Ljg3NzIgMzguNjg5MyA1OS45MjQ3IDMxLjAwNzEgNTkuOTI2N0MyMy4zMjQ5IDU5LjkyODggMTUuOTU2MyA1Ni44ODUyIDEwLjUyMTEgNTEuNDY1MkwxMC41MTE3IDUxLjQ1NThDNi40NTk3NiA0Ny40MTAxIDMuNzAwNCA0Mi4yNTU4IDIuNTgyNTMgMzYuNjQ0NUMxLjQ2NDY3IDMxLjAzMzMgMi4wMzg1IDI1LjIxNzIgNC4yMzE0NyAxOS45MzE1QzYuNDI0NDUgMTQuNjQ1OCAxMC4xMzgxIDEwLjEyOCAxNC45MDI4IDYuOTQ5MjZDMTkuNjY3NiAzLjc3MDUzIDI1LjI2OTQgMi4wNzM2NCAzMS4wMDAxIDIuMDczMTVDMzQuODA2MiAyLjA2ODEgMzguNTc1NyAyLjgxNDAzIDQyLjA5MjEgNC4yNjgwNUM0NS42MDg0IDUuNzIyMDYgNDguODAyMyA3Ljg1NTUxIDUxLjQ5MDEgMTAuNTQ1OEw1MS40OTk1IDEwLjU1NTJDNjIuODA3OSAyMS44NTQxIDYyLjgwMTYgNDAuMTU4NSA1MS40ODg1IDUxLjQ1NDJaIiBmaWxsPSIjRjdCOTA2Ii8+CjxwYXRoIGQ9Ik00OS4wNzc2IDQ5LjA0NzZDNDQuMjg0NSA1My44MzIzIDM3Ljc4NDMgNTYuNTIxIDMxLjAwNjIgNTYuNTIyNUMyNC4yMjggNTYuNTIzOSAxNy43MjY2IDUzLjgzODEgMTIuOTMxNSA0OS4wNTU0TDEyLjkyMjEgNDkuMDQ3NkM4LjEyNzYxIDQ0LjI2MSA1LjQzNDA4IDM3Ljc2OTEgNS40MzQwOCAzMUM1LjQzNDA4IDI0LjIzMDggOC4xMjc2MSAxNy43Mzg5IDEyLjkyMjEgMTIuOTUyNEMxNy43MTY2IDguMTY1ODcgMjQuMjE5NCA1LjQ3Njg0IDMwLjk5OTggNS40NzY4NEMzNy43ODAzIDUuNDc2ODQgNDQuMjgzIDguMTY1ODcgNDkuMDc3NiAxMi45NTI0VjEyLjk2MThDNTMuODY5MyAxNy43NDc5IDU2LjU2MSAyNC4yMzc4IDU2LjU2MSAzMS4wMDQ3QzU2LjU2MSAzNy43NzE2IDUzLjg2OTMgNDQuMjYxNSA0OS4wNzc2IDQ5LjA0NzZaIiBmaWxsPSJ1cmwoI3BhaW50MV9saW5lYXIpIi8+CjxwYXRoIGQ9Ik00OC4wNzA2IDEzLjk1OTNDNTEuNDQ3IDE3LjMyOTggNTMuNzQ2MyAyMS42MjQyIDU0LjY3NzkgMjYuMjk5NEM1NS42MDk1IDMwLjk3NDUgNTUuMTMxNSAzNS44MjA1IDUzLjMwNDQgNDAuMjI0NUM1MS40NzcyIDQ0LjYyODQgNDguMzgzIDQ4LjM5MjYgNDQuNDEyOSA1MS4wNDA5QzQwLjQ0MjkgNTMuNjg5MiAzNS43NzU0IDU1LjEwMjcgMzEuMDAwNiA1NS4xMDI3QzI2LjIyNTkgNTUuMTAyNyAyMS41NTg0IDUzLjY4OTIgMTcuNTg4MyA1MS4wNDA5QzEzLjYxODMgNDguMzkyNiAxMC41MjQxIDQ0LjYyODQgOC42OTY5MSA0MC4yMjQ1QzYuODY5NzUgMzUuODIwNSA2LjM5MTc1IDMwLjk3NDUgNy4zMjMzNSAyNi4yOTk0QzguMjU0OTUgMjEuNjI0MiAxMC41NTQzIDE3LjMyOTggMTMuOTMwNiAxMy45NTkzQzE2LjE3MjEgMTEuNzIxIDE4LjgzMzMgOS45NDU1NiAyMS43NjIyIDguNzM0MjJDMjQuNjkxMSA3LjUyMjg3IDI3LjgzMDQgNi44OTk0IDMxLjAwMDYgNi44OTk0QzM0LjE3MDkgNi44OTk0IDM3LjMxMDIgNy41MjI4NyA0MC4yMzkxIDguNzM0MjJDNDMuMTY4IDkuOTQ1NTYgNDUuODI5MSAxMS43MjEgNDguMDcwNiAxMy45NTkzWiIgZmlsbD0iI0Y3QjkwNiIvPgo8cGF0aCBkPSJNMzcuNTMyNSAxMi4yMzM3TDM2Ljk1MDYgMTIuNjY1OUwzNi41MTc3IDEzLjI0NjhMMzYuMDg0OCAxMi42NjU5TDM1LjUwMjkgMTIuMjMzN0wzNi4wODQ4IDExLjgwMTVMMzYuNTE3NyAxMS4yMjA2TDM2Ljk1MDYgMTEuODAxNUwzNy41MzI1IDEyLjIzMzdaIiBmaWxsPSIjRTI4MTAwIi8+CjxwYXRoIGQ9Ik0zMi4wNDE2IDExLjA4NkwzMS40NTk4IDExLjUxODFMMzEuMDI2OSAxMi4wOTkxTDMwLjU5NCAxMS41MTgxTDMwLjAxMzcgMTEuMDg2TDMwLjU5NCAxMC42NTM4TDMxLjAyNjkgMTAuMDcyOUwzMS40NTk4IDEwLjY1MzhMMzIuMDQxNiAxMS4wODZaIiBmaWxsPSIjRTI4MTAwIi8+CjxwYXRoIGQ9Ik0yNi42NzI2IDEyLjA5OUwyNi4wOTA3IDEyLjUzMTJMMjUuNjU3OCAxMy4xMTA2TDI1LjIyNSAxMi41MzEyTDI0LjY0MzEgMTIuMDk5TDI1LjIyNSAxMS42NjY5TDI1LjY1NzggMTEuMDg2TDI2LjA5MDcgMTEuNjY2OUwyNi42NzI2IDEyLjA5OVoiIGZpbGw9IiNFMjgxMDAiLz4KPHBhdGggZD0iTTQ1LjIxNzggNDEuNzYxOUM0Ny41NDY5IDQzLjQ5NjggNDkuNTIgNDAuNjk1NiA0OS41MiA0MC42OTU2QzQ5LjUyIDQwLjY5NTYgNDYuOTA4NiAzOS43NTYxIDQ1LjU2MTMgNDAuOTYxN0M0NS44MzM4IDQwLjI1NzYgNDYuMDMyNSAzOS41MjcyIDQ2LjE1NDEgMzguNzgyMUM0OC4wMzYzIDM5LjcyMTYgNDkuMTM0MiAzNy40OTk3IDQ5LjEzNDIgMzcuNDk5N0M0OS4xMzQyIDM3LjQ5OTcgNDcuMDk1MiAzNy4wNzg1IDQ2LjIzNTcgMzguMTA4OEM0Ni4yNzM2IDM3LjcxNDQgNDYuMjg4NyAzNy4zMTgxIDQ2LjI4MTIgMzYuOTIxOUM0Ni4yODEyIDM2Ljc2NTQgNDYuMjcxOCAzNi42MDg4IDQ2LjI1OTIgMzYuNDUyMkM0Ny42Mjg1IDM0Ljg1MTkgNDUuNDU3OCAzMy40MTMgNDUuNDU3OCAzMy40MTNDNDUuNDU3OCAzMy40MTMgNDQuNDY2NSAzNS42MjU1IDQ1LjkxMSAzNi40OTZDNDUuOTIwNCAzNi42NDAxIDQ1LjkyNTEgMzYuNzgyNiA0NS45MjUxIDM2LjkzMTNDNDUuOTI4MSAzNy4yNjA3IDQ1LjkxMjkgMzcuNTkwMSA0NS44Nzk3IDM3LjkxNzhDNDUuNDg0NCAzNi43NDM0IDQzLjYwMjMgMzYuMzA4MiA0My42MDIzIDM2LjMwODJDNDMuNjAyMyAzNi4zMDgyIDQzLjU0MjcgMzguODIxMyA0NS43Njk5IDM4LjY5MTNDNDUuNjM2NiAzOS40Mjg5IDQ1LjQyNjQgNDAuMTUwNSA0NS4xNDI1IDQwLjg0NDNDNDUuMDU0NyAzOS4wOTIyIDQyLjQ2MjEgMzguMDkxNiA0Mi40NjIxIDM4LjA5MTZDNDIuNDYyMSAzOC4wOTE2IDQxLjg0NTcgNDEuMzc5OCA0NC43ODE4IDQxLjYzOTdDNDQuNjA2MSA0MS45ODU1IDQ0LjQxMjkgNDIuMzIyIDQ0LjIwMyA0Mi42NDgxQzQzLjkzODEgNDMuMDYwMyA0My42NDU3IDQzLjQ1NDIgNDMuMzI3OCA0My44MjcyQzQzLjc3NjQgNDIuMDkyMyA0MS40OTQzIDQwLjQ3MDEgNDEuNDk0MyA0MC40NzAxQzQxLjQ5NDMgNDAuNDcwMSA0MC4wMjE2IDQzLjQ4NzQgNDIuNzU4NSA0NC40NDg4QzQyLjU4MjggNDQuNjM1MSA0Mi4zODgzIDQ0LjgwMTEgNDIuMjAzMyA0NC45NzQ5QzQyLjEwNiA0NS4wNjI2IDQyLjAwNDEgNDUuMTQwOSA0MS45MDY4IDQ1LjIyN0w0MS43NTc4IDQ1LjM1MzlMNDEuNjAxIDQ1LjQ3MTNMNDEuMjg3MyA0NS43MDYyTDQwLjk2MjYgNDUuOTI2OUM0MC45MjY2IDQ1Ljk0ODkgNDAuODg4OSA0NS45NzU1IDQwLjg1NzYgNDUuOTk3NEM0MS42MDczIDQ0LjUwOTkgMzkuODk5MyA0Mi42MTg0IDM5Ljg5OTMgNDIuNjE4NEMzOS44OTkzIDQyLjYxODQgMzcuOTQ5NyA0NS4wMzEzIDQwLjEyNTEgNDYuNDM1OEMzOS41MDQgNDYuNzgwNSAzOC44NTMxIDQ3LjA2ODcgMzguMTgwMiA0Ny4yOTdDMzkuMDY0OCA0Ni4xNzEyIDM4LjA3MzYgNDQuMzAxNiAzOC4wNzM2IDQ0LjMwMTZDMzguMDczNiA0NC4zMDE2IDM1LjkxNyA0NS45NDEgMzcuMzcwOSA0Ny41NDQ0QzM2Ljg0MTUgNDcuNjg2MyAzNi4zMDM1IDQ3Ljc5NDEgMzUuNzYwMiA0Ny44NjdDMzYuNDM2MiA0Ny4xMzU4IDM2LjAxNDIgNDUuNzY1NyAzNi4wMTQyIDQ1Ljc2NTdDMzYuMDE0MiA0NS43NjU3IDM0LjMwMTUgNDYuNjQ4OCAzNS4wMDU4IDQ3Ljk0MDZDMzQuNzY0MiA0Ny45NTMxIDM0LjUxOTUgNDcuOTcwMyAzNC4yNzggNDcuOTY3MkMzNC4xNDMxIDQ3Ljk2NzIgMzQuMDE0NSA0Ny45NjcyIDMzLjg3OTYgNDcuOTY3MkwzMy40ODEyIDQ3Ljk1QzMzLjA4NzYgNDcuOTIzNCAzMi42OTcgNDcuODg0MiAzMi4zMDY1IDQ3LjgyNzhMMzIuNjIwMiA0Ny43MTA0TDMyLjgxNDcgNDcuNjM2OEwzMy4wMDQ0IDQ3LjU1MzhMMzMuMzg0IDQ3LjM4NzhDMzMuNDI1NyA0Ny4zNzA5IDMzLjQ2MzUgNDcuMzQ1NiAzMy40OTUxIDQ3LjMxMzVDMzMuNTI2NiA0Ny4yODE0IDMzLjU1MTMgNDcuMjQzMiAzMy41Njc0IDQ3LjIwMTJDMzMuNTgzNiA0Ny4xNTkzIDMzLjU5MSA0Ny4xMTQ0IDMzLjU4OTEgNDcuMDY5NUMzMy41ODcyIDQ3LjAyNDYgMzMuNTc2MSA0Ni45ODA1IDMzLjU1NjUgNDYuOTRDMzMuNTExNCA0Ni44NjA0IDMzLjQzODMgNDYuODAwMyAzMy4zNTE0IDQ2Ljc3MTRDMzMuMjY0NSA0Ni43NDI1IDMzLjE2OTkgNDYuNzQ2OCAzMy4wODYgNDYuNzgzNEwzMy4wNjg3IDQ2Ljc5MTNMMzIuNzExMSA0Ni45NDc5TDMyLjUzMDggNDcuMDI2MUwzMi4zNTA0IDQ3LjA5NUwzMS45ODUgNDcuMjM5MUwzMS42MTQ4IDQ3LjM2NDRMMzEuNDI5NyA0Ny40MjU0TDMxLjI0IDQ3LjQ3ODdMMzAuOTk4NCA0Ny41MzgyTDMwLjc2MzIgNDcuNDc0TDMwLjU3MzQgNDcuNDIyM0wzMC4zODY3IDQ3LjM2MTJMMzAuMDE2NiA0Ny4yMzQ0TDI5LjY1MTEgNDcuMDkwM0wyOS40NzA4IDQ3LjAyMTRMMjkuMjkwNCA0Ni45NDMyTDI4LjkzNDQgNDYuNzg2NkgyOC45MTU1QzI4LjgzMTcgNDYuNzQ5NSAyOC43MzcgNDYuNzQ1MSAyOC42NSA0Ni43NzRDMjguNTYyOSA0Ni44MDMgMjguNDg5OSA0Ni44NjMzIDI4LjQ0NSA0Ni45NDMyQzI4LjQyNTUgNDYuOTgzOCAyOC40MTQ1IDQ3LjAyODEgMjguNDEyOSA0Ny4wNzMyQzI4LjQxMTIgNDcuMTE4MiAyOC40MTg5IDQ3LjE2MzIgMjguNDM1MyA0Ny4yMDUyQzI4LjQ1MTggNDcuMjQ3MiAyOC40NzY4IDQ3LjI4NTQgMjguNTA4NyA0Ny4zMTczQzI4LjU0MDUgNDcuMzQ5MyAyOC41Nzg3IDQ3LjM3NDQgMjguNjIwNyA0Ny4zOTFMMjkuMDAwMiA0Ny41NTdMMjkuMTkgNDcuNjM5OUwyOS4zODQ1IDQ3LjcxMzVMMjkuNjk4MiA0Ny44MzFDMjkuMzA5MiA0Ny44OTIgMjguOTE0IDQ3LjkyNjUgMjguNTIxOSA0Ny45NTMxTDI4LjEyMzUgNDcuOTcwM0MyNy45OTAyIDQ3Ljk3MDMgMjcuODYgNDcuOTcwMyAyNy43MjUxIDQ3Ljk3MDNDMjcuNDgwNCA0Ny45NzAzIDI3LjIzODkgNDcuOTU2MiAyNi45OTg5IDQ3Ljk0MzdDMjcuNjk4NCA0Ni42NDcyIDI1Ljk4ODkgNDUuNzY4OCAyNS45ODg5IDQ1Ljc2ODhDMjUuOTg4OSA0NS43Njg4IDI1LjU2MzggNDcuMTM4OSAyNi4yNDQ1IDQ3Ljg3MDFDMjUuNjk2MSA0Ny44MDAxIDI1LjE1MzIgNDcuNjkyMyAyNC42MTk2IDQ3LjU0NzZDMjYuMDc2NyA0NS45Mzk1IDIzLjkxNTQgNDQuMzA0OCAyMy45MTU0IDQ0LjMwNDhDMjMuOTE1NCA0NC4zMDQ4IDIyLjkyNDEgNDYuMTgzNyAyMy44MDg3IDQ3LjMwMDJDMjMuMTM2IDQ3LjA3MTUgMjIuNDg1MiA0Ni43ODMzIDIxLjg2MzkgNDYuNDM5QzI0LjA0MDkgNDUuMDM5MSAyMi4wOTEzIDQyLjYyMTUgMjIuMDkxMyA0Mi42MjE1QzIyLjA5MTMgNDIuNjIxNSAyMC4zODMzIDQ0LjUwODMgMjEuMTMzIDQ2LjAwMDVDMjEuMDk1NyA0NS45Nzk4IDIxLjA2IDQ1Ljk1NjIgMjEuMDI2MyA0NS45MzAxTDIwLjcwMTcgNDUuNzA5M0wyMC4zODggNDUuNDc0NEMyMC4zMzc4IDQ1LjQzNTMgMjAuMjgyOSA0NS4zOTYxIDIwLjIzMTIgNDUuMzU3TDIwLjA4MzcgNDUuMjMwMkMxOS45ODY1IDQ1LjE0NzIgMTkuODg0NSA0NS4wNzM2IDE5Ljc4NzMgNDQuOTc4MUMxOS42MDIyIDQ0LjgwNDMgMTkuNDA3NyA0NC42MzUxIDE5LjIzMDUgNDQuNDUxOUMyMS45Njc0IDQzLjQ5MDUgMjAuNDk0NiA0MC40NzMyIDIwLjQ5NDYgNDAuNDczMkMyMC40OTQ2IDQwLjQ3MzIgMTguMjEyNiA0Mi4wOTIzIDE4LjY2NDMgNDMuODI3MkMxOC4zNDYzIDQzLjQ1NDMgMTguMDUzOSA0My4wNjA0IDE3Ljc4OTEgNDIuNjQ4MUMxNy41Nzc0IDQyLjMyMjQgMTcuMzg3NiA0MS45ODI3IDE3LjIxMDQgNDEuNjM5N0MyMC4xNDE4IDQxLjM3NTEgMTkuNTMwMSAzOC4wOTE2IDE5LjUzMDEgMzguMDkxNkMxOS41MzAxIDM4LjA5MTYgMTYuOTM3NSAzOS4wOTUzIDE2Ljg0OTYgNDAuODQ0M0MxNi41NjUgNDAuMTUwNyAxNi4zNTQ3IDM5LjQyOTEgMTYuMjIyMyAzOC42OTEzQzE4LjQ0NzkgMzguODIxMyAxOC4zODgzIDM2LjMwODIgMTguMzg4MyAzNi4zMDgyQzE4LjM4ODMgMzYuMzA4MiAxNi41MDYxIDM2LjczODcgMTYuMTE1NiAzNy45MTMxQzE2LjA4MjcgMzcuNTgyNyAxNi4wNjg1IDM3LjI1NyAxNi4wNjg1IDM2LjkyNjZDMTYuMDY4NSAzNi43ODI2IDE2LjA2ODUgMzYuNjM4NSAxNi4wODI3IDM2LjQ5MTRDMTcuNTIyNSAzNS42MTc2IDE2LjUzNTkgMzMuNDA4MyAxNi41MzU5IDMzLjQwODNDMTYuNTM1OSAzMy40MDgzIDE0LjM2NTIgMzQuODQ3MiAxNS43MzYgMzYuNDQ3NUMxNS43MTcyIDM2LjYwNDEgMTUuNzEyNSAzNi43NjA3IDE1LjcwNzggMzYuOTE3M0MxNS42OTc5IDM3LjMxMzQgMTUuNzEzMSAzNy43MDk5IDE1Ljc1MzMgMzguMTA0MUMxNC45MDAxIDM3LjA3MzggMTIuODYxMSAzNy40OTk3IDEyLjg2MTEgMzcuNDk5N0MxMi44NjExIDM3LjQ5OTcgMTMuOTU5IDM5LjcyMTYgMTUuODQxMSAzOC43ODIxQzE1Ljk2MTEgMzkuNTI3NCAxNi4xNTkzIDQwLjI1NzkgMTYuNDMyNCA0MC45NjE3QzE1LjA4OTggMzkuNzUyOSAxMi40OCA0MC42OTU2IDEyLjQ4IDQwLjY5NTZDMTIuNDggNDAuNjk1NiAxNC40NTE1IDQzLjQ5MjEgMTYuNzgwNiA0MS43NjE5QzE2Ljk2MjIgNDIuMTQwOCAxNy4xNjQ5IDQyLjUwOTQgMTcuMzg3NiA0Mi44NjU4QzE3LjYwODkgNDMuMjI5IDE3Ljg1MyA0My41Nzc4IDE4LjExODUgNDMuOTEwMkMxNi41MTI0IDQzLjIzNTMgMTQuMzgyNSA0NC42NzEyIDE0LjM4MjUgNDQuNjcxMkMxNC4zODI1IDQ0LjY3MTIgMTcuMDIwNiA0Ni44ODg0IDE4LjgwODYgNDQuNzA1NkMxOC44Mjc0IDQ0LjcyMjggMTguODQgNDQuNzQwMSAxOC44NTg4IDQ0Ljc1NzNDMTkuMDM5MSA0NC45NTMgMTkuMjM4MyA0NS4xMzYyIDE5LjQzMjggNDUuMzIyNUMxOS41MzAxIDQ1LjQxMzQgMTkuNjM2NyA0NS41MDEgMTkuNzQ2NSA0NS41ODg3TDE5LjkwMzQgNDUuNzE4N0MxOS45NTM1IDQ1Ljc2MjUgMjAuMDA4NCA0NS44MDE3IDIwLjA2MDIgNDUuODQ0TDIwLjM3MzkgNDYuMDkyOUwyMC40NzkgNDYuMTY2NUMxOC45MzQxIDQ2LjAxOTMgMTcuNDMzMSA0Ny41OTc3IDE3LjQzMzEgNDcuNTk3N0MxNy40MzMxIDQ3LjU5NzcgMjAuMjk4NiA0OS4xMDU1IDIxLjQ1NjEgNDYuODAwN0MyMi4wMTY1IDQ3LjEzIDIyLjYwMTcgNDcuNDE1MyAyMy4yMDY1IDQ3LjY1NEMyMS45MjgyIDQ3LjkxNCAyMS4wNjcxIDQ5LjQ1IDIxLjA2NzEgNDkuNDVDMjEuMDY3MSA0OS40NSAyMy43OTQ2IDUwLjE1NDYgMjQuMjk5NyA0OC4wMzE0QzI0Ljc3NjMgNDguMTcwNiAyNS4yNiA0OC4yODQxIDI1Ljc0ODkgNDguMzcxMkMyNC45OTQ1IDQ4LjgwMTggMjQuNjQxNiA0OS44NDE1IDI0LjY0MTYgNDkuODQxNUMyNC42NDE2IDQ5Ljg0MTUgMjYuNjM4MiA1MC4wMTA2IDI2Ljc3NjIgNDguNTA1OEMyNi44MDg0IDQ4LjUxMTMgMjYuODQwOSA0OC41MTQ0IDI2Ljg3MzQgNDguNTE1MkMyNy4xNTExIDQ4LjUzMjUgMjcuNDI4NyA0OC41NTc1IDI3LjcwNjMgNDguNTU0NEMyNy44NDU5IDQ4LjU1NDQgMjcuOTg1NSA0OC41NjIyIDI4LjEyMzUgNDguNTU0NEwyOC41NDU0IDQ4LjU0MDNDMjkuMTAyNiA0OC41MTY5IDI5LjY1NzUgNDguNDU1NyAzMC4yMDY0IDQ4LjM1NzFMMzAuNDE1IDQ4LjMyMjZDMzAuNDg1NSA0OC4zMTAxIDMwLjU0OTggNDguMjkyOSAzMC42MTg5IDQ4LjI3ODhMMzEuMDA3OCA0OC4yMDA1TDMxLjM4MjcgNDguMjgzNUMzMS40NTMzIDQ4LjI5NiAzMS41MTc2IDQ4LjMxNDggMzEuNTg2NiA0OC4zMjczTDMxLjc5NTIgNDguMzYxOEMzMi4zNDUgNDguNDU3NCAzMi45MDAyIDQ4LjUxODYgMzMuNDU3NyA0OC41NDVMMzMuODczMyA0OC41NTc1QzM0LjAxMjkgNDguNTU3NSAzNC4xNTEgNDguNTU3NSAzNC4yOTA1IDQ4LjU1NzVDMzQuNTY4MiA0OC41NTc1IDM0Ljg0NTggNDguNTMyNSAzNS4xMjM0IDQ4LjUxODRDMzUuMTU2MyA0OC41MTg0IDM1LjE4OTMgNDguNTEwNSAzNS4yMjA2IDQ4LjUxMDVDMzUuMzY0OSA1MC4wMTA2IDM3LjM1NTMgNDkuODQ0NiAzNy4zNTUzIDQ5Ljg0NDZDMzcuMzU1MyA0OS44NDQ2IDM3LjAwMzkgNDguODA2NSAzNi4yNDk1IDQ4LjM3NTlDMzYuNzM4NSA0OC4yODkzIDM3LjIyMjMgNDguMTc1OCAzNy42OTg3IDQ4LjAzNjFDMzguMjAyMiA1MC4xNTc4IDQwLjkyOTcgNDkuNDUzMiA0MC45Mjk3IDQ5LjQ1MzJDNDAuOTI5NyA0OS40NTMyIDQwLjA2ODYgNDcuOTIzNCAzOC43OTA0IDQ3LjY1NzJDMzkuMzk0OCA0Ny40MTgzIDM5Ljk4IDQ3LjEzMzYgNDAuNTQwNyA0Ni44MDU0QzQxLjY5ODIgNDkuMTEwMiA0NC41NjM4IDQ3LjYwMDggNDQuNTYzOCA0Ny42MDA4QzQ0LjU2MzggNDcuNjAwOCA0My4wNjQzIDQ2LjAyMjUgNDEuNTE3OSA0Ni4xNzEyTDQxLjYyNDUgNDYuMDk2MUw0MS45MzgyIDQ1Ljg0ODdDNDEuOTg4NCA0NS44MDQ4IDQyLjA0MzMgNDUuNzY1NyA0Mi4wOTUxIDQ1LjcyMzRMNDIuMjUxOSA0NS41OTE5QzQyLjM1MzggNDUuNTA1NyA0Mi40NjA1IDQ1LjQxODEgNDIuNTU3NyA0NS4zMjcyQzQyLjc1MjIgNDUuMTQwOSA0Mi45NTE0IDQ0Ljk2MjQgNDMuMTMxOCA0NC43NjJDNDMuMTQ3OCA0NC43NDM2IDQzLjE2NTEgNDQuNzI2MyA0My4xODM1IDQ0LjcxMDNDNDQuOTg0MSA0Ni44ODg0IDQ3LjYyMzggNDQuNjcxMiA0Ny42MjM4IDQ0LjY3MTJDNDcuNjIzOCA0NC42NzEyIDQ1LjQ5MzggNDMuMjMwNiA0My44ODE1IDQzLjkxMDJDNDQuMTQ4MiA0My41NzgzIDQ0LjM5MjggNDMuMjI5NSA0NC42MTM5IDQyLjg2NThDNDQuODM1IDQyLjUwODkgNDUuMDM2NSA0Mi4xNDA0IDQ1LjIxNzggNDEuNzYxOVoiIGZpbGw9IiNFMjgxMDAiLz4KPHBhdGggZD0iTTQwLjU4NjQgMjMuODg0OVYyMi44MTdDNDAuNTg3MSAyMi42NjU1IDQwLjU1NzYgMjIuNTE1MiA0MC40OTk5IDIyLjM3NTFDNDAuNDQyMSAyMi4yMzQ5IDQwLjM1NzEgMjIuMTA3NSA0MC4yNDk4IDIyLjAwMDJDNDAuMTQyNSAyMS44OTI5IDQwLjAxNSAyMS44MDc5IDM5Ljg3NDcgMjEuNzUwMUMzOS43MzQzIDIxLjY5MjIgMzkuNTgzOSAyMS42NjI2IDM5LjQzMjEgMjEuNjYzSDM1Ljg3OTZDMzYuMDAzOSAyMS41NjAxIDM2LjExODQgMjEuNDQ1OCAzNi4yMjE1IDIxLjMyMTdDMzguMTAzNiAxOS40NDI3IDM4LjYxODEgMTcuMTM0NyAzNy40MTk4IDE1LjkzODRDMzYuNzc4MyAxNS4yOTY0IDM1LjgzNzIgMTUuMTI1OCAzNC43NjYgMTUuNDY4N0MzMy44MjQ5IDE1LjcyMzkgMzIuODgzOSAxNi4zMjIgMzIuMDY5OSAxNy4xNzdDMzEuNjUxMSAxNy41OTE1IDMxLjI3ODMgMTguMDQ5OCAzMC45NTc4IDE4LjU0MzlDMzAuNjUwNyAxOC4wMzk4IDMwLjI3NjEgMTcuNTc5OSAyOS44NDQzIDE3LjE3N0MyOS4wODU3IDE2LjQxMjMgMjguMTY0MSAxNS44Mjg0IDI3LjE0ODEgMTUuNDY4N0MyNi4wMzYxIDE1LjE2OTYgMjUuMDk1MSAxNS4yOTY0IDI0LjQ5NTkgMTUuOTM4NEMyMy44NTI5IDE2LjU3ODggMjMuNjgxOSAxNy41MTgzIDI0LjAyNTQgMTguNTg2MkMyNC4yODI2IDE5LjUyNTcgMjQuODgxNyAyMC40NjUyIDI1LjczODEgMjEuMjc3OEwyNi4wOCAyMS42MjA4SDIyLjUyNkMyMi4zNzQxIDIxLjYyMDEgMjIuMjIzNSAyMS42NDk2IDIyLjA4MzEgMjEuNzA3NEMyMS45NDI3IDIxLjc2NTIgMjEuODE1MSAyMS44NTAyIDIxLjcwNzggMjEuOTU3NUMyMS42MDA0IDIyLjA2NDggMjEuNTE1NCAyMi4xOTIyIDIxLjQ1NzcgMjIuMzMyNUMyMS40MDAxIDIyLjQ3MjggMjEuMzcwOCAyMi42MjMxIDIxLjM3MTYgMjIuNzc0OFYyMy44NDI2QzIxLjM3MSAyMy45OTQyIDIxLjQwMDQgMjQuMTQ0MyAyMS40NTgyIDI0LjI4NDRDMjEuNTE2IDI0LjQyNDUgMjEuNjAxIDI0LjU1MTggMjEuNzA4MyAyNC42NTg5QzIxLjgxNTYgMjQuNzY2MSAyMS45NDMxIDI0Ljg1MDkgMjIuMDgzNSAyNC45MDg2QzIyLjIyMzggMjQuOTY2MyAyMi4zNzQyIDI0Ljk5NTcgMjIuNTI2IDI0Ljk5NTFIMjQuMTEwMUMyMy4yNDA3IDI1Ljg0NzkgMjIuNTUwNyAyNi44NjU0IDIyLjA4MDQgMjcuOTg4QzIxLjYxMDIgMjkuMTEwNiAyMS4zNjkyIDMwLjMxNTYgMjEuMzcxNiAzMS41MzI0QzIxLjM3MTYgMzYuNjk5NSAyNS42OTQyIDQwLjkyNzIgMzEuMDAwMiA0MC45MjcyQzM2LjMwNjIgNDAuOTI3MiA0MC42MzA0IDM2LjY5OTUgNDAuNjMwNCAzMS41MzI0QzQwLjYyNzEgMzAuMzE2MyA0MC4zODM0IDI5LjExMjggMzkuOTEzMiAyNy45OTFDMzkuNDQzIDI2Ljg2OTIgMzguNzU1NSAyNS44NTExIDM3Ljg5MDMgMjQuOTk1MUgzOS40NzQ0QzM5LjYyMTcgMjQuOTk5OSAzOS43Njg1IDI0Ljk3NDQgMzkuOTA1NiAyNC45MjAzQzQwLjA0MjcgMjQuODY2MiA0MC4xNjcyIDI0Ljc4NDYgNDAuMjcxNCAyNC42ODA2QzQwLjM3NTYgMjQuNTc2NSA0MC40NTc0IDI0LjQ1MjIgNDAuNTExNiAyNC4zMTU0QzQwLjU2NTggMjQuMTc4NSA0MC41OTEyIDI0LjAzMiA0MC41ODY0IDIzLjg4NDlaTTMxLjk4NTIgMjAuMzM4NEMzMi4xNTYxIDE5LjY5NzkgMzIuNjI2NyAxOC45NzE0IDMzLjI2ODEgMTguMzMxQzMzLjgzIDE3Ljc1MzMgMzQuNTE5IDE3LjMxNDIgMzUuMjgwNCAxNy4wNDg2QzM1LjQ2MjkgMTcuMDAyOCAzNS42NDk0IDE2Ljk3NDQgMzUuODM3MiAxNi45NjRDMzYuMDA0MyAxNi45NDgyIDM2LjE3MTQgMTYuOTkzMiAzNi4zMDc4IDE3LjA5MDlDMzYuNjQ5NyAxNy40MzM4IDM2LjM1MDEgMTguODQzIDM1LjEwOTUgMjAuMTI1NEMzNC41NDY5IDIwLjcwMzQgMzMuODU2NyAyMS4xNDIxIDMzLjA5NCAyMS40MDYyQzMyLjkxMTggMjEuNDUzMyAzMi43MjUyIDIxLjQ4MjEgMzIuNTM3MyAyMS40OTI0QzMyLjM3IDIxLjUwODUgMzIuMjAyNiAyMS40NjI4IDMyLjA2NjcgMjEuMzY0QzMxLjg1NjYgMjEuMTkzMyAzMS44NTY2IDIwLjgwODEgMzEuOTg1MiAyMC4zMzg0Wk0yNS42MDc5IDE4LjExNjVDMjUuNDc5MyAxNy42NDY3IDI1LjQ3OTMgMTcuMjYzMSAyNS42NTAzIDE3LjA5MDlDMjUuNzg2NiAxNi45OTMyIDI1Ljk1MzggMTYuOTQ4MiAyNi4xMjA4IDE2Ljk2NEMyNi43MTk5IDE2Ljk2NCAyNy43NDczIDE3LjM4OTkgMjguNjg5OSAxOC4zMzFDMjkuMjY4MyAxOC44OTEzIDI5LjcwNzYgMTkuNTc4NiAyOS45NzI5IDIwLjMzODRDMzAuMTAxNSAyMC44MDgxIDMwLjEwMTUgMjEuMTkzMyAyOS45MzA1IDIxLjM2NEMyOS43NTk2IDIxLjUzNDYgMjkuMzczNyAyMS41MzQ2IDI4LjkwMzIgMjEuNDA2MkMyOC4yNjE3IDIxLjIzNTYgMjcuNTM0IDIwLjc2NTggMjYuODkyNSAyMC4xMjU0QzI2LjI5ODcgMTkuNTc2OSAyNS44NTY0IDE4Ljg4NSAyNS42MDc5IDE4LjExNjVaTTM1LjMyMjggMzIuNDI5NkgzNC4wODIyQzMzLjQ4MTggMzIuNDMzMyAzMi45MDcxIDMyLjY3MyAzMi40ODI2IDMzLjA5NjhDMzIuMDU4IDMzLjUyMDYgMzEuODE3OSAzNC4wOTQ0IDMxLjgxNDIgMzQuNjkzN1YzNS45MzM5QzMxLjgxMDggMzYuMTQ1MiAzMS43MzA3IDM2LjM0ODIgMzEuNTg4OCAzNi41MDUxQzMxLjQ0NjkgMzYuNjYyIDMxLjI1MjggMzYuNzYyMyAzMS4wNDI1IDM2Ljc4NzJDMzAuOTI5NSAzNi43OTYyIDMwLjgxNTcgMzYuNzgyIDMwLjcwODMgMzYuNzQ1NkMzMC42MDA5IDM2LjcwOTEgMzAuNTAyMSAzNi42NTExIDMwLjQxOCAzNi41NzUyQzMwLjMzMzggMzYuNDk5MiAzMC4yNjYxIDM2LjQwNjkgMzAuMjE5IDM2LjMwMzlDMzAuMTcxOCAzNi4yMDA5IDMwLjE0NjMgMzYuMDg5NCAzMC4xNDM4IDM1Ljk3NjFWMzQuNjkzN0MzMC4xNDAxIDM0LjA5NDQgMjkuOSAzMy41MjA2IDI5LjQ3NTUgMzMuMDk2OEMyOS4wNTA5IDMyLjY3MyAyOC40NzYyIDMyLjQzMzMgMjcuODc1OSAzMi40Mjk2SDI2LjYzNTNDMjYuNDIzNSAzMi40MjY1IDI2LjIyIDMyLjM0NyAyNi4wNjI1IDMyLjIwNTZDMjUuOTA1MSAzMi4wNjQyIDI1LjgwNDMgMzEuODcwNyAyNS43Nzg5IDMxLjY2MDhDMjUuNzcwMSAzMS41NDc4IDI1Ljc4NDUgMzEuNDM0MiAyNS44MjEyIDMxLjMyN0MyNS44NTc5IDMxLjIxOTggMjUuOTE2MiAzMS4xMjExIDI1Ljk5MjQgMzEuMDM3MUMyNi4wNjg2IDMwLjk1MzIgMjYuMTYxMSAzMC44ODU2IDI2LjI2NDQgMzAuODM4NUMyNi4zNjc2IDMwLjc5MTUgMjYuNDc5NCAzMC43NjYgMjYuNTkyOSAzMC43NjM1SDI3Ljg3NTlDMjguNDc2NSAzMC43NTk4IDI5LjA1MTUgMzAuNTE5OSAyOS40NzYgMzAuMDk1N0MyOS45MDA2IDI5LjY3MTYgMzAuMTQwNSAyOS4wOTc0IDMwLjE0MzggMjguNDk3OFYyNy4yMTU0QzMwLjE0MTIgMjcuMTA4MSAzMC4xNjA1IDI3LjAwMTMgMzAuMjAwNiAyNi45MDE2QzMwLjI0MDYgMjYuODAxOSAzMC4zMDA1IDI2LjcxMTQgMzAuMzc2NiAyNi42MzU2QzMwLjQ1MjcgMjYuNTU5NyAzMC41NDM1IDI2LjUwMDEgMzAuNjQzNCAyNi40NjAzQzMwLjc0MzMgMjYuNDIwNiAzMC44NTAzIDI2LjQwMTUgMzAuOTU3OCAyNi40MDQzQzMxLjA4MDIgMjYuNDA0MyAzMS4yMDEgMjYuNDMxIDMxLjMxMTkgMjYuNDgyN0MzMS40MjI3IDI2LjUzNDQgMzEuNTIwOCAyNi42MDk3IDMxLjU5OTMgMjYuNzAzNEMzMS43MTg1IDI2Ljg0NjcgMzEuNzc5NSAyNy4wMjk0IDMxLjc3MDMgMjcuMjE1NFYyOC40OTc4QzMxLjc3NCAyOS4wOTY4IDMyLjAxMzYgMjkuNjcwMiAzMi40Mzc0IDMwLjA5NDJDMzIuODYxMiAzMC41MTgyIDMzLjQzNTIgMzAuNzU4NiAzNC4wMzUxIDMwLjc2MzVIMzUuMzE5NkMzNS41NDA5IDMwLjc2MzUgMzUuNzUzMiAzMC44NTEzIDM1LjkwOTcgMzEuMDA3NUMzNi4wNjYxIDMxLjE2MzcgMzYuMTU0MSAzMS4zNzU2IDM2LjE1NDEgMzEuNTk2NkMzNi4xNTQxIDMxLjgxNzUgMzYuMDY2MSAzMi4wMjk0IDM1LjkwOTcgMzIuMTg1NkMzNS43NTMyIDMyLjM0MTggMzUuNTQwOSAzMi40Mjk2IDM1LjMxOTYgMzIuNDI5NkgzNS4zMjI4WiIgZmlsbD0iI0UyODEwMCIvPgo8cGF0aCBvcGFjaXR5PSIwLjIiIGQ9Ik00OC4wNjkgMTMuOTU5MkwxMy45MzA2IDQ4LjA0MDdDMTEuNjc0OCA0NS44MDYgOS44ODMyOCA0My4xNDg3IDguNjU4NjkgNDAuMjIxMUM3LjQzNDExIDM3LjI5MzUgNi44MDA1OSAzNC4xNTM0IDYuNzk0NDggMzAuOTgwOEM2Ljc4ODM3IDI3LjgwODIgNy40MDk3OSAyNC42NjU2IDguNjIzMDkgMjEuNzMzNEM5LjgzNjM5IDE4LjgwMTEgMTEuNjE3NyAxNi4xMzY5IDEzLjg2NDggMTMuODkzNkMxNi4xMTE5IDExLjY1MDIgMTguNzgwNiA5Ljg3MTg3IDIxLjcxNzcgOC42NjA2QzI0LjY1NDkgNy40NDkzMiAyNy44MDI3IDYuODI4OTQgMzAuOTgwNSA2LjgzNTA0QzM0LjE1ODQgNi44NDExNCAzNy4zMDM4IDcuNDczNiA0MC4yMzYzIDguNjk2MTRDNDMuMTY4NyA5LjkxODY5IDQ1LjgzMDUgMTEuNzA3MyA0OC4wNjkgMTMuOTU5MloiIGZpbGw9IndoaXRlIi8+CjwvZz4KPGRlZnM+CjxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQwX2xpbmVhciIgeDE9Ii0wLjAwMDE4MDE0NyIgeTE9IjMwLjk5OTciIHgyPSI2MS45OTk4IiB5Mj0iMzAuOTk5NyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgo8c3RvcCBvZmZzZXQ9IjAuNCIgc3RvcC1jb2xvcj0iI0ZGQ0UxNCIvPgo8c3RvcCBvZmZzZXQ9IjAuNiIgc3RvcC1jb2xvcj0iI0VGOTAwMCIvPgo8L2xpbmVhckdyYWRpZW50Pgo8bGluZWFyR3JhZGllbnQgaWQ9InBhaW50MV9saW5lYXIiIHgxPSI1LjQzNDQ0IiB5MT0iMzAuOTk4NCIgeDI9IjU2LjU2NjgiIHkyPSIzMC45OTg0IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CjxzdG9wIG9mZnNldD0iMC40IiBzdG9wLWNvbG9yPSIjRUY5MDAwIi8+CjxzdG9wIG9mZnNldD0iMC42IiBzdG9wLWNvbG9yPSIjRkZDRTE0Ii8+CjwvbGluZWFyR3JhZGllbnQ+CjxjbGlwUGF0aCBpZD0iY2xpcDAiPgo8cmVjdCB3aWR0aD0iNjIiIGhlaWdodD0iNjIiIGZpbGw9IndoaXRlIi8+CjwvY2xpcFBhdGg+CjwvZGVmcz4KPC9zdmc+Cg=='\n const badgeSilver = 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNjIiIGhlaWdodD0iNjIiIHZpZXdCb3g9IjAgMCA2MiA2MiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwKSI+CjxwYXRoIGQ9Ik02MS4xNDk3IDMyLjQwMTFDNjEuMzMxNiAzMi41ODQ4IDYxLjQ2OTkgMzIuODA3NCA2MS41NTQyIDMzLjA1MjNDNjEuNjM4NiAzMy4yOTcyIDYxLjY2NjggMzMuNTU4IDYxLjYzNjkgMzMuODE1NEM2MS42MDY5IDM0LjA3MjcgNjEuNTE5NCAzNC4zMTk5IDYxLjM4MTEgMzQuNTM4N0M2MS4yNDI3IDM0Ljc1NzQgNjEuMDU3IDM0Ljk0MTkgNjAuODM3NyAzNS4wNzg2QzYwLjcyNTMgMzUuMTQ3NCA2MC42MjA3IDM1LjIyODIgNjAuNTI1OCAzNS4zMTk3QzYwLjIzIDM1LjYxNjUgNjAuMDUyNCAzNi4wMTE0IDYwLjAyNjMgMzYuNDMwNEM2MC4wMDAyIDM2Ljg0OTMgNjAuMTI3MyAzNy4yNjM0IDYwLjM4MzkgMzcuNTk0OUM2MC41NDgzIDM3LjgwMzQgNjAuNjYxOSAzOC4wNDc2IDYwLjcxNTcgMzguMzA3OUM2MC43Njk2IDM4LjU2ODMgNjAuNzYyMSAzOC44Mzc3IDYwLjY5NCAzOS4wOTQ3QzYwLjYyNTggMzkuMzUxNyA2MC40OTg4IDM5LjU4OTEgNjAuMzIzMiAzOS43ODgxQzYwLjE0NzUgMzkuOTg3MiA1OS45Mjc5IDQwLjE0MjMgNTkuNjgyIDQwLjI0MTFDNTkuNDU5MiA0MC4zMyA1OS4yNTc3IDQwLjQ2NTEgNTkuMDkwNSA0MC42Mzc2QzU4LjkyMzMgNDAuODEwMSA1OC43OTQzIDQxLjAxNiA1OC43MTE4IDQxLjI0MkM1OC42Mjk0IDQxLjQ2OCA1OC41OTU0IDQxLjcwODkgNTguNjEyMSA0MS45NDlDNTguNjI4NyA0Mi4xODkxIDU4LjY5NTcgNDIuNDIyOSA1OC44MDg2IDQyLjYzNTJDNTguOTc4MiA0Mi45NjEyIDU5LjAzOTUgNDMuMzMzMiA1OC45ODMzIDQzLjY5NjdDNTguOTI3MiA0NC4wNjAxIDU4Ljc1NjcgNDQuMzk2IDU4LjQ5NjcgNDQuNjU1MUM1OC4yNjE1IDQ0Ljg4NyA1Ny45NjU3IDQ1LjA0NzIgNTcuNjQzNSA0NS4xMTcxQzU3LjMxOTcgNDUuMTgxNSA1Ny4wMjI2IDQ1LjM0MTggNTYuNzkwNCA0NS41Nzc0QzU2LjU2NSA0NS44MDAxIDU2LjQwNTcgNDYuMDgxMiA1Ni4zMzAyIDQ2LjM4OTVDNTYuMjU0OCA0Ni42OTc4IDU2LjI2NjEgNDcuMDIxMSA1Ni4zNjMgNDcuMzIzM0M1Ni40NjA0IDQ3LjYyNSA1Ni40NzIxIDQ3Ljk0ODEgNTYuMzk2OSA0OC4yNTYxQzU2LjMyMTcgNDguNTY0MiA1Ni4xNjI1IDQ4Ljg0NTIgNTUuOTM3MyA0OS4wNjc2QzU1LjYyOTYgNDkuMzcwOSA1NS4yMjAyIDQ5LjU0NzkgNTQuNzg5MyA0OS41NjRDNTQuMzU2MiA0OS41NzI3IDUzLjk0MzUgNDkuNzUwMSA1My42MzgzIDUwLjA1ODhDNTMuNDUwOCA1MC4yNDczIDUzLjMwOTQgNTAuNDc2OSA1My4yMjUyIDUwLjcyOTZDNTMuMTQxIDUwLjk4MjMgNTMuMTE2NCA1MS4yNTExIDUzLjE1MzIgNTEuNTE1QzUzLjE4ODUgNTEuNzgwMSA1My4xNjI0IDUyLjA0OTkgNTMuMDc2OSA1Mi4zMDMzQzUyLjk5MTQgNTIuNTU2NiA1Mi44NDg5IDUyLjc4NjggNTIuNjYwNCA1Mi45NzU5QzUyLjQ3MjcgNTMuMTY1OSA1Mi4yNDM0IDUzLjMwOTUgNTEuOTkwOSA1My4zOTUxQzUxLjczODMgNTMuNDgwNyA1MS40NjkzIDUzLjUwNjEgNTEuMjA1MiA1My40NjkxQzUwLjk2NzUgNTMuNDM2NiA1MC43MjU3IDUzLjQ1NDQgNTAuNDk1MyA1My41MjE1QzUwLjI2NDkgNTMuNTg4NyA1MC4wNTExIDUzLjcwMzUgNDkuODY3NiA1My44NTg4QzQ5LjY4NDIgNTQuMDE0IDQ5LjUzNTIgNTQuMjA2MSA0OS40MzA0IDU0LjQyMjdDNDkuMzI1NSA1NC42MzkzIDQ5LjI2NyA1NC44NzU2IDQ5LjI1ODggNTUuMTE2M0M0OS4yNDkxIDU1LjU0OTcgNDkuMDczMSA1NS45NjI2IDQ4Ljc2NzUgNTYuMjY4OEM0OC41NDUxIDU2LjQ5NDEgNDguMjY1IDU2LjY1MzUgNDcuOTU4MSA1Ni43MjkyQzQ3LjY1MTMgNTYuODA0OSA0Ny4zMjk1IDU2Ljc5NCA0Ny4wMjg0IDU2LjY5NzhDNDYuODAwMiA1Ni42MjUgNDYuNTU5MiA1Ni42MDEgNDYuMzIxMiA1Ni42Mjc0QzQ2LjA4MzEgNTYuNjUzNyA0NS44NTMyIDU2LjcyOTggNDUuNjQ2MiA1Ni44NTA4QzQ1LjQzOTIgNTYuOTcxNyA0NS4yNTk3IDU3LjEzNDggNDUuMTE5MiA1Ny4zMjk2QzQ0Ljk3ODggNTcuNTI0NCA0NC44ODA2IDU3Ljc0NjYgNDQuODMwOSA1Ny45ODE4QzQ0Ljc2MDEgNTguMzA1MiA0NC42MDA3IDU4LjYwMjQgNDQuMzcwOCA1OC44Mzk4QzQ0LjExMjcgNTkuMTAwOSA0My43NzgxIDU5LjI3MjEgNDMuNDE2MSA1OS4zMjg0QzQzLjA1NCA1OS4zODQ4IDQyLjY4MzUgNTkuMzIzMyA0Mi4zNTg4IDU5LjE1M0M0Mi4wMzM5IDU4Ljk4MjMgNDEuNjYzMSA1OC45MjA2IDQxLjMwMDcgNTguOTc3QzQwLjkzODMgNTkuMDMzNCA0MC42MDM1IDU5LjIwNDggNDAuMzQ1MyA1OS40NjYyQzQwLjE4MzkgNTkuNjI5MiA0MC4wNTc2IDU5LjgyMzcgMzkuOTc0MSA2MC4wMzc3QzM5Ljg4OTggNjAuMjUxNyAzOS43NjMgNjAuNDQ2MSAzOS42MDEzIDYwLjYwOTJDMzkuMzA1NiA2MC45MDU1IDM4LjkxMjQgNjEuMDgzMyAzOC40OTU1IDYxLjEwOTJDMzguMDc4NiA2MS4xMzUxIDM3LjY2NjUgNjEuMDA3NSAzNy4zMzY3IDYwLjc1MDFDMzcuMDA2NiA2MC40OTM3IDM2LjU5NDYgNjAuMzY2OCAzNi4xNzggNjAuMzkzM0MzNS43NjE1IDYwLjQxOTggMzUuMzY4OCA2MC41OTc5IDM1LjA3MzYgNjAuODk0MkMzNC45ODEgNjAuOTg4MyAzNC45MDAzIDYxLjA5MzQgMzQuODMzNCA2MS4yMDc0QzM0Ljc2NjUgNjEuMzIxMyAzNC42ODU4IDYxLjQyNjUgMzQuNTkzMiA2MS41MjA1QzM0LjQyNzcgNjEuNjg1NiAzNC4yMzA3IDYxLjgxNTQgMzQuMDEzOSA2MS45MDE5QzMzLjc5NzEgNjEuOTg4NCAzMy41NjUgNjIuMDMgMzMuMzMxOCA2Mi4wMjRDMzMuMDk4NiA2Mi4wMTggMzIuODY5IDYxLjk2NDYgMzIuNjU2OSA2MS44NjdDMzIuNDQ0OCA2MS43Njk0IDMyLjI1NDYgNjEuNjI5NyAzMi4wOTc4IDYxLjQ1NjNMMzIuMDMwNyA2MS4zOTA2QzMxLjg2NjggNjEuMjI1NyAzMS42NzE0IDYxLjA5NTggMzEuNDU2MSA2MS4wMDg5QzMxLjI0MDggNjAuOTIyIDMxLjAxMDMgNjAuODc5OCAzMC43NzgzIDYwLjg4NUMzMC41NDYzIDYwLjg5MDEgMzAuMzE3OCA2MC45NDI0IDMwLjEwNjYgNjEuMDM4N0MyOS44OTUzIDYxLjEzNSAyOS43MDU3IDYxLjI3MzQgMjkuNTQ5MyA2MS40NDU0TDI5LjQ4MzcgNjEuNTA5NkMyOS4zMDA3IDYxLjY5MjUgMjkuMDc4OSA2MS44MzE2IDI4LjgzNDggNjEuOTE2NUMyOC41OTA3IDYyLjAwMTMgMjguMzMwNyA2Mi4wMjk4IDI4LjA3NDIgNjEuOTk5N0MyNy44MTc2IDYxLjk2OTYgMjcuNTcxMSA2MS44ODE3IDI3LjM1MzIgNjEuNzQyNkMyNy4xMzUyIDYxLjYwMzUgMjYuOTUxMiA2MS40MTY4IDI2LjgxNTIgNjEuMTk2NEMyNi43NDU5IDYxLjA4MzYgMjYuNjY0OSA2MC45Nzg3IDI2LjU3MzQgNjAuODgzMkMyNi4yNzkxIDYwLjU4NTMgMjUuODg2IDYwLjQwNjMgMjUuNDY4OSA2MC4zOEMyNS4wNTE3IDYwLjM1MzcgMjQuNjM5NSA2MC40ODIxIDI0LjMxMDMgNjAuNzQwN0MyMy45ODA1IDYwLjk5ODEgMjMuNTY4NCA2MS4xMjU3IDIzLjE1MTUgNjEuMDk5OEMyMi43MzQ2IDYxLjA3MzkgMjIuMzQxNCA2MC44OTYxIDIyLjA0NTcgNjAuNTk5OEMyMS44ODQ3IDYwLjQzNjUgMjEuNzU4NCA2MC4yNDIxIDIxLjY3NDUgNjAuMDI4M0MyMS41OTA0IDU5LjgxNDYgMjEuNDY0MSA1OS42MjAyIDIxLjMwMzMgNTkuNDU2OEMyMS4wNDUxIDU5LjE5NTQgMjAuNzEwMiA1OS4wMjQgMjAuMzQ3OSA1OC45Njc2QzE5Ljk4NTUgNTguOTExMiAxOS42MTQ3IDU4Ljk3MjkgMTkuMjg5OCA1OS4xNDM2QzE4Ljk2NjYgNTkuMzE3OSAxOC41OTU5IDU5LjM4MjMgMTguMjMzMSA1OS4zMjczQzE3Ljg3MDQgNTkuMjcyMyAxNy41MzUyIDU5LjEwMDcgMTcuMjc3OCA1OC44MzgzQzE3LjA0NzUgNTguNjAxOSAxNi44ODg2IDU4LjMwNSAxNi44MTkzIDU3Ljk4MThDMTYuNzcxMyA1Ny43NDUzIDE2LjY3NDUgNTcuNTIxNyAxNi41MzUgNTcuMzI1MkMxNi4zOTU0IDU3LjEyODggMTYuMjE2MyA1Ni45NjM5IDE2LjAwOTMgNTYuODQxNEMxNS44MDIzIDU2LjcxODkgMTUuNTcxOSA1Ni42NDE0IDE1LjMzMzEgNTYuNjEzOUMxNS4wOTQ0IDU2LjU4NjUgMTQuODUyNSA1Ni42MDk4IDE0LjYyMzIgNTYuNjgyMkMxNC4zMjIxIDU2Ljc3ODkgMTQuMDAwMSA1Ni43OTAxIDEzLjY5MjkgNTYuNzE0N0MxMy4zODU4IDU2LjYzOTMgMTMuMTA1NCA1Ni40ODAxIDEyLjg4MjcgNTYuMjU0N0MxMi41ODE2IDU1Ljk0NDYgMTIuNDA2IDU1LjUzMzQgMTIuMzg5OCA1NS4xMDA3QzEyLjM3OTggNTQuNjY3NCAxMi4yMDM4IDU0LjI1NDcgMTEuODk4NSA1My45NDgyQzExLjcxMSA1My43NTk5IDExLjQ4MjYgNTMuNjE3OCAxMS4yMzEyIDUzLjUzM0MxMC45Nzk4IDUzLjQ0ODMgMTAuNzEyMyA1My40MjMyIDEwLjQ0OTYgNTMuNDU5N0MxMC4xODU3IDUzLjQ5MzQgOS45MTc1NiA1My40NjY1IDkuNjY1NDkgNTMuMzgxMUM5LjQxMzQzIDUzLjI5NTcgOS4xODM5NyA1My4xNTM5IDguOTk0NDEgNTIuOTY2NUM4LjgwMTM2IDUyLjc2NSA4LjY1NzYxIDUyLjUyMTIgOC41NzQ1MiA1Mi4yNTQzQzguNDkxNDIgNTEuOTg3NSA4LjQ3MTI1IDUxLjcwNDkgOC41MTU1OSA1MS40Mjg4QzguNTUxNzUgNTEuMTYzOCA4LjUyNTg5IDUwLjg5MzkgOC40NDAwNyA1MC42NDA2QzguMzU0MjUgNTAuMzg3MiA4LjIxMDgzIDUwLjE1NzUgOC4wMjExOCA0OS45Njk1QzcuNzExNDkgNDkuNjYzNSA3LjI5NjgyIDQ5LjQ4ODEgNi44NjIzNSA0OS40Nzk0QzYuNDI5OTYgNDkuNDY5NSA2LjAxODEyIDQ5LjI5MjIgNS43MTI4NyA0OC45ODQ2QzUuNDg3MzEgNDguNzYyMSA1LjMyNzk4IDQ4LjQ4MDggNS4yNTI3NyA0OC4xNzI0QzUuMTc3NTYgNDcuODY0IDUuMTg5NDQgNDcuNTQwNyA1LjI4NzA4IDQ3LjIzODdDNS4zODExOSA0Ni45MzY1IDUuMzkxMTEgNDYuNjE0MiA1LjMxNTc4IDQ2LjMwNjdDNS4yNDA0NSA0NS45OTkyIDUuMDgyNzQgNDUuNzE4MyA0Ljg1OTczIDQ1LjQ5NDRDNC42MjY1OCA0NS4yNTk4IDQuMzI5OTEgNDUuMDk5MiA0LjAwNjYgNDUuMDMyNUMzLjY4NDc3IDQ0Ljk2MTcgMy4zODkxOSA0NC44MDE2IDMuMTUzNDYgNDQuNTcwNkMyLjg5NDcyIDQ0LjMxMDUgMi43MjU2MyA0My45NzQyIDIuNjcwOTEgNDMuNjEwOEMyLjYxNjE5IDQzLjI0NzQgMi42Nzg3MSA0Mi44NzU5IDIuODQ5MzIgNDIuNTUwN0MzLjAxODk3IDQyLjIyNDcgMy4wODAyIDQxLjg1MjcgMy4wMjQwNyA0MS40ODkzQzIuOTY3OTQgNDEuMTI1OCAyLjc5NzM5IDQwLjc4OTkgMi41MzczOSA0MC41MzA4QzIuMzc1OSA0MC4zNjggMi4xODI2MSA0MC4yNDA2IDEuOTY5NjcgNDAuMTU2NUMxLjc1Nzk3IDQwLjA2OTUgMS41NjU1NSAzOS45NDEzIDEuNDAzNTEgMzkuNzc5MkMxLjEwODg0IDM5LjQ4MjQgMC45MzIwMjQgMzkuMDg4IDAuOTA2MTg1IDM4LjY2OThDMC44ODAzNDYgMzguMjUxNiAxLjAwNzI1IDM3LjgzODIgMS4yNjMxNCAzNy41MDcyQzEuNTIwNTMgMzcuMTc2IDEuNjQ4NDggMzYuNzYxOCAxLjYyMjkyIDM2LjM0MjVDMS41OTczNSAzNS45MjMyIDEuNDIwMDMgMzUuNTI3NyAxLjEyNDMzIDM1LjIzMDVDMS4wMzMxNCAzNS4xMzc5IDAuOTMxMDAzIDM1LjA1NyAwLjgyMDE5NyAzNC45ODk0QzAuNzA2NDkyIDM0LjkyMjUgMC42MDE2NzkgMzQuODQxNSAwLjUwODI2NCAzNC43NDgyQzAuMzQzNDgzIDM0LjU4MjIgMC4yMTQwMTEgMzQuMzg0MyAwLjEyNzcwMyAzNC4xNjY2QzAuMDQxMzk0MSAzMy45NDg4IDQuODUzNDJlLTA1IDMzLjcxNTcgMC4wMDYxNzQxNyAzMy40ODE1QzAuMDEyMjk5OCAzMy4yNDcyIDAuMDY1NzY4OSAzMy4wMTY2IDAuMTYzMzM4IDMyLjgwMzdDMC4yNjA5MDcgMzIuNTkwOCAwLjQwMDU0MSAzMi40IDAuNTczNzcgMzIuMjQyOUwwLjYyODM1OCAzMi4xODgxQzAuNzkyOTM3IDMyLjAyMiAwLjkyMjIzIDMxLjgyNDEgMS4wMDg0MSAzMS42MDYzQzEuMDk0NTkgMzEuMzg4NiAxLjEzNTg3IDMxLjE1NTYgMS4xMjk3NSAzMC45MjE0QzEuMTIzNjIgMzAuNjg3MiAxLjA3MDIyIDMwLjQ1NjYgMC45NzI3ODMgMzAuMjQzN0MwLjg3NTM0MiAzMC4wMzA4IDAuNzM1ODg1IDI5Ljg0IDAuNTYyODUyIDI5LjY4MjhMMC40OTczNDYgMjkuNjE1NUMwLjMxNTQwOSAyOS40MzE3IDAuMTc3MTE0IDI5LjIwOTEgMC4wOTI3NjA5IDI4Ljk2NDJDMC4wMDg0MDc2MiAyOC43MTk0IC0wLjAxOTgzMDEgMjguNDU4NSAwLjAxMDE1MDggMjguMjAxMkMwLjA0MDEzMTcgMjcuOTQzOCAwLjEyNzU1OSAyNy42OTY2IDAuMjY1OTIgMjcuNDc3OUMwLjQwNDI4MiAyNy4yNTkyIDAuNTkwMDEzIDI3LjA3NDYgMC44MDkyOCAyNi45Mzc5QzAuOTIyNzk4IDI2Ljg3MDIgMS4wMjc1NyAyNi43ODg3IDEuMTIxMjEgMjYuNjk1MkMxLjQxNjQ5IDI2LjM5OTMgMS41OTMzOSAyNi4wMDQ4IDEuNjE4NCAyNS41ODY3QzEuNjQzNDEgMjUuMTY4NSAxLjUxNDc5IDI0Ljc1NTcgMS4yNTY5IDI0LjQyNjRDMS4wOTIwNCAyNC4yMTc2IDAuOTc4MjA3IDIzLjk3MjkgMC45MjQ1MzQgMjMuNzEyQzAuODcwODYyIDIzLjQ1MSAwLjg3ODg0MyAyMy4xODExIDAuOTQ3ODM5IDIyLjkyMzhDMS4wMTY4MyAyMi42NjY1IDEuMTQ0OTIgMjIuNDI5MSAxLjMyMTgzIDIyLjIzMDRDMS40OTg3NSAyMi4wMzE4IDEuNzE5NTUgMjEuODc3NiAxLjk2NjU1IDIxLjc4MDFDMi4xODk2NyAyMS42OTE0IDIuMzkxNTkgMjEuNTU2NCAyLjU1OTA5IDIxLjM4MzlDMi43MjY1OSAyMS4yMTEzIDIuODU1ODggMjEuMDA1MiAyLjkzODQ5IDIwLjc3OUMzLjAyMTEgMjAuNTUyOCAzLjA1NTE3IDIwLjMxMTcgMy4wMzg0NiAyMC4wNzEzQzMuMDIxNzUgMTkuODMxIDIuOTU0NjQgMTkuNTk2OSAyLjg0MTUyIDE5LjM4NDRDMi42NjkyNyAxOS4wNTk0IDIuNjA2NTcgMTguNjg3IDIuNjYyOCAxOC4zMjMxQzIuNzE5MDQgMTcuOTU5MyAyLjg5MTE4IDE3LjYyMzUgMy4xNTM0NiAxNy4zNjYxQzMuMzg3ODMgMTcuMTMxNiAzLjY4MzY3IDE2Ljk2ODcgNC4wMDY2IDE2Ljg5NjRDNC4zMjYyNyAxNi44MjcxIDQuNjIwMiAxNi42NjkyIDQuODU1MDUgMTYuNDQwN0M1LjA4MDE2IDE2LjIxNzkgNS4yMzkxOCAxNS45MzY2IDUuMzE0MzYgMTUuNjI4M0M1LjM4OTU1IDE1LjMyMDEgNS4zNzc5NCAxNC45OTY5IDUuMjgwODQgMTQuNjk0OEM1LjE4NSAxNC4zOTM1IDUuMTc0MiAxNC4wNzE1IDUuMjQ5NjQgMTMuNzY0NEM1LjMyNTA4IDEzLjQ1NzMgNS40ODM4IDEzLjE3NzIgNS43MDgxOSAxMi45NTUyQzYuMDE3NTcgMTIuNjUwNyA2LjQyOTM1IDEyLjQ3MzYgNi44NjIzNSAxMi40NTg4QzcuMjk0NjggMTIuNDUwMSA3LjcwNjc4IDEyLjI3MzMgOC4wMTE4MiAxMS45NjU2QzguMjAwOTEgMTEuNzc3MyA4LjM0Mzc1IDExLjU0NzQgOC40MjkwMyAxMS4yOTQyQzguNTE0MyAxMS4wNDA5IDguNTM5NjcgMTAuNzcxMSA4LjUwMzExIDEwLjUwNjNDOC40NzAwMSAxMC4yNDEzIDguNDk3IDkuOTcyMyA4LjU4MjA4IDkuNzE5MzJDOC42NjcxNSA5LjQ2NjMzIDguODA4MTEgOS4yMzU5MyA4Ljk5NDQxIDkuMDQ1MzZDOS4xOTUzMiA4Ljg1MzY1IDkuNDM1NDYgOC43MDgyMyA5LjY5ODEgOC42MTkyNkM5Ljk2MDc0IDguNTMwMjggMTAuMjM5NSA4LjQ5OTkgMTAuNTE1MSA4LjUzMDIxQzEwLjc1MTggOC41NjE3NyAxMC45OTI1IDguNTQzMzggMTEuMjIxNyA4LjQ3NjE5QzExLjQ1MDkgOC40MDkwMSAxMS42NjM3IDguMjk0NTMgMTEuODQ2MyA4LjE0MDA3QzEyLjAyODkgNy45ODU2IDEyLjE3NzQgNy43OTQ1NyAxMi4yODIzIDcuNTc5MThDMTIuMzg3MiA3LjM2Mzc5IDEyLjQ0NjEgNy4xMjg4IDEyLjQ1NTMgNi44ODkyNEMxMi40NjM2IDYuNDUzNTggMTIuNjM5IDYuMDM3OTQgMTIuOTQ1IDUuNzI4OTdDMTMuMTY3IDUuNTAyOTcgMTMuNDQ3MiA1LjM0MzMzIDEzLjc1NDIgNS4yNjc4NUMxNC4wNjEzIDUuMTkyMzcgMTQuMzgzMiA1LjIwNDAyIDE0LjY4NDEgNS4zMDE1QzE0LjkxMjYgNS4zNzQ1MyAxNS4xNTM3IDUuMzk4NjYgMTUuMzkyMSA1LjM3MjM1QzE1LjYzMDQgNS4zNDYwNCAxNS44NjA2IDUuMjY5ODYgMTYuMDY3OCA1LjE0ODczQzE2LjI3NSA1LjAyNzYxIDE2LjQ1NDcgNC44NjQyMiAxNi41OTUxIDQuNjY5MTFDMTYuNzM1NSA0LjQ3NCAxNi44MzM3IDQuMjUxNSAxNi44ODMyIDQuMDE1OTZDMTYuOTUzNCAzLjY5Mjc2IDE3LjExMjkgMy4zOTU5MyAxNy4zNDMzIDMuMTU5NDZDMTcuNjAxNCAyLjg5ODQ0IDE3LjkzNiAyLjcyNzIxIDE4LjI5OCAyLjY3MDg2QzE4LjY2MDEgMi42MTQ1MSAxOS4wMzA2IDIuNjc1OTkgMTkuMzU1MyAyLjg0NjNDMTkuNjggMy4wMTY2MSAyMC4wNTA1IDMuMDc4MDkgMjAuNDEyNSAzLjAyMTc0QzIwLjc3NDYgMi45NjUzOSAyMS4xMDkxIDIuNzk0MTcgMjEuMzY3MiAyLjUzMzE0QzIxLjUyODIgMi4zNjk3MyAyMS42NTU0IDIuMTc2MDUgMjEuNzQxNiAxLjk2MzE4QzIxLjgyNjkgMS43NTUyMSAyMS45NTMxIDEuNTY2NjggMjIuMTEyOCAxLjQwODg4QzIyLjQwNTIgMS4xMDg1OSAyMi43OTczIDAuOTI2NzA1IDIzLjIxNDYgMC44OTc4MzNDMjMuNjMxOSAwLjg2ODk2MSAyNC4wNDUyIDAuOTk1MTIgMjQuMzc1OCAxLjI1MjNDMjQuNzA1OSAxLjUxMDUgMjUuMTE4NiAxLjYzODY5IDI1LjUzNjMgMS42MTI3M0MyNS45NTM5IDEuNTg2NzggMjYuMzQ3NyAxLjQwODQ4IDI2LjY0MzYgMS4xMTEzOEMyNi43MzUgMS4wMTY2MyAyNi44MTUgMC45MTE1MzkgMjYuODgyMiAwLjc5ODIxNUMyNi45NTAxIDAuNjg0OTIgMjcuMDMwNiAwLjU3OTg0MSAyNy4xMjI0IDAuNDg1MDUyQzI3LjI4NzkgMC4zMTk5MyAyNy40ODUgMC4xOTAxODggMjcuNzAxOCAwLjEwMzY2MUMyNy45MTg2IDAuMDE3MTM0NCAyOC4xNTA2IC0wLjAyNDM4MjYgMjguMzgzOCAtMC4wMTgzODI2QzI4LjYxNyAtMC4wMTIzODI1IDI4Ljg0NjYgMC4wNDEwMSAyOS4wNTg3IDAuMTM4NTcxQzI5LjI3MDggMC4yMzYxMzIgMjkuNDYxMSAwLjM3NTgzNyAyOS42MTc5IDAuNTQ5MjVMMjkuNjg0OSAwLjYxNjU4QzI5Ljk5NCAwLjkyODcxIDMwLjQxMDMgMS4xMTAyNCAzMC44NDg1IDEuMTIzOUMzMS4wOTU4IDEuMTMyMzIgMzEuMzQyIDEuMDg2MjEgMzEuNTY5NyAwLjk4ODgyMUMzMS43OTc0IDAuODkxNDMyIDMyLjAwMTEgMC43NDUxMyAzMi4xNjY0IDAuNTYwMjExTDMyLjIzMTkgMC40OTYwMTNDMzIuNDE1NiAwLjMxNDQ0NiAzMi42Mzc2IDAuMTc2NTggMzIuODgxNSAwLjA5MjU3MDdDMzMuMTI1MyAwLjAwODU2MTYyIDMzLjM4NDggLTAuMDE5NDQ5NCAzMy42NDA5IDAuMDEwNjAxM0MzMy44OTcgMC4wNDA2NTE5IDM0LjE0MzEgMC4xMjc5OTkgMzQuMzYxMSAwLjI2NjIwNkMzNC41NzkxIDAuNDA0NDEzIDM0Ljc2MzQgMC41ODk5NiAzNC45MDA1IDAuODA5MTc2QzM0Ljk2ODIgMC45MjI1NDIgMzUuMDQ4OCAxLjAyNzYzIDM1LjE0MDcgMS4xMjIzNEMzNS40MzYxIDEuNDE4NDEgMzUuODI4OCAxLjU5NjIxIDM2LjI0NTQgMS42MjI0M0MzNi42NjIgMS42NDg2NiAzNy4wNzM4IDEuNTIxNTIgMzcuNDAzNyAxLjI2NDgzQzM3LjczMzggMS4wMDgzMyAzOC4xNDU4IDAuODgxNDYyIDM4LjU2MjQgMC45MDc5OEMzOC45Nzg5IDAuOTM0NDk3IDM5LjM3MTYgMS4xMTI1OCAzOS42NjY4IDEuNDA4ODhDMzkuODI4MSAxLjU3MTY4IDM5Ljk1NDkgMS43NjU1NiA0MC4wMzk2IDEuOTc4ODRDNDAuMTI3MiAyLjIwMzExIDQwLjI2MSAyLjQwNjI1IDQwLjQzMjMgMi41NzQ5M0M0MC42MDM2IDIuNzQzNiA0MC44MDg2IDIuODczOTkgNDEuMDMzNiAyLjk1NzUzQzQxLjI1ODcgMy4wNDEwOCA0MS40OTg4IDMuMDc1OSA0MS43MzgyIDMuMDU5NjlDNDEuOTc3NiAzLjA0MzQ5IDQyLjIxMDkgMi45NzY2NCA0Mi40MjI3IDIuODYzNTNDNDIuNzQ2OCAyLjY5MDQ3IDQzLjExNzkgMi42Mjc0NSA0My40ODA2IDIuNjgzOUM0My44NDMzIDIuNzQwMzYgNDQuMTc4MSAyLjkxMzI1IDQ0LjQzNDcgMy4xNzY2OUM0NC42NjYyIDMuNDEyNzkgNDQuODI1MyAzLjcxMDU5IDQ0Ljg5MzMgNC4wMzQ3NUM0NC45NDMgNC4yNzAxNSA0NS4wNDEyIDQuNDkyNDggNDUuMTgxNyA0LjY4NzQxQzQ1LjMyMjMgNC44ODIzNCA0NS41MDE5IDUuMDQ1NTUgNDUuNzA5MSA1LjE2NjUyQzQ1LjkxNjMgNS4yODc0OCA0Ni4xNDY0IDUuMzYzNTMgNDYuMzg0NyA1LjM4OTc0QzQ2LjYyMjkgNS40MTU5NiA0Ni44NjQgNS4zOTE3NyA0Ny4wOTI0IDUuMzE4NzJDNDcuMzkzIDUuMjIxMTkgNDcuNzE0NyA1LjIwOTUyIDQ4LjAyMTUgNS4yODUwMUM0OC4zMjg0IDUuMzYwNSA0OC42MDgyIDUuNTIwMTggNDguODI5OCA1Ljc0NjE5QzQ5LjEzMSA2LjA1MTkgNDkuMzA3MyA2LjQ1OTYyIDQ5LjMyNDMgNi44ODkyNEM0OS4zMzQ5IDcuMzIyNzEgNDkuNTExNCA3LjczNTQzIDQ5LjgxNzEgOC4wNDE2OEM1MC4wMDQ3IDguMjMxNTIgNTAuMjMzNiA4LjM3NDkyIDUwLjQ4NTkgOC40NjA1M0M1MC43MzgyIDguNTQ2MTQgNTEuMDA2OSA4LjU3MTYgNTEuMjcwNyA4LjUzNDkxQzUxLjUzNDggOC41MDA5MyA1MS44MDMxIDguNTI3ODQgNTIuMDU1MiA4LjYxMzU4QzUyLjMwNzQgOC42OTkzMSA1Mi41MzY4IDguODQxNjMgNTIuNzI1OSA5LjAyOTcxQzUyLjkxNjEgOS4yMTc1NyA1My4wNTk4IDkuNDQ3NiA1My4xNDU0IDkuNzAxMzJDNTMuMjMxIDkuOTU1MDQgNTMuMjU2MSAxMC4yMjU0IDUzLjIxODggMTAuNDkwNkM1My4xODE1IDEwLjc1NTYgNTMuMjA2NyAxMS4wMjU3IDUzLjI5MjMgMTEuMjc5MUM1My4zNzc5IDExLjUzMjYgNTMuNTIxNSAxMS43NjIzIDUzLjcxMTYgMTEuOTQ5OUM1NC4wMTkzIDEyLjIzNTEgNTQuMzkwNCAxMi40NDIzIDU0Ljc5NCAxMi41NTQ0QzU1LjIyNTIgMTIuNTY0NiA1NS42MzYxIDEyLjc0MDYgNTUuOTQxOSAxMy4wNDZDNTYuMTY3IDEzLjI2OTYgNTYuMzI2IDEzLjU1MTMgNTYuNDAxNCAxMy44NkM1Ni40NzY5IDE0LjE2ODcgNTYuNDY1NyAxNC40OTIzIDU2LjM2OTMgMTQuNzk1QzU2LjI3NTkgMTUuMDk3MiA1Ni4yNjYxIDE1LjQxOTIgNTYuMzQxMSAxNS43MjY1QzU2LjQxNjEgMTYuMDMzOCA1Ni41NzMxIDE2LjMxNDggNTYuNzk1MSAxNi41Mzk0QzU3LjAyNzkgMTYuNzc1OSA1Ny4zMjQ0IDE2LjkzOTEgNTcuNjQ4MiAxNy4wMDkxQzU3Ljk3MTMgMTcuMDgxMiA1OC4yNjcyIDE3LjI0NDEgNTguNTAxMyAxNy40Nzg4QzU4Ljc2MTMgMTcuNzM4IDU4LjkzMTkgMTguMDczOSA1OC45ODggMTguNDM3M0M1OS4wNDQyIDE4LjgwMDggNTguOTgyOSAxOS4xNzI3IDU4LjgxMzMgMTkuNDk4N0M1OC43MDI0IDE5LjcxMTUgNTguNjM3MSAxOS45NDUzIDU4LjYyMTYgMjAuMTg0OUM1OC42MDYgMjAuNDI0NSA1OC42NDA1IDIwLjY2NDggNTguNzIyOSAyMC44OTAyQzU4LjgwNTMgMjEuMTE1NyA1OC45MzM3IDIxLjMyMTQgNTkuMSAyMS40OTRDNTkuMjY2MiAyMS42NjY3IDU5LjQ2NjYgMjEuODAyNSA1OS42ODgzIDIxLjg5MjlDNTkuOTM0NiAyMS45OTA5IDYwLjE1NDcgMjIuMTQ1MiA2MC4zMzEyIDIyLjM0MzdDNjAuNTA3NyAyMi41NDIxIDYwLjYzNTYgMjIuNzc5MSA2MC43MDQ4IDIzLjAzNTlDNjAuNzc0IDIzLjI5MjcgNjAuNzgyNiAyMy41NjIxIDYwLjcyOTggMjMuODIyOEM2MC42NzcxIDI0LjA4MzUgNjAuNTY0NSAyNC4zMjgyIDYwLjQwMSAyNC41Mzc1QzYwLjE0NDkgMjQuODY4OSA2MC4wMTggMjUuMjgyNyA2MC4wNDQxIDI1LjcwMTJDNjAuMDcwMyAyNi4xMTk4IDYwLjI0NzYgMjYuNTE0NSA2MC41NDI5IDI2LjgxMTFDNjAuNjM1MiAyNi45MDI5IDYwLjczNzEgMjYuOTg0MyA2MC44NDcxIDI3LjA1MzhDNjEuMDczNyAyNy4xOTI4IDYxLjI2NDggMjcuMzgzMSA2MS40MDUzIDI3LjYwOTNDNjEuNTQ1OCAyNy44MzU2IDYxLjYzMTcgMjguMDkxNyA2MS42NTYyIDI4LjM1NzJDNjEuNjgwOCAyOC42MjI2IDYxLjY0MzIgMjguODkwMiA2MS41NDY2IDI5LjEzODVDNjEuNDUgMjkuMzg2OSA2MS4yOTcgMjkuNjA5MiA2MS4wOTk3IDI5Ljc4NzdMNjEuMDM0MiAyOS44NTM1QzYwLjg3IDMwLjAxOCA2MC43NDA3IDMwLjIxNDIgNjAuNjU0MSAzMC40MzAzQzYwLjU2NzUgMzAuNjQ2NCA2MC41MjU1IDMwLjg3NzkgNjAuNTMwNiAzMS4xMTA4QzYwLjUzNTcgMzEuMzQzNyA2MC41ODc4IDMxLjU3MzEgNjAuNjgzOCAzMS43ODUyQzYwLjc3OTcgMzEuOTk3MyA2MC45MTc1IDMyLjE4NzYgNjEuMDg4OCAzMi4zNDQ3TDYxLjE0OTcgMzIuNDAxMVoiIGZpbGw9InVybCgjcGFpbnQwX2xpbmVhcikiLz4KPHBhdGggZD0iTTUxLjIwMDkgNTEuNDU0MkM0NS43OTkgNTYuODc3MiAzOC40NzMyIDU5LjkyNDcgMzAuODM0IDU5LjkyNjdDMjMuMTk0NyA1OS45Mjg4IDE1Ljg2NzIgNTYuODg1MiAxMC40NjI0IDUxLjQ2NTJMMTAuNDUzMSA1MS40NTU4QzYuNDIzNzYgNDcuNDEwMSAzLjY3OTgyIDQyLjI1NTggMi41NjgxOSAzNi42NDQ1QzEuNDU2NTcgMzEuMDMzMyAyLjAyNzIgMjUuMjE3MiA0LjIwNzkyIDE5LjkzMTVDNi4zODg2NCAxNC42NDU4IDEwLjA4MTUgMTAuMTI4IDE0LjgxOTYgNi45NDkyNkMxOS41NTc4IDMuNzcwNTMgMjUuMTI4MyAyLjA3MzY0IDMwLjgyNyAyLjA3MzE1QzM0LjYxMTggMi4wNjgxIDM4LjM2MDMgMi44MTQwMyA0MS44NTcgNC4yNjgwNUM0NS4zNTM3IDUuNzIyMDYgNDguNTI5NyA3Ljg1NTUxIDUxLjIwMjUgMTAuNTQ1OEw1MS4yMTE5IDEwLjU1NTJDNjIuNDU3MSAyMS44NTQxIDYyLjQ1MDggNDAuMTU4NSA1MS4yMDA5IDUxLjQ1NDJaIiBmaWxsPSIjQzJEMEQzIi8+CjxwYXRoIGQ9Ik00OC44MDM0IDQ5LjA0NzZDNDQuMDM3MiA1My44MzIzIDM3LjU3MzMgNTYuNTIxIDMwLjgzMyA1Ni41MjI1QzI0LjA5MjcgNTYuNTIzOSAxNy42Mjc3IDUzLjgzODEgMTIuODU5NCA0OS4wNTU0TDEyLjg1IDQ5LjA0NzZDOC4wODIyOSA0NC4yNjEgNS40MDM4MSAzNy43NjkxIDUuNDAzODEgMzFDNS40MDM4MSAyNC4yMzA4IDguMDgyMjkgMTcuNzM4OSAxMi44NSAxMi45NTI0QzE3LjYxNzcgOC4xNjU4NyAyNC4wODQyIDUuNDc2ODQgMzAuODI2NyA1LjQ3Njg0QzM3LjU2OTMgNS40NzY4NCA0NC4wMzU3IDguMTY1ODcgNDguODAzNCAxMi45NTI0VjEyLjk2MThDNTMuNTY4NCAxNy43NDc5IDU2LjI0NTEgMjQuMjM3OCA1Ni4yNDUxIDMxLjAwNDdDNTYuMjQ1MSAzNy43NzE2IDUzLjU2ODQgNDQuMjYxNSA0OC44MDM0IDQ5LjA0NzZaIiBmaWxsPSJ1cmwoI3BhaW50MV9saW5lYXIpIi8+CjxwYXRoIGQ9Ik00Ny44MDIzIDEzLjk1OTNDNTEuMTU5OCAxNy4zMjk4IDUzLjQ0NjMgMjEuNjI0MiA1NC4zNzI3IDI2LjI5OTRDNTUuMjk5MSAzMC45NzQ2IDU0LjgyMzggMzUuODIwNSA1My4wMDY4IDQwLjIyNDVDNTEuMTg5OSA0NC42Mjg1IDQ4LjExMjkgNDguMzkyNiA0NC4xNjUxIDUxLjA0MDlDNDAuMjE3MiA1My42ODkyIDM1LjU3NTggNTUuMTAyOCAzMC44Mjc3IDU1LjEwMjhDMjYuMDc5NiA1NS4xMDI4IDIxLjQzODIgNTMuNjg5MiAxNy40OTAzIDUxLjA0MDlDMTMuNTQyNSA0OC4zOTI2IDEwLjQ2NTUgNDQuNjI4NSA4LjY0ODU2IDQwLjIyNDVDNi44MzE2MSAzNS44MjA1IDYuMzU2MjcgMzAuOTc0NiA3LjI4MjY3IDI2LjI5OTRDOC4yMDkwNiAyMS42MjQyIDEwLjQ5NTYgMTcuMzI5OCAxMy44NTMxIDEzLjk1OTNDMTYuMDgyIDExLjcyMTEgMTguNzI4NCA5Ljk0NTU4IDIxLjY0MDkgOC43MzQyM0MyNC41NTM0IDcuNTIyODkgMjcuNjc1MSA2Ljg5OTQxIDMwLjgyNzcgNi44OTk0MUMzMy45ODAzIDYuODk5NDEgMzcuMTAyIDcuNTIyODkgNDAuMDE0NSA4LjczNDIzQzQyLjkyNyA5Ljk0NTU4IDQ1LjU3MzMgMTEuNzIxMSA0Ny44MDIzIDEzLjk1OTNaIiBmaWxsPSIjQzJEMEQzIi8+CjxwYXRoIGQ9Ik0zNC42NzE1IDEyLjA3NzFMMzQuMDkyOSAxMi41MDkzTDMzLjY2MjQgMTMuMDkwMkwzMy4yMzIgMTIuNTA5M0wzMi42NTMzIDEyLjA3NzFMMzMuMjMyIDExLjY0NDlMMzMuNjYyNCAxMS4wNjRMMzQuMDkyOSAxMS42NDQ5TDM0LjY3MTUgMTIuMDc3MVoiIGZpbGw9IiM5NkEwQTMiLz4KPHBhdGggZD0iTTI5LjE3NDkgMTEuOTQyNUwyOC41OTYzIDEyLjM3NDZMMjguMTY1OCAxMi45NTRMMjcuNzM1NCAxMi4zNzQ2TDI3LjE1NjcgMTEuOTQyNUwyNy43MzU0IDExLjUxMDNMMjguMTY1OCAxMC45Mjk0TDI4LjU5NjMgMTEuNTEwM0wyOS4xNzQ5IDExLjk0MjVaIiBmaWxsPSIjOTZBMEEzIi8+CjxwYXRoIGQ9Ik00NC45NjUxIDQxLjc2MTlDNDcuMjgxMiA0My40OTY4IDQ5LjI0MzIgNDAuNjk1NiA0OS4yNDMyIDQwLjY5NTZDNDkuMjQzMiA0MC42OTU2IDQ2LjY0NjQgMzkuNzU2MSA0NS4zMDY2IDQwLjk2MTdDNDUuNTc3NiA0MC4yNTc2IDQ1Ljc3NTIgMzkuNTI3MiA0NS44OTYyIDM4Ljc4MjFDNDcuNzY3OCAzOS43MjE2IDQ4Ljg1OTYgMzcuNDk5NyA0OC44NTk2IDM3LjQ5OTdDNDguODU5NiAzNy40OTk3IDQ2LjgzMiAzNy4wNzg1IDQ1Ljk3NzMgMzguMTA4OEM0Ni4wMTQ5IDM3LjcxNDQgNDYuMDMgMzcuMzE4MSA0Ni4wMjI1IDM2LjkyMTlDNDYuMDIyNSAzNi43NjU0IDQ2LjAxMzIgMzYuNjA4OCA0Ni4wMDA3IDM2LjQ1MjJDNDcuMzYyMyAzNC44NTE5IDQ1LjIwMzcgMzMuNDEzIDQ1LjIwMzcgMzMuNDEzQzQ1LjIwMzcgMzMuNDEzIDQ0LjIxOCAzNS42MjU1IDQ1LjY1NDQgMzYuNDk2QzQ1LjY2MzggMzYuNjQwMSA0NS42Njg1IDM2Ljc4MjYgNDUuNjY4NSAzNi45MzEzQzQ1LjY3MTQgMzcuMjYwNyA0NS42NTYzIDM3LjU5MDEgNDUuNjIzMyAzNy45MTc4QzQ1LjIzMDIgMzYuNzQzNCA0My4zNTg2IDM2LjMwODIgNDMuMzU4NiAzNi4zMDgyQzQzLjM1ODYgMzYuMzA4MiA0My4yOTk0IDM4LjgyMTMgNDUuNTE0MSAzOC42OTEzQzQ1LjM4MTYgMzkuNDI4OSA0NS4xNzI1IDQwLjE1MDUgNDQuODkwMiA0MC44NDQzQzQ0LjgwMjkgMzkuMDkyMiA0Mi4yMjQ3IDM4LjA5MTYgNDIuMjI0NyAzOC4wOTE2QzQyLjIyNDcgMzguMDkxNiA0MS42MTE4IDQxLjM3OTggNDQuNTMxNSA0MS42Mzk3QzQ0LjM1NjggNDEuOTg1NSA0NC4xNjQ3IDQyLjMyMiA0My45NTYgNDIuNjQ4MUM0My42OTI1IDQzLjA2MDMgNDMuNDAxOCA0My40NTQyIDQzLjA4NTcgNDMuODI3MkM0My41MzE3IDQyLjA5MjMgNDEuMjYyNCA0MC40NzAxIDQxLjI2MjQgNDAuNDcwMUM0MS4yNjI0IDQwLjQ3MDEgMzkuNzk3OSA0My40ODc0IDQyLjUxOTUgNDQuNDQ4OEM0Mi4zNDQ4IDQ0LjYzNTEgNDIuMTUxNCA0NC44MDExIDQxLjk2NzQgNDQuOTc0OUM0MS44NzA3IDQ1LjA2MjYgNDEuNzY5MyA0NS4xNDA5IDQxLjY3MjYgNDUuMjI3TDQxLjUyNDQgNDUuMzUzOUw0MS4zNjg1IDQ1LjQ3MTNMNDEuMDU2NSA0NS43MDYyTDQwLjczMzcgNDUuOTI2OUM0MC42OTc4IDQ1Ljk0ODkgNDAuNjYwNCA0NS45NzU1IDQwLjYyOTIgNDUuOTk3NEM0MS4zNzQ3IDQ0LjUwOTkgMzkuNjc2MiA0Mi42MTg0IDM5LjY3NjIgNDIuNjE4NEMzOS42NzYyIDQyLjYxODQgMzcuNzM3NiA0NS4wMzEzIDM5LjkwMDggNDYuNDM1OEMzOS4yODMyIDQ2Ljc4MDUgMzguNjM1OSA0Ny4wNjg3IDM3Ljk2NjkgNDcuMjk3QzM4Ljg0NjUgNDYuMTcxMiAzNy44NjA4IDQ0LjMwMTYgMzcuODYwOCA0NC4zMDE2QzM3Ljg2MDggNDQuMzAxNiAzNS43MTYzIDQ1Ljk0MSAzNy4xNjIxIDQ3LjU0NDRDMzYuNjM1NiA0Ny42ODYzIDM2LjEwMDUgNDcuNzk0MSAzNS41NjAzIDQ3Ljg2N0MzNi4yMzI1IDQ3LjEzNTggMzUuODEzIDQ1Ljc2NTcgMzUuODEzIDQ1Ljc2NTdDMzUuODEzIDQ1Ljc2NTcgMzQuMTA5OCA0Ni42NDg4IDM0LjgxMDEgNDcuOTQwNkMzNC41Njk5IDQ3Ljk1MzEgMzQuMzI2NiA0Ny45NzAzIDM0LjA4NjQgNDcuOTY3MkMzMy45NTIzIDQ3Ljk2NzIgMzMuODI0NCA0Ny45NjcyIDMzLjY5MDIgNDcuOTY3MkwzMy4yOTQxIDQ3Ljk1QzMyLjkwMjYgNDcuOTIzNCAzMi41MTQzIDQ3Ljg4NDIgMzIuMTI1OSA0Ny44Mjc4TDMyLjQzNzggNDcuNzEwNEwzMi42MzEyIDQ3LjYzNjhMMzIuODIgNDcuNTUzOEwzMy4xOTc0IDQ3LjM4NzhDMzMuMjM4OSA0Ny4zNzA5IDMzLjI3NjUgNDcuMzQ1NiAzMy4zMDc5IDQ3LjMxMzVDMzMuMzM5MiA0Ny4yODE0IDMzLjM2MzcgNDcuMjQzMiAzMy4zNzk4IDQ3LjIwMTJDMzMuMzk1OSA0Ny4xNTkzIDMzLjQwMzIgNDcuMTE0NCAzMy40MDE0IDQ3LjA2OTVDMzMuMzk5NSA0Ny4wMjQ2IDMzLjM4ODUgNDYuOTgwNSAzMy4zNjkgNDYuOTRDMzMuMzI0MSA0Ni44NjA0IDMzLjI1MTQgNDYuODAwMyAzMy4xNjUgNDYuNzcxNEMzMy4wNzg2IDQ2Ljc0MjUgMzIuOTg0NSA0Ni43NDY4IDMyLjkwMTEgNDYuNzgzNEwzMi44ODM5IDQ2Ljc5MTNMMzIuNTI4MyA0Ni45NDc5TDMyLjM0ODkgNDcuMDI2MUwzMi4xNjk2IDQ3LjA5NUwzMS44MDYyIDQ3LjIzOTFMMzEuNDM4MSA0Ny4zNjQ0TDMxLjI1NCA0Ny40MjU0TDMxLjA2NTMgNDcuNDc4N0wzMC44MjUxIDQ3LjUzODJMMzAuNTkxMiA0Ny40NzRMMzAuNDAyNSA0Ny40MjIzTDMwLjIxNjkgNDcuMzYxMkwyOS44NDg4IDQ3LjIzNDRMMjkuNDg1NCA0Ny4wOTAzTDI5LjMwNiA0Ny4wMjE0TDI5LjEyNjcgNDYuOTQzMkwyOC43NzI2IDQ2Ljc4NjZIMjguNzUzOUMyOC42NzA1IDQ2Ljc0OTUgMjguNTc2MyA0Ni43NDUxIDI4LjQ4OTggNDYuNzc0QzI4LjQwMzMgNDYuODAzIDI4LjMzMDYgNDYuODYzMyAyOC4yODYgNDYuOTQzMkMyOC4yNjY2IDQ2Ljk4MzggMjguMjU1NyA0Ny4wMjgxIDI4LjI1NCA0Ny4wNzMyQzI4LjI1MjQgNDcuMTE4MiAyOC4yNiA0Ny4xNjMyIDI4LjI3NjQgNDcuMjA1MkMyOC4yOTI4IDQ3LjI0NzIgMjguMzE3NiA0Ny4yODU0IDI4LjM0OTMgNDcuMzE3M0MyOC4zODEgNDcuMzQ5MyAyOC40MTg5IDQ3LjM3NDQgMjguNDYwNyA0Ny4zOTFMMjguODM4MSA0Ny41NTdMMjkuMDI2OCA0Ny42Mzk5TDI5LjIyMDIgNDcuNzEzNUwyOS41MzIyIDQ3LjgzMUMyOS4xNDU0IDQ3Ljg5MiAyOC43NTIzIDQ3LjkyNjUgMjguMzYyNCA0Ny45NTMxTDI3Ljk2NjMgNDcuOTcwM0MyNy44MzM3IDQ3Ljk3MDMgMjcuNzA0MiA0Ny45NzAzIDI3LjU3MDEgNDcuOTcwM0MyNy4zMjY4IDQ3Ljk3MDMgMjcuMDg2NiA0Ny45NTYyIDI2Ljg0OCA0Ny45NDM3QzI3LjU0MzYgNDYuNjQ3MiAyNS44NDM2IDQ1Ljc2ODggMjUuODQzNiA0NS43Njg4QzI1Ljg0MzYgNDUuNzY4OCAyNS40MjA5IDQ3LjEzODkgMjYuMDk3OCA0Ny44NzAxQzI1LjU1MjQgNDcuODAwMSAyNS4wMTI1IDQ3LjY5MjMgMjQuNDgyIDQ3LjU0NzZDMjUuOTMwOSA0NS45Mzk1IDIzLjc4MTcgNDQuMzA0OCAyMy43ODE3IDQ0LjMwNDhDMjMuNzgxNyA0NC4zMDQ4IDIyLjc5NiA0Ni4xODM3IDIzLjY3NTYgNDcuMzAwMkMyMy4wMDY3IDQ3LjA3MTUgMjIuMzU5NCA0Ni43ODMzIDIxLjc0MTYgNDYuNDM5QzIzLjkwNjUgNDUuMDM5MSAyMS45Njc4IDQyLjYyMTUgMjEuOTY3OCA0Mi42MjE1QzIxLjk2NzggNDIuNjIxNSAyMC4yNjkzIDQ0LjUwODMgMjEuMDE0OCA0Ni4wMDA1QzIwLjk3NzcgNDUuOTc5OCAyMC45NDIzIDQ1Ljk1NjIgMjAuOTA4OCA0NS45MzAxTDIwLjU4NTkgNDUuNzA5M0wyMC4yNzQgNDUuNDc0NEMyMC4yMjQxIDQ1LjQzNTMgMjAuMTY5NSA0NS4zOTYxIDIwLjExOCA0NS4zNTdMMTkuOTcxNCA0NS4yMzAyQzE5Ljg3NDcgNDUuMTQ3MiAxOS43NzMzIDQ1LjA3MzYgMTkuNjc2NiA0NC45NzgxQzE5LjQ5MjYgNDQuODA0MyAxOS4yOTkyIDQ0LjYzNTEgMTkuMTIzIDQ0LjQ1MTlDMjEuODQ0NiA0My40OTA1IDIwLjM4MDEgNDAuNDczMiAyMC4zODAxIDQwLjQ3MzJDMjAuMzgwMSA0MC40NzMyIDE4LjExMDcgNDIuMDkyMyAxOC41NTk5IDQzLjgyNzJDMTguMjQzNyA0My40NTQzIDE3Ljk1MyA0My4wNjA0IDE3LjY4OTYgNDIuNjQ4MUMxNy40NzkxIDQyLjMyMjQgMTcuMjkwNCA0MS45ODI3IDE3LjExNDEgNDEuNjM5N0MyMC4wMjkxIDQxLjM3NTEgMTkuNDIwOSAzOC4wOTE2IDE5LjQyMDkgMzguMDkxNkMxOS40MjA5IDM4LjA5MTYgMTYuODQyNyAzOS4wOTUzIDE2Ljc1NTQgNDAuODQ0M0MxNi40NzI0IDQwLjE1MDcgMTYuMjYzMyAzOS40MjkxIDE2LjEzMTUgMzguNjkxM0MxOC4zNDQ3IDM4LjgyMTMgMTguMjg1NCAzNi4zMDgyIDE4LjI4NTQgMzYuMzA4MkMxOC4yODU0IDM2LjMwODIgMTYuNDEzOCAzNi43Mzg3IDE2LjAyNTUgMzcuOTEzMUMxNS45OTI3IDM3LjU4MjcgMTUuOTc4NyAzNy4yNTcgMTUuOTc4NyAzNi45MjY2QzE1Ljk3ODcgMzYuNzgyNiAxNS45Nzg3IDM2LjYzODUgMTUuOTkyNyAzNi40OTE0QzE3LjQyNDUgMzUuNjE3NiAxNi40NDM1IDMzLjQwODMgMTYuNDQzNSAzMy40MDgzQzE2LjQ0MzUgMzMuNDA4MyAxNC4yODQ5IDM0Ljg0NzIgMTUuNjQ4IDM2LjQ0NzVDMTUuNjI5MyAzNi42MDQxIDE1LjYyNDYgMzYuNzYwNyAxNS42MiAzNi45MTczQzE1LjYxMDEgMzcuMzEzNCAxNS42MjUyIDM3LjcwOTkgMTUuNjY1MiAzOC4xMDQxQzE0LjgxNjcgMzcuMDczOCAxMi43ODkyIDM3LjQ5OTcgMTIuNzg5MiAzNy40OTk3QzEyLjc4OTIgMzcuNDk5NyAxMy44ODA5IDM5LjcyMTYgMTUuNzUyNSAzOC43ODIxQzE1Ljg3MTkgMzkuNTI3NCAxNi4wNjg5IDQwLjI1NzkgMTYuMzQwNSA0MC45NjE3QzE1LjAwNTQgMzkuNzUyOSAxMi40MTAyIDQwLjY5NTYgMTIuNDEwMiA0MC42OTU2QzEyLjQxMDIgNDAuNjk1NiAxNC4zNzA3IDQzLjQ5MjEgMTYuNjg2OCA0MS43NjE5QzE2Ljg2NzMgNDIuMTQwOCAxNy4wNjg5IDQyLjUwOTQgMTcuMjkwNCA0Mi44NjU4QzE3LjUxMDQgNDMuMjI5IDE3Ljc1MzIgNDMuNTc3OCAxOC4wMTcyIDQzLjkxMDJDMTYuNDIwMSA0My4yMzUzIDE0LjMwMiA0NC42NzEyIDE0LjMwMiA0NC42NzEyQzE0LjMwMiA0NC42NzEyIDE2LjkyNTQgNDYuODg4NCAxOC43MDM0IDQ0LjcwNTZDMTguNzIyMSA0NC43MjI4IDE4LjczNDYgNDQuNzQwMSAxOC43NTMzIDQ0Ljc1NzNDMTguOTMyNyA0NC45NTMgMTkuMTMwOCA0NS4xMzYyIDE5LjMyNDIgNDUuMzIyNUMxOS40MjA5IDQ1LjQxMzQgMTkuNTI2OSA0NS41MDEgMTkuNjM2MSA0NS41ODg3TDE5Ljc5MjEgNDUuNzE4N0MxOS44NDIgNDUuNzYyNSAxOS44OTY2IDQ1LjgwMTcgMTkuOTQ4IDQ1Ljg0NEwyMC4yNiA0Ni4wOTI5TDIwLjM2NDUgNDYuMTY2NUMxOC44MjgyIDQ2LjAxOTMgMTcuMzM1NiA0Ny41OTc3IDE3LjMzNTYgNDcuNTk3N0MxNy4zMzU2IDQ3LjU5NzcgMjAuMTg1MSA0OS4xMDU1IDIxLjMzNjEgNDYuODAwN0MyMS44OTM0IDQ3LjEzIDIyLjQ3NTQgNDcuNDE1MyAyMy4wNzY3IDQ3LjY1NEMyMS44MDU2IDQ3LjkxNCAyMC45NDkzIDQ5LjQ1IDIwLjk0OTMgNDkuNDVDMjAuOTQ5MyA0OS40NSAyMy42NjE2IDUwLjE1NDYgMjQuMTYzOCA0OC4wMzE0QzI0LjYzNzcgNDguMTcwNiAyNS4xMTg4IDQ4LjI4NDEgMjUuNjA0OSA0OC4zNzEyQzI0Ljg1NDcgNDguODAxOCAyNC41MDM4IDQ5Ljg0MTUgMjQuNTAzOCA0OS44NDE1QzI0LjUwMzggNDkuODQxNSAyNi40ODkzIDUwLjAxMDYgMjYuNjI2NSA0OC41MDU4QzI2LjY1ODUgNDguNTExMyAyNi42OTA4IDQ4LjUxNDQgMjYuNzIzMiA0OC41MTUyQzI2Ljk5OTMgNDguNTMyNSAyNy4yNzUzIDQ4LjU1NzUgMjcuNTUxNCA0OC41NTQ0QzI3LjY5MDIgNDguNTU0NCAyNy44MjkgNDguNTYyMiAyNy45NjYzIDQ4LjU1NDRMMjguMzg1OCA0OC41NDAzQzI4LjkzOTkgNDguNTE2OSAyOS40OTE3IDQ4LjQ1NTcgMzAuMDM3NSA0OC4zNTcxTDMwLjI0NDkgNDguMzIyNkMzMC4zMTUxIDQ4LjMxMDEgMzAuMzc5MSA0OC4yOTI5IDMwLjQ0NzcgNDguMjc4OEwzMC44MzQ1IDQ4LjIwMDVMMzEuMjA3MyA0OC4yODM1QzMxLjI3NzQgNDguMjk2IDMxLjM0MTQgNDguMzE0OCAzMS40MSA0OC4zMjczTDMxLjYxNzUgNDguMzYxOEMzMi4xNjQyIDQ4LjQ1NzQgMzIuNzE2MyA0OC41MTg2IDMzLjI3MDcgNDguNTQ1TDMzLjY4NCA0OC41NTc1QzMzLjgyMjggNDguNTU3NSAzMy45NjAxIDQ4LjU1NzUgMzQuMDk4OSA0OC41NTc1QzM0LjM3NDkgNDguNTU3NSAzNC42NTEgNDguNTMyNSAzNC45MjcxIDQ4LjUxODRDMzQuOTU5OCA0OC41MTg0IDM0Ljk5MjYgNDguNTEwNSAzNS4wMjM4IDQ4LjUxMDVDMzUuMTY3MiA1MC4wMTA2IDM3LjE0NjUgNDkuODQ0NiAzNy4xNDY1IDQ5Ljg0NDZDMzcuMTQ2NSA0OS44NDQ2IDM2Ljc5NzEgNDguODA2NSAzNi4wNDY5IDQ4LjM3NTlDMzYuNTMzMSA0OC4yODkzIDM3LjAxNDIgNDguMTc1OCAzNy40ODggNDguMDM2MUMzNy45ODg3IDUwLjE1NzggNDAuNzAwOSA0OS40NTMyIDQwLjcwMDkgNDkuNDUzMkM0MC43MDA5IDQ5LjQ1MzIgMzkuODQ0NyA0Ny45MjM0IDM4LjU3MzYgNDcuNjU3MkMzOS4xNzQ2IDQ3LjQxODMgMzkuNzU2NSA0Ny4xMzM2IDQwLjMxNDIgNDYuODA1NEM0MS40NjUyIDQ5LjExMDIgNDQuMzE0NyA0Ny42MDA4IDQ0LjMxNDcgNDcuNjAwOEM0NC4zMTQ3IDQ3LjYwMDggNDIuODIzNyA0Ni4wMjI1IDQxLjI4NTggNDYuMTcxMkw0MS4zOTE5IDQ2LjA5NjFMNDEuNzAzOCA0NS44NDg3QzQxLjc1MzcgNDUuODA0OCA0MS44MDgzIDQ1Ljc2NTcgNDEuODU5OCA0NS43MjM0TDQyLjAxNTcgNDUuNTkxOUM0Mi4xMTcxIDQ1LjUwNTcgNDIuMjIzMiA0NS40MTgxIDQyLjMxOTkgNDUuMzI3MkM0Mi41MTMzIDQ1LjE0MDkgNDIuNzExNCA0NC45NjI0IDQyLjg5MDcgNDQuNzYyQzQyLjkwNjcgNDQuNzQzNiA0Mi45MjM5IDQ0LjcyNjMgNDIuOTQyMiA0NC43MTAzQzQ0LjczMjcgNDYuODg4NCA0Ny4zNTc2IDQ0LjY3MTIgNDcuMzU3NiA0NC42NzEyQzQ3LjM1NzYgNDQuNjcxMiA0NS4yMzk2IDQzLjIzMDYgNDMuNjM2MiA0My45MTAyQzQzLjkwMTQgNDMuNTc4MyA0NC4xNDQ3IDQzLjIyOTUgNDQuMzY0NiA0Mi44NjU4QzQ0LjU4NDQgNDIuNTA4OSA0NC43ODQ4IDQyLjE0MDQgNDQuOTY1MSA0MS43NjE5WiIgZmlsbD0iIzk2QTBBMyIvPgo8cGF0aCBkPSJNNDAuMzU5NSAyMy44ODQ5VjIyLjgxN0M0MC4zNjAxIDIyLjY2NTUgNDAuMzMwOCAyMi41MTUyIDQwLjI3MzQgMjIuMzc1MUM0MC4yMTU5IDIyLjIzNDkgNDAuMTMxNCAyMi4xMDc1IDQwLjAyNDcgMjIuMDAwMkMzOS45MTggMjEuODkyOSAzOS43OTEyIDIxLjgwNzkgMzkuNjUxNyAyMS43NTAxQzM5LjUxMjEgMjEuNjkyMiAzOS4zNjI1IDIxLjY2MjYgMzkuMjExNSAyMS42NjNIMzUuNjc4OUMzNS44MDI1IDIxLjU2MDEgMzUuOTE2NCAyMS40NDU4IDM2LjAxODkgMjEuMzIxN0MzNy44OTA1IDE5LjQ0MjcgMzguNDAyMSAxNy4xMzQ3IDM3LjIxMDUgMTUuOTM4NEMzNi41NzI2IDE1LjI5NjQgMzUuNjM2OCAxNS4xMjU4IDM0LjU3MTUgMTUuNDY4N0MzMy42MzU3IDE1LjcyMzkgMzIuNjk5OSAxNi4zMjIgMzEuODkwNSAxNy4xNzdDMzEuNDc0MSAxNy41OTE1IDMxLjEwMzMgMTguMDQ5OCAzMC43ODQ3IDE4LjU0MzlDMzAuNDc5MyAxOC4wMzk4IDMwLjEwNjcgMTcuNTc5OSAyOS42NzczIDE3LjE3N0MyOC45MjMgMTYuNDEyMyAyOC4wMDY1IDE1LjgyODQgMjYuOTk2MiAxNS40Njg3QzI1Ljg5MDQgMTUuMTY5NiAyNC45NTQ2IDE1LjI5NjQgMjQuMzU4OCAxNS45Mzg0QzIzLjcxOTQgMTYuNTc4OCAyMy41NDk0IDE3LjUxODMgMjMuODkwOSAxOC41ODYyQzI0LjE0NjcgMTkuNTI1NyAyNC43NDI1IDIwLjQ2NTIgMjUuNTk0MSAyMS4yNzc4TDI1LjkzNDEgMjEuNjIwOEgyMi4zOTk5QzIyLjI0ODggMjEuNjIwMSAyMi4wOTkyIDIxLjY0OTYgMjEuOTU5NSAyMS43MDc0QzIxLjgxOTkgMjEuNzY1MiAyMS42OTMgMjEuODUwMiAyMS41ODYzIDIxLjk1NzVDMjEuNDc5NSAyMi4wNjQ4IDIxLjM5NSAyMi4xOTIyIDIxLjMzNzYgMjIuMzMyNUMyMS4yODAzIDIyLjQ3MjggMjEuMjUxMSAyMi42MjMxIDIxLjI1MiAyMi43NzQ4VjIzLjg0MjZDMjEuMjUxNCAyMy45OTQyIDIxLjI4MDYgMjQuMTQ0MyAyMS4zMzgxIDI0LjI4NDRDMjEuMzk1NiAyNC40MjQ1IDIxLjQ4MDEgMjQuNTUxOCAyMS41ODY4IDI0LjY1ODlDMjEuNjkzNSAyNC43NjYxIDIxLjgyMDMgMjQuODUwOSAyMS45NTk5IDI0LjkwODZDMjIuMDk5NCAyNC45NjYzIDIyLjI0OSAyNC45OTU3IDIyLjM5OTkgMjQuOTk1MUgyMy45NzUyQzIzLjExMDYgMjUuODQ3OSAyMi40MjQ1IDI2Ljg2NTQgMjEuOTU2OCAyNy45ODhDMjEuNDg5MiAyOS4xMTA2IDIxLjI0OTYgMzAuMzE1NiAyMS4yNTIgMzEuNTMyNEMyMS4yNTIgMzYuNjk5NSAyNS41NTA0IDQwLjkyNzIgMzAuODI2OCA0MC45MjcyQzM2LjEwMzEgNDAuOTI3MiA0MC40MDMxIDM2LjY5OTUgNDAuNDAzMSAzMS41MzI0QzQwLjM5OTkgMzAuMzE2MyA0MC4xNTc1IDI5LjExMjggMzkuNjkgMjcuOTkxQzM5LjIyMjQgMjYuODY5MiAzOC41Mzg4IDI1Ljg1MTEgMzcuNjc4NCAyNC45OTUxSDM5LjI1MzdDMzkuNDAwMiAyNC45OTk5IDM5LjU0NjEgMjQuOTc0NCAzOS42ODI0IDI0LjkyMDNDMzkuODE4NyAyNC44NjYyIDM5Ljk0MjUgMjQuNzg0NiA0MC4wNDYyIDI0LjY4MDZDNDAuMTQ5OCAyNC41NzY1IDQwLjIzMTEgMjQuNDUyMiA0MC4yODUgMjQuMzE1NEM0MC4zMzg5IDI0LjE3ODUgNDAuMzY0MiAyNC4wMzIgNDAuMzU5NSAyMy44ODQ5Wk0zMS44MDYyIDIwLjMzODRDMzEuOTc2MiAxOS42OTc5IDMyLjQ0NDEgMTguOTcxNCAzMy4wODIxIDE4LjMzMUMzMy42NDA4IDE3Ljc1MzMgMzQuMzI1OSAxNy4zMTQyIDM1LjA4MzEgMTcuMDQ4NkMzNS4yNjQ2IDE3LjAwMjggMzUuNDUgMTYuOTc0NCAzNS42MzY4IDE2Ljk2NEMzNS44MDI5IDE2Ljk0ODIgMzUuOTY5MSAxNi45OTMyIDM2LjEwNDcgMTcuMDkwOUMzNi40NDQ3IDE3LjQzMzggMzYuMTQ2OCAxOC44NDMgMzQuOTEzMSAyMC4xMjU0QzM0LjM1MzcgMjAuNzAzNCAzMy42NjczIDIxLjE0MjEgMzIuOTA4OSAyMS40MDYyQzMyLjcyNzcgMjEuNDUzMyAzMi41NDIyIDIxLjQ4MjEgMzIuMzU1MiAyMS40OTI0QzMyLjE4ODkgMjEuNTA4NSAzMi4wMjI0IDIxLjQ2MjggMzEuODg3MyAyMS4zNjRDMzEuNjc4NCAyMS4xOTMzIDMxLjY3ODMgMjAuODA4MSAzMS44MDYyIDIwLjMzODRaTTI1LjQ2NDYgMTguMTE2NUMyNS4zMzY3IDE3LjY0NjcgMjUuMzM2NyAxNy4yNjMxIDI1LjUwNjcgMTcuMDkwOUMyNS42NDIzIDE2Ljk5MzIgMjUuODA4NSAxNi45NDgyIDI1Ljk3NDYgMTYuOTY0QzI2LjU3MDQgMTYuOTY0IDI3LjU5MiAxNy4zODk5IDI4LjUyOTQgMTguMzMxQzI5LjEwNDUgMTguODkxMyAyOS41NDE0IDE5LjU3ODYgMjkuODA1MiAyMC4zMzg0QzI5LjkzMzEgMjAuODA4MSAyOS45MzMxIDIxLjE5MzMgMjkuNzYzMSAyMS4zNjRDMjkuNTkzMSAyMS41MzQ2IDI5LjIwOTQgMjEuNTM0NiAyOC43NDE1IDIxLjQwNjJDMjguMTAzNiAyMS4yMzU2IDI3LjM3OTkgMjAuNzY1OCAyNi43NDIgMjAuMTI1NEMyNi4xNTE2IDE5LjU3NjkgMjUuNzExNyAxOC44ODUgMjUuNDY0NiAxOC4xMTY1Wk0zNS4xMjUyIDMyLjQyOTZIMzMuODkxNUMzMy4yOTQ1IDMyLjQzMzMgMzIuNzIzIDMyLjY3MyAzMi4zMDA5IDMzLjA5NjhDMzEuODc4NyAzMy41MjA2IDMxLjYzOTkgMzQuMDk0NCAzMS42MzYyIDM0LjY5MzdWMzUuOTMzOUMzMS42MzI4IDM2LjE0NTIgMzEuNTUzMiAzNi4zNDgyIDMxLjQxMjEgMzYuNTA1MUMzMS4yNzEgMzYuNjYyIDMxLjA3OCAzNi43NjIzIDMwLjg2ODkgMzYuNzg3MkMzMC43NTY0IDM2Ljc5NjIgMzAuNjQzMyAzNi43ODIgMzAuNTM2NSAzNi43NDU2QzMwLjQyOTcgMzYuNzA5MSAzMC4zMzE1IDM2LjY1MTEgMzAuMjQ3OCAzNi41NzUyQzMwLjE2NDEgMzYuNDk5MiAzMC4wOTY4IDM2LjQwNjkgMzAuMDQ5OSAzNi4zMDM5QzMwLjAwMyAzNi4yMDA5IDI5Ljk3NzYgMzYuMDg5NCAyOS45NzUyIDM1Ljk3NjFWMzQuNjkzN0MyOS45NzE1IDM0LjA5NDQgMjkuNzMyNyAzMy41MjA2IDI5LjMxMDYgMzMuMDk2OEMyOC44ODg0IDMyLjY3MyAyOC4zMTY5IDMyLjQzMzMgMjcuNzE5OSAzMi40Mjk2SDI2LjQ4NjJDMjYuMjc1NiAzMi40MjY1IDI2LjA3MzMgMzIuMzQ3IDI1LjkxNjcgMzIuMjA1NkMyNS43NjAxIDMyLjA2NDIgMjUuNjU5OSAzMS44NzA3IDI1LjYzNDYgMzEuNjYwOEMyNS42MjU5IDMxLjU0NzggMjUuNjQwMiAzMS40MzQyIDI1LjY3NjcgMzEuMzI3QzI1LjcxMzIgMzEuMjE5OCAyNS43NzExIDMxLjEyMTEgMjUuODQ2OSAzMS4wMzcxQzI1LjkyMjcgMzAuOTUzMiAyNi4wMTQ3IDMwLjg4NTYgMjYuMTE3NCAzMC44Mzg1QzI2LjIyMDEgMzAuNzkxNSAyNi4zMzEzIDMwLjc2NiAyNi40NDQxIDMwLjc2MzVIMjcuNzE5OUMyOC4zMTcyIDMwLjc1OTggMjguODg4OSAzMC41MTk5IDI5LjMxMTEgMzAuMDk1N0MyOS43MzMzIDI5LjY3MTYgMjkuOTcxOSAyOS4wOTc0IDI5Ljk3NTIgMjguNDk3OFYyNy4yMTU0QzI5Ljk3MjYgMjcuMTA4MSAyOS45OTE4IDI3LjAwMTMgMzAuMDMxNiAyNi45MDE2QzMwLjA3MTQgMjYuODAxOSAzMC4xMzA5IDI2LjcxMTQgMzAuMjA2NyAyNi42MzU2QzMwLjI4MjQgMjYuNTU5NyAzMC4zNzI2IDI2LjUwMDEgMzAuNDcyIDI2LjQ2MDNDMzAuNTcxNCAyNi40MjA2IDMwLjY3NzcgMjYuNDAxNSAzMC43ODQ3IDI2LjQwNDNDMzAuOTA2MyAyNi40MDQzIDMxLjAyNjUgMjYuNDMxIDMxLjEzNjcgMjYuNDgyN0MzMS4yNDY5IDI2LjUzNDQgMzEuMzQ0NSAyNi42MDk3IDMxLjQyMjYgMjYuNzAzNEMzMS41NDExIDI2Ljg0NjcgMzEuNjAxOCAyNy4wMjk0IDMxLjU5MjYgMjcuMjE1NFYyOC40OTc4QzMxLjU5NjIgMjkuMDk2OCAzMS44MzQ1IDI5LjY3MDIgMzIuMjU2IDMwLjA5NDJDMzIuNjc3NCAzMC41MTgyIDMzLjI0ODEgMzAuNzU4NiAzMy44NDQ3IDMwLjc2MzVIMzUuMTIyMUMzNS4zNDIyIDMwLjc2MzUgMzUuNTUzMiAzMC44NTEzIDM1LjcwODggMzEuMDA3NUMzNS44NjQ0IDMxLjE2MzcgMzUuOTUxOCAzMS4zNzU2IDM1Ljk1MTggMzEuNTk2NkMzNS45NTE4IDMxLjgxNzUgMzUuODY0NCAzMi4wMjk0IDM1LjcwODggMzIuMTg1NkMzNS41NTMyIDMyLjM0MTggMzUuMzQyMiAzMi40Mjk2IDM1LjEyMjEgMzIuNDI5NkgzNS4xMjUyWiIgZmlsbD0iIzk2QTBBMyIvPgo8cGF0aCBvcGFjaXR5PSIwLjIiIGQ9Ik00Ny44MDA4IDEzLjk1OTJMMTMuODUzMSA0OC4wNDA3QzExLjYxIDQ1LjgwNiA5LjgyODQzIDQzLjE0ODcgOC42MTA2OCA0MC4yMjExQzcuMzkyOTQgMzcuMjkzNSA2Ljc2Mjk2IDM0LjE1MzQgNi43NTY4OCAzMC45ODA4QzYuNzUwOCAyNy44MDgyIDcuMzY4NzUgMjQuNjY1NiA4LjU3NTI3IDIxLjczMzRDOS43ODE4IDE4LjgwMTEgMTEuNTUzMSAxNi4xMzY5IDEzLjc4NzcgMTMuODkzNkMxNi4wMjIyIDExLjY1MDIgMTguNjc2IDkuODcxODcgMjEuNTk2NyA4LjY2MDZDMjQuNTE3NSA3LjQ0OTMyIDI3LjY0NzcgNi44Mjg5NCAzMC44MDc4IDYuODM1MDRDMzMuOTY3OSA2Ljg0MTE0IDM3LjA5NTggNy40NzM2IDQwLjAxMTggOC42OTYxNEM0Mi45Mjc5IDkuOTE4NjkgNDUuNTc0OSAxMS43MDczIDQ3LjgwMDggMTMuOTU5MloiIGZpbGw9IndoaXRlIi8+CjwvZz4KPGRlZnM+CjxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQwX2xpbmVhciIgeDE9Ii0wLjAwMDE4NzMyNSIgeTE9IjMwLjk5OTciIHgyPSI2MS42NTM0IiB5Mj0iMzAuOTk5NyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgo8c3RvcCBvZmZzZXQ9IjAuNCIgc3RvcC1jb2xvcj0iI0RDRTRFNiIvPgo8c3RvcCBvZmZzZXQ9IjAuNiIgc3RvcC1jb2xvcj0iI0FEQkFDMCIvPgo8L2xpbmVhckdyYWRpZW50Pgo8bGluZWFyR3JhZGllbnQgaWQ9InBhaW50MV9saW5lYXIiIHgxPSI1LjQwNDE2IiB5MT0iMzAuOTk4NCIgeDI9IjU2LjI1MDkiIHkyPSIzMC45OTg0IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CjxzdG9wIG9mZnNldD0iMC40IiBzdG9wLWNvbG9yPSIjQURCQUMwIi8+CjxzdG9wIG9mZnNldD0iMC42IiBzdG9wLWNvbG9yPSIjRENFNEU2Ii8+CjwvbGluZWFyR3JhZGllbnQ+CjxjbGlwUGF0aCBpZD0iY2xpcDAiPgo8cmVjdCB3aWR0aD0iNjEuNjUzNiIgaGVpZ2h0PSI2MiIgZmlsbD0id2hpdGUiLz4KPC9jbGlwUGF0aD4KPC9kZWZzPgo8L3N2Zz4K'\n const badgeBronze = 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTA1IiBoZWlnaHQ9IjEwNSIgdmlld0JveD0iMCAwIDEwNSAxMDUiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMCkiPgo8cGF0aCBkPSJNMTA0LjE0MiA1NC44NzI4QzEwNC40NTIgNTUuMTg0IDEwNC42ODggNTUuNTYxIDEwNC44MzEgNTUuOTc1N0MxMDQuOTc1IDU2LjM5MDQgMTA1LjAyMyA1Ni44MzIxIDEwNC45NzIgNTcuMjY4QzEwNC45MjEgNTcuNzAzOCAxMDQuNzcyIDU4LjEyMjUgMTA0LjUzNiA1OC40OTI5QzEwNC4zMDEgNTguODYzMyAxMDMuOTg0IDU5LjE3NTkgMTAzLjYxMSA1OS40MDc0QzEwMy40MiA1OS41MjM4IDEwMy4yNDEgNTkuNjYwOCAxMDMuMDggNTkuODE1N0MxMDIuNTc2IDYwLjMxODMgMTAyLjI3NCA2MC45ODcxIDEwMi4yMjkgNjEuNjk2NkMxMDIuMTg1IDYyLjQwNjEgMTAyLjQwMSA2My4xMDc0IDEwMi44MzggNjMuNjY4OEMxMDMuMTE4IDY0LjAyMTkgMTAzLjMxMiA2NC40MzU0IDEwMy40MDMgNjQuODc2NEMxMDMuNDk1IDY1LjMxNzMgMTAzLjQ4MiA2NS43NzM2IDEwMy4zNjYgNjYuMjA4OEMxMDMuMjUgNjYuNjQ0IDEwMy4wMzQgNjcuMDQ2MSAxMDIuNzM1IDY3LjM4MzJDMTAyLjQzNSA2Ny43MjAzIDEwMi4wNjIgNjcuOTgyOSAxMDEuNjQzIDY4LjE1MDNDMTAxLjI2MyA2OC4zMDA4IDEwMC45MiA2OC41Mjk2IDEwMC42MzUgNjguODIxN0MxMDAuMzUxIDY5LjExMzggMTAwLjEzMSA2OS40NjI3IDk5Ljk5MDUgNjkuODQ1NEM5OS44NTAxIDcwLjIyODEgOTkuNzkyMiA3MC42MzYxIDk5LjgyMDYgNzEuMDQyN0M5OS44NDkgNzEuNDQ5MyA5OS45NjMgNzEuODQ1MyAxMDAuMTU1IDcyLjIwNDlDMTAwLjQ0NCA3Mi43NTcgMTAwLjU0OCA3My4zODY5IDEwMC40NTMgNzQuMDAyNEMxMDAuMzU3IDc0LjYxOCAxMDAuMDY3IDc1LjE4NjggOTkuNjI0IDc1LjYyNTdDOTkuMjIzNiA3Ni4wMTg0IDk4LjcxOTggNzYuMjg5NyA5OC4xNzExIDc2LjQwNzlDOTcuNjE5NiA3Ni41MTcgOTcuMTEzNSA3Ni43ODg2IDk2LjcxODEgNzcuMTg3NkM5Ni4zMzQzIDc3LjU2NDcgOTYuMDYzIDc4LjA0MDkgOTUuOTM0NSA3OC41NjNDOTUuODA2IDc5LjA4NTEgOTUuODI1MyA3OS42MzI1IDk1Ljk5MDMgODAuMTQ0M0M5Ni4xNTYxIDgwLjY1NTQgOTYuMTc2MSA4MS4yMDI0IDk2LjA0OCA4MS43MjQyQzk1LjkxOTkgODIuMjQ1OSA5NS42NDg5IDgyLjcyMTcgOTUuMjY1MiA4My4wOTg0Qzk0Ljc0MTMgODMuNjEyMSA5NC4wNDQxIDgzLjkxMTkgOTMuMzEwMiA4My45MzlDOTIuNTcyNiA4My45NTM4IDkxLjg2OTcgODQuMjU0MiA5MS4zNSA4NC43NzdDOTEuMDMwNiA4NS4wOTYzIDkwLjc4OTcgODUuNDg1MSA5MC42NDY0IDg1LjkxMzFDOTAuNTAzMSA4Ni4zNDEgOTAuNDYxMSA4Ni43OTYzIDkwLjUyMzkgODcuMjQzMUM5MC41ODM5IDg3LjY5MjIgOTAuNTM5NCA4OC4xNDkgOTAuMzkzOSA4OC41NzgxQzkwLjI0ODMgODkuMDA3MiA5MC4wMDU1IDg5LjM5NyA4OS42ODQ1IDg5LjcxNzJDODkuMzY0OCA5MC4wMzkxIDg4Ljk3NDQgOTAuMjgyMiA4OC41NDQyIDkwLjQyNzJDODguMTE0MSA5MC41NzIyIDg3LjY1NiA5MC42MTUxIDg3LjIwNjMgOTAuNTUyNkM4Ni44MDE0IDkwLjQ5NzQgODYuMzg5NSA5MC41Mjc3IDg1Ljk5NzIgOTAuNjQxM0M4NS42MDQ4IDkwLjc1NSA4NS4yNDA2IDkwLjk0OTYgODQuOTI4MyA5MS4yMTI1Qzg0LjYxNTkgOTEuNDc1NCA4NC4zNjIyIDkxLjgwMDcgODQuMTgzNiA5Mi4xNjc2Qzg0LjAwNDkgOTIuNTM0NCA4My45MDU0IDkyLjkzNDYgODMuODkxMyA5My4zNDIyQzgzLjg3NDggOTQuMDc2MSA4My41NzUgOTQuNzc1MyA4My4wNTQ2IDk1LjI5MzlDODIuNjc1OCA5NS42NzU2IDgyLjE5ODkgOTUuOTQ1NCA4MS42NzYzIDk2LjA3MzZDODEuMTUzNyA5Ni4yMDE4IDgwLjYwNTcgOTYuMTgzNSA4MC4wOTI5IDk2LjAyMDVDNzkuNzA0MiA5NS44OTczIDc5LjI5MzkgOTUuODU2NiA3OC44ODg0IDk1LjkwMTJDNzguNDgzIDk1Ljk0NTggNzguMDkxNCA5Ni4wNzQ3IDc3LjczODggOTYuMjc5NUM3Ny4zODYzIDk2LjQ4NDQgNzcuMDgwNiA5Ni43NjA2IDc2Ljg0MTUgOTcuMDkwNUM3Ni42MDIzIDk3LjQyMDQgNzYuNDM1IDk3Ljc5NjYgNzYuMzUwMyA5OC4xOTVDNzYuMjI5NyA5OC43NDI4IDc1Ljk1ODMgOTkuMjQ2IDc1LjU2NjcgOTkuNjQ4MkM3NS4xMjcyIDEwMC4wOSA3NC41NTc0IDEwMC4zOCA3My45NDA4IDEwMC40NzZDNzMuMzI0MiAxMDAuNTcxIDcyLjY5MzMgMTAwLjQ2NyA3Mi4xNDAyIDEwMC4xNzlDNzEuNTg2OSA5OS44ODk1IDcwLjk1NTQgOTkuNzg1IDcwLjMzODIgOTkuODgwNEM2OS43MjExIDk5Ljk3NTkgNjkuMTUwOCAxMDAuMjY2IDY4LjcxMTEgMTAwLjcwOUM2OC40MzYzIDEwMC45ODUgNjguMjIxMiAxMDEuMzE0IDY4LjA3ODkgMTAxLjY3N0M2Ny45MzU0IDEwMi4wMzkgNjcuNzE5NCAxMDIuMzY4IDY3LjQ0NDEgMTAyLjY0NUM2Ni45NDA1IDEwMy4xNDYgNjYuMjcwOSAxMDMuNDQ3IDY1LjU2MDggMTAzLjQ5MUM2NC44NTA3IDEwMy41MzUgNjQuMTQ5IDEwMy4zMTkgNjMuNTg3MiAxMDIuODgzQzYzLjAyNTEgMTAyLjQ0OSA2Mi4zMjM1IDEwMi4yMzQgNjEuNjE0IDEwMi4yNzlDNjAuOTA0NiAxMDIuMzI0IDYwLjIzNTggMTAyLjYyNiA1OS43MzMxIDEwMy4xMjdDNTkuNTc1NCAxMDMuMjg3IDU5LjQzOCAxMDMuNDY1IDU5LjMyNCAxMDMuNjU4QzU5LjIxMDEgMTAzLjg1MSA1OS4wNzI3IDEwNC4wMjkgNTguOTE1IDEwNC4xODhDNTguNjMzMiAxMDQuNDY4IDU4LjI5NzUgMTA0LjY4NyA1Ny45MjgzIDEwNC44MzRDNTcuNTU5MSAxMDQuOTggNTcuMTYzOSAxMDUuMDUxIDU2Ljc2NjcgMTA1LjA0MUM1Ni4zNjk1IDEwNS4wMyA1NS45Nzg1IDEwNC45NCA1NS42MTczIDEwNC43NzVDNTUuMjU2MSAxMDQuNjEgNTQuOTMyMSAxMDQuMzczIDU0LjY2NSAxMDQuMDc5TDU0LjU1MDggMTAzLjk2OEM1NC4yNzE4IDEwMy42ODkgNTMuOTM4OSAxMDMuNDY5IDUzLjU3MjMgMTAzLjMyMkM1My4yMDU3IDEwMy4xNzQgNTIuODEzIDEwMy4xMDMgNTIuNDE3OSAxMDMuMTEyQzUyLjAyMjkgMTAzLjEyIDUxLjYzMzcgMTAzLjIwOSA1MS4yNzM5IDEwMy4zNzJDNTAuOTE0MiAxMDMuNTM1IDUwLjU5MTMgMTAzLjc2OSA1MC4zMjQ4IDEwNC4wNjFMNTAuMjEzMiAxMDQuMTY5QzQ5LjkwMTUgMTA0LjQ3OSA0OS41MjM3IDEwNC43MTUgNDkuMTA4IDEwNC44NTlDNDguNjkyMyAxMDUuMDAyIDQ4LjI0OTUgMTA1LjA1IDQ3LjgxMjYgMTA0Ljk5OUM0Ny4zNzU3IDEwNC45NDggNDYuOTU1OSAxMDQuOCA0Ni41ODQ3IDEwNC41NjRDNDYuMjEzNCAxMDQuMzI5IDQ1LjkwMDIgMTA0LjAxMiA0NS42Njg0IDEwMy42MzlDNDUuNTUwNiAxMDMuNDQ4IDQ1LjQxMjUgMTAzLjI3IDQ1LjI1NjcgMTAzLjEwOUM0NC43NTU0IDEwMi42MDQgNDQuMDg2IDEwMi4zMDEgNDMuMzc1NiAxMDIuMjU2QzQyLjY2NTIgMTAyLjIxMiA0MS45NjMxIDEwMi40MjkgNDEuNDAyNiAxMDIuODY3QzQwLjg0MDggMTAzLjMwMyA0MC4xMzkxIDEwMy41MTkgMzkuNDI5IDEwMy40NzZDMzguNzE4OSAxMDMuNDMyIDM4LjA0OTMgMTAzLjEzMSAzNy41NDU4IDEwMi42MjlDMzcuMjcxNiAxMDIuMzUyIDM3LjA1NjUgMTAyLjAyMyAzNi45MTM2IDEwMS42NjFDMzYuNzcwMyAxMDEuMjk5IDM2LjU1NTMgMTAwLjk3IDM2LjI4MTQgMTAwLjY5M0MzNS44NDE2IDEwMC4yNSAzNS4yNzE0IDk5Ljk2IDM0LjY1NDIgOTkuODY0NUMzNC4wMzcxIDk5Ljc2OTEgMzMuNDA1NiA5OS44NzM2IDMyLjg1MjIgMTAwLjE2M0MzMi4zMDE4IDEwMC40NTggMzEuNjcwNSAxMDAuNTY3IDMxLjA1MjcgMTAwLjQ3NEMzMC40MzUgMTAwLjM4IDI5Ljg2NDEgMTAwLjA5IDI5LjQyNTcgOTkuNjQ1NUMyOS4wMzM1IDk5LjI0NTIgMjguNzYyOCA5OC43NDI0IDI4LjY0NDggOTguMTk1QzI4LjU2MzIgOTcuNzk0NiAyOC4zOTgyIDk3LjQxNTcgMjguMTYwNiA5Ny4wODMxQzI3LjkyMyA5Ni43NTA0IDI3LjYxOCA5Ni40NzEyIDI3LjI2NTQgOTYuMjYzN0MyNi45MTI4IDk2LjA1NjIgMjYuNTIwNSA5NS45MjUgMjYuMTEzOCA5NS44Nzg1QzI1LjcwNzIgOTUuODMyIDI1LjI5NTMgOTUuODcxNCAyNC45MDQ5IDk1Ljk5NEMyNC4zOTE5IDk2LjE1NzggMjMuODQzNiA5Ni4xNzY5IDIzLjMyMDUgOTYuMDQ5MUMyMi43OTc0IDk1LjkyMTQgMjIuMzE5OCA5NS42NTE4IDIxLjk0MDUgOTUuMjcwMUMyMS40Mjc5IDk0Ljc0NDkgMjEuMTI4NyA5NC4wNDg1IDIxLjEwMTIgOTMuMzE1N0MyMS4wODQxIDkyLjU4MTkgMjAuNzg0NCA5MS44ODI5IDIwLjI2NDUgOTEuMzY0QzE5Ljk0NTIgOTEuMDQ1MSAxOS41NTYyIDkwLjgwNDQgMTkuMTI4IDkwLjY2MDhDMTguNjk5OSA5MC41MTczIDE4LjI0NDIgOTAuNDc0OCAxNy43OTY4IDkwLjUzNjZDMTcuMzQ3NCA5MC41OTM3IDE2Ljg5MDggOTAuNTQ4MiAxNi40NjE1IDkwLjQwMzVDMTYuMDMyMiA5MC4yNTg4IDE1LjY0MTQgOTAuMDE4NyAxNS4zMTg2IDg5LjcwMTNDMTQuOTg5OCA4OS4zNjAxIDE0Ljc0NSA4OC45NDcyIDE0LjYwMzUgODguNDk1MkMxNC40NjIgODguMDQzMyAxNC40Mjc2IDg3LjU2NDcgMTQuNTAzMSA4Ny4wOTczQzE0LjU2NDcgODYuNjQ4MyAxNC41MjA3IDg2LjE5MTMgMTQuMzc0NSA4NS43NjIzQzE0LjIyODQgODUuMzMzMyAxMy45ODQxIDg0Ljk0NDIgMTMuNjYxMSA4NC42MjU4QzEzLjEzMzcgODQuMTA3NSAxMi40Mjc1IDgzLjgxMDUgMTEuNjg3NSA4My43OTU4QzEwLjk1MTIgODMuNzc5IDEwLjI0OTggODMuNDc4OCA5LjcyOTkyIDgyLjk1NzhDOS4zNDU3NyA4Mi41ODEgOS4wNzQ0MiA4Mi4xMDQ3IDguOTQ2MzMgODEuNTgyNEM4LjgxODI0IDgxLjA2MDEgOC44Mzg0OCA4MC41MTI1IDkuMDA0NzggODAuMDAxMUM5LjE2NTA0IDc5LjQ4OTMgOS4xODE5NCA3OC45NDM0IDkuMDUzNjUgNzguNDIyN0M4LjkyNTM1IDc3LjkwMiA4LjY1Njc2IDc3LjQyNjIgOC4yNzY5NyA3Ny4wNDdDNy44Nzk4OSA3Ni42NDk4IDcuMzc0NjYgNzYuMzc3OCA2LjgyNDAzIDc2LjI2NDdDNi4yNzU5NCA3Ni4xNDQ4IDUuNzcyNTUgNzUuODczOCA1LjM3MTA4IDc1LjQ4MjVDNC45MzA0NCA3NS4wNDIxIDQuNjQyNDcgNzQuNDcyNSA0LjU0OTI3IDczLjg1N0M0LjQ1NjA4IDczLjI0MTUgNC41NjI1NSA3Mi42MTI0IDQuODUzMTIgNzIuMDYxN0M1LjE0MjAzIDcxLjUwOTYgNS4yNDYzMiA3MC44Nzk2IDUuMTUwNzMgNzAuMjY0MUM1LjA1NTE0IDY5LjY0ODUgNC43NjQ2OCA2OS4wNzk3IDQuMzIxODggNjguNjQwOUM0LjA0Njg1IDY4LjM2NTMgMy43MTc2NiA2OC4xNDk1IDMuMzU1MDIgNjguMDA3MUMyLjk5NDQ4IDY3Ljg1OTcgMi42NjY3NyA2Ny42NDI1IDIuMzkwODEgNjcuMzY4QzEuODg4OTYgNjYuODY1NCAxLjU4Nzg0IDY2LjE5NzUgMS41NDM4MyA2NS40ODkyQzEuNDk5ODMgNjQuNzgwOSAxLjcxNTk2IDY0LjA4MDkgMi4xNTE3NSA2My41MjAzQzIuNTkwMSA2Mi45NTk0IDIuODA4MDEgNjIuMjU3OSAyLjc2NDQ3IDYxLjU0NzhDMi43MjA5MyA2MC44Mzc3IDIuNDE4OTUgNjAuMTY3OSAxLjkxNTM1IDU5LjY2NDZDMS43NjAwNSA1OS41MDc5IDEuNTg2MSA1OS4zNzA3IDEuMzk3MzkgNTkuMjU2MkMxLjIwMzc0IDU5LjE0MyAxLjAyNTI0IDU5LjAwNTggMC44NjYxNDcgNTguODQ3OEMwLjU4NTUxNSA1OC41NjY3IDAuMzY1MDE2IDU4LjIzMTYgMC4yMTgwMjcgNTcuODYyOEMwLjA3MTAzODQgNTcuNDk0IDAuMDAwNjI0MjUzIDU3LjA5OTMgMC4wMTEwNTY2IDU2LjcwMjVDMC4wMjE0ODkgNTYuMzA1OCAwLjExMjU1IDU1LjkxNTMgMC4yNzg3MTYgNTUuNTU0N0MwLjQ0NDg4MiA1NS4xOTQxIDAuNjgyNjg4IDU0Ljg3MSAwLjk3NzcwOCA1NC42MDVMMS4wNzA2OCA1NC41MTIyQzEuMzUwOTYgNTQuMjMwOCAxLjU3MTE2IDUzLjg5NTcgMS43MTc5MyA1My41MjY5QzEuODY0NyA1My4xNTgyIDEuOTM1IDUyLjc2MzUgMS45MjQ1NyA1Mi4zNjY5QzEuOTE0MTQgNTEuOTcwMiAxLjgyMzIgNTEuNTc5OCAxLjY1NzI1IDUxLjIxOTNDMS40OTEzIDUwLjg1ODcgMS4yNTM4IDUwLjUzNTYgMC45NTkxMTQgNTAuMjY5M0wwLjg0NzU1NCA1MC4xNTUzQzAuNTM3NzA0IDQ5Ljg0NDEgMC4zMDIxNzggNDkuNDY3MSAwLjE1ODUxOSA0OS4wNTI0QzAuMDE0ODYwMyA0OC42Mzc3IC0wLjAzMzIzMDQgNDguMTk1OSAwLjAxNzgyOSA0Ny43NjAxQzAuMDY4ODg4NSA0Ny4zMjQzIDAuMjE3NzgyIDQ2LjkwNTYgMC40NTM0MjEgNDYuNTM1MkMwLjY4OTA1OSA0Ni4xNjQ3IDEuMDA1MzcgNDUuODUyMiAxLjM3ODggNDUuNjIwN0MxLjU3MjEyIDQ1LjUwNiAxLjc1MDU1IDQ1LjM2OCAxLjkxMDA0IDQ1LjIwOTdDMi40MTI5MiA0NC43MDg1IDIuNzE0MTkgNDQuMDQwNSAyLjc1Njc4IDQzLjMzMjNDMi43OTkzNyA0Mi42MjQyIDIuNTgwMzIgNDEuOTI1IDIuMTQxMTMgNDEuMzY3M0MxLjg2MDM1IDQxLjAxMzcgMS42NjY0OSA0MC41OTkzIDEuNTc1MDggNDAuMTU3NEMxLjQ4MzY3IDM5LjcxNTUgMS40OTcyNyAzOS4yNTgzIDEuNjE0NzcgMzguODIyNkMxLjczMjI4IDM4LjM4NjkgMS45NTA0MiAzNy45ODQ3IDIuMjUxNzEgMzcuNjQ4NEMyLjU1MyAzNy4zMTIgMi45MjkwNSAzNy4wNTA4IDMuMzQ5NyAzNi44ODU4QzMuNzI5NjggMzYuNzM1NSA0LjA3MzU3IDM2LjUwNjggNC4zNTg4MyAzNi4yMTQ2QzQuNjQ0MDkgMzUuOTIyNSA0Ljg2NDI4IDM1LjU3MzQgNS4wMDQ5OCAzNS4xOTAzQzUuMTQ1NjcgMzQuODA3MyA1LjIwMzY5IDM0LjM5ODggNS4xNzUyMyAzMy45OTE4QzUuMTQ2NzcgMzMuNTg0OCA1LjAzMjQ4IDMzLjE4ODQgNC44Mzk4NCAzMi44Mjg1QzQuNTQ2NDggMzIuMjc4IDQuNDM5NjkgMzEuNjQ3NCA0LjUzNTQ2IDMxLjAzMTJDNC42MzEyMyAzMC40MTQ5IDQuOTI0NDEgMjkuODQ2MyA1LjM3MTA4IDI5LjQxMDRDNS43NzAyNCAyOS4wMTMzIDYuMjc0MDcgMjguNzM3NCA2LjgyNDAzIDI4LjYxNDlDNy4zNjg0NSAyOC40OTc1IDcuODY5MDQgMjguMjMwMiA4LjI2OSAyNy44NDMyQzguNjUyMzggMjcuNDY1OCA4LjkyMzE5IDI2Ljk4OTUgOS4wNTEyNCAyNi40Njc0QzkuMTc5MjggMjUuOTQ1MyA5LjE1OTUyIDI1LjM5OCA4Ljk5NDE1IDI0Ljg4NjRDOC44MzA5MyAyNC4zNzYyIDguODEyNTQgMjMuODMwOCA4Ljk0MTAxIDIzLjMxMDdDOS4wNjk0OCAyMi43OTA2IDkuMzM5OCAyMi4zMTYzIDkuNzIxOTUgMjEuOTQwM0MxMC4yNDg4IDIxLjQyNDYgMTAuOTUwMSAyMS4xMjQ3IDExLjY4NzUgMjEuMDk5N0MxMi40MjM4IDIxLjA4NSAxMy4xMjU3IDIwLjc4NTUgMTMuNjQ1MiAyMC4yNjQ0QzEzLjk2NzIgMTkuOTQ1NSAxNC4yMTA1IDE5LjU1NjIgMTQuMzU1NyAxOS4xMjcyQzE0LjUwMDkgMTguNjk4MyAxNC41NDQxIDE4LjI0MTQgMTQuNDgxOSAxNy43OTI5QzE0LjQyNTUgMTcuMzQ0MiAxNC40NzE1IDE2Ljg4ODYgMTQuNjE2NCAxNi40NjAyQzE0Ljc2MTMgMTYuMDMxNyAxNS4wMDEzIDE1LjY0MTYgMTUuMzE4NiAxNS4zMTg4QzE1LjY2MDcgMTQuOTk0MSAxNi4wNjk3IDE0Ljc0NzkgMTYuNTE3IDE0LjU5NzJDMTYuOTY0MyAxNC40NDY1IDE3LjQzOTEgMTQuMzk1IDE3LjkwODQgMTQuNDQ2NEMxOC4zMTE1IDE0LjQ5OTggMTguNzIxNCAxNC40Njg3IDE5LjExMTggMTQuMzU0OUMxOS41MDIyIDE0LjI0MTEgMTkuODY0NSAxNC4wNDcyIDIwLjE3NTYgMTMuNzg1NkMyMC40ODY2IDEzLjUyNDEgMjAuNzM5NSAxMy4yMDA1IDIwLjkxODEgMTIuODM1OEMyMS4wOTY3IDEyLjQ3MSAyMS4xOTcgMTIuMDczIDIxLjIxMjcgMTEuNjY3M0MyMS4yMjY4IDEwLjkyOTUgMjEuNTI1NiAxMC4yMjU2IDIyLjA0NjggOS43MDIzM0MyMi40MjQ4IDkuMzE5NiAyMi45MDE5IDkuMDQ5MjMgMjMuNDI0OSA4LjkyMTRDMjMuOTQ3OCA4Ljc5MzU4IDI0LjQ5NjEgOC44MTMzMSAyNS4wMDg0IDguOTc4NEMyNS4zOTc2IDkuMTAyMDcgMjUuODA4MyA5LjE0Mjk1IDI2LjIxNDIgOS4wOTgzOUMyNi42MjAxIDkuMDUzODMgMjcuMDEyMiA4LjkyNDgyIDI3LjM2NTEgOC43MTk2OEMyNy43MTggOC41MTQ1NSAyOC4wMjM5IDguMjM3ODQgMjguMjYzIDcuOTA3NDFDMjguNTAyMiA3LjU3Njk4IDI4LjY2OTQgNy4yMDAxNyAyOC43NTM3IDYuODAxMjhDMjguODczMyA2LjI1MzkxIDI5LjE0NDggNS43NTEyMiAyOS41MzczIDUuMzUwNzZDMjkuOTc2OSA0LjkwODY5IDMwLjU0NjYgNC42MTg3MiAzMS4xNjMyIDQuNTIzMjlDMzEuNzc5OCA0LjQyNzg1IDMyLjQxMDggNC41MzE5NyAzMi45NjM4IDQuODIwNEMzMy41MTY4IDUuMTA4ODMgMzQuMTQ3OCA1LjIxMjk1IDM0Ljc2NDQgNS4xMTc1MUMzNS4zODA5IDUuMDIyMDggMzUuOTUwNyA0LjczMjExIDM2LjM5MDMgNC4yOTAwNEMzNi42NjQ0IDQuMDEzMzEgMzYuODgxIDMuNjg1MjkgMzcuMDI3OCAzLjMyNDc5QzM3LjE3MzEgMi45NzI1OSAzNy4zODgxIDIuNjUzMyAzNy42NiAyLjM4NjA2QzM4LjE1NzkgMS44Nzc1MSAzOC44MjU4IDEuNTY5NDcgMzkuNTM2NSAxLjUyMDU4QzQwLjI0NzEgMS40NzE2OCA0MC45NTEgMS42ODUzNCA0MS41MTQxIDIuMTIwODhDNDIuMDc2MyAyLjU1ODE2IDQyLjc3OTIgMi43NzUyNSA0My40OTA0IDIuNzMxMjlDNDQuMjAxNyAyLjY4NzM0IDQ0Ljg3MjQgMi4zODUzNyA0NS4zNzYzIDEuODgyMjJDNDUuNTMxOSAxLjcyMTc3IDQ1LjY2ODMgMS41NDM3OSA0NS43ODI3IDEuMzUxODdDNDUuODk4MiAxLjE2IDQ2LjAzNTQgMC45ODIwNCA0Ni4xOTE3IDAuODIxNTExQzQ2LjQ3MzUgMC41NDE4NjggNDYuODA5MiAwLjMyMjE0NSA0Ny4xNzg0IDAuMTc1NjA3QzQ3LjU0NzYgMC4wMjkwNjk1IDQ3Ljk0MjggLTAuMDQxMjQxNCA0OC4zNCAtMC4wMzEwODAxQzQ4LjczNzIgLTAuMDIwOTE4NyA0OS4xMjgyIDAuMDY5NTA0MSA0OS40ODk0IDAuMjM0NzI4QzQ5Ljg1MDYgMC4zOTk5NTIgNTAuMTc0NiAwLjYzNjU1IDUwLjQ0MTcgMC45MzAyMzRMNTAuNTU1OSAxLjA0NDI2QzUxLjA4MjIgMS41NzI4NyA1MS43OTEyIDEuODgwMjkgNTIuNTM3NCAxLjkwMzQ0QzUyLjk1ODcgMS45MTc2OSA1My4zNzc5IDEuODM5NiA1My43NjU3IDEuNjc0NjdDNTQuMTUzNSAxLjUwOTczIDU0LjUwMDQgMS4yNjE5NyA1NC43ODE5IDAuOTQ4Nzk2TDU0Ljg5MzUgMC44NDAwNzNDNTUuMjA2NCAwLjUzMjU4MSA1NS41ODQ0IDAuMjk5MDk4IDU1Ljk5OTcgMC4xNTY4MjVDNTYuNDE1MSAwLjAxNDU1MTIgNTYuODU3IC0wLjAzMjg4NjggNTcuMjkzMiAwLjAxODAwNTRDNTcuNzI5MyAwLjA2ODg5NzcgNTguMTQ4NCAwLjIxNjgyMyA1OC41MTk2IDAuNDUwODg0QzU4Ljg5MDkgMC42ODQ5NDUgNTkuMjA0OCAwLjk5OTE3NyA1OS40MzgyIDEuMzcwNDNDNTkuNTUzNiAxLjU2MjQyIDU5LjY5MDkgMS43NDA0IDU5Ljg0NzMgMS45MDA3OUM2MC4zNTA0IDIuNDAyMTkgNjEuMDE5MyAyLjcwMzMgNjEuNzI4OCAyLjc0NzcyQzYyLjQzODIgMi43OTIxNCA2My4xMzk2IDIuNTc2ODMgNjMuNzAxNSAyLjE0MjFDNjQuMjYzNyAxLjcwNzcxIDY0Ljk2NTIgMS40OTI4NSA2NS42NzQ3IDEuNTM3NzZDNjYuMzg0MSAxLjU4MjY3IDY3LjA1MjkgMS44ODQyNyA2Ny41NTU2IDIuMzg2MDZDNjcuODMwMyAyLjY2MTc3IDY4LjA0NjIgMi45OTAxMSA2OC4xOTA1IDMuMzUxMzFDNjguMzM5NiAzLjczMTEzIDY4LjU2NzYgNC4wNzUxNiA2OC44NTkzIDQuMzYwODFDNjkuMTUxMSA0LjY0NjQ3IDY5LjUwMDEgNC44NjcyOSA2OS44ODM0IDUuMDA4NzhDNzAuMjY2NyA1LjE1MDI3IDcwLjY3NTYgNS4yMDkyMyA3MS4wODMzIDUuMTgxNzlDNzEuNDkxIDUuMTU0MzUgNzEuODg4MyA1LjA0MTEzIDcyLjI0OTEgNC44NDk1N0M3Mi44MDEgNC41NTY0OSA3My40MzMxIDQuNDQ5NzYgNzQuMDUwOCA0LjU0NTM3Qzc0LjY2ODUgNC42NDA5OCA3NS4yMzg2IDQuOTMzNzggNzUuNjc1NyA1LjM3OTkzQzc2LjA2OTggNS43Nzk3OCA3Ni4zNDA4IDYuMjg0MTIgNzYuNDU2NiA2LjgzMzFDNzYuNTQxMiA3LjIzMTc1IDc2LjcwODYgNy42MDgyOCA3Ni45NDc5IDcuOTM4NEM3Ny4xODcyIDguMjY4NTMgNzcuNDkzMiA4LjU0NDkzIDc3Ljg0NiA4Ljc0OThDNzguMTk4OSA4Ljk1NDY2IDc4LjU5MDggOS4wODM0NCA3OC45OTY2IDkuMTI3ODRDNzkuNDAyMyA5LjE3MjI0IDc5LjgxMjkgOS4xMzEyNyA4MC4yMDE4IDkuMDA3NTdDODAuNzEzOCA4Ljg0MjM5IDgxLjI2MTcgOC44MjI2MiA4MS43ODQyIDguOTUwNDdDODIuMzA2OCA5LjA3ODMxIDgyLjc4MzQgOS4zNDg3MyA4My4xNjA5IDkuNzMxNUM4My42NzM3IDEwLjI0OTIgODMuOTc0MSAxMC45Mzk3IDg0LjAwMjkgMTEuNjY3M0M4NC4wMjA5IDEyLjQwMTQgODQuMzIxNSAxMy4xMDA0IDg0Ljg0MjIgMTMuNjE5Qzg1LjE2MTYgMTMuOTQwNSA4NS41NTE2IDE0LjE4MzQgODUuOTgxMyAxNC4zMjg0Qzg2LjQxMSAxNC40NzMzIDg2Ljg2ODYgMTQuNTE2NSA4Ny4zMTc4IDE0LjQ1NDNDODcuNzY3NSAxNC4zOTY4IDg4LjIyNDUgMTQuNDQyNCA4OC42NTM5IDE0LjU4NzZDODkuMDgzMyAxNC43MzI4IDg5LjQ3MzkgMTQuOTczOCA4OS43OTYxIDE1LjI5MjNDOTAuMTIgMTUuNjEwNCA5MC4zNjQ3IDE2IDkwLjUxMDUgMTYuNDI5N0M5MC42NTYyIDE2Ljg1OTQgOTAuNjk5IDE3LjMxNzIgOTAuNjM1NCAxNy43NjY0QzkwLjU3MiAxOC4yMTUyIDkwLjYxNSAxOC42NzI2IDkwLjc2MDcgMTkuMTAxOEM5MC45MDY1IDE5LjUzMSA5MS4xNTExIDE5LjkyMDEgOTEuNDc0OCAyMC4yMzc5QzkxLjk5ODkgMjAuNzIwNyA5Mi42MzA5IDIxLjA3MTcgOTMuMzE4MiAyMS4yNjE1Qzk0LjA1MjYgMjEuMjc4OSA5NC43NTIzIDIxLjU3NjkgOTUuMjczMiAyMi4wOTQxQzk1LjY1NjQgMjIuNDcyNyA5NS45MjczIDIyLjk0OTggOTYuMDU1NyAyMy40NzI2Qzk2LjE4NDIgMjMuOTk1NCA5Ni4xNjUyIDI0LjU0MzUgOTYuMDAxIDI1LjA1NjJDOTUuODQxOSAyNS41Njc5IDk1LjgyNTMgMjYuMTEzMiA5NS45NTMgMjYuNjMzNkM5Ni4wODA4IDI3LjE1NDEgOTYuMzQ4IDI3LjYyOTkgOTYuNzI2MSAyOC4wMTAyQzk3LjEyMjYgMjguNDEwOCA5Ny42Mjc2IDI4LjY4NzMgOTguMTc5MSAyOC44MDU4Qzk4LjcyOTIgMjguOTI3OCA5OS4yMzMyIDI5LjIwMzggOTkuNjMyIDI5LjYwMTNDMTAwLjA3NSAzMC4wNDAyIDEwMC4zNjUgMzAuNjA5IDEwMC40NjEgMzEuMjI0NUMxMDAuNTU2IDMxLjg0MDEgMTAwLjQ1MiAzMi40NyAxMDAuMTYzIDMzLjAyMjFDOTkuOTc0NSAzMy4zODI1IDk5Ljg2MzIgMzMuNzc4MyA5OS44MzY3IDM0LjE4NDJDOTkuODEwMiAzNC41OSA5OS44NjkgMzQuOTk2OSAxMDAuMDA5IDM1LjM3ODdDMTAwLjE1IDM1Ljc2MDUgMTAwLjM2OCAzNi4xMDg4IDEwMC42NTIgMzYuNDAxMkMxMDAuOTM1IDM2LjY5MzYgMTAxLjI3NiAzNi45MjM3IDEwMS42NTMgMzcuMDc2N0MxMDIuMDczIDM3LjI0MjcgMTAyLjQ0OCAzNy41MDQxIDEwMi43NDggMzcuODQwMUMxMDMuMDQ5IDM4LjE3NjEgMTAzLjI2NyAzOC41Nzc2IDEwMy4zODUgMzkuMDEyNEMxMDMuNTAyIDM5LjQ0NzMgMTAzLjUxNyAzOS45MDM2IDEwMy40MjcgNDAuMzQ1MUMxMDMuMzM3IDQwLjc4NjYgMTAzLjE0NiA0MS4yMDEgMTAyLjg2NyA0MS41NTU2QzEwMi40MzEgNDIuMTE2NyAxMDIuMjE1IDQyLjgxNzQgMTAyLjI1OSA0My41MjYzQzEwMi4zMDQgNDQuMjM1MiAxMDIuNjA2IDQ0LjkwMzYgMTAzLjEwOSA0NS40MDU5QzEwMy4yNjYgNDUuNTYxNSAxMDMuNDQgNDUuNjk5MyAxMDMuNjI3IDQ1LjgxN0MxMDQuMDEzIDQ2LjA1MjQgMTA0LjMzOCA0Ni4zNzQ2IDEwNC41NzggNDYuNzU3OEMxMDQuODE3IDQ3LjE0MSAxMDQuOTYzIDQ3LjU3NDcgMTA1LjAwNSA0OC4wMjQzQzEwNS4wNDcgNDguNDczOSAxMDQuOTgzIDQ4LjkyNyAxMDQuODE4IDQ5LjM0NzZDMTA0LjY1NCA0OS43NjgyIDEwNC4zOTMgNTAuMTQ0NiAxMDQuMDU3IDUwLjQ0N0wxMDMuOTQ2IDUwLjU1ODRDMTAzLjY2NiA1MC44MzY5IDEwMy40NDYgNTEuMTY5MyAxMDMuMjk4IDUxLjUzNTNDMTAzLjE1MSA1MS45MDEzIDEwMy4wNzkgNTIuMjkzMyAxMDMuMDg4IDUyLjY4NzdDMTAzLjA5NyA1My4wODIxIDEwMy4xODUgNTMuNDcwNiAxMDMuMzQ5IDUzLjgyOThDMTAzLjUxMiA1NC4xODkgMTAzLjc0NyA1NC41MTEzIDEwNC4wMzkgNTQuNzc3M0wxMDQuMTQyIDU0Ljg3MjhaIiBmaWxsPSJ1cmwoI3BhaW50MF9saW5lYXIpIi8+CjxwYXRoIGQ9Ik04Ny4xOTggODcuMTQwM0M3Ny45OTgyIDk2LjMyNDMgNjUuNTIxOSAxMDEuNDg1IDUyLjUxMTggMTAxLjQ4OUMzOS41MDE2IDEwMS40OTIgMjcuMDIyNSA5Ni4zMzc5IDE3LjgxNzggODcuMTU4OEwxNy44MDE5IDg3LjE0MjlDMTAuOTM5NyA4MC4yOTEzIDYuMjY2NTUgNzEuNTYyMiA0LjM3MzM5IDYyLjA1OTNDMi40ODAyMyA1Mi41NTY0IDMuNDUyMDQgNDIuNzA2NSA3LjE2NTk1IDMzLjc1NDlDMTAuODc5OSAyNC44MDM0IDE3LjE2OTEgMTcuMTUyMiAyNS4yMzg0IDExLjc2ODlDMzMuMzA3NyA2LjM4NTU3IDQyLjc5NDcgMy41MTE4IDUyLjQ5OTkgMy41MTA5N0M1OC45NDU3IDMuNTAyNDMgNjUuMzI5NSA0Ljc2NTY5IDcxLjI4NDcgNy4yMjgxNEM3Ny4yMzk4IDkuNjkwNTkgODIuNjQ4NyAxMy4zMDM3IDg3LjIwMDcgMTcuODU5OEw4Ny4yMTY2IDE3Ljg3NTdDMTA2LjM2OCAzNy4wMTA5IDEwNi4zNTcgNjguMDEwMyA4Ny4xOTggODcuMTQwM1oiIGZpbGw9IiNFRTZDM0IiLz4KPHBhdGggZD0iTTgzLjExNTQgODMuMDY0NEM3NC45OTgyIDkxLjE2NzcgNjMuOTg5OCA5NS43MjExIDUyLjUxMDcgOTUuNzIzNkM0MS4wMzE1IDk1LjcyNjEgMzAuMDIxMiA5MS4xNzc0IDIxLjkwMDQgODMuMDc3N0wyMS44ODQ1IDgzLjA2NDRDMTMuNzY0NyA3NC45NTgyIDkuMjAzMTMgNjMuOTYzOSA5LjIwMzEyIDUyLjVDOS4yMDMxMyA0MS4wMzYxIDEzLjc2NDcgMzAuMDQxNyAyMS44ODQ1IDIxLjkzNTVDMzAuMDA0MiAxMy44MjkzIDQxLjAxNjkgOS4yNzUzMyA1Mi41IDkuMjc1MzNDNjMuOTgzIDkuMjc1MzMgNzQuOTk1NyAxMy44MjkzIDgzLjExNTQgMjEuOTM1NVYyMS45NTE1QzkxLjIzMDQgMzAuMDU2OSA5NS43ODkxIDQxLjA0NzkgOTUuNzg5MSA1Mi41MDc5Qzk1Ljc4OTEgNjMuOTY4IDkxLjIzMDQgNzQuOTU5IDgzLjExNTQgODMuMDY0NFoiIGZpbGw9InVybCgjcGFpbnQxX2xpbmVhcikiLz4KPHBhdGggZD0iTTgxLjQxMDUgMjMuNjQwN0M4Ny4xMjg1IDI5LjM0ODggOTEuMDIyNiAzNi42MjE2IDkyLjYwMDMgNDQuNTM5MkM5NC4xNzggNTIuNDU2OCA5My4zNjg0IDYwLjY2MzcgOTAuMjc0MSA2OC4xMjIxQzg3LjE3OTcgNzUuNTgwNCA4MS45Mzk0IDgxLjk1NTEgNzUuMjE2IDg2LjQ0MDJDNjguNDkyNSA5MC45MjUyIDYwLjU4NzkgOTMuMzE5MSA1Mi41MDE2IDkzLjMxOTFDNDQuNDE1MyA5My4zMTkxIDM2LjUxMDcgOTAuOTI1MiAyOS43ODcyIDg2LjQ0MDJDMjMuMDYzOCA4MS45NTUxIDE3LjgyMzUgNzUuNTgwNCAxNC43MjkxIDY4LjEyMjFDMTEuNjM0OCA2MC42NjM3IDEwLjgyNTIgNTIuNDU2OCAxMi40MDI5IDQ0LjUzOTJDMTMuOTgwNyAzNi42MjE2IDE3Ljg3NDcgMjkuMzQ4OCAyMy41OTI3IDIzLjY0MDdDMjcuMzg4OCAxOS44NTAxIDMxLjg5NTcgMTYuODQzMiAzNi44NTU5IDE0Ljc5MThDNDEuODE2MSAxMi43NDAzIDQ3LjEzMjYgMTEuNjg0NCA1Mi41MDE2IDExLjY4NDRDNTcuODcwNiAxMS42ODQ0IDYzLjE4NzEgMTIuNzQwMyA2OC4xNDczIDE0Ljc5MThDNzMuMTA3NSAxNi44NDMyIDc3LjYxNDQgMTkuODUwMSA4MS40MTA1IDIzLjY0MDdaIiBmaWxsPSIjRUM2QzNCIi8+CjxwYXRoIGQ9Ik01NC4yNjM2IDE4Ljc3NDZMNTMuMjc4MSAxOS41MDY1TDUyLjU0NSAyMC40OTAzTDUxLjgxMTkgMTkuNTA2NUw1MC44MjkxIDE4Ljc3NDZMNTEuODExOSAxOC4wNDI3TDUyLjU0NSAxNy4wNTg5TDUzLjI3ODEgMTguMDQyN0w1NC4yNjM2IDE4Ljc3NDZaIiBmaWxsPSIjQ0MzQTFEIi8+CjxwYXRoIGQ9Ik03Ni41Nzg4IDcwLjcyNTdDODAuNTIzMyA3My42NjM5IDgzLjg2NDggNjguOTE5OSA4My44NjQ4IDY4LjkxOTlDODMuODY0OCA2OC45MTk5IDc5LjQ0MjIgNjcuMzI4OCA3Ny4xNjA1IDY5LjM3MDdDNzcuNjIyIDY4LjE3ODIgNzcuOTU4NSA2Ni45NDExIDc4LjE2NDYgNjUuNjc5NEM4MS4zNTIgNjcuMjcwNCA4My4yMTE0IDYzLjUwNzYgODMuMjExNCA2My41MDc2QzgzLjIxMTQgNjMuNTA3NiA3OS43NTgzIDYyLjc5NDIgNzguMzAyNyA2NC41MzkxQzc4LjM2NjggNjMuODcxMSA3OC4zOTI1IDYzLjIgNzguMzc5NyA2Mi41MjkxQzc4LjM3OTcgNjIuMjYzOSA3OC4zNjM4IDYxLjk5ODcgNzguMzQyNSA2MS43MzM1QzgwLjY2MTQgNTkuMDIzNCA3Ni45ODUyIDU2LjU4NjQgNzYuOTg1MiA1Ni41ODY0Qzc2Ljk4NTIgNTYuNTg2NCA3NS4zMDY1IDYwLjMzMzQgNzcuNzUyOSA2MS44MDc4Qzc3Ljc2ODggNjIuMDUxNyA3Ny43NzY4IDYyLjI5MzEgNzcuNzc2OCA2Mi41NDVDNzcuNzgxOCA2My4xMDI4IDc3Ljc1NjEgNjMuNjYwNSA3Ny42OTk3IDY0LjIxNTZDNzcuMDMwNCA2Mi4yMjY4IDczLjg0MjkgNjEuNDg5NiA3My44NDI5IDYxLjQ4OTZDNzMuODQyOSA2MS40ODk2IDczLjc0MiA2NS43NDU3IDc3LjUxMzggNjUuNTI1NkM3Ny4yODgxIDY2Ljc3NDcgNzYuOTMyIDY3Ljk5NjcgNzYuNDUxMyA2OS4xNzE4Qzc2LjMwMjYgNjYuMjA0NCA3MS45MTE5IDY0LjUwOTkgNzEuOTExOSA2NC41MDk5QzcxLjkxMTkgNjQuNTA5OSA3MC44NjggNzAuMDc4NyA3NS44NDA0IDcwLjUxODlDNzUuNTQyOSA3MS4xMDQzIDc1LjIxNTggNzEuNjc0MyA3NC44NjAyIDcyLjIyNjZDNzQuNDExNiA3Mi45MjQ2IDczLjkxNjQgNzMuNTkxNyA3My4zNzgxIDc0LjIyMzRDNzQuMTM3OCA3MS4yODUyIDcwLjI3MyA2OC41MzggNzAuMjczIDY4LjUzOEM3MC4yNzMgNjguNTM4IDY3Ljc3ODggNzMuNjQ4IDcyLjQxMzkgNzUuMjc2MkM3Mi4xMTY0IDc1LjU5MTcgNzEuNzg3IDc1Ljg3MjggNzEuNDczNiA3Ni4xNjcyQzcxLjMwODkgNzYuMzE1NyA3MS4xMzYyIDc2LjQ0ODMgNzAuOTcxNiA3Ni41OTQxTDcwLjcxOTIgNzYuODA4OUw3MC40NTM2IDc3LjAwNzhMNjkuOTIyMyA3Ny40MDU2TDY5LjM3MjUgNzcuNzc5NUM2OS4zMTE0IDc3LjgxNjYgNjkuMjQ3NyA3Ny44NjE3IDY5LjE5NDUgNzcuODk4OEM3MC40NjQyIDc1LjM3OTYgNjcuNTcxNiA3Mi4xNzYyIDY3LjU3MTYgNzIuMTc2MkM2Ny41NzE2IDcyLjE3NjIgNjQuMjY5OSA3Ni4yNjI2IDY3Ljk1NDEgNzguNjQxM0M2Ni45MDIyIDc5LjIyNSA2NS43OTk5IDc5LjcxMzIgNjQuNjYwNCA4MC4wOTk4QzY2LjE1ODUgNzguMTkzMSA2NC40Nzk4IDc1LjAyNjkgNjQuNDc5OCA3NS4wMjY5QzY0LjQ3OTggNzUuMDI2OSA2MC44Mjc1IDc3LjgwMzMgNjMuMjg5OCA4MC41MTg3QzYyLjM5MzIgODAuNzU5MSA2MS40ODIgODAuOTQxNSA2MC41NjE5IDgxLjA2NUM2MS43MDY3IDc5LjgyNjYgNjAuOTkyMiA3Ny41MDYzIDYwLjk5MjIgNzcuNTA2M0M2MC45OTIyIDc3LjUwNjMgNTguMDkxNiA3OS4wMDE5IDU5LjI4NDIgODEuMTg5NkM1OC44NzUyIDgxLjIxMDkgNTguNDYwOCA4MS4yNCA1OC4wNTE4IDgxLjIzNDdDNTcuODIzMyA4MS4yMzQ3IDU3LjYwNTUgODEuMjM0NyA1Ny4zNzcxIDgxLjIzNDdMNTYuNzAyNCA4MS4yMDU2QzU2LjAzNTcgODEuMTYwNSA1NS4zNzQzIDgxLjA5NDIgNTQuNzEyOSA4MC45OTg3TDU1LjI0NDEgODAuNzk5OEw1NS41NzM1IDgwLjY3NTJMNTUuODk0OSA4MC41MzQ3TDU2LjUzNzcgODAuMjUzNkM1Ni42MDg0IDgwLjIyNDkgNTYuNjcyNCA4MC4xODIxIDU2LjcyNTkgODAuMTI3N0M1Ni43NzkzIDgwLjA3MzQgNTYuODIxIDgwLjAwODYgNTYuODQ4NCA3OS45Mzc2QzU2Ljg3NTggNzkuODY2NSA1Ni44ODgzIDc5Ljc5MDUgNTYuODg1MSA3OS43MTQ0QzU2Ljg4MTkgNzkuNjM4MyA1Ni44NjMxIDc5LjU2MzcgNTYuODI5OSA3OS40OTUyQzU2Ljc1MzUgNzkuMzYwMyA1Ni42Mjk3IDc5LjI1ODYgNTYuNDgyNSA3OS4yMDk2QzU2LjMzNTMgNzkuMTYwNiA1Ni4xNzUyIDc5LjE2NzkgNTYuMDMzIDc5LjIzTDU2LjAwMzggNzkuMjQzMkw1NS4zOTgyIDc5LjUwODRMNTUuMDkyNyA3OS42NDFMNTQuNzg3MyA3OS43NTc3TDU0LjE2ODQgODAuMDAxNkw1My41NDE1IDgwLjIxMzhMNTMuMjI4MSA4MC4zMTcyTDUyLjkwNjcgODAuNDA3NEw1Mi40OTc2IDgwLjUwODFMNTIuMDk5MiA4MC4zOTk0TDUxLjc3NzggODAuMzExOUw1MS40NjE3IDgwLjIwODVMNTAuODM0OCA3OS45OTM3TDUwLjIxNTkgNzkuNzQ5N0w0OS45MTA1IDc5LjYzM0w0OS42MDUgNzkuNTAwNUw0OS4wMDIgNzkuMjM1M0g0OC45NzAyQzQ4LjgyODEgNzkuMTcyNiA0OC42Njc3IDc5LjE2NSA0OC41MjA0IDc5LjIxNEM0OC4zNzMgNzkuMjYzMSA0OC4yNDkzIDc5LjM2NTIgNDguMTczMyA3OS41MDA1QzQ4LjE0MDIgNzkuNTY5MyA0OC4xMjE3IDc5LjY0NDMgNDguMTE4OSA3OS43MjA2QzQ4LjExNjEgNzkuNzk3IDQ4LjEyOSA3OS44NzMxIDQ4LjE1NjkgNzkuOTQ0MkM0OC4xODQ4IDgwLjAxNTQgNDguMjI3MSA4MC4wOCA0OC4yODExIDgwLjEzNDFDNDguMzM1MSA4MC4xODgzIDQ4LjM5OTcgODAuMjMwNyA0OC40NzA4IDgwLjI1ODlMNDkuMTEzNiA4MC41NEw0OS40MzUgODAuNjgwNUw0OS43NjQ0IDgwLjgwNTFMNTAuMjk1NiA4MS4wMDRDNDkuNjM2OSA4MS4xMDc0IDQ4Ljk2NzUgODEuMTY1OCA0OC4zMDM1IDgxLjIxMDlMNDcuNjI4OCA4MS4yNEM0Ny40MDMgODEuMjQgNDcuMTgyNSA4MS4yNCA0Ni45NTQxIDgxLjI0QzQ2LjUzOTcgODEuMjQgNDYuMTMwNyA4MS4yMTYyIDQ1LjcyNDMgODEuMTk1QzQ2LjkwODkgNzguOTk5MyA0NC4wMTM3IDc3LjUxMTYgNDQuMDEzNyA3Ny41MTE2QzQ0LjAxMzcgNzcuNTExNiA0My4yOTM4IDc5LjgzMTkgNDQuNDQ2NiA4MS4wNzAzQzQzLjUxNzkgODAuOTUxNyA0Mi41OTg0IDgwLjc2OTIgNDEuNjk0OCA4MC41MjRDNDQuMTYyNCA3Ny44MDA3IDQwLjUwMjIgNzUuMDMyMiA0MC41MDIyIDc1LjAzMjJDNDAuNTAyMiA3NS4wMzIyIDM4LjgyMzQgNzguMjE0MyA0MC4zMjE1IDgwLjEwNTFDMzkuMTgyMyA3OS43MTc5IDM4LjA4IDc5LjIyOTggMzcuMDI3OCA3OC42NDY2QzQwLjcxNDcgNzYuMjc1OSAzNy40MTMgNzIuMTgxNSAzNy40MTMgNzIuMTgxNUMzNy40MTMgNzIuMTgxNSAzNC41MjA0IDc1LjM3NjkgMzUuNzkwMSA3Ny45MDQxQzM1LjcyNjkgNzcuODY5IDM1LjY2NjUgNzcuODI5MSAzNS42MDk0IDc3Ljc4NDhMMzUuMDU5NiA3Ny40MTA5TDM0LjUyODQgNzcuMDEzMUMzNC40NDM0IDc2Ljk0NjggMzQuMzUwNCA3Ni44ODA1IDM0LjI2MjcgNzYuODE0MkwzNC4wMTMgNzYuNTk5NEMzMy44NDg0IDc2LjQ1ODkgMzMuNjc1NyA3Ni4zMzQyIDMzLjUxMSA3Ni4xNzI1QzMzLjE5NzYgNzUuODc4MSAzMi44NjgyIDc1LjU5MTcgMzIuNTY4MSA3NS4yODE1QzM3LjIwMzIgNzMuNjUzMyAzNC43MDkgNjguNTQzMyAzNC43MDkgNjguNTQzM0MzNC43MDkgNjguNTQzMyAzMC44NDQyIDcxLjI4NTIgMzEuNjA5MiA3NC4yMjM0QzMxLjA3MDcgNzMuNTkxOSAzMC41NzU1IDcyLjkyNDggMzAuMTI3IDcyLjIyNjZDMjkuNzY4NCA3MS42NzUxIDI5LjQ0NyA3MS4wOTk2IDI5LjE0NjkgNzAuNTE4OUMzNC4xMTEzIDcwLjA3MDcgMzMuMDc1NCA2NC41MDk5IDMzLjA3NTQgNjQuNTA5OUMzMy4wNzU0IDY0LjUwOTkgMjguNjg0NyA2Ni4yMDk3IDI4LjUzNTkgNjkuMTcxOEMyOC4wNTQgNjcuOTk3MiAyNy42OTc4IDY2Ljc3NSAyNy40NzM1IDY1LjUyNTZDMzEuMjQyNiA2NS43NDU3IDMxLjE0MTcgNjEuNDg5NiAzMS4xNDE3IDYxLjQ4OTZDMzEuMTQxNyA2MS40ODk2IDI3Ljk1NDIgNjIuMjE4OCAyNy4yOTI4IDY0LjIwNzZDMjcuMjM3MSA2My42NDgxIDI3LjIxMzIgNjMuMDk2NSAyNy4yMTMyIDYyLjUzN0MyNy4yMTMyIDYyLjI5MzEgMjcuMjEzMiA2Mi4wNDkxIDI3LjIzNzEgNjEuNzk5OEMyOS42NzU1IDYwLjMyMDEgMjguMDA0NyA1Ni41Nzg1IDI4LjAwNDcgNTYuNTc4NUMyOC4wMDQ3IDU2LjU3ODUgMjQuMzI4NSA1OS4wMTU0IDI2LjY1IDYxLjcyNTZDMjYuNjE4MiA2MS45OTA3IDI2LjYxMDIgNjIuMjU1OSAyNi42MDIyIDYyLjUyMTFDMjYuNTg1NCA2My4xOTIxIDI2LjYxMTEgNjMuODYzNCAyNi42NzkzIDY0LjUzMTJDMjUuMjM0MyA2Mi43ODYzIDIxLjc4MTIgNjMuNTA3NiAyMS43ODEyIDYzLjUwNzZDMjEuNzgxMiA2My41MDc2IDIzLjY0MDUgNjcuMjcwNCAyNi44MjggNjUuNjc5NEMyNy4wMzEyIDY2Ljk0MTUgMjcuMzY2OSA2OC4xNzg3IDI3LjgyOTQgNjkuMzcwN0MyNS41NTU3IDY3LjMyMzUgMjEuMTM1NyA2OC45MTk5IDIxLjEzNTcgNjguOTE5OUMyMS4xMzU3IDY4LjkxOTkgMjQuNDc0NiA3My42NTU5IDI4LjQxOTEgNzAuNzI1N0MyOC43MjY2IDcxLjM2NzUgMjkuMDY5OCA3MS45OTE2IDI5LjQ0NyA3Mi41OTUyQzI5LjgyMTggNzMuMjEwMyAzMC4yMzUzIDczLjgwMSAzMC42ODQ4IDc0LjM2NEMyNy45NjQ5IDczLjIyMSAyNC4zNTc3IDc1LjY1MjcgMjQuMzU3NyA3NS42NTI3QzI0LjM1NzcgNzUuNjUyNyAyOC44MjU1IDc5LjQwNzcgMzEuODUzNSA3NS43MTExQzMxLjg4NTQgNzUuNzQwMiAzMS45MDY3IDc1Ljc2OTQgMzEuOTM4NSA3NS43OTg2QzMyLjI0NCA3Ni4xMyAzMi41ODE0IDc2LjQ0MDMgMzIuOTEwNyA3Ni43NTU5QzMzLjA3NTQgNzYuOTA5NyAzMy4yNTYgNzcuMDU4MiAzMy40NDIgNzcuMjA2N0wzMy43MDc2IDc3LjQyNjhDMzMuNzkyNiA3Ny41MDEgMzMuODg1NiA3Ny41NjczIDMzLjk3MzIgNzcuNjM4OUwzNC41MDQ0IDc4LjA2MDVMMzQuNjgyNCA3OC4xODUyQzMyLjA2NiA3Ny45MzU5IDI5LjUyNDEgODAuNjA4OSAyOS41MjQxIDgwLjYwODlDMjkuNTI0MSA4MC42MDg5IDM0LjM3NyA4My4xNjI2IDM2LjMzNzIgNzkuMjU5MkMzNy4yODYzIDc5LjgxNjkgMzguMjc3NCA4MC4zIDM5LjMwMTYgODAuNzA0NEMzNy4xMzY4IDgxLjE0NDYgMzUuNjc4NSA4My43NDYgMzUuNjc4NSA4My43NDZDMzUuNjc4NSA4My43NDYgNDAuMjk3NiA4NC45MzkzIDQxLjE1MjkgODEuMzQzNUM0MS45NjAxIDgxLjU3OTIgNDIuNzc5NCA4MS43NzEzIDQzLjYwNzMgODEuOTE4OUM0Mi4zMjk2IDgyLjY0ODEgNDEuNzMyIDg0LjQwODkgNDEuNzMyIDg0LjQwODlDNDEuNzMyIDg0LjQwODkgNDUuMTEzMyA4NC42OTUzIDQ1LjM0NzEgODIuMTQ2OUM0NS40MDE1IDgyLjE1NjIgNDUuNDU2NiA4Mi4xNjE1IDQ1LjUxMTggODIuMTYyOEM0NS45ODE5IDgyLjE5MiA0Ni40NTIxIDgyLjIzNDQgNDYuOTIyMiA4Mi4yMjkxQzQ3LjE1ODYgODIuMjI5MSA0Ny4zOTUgODIuMjQyNCA0Ny42Mjg4IDgyLjIyOTFMNDguMzQzMyA4Mi4yMDUzQzQ5LjI4NjkgODIuMTY1NyA1MC4yMjY3IDgyLjA2MjEgNTEuMTU2MiA4MS44OTVMNTEuNTA5NSA4MS44MzY3QzUxLjYyOSA4MS44MTU1IDUxLjczNzkgODEuNzg2MyA1MS44NTQ4IDgxLjc2MjRMNTIuNTEzNiA4MS42Mjk4TDUzLjE0ODQgODEuNzcwNEM1My4yNjc5IDgxLjc5MTYgNTMuMzc2OCA4MS44MjM0IDUzLjQ5MzcgODEuODQ0Nkw1My44NDcgODEuOTAzQzU0Ljc3ODEgODIuMDY0OSA1NS43MTg1IDgyLjE2ODYgNTYuNjYyNiA4Mi4yMTMyTDU3LjM2NjQgODIuMjM0NEM1Ny42MDI4IDgyLjIzNDQgNTcuODM2NiA4Mi4yMzQ0IDU4LjA3MyA4Mi4yMzQ0QzU4LjU0MzEgODIuMjM0NCA1OS4wMTMzIDgyLjE5MiA1OS40ODM0IDgyLjE2ODFDNTkuNTM5MiA4Mi4xNjgxIDU5LjU5NSA4Mi4xNTQ5IDU5LjY0ODEgODIuMTU0OUM1OS44OTI1IDg0LjY5NTMgNjMuMjYzMiA4NC40MTQyIDYzLjI2MzIgODQuNDE0MkM2My4yNjMyIDg0LjQxNDIgNjIuNjY4MiA4Mi42NTYxIDYxLjM5MDYgODEuOTI2OEM2Mi4yMTg3IDgxLjc4MDIgNjMuMDM4IDgxLjU4ODEgNjMuODQ0OSA4MS4zNTE0QzY0LjY5NzYgODQuOTQ0NiA2OS4zMTY3IDgzLjc1MTMgNjkuMzE2NyA4My43NTEzQzY5LjMxNjcgODMuNzUxMyA2Ny44NTg1IDgxLjE2MDUgNjUuNjkzNyA4MC43MDk3QzY2LjcxNzMgODAuMzA1MiA2Ny43MDgzIDc5LjgyMjkgNjguNjU4IDc5LjI2NzFDNzAuNjE4MyA4My4xNzA1IDc1LjQ3MTIgODAuNjE0MiA3NS40NzEyIDgwLjYxNDJDNzUuNDcxMiA4MC42MTQyIDcyLjkzMTggNzcuOTQxMiA3MC4zMTI4IDc4LjE5MzFMNzAuNDkzNCA3OC4wNjU5TDcxLjAyNDcgNzcuNjQ2OUM3MS4xMDk3IDc3LjU3MjYgNzEuMjAyNiA3Ny41MDYzIDcxLjI5MDMgNzcuNDM0N0w3MS41NTU5IDc3LjIxMkM3MS43Mjg2IDc3LjA2NjEgNzEuOTA5MiA3Ni45MTc2IDcyLjA3MzkgNzYuNzYzOEM3Mi40MDMyIDc2LjQ0ODMgNzIuNzQwNiA3Ni4xNDYgNzMuMDQ2MSA3NS44MDY1QzczLjA3MzIgNzUuNzc1NCA3My4xMDI1IDc1Ljc0NjIgNzMuMTMzNyA3NS43MTlDNzYuMTgzIDc5LjQwNzcgODAuNjUzNCA3NS42NTI3IDgwLjY1MzQgNzUuNjUyN0M4MC42NTM0IDc1LjY1MjcgNzcuMDQ2MyA3My4yMTMxIDc0LjMxNTcgNzQuMzY0Qzc0Ljc2NzQgNzMuODAyIDc1LjE4MTcgNzMuMjExMSA3NS41NTYyIDcyLjU5NTJDNzUuOTMwNSA3MS45OTA5IDc2LjI3MTkgNzEuMzY2OCA3Ni41Nzg4IDcwLjcyNTdaIiBmaWxsPSIjQ0MzQTFEIi8+CjxwYXRoIGQ9Ik02OC43MzQ2IDQwLjQ1MDNWMzguNjQxOEM2OC43MzU3IDM4LjM4NSA2OC42ODU5IDM4LjEzMDYgNjguNTg4IDM3Ljg5MzJDNjguNDkwMiAzNy42NTU4IDY4LjM0NjMgMzcuNDQwMSA2OC4xNjQ1IDM3LjI1ODRDNjcuOTgyOCAzNy4wNzY4IDY3Ljc2NjkgMzYuOTMyOCA2Ny41MjkyIDM2LjgzNDhDNjcuMjkxNiAzNi43MzY4IDY3LjAzNjggMzYuNjg2NyA2Ni43Nzk3IDM2LjY4NzRINjAuNzYzM0M2MC45NzM5IDM2LjUxMzEgNjEuMTY3OCAzNi4zMTk1IDYxLjM0MjQgMzYuMTA5M0M2NC41Mjk5IDMyLjkyNzIgNjUuNDAxMSAyOS4wMTg0IDYzLjM3MTcgMjYuOTkyNUM2Mi4yODU0IDI1LjkwNTIgNjAuNjkxNiAyNS42MTYyIDU4Ljg3NzQgMjYuMTk2OUM1Ny4yODM3IDI2LjYyOTIgNTUuNjkgMjcuNjQyMiA1NC4zMTE0IDI5LjA5QzUzLjYwMjMgMjkuNzkyIDUyLjk3MDkgMzAuNTY4MiA1Mi40MjgyIDMxLjQwNUM1MS45MDggMzAuNTUxMiA1MS4yNzM1IDI5Ljc3MjQgNTAuNTQyMiAyOS4wOUM0OS4yNTc2IDI3Ljc5NTEgNDcuNjk2OCAyNi44MDYyIDQ1Ljk3NjIgMjYuMTk2OUM0NC4wOTMgMjUuNjkwNSA0Mi40OTkyIDI1LjkwNTIgNDEuNDg0NiAyNi45OTI1QzQwLjM5NTUgMjguMDc3MSA0MC4xMDYgMjkuNjY4MSA0MC42ODc3IDMxLjQ3NjZDNDEuMTIzMyAzMy4wNjc3IDQyLjEzOCAzNC42NTg4IDQzLjU4ODMgMzYuMDM1MUw0NC4xNjczIDM2LjYxNThIMzguMTQ4NEMzNy44OTExIDM2LjYxNDcgMzcuNjM2MiAzNi42NjQ2IDM3LjM5ODQgMzYuNzYyNUMzNy4xNjA1IDM2Ljg2MDMgMzYuOTQ0NSAzNy4wMDQzIDM2Ljc2MjcgMzcuMTg2QzM2LjU4MDkgMzcuMzY3OCAzNi40MzcgMzcuNTgzNiAzNi4zMzkzIDM3LjgyMTJDMzYuMjQxNiAzOC4wNTg4IDM2LjE5MiAzOC4zMTMzIDM2LjE5MzQgMzguNTcwMlY0MC4zNzg3QzM2LjE5MjMgNDAuNjM1MyAzNi4yNDIyIDQwLjg4OTUgMzYuMzQwMSA0MS4xMjY4QzM2LjQzNzkgNDEuMzY0MSAzNi41ODE5IDQxLjU3OTcgMzYuNzYzNiA0MS43NjExQzM2Ljk0NTQgNDEuOTQyNSAzNy4xNjEzIDQyLjA4NjMgMzcuMzk5IDQyLjE4NEMzNy42MzY2IDQyLjI4MTcgMzcuODkxMyA0Mi4zMzE0IDM4LjE0ODQgNDIuMzMwNEg0MC44MzExQzM5LjM1ODggNDMuNzc0NyAzOC4xOTAyIDQ1LjQ5NzkgMzcuMzkzOCA0Ny4zOTlDMzYuNTk3NCA0OS4zMDAyIDM2LjE4OTMgNTEuMzQwOSAzNi4xOTM0IDUzLjQwMTZDMzYuMTkzNCA2Mi4xNTI1IDQzLjUxMzkgNjkuMzEyMyA1Mi40OTk5IDY5LjMxMjNDNjEuNDg1OCA2OS4zMTIzIDY4LjgwOSA2Mi4xNTI1IDY4LjgwOSA1My40MDE2QzY4LjgwMzUgNTEuMzQyMSA2OC4zOTA3IDQ5LjMwNCA2Ny41OTQ0IDQ3LjQwNDFDNjYuNzk4MSA0NS41MDQzIDY1LjYzMzkgNDMuNzgwMSA2NC4xNjg2IDQyLjMzMDRINjYuODUxNEM2Ny4xMDA5IDQyLjMzODUgNjcuMzQ5NCA0Mi4yOTU0IDY3LjU4MTYgNDIuMjAzOEM2Ny44MTM3IDQyLjExMjIgNjguMDI0NiA0MS45NzQgNjguMjAxMSA0MS43OTc4QzY4LjM3NzcgNDEuNjIxNSA2OC41MTYxIDQxLjQxMSA2OC42MDc4IDQxLjE3OTNDNjguNjk5NiA0MC45NDc1IDY4Ljc0MjggNDAuNjk5NCA2OC43MzQ2IDQwLjQ1MDNaTTU0LjE2OCAzNC40NDRDNTQuNDU3NSAzMy4zNTk0IDU1LjI1NDQgMzIuMTI5IDU2LjM0MDggMzEuMDQ0NEM1Ny4yOTIzIDMwLjA2NiA1OC40NTkxIDI5LjMyMjQgNTkuNzQ4NyAyOC44NzI2QzYwLjA1NzcgMjguNzk1IDYwLjM3MzUgMjguNzQ3IDYwLjY5MTYgMjguNzI5NEM2MC45NzQ1IDI4LjcwMjYgNjEuMjU3NiAyOC43Nzg5IDYxLjQ4ODUgMjguOTQ0MkM2Mi4wNjc1IDI5LjUyNDkgNjEuNTYwMiAzMS45MTE1IDU5LjQ1OTIgMzQuMDgzM0M1OC41MDY0IDM1LjA2MjIgNTcuMzM3NSAzNS44MDUxIDU2LjA0NTkgMzYuMjUyNUM1NS43MzcyIDM2LjMzMjIgNTUuNDIxMyAzNi4zODEgNTUuMTAzIDM2LjM5ODRDNTQuODE5NiAzNi40MjU2IDU0LjUzNjEgMzYuMzQ4MyA1NC4zMDYxIDM2LjE4MDlDNTMuOTUwMiAzNS44OTE5IDUzLjk1MDIgMzUuMjM5NSA1NC4xNjggMzQuNDQ0Wk00My4zNjc4IDMwLjY4MTFDNDMuMTUgMjkuODg1NiA0My4xNSAyOS4yMzU5IDQzLjQzOTUgMjguOTQ0MkM0My42NzA1IDI4Ljc3ODkgNDMuOTUzNSAyOC43MDI2IDQ0LjIzNjQgMjguNzI5NEM0NS4yNTExIDI4LjcyOTQgNDYuOTkwOSAyOS40NTA3IDQ4LjU4NzMgMzEuMDQ0NEM0OS41NjY4IDMxLjk5MzMgNTAuMzEwOCAzMy4xNTc0IDUwLjc2MDEgMzQuNDQ0QzUwLjk3NzkgMzUuMjM5NSA1MC45Nzc5IDM1Ljg5MTkgNTAuNjg4MyAzNi4xODA5QzUwLjM5ODggMzYuNDcgNDkuNzQ1NCAzNi40NyA0OC45NDg1IDM2LjI1MjVDNDcuODYyMSAzNS45NjM1IDQ2LjYyOTYgMzUuMTY3OSA0NS41NDMzIDM0LjA4MzNDNDQuNTM3OCAzMy4xNTQ0IDQzLjc4ODYgMzEuOTgyNyA0My4zNjc4IDMwLjY4MTFaTTU5LjgyMDQgNTQuOTIxMUg1Ny43MTkzQzU2LjcwMjYgNTQuOTI3MyA1NS43MjkzIDU1LjMzMzMgNTUuMDEwMyA1Ni4wNTExQzU0LjI5MTQgNTYuNzY4OCA1My44ODQ3IDU3Ljc0MDUgNTMuODc4NCA1OC43NTU1VjYwLjg1NTdDNTMuODcyNiA2MS4yMTM3IDUzLjczNyA2MS41NTc0IDUzLjQ5NjcgNjEuODIzMkM1My4yNTY0IDYyLjA4ODkgNTIuOTI3NyA2Mi4yNTg3IDUyLjU3MTYgNjIuMzAxQzUyLjM4MDEgNjIuMzE2MiA1Mi4xODc1IDYyLjI5MjIgNTIuMDA1NiA2Mi4yMzA0QzUxLjgyMzcgNjIuMTY4NyA1MS42NTY0IDYyLjA3MDUgNTEuNTEzOSA2MS45NDE4QzUxLjM3MTMgNjEuODEzMiA1MS4yNTY2IDYxLjY1NjkgNTEuMTc2OCA2MS40ODI0QzUxLjA5NyA2MS4zMDggNTEuMDUzNyA2MS4xMTkxIDUxLjA0OTYgNjAuOTI3M1Y1OC43NTU1QzUxLjA0MzMgNTcuNzQwNSA1MC42MzY2IDU2Ljc2ODggNDkuOTE3NyA1Ni4wNTExQzQ5LjE5ODcgNTUuMzMzMyA0OC4yMjU0IDU0LjkyNzMgNDcuMjA4NyA1NC45MjExSDQ1LjEwNzZDNDQuNzQ5IDU0LjkxNTkgNDQuNDA0NCA1NC43ODEyIDQ0LjEzNzcgNTQuNTQxOEM0My44NzExIDU0LjMwMjMgNDMuNzAwNCA1My45NzQ1IDQzLjY1NzMgNTMuNjE5QzQzLjY0MjUgNTMuNDI3NyA0My42NjY5IDUzLjIzNTQgNDMuNzI5IDUzLjA1MzhDNDMuNzkxMiA1Mi44NzIyIDQzLjg4OTggNTIuNzA1MiA0NC4wMTg5IDUyLjU2MjlDNDQuMTQ3OSA1Mi40MjA3IDQ0LjMwNDcgNTIuMzA2MiA0NC40Nzk1IDUyLjIyNjZDNDQuNjU0NCA1Mi4xNDY5IDQ0Ljg0MzcgNTIuMTAzNyA0NS4wMzU5IDUyLjA5OTZINDcuMjA4N0M0OC4yMjU5IDUyLjA5MzMgNDkuMTk5NiA1MS42ODY5IDQ5LjkxODYgNTAuOTY4NkM1MC42Mzc2IDUwLjI1MDMgNTEuMDQ0IDQ5LjI3NzkgNTEuMDQ5NiA0OC4yNjI0VjQ2LjA5MDZDNTEuMDQ1MiA0NS45MDg4IDUxLjA3NzkgNDUuNzI4IDUxLjE0NTYgNDUuNTU5MkM1MS4yMTM0IDQ1LjM5MDQgNTEuMzE0OCA0NS4yMzcxIDUxLjQ0MzggNDUuMTA4NkM1MS41NzI3IDQ0Ljk4MDIgNTEuNzI2NCA0NC44NzkyIDUxLjg5NTcgNDQuODExOUM1Mi4wNjQ5IDQ0Ljc0NDUgNTIuMjQ2MSA0NC43MTIzIDUyLjQyODIgNDQuNzE3QzUyLjYzNTMgNDQuNzE2OSA1Mi44NCA0NC43NjIyIDUzLjAyNzcgNDQuODQ5OEM1My4yMTU0IDQ0LjkzNzMgNTMuMzgxNiA0NS4wNjQ4IDUzLjUxNDUgNDUuMjIzNUM1My43MTY0IDQ1LjQ2NjEgNTMuODE5NyA0NS43NzU2IDUzLjgwNDEgNDYuMDkwNlY0OC4yNjI0QzUzLjgxMDMgNDkuMjc2OCA1NC4yMTYyIDUwLjI0OCA1NC45MzM5IDUwLjk2NkM1NS42NTE2IDUxLjY4NCA1Ni42MjM2IDUyLjA5MTIgNTcuNjM5NiA1Mi4wOTk2SDU5LjgxNTFDNjAuMTg5OSA1Mi4wOTk2IDYwLjU0OTMgNTIuMjQ4MiA2MC44MTQzIDUyLjUxMjhDNjEuMDc5MyA1Mi43NzczIDYxLjIyODIgNTMuMTM2MiA2MS4yMjgyIDUzLjUxMDNDNjEuMjI4MiA1My44ODQ1IDYxLjA3OTMgNTQuMjQzMyA2MC44MTQzIDU0LjUwNzlDNjAuNTQ5MyA1NC43NzI0IDYwLjE4OTkgNTQuOTIxMSA1OS44MTUxIDU0LjkyMTFINTkuODIwNFoiIGZpbGw9IiNDQzNBMUQiLz4KPHBhdGggb3BhY2l0eT0iMC4xNSIgZD0iTTgxLjQwNzMgMjMuNjQwNkwyMy41OTIyIDgxLjM1OTNDMTkuNzcyIDc3LjU3NDcgMTYuNzM3OSA3My4wNzQ0IDE0LjY2NDEgNjguMTE2NEMxMi41OTAyIDYzLjE1ODQgMTEuNTE3MyA1Ny44NDA0IDExLjUwNjkgNTIuNDY3NUMxMS40OTY2IDQ3LjA5NDYgMTIuNTQ5IDQxLjc3MjUgMTQuNjAzNyAzNi44MDY2QzE2LjY1ODUgMzEuODQwNyAxOS42NzUyIDI3LjMyODcgMjMuNDgwOCAyMy41Mjk0QzI3LjI4NjQgMTkuNzMwMiAzMS44MDU5IDE2LjcxODUgMzYuNzgwMSAxNC42NjcyQzQxLjc1NDMgMTIuNjE1OCA0Ny4wODUzIDExLjU2NTIgNTIuNDY3MiAxMS41NzU1QzU3Ljg0OTEgMTEuNTg1OCA2My4xNzU5IDEyLjY1NjkgNjguMTQyMiAxNC43Mjc0QzczLjEwODUgMTYuNzk3OCA3Ny42MTY0IDE5LjgyNjggODEuNDA3MyAyMy42NDA2WiIgZmlsbD0id2hpdGUiLz4KPC9nPgo8ZGVmcz4KPGxpbmVhckdyYWRpZW50IGlkPSJwYWludDBfbGluZWFyIiB4MT0iMC4wMDAyMjI1NzEiIHkxPSI1Mi40OTk1IiB4Mj0iMTA1IiB5Mj0iNTIuNDk5NSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgo8c3RvcCBvZmZzZXQ9IjAuNCIgc3RvcC1jb2xvcj0iI0Y0OEI1MSIvPgo8c3RvcCBvZmZzZXQ9IjAuNiIgc3RvcC1jb2xvcj0iI0U2NDgyMSIvPgo8L2xpbmVhckdyYWRpZW50Pgo8bGluZWFyR3JhZGllbnQgaWQ9InBhaW50MV9saW5lYXIiIHgxPSI5LjIwMzcyIiB5MT0iNTIuNDk3MyIgeDI9Ijk1Ljc5ODgiIHkyPSI1Mi40OTczIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CjxzdG9wIG9mZnNldD0iMC40IiBzdG9wLWNvbG9yPSIjRTY0ODIxIi8+CjxzdG9wIG9mZnNldD0iMC42IiBzdG9wLWNvbG9yPSIjRjQ4QjUxIi8+CjwvbGluZWFyR3JhZGllbnQ+CjxjbGlwUGF0aCBpZD0iY2xpcDAiPgo8cmVjdCB3aWR0aD0iMTA1IiBoZWlnaHQ9IjEwNSIgZmlsbD0id2hpdGUiLz4KPC9jbGlwUGF0aD4KPC9kZWZzPgo8L3N2Zz4K'\n const badgeDiploma = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzNTMuNzggNDA4LjUxIj48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6I2U4MzEzMTt9LmNscy0ye2ZpbGw6bm9uZTtzdHJva2U6I2ZmZjtzdHJva2UtbWl0ZXJsaW1pdDoxMDt9LmNscy0zLC5jbHMtN3tmaWxsOiNmZmY7fS5jbHMtNHtmaWxsOiNjNDFjMWM7fS5jbHMtNXtmaWxsOiMyOTNiODc7fS5jbHMtNntmaWxsOiNmNGEwMjY7fS5jbHMtN3tmb250LXNpemU6MjMuNTNweDtmb250LWZhbWlseTpQb3BwaW5zLUJvbGQsIFBvcHBpbnM7Zm9udC13ZWlnaHQ6NzAwO308L3N0eWxlPjwvZGVmcz48ZyBpZD0iTGF5ZXJfMiIgZGF0YS1uYW1lPSJMYXllciAyIj48ZyBpZD0iQmFkZ2VzIj48cG9seWdvbiBjbGFzcz0iY2xzLTEiIHBvaW50cz0iMCAxMDIuMTMgMCAzMDYuMzggMTc2Ljg5IDQwOC41MSAzNTMuNzggMzA2LjM4IDM1My43OCAxMDIuMTMgMTc2Ljg5IDAgMCAxMDIuMTMiLz48cG9seWdvbiBjbGFzcz0iY2xzLTIiIHBvaW50cz0iMTkuNzkgMTEzLjU1IDE5Ljc5IDI5NC45NiAxNzYuODkgMzg1LjY2IDMzMy45OSAyOTQuOTYgMzMzLjk5IDExMy41NSAxNzYuODkgMjIuODUgMTkuNzkgMTEzLjU1Ii8+PGNpcmNsZSBjbGFzcz0iY2xzLTMiIGN4PSIxNzYuODkiIGN5PSIxNTMuMTIiIHI9Ijg4LjM4Ii8+PHJlY3QgY2xhc3M9ImNscy00IiB5PSIyMjIuMDciIHdpZHRoPSIzNTMuNzgiIGhlaWdodD0iNTUuOTgiLz48cGF0aCBjbGFzcz0iY2xzLTMiIGQ9Ik0xMzIsMjUwLjEyYzAsNS4wNi0zLjQ4LDguMzUtOC44Myw4LjM1aC01Ljg1VjI0MS43Mmg1Ljg1QzEyOC40OCwyNDEuNzIsMTMyLDI0NSwxMzIsMjUwLjEyWm0tOSw1LjVjMy41MywwLDUuNTItMiw1LjUyLTUuNXMtMi01LjU3LTUuNTItNS41N2gtMi4zN3YxMS4wN1oiLz48cGF0aCBjbGFzcz0iY2xzLTMiIGQ9Ik0xMzYuODgsMjQxLjcyaDMuMzZ2MTYuNzVoLTMuMzZaIi8+PHBhdGggY2xhc3M9ImNscy0zIiBkPSJNMTUyLjEyLDI1MmgtMi44djYuNDNIMTQ2VjI0MS43Mmg2LjE3YzQsMCw2LDIuMjgsNiw1LjE4QzE1OC4xNywyNDkuNDUsMTU2LjQ0LDI1MiwxNTIuMTIsMjUyWm0tLjE0LTIuNzFjMS45LDAsMi43NC0uOTQsMi43NC0yLjQzcy0uODQtMi40NC0yLjc0LTIuNDRoLTIuNjZ2NC44N1oiLz48cGF0aCBjbGFzcz0iY2xzLTMiIGQ9Ik0xNjYuMzEsMjQxLjcydjE0LjA5aDUuNTJ2Mi42NkgxNjNWMjQxLjcyWiIvPjxwYXRoIGNsYXNzPSJjbHMtMyIgZD0iTTE4NC4xNCwyNTguNjRhOC41OCw4LjU4LDAsMSwxLDguNTctOC41OUE4LjQyLDguNDIsMCwwLDEsMTg0LjE0LDI1OC42NFptMC0zYzMsMCw1LjExLTIuMTgsNS4xMS01LjU5cy0yLjA5LTUuNTUtNS4xMS01LjU1LTUuMTQsMi4xNC01LjE0LDUuNTVTMTgxLjA5LDI1NS42NCwxODQuMTQsMjU1LjY0WiIvPjxwYXRoIGNsYXNzPSJjbHMtMyIgZD0iTTE5Ny42LDI0MS43MmgzLjgybDUuMzMsMTIuNDYsNS4zMy0xMi40NmgzLjc5djE2Ljc1aC0zLjM2VjI0Ny41OEwyMDgsMjU4LjQ3aC0yLjU0TDIwMSwyNDcuNTh2MTAuODlIMTk3LjZaIi8+PHBhdGggY2xhc3M9ImNscy0zIiBkPSJNMjMxLjg1LDI1NS4yOGgtNi42N2wtMS4xMSwzLjE5aC0zLjUybDYtMTYuNzdoMy45MWw2LDE2Ljc3SDIzM1ptLTMuMzQtOS43LTIuNDIsN2g0Ljg1WiIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTE0My41NiwxMTAuMjJhMTAuNTgsMTAuNTgsMCwwLDAtMy4xNyw1Ljc1LDkuMiw5LjIsMCwwLDAsOS4zNy03LjkyLDEwLjYxLDEwLjYxLDAsMCwwLTYuMiwyLjE3Ii8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTU4LDE5NC45NGExMS4xNCwxMS4xNCwwLDAsMSwyLDYuMTJzLTQuNDgtMS4zOS02LjM5LTQuNTJhNy44OSw3Ljg5LDAsMCwxLS44NS02LjE2LDE4LjU1LDE4LjU1LDAsMCwxLDUuMjEsNC41NiIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTE1NC40NiwyMDQuMzlhNy43MSw3LjcxLDAsMCwwLDUuNTktMy40NSwyNC42OSwyNC42OSwwLDAsMC03Ljk0LTEuMDgsMTAuMjEsMTAuMjEsMCwwLDAtNiwyLjU1Yy0uMDUsMCw0LjMsMi41Miw4LjM0LDIiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0xNTAuMjYsMTkxLjE5YTEwLjksMTAuOSwwLDAsMSwuNjksNi4yNHMtMy45LTIuMDgtNS4xMi01LjQyYTcuODMsNy44MywwLDAsMSwuMzktNi4wOSwxNi44NCwxNi44NCwwLDAsMSw0LDUuMjciLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0xNDUuMDksMTk5LjcyYTcuNTUsNy41NSwwLDAsMCw1LjkyLTIuNCwyMi44NywyMi44NywwLDAsMC03LjI2LTIuMzYsOS44OCw5Ljg4LDAsMCwwLTYuMTgsMS40NnMzLjYxLDMuMTUsNy41MiwzLjMiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0xNDMuNjYsMTg2LjI3YTEwLjgxLDEwLjgxLDAsMCwxLS41NCw2LjE1cy0zLjMxLTIuNjctMy44Ni02LjEyYTcuODIsNy44MiwwLDAsMSwxLjQ5LTUuODMsMTYuMTEsMTYuMTEsMCwwLDEsMi45MSw1LjgiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0xMzcuMDksMTkzLjY0YTcuNDYsNy40NiwwLDAsMCw2LjExLTEuMzIsMjEuMywyMS4zLDAsMCwwLTYuNDktMy41Miw5Ljg2LDkuODYsMCwwLDAtNi4yMy4zNXMyLjkxLDMuNjgsNi42MSw0LjQ5Ii8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTM4LjIxLDE4MC4zN2ExMC42LDEwLjYsMCwwLDEtMS42NCw1Ljg2YzAsLjA1LTIuNy0zLjE1LTIuNjMtNi42YTcuNzUsNy43NSwwLDAsMSwyLjQ5LTUuNDEsMTUuNzUsMTUuNzUsMCwwLDEsMS43OCw2LjE1Ii8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTMwLjUyLDE4Ni4zOGE3LjMsNy4zLDAsMCwwLDYuMTQtLjIzLDIwLjUyLDIwLjUyLDAsMCwwLTUuNjQtNC41NCw5Ljc2LDkuNzYsMCwwLDAtNi4xMi0uNzRzMi4xOSw0LjA5LDUuNjIsNS41MSIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTEzNCwxNzMuNjhhMTAuNjIsMTAuNjIsMCwwLDEtMi42Myw1LjQycy0yLjA3LTMuNTQtMS40Mi02Ljg5YTcuNjksNy42OSwwLDAsMSwzLjM1LTQuODUsMTUuMzcsMTUuMzcsMCwwLDEsLjcsNi4zMiIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTEyNS40MywxNzguMThhNy4yNyw3LjI3LDAsMCwwLDYsLjg2LDIwLDIwLDAsMCwwLTQuNzEtNS40Miw5Ljc0LDkuNzQsMCwwLDAtNS44NS0xLjhzMS40NSw0LjM4LDQuNTUsNi4zNiIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTEzMSwxNjYuMzlhMTAuNDIsMTAuNDIsMCwwLDEtMy40OCw0Ljg0cy0xLjQzLTMuODMtLjIzLTdhNy40OSw3LjQ5LDAsMCwxLDQuMDktNC4xNiwxNS40NiwxNS40NiwwLDAsMS0uMzgsNi4zMSIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTEyMS44NSwxNjkuMjhhNy4yLDcuMiwwLDAsMCw1Ljc0LDEuOSwyMC4yMSwyMC4yMSwwLDAsMC0zLjctNi4xMyw5Ljc5LDkuNzksMCwwLDAtNS40My0yLjgxcy42OSw0LjU1LDMuMzksNyIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTEyOS4yMywxNTguNzFhMTAuMTEsMTAuMTEsMCwwLDEtNC4yMSw0LjEzcy0uNzYtNCwuOTQtNi45MWE3LjM1LDcuMzUsMCwwLDEsNC43LTMuMzcsMTUuMjUsMTUuMjUsMCwwLDEtMS40Myw2LjE1Ii8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTE5LjgzLDE1OS45MmE3LjIxLDcuMjEsMCwwLDAsNS4zLDIuODksMjAuNDEsMjAuNDEsMCwwLDAtMi42LTYuNjgsOS45Miw5LjkyLDAsMCwwLTQuODQtMy43NXMtLjA5LDQuNjIsMi4xNCw3LjU0Ii8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTI4LjgzLDE1MC44M2ExMCwxMCwwLDAsMS00LjgyLDMuMzJzLS4wOC00LjA5LDIuMDktNi42NmE3LjE3LDcuMTcsMCwwLDEsNS4xNy0yLjQ5LDE1LjQ0LDE1LjQ0LDAsMCwxLTIuNDQsNS44MyIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTExOS40MiwxNTAuMzRhNy4zMSw3LjMxLDAsMCwwLDQuNzEsMy44MSwyMS4xNSwyMS4xNSwwLDAsMC0xLjQyLTcuMDcsOS44MSw5LjgxLDAsMCwwLTQuMS00LjU4cy0uODgsNC41NS44MSw3Ljg0Ii8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTI5Ljc5LDE0M2E5Ljc0LDkuNzQsMCwwLDEtNS4zLDIuNDNzLjY0LTQuMDcsMy4yMS02LjI0YTcuMDgsNy4wOCwwLDAsMSw1LjUyLTEuNTYsMTYuMTYsMTYuMTYsMCwwLDEtMy40Myw1LjM3Ii8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTIwLjY3LDE0MC43OGE3LjMyLDcuMzIsMCwwLDAsMy45NCw0LjYyLDIyLDIyLDAsMCwwLS4xNS03LjI4LDEwLDEwLDAsMCwwLTMuMTctNS4yOXMtMS43LDQuMzgtLjYyLDcuOTUiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0xMzIuMTQsMTM1LjI3YTkuNTUsOS41NSwwLDAsMS01LjYyLDEuNDhzMS4zNS0zLjk0LDQuMzEtNS42N2E3LDcsMCwwLDEsNS43Mi0uNTksMTcsMTcsMCwwLDEtNC40MSw0Ljc4Ii8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTIzLjYyLDEzMS40OGE3LjMyLDcuMzIsMCwwLDAsMyw1LjMxLDIzLjkxLDIzLjkxLDAsMCwwLDEuMjEtNy4zLDEwLDEwLDAsMCwwLTIuMDktNS44NnMtMi41Myw0LjEtMi4xMyw3Ljg1Ii8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTM1Ljk0LDEyOGE5LjQxLDkuNDEsMCwwLDEtNS44Mi41czIuMS0zLjcxLDUuMzgtNC45NGE2Ljk0LDYuOTQsMCwwLDEsNS43OC4zOSwxOC4xNSwxOC4xNSwwLDAsMS01LjM0LDQiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0xMjguMzIsMTIyLjY4YTcuMjgsNy4yOCwwLDAsMCwxLjksNS44NiwyNS43NSwyNS43NSwwLDAsMCwyLjY2LTcuMTIsMTAuMjUsMTAuMjUsMCwwLDAtLjgyLTYuMjdzLTMuMzksMy43LTMuNzQsNy41MyIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTE0MS4yMywxMjEuMjlhOS4yNyw5LjI3LDAsMCwxLTUuODgtLjQ5czIuODctMy4zOSw2LjQyLTQuMDhhNi44Miw2LjgyLDAsMCwxLDUuNywxLjM2LDIwLDIwLDAsMCwxLTYuMjQsMy4yMSIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTEzNC44MSwxMTQuNjNhNy4zNyw3LjM3LDAsMCwwLC42Miw2LjI0LDI5LDI5LDAsMCwwLDQuMjEtNi43NCwxMC43NywxMC43NywwLDAsMCwuNjEtNi40OXMtNC4yNiwzLjE4LTUuNDQsNyIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTIxMC44NSwxMTAuMjJBMTAuNTgsMTAuNTgsMCwwLDEsMjE0LDExNmE5LjIxLDkuMjEsMCwwLDEtOS4zNy03LjkyLDEwLjYxLDEwLjYxLDAsMCwxLDYuMiwyLjE3Ii8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTk2LjQyLDE5NC45NGExMS4xNCwxMS4xNCwwLDAsMC0yLDYuMTJzNC40OC0xLjM5LDYuMzktNC41MmE3Ljg0LDcuODQsMCwwLDAsLjg1LTYuMTYsMTguNywxOC43LDAsMCwwLTUuMjEsNC41NiIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTIwMCwyMDQuMzlhNy43MSw3LjcxLDAsMCwxLTUuNTktMy40NSwyNC42OSwyNC42OSwwLDAsMSw3Ljk0LTEuMDgsMTAuMTcsMTAuMTcsMCwwLDEsNiwyLjU1Yy4wNSwwLTQuMywyLjUyLTguMzQsMiIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTIwNC4xNSwxOTEuMTlhMTAuOSwxMC45LDAsMCwwLS42OSw2LjI0czMuOS0yLjA4LDUuMTItNS40MmE3LjgzLDcuODMsMCwwLDAtLjM5LTYuMDksMTcsMTcsMCwwLDAtNCw1LjI3Ii8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMjA5LjMzLDE5OS43MmE3LjU2LDcuNTYsMCwwLDEtNS45My0yLjQsMjIuODcsMjIuODcsMCwwLDEsNy4yNi0yLjM2LDkuODgsOS44OCwwLDAsMSw2LjE4LDEuNDZzLTMuNjEsMy4xNS03LjUxLDMuMyIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTIxMC43NSwxODYuMjdhMTAuODEsMTAuODEsMCwwLDAsLjU0LDYuMTVzMy4zMS0yLjY3LDMuODYtNi4xMmE3LjgyLDcuODIsMCwwLDAtMS40OS01LjgzLDE2LjExLDE2LjExLDAsMCwwLTIuOTEsNS44Ii8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMjE3LjMyLDE5My42NGE3LjQ2LDcuNDYsMCwwLDEtNi4xMS0xLjMyLDIxLjI3LDIxLjI3LDAsMCwxLDYuNS0zLjUyLDkuODMsOS44MywwLDAsMSw2LjIyLjM1cy0yLjkxLDMuNjgtNi42MSw0LjQ5Ii8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMjE2LjIsMTgwLjM3YTEwLjYsMTAuNiwwLDAsMCwxLjY0LDUuODZjMCwuMDUsMi43LTMuMTUsMi42My02LjZhNy44MSw3LjgxLDAsMCwwLTIuNDgtNS40MSwxNS40OSwxNS40OSwwLDAsMC0xLjc5LDYuMTUiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0yMjMuODksMTg2LjM4YTcuMyw3LjMsMCwwLDEtNi4xNC0uMjMsMjAuNTIsMjAuNTIsMCwwLDEsNS42NC00LjU0LDkuNzYsOS43NiwwLDAsMSw2LjEyLS43NHMtMi4xOSw0LjA5LTUuNjIsNS41MSIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTIyMC40NCwxNzMuNjhhMTAuNjIsMTAuNjIsMCwwLDAsMi42Myw1LjQyczIuMDgtMy41NCwxLjQyLTYuODlhNy42NSw3LjY1LDAsMCwwLTMuMzUtNC44NSwxNS4zNywxNS4zNywwLDAsMC0uNyw2LjMyIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMjI5LDE3OC4xOGE3LjI3LDcuMjcsMCwwLDEtNiwuODYsMjAsMjAsMCwwLDEsNC43MS01LjQyLDkuNzUsOS43NSwwLDAsMSw1Ljg2LTEuOHMtMS40Niw0LjM4LTQuNTYsNi4zNiIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTIyMy40NSwxNjYuMzlhMTAuNDIsMTAuNDIsMCwwLDAsMy40OCw0Ljg0czEuNDMtMy44My4yMy03YTcuNDksNy40OSwwLDAsMC00LjA5LTQuMTYsMTUuNDYsMTUuNDYsMCwwLDAsLjM4LDYuMzEiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0yMzIuNTYsMTY5LjI4YTcuMTksNy4xOSwwLDAsMS01LjczLDEuOSwxOS43NSwxOS43NSwwLDAsMSwzLjctNi4xMyw5LjczLDkuNzMsMCwwLDEsNS40My0yLjgxcy0uNyw0LjU1LTMuNCw3Ii8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMjI1LjE4LDE1OC43MWExMC4xNywxMC4xNywwLDAsMCw0LjIxLDQuMTNzLjc3LTQtLjk0LTYuOTFhNy4zNSw3LjM1LDAsMCwwLTQuNy0zLjM3LDE1LjI1LDE1LjI1LDAsMCwwLDEuNDMsNi4xNSIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTIzNC41OCwxNTkuOTJhNy4yMSw3LjIxLDAsMCwxLTUuMywyLjg5LDIwLjQxLDIwLjQxLDAsMCwxLDIuNi02LjY4LDEwLDEwLDAsMCwxLDQuODQtMy43NXMuMDksNC42Mi0yLjE0LDcuNTQiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0yMjUuNTgsMTUwLjgzYTEwLDEwLDAsMCwwLDQuODIsMy4zMnMuMDgtNC4wOS0yLjA5LTYuNjZhNy4xNyw3LjE3LDAsMCwwLTUuMTctMi40OSwxNS40NCwxNS40NCwwLDAsMCwyLjQ0LDUuODMiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0yMzUsMTUwLjM0YTcuMzMsNy4zMywwLDAsMS00LjcsMy44MSwyMSwyMSwwLDAsMSwxLjQxLTcuMDcsOS44Nyw5Ljg3LDAsMCwxLDQuMS00LjU4cy44OCw0LjU1LS44MSw3Ljg0Ii8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMjI0LjYzLDE0M2E5LjcsOS43LDAsMCwwLDUuMjksMi40M3MtLjY0LTQuMDctMy4yMS02LjI0YTcuMDcsNy4wNywwLDAsMC01LjUyLTEuNTYsMTYuMDksMTYuMDksMCwwLDAsMy40NCw1LjM3Ii8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMjMzLjc0LDE0MC43OGE3LjMsNy4zLDAsMCwxLTMuOTQsNC42MiwyMiwyMiwwLDAsMSwuMTUtNy4yOCwxMCwxMCwwLDAsMSwzLjE3LTUuMjlzMS43LDQuMzguNjIsNy45NSIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTIyMi4yNywxMzUuMjdhOS41NSw5LjU1LDAsMCwwLDUuNjIsMS40OHMtMS4zNS0zLjk0LTQuMy01LjY3YTcuMDcsNy4wNywwLDAsMC01LjczLS41OSwxNywxNywwLDAsMCw0LjQxLDQuNzgiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0yMzAuNzksMTMxLjQ4YTcuMzIsNy4zMiwwLDAsMS0zLDUuMzEsMjMuNDMsMjMuNDMsMCwwLDEtMS4yMi03LjMsMTAsMTAsMCwwLDEsMi4wOS01Ljg2czIuNTMsNC4xLDIuMTMsNy44NSIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTIxOC40NywxMjhhOS40MSw5LjQxLDAsMCwwLDUuODIuNXMtMi4xLTMuNzEtNS4zOC00Ljk0YTcsNywwLDAsMC01Ljc4LjM5LDE4LjE1LDE4LjE1LDAsMCwwLDUuMzQsNCIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTIyNi4wOSwxMjIuNjhhNy4yOCw3LjI4LDAsMCwxLTEuOSw1Ljg2LDI1Ljc1LDI1Ljc1LDAsMCwxLTIuNjYtNy4xMiwxMC4yNSwxMC4yNSwwLDAsMSwuODItNi4yN3MzLjM5LDMuNywzLjc0LDcuNTMiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0yMTMuMTgsMTIxLjI5YTkuMjcsOS4yNywwLDAsMCw1Ljg4LS40OWMuMDUsMC0yLjg3LTMuMzktNi40Mi00LjA4YTYuODIsNi44MiwwLDAsMC01LjcsMS4zNiwyMCwyMCwwLDAsMCw2LjI0LDMuMjEiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0yMTkuNiwxMTQuNjNhNy4zNyw3LjM3LDAsMCwxLS42Miw2LjI0LDI4LjgsMjguOCwwLDAsMS00LjItNi43NCwxMC43MywxMC43MywwLDAsMS0uNjItNi40OXM0LjI2LDMuMTgsNS40NCw3Ii8+PHBhdGggY2xhc3M9ImNscy01IiBkPSJNMjA4LjM2LDE0NC41OGwtMTAuODItNy4zMiwxMC41OSw1LjY3cy00Ljg2LTE2LjYyLTE5Ljk1LTIwLjI1YzAsMC0zLjM0LTEuMzQsMCw1Ljc0LDAsMCw0LjY5LDUuOTEtNi4xNCwxMi40N0wxODAsMTI2LjE2YTUuNjEsNS42MSwwLDAsMC02LjM0LS4zOWwtMS44MS41My0uMjQsNCwxLjU4LTEuMTguOTIuNDEtMS43MSwxMS4zOGMtMTAuODItNi41Ni02LjE0LTEyLjQ3LTYuMTQtMTIuNDcsMy4zOS03LjA4LjA2LTUuNzQuMDYtNS43NC0xNS4xLDMuNjMtMjAsMjAuMjUtMjAsMjAuMjVsMTAuNTktNS42Ny0xMC44Miw3LjMyYTQ4Ljc2LDQ4Ljc2LDAsMCwwLS4zLDYuOTNsMTEuNzctMTAuMzMtMTEuNjMsMTIuODlhNDEuNjQsNDEuNjQsMCwwLDAsLjgxLDUuNDlsMTIuMzQtMTIuMDYtMTEuNzYsMTQuMzdhMzEuMzIsMzEuMzIsMCwwLDAsMiw1LjIzTDE2MC42NiwxNTBsLTEwLjMzLDE4LjlhMjQuNTgsMjQuNTgsMCwwLDAsMi40LDMuMzNsMTAuOTMtMjAuMS00LjA2LDEwLjE1LDIuNTQtMS40NSw0LjMzLTkuMTMtMi42NSw4LjIzLDEuNzktMSwzLjMyLTcuNDUtMiw2LjYzLDIuMzgtMS42LjU5LTMuNjNMMTcxLDE1NmwtOS4xNSwxMS43OSwxLjY3LDEuMzYtMi45MSwzLjI4Yy01LjMzLTEuMjktNi42NCwyLjQtNi42NCwyLjRhNC44LDQuOCwwLDAsMSw0LjUzLS43M2MtMy41MSwzLTEuNTIsNS43OS0xLjUyLDUuNzkuODItMy43NywzLjQyLTQuMjEsMy40Mi00LjIxYTMuNDMsMy40MywwLDAsMCwzLDQuM2MtMi42MS0yLjkzLS4xOC01LjMtLjE4LTUuMywzLjA4LjUzLDMuMzEsMi4zNywzLjMxLDIuMzcsMS4wNS0zLTIuOS00LTIuOS00bDIuMzItMi41NywxLjI1LDEuMjksNi4xNy04LjgyTDE2NiwxODNsMS43Miw1LjU0LDQuMzctMy4yOCwzLjY3LTIxLjkyLTIuNDIsMjIuMDgsMy45Myw0LjA2LDMuOTItNC4wNi0yLjQyLTIyLjA4LDMuNjcsMjEuOTIsNC4zNywzLjI4LDEuNzItNS41NC03LjQxLTIwLjEzLDYuMTYsOC44MiwxLjI1LTEuMjksMi4zMiwyLjU3cy0zLjk1LDEtMi45LDRjMCwwLC4yNC0xLjg0LDMuMzEtMi4zNywwLDAsMi40MywyLjM3LS4xOCw1LjNhMy40MywzLjQzLDAsMCwwLDMtNC4zczIuNi40NCwzLjQyLDQuMjFjMCwwLDItMi43OC0xLjUyLTUuNzlhNC44Miw0LjgyLDAsMCwxLDQuNTQuNzNzLTEuMzItMy42OS02LjY1LTIuNGwtMi45MS0zLjI4LDEuNjctMS4zNkwxODMuNDQsMTU2bDEuMTUtMy4wOC41OCwzLjYzLDIuMzgsMS42LTItNi42MywzLjMzLDcuNDUsMS43OCwxTDE4OCwxNTEuNzFsNC4zMyw5LjEzLDIuNTQsMS40NS00LjA2LTEwLjE1LDEwLjkzLDIwLjFhMjQuNTgsMjQuNTgsMCwwLDAsMi40LTMuMzNMMTkzLjc5LDE1MGwxMS4zMiwxNy4wOWEyOS42NywyOS42NywwLDAsMCwyLTUuMjNMMTk1LjM3LDE0Ny41bDEyLjM0LDEyLjA2YTQwLDQwLDAsMCwwLC44MS01LjQ5TDE5Ni45LDE0MS4xOGwxMS43NiwxMC4zM0E0OC43Niw0OC43NiwwLDAsMCwyMDguMzYsMTQ0LjU4WiIvPjxwYXRoIGNsYXNzPSJjbHMtNiIgZD0iTTE3Ny4yMywxMTAuOTRhMTIuMzksMTIuMzksMCwwLDEsNi40NywxLjgxbDUuMi0xMi41Ni02LDQuODUtMS4yOSwxLS4xNC4xYTIuMjYsMi4yNiwwLDAsMSwxLjE4Ljg3LDIuMjksMi4yOSwwLDAsMSwuMzksMS4yNiwyLjIzLDIuMjMsMCwwLDEtNC40Niwwdi0yLjUyYTIuMjIsMi4yMiwwLDAsMSwyLjIzLTIuMjJsLTMuNTYtNy43Mi0zLjU2LDcuNzJhMi4yMSwyLjIxLDAsMCwxLDIuMjIsMi4yMnYyLjUyYTIuMjMsMi4yMywwLDEsMS00LjQ2LDAsMi4yOSwyLjI5LDAsMCwxLC4zOS0xLjI2LDIuMjYsMi4yNiwwLDAsMSwxLjE4LS44N2wtLjE0LS4xLTEuMjktMS02LTQuODUsNS4yLDEyLjU2QTEyLjQsMTIuNCwwLDAsMSwxNzcuMjMsMTEwLjk0WiIvPjx0ZXh0IGNsYXNzPSJjbHMtNyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTIzLjIgMzEyLjc4KSI+QnVzaW5lc3M8dHNwYW4geD0iNi42NiIgeT0iMjQuODUiPlNjaWVuY2U8L3RzcGFuPjwvdGV4dD48L2c+PC9nPjwvc3ZnPg=='\n const badgeFoundation = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzNTMuNzggNDA4LjUxIj48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6I2Y0YTAyNjt9LmNscy0ye2ZpbGw6bm9uZTtzdHJva2U6I2ZmZjtzdHJva2UtbWl0ZXJsaW1pdDoxMDt9LmNscy0zLC5jbHMtNntmaWxsOiNmZmY7fS5jbHMtNHtmaWxsOiNkNjg4MjE7fS5jbHMtNXtmaWxsOiMyOTNiODc7fS5jbHMtNntmb250LXNpemU6MjMuNTNweDtmb250LWZhbWlseTpQb3BwaW5zLUJvbGQsIFBvcHBpbnM7Zm9udC13ZWlnaHQ6NzAwO308L3N0eWxlPjwvZGVmcz48ZyBpZD0iTGF5ZXJfMiIgZGF0YS1uYW1lPSJMYXllciAyIj48ZyBpZD0iQmFkZ2VzIj48cG9seWdvbiBjbGFzcz0iY2xzLTEiIHBvaW50cz0iMCAxMDIuMTMgMCAzMDYuMzggMTc2Ljg5IDQwOC41MSAzNTMuNzggMzA2LjM4IDM1My43OCAxMDIuMTMgMTc2Ljg5IDAgMCAxMDIuMTMiLz48cG9seWdvbiBjbGFzcz0iY2xzLTIiIHBvaW50cz0iMTkuNzkgMTEzLjU1IDE5Ljc5IDI5NC45NiAxNzYuODkgMzg1LjY2IDMzMy45OSAyOTQuOTYgMzMzLjk5IDExMy41NSAxNzYuODkgMjIuODUgMTkuNzkgMTEzLjU1Ii8+PGNpcmNsZSBjbGFzcz0iY2xzLTMiIGN4PSIxNzYuODkiIGN5PSIxNTMuMTIiIHI9Ijg4LjM4Ii8+PHJlY3QgY2xhc3M9ImNscy00IiB5PSIyMjIuMDciIHdpZHRoPSIzNTMuNzgiIGhlaWdodD0iNTUuOTgiLz48cGF0aCBjbGFzcz0iY2xzLTMiIGQ9Ik04OS4wOSwyNDEuNzJIOTkuNDN2Mi43MWgtN3Y0LjNIOTcuOHYyLjY2SDkyLjQ1djcuMDhIODkuMDlaIi8+PHBhdGggY2xhc3M9ImNscy0zIiBkPSJNMTEyLDI1OC42NGE4LjU4LDguNTgsMCwxLDEsOC41Ny04LjU5QTguNDIsOC40MiwwLDAsMSwxMTIsMjU4LjY0Wm0wLTNjMywwLDUuMTItMi4xOCw1LjEyLTUuNTlTMTE1LDI0NC41LDExMiwyNDQuNXMtNS4xMywyLjE0LTUuMTMsNS41NVMxMDguOTQsMjU1LjY0LDExMiwyNTUuNjRaIi8+PHBhdGggY2xhc3M9ImNscy0zIiBkPSJNMTI1LjQsMjQxLjcyaDMuMzZ2MTAuMzdjMCwyLjMsMS4yNSwzLjUsMy4zOCwzLjVzMy40MS0xLjIsMy40MS0zLjVWMjQxLjcyaDMuMzl2MTAuMzRjMCw0LjQyLTMuMTcsNi41OC02Ljg1LDYuNThzLTYuNjktMi4xNi02LjY5LTYuNThaIi8+PHBhdGggY2xhc3M9ImNscy0zIiBkPSJNMTU4LjksMjQxLjd2MTYuNzdoLTMuMzZMMTQ3LjkzLDI0N3YxMS40OWgtMy4zNlYyNDEuN2gzLjM2bDcuNjEsMTEuNTJWMjQxLjdaIi8+PHBhdGggY2xhc3M9ImNscy0zIiBkPSJNMTc5LjMsMjUwLjEyYzAsNS4wNi0zLjQ4LDguMzUtOC44Myw4LjM1aC01Ljg2VjI0MS43Mmg1Ljg2QzE3NS44MiwyNDEuNzIsMTc5LjMsMjQ1LDE3OS4zLDI1MC4xMlptLTksNS41YzMuNTMsMCw1LjUyLTIsNS41Mi01LjVzLTItNS41Ny01LjUyLTUuNTdIMTY4djExLjA3WiIvPjxwYXRoIGNsYXNzPSJjbHMtMyIgZD0iTTE5NC40OSwyNTUuMjhoLTYuNjdsLTEuMSwzLjE5aC0zLjUzbDYtMTYuNzdoMy45Mmw2LDE2Ljc3SDE5NS42Wm0tMy4zMy05LjctMi40Myw3aDQuODVaIi8+PHBhdGggY2xhc3M9ImNscy0zIiBkPSJNMjAyLjkyLDI0MS43MmgxMi4yOXYyLjcxaC00LjQ3djE0aC0zLjM2di0xNGgtNC40NloiLz48cGF0aCBjbGFzcz0iY2xzLTMiIGQ9Ik0yMjAuMDUsMjQxLjcyaDMuMzZ2MTYuNzVoLTMuMzZaIi8+PHBhdGggY2xhc3M9ImNscy0zIiBkPSJNMjM2LjksMjU4LjY0YTguNTgsOC41OCwwLDEsMSw4LjU3LTguNTlBOC40Miw4LjQyLDAsMCwxLDIzNi45LDI1OC42NFptMC0zYzMsMCw1LjExLTIuMTgsNS4xMS01LjU5cy0yLjA4LTUuNTUtNS4xMS01LjU1LTUuMTMsMi4xNC01LjEzLDUuNTVTMjMzLjg1LDI1NS42NCwyMzYuOSwyNTUuNjRaIi8+PHBhdGggY2xhc3M9ImNscy0zIiBkPSJNMjY0LjY5LDI0MS43djE2Ljc3aC0zLjM2TDI1My43MywyNDd2MTEuNDloLTMuMzZWMjQxLjdoMy4zNmw3LjYsMTEuNTJWMjQxLjdaIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTQzLjU2LDExMC4yMmExMC41OCwxMC41OCwwLDAsMC0zLjE3LDUuNzUsOS4yLDkuMiwwLDAsMCw5LjM3LTcuOTIsMTAuNjEsMTAuNjEsMCwwLDAtNi4yLDIuMTciLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0xNTgsMTk0Ljk0YTExLjE0LDExLjE0LDAsMCwxLDIsNi4xMnMtNC40OC0xLjM5LTYuMzktNC41MmE3Ljg5LDcuODksMCwwLDEtLjg1LTYuMTYsMTguNTUsMTguNTUsMCwwLDEsNS4yMSw0LjU2Ii8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTU0LjQ2LDIwNC4zOWE3LjcxLDcuNzEsMCwwLDAsNS41OS0zLjQ1LDI0LjY5LDI0LjY5LDAsMCwwLTcuOTQtMS4wOCwxMC4yMSwxMC4yMSwwLDAsMC02LDIuNTVjLS4wNSwwLDQuMywyLjUyLDguMzQsMiIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTE1MC4yNiwxOTEuMTlhMTAuOSwxMC45LDAsMCwxLC42OSw2LjI0cy0zLjktMi4wOC01LjEyLTUuNDJhNy44Myw3LjgzLDAsMCwxLC4zOS02LjA5LDE2Ljg0LDE2Ljg0LDAsMCwxLDQsNS4yNyIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTE0NS4wOSwxOTkuNzJhNy41NSw3LjU1LDAsMCwwLDUuOTItMi40LDIyLjg3LDIyLjg3LDAsMCwwLTcuMjYtMi4zNiw5Ljg4LDkuODgsMCwwLDAtNi4xOCwxLjQ2czMuNjEsMy4xNSw3LjUyLDMuMyIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTE0My42NiwxODYuMjdhMTAuODEsMTAuODEsMCwwLDEtLjU0LDYuMTVzLTMuMzEtMi42Ny0zLjg2LTYuMTJhNy44Miw3LjgyLDAsMCwxLDEuNDktNS44MywxNi4xMSwxNi4xMSwwLDAsMSwyLjkxLDUuOCIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTEzNy4wOSwxOTMuNjRhNy40Niw3LjQ2LDAsMCwwLDYuMTEtMS4zMiwyMS4zLDIxLjMsMCwwLDAtNi40OS0zLjUyLDkuODYsOS44NiwwLDAsMC02LjIzLjM1czIuOTEsMy42OCw2LjYxLDQuNDkiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0xMzguMjEsMTgwLjM3YTEwLjYsMTAuNiwwLDAsMS0xLjY0LDUuODZjMCwuMDUtMi43LTMuMTUtMi42My02LjZhNy43NSw3Ljc1LDAsMCwxLDIuNDktNS40MSwxNS43NSwxNS43NSwwLDAsMSwxLjc4LDYuMTUiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0xMzAuNTIsMTg2LjM4YTcuMyw3LjMsMCwwLDAsNi4xNC0uMjMsMjAuNTIsMjAuNTIsMCwwLDAtNS42NC00LjU0LDkuNzYsOS43NiwwLDAsMC02LjEyLS43NHMyLjE5LDQuMDksNS42Miw1LjUxIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTM0LDE3My42OGExMC42MiwxMC42MiwwLDAsMS0yLjYzLDUuNDJzLTIuMDctMy41NC0xLjQyLTYuODlhNy42OSw3LjY5LDAsMCwxLDMuMzUtNC44NSwxNS4zNywxNS4zNywwLDAsMSwuNyw2LjMyIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTI1LjQzLDE3OC4xOGE3LjI3LDcuMjcsMCwwLDAsNiwuODYsMjAsMjAsMCwwLDAtNC43MS01LjQyLDkuNzQsOS43NCwwLDAsMC01Ljg1LTEuOHMxLjQ1LDQuMzgsNC41NSw2LjM2Ii8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTMxLDE2Ni4zOWExMC40MiwxMC40MiwwLDAsMS0zLjQ4LDQuODRzLTEuNDMtMy44My0uMjMtN2E3LjQ5LDcuNDksMCwwLDEsNC4wOS00LjE2LDE1LjQ2LDE1LjQ2LDAsMCwxLS4zOCw2LjMxIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTIxLjg1LDE2OS4yOGE3LjIsNy4yLDAsMCwwLDUuNzQsMS45LDIwLjIxLDIwLjIxLDAsMCwwLTMuNy02LjEzLDkuNzksOS43OSwwLDAsMC01LjQzLTIuODFzLjY5LDQuNTUsMy4zOSw3Ii8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTI5LjIzLDE1OC43MWExMC4xMSwxMC4xMSwwLDAsMS00LjIxLDQuMTNzLS43Ni00LC45NC02LjkxYTcuMzUsNy4zNSwwLDAsMSw0LjctMy4zNywxNS4yNSwxNS4yNSwwLDAsMS0xLjQzLDYuMTUiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0xMTkuODMsMTU5LjkyYTcuMjEsNy4yMSwwLDAsMCw1LjMsMi44OSwyMC40MSwyMC40MSwwLDAsMC0yLjYtNi42OCw5LjkyLDkuOTIsMCwwLDAtNC44NC0zLjc1cy0uMDksNC42MiwyLjE0LDcuNTQiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0xMjguODMsMTUwLjgzYTEwLDEwLDAsMCwxLTQuODIsMy4zMnMtLjA4LTQuMDksMi4wOS02LjY2YTcuMTcsNy4xNywwLDAsMSw1LjE3LTIuNDksMTUuNDQsMTUuNDQsMCwwLDEtMi40NCw1LjgzIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTE5LjQyLDE1MC4zNGE3LjMxLDcuMzEsMCwwLDAsNC43MSwzLjgxLDIxLjE1LDIxLjE1LDAsMCwwLTEuNDItNy4wNyw5LjgxLDkuODEsMCwwLDAtNC4xLTQuNThzLS44OCw0LjU1LjgxLDcuODQiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0xMjkuNzksMTQzYTkuNzQsOS43NCwwLDAsMS01LjMsMi40M3MuNjQtNC4wNywzLjIxLTYuMjRhNy4wOCw3LjA4LDAsMCwxLDUuNTItMS41NiwxNi4xNiwxNi4xNiwwLDAsMS0zLjQzLDUuMzciLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0xMjAuNjcsMTQwLjc4YTcuMzIsNy4zMiwwLDAsMCwzLjk0LDQuNjIsMjIsMjIsMCwwLDAtLjE1LTcuMjgsMTAsMTAsMCwwLDAtMy4xNy01LjI5cy0xLjcsNC4zOC0uNjIsNy45NSIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTEzMi4xNCwxMzUuMjdhOS41NSw5LjU1LDAsMCwxLTUuNjIsMS40OHMxLjM1LTMuOTQsNC4zMS01LjY3YTcsNywwLDAsMSw1LjcyLS41OSwxNywxNywwLDAsMS00LjQxLDQuNzgiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0xMjMuNjIsMTMxLjQ4YTcuMzIsNy4zMiwwLDAsMCwzLDUuMzEsMjMuOTEsMjMuOTEsMCwwLDAsMS4yMS03LjMsMTAsMTAsMCwwLDAtMi4wOS01Ljg2cy0yLjUzLDQuMS0yLjEzLDcuODUiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0xMzUuOTQsMTI4YTkuNDEsOS40MSwwLDAsMS01LjgyLjVzMi4xLTMuNzEsNS4zOC00Ljk0YTYuOTQsNi45NCwwLDAsMSw1Ljc4LjM5LDE4LjE1LDE4LjE1LDAsMCwxLTUuMzQsNCIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTEyOC4zMiwxMjIuNjhhNy4yOCw3LjI4LDAsMCwwLDEuOSw1Ljg2LDI1Ljc1LDI1Ljc1LDAsMCwwLDIuNjYtNy4xMiwxMC4yNSwxMC4yNSwwLDAsMC0uODItNi4yN3MtMy4zOSwzLjctMy43NCw3LjUzIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTQxLjIzLDEyMS4yOWE5LjI3LDkuMjcsMCwwLDEtNS44OC0uNDlzMi44Ny0zLjM5LDYuNDItNC4wOGE2LjgyLDYuODIsMCwwLDEsNS43LDEuMzYsMjAsMjAsMCwwLDEtNi4yNCwzLjIxIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTM0LjgxLDExNC42M2E3LjM3LDcuMzcsMCwwLDAsLjYyLDYuMjQsMjksMjksMCwwLDAsNC4yMS02Ljc0LDEwLjc3LDEwLjc3LDAsMCwwLC42MS02LjQ5cy00LjI2LDMuMTgtNS40NCw3Ii8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMjEwLjg1LDExMC4yMkExMC41OCwxMC41OCwwLDAsMSwyMTQsMTE2YTkuMjEsOS4yMSwwLDAsMS05LjM3LTcuOTIsMTAuNjEsMTAuNjEsMCwwLDEsNi4yLDIuMTciLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0xOTYuNDIsMTk0Ljk0YTExLjE0LDExLjE0LDAsMCwwLTIsNi4xMnM0LjQ4LTEuMzksNi4zOS00LjUyYTcuODQsNy44NCwwLDAsMCwuODUtNi4xNiwxOC43LDE4LjcsMCwwLDAtNS4yMSw0LjU2Ii8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMjAwLDIwNC4zOWE3LjcxLDcuNzEsMCwwLDEtNS41OS0zLjQ1LDI0LjY5LDI0LjY5LDAsMCwxLDcuOTQtMS4wOCwxMC4xNywxMC4xNywwLDAsMSw2LDIuNTVjLjA1LDAtNC4zLDIuNTItOC4zNCwyIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMjA0LjE1LDE5MS4xOWExMC45LDEwLjksMCwwLDAtLjY5LDYuMjRzMy45LTIuMDgsNS4xMi01LjQyYTcuODMsNy44MywwLDAsMC0uMzktNi4wOSwxNywxNywwLDAsMC00LDUuMjciLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0yMDkuMzMsMTk5LjcyYTcuNTYsNy41NiwwLDAsMS01LjkzLTIuNCwyMi44NywyMi44NywwLDAsMSw3LjI2LTIuMzYsOS44OCw5Ljg4LDAsMCwxLDYuMTgsMS40NnMtMy42MSwzLjE1LTcuNTEsMy4zIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMjEwLjc1LDE4Ni4yN2ExMC44MSwxMC44MSwwLDAsMCwuNTQsNi4xNXMzLjMxLTIuNjcsMy44Ni02LjEyYTcuODIsNy44MiwwLDAsMC0xLjQ5LTUuODMsMTYuMTEsMTYuMTEsMCwwLDAtMi45MSw1LjgiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0yMTcuMzIsMTkzLjY0YTcuNDYsNy40NiwwLDAsMS02LjExLTEuMzIsMjEuMjcsMjEuMjcsMCwwLDEsNi41LTMuNTIsOS44Myw5LjgzLDAsMCwxLDYuMjIuMzVzLTIuOTEsMy42OC02LjYxLDQuNDkiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0yMTYuMiwxODAuMzdhMTAuNiwxMC42LDAsMCwwLDEuNjQsNS44NmMwLC4wNSwyLjctMy4xNSwyLjYzLTYuNmE3LjgxLDcuODEsMCwwLDAtMi40OC01LjQxLDE1LjQ5LDE1LjQ5LDAsMCwwLTEuNzksNi4xNSIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTIyMy44OSwxODYuMzhhNy4zLDcuMywwLDAsMS02LjE0LS4yMywyMC41MiwyMC41MiwwLDAsMSw1LjY0LTQuNTQsOS43Niw5Ljc2LDAsMCwxLDYuMTItLjc0cy0yLjE5LDQuMDktNS42Miw1LjUxIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMjIwLjQ0LDE3My42OGExMC42MiwxMC42MiwwLDAsMCwyLjYzLDUuNDJzMi4wOC0zLjU0LDEuNDItNi44OWE3LjY1LDcuNjUsMCwwLDAtMy4zNS00Ljg1LDE1LjM3LDE1LjM3LDAsMCwwLS43LDYuMzIiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0yMjksMTc4LjE4YTcuMjcsNy4yNywwLDAsMS02LC44NiwyMCwyMCwwLDAsMSw0LjcxLTUuNDIsOS43NSw5Ljc1LDAsMCwxLDUuODYtMS44cy0xLjQ2LDQuMzgtNC41Niw2LjM2Ii8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMjIzLjQ1LDE2Ni4zOWExMC40MiwxMC40MiwwLDAsMCwzLjQ4LDQuODRzMS40My0zLjgzLjIzLTdhNy40OSw3LjQ5LDAsMCwwLTQuMDktNC4xNiwxNS40NiwxNS40NiwwLDAsMCwuMzgsNi4zMSIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTIzMi41NiwxNjkuMjhhNy4xOSw3LjE5LDAsMCwxLTUuNzMsMS45LDE5Ljc1LDE5Ljc1LDAsMCwxLDMuNy02LjEzLDkuNzMsOS43MywwLDAsMSw1LjQzLTIuODFzLS43LDQuNTUtMy40LDciLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0yMjUuMTgsMTU4LjcxYTEwLjE3LDEwLjE3LDAsMCwwLDQuMjEsNC4xM3MuNzctNC0uOTQtNi45MWE3LjM1LDcuMzUsMCwwLDAtNC43LTMuMzcsMTUuMjUsMTUuMjUsMCwwLDAsMS40Myw2LjE1Ii8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMjM0LjU4LDE1OS45MmE3LjIxLDcuMjEsMCwwLDEtNS4zLDIuODksMjAuNDEsMjAuNDEsMCwwLDEsMi42LTYuNjgsMTAsMTAsMCwwLDEsNC44NC0zLjc1cy4wOSw0LjYyLTIuMTQsNy41NCIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTIyNS41OCwxNTAuODNhMTAsMTAsMCwwLDAsNC44MiwzLjMycy4wOC00LjA5LTIuMDktNi42NmE3LjE3LDcuMTcsMCwwLDAtNS4xNy0yLjQ5LDE1LjQ0LDE1LjQ0LDAsMCwwLDIuNDQsNS44MyIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTIzNSwxNTAuMzRhNy4zMyw3LjMzLDAsMCwxLTQuNywzLjgxLDIxLDIxLDAsMCwxLDEuNDEtNy4wNyw5Ljg3LDkuODcsMCwwLDEsNC4xLTQuNThzLjg4LDQuNTUtLjgxLDcuODQiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0yMjQuNjMsMTQzYTkuNyw5LjcsMCwwLDAsNS4yOSwyLjQzcy0uNjQtNC4wNy0zLjIxLTYuMjRhNy4wNyw3LjA3LDAsMCwwLTUuNTItMS41NiwxNi4wOSwxNi4wOSwwLDAsMCwzLjQ0LDUuMzciLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0yMzMuNzQsMTQwLjc4YTcuMyw3LjMsMCwwLDEtMy45NCw0LjYyLDIyLDIyLDAsMCwxLC4xNS03LjI4LDEwLDEwLDAsMCwxLDMuMTctNS4yOXMxLjcsNC4zOC42Miw3Ljk1Ii8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMjIyLjI3LDEzNS4yN2E5LjU1LDkuNTUsMCwwLDAsNS42MiwxLjQ4cy0xLjM1LTMuOTQtNC4zLTUuNjdhNy4wNyw3LjA3LDAsMCwwLTUuNzMtLjU5LDE3LDE3LDAsMCwwLDQuNDEsNC43OCIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTIzMC43OSwxMzEuNDhhNy4zMiw3LjMyLDAsMCwxLTMsNS4zMSwyMy40MywyMy40MywwLDAsMS0xLjIyLTcuMywxMCwxMCwwLDAsMSwyLjA5LTUuODZzMi41Myw0LjEsMi4xMyw3Ljg1Ii8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMjE4LjQ3LDEyOGE5LjQxLDkuNDEsMCwwLDAsNS44Mi41cy0yLjEtMy43MS01LjM4LTQuOTRhNyw3LDAsMCwwLTUuNzguMzksMTguMTUsMTguMTUsMCwwLDAsNS4zNCw0Ii8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMjI2LjA5LDEyMi42OGE3LjI4LDcuMjgsMCwwLDEtMS45LDUuODYsMjUuNzUsMjUuNzUsMCwwLDEtMi42Ni03LjEyLDEwLjI1LDEwLjI1LDAsMCwxLC44Mi02LjI3czMuMzksMy43LDMuNzQsNy41MyIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTIxMy4xOCwxMjEuMjlhOS4yNyw5LjI3LDAsMCwwLDUuODgtLjQ5Yy4wNSwwLTIuODctMy4zOS02LjQyLTQuMDhhNi44Miw2LjgyLDAsMCwwLTUuNywxLjM2LDIwLDIwLDAsMCwwLDYuMjQsMy4yMSIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTIxOS42LDExNC42M2E3LjM3LDcuMzcsMCwwLDEtLjYyLDYuMjQsMjguOCwyOC44LDAsMCwxLTQuMi02Ljc0LDEwLjczLDEwLjczLDAsMCwxLS42Mi02LjQ5czQuMjYsMy4xOCw1LjQ0LDciLz48cGF0aCBjbGFzcz0iY2xzLTUiIGQ9Ik0yMDguMzYsMTQ0LjU4bC0xMC44Mi03LjMyLDEwLjU5LDUuNjdzLTQuODYtMTYuNjItMTkuOTUtMjAuMjVjMCwwLTMuMzQtMS4zNCwwLDUuNzQsMCwwLDQuNjksNS45MS02LjE0LDEyLjQ3TDE4MCwxMjYuMTZhNS42MSw1LjYxLDAsMCwwLTYuMzQtLjM5bC0xLjgxLjUzLS4yNCw0LDEuNTgtMS4xOC45Mi40MS0xLjcxLDExLjM4Yy0xMC44Mi02LjU2LTYuMTQtMTIuNDctNi4xNC0xMi40NywzLjM5LTcuMDguMDYtNS43NC4wNi01Ljc0LTE1LjEsMy42My0yMCwyMC4yNS0yMCwyMC4yNWwxMC41OS01LjY3LTEwLjgyLDcuMzJhNDguNzYsNDguNzYsMCwwLDAtLjMsNi45M2wxMS43Ny0xMC4zMy0xMS42MywxMi44OWE0MS42NCw0MS42NCwwLDAsMCwuODEsNS40OWwxMi4zNC0xMi4wNi0xMS43NiwxNC4zN2EzMS4zMiwzMS4zMiwwLDAsMCwyLDUuMjNMMTYwLjY2LDE1MGwtMTAuMzMsMTguOWEyNC41OCwyNC41OCwwLDAsMCwyLjQsMy4zM2wxMC45My0yMC4xLTQuMDYsMTAuMTUsMi41NC0xLjQ1LDQuMzMtOS4xMy0yLjY1LDguMjMsMS43OS0xLDMuMzItNy40NS0yLDYuNjMsMi4zOC0xLjYuNTktMy42M0wxNzEsMTU2bC05LjE1LDExLjc5LDEuNjcsMS4zNi0yLjkxLDMuMjhjLTUuMzMtMS4yOS02LjY0LDIuNC02LjY0LDIuNGE0LjgsNC44LDAsMCwxLDQuNTMtLjczYy0zLjUxLDMtMS41Miw1Ljc5LTEuNTIsNS43OS44Mi0zLjc3LDMuNDItNC4yMSwzLjQyLTQuMjFhMy40MywzLjQzLDAsMCwwLDMsNC4zYy0yLjYxLTIuOTMtLjE4LTUuMy0uMTgtNS4zLDMuMDguNTMsMy4zMSwyLjM3LDMuMzEsMi4zNywxLjA1LTMtMi45LTQtMi45LTRsMi4zMi0yLjU3LDEuMjUsMS4yOSw2LjE3LTguODJMMTY2LDE4M2wxLjcyLDUuNTQsNC4zNy0zLjI4LDMuNjctMjEuOTItMi40MiwyMi4wOCwzLjkzLDQuMDYsMy45Mi00LjA2LTIuNDItMjIuMDgsMy42NywyMS45Miw0LjM3LDMuMjgsMS43Mi01LjU0LTcuNDEtMjAuMTMsNi4xNiw4LjgyLDEuMjUtMS4yOSwyLjMyLDIuNTdzLTMuOTUsMS0yLjksNGMwLDAsLjI0LTEuODQsMy4zMS0yLjM3LDAsMCwyLjQzLDIuMzctLjE4LDUuM2EzLjQzLDMuNDMsMCwwLDAsMy00LjNzMi42LjQ0LDMuNDIsNC4yMWMwLDAsMi0yLjc4LTEuNTItNS43OWE0LjgyLDQuODIsMCwwLDEsNC41NC43M3MtMS4zMi0zLjY5LTYuNjUtMi40bC0yLjkxLTMuMjgsMS42Ny0xLjM2TDE4My40NCwxNTZsMS4xNS0zLjA4LjU4LDMuNjMsMi4zOCwxLjYtMi02LjYzLDMuMzMsNy40NSwxLjc4LDFMMTg4LDE1MS43MWw0LjMzLDkuMTMsMi41NCwxLjQ1LTQuMDYtMTAuMTUsMTAuOTMsMjAuMWEyNC41OCwyNC41OCwwLDAsMCwyLjQtMy4zM0wxOTMuNzksMTUwbDExLjMyLDE3LjA5YTI5LjY3LDI5LjY3LDAsMCwwLDItNS4yM0wxOTUuMzcsMTQ3LjVsMTIuMzQsMTIuMDZhNDAsNDAsMCwwLDAsLjgxLTUuNDlMMTk2LjksMTQxLjE4bDExLjc2LDEwLjMzQTQ4Ljc2LDQ4Ljc2LDAsMCwwLDIwOC4zNiwxNDQuNThaIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTc3LjIzLDExMC45NGExMi4zOSwxMi4zOSwwLDAsMSw2LjQ3LDEuODFsNS4yLTEyLjU2LTYsNC44NS0xLjI5LDEtLjE0LjFhMi4yNiwyLjI2LDAsMCwxLDEuMTguODcsMi4yOSwyLjI5LDAsMCwxLC4zOSwxLjI2LDIuMjMsMi4yMywwLDAsMS00LjQ2LDB2LTIuNTJhMi4yMiwyLjIyLDAsMCwxLDIuMjMtMi4yMmwtMy41Ni03LjcyLTMuNTYsNy43MmEyLjIxLDIuMjEsMCwwLDEsMi4yMiwyLjIydjIuNTJhMi4yMywyLjIzLDAsMSwxLTQuNDYsMCwyLjI5LDIuMjksMCwwLDEsLjM5LTEuMjYsMi4yNiwyLjI2LDAsMCwxLDEuMTgtLjg3bC0uMTQtLjEtMS4yOS0xLTYtNC44NSw1LjIsMTIuNTZBMTIuNCwxMi40LDAsMCwxLDE3Ny4yMywxMTAuOTRaIi8+PHRleHQgY2xhc3M9ImNscy02IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMjMuMiAzMTIuNzgpIj5CdXNpbmVzczx0c3BhbiB4PSI2LjY2IiB5PSIyNC44NSI+U2NpZW5jZTwvdHNwYW4+PC90ZXh0PjwvZz48L2c+PC9zdmc+'\n const badgeAdvancedDiploma = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzNTMuNzggNDA4LjUxIj48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6IzAwYmNiYzt9LmNscy0ye2ZpbGw6bm9uZTtzdHJva2U6I2ZmZjtzdHJva2UtbWl0ZXJsaW1pdDoxMDt9LmNscy0zLC5jbHMtN3tmaWxsOiNmZmY7fS5jbHMtNHtmaWxsOiMwMGE2YWE7fS5jbHMtNXtmaWxsOiMyOTNiODc7fS5jbHMtNntmaWxsOiNmNGEwMjY7fS5jbHMtN3tmb250LXNpemU6MjMuNTNweDtmb250LWZhbWlseTpQb3BwaW5zLUJvbGQsIFBvcHBpbnM7Zm9udC13ZWlnaHQ6NzAwO308L3N0eWxlPjwvZGVmcz48ZyBpZD0iTGF5ZXJfMiIgZGF0YS1uYW1lPSJMYXllciAyIj48ZyBpZD0iQmFkZ2VzIj48cG9seWdvbiBjbGFzcz0iY2xzLTEiIHBvaW50cz0iMCAxMDIuMTMgMCAzMDYuMzggMTc2Ljg5IDQwOC41MSAzNTMuNzggMzA2LjM4IDM1My43OCAxMDIuMTMgMTc2Ljg5IDAgMCAxMDIuMTMiLz48cG9seWdvbiBjbGFzcz0iY2xzLTIiIHBvaW50cz0iMTkuNzkgMTEzLjU1IDE5Ljc5IDI5NC45NiAxNzYuODkgMzg1LjY2IDMzMy45OSAyOTQuOTYgMzMzLjk5IDExMy41NSAxNzYuODkgMjIuODUgMTkuNzkgMTEzLjU1Ii8+PGNpcmNsZSBjbGFzcz0iY2xzLTMiIGN4PSIxNzYuODkiIGN5PSIxNTMuMTIiIHI9Ijg4LjM4Ii8+PHJlY3QgY2xhc3M9ImNscy00IiB5PSIyMjIuMDciIHdpZHRoPSIzNTMuNzgiIGhlaWdodD0iNTUuOTgiLz48cGF0aCBjbGFzcz0iY2xzLTMiIGQ9Ik00Ny4wNiwyNTUuMjhINDAuMzlsLTEuMSwzLjE5SDM1Ljc2bDYtMTYuNzdINDUuN2w2LDE2Ljc3SDQ4LjE3Wm0tMy4zMy05LjctMi40Myw3aDQuODVaIi8+PHBhdGggY2xhc3M9ImNscy0zIiBkPSJNNzEuMDcsMjUwLjEyYzAsNS4wNi0zLjQ4LDguMzUtOC44NCw4LjM1SDU2LjM4VjI0MS43Mmg1Ljg1QzY3LjU5LDI0MS43Miw3MS4wNywyNDUsNzEuMDcsMjUwLjEyWm0tOSw1LjVjMy41MywwLDUuNTItMiw1LjUyLTUuNXMtMi01LjU3LTUuNTItNS41N0g1OS43NHYxMS4wN1oiLz48cGF0aCBjbGFzcz0iY2xzLTMiIGQ9Ik04Ny40NiwyNDEuNzJIOTFsLTYuMTQsMTYuNzVIODAuODFsLTYuMTUtMTYuNzVoMy42TDgyLjg3LDI1NVoiLz48cGF0aCBjbGFzcz0iY2xzLTMiIGQ9Ik0xMDUuNzIsMjU1LjI4SDk5LjA1bC0xLjExLDMuMTlIOTQuNDJsNi0xNi43N2gzLjkxbDYsMTYuNzdoLTMuNTZabS0zLjM0LTkuNy0yLjQyLDdoNC44NVoiLz48cGF0aCBjbGFzcz0iY2xzLTMiIGQ9Ik0xMjkuMzYsMjQxLjd2MTYuNzdIMTI2TDExOC4zOSwyNDd2MTEuNDlIMTE1VjI0MS43aDMuMzZMMTI2LDI1My4yMlYyNDEuN1oiLz48cGF0aCBjbGFzcz0iY2xzLTMiIGQ9Ik0xNDIuNzUsMjQxLjVhNy45MSw3LjkxLDAsMCwxLDcuODgsNS40M2gtMy44N2E0LjIyLDQuMjIsMCwwLDAtNC0yLjRjLTIuOTMsMC01LDIuMTMtNSw1LjU0czIuMDksNS41NSw1LDUuNTVhNC4yMSw0LjIxLDAsMCwwLDQtMi40M2gzLjg3YTcuODgsNy44OCwwLDAsMS03Ljg4LDUuNDMsOC41Niw4LjU2LDAsMCwxLDAtMTcuMTJaIi8+PHBhdGggY2xhc3M9ImNscy0zIiBkPSJNMTY1LjYyLDI0NC40M2gtNi4zNnY0LjJoNS42NHYyLjY3aC01LjY0djQuNDRoNi4zNnYyLjczSDE1NS45VjI0MS43aDkuNzJaIi8+PHBhdGggY2xhc3M9ImNscy0zIiBkPSJNMTg1Ljc2LDI1MC4xMmMwLDUuMDYtMy40OCw4LjM1LTguODMsOC4zNWgtNS44NlYyNDEuNzJoNS44NkMxODIuMjgsMjQxLjcyLDE4NS43NiwyNDUsMTg1Ljc2LDI1MC4xMlptLTguOTUsNS41YzMuNTMsMCw1LjUyLTIsNS41Mi01LjVzLTItNS41Ny01LjUyLTUuNTdoLTIuMzh2MTEuMDdaIi8+PHBhdGggY2xhc3M9ImNscy0zIiBkPSJNMjEzLjQ4LDI1MC4xMmMwLDUuMDYtMy40OCw4LjM1LTguODMsOC4zNWgtNS44NlYyNDEuNzJoNS44NkMyMTAsMjQxLjcyLDIxMy40OCwyNDUsMjEzLjQ4LDI1MC4xMlptLTguOTUsNS41YzMuNTIsMCw1LjUyLTIsNS41Mi01LjVzLTItNS41Ny01LjUyLTUuNTdoLTIuMzh2MTEuMDdaIi8+PHBhdGggY2xhc3M9ImNscy0zIiBkPSJNMjE4LjQsMjQxLjcyaDMuMzZ2MTYuNzVIMjE4LjRaIi8+PHBhdGggY2xhc3M9ImNscy0zIiBkPSJNMjMzLjY0LDI1MmgtMi44MXY2LjQzaC0zLjM2VjI0MS43Mmg2LjE3YzQsMCw2LjA1LDIuMjgsNi4wNSw1LjE4QzIzOS42OSwyNDkuNDUsMjM4LDI1MiwyMzMuNjQsMjUyWm0tLjE1LTIuNzFjMS45LDAsMi43NC0uOTQsMi43NC0yLjQzcy0uODQtMi40NC0yLjc0LTIuNDRoLTIuNjZ2NC44N1oiLz48cGF0aCBjbGFzcz0iY2xzLTMiIGQ9Ik0yNDcuODIsMjQxLjcydjE0LjA5aDUuNTJ2Mi42NmgtOC44OFYyNDEuNzJaIi8+PHBhdGggY2xhc3M9ImNscy0zIiBkPSJNMjY1LjY1LDI1OC42NGE4LjU4LDguNTgsMCwxLDEsOC41Ny04LjU5QTguNDIsOC40MiwwLDAsMSwyNjUuNjUsMjU4LjY0Wm0wLTNjMywwLDUuMTItMi4xOCw1LjEyLTUuNTlzLTIuMDktNS41NS01LjEyLTUuNTUtNS4xMywyLjE0LTUuMTMsNS41NVMyNjIuNjEsMjU1LjY0LDI2NS42NSwyNTUuNjRaIi8+PHBhdGggY2xhc3M9ImNscy0zIiBkPSJNMjc5LjEyLDI0MS43MmgzLjgxbDUuMzMsMTIuNDYsNS4zMy0xMi40NmgzLjc5djE2Ljc1SDI5NFYyNDcuNThsLTQuNDksMTAuODlIMjg3bC00LjUxLTEwLjg5djEwLjg5aC0zLjM2WiIvPjxwYXRoIGNsYXNzPSJjbHMtMyIgZD0iTTMxMy4zNywyNTUuMjhoLTYuNjhsLTEuMSwzLjE5aC0zLjUzbDYtMTYuNzdIMzEybDYsMTYuNzdoLTMuNTVabS0zLjM0LTkuNy0yLjQyLDdoNC44NFoiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0xNDMuNTYsMTEwLjIyYTEwLjU4LDEwLjU4LDAsMCwwLTMuMTcsNS43NSw5LjIsOS4yLDAsMCwwLDkuMzctNy45MiwxMC42MSwxMC42MSwwLDAsMC02LjIsMi4xNyIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTE1OCwxOTQuOTRhMTEuMTQsMTEuMTQsMCwwLDEsMiw2LjEycy00LjQ4LTEuMzktNi4zOS00LjUyYTcuODksNy44OSwwLDAsMS0uODUtNi4xNiwxOC41NSwxOC41NSwwLDAsMSw1LjIxLDQuNTYiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0xNTQuNDYsMjA0LjM5YTcuNzEsNy43MSwwLDAsMCw1LjU5LTMuNDUsMjQuNjksMjQuNjksMCwwLDAtNy45NC0xLjA4LDEwLjIxLDEwLjIxLDAsMCwwLTYsMi41NWMtLjA1LDAsNC4zLDIuNTIsOC4zNCwyIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTUwLjI2LDE5MS4xOWExMC45LDEwLjksMCwwLDEsLjY5LDYuMjRzLTMuOS0yLjA4LTUuMTItNS40MmE3LjgzLDcuODMsMCwwLDEsLjM5LTYuMDksMTYuODQsMTYuODQsMCwwLDEsNCw1LjI3Ii8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTQ1LjA5LDE5OS43MmE3LjU1LDcuNTUsMCwwLDAsNS45Mi0yLjQsMjIuODcsMjIuODcsMCwwLDAtNy4yNi0yLjM2LDkuODgsOS44OCwwLDAsMC02LjE4LDEuNDZzMy42MSwzLjE1LDcuNTIsMy4zIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTQzLjY2LDE4Ni4yN2ExMC44MSwxMC44MSwwLDAsMS0uNTQsNi4xNXMtMy4zMS0yLjY3LTMuODYtNi4xMmE3LjgyLDcuODIsMCwwLDEsMS40OS01LjgzLDE2LjExLDE2LjExLDAsMCwxLDIuOTEsNS44Ii8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTM3LjA5LDE5My42NGE3LjQ2LDcuNDYsMCwwLDAsNi4xMS0xLjMyLDIxLjMsMjEuMywwLDAsMC02LjQ5LTMuNTIsOS44Niw5Ljg2LDAsMCwwLTYuMjMuMzVzMi45MSwzLjY4LDYuNjEsNC40OSIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTEzOC4yMSwxODAuMzdhMTAuNiwxMC42LDAsMCwxLTEuNjQsNS44NmMwLC4wNS0yLjctMy4xNS0yLjYzLTYuNmE3Ljc1LDcuNzUsMCwwLDEsMi40OS01LjQxLDE1Ljc1LDE1Ljc1LDAsMCwxLDEuNzgsNi4xNSIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTEzMC41MiwxODYuMzhhNy4zLDcuMywwLDAsMCw2LjE0LS4yMywyMC41MiwyMC41MiwwLDAsMC01LjY0LTQuNTQsOS43Niw5Ljc2LDAsMCwwLTYuMTItLjc0czIuMTksNC4wOSw1LjYyLDUuNTEiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0xMzQsMTczLjY4YTEwLjYyLDEwLjYyLDAsMCwxLTIuNjMsNS40MnMtMi4wNy0zLjU0LTEuNDItNi44OWE3LjY5LDcuNjksMCwwLDEsMy4zNS00Ljg1LDE1LjM3LDE1LjM3LDAsMCwxLC43LDYuMzIiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0xMjUuNDMsMTc4LjE4YTcuMjcsNy4yNywwLDAsMCw2LC44NiwyMCwyMCwwLDAsMC00LjcxLTUuNDIsOS43NCw5Ljc0LDAsMCwwLTUuODUtMS44czEuNDUsNC4zOCw0LjU1LDYuMzYiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0xMzEsMTY2LjM5YTEwLjQyLDEwLjQyLDAsMCwxLTMuNDgsNC44NHMtMS40My0zLjgzLS4yMy03YTcuNDksNy40OSwwLDAsMSw0LjA5LTQuMTYsMTUuNDYsMTUuNDYsMCwwLDEtLjM4LDYuMzEiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0xMjEuODUsMTY5LjI4YTcuMiw3LjIsMCwwLDAsNS43NCwxLjksMjAuMjEsMjAuMjEsMCwwLDAtMy43LTYuMTMsOS43OSw5Ljc5LDAsMCwwLTUuNDMtMi44MXMuNjksNC41NSwzLjM5LDciLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0xMjkuMjMsMTU4LjcxYTEwLjExLDEwLjExLDAsMCwxLTQuMjEsNC4xM3MtLjc2LTQsLjk0LTYuOTFhNy4zNSw3LjM1LDAsMCwxLDQuNy0zLjM3LDE1LjI1LDE1LjI1LDAsMCwxLTEuNDMsNi4xNSIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTExOS44MywxNTkuOTJhNy4yMSw3LjIxLDAsMCwwLDUuMywyLjg5LDIwLjQxLDIwLjQxLDAsMCwwLTIuNi02LjY4LDkuOTIsOS45MiwwLDAsMC00Ljg0LTMuNzVzLS4wOSw0LjYyLDIuMTQsNy41NCIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTEyOC44MywxNTAuODNhMTAsMTAsMCwwLDEtNC44MiwzLjMycy0uMDgtNC4wOSwyLjA5LTYuNjZhNy4xNyw3LjE3LDAsMCwxLDUuMTctMi40OSwxNS40NCwxNS40NCwwLDAsMS0yLjQ0LDUuODMiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0xMTkuNDIsMTUwLjM0YTcuMzEsNy4zMSwwLDAsMCw0LjcxLDMuODEsMjEuMTUsMjEuMTUsMCwwLDAtMS40Mi03LjA3LDkuODEsOS44MSwwLDAsMC00LjEtNC41OHMtLjg4LDQuNTUuODEsNy44NCIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTEyOS43OSwxNDNhOS43NCw5Ljc0LDAsMCwxLTUuMywyLjQzcy42NC00LjA3LDMuMjEtNi4yNGE3LjA4LDcuMDgsMCwwLDEsNS41Mi0xLjU2LDE2LjE2LDE2LjE2LDAsMCwxLTMuNDMsNS4zNyIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTEyMC42NywxNDAuNzhhNy4zMiw3LjMyLDAsMCwwLDMuOTQsNC42MiwyMiwyMiwwLDAsMC0uMTUtNy4yOCwxMCwxMCwwLDAsMC0zLjE3LTUuMjlzLTEuNyw0LjM4LS42Miw3Ljk1Ii8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTMyLjE0LDEzNS4yN2E5LjU1LDkuNTUsMCwwLDEtNS42MiwxLjQ4czEuMzUtMy45NCw0LjMxLTUuNjdhNyw3LDAsMCwxLDUuNzItLjU5LDE3LDE3LDAsMCwxLTQuNDEsNC43OCIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTEyMy42MiwxMzEuNDhhNy4zMiw3LjMyLDAsMCwwLDMsNS4zMSwyMy45MSwyMy45MSwwLDAsMCwxLjIxLTcuMywxMCwxMCwwLDAsMC0yLjA5LTUuODZzLTIuNTMsNC4xLTIuMTMsNy44NSIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTEzNS45NCwxMjhhOS40MSw5LjQxLDAsMCwxLTUuODIuNXMyLjEtMy43MSw1LjM4LTQuOTRhNi45NCw2Ljk0LDAsMCwxLDUuNzguMzksMTguMTUsMTguMTUsMCwwLDEtNS4zNCw0Ii8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTI4LjMyLDEyMi42OGE3LjI4LDcuMjgsMCwwLDAsMS45LDUuODYsMjUuNzUsMjUuNzUsMCwwLDAsMi42Ni03LjEyLDEwLjI1LDEwLjI1LDAsMCwwLS44Mi02LjI3cy0zLjM5LDMuNy0zLjc0LDcuNTMiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0xNDEuMjMsMTIxLjI5YTkuMjcsOS4yNywwLDAsMS01Ljg4LS40OXMyLjg3LTMuMzksNi40Mi00LjA4YTYuODIsNi44MiwwLDAsMSw1LjcsMS4zNiwyMCwyMCwwLDAsMS02LjI0LDMuMjEiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0xMzQuODEsMTE0LjYzYTcuMzcsNy4zNywwLDAsMCwuNjIsNi4yNCwyOSwyOSwwLDAsMCw0LjIxLTYuNzQsMTAuNzcsMTAuNzcsMCwwLDAsLjYxLTYuNDlzLTQuMjYsMy4xOC01LjQ0LDciLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0yMTAuODUsMTEwLjIyQTEwLjU4LDEwLjU4LDAsMCwxLDIxNCwxMTZhOS4yMSw5LjIxLDAsMCwxLTkuMzctNy45MiwxMC42MSwxMC42MSwwLDAsMSw2LjIsMi4xNyIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTE5Ni40MiwxOTQuOTRhMTEuMTQsMTEuMTQsMCwwLDAtMiw2LjEyczQuNDgtMS4zOSw2LjM5LTQuNTJhNy44NCw3Ljg0LDAsMCwwLC44NS02LjE2LDE4LjcsMTguNywwLDAsMC01LjIxLDQuNTYiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0yMDAsMjA0LjM5YTcuNzEsNy43MSwwLDAsMS01LjU5LTMuNDUsMjQuNjksMjQuNjksMCwwLDEsNy45NC0xLjA4LDEwLjE3LDEwLjE3LDAsMCwxLDYsMi41NWMuMDUsMC00LjMsMi41Mi04LjM0LDIiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0yMDQuMTUsMTkxLjE5YTEwLjksMTAuOSwwLDAsMC0uNjksNi4yNHMzLjktMi4wOCw1LjEyLTUuNDJhNy44Myw3LjgzLDAsMCwwLS4zOS02LjA5LDE3LDE3LDAsMCwwLTQsNS4yNyIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTIwOS4zMywxOTkuNzJhNy41Niw3LjU2LDAsMCwxLTUuOTMtMi40LDIyLjg3LDIyLjg3LDAsMCwxLDcuMjYtMi4zNiw5Ljg4LDkuODgsMCwwLDEsNi4xOCwxLjQ2cy0zLjYxLDMuMTUtNy41MSwzLjMiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0yMTAuNzUsMTg2LjI3YTEwLjgxLDEwLjgxLDAsMCwwLC41NCw2LjE1czMuMzEtMi42NywzLjg2LTYuMTJhNy44Miw3LjgyLDAsMCwwLTEuNDktNS44MywxNi4xMSwxNi4xMSwwLDAsMC0yLjkxLDUuOCIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTIxNy4zMiwxOTMuNjRhNy40Niw3LjQ2LDAsMCwxLTYuMTEtMS4zMiwyMS4yNywyMS4yNywwLDAsMSw2LjUtMy41Miw5LjgzLDkuODMsMCwwLDEsNi4yMi4zNXMtMi45MSwzLjY4LTYuNjEsNC40OSIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTIxNi4yLDE4MC4zN2ExMC42LDEwLjYsMCwwLDAsMS42NCw1Ljg2YzAsLjA1LDIuNy0zLjE1LDIuNjMtNi42YTcuODEsNy44MSwwLDAsMC0yLjQ4LTUuNDEsMTUuNDksMTUuNDksMCwwLDAtMS43OSw2LjE1Ii8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMjIzLjg5LDE4Ni4zOGE3LjMsNy4zLDAsMCwxLTYuMTQtLjIzLDIwLjUyLDIwLjUyLDAsMCwxLDUuNjQtNC41NCw5Ljc2LDkuNzYsMCwwLDEsNi4xMi0uNzRzLTIuMTksNC4wOS01LjYyLDUuNTEiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0yMjAuNDQsMTczLjY4YTEwLjYyLDEwLjYyLDAsMCwwLDIuNjMsNS40MnMyLjA4LTMuNTQsMS40Mi02Ljg5YTcuNjUsNy42NSwwLDAsMC0zLjM1LTQuODUsMTUuMzcsMTUuMzcsMCwwLDAtLjcsNi4zMiIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTIyOSwxNzguMThhNy4yNyw3LjI3LDAsMCwxLTYsLjg2LDIwLDIwLDAsMCwxLDQuNzEtNS40Miw5Ljc1LDkuNzUsMCwwLDEsNS44Ni0xLjhzLTEuNDYsNC4zOC00LjU2LDYuMzYiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0yMjMuNDUsMTY2LjM5YTEwLjQyLDEwLjQyLDAsMCwwLDMuNDgsNC44NHMxLjQzLTMuODMuMjMtN2E3LjQ5LDcuNDksMCwwLDAtNC4wOS00LjE2LDE1LjQ2LDE1LjQ2LDAsMCwwLC4zOCw2LjMxIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMjMyLjU2LDE2OS4yOGE3LjE5LDcuMTksMCwwLDEtNS43MywxLjksMTkuNzUsMTkuNzUsMCwwLDEsMy43LTYuMTMsOS43Myw5LjczLDAsMCwxLDUuNDMtMi44MXMtLjcsNC41NS0zLjQsNyIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTIyNS4xOCwxNTguNzFhMTAuMTcsMTAuMTcsMCwwLDAsNC4yMSw0LjEzcy43Ny00LS45NC02LjkxYTcuMzUsNy4zNSwwLDAsMC00LjctMy4zNywxNS4yNSwxNS4yNSwwLDAsMCwxLjQzLDYuMTUiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0yMzQuNTgsMTU5LjkyYTcuMjEsNy4yMSwwLDAsMS01LjMsMi44OSwyMC40MSwyMC40MSwwLDAsMSwyLjYtNi42OCwxMCwxMCwwLDAsMSw0Ljg0LTMuNzVzLjA5LDQuNjItMi4xNCw3LjU0Ii8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMjI1LjU4LDE1MC44M2ExMCwxMCwwLDAsMCw0LjgyLDMuMzJzLjA4LTQuMDktMi4wOS02LjY2YTcuMTcsNy4xNywwLDAsMC01LjE3LTIuNDksMTUuNDQsMTUuNDQsMCwwLDAsMi40NCw1LjgzIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMjM1LDE1MC4zNGE3LjMzLDcuMzMsMCwwLDEtNC43LDMuODEsMjEsMjEsMCwwLDEsMS40MS03LjA3LDkuODcsOS44NywwLDAsMSw0LjEtNC41OHMuODgsNC41NS0uODEsNy44NCIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTIyNC42MywxNDNhOS43LDkuNywwLDAsMCw1LjI5LDIuNDNzLS42NC00LjA3LTMuMjEtNi4yNGE3LjA3LDcuMDcsMCwwLDAtNS41Mi0xLjU2LDE2LjA5LDE2LjA5LDAsMCwwLDMuNDQsNS4zNyIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTIzMy43NCwxNDAuNzhhNy4zLDcuMywwLDAsMS0zLjk0LDQuNjIsMjIsMjIsMCwwLDEsLjE1LTcuMjgsMTAsMTAsMCwwLDEsMy4xNy01LjI5czEuNyw0LjM4LjYyLDcuOTUiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0yMjIuMjcsMTM1LjI3YTkuNTUsOS41NSwwLDAsMCw1LjYyLDEuNDhzLTEuMzUtMy45NC00LjMtNS42N2E3LjA3LDcuMDcsMCwwLDAtNS43My0uNTksMTcsMTcsMCwwLDAsNC40MSw0Ljc4Ii8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMjMwLjc5LDEzMS40OGE3LjMyLDcuMzIsMCwwLDEtMyw1LjMxLDIzLjQzLDIzLjQzLDAsMCwxLTEuMjItNy4zLDEwLDEwLDAsMCwxLDIuMDktNS44NnMyLjUzLDQuMSwyLjEzLDcuODUiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0yMTguNDcsMTI4YTkuNDEsOS40MSwwLDAsMCw1LjgyLjVzLTIuMS0zLjcxLTUuMzgtNC45NGE3LDcsMCwwLDAtNS43OC4zOSwxOC4xNSwxOC4xNSwwLDAsMCw1LjM0LDQiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0yMjYuMDksMTIyLjY4YTcuMjgsNy4yOCwwLDAsMS0xLjksNS44NiwyNS43NSwyNS43NSwwLDAsMS0yLjY2LTcuMTIsMTAuMjUsMTAuMjUsMCwwLDEsLjgyLTYuMjdzMy4zOSwzLjcsMy43NCw3LjUzIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMjEzLjE4LDEyMS4yOWE5LjI3LDkuMjcsMCwwLDAsNS44OC0uNDljLjA1LDAtMi44Ny0zLjM5LTYuNDItNC4wOGE2LjgyLDYuODIsMCwwLDAtNS43LDEuMzYsMjAsMjAsMCwwLDAsNi4yNCwzLjIxIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMjE5LjYsMTE0LjYzYTcuMzcsNy4zNywwLDAsMS0uNjIsNi4yNCwyOC44LDI4LjgsMCwwLDEtNC4yLTYuNzQsMTAuNzMsMTAuNzMsMCwwLDEtLjYyLTYuNDlzNC4yNiwzLjE4LDUuNDQsNyIvPjxwYXRoIGNsYXNzPSJjbHMtNSIgZD0iTTIwOC4zNiwxNDQuNThsLTEwLjgyLTcuMzIsMTAuNTksNS42N3MtNC44Ni0xNi42Mi0xOS45NS0yMC4yNWMwLDAtMy4zNC0xLjM0LDAsNS43NCwwLDAsNC42OSw1LjkxLTYuMTQsMTIuNDdMMTgwLDEyNi4xNmE1LjYxLDUuNjEsMCwwLDAtNi4zNC0uMzlsLTEuODEuNTMtLjI0LDQsMS41OC0xLjE4LjkyLjQxLTEuNzEsMTEuMzhjLTEwLjgyLTYuNTYtNi4xNC0xMi40Ny02LjE0LTEyLjQ3LDMuMzktNy4wOC4wNi01Ljc0LjA2LTUuNzQtMTUuMSwzLjYzLTIwLDIwLjI1LTIwLDIwLjI1bDEwLjU5LTUuNjctMTAuODIsNy4zMmE0OC43Niw0OC43NiwwLDAsMC0uMyw2LjkzbDExLjc3LTEwLjMzLTExLjYzLDEyLjg5YTQxLjY0LDQxLjY0LDAsMCwwLC44MSw1LjQ5bDEyLjM0LTEyLjA2LTExLjc2LDE0LjM3YTMxLjMyLDMxLjMyLDAsMCwwLDIsNS4yM0wxNjAuNjYsMTUwbC0xMC4zMywxOC45YTI0LjU4LDI0LjU4LDAsMCwwLDIuNCwzLjMzbDEwLjkzLTIwLjEtNC4wNiwxMC4xNSwyLjU0LTEuNDUsNC4zMy05LjEzLTIuNjUsOC4yMywxLjc5LTEsMy4zMi03LjQ1LTIsNi42MywyLjM4LTEuNi41OS0zLjYzTDE3MSwxNTZsLTkuMTUsMTEuNzksMS42NywxLjM2LTIuOTEsMy4yOGMtNS4zMy0xLjI5LTYuNjQsMi40LTYuNjQsMi40YTQuOCw0LjgsMCwwLDEsNC41My0uNzNjLTMuNTEsMy0xLjUyLDUuNzktMS41Miw1Ljc5LjgyLTMuNzcsMy40Mi00LjIxLDMuNDItNC4yMWEzLjQzLDMuNDMsMCwwLDAsMyw0LjNjLTIuNjEtMi45My0uMTgtNS4zLS4xOC01LjMsMy4wOC41MywzLjMxLDIuMzcsMy4zMSwyLjM3LDEuMDUtMy0yLjktNC0yLjktNGwyLjMyLTIuNTcsMS4yNSwxLjI5LDYuMTctOC44MkwxNjYsMTgzbDEuNzIsNS41NCw0LjM3LTMuMjgsMy42Ny0yMS45Mi0yLjQyLDIyLjA4LDMuOTMsNC4wNiwzLjkyLTQuMDYtMi40Mi0yMi4wOCwzLjY3LDIxLjkyLDQuMzcsMy4yOCwxLjcyLTUuNTQtNy40MS0yMC4xMyw2LjE2LDguODIsMS4yNS0xLjI5LDIuMzIsMi41N3MtMy45NSwxLTIuOSw0YzAsMCwuMjQtMS44NCwzLjMxLTIuMzcsMCwwLDIuNDMsMi4zNy0uMTgsNS4zYTMuNDMsMy40MywwLDAsMCwzLTQuM3MyLjYuNDQsMy40Miw0LjIxYzAsMCwyLTIuNzgtMS41Mi01Ljc5YTQuODIsNC44MiwwLDAsMSw0LjU0Ljczcy0xLjMyLTMuNjktNi42NS0yLjRsLTIuOTEtMy4yOCwxLjY3LTEuMzZMMTgzLjQ0LDE1NmwxLjE1LTMuMDguNTgsMy42MywyLjM4LDEuNi0yLTYuNjMsMy4zMyw3LjQ1LDEuNzgsMUwxODgsMTUxLjcxbDQuMzMsOS4xMywyLjU0LDEuNDUtNC4wNi0xMC4xNSwxMC45MywyMC4xYTI0LjU4LDI0LjU4LDAsMCwwLDIuNC0zLjMzTDE5My43OSwxNTBsMTEuMzIsMTcuMDlhMjkuNjcsMjkuNjcsMCwwLDAsMi01LjIzTDE5NS4zNywxNDcuNWwxMi4zNCwxMi4wNmE0MCw0MCwwLDAsMCwuODEtNS40OUwxOTYuOSwxNDEuMThsMTEuNzYsMTAuMzNBNDguNzYsNDguNzYsMCwwLDAsMjA4LjM2LDE0NC41OFoiLz48cGF0aCBjbGFzcz0iY2xzLTYiIGQ9Ik0xNzcuMjMsMTEwLjk0YTEyLjM5LDEyLjM5LDAsMCwxLDYuNDcsMS44MWw1LjItMTIuNTYtNiw0Ljg1LTEuMjksMS0uMTQuMWEyLjI2LDIuMjYsMCwwLDEsMS4xOC44NywyLjI5LDIuMjksMCwwLDEsLjM5LDEuMjYsMi4yMywyLjIzLDAsMCwxLTQuNDYsMHYtMi41MmEyLjIyLDIuMjIsMCwwLDEsMi4yMy0yLjIybC0zLjU2LTcuNzItMy41Niw3LjcyYTIuMjEsMi4yMSwwLDAsMSwyLjIyLDIuMjJ2Mi41MmEyLjIzLDIuMjMsMCwxLDEtNC40NiwwLDIuMjksMi4yOSwwLDAsMSwuMzktMS4yNiwyLjI2LDIuMjYsMCwwLDEsMS4xOC0uODdsLS4xNC0uMS0xLjI5LTEtNi00Ljg1LDUuMiwxMi41NkExMi40LDEyLjQsMCwwLDEsMTc3LjIzLDExMC45NFoiLz48dGV4dCBjbGFzcz0iY2xzLTciIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEyMy4yIDMxMi43OCkiPkJ1c2luZXNzPHRzcGFuIHg9IjYuNjYiIHk9IjI0Ljg1Ij5TY2llbmNlPC90c3Bhbj48L3RleHQ+PC9nPjwvZz48L3N2Zz4='\n const badgeCertificate = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzNTMuNzggNDA4LjUxIj48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6IzUwNmVmZjt9LmNscy0ye2ZpbGw6bm9uZTtzdHJva2U6I2ZmZjtzdHJva2UtbWl0ZXJsaW1pdDoxMDt9LmNscy0zLC5jbHMtN3tmaWxsOiNmZmY7fS5jbHMtNHtmaWxsOiMyZDU1ZWE7fS5jbHMtNXtmaWxsOiMyOTNiODc7fS5jbHMtNntmaWxsOiNmNGEwMjY7fS5jbHMtN3tmb250LXNpemU6MjMuNTNweDtmb250LWZhbWlseTpQb3BwaW5zLUJvbGQsIFBvcHBpbnM7Zm9udC13ZWlnaHQ6NzAwO308L3N0eWxlPjwvZGVmcz48ZyBpZD0iTGF5ZXJfMiIgZGF0YS1uYW1lPSJMYXllciAyIj48ZyBpZD0iQmFkZ2VzIj48cG9seWdvbiBjbGFzcz0iY2xzLTEiIHBvaW50cz0iMCAxMDIuMTMgMCAzMDYuMzggMTc2Ljg5IDQwOC41MSAzNTMuNzggMzA2LjM4IDM1My43OCAxMDIuMTMgMTc2Ljg5IDAgMCAxMDIuMTMiLz48cG9seWdvbiBjbGFzcz0iY2xzLTIiIHBvaW50cz0iMTkuNzkgMTEzLjU1IDE5Ljc5IDI5NC45NiAxNzYuODkgMzg1LjY2IDMzMy45OSAyOTQuOTYgMzMzLjk5IDExMy41NSAxNzYuODkgMjIuODUgMTkuNzkgMTEzLjU1Ii8+PGNpcmNsZSBjbGFzcz0iY2xzLTMiIGN4PSIxNzYuODkiIGN5PSIxNTMuMTIiIHI9Ijg4LjM4Ii8+PHJlY3QgY2xhc3M9ImNscy00IiB5PSIyMjIuMDciIHdpZHRoPSIzNTMuNzgiIGhlaWdodD0iNTUuOTgiLz48cGF0aCBjbGFzcz0iY2xzLTMiIGQ9Ik0xMDAuMTQsMjQxLjVhNy44OSw3Ljg5LDAsMCwxLDcuODcsNS40M2gtMy44NmE0LjIyLDQuMjIsMCwwLDAtNC0yLjRjLTIuOTMsMC01LDIuMTMtNSw1LjU0czIuMDksNS41NSw1LDUuNTVhNC4yMSw0LjIxLDAsMCwwLDQtMi40M0gxMDhhNy44Niw3Ljg2LDAsMCwxLTcuODcsNS40Myw4LjU2LDguNTYsMCwwLDEsMC0xNy4xMloiLz48cGF0aCBjbGFzcz0iY2xzLTMiIGQ9Ik0xMjMsMjQ0LjQzaC02LjM2djQuMmg1LjY0djIuNjdoLTUuNjR2NC40NEgxMjN2Mi43M2gtOS43MlYyNDEuNjlIMTIzWiIvPjxwYXRoIGNsYXNzPSJjbHMtMyIgZD0iTTEzNC43NSwyNDEuNzJjNCwwLDYuMDUsMi4zMyw2LjA1LDUuMTNhNC44NCw0Ljg0LDAsMCwxLTMuODIsNC44M2w0LDYuNzlIMTM3LjFsLTMuNy02LjUzaC0xLjU4djYuNTNoLTMuMzZWMjQxLjcyWm0tLjEyLDIuNzhoLTIuODF2NC45MmgyLjgxYzEuODcsMCwyLjcxLTEsMi43MS0yLjQ5UzEzNi41LDI0NC41LDEzNC42MywyNDQuNVoiLz48cGF0aCBjbGFzcz0iY2xzLTMiIGQ9Ik0xNDUuMzUsMjQxLjcyaDEyLjI5djIuNzFoLTQuNDZ2MTRoLTMuMzZ2LTE0aC00LjQ3WiIvPjxwYXRoIGNsYXNzPSJjbHMtMyIgZD0iTTE2Mi40OSwyNDEuNzJoMy4zNnYxNi43NWgtMy4zNloiLz48cGF0aCBjbGFzcz0iY2xzLTMiIGQ9Ik0xNzEuNTYsMjQxLjcyaDEwLjM1djIuNzFoLTd2NC4zaDUuMzZ2Mi42NmgtNS4zNnY3LjA4aC0zLjM2WiIvPjxwYXRoIGNsYXNzPSJjbHMtMyIgZD0iTTE4Ni42OCwyNDEuNzJIMTkwdjE2Ljc1aC0zLjM2WiIvPjxwYXRoIGNsYXNzPSJjbHMtMyIgZD0iTTIwMy40MywyNDEuNWE3LjksNy45LDAsMCwxLDcuODgsNS40M2gtMy44N2E0LjIyLDQuMjIsMCwwLDAtNC0yLjRjLTIuOTMsMC01LDIuMTMtNSw1LjU0czIuMDksNS41NSw1LDUuNTVhNC4yMSw0LjIxLDAsMCwwLDQtMi40M2gzLjg3YTcuODgsNy44OCwwLDAsMS03Ljg4LDUuNDMsOC41Niw4LjU2LDAsMCwxLDAtMTcuMTJaIi8+PHBhdGggY2xhc3M9ImNscy0zIiBkPSJNMjI2Ljg2LDI1NS4yOGgtNi42N2wtMS4xMSwzLjE5aC0zLjUzbDYtMTYuNzhoMy45MWw2LDE2Ljc4SDIyOFptLTMuMzQtOS43LTIuNDIsN0gyMjZaIi8+PHBhdGggY2xhc3M9ImNscy0zIiBkPSJNMjM1LjI4LDI0MS43MmgxMi4yOXYyLjcxaC00LjQ2djE0aC0zLjM2di0xNGgtNC40N1oiLz48cGF0aCBjbGFzcz0iY2xzLTMiIGQ9Ik0yNjIuMTQsMjQ0LjQzaC02LjM2djQuMmg1LjY0djIuNjdoLTUuNjR2NC40NGg2LjM2djIuNzNoLTkuNzJWMjQxLjY5aDkuNzJaIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTQzLjU2LDExMC4yMmExMC41OCwxMC41OCwwLDAsMC0zLjE3LDUuNzUsOS4yLDkuMiwwLDAsMCw5LjM3LTcuOTIsMTAuNjEsMTAuNjEsMCwwLDAtNi4yLDIuMTciLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0xNTgsMTk0Ljk0YTExLjE0LDExLjE0LDAsMCwxLDIsNi4xMnMtNC40OC0xLjM5LTYuMzktNC41MmE3Ljg5LDcuODksMCwwLDEtLjg1LTYuMTYsMTguNTUsMTguNTUsMCwwLDEsNS4yMSw0LjU2Ii8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTU0LjQ2LDIwNC4zOWE3LjcxLDcuNzEsMCwwLDAsNS41OS0zLjQ1LDI0LjY5LDI0LjY5LDAsMCwwLTcuOTQtMS4wOCwxMC4yMSwxMC4yMSwwLDAsMC02LDIuNTVjLS4wNSwwLDQuMywyLjUyLDguMzQsMiIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTE1MC4yNiwxOTEuMTlhMTAuOSwxMC45LDAsMCwxLC42OSw2LjI0cy0zLjktMi4wOC01LjEyLTUuNDJhNy44Myw3LjgzLDAsMCwxLC4zOS02LjA5LDE2Ljg0LDE2Ljg0LDAsMCwxLDQsNS4yNyIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTE0NS4wOSwxOTkuNzJhNy41NSw3LjU1LDAsMCwwLDUuOTItMi40LDIyLjg3LDIyLjg3LDAsMCwwLTcuMjYtMi4zNiw5Ljg4LDkuODgsMCwwLDAtNi4xOCwxLjQ2czMuNjEsMy4xNSw3LjUyLDMuMyIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTE0My42NiwxODYuMjdhMTAuODEsMTAuODEsMCwwLDEtLjU0LDYuMTVzLTMuMzEtMi42Ny0zLjg2LTYuMTJhNy44Miw3LjgyLDAsMCwxLDEuNDktNS44MywxNi4xMSwxNi4xMSwwLDAsMSwyLjkxLDUuOCIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTEzNy4wOSwxOTMuNjRhNy40Niw3LjQ2LDAsMCwwLDYuMTEtMS4zMiwyMS4zLDIxLjMsMCwwLDAtNi40OS0zLjUyLDkuODYsOS44NiwwLDAsMC02LjIzLjM1czIuOTEsMy42OCw2LjYxLDQuNDkiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0xMzguMjEsMTgwLjM3YTEwLjYsMTAuNiwwLDAsMS0xLjY0LDUuODZjMCwuMDUtMi43LTMuMTUtMi42My02LjZhNy43NSw3Ljc1LDAsMCwxLDIuNDktNS40MSwxNS43NSwxNS43NSwwLDAsMSwxLjc4LDYuMTUiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0xMzAuNTIsMTg2LjM4YTcuMyw3LjMsMCwwLDAsNi4xNC0uMjMsMjAuNTIsMjAuNTIsMCwwLDAtNS42NC00LjU0LDkuNzYsOS43NiwwLDAsMC02LjEyLS43NHMyLjE5LDQuMDksNS42Miw1LjUxIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTM0LDE3My42OGExMC42MiwxMC42MiwwLDAsMS0yLjYzLDUuNDJzLTIuMDctMy41NC0xLjQyLTYuODlhNy42OSw3LjY5LDAsMCwxLDMuMzUtNC44NSwxNS4zNywxNS4zNywwLDAsMSwuNyw2LjMyIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTI1LjQzLDE3OC4xOGE3LjI3LDcuMjcsMCwwLDAsNiwuODYsMjAsMjAsMCwwLDAtNC43MS01LjQyLDkuNzQsOS43NCwwLDAsMC01Ljg1LTEuOHMxLjQ1LDQuMzgsNC41NSw2LjM2Ii8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTMxLDE2Ni4zOWExMC40MiwxMC40MiwwLDAsMS0zLjQ4LDQuODRzLTEuNDMtMy44My0uMjMtN2E3LjQ5LDcuNDksMCwwLDEsNC4wOS00LjE2LDE1LjQ2LDE1LjQ2LDAsMCwxLS4zOCw2LjMxIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTIxLjg1LDE2OS4yOGE3LjIsNy4yLDAsMCwwLDUuNzQsMS45LDIwLjIxLDIwLjIxLDAsMCwwLTMuNy02LjEzLDkuNzksOS43OSwwLDAsMC01LjQzLTIuODFzLjY5LDQuNTUsMy4zOSw3Ii8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTI5LjIzLDE1OC43MWExMC4xMSwxMC4xMSwwLDAsMS00LjIxLDQuMTNzLS43Ni00LC45NC02LjkxYTcuMzUsNy4zNSwwLDAsMSw0LjctMy4zNywxNS4yNSwxNS4yNSwwLDAsMS0xLjQzLDYuMTUiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0xMTkuODMsMTU5LjkyYTcuMjEsNy4yMSwwLDAsMCw1LjMsMi44OSwyMC40MSwyMC40MSwwLDAsMC0yLjYtNi42OCw5LjkyLDkuOTIsMCwwLDAtNC44NC0zLjc1cy0uMDksNC42MiwyLjE0LDcuNTQiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0xMjguODMsMTUwLjgzYTEwLDEwLDAsMCwxLTQuODIsMy4zMnMtLjA4LTQuMDksMi4wOS02LjY2YTcuMTcsNy4xNywwLDAsMSw1LjE3LTIuNDksMTUuNDQsMTUuNDQsMCwwLDEtMi40NCw1LjgzIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTE5LjQyLDE1MC4zNGE3LjMxLDcuMzEsMCwwLDAsNC43MSwzLjgxLDIxLjE1LDIxLjE1LDAsMCwwLTEuNDItNy4wNyw5LjgxLDkuODEsMCwwLDAtNC4xLTQuNThzLS44OCw0LjU1LjgxLDcuODQiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0xMjkuNzksMTQzYTkuNzQsOS43NCwwLDAsMS01LjMsMi40M3MuNjQtNC4wNywzLjIxLTYuMjRhNy4wOCw3LjA4LDAsMCwxLDUuNTItMS41NiwxNi4xNiwxNi4xNiwwLDAsMS0zLjQzLDUuMzciLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0xMjAuNjcsMTQwLjc4YTcuMzIsNy4zMiwwLDAsMCwzLjk0LDQuNjIsMjIsMjIsMCwwLDAtLjE1LTcuMjgsMTAsMTAsMCwwLDAtMy4xNy01LjI5cy0xLjcsNC4zOC0uNjIsNy45NSIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTEzMi4xNCwxMzUuMjdhOS41NSw5LjU1LDAsMCwxLTUuNjIsMS40OHMxLjM1LTMuOTQsNC4zMS01LjY3YTcsNywwLDAsMSw1LjcyLS41OSwxNywxNywwLDAsMS00LjQxLDQuNzgiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0xMjMuNjIsMTMxLjQ4YTcuMzIsNy4zMiwwLDAsMCwzLDUuMzEsMjMuOTEsMjMuOTEsMCwwLDAsMS4yMS03LjMsMTAsMTAsMCwwLDAtMi4wOS01Ljg2cy0yLjUzLDQuMS0yLjEzLDcuODUiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0xMzUuOTQsMTI4YTkuNDEsOS40MSwwLDAsMS01LjgyLjVzMi4xLTMuNzEsNS4zOC00Ljk0YTYuOTQsNi45NCwwLDAsMSw1Ljc4LjM5LDE4LjE1LDE4LjE1LDAsMCwxLTUuMzQsNCIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTEyOC4zMiwxMjIuNjhhNy4yOCw3LjI4LDAsMCwwLDEuOSw1Ljg2LDI1Ljc1LDI1Ljc1LDAsMCwwLDIuNjYtNy4xMiwxMC4yNSwxMC4yNSwwLDAsMC0uODItNi4yN3MtMy4zOSwzLjctMy43NCw3LjUzIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTQxLjIzLDEyMS4yOWE5LjI3LDkuMjcsMCwwLDEtNS44OC0uNDlzMi44Ny0zLjM5LDYuNDItNC4wOGE2LjgyLDYuODIsMCwwLDEsNS43LDEuMzYsMjAsMjAsMCwwLDEtNi4yNCwzLjIxIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTM0LjgxLDExNC42M2E3LjM3LDcuMzcsMCwwLDAsLjYyLDYuMjQsMjksMjksMCwwLDAsNC4yMS02Ljc0LDEwLjc3LDEwLjc3LDAsMCwwLC42MS02LjQ5cy00LjI2LDMuMTgtNS40NCw3Ii8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMjEwLjg1LDExMC4yMkExMC41OCwxMC41OCwwLDAsMSwyMTQsMTE2YTkuMjEsOS4yMSwwLDAsMS05LjM3LTcuOTIsMTAuNjEsMTAuNjEsMCwwLDEsNi4yLDIuMTciLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0xOTYuNDIsMTk0Ljk0YTExLjE0LDExLjE0LDAsMCwwLTIsNi4xMnM0LjQ4LTEuMzksNi4zOS00LjUyYTcuODQsNy44NCwwLDAsMCwuODUtNi4xNiwxOC43LDE4LjcsMCwwLDAtNS4yMSw0LjU2Ii8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMjAwLDIwNC4zOWE3LjcxLDcuNzEsMCwwLDEtNS41OS0zLjQ1LDI0LjY5LDI0LjY5LDAsMCwxLDcuOTQtMS4wOCwxMC4xNywxMC4xNywwLDAsMSw2LDIuNTVjLjA1LDAtNC4zLDIuNTItOC4zNCwyIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMjA0LjE1LDE5MS4xOWExMC45LDEwLjksMCwwLDAtLjY5LDYuMjRzMy45LTIuMDgsNS4xMi01LjQyYTcuODMsNy44MywwLDAsMC0uMzktNi4wOSwxNywxNywwLDAsMC00LDUuMjciLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0yMDkuMzMsMTk5LjcyYTcuNTYsNy41NiwwLDAsMS01LjkzLTIuNCwyMi44NywyMi44NywwLDAsMSw3LjI2LTIuMzYsOS44OCw5Ljg4LDAsMCwxLDYuMTgsMS40NnMtMy42MSwzLjE1LTcuNTEsMy4zIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMjEwLjc1LDE4Ni4yN2ExMC44MSwxMC44MSwwLDAsMCwuNTQsNi4xNXMzLjMxLTIuNjcsMy44Ni02LjEyYTcuODIsNy44MiwwLDAsMC0xLjQ5LTUuODMsMTYuMTEsMTYuMTEsMCwwLDAtMi45MSw1LjgiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0yMTcuMzIsMTkzLjY0YTcuNDYsNy40NiwwLDAsMS02LjExLTEuMzIsMjEuMjcsMjEuMjcsMCwwLDEsNi41LTMuNTIsOS44Myw5LjgzLDAsMCwxLDYuMjIuMzVzLTIuOTEsMy42OC02LjYxLDQuNDkiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0yMTYuMiwxODAuMzdhMTAuNiwxMC42LDAsMCwwLDEuNjQsNS44NmMwLC4wNSwyLjctMy4xNSwyLjYzLTYuNmE3LjgxLDcuODEsMCwwLDAtMi40OC01LjQxLDE1LjQ5LDE1LjQ5LDAsMCwwLTEuNzksNi4xNSIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTIyMy44OSwxODYuMzhhNy4zLDcuMywwLDAsMS02LjE0LS4yMywyMC41MiwyMC41MiwwLDAsMSw1LjY0LTQuNTQsOS43Niw5Ljc2LDAsMCwxLDYuMTItLjc0cy0yLjE5LDQuMDktNS42Miw1LjUxIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMjIwLjQ0LDE3My42OGExMC42MiwxMC42MiwwLDAsMCwyLjYzLDUuNDJzMi4wOC0zLjU0LDEuNDItNi44OWE3LjY1LDcuNjUsMCwwLDAtMy4zNS00Ljg1LDE1LjM3LDE1LjM3LDAsMCwwLS43LDYuMzIiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0yMjksMTc4LjE4YTcuMjcsNy4yNywwLDAsMS02LC44NiwyMCwyMCwwLDAsMSw0LjcxLTUuNDIsOS43NSw5Ljc1LDAsMCwxLDUuODYtMS44cy0xLjQ2LDQuMzgtNC41Niw2LjM2Ii8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMjIzLjQ1LDE2Ni4zOWExMC40MiwxMC40MiwwLDAsMCwzLjQ4LDQuODRzMS40My0zLjgzLjIzLTdhNy40OSw3LjQ5LDAsMCwwLTQuMDktNC4xNiwxNS40NiwxNS40NiwwLDAsMCwuMzgsNi4zMSIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTIzMi41NiwxNjkuMjhhNy4xOSw3LjE5LDAsMCwxLTUuNzMsMS45LDE5Ljc1LDE5Ljc1LDAsMCwxLDMuNy02LjEzLDkuNzMsOS43MywwLDAsMSw1LjQzLTIuODFzLS43LDQuNTUtMy40LDciLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0yMjUuMTgsMTU4LjcxYTEwLjE3LDEwLjE3LDAsMCwwLDQuMjEsNC4xM3MuNzctNC0uOTQtNi45MWE3LjM1LDcuMzUsMCwwLDAtNC43LTMuMzcsMTUuMjUsMTUuMjUsMCwwLDAsMS40Myw2LjE1Ii8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMjM0LjU4LDE1OS45MmE3LjIxLDcuMjEsMCwwLDEtNS4zLDIuODksMjAuNDEsMjAuNDEsMCwwLDEsMi42LTYuNjgsMTAsMTAsMCwwLDEsNC44NC0zLjc1cy4wOSw0LjYyLTIuMTQsNy41NCIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTIyNS41OCwxNTAuODNhMTAsMTAsMCwwLDAsNC44MiwzLjMycy4wOC00LjA5LTIuMDktNi42NmE3LjE3LDcuMTcsMCwwLDAtNS4xNy0yLjQ5LDE1LjQ0LDE1LjQ0LDAsMCwwLDIuNDQsNS44MyIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTIzNSwxNTAuMzRhNy4zMyw3LjMzLDAsMCwxLTQuNywzLjgxLDIxLDIxLDAsMCwxLDEuNDEtNy4wNyw5Ljg3LDkuODcsMCwwLDEsNC4xLTQuNThzLjg4LDQuNTUtLjgxLDcuODQiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0yMjQuNjMsMTQzYTkuNyw5LjcsMCwwLDAsNS4yOSwyLjQzcy0uNjQtNC4wNy0zLjIxLTYuMjRhNy4wNyw3LjA3LDAsMCwwLTUuNTItMS41NiwxNi4wOSwxNi4wOSwwLDAsMCwzLjQ0LDUuMzciLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0yMzMuNzQsMTQwLjc4YTcuMyw3LjMsMCwwLDEtMy45NCw0LjYyLDIyLDIyLDAsMCwxLC4xNS03LjI4LDEwLDEwLDAsMCwxLDMuMTctNS4yOXMxLjcsNC4zOC42Miw3Ljk1Ii8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMjIyLjI3LDEzNS4yN2E5LjU1LDkuNTUsMCwwLDAsNS42MiwxLjQ4cy0xLjM1LTMuOTQtNC4zLTUuNjdhNy4wNyw3LjA3LDAsMCwwLTUuNzMtLjU5LDE3LDE3LDAsMCwwLDQuNDEsNC43OCIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTIzMC43OSwxMzEuNDhhNy4zMiw3LjMyLDAsMCwxLTMsNS4zMSwyMy40MywyMy40MywwLDAsMS0xLjIyLTcuMywxMCwxMCwwLDAsMSwyLjA5LTUuODZzMi41Myw0LjEsMi4xMyw3Ljg1Ii8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMjE4LjQ3LDEyOGE5LjQxLDkuNDEsMCwwLDAsNS44Mi41cy0yLjEtMy43MS01LjM4LTQuOTRhNyw3LDAsMCwwLTUuNzguMzksMTguMTUsMTguMTUsMCwwLDAsNS4zNCw0Ii8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMjI2LjA5LDEyMi42OGE3LjI4LDcuMjgsMCwwLDEtMS45LDUuODYsMjUuNzUsMjUuNzUsMCwwLDEtMi42Ni03LjEyLDEwLjI1LDEwLjI1LDAsMCwxLC44Mi02LjI3czMuMzksMy43LDMuNzQsNy41MyIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTIxMy4xOCwxMjEuMjlhOS4yNyw5LjI3LDAsMCwwLDUuODgtLjQ5Yy4wNSwwLTIuODctMy4zOS02LjQyLTQuMDhhNi44Miw2LjgyLDAsMCwwLTUuNywxLjM2LDIwLDIwLDAsMCwwLDYuMjQsMy4yMSIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTIxOS42LDExNC42M2E3LjM3LDcuMzcsMCwwLDEtLjYyLDYuMjQsMjguOCwyOC44LDAsMCwxLTQuMi02Ljc0LDEwLjczLDEwLjczLDAsMCwxLS42Mi02LjQ5czQuMjYsMy4xOCw1LjQ0LDciLz48cGF0aCBjbGFzcz0iY2xzLTUiIGQ9Ik0yMDguMzYsMTQ0LjU4bC0xMC44Mi03LjMyLDEwLjU5LDUuNjdzLTQuODYtMTYuNjItMTkuOTUtMjAuMjVjMCwwLTMuMzQtMS4zNCwwLDUuNzQsMCwwLDQuNjksNS45MS02LjE0LDEyLjQ3TDE4MCwxMjYuMTZhNS42MSw1LjYxLDAsMCwwLTYuMzQtLjM5bC0xLjgxLjUzLS4yNCw0LDEuNTgtMS4xOC45Mi40MS0xLjcxLDExLjM4Yy0xMC44Mi02LjU2LTYuMTQtMTIuNDctNi4xNC0xMi40NywzLjM5LTcuMDguMDYtNS43NC4wNi01Ljc0LTE1LjEsMy42My0yMCwyMC4yNS0yMCwyMC4yNWwxMC41OS01LjY3LTEwLjgyLDcuMzJhNDguNzYsNDguNzYsMCwwLDAtLjMsNi45M2wxMS43Ny0xMC4zMy0xMS42MywxMi44OWE0MS42NCw0MS42NCwwLDAsMCwuODEsNS40OWwxMi4zNC0xMi4wNi0xMS43NiwxNC4zN2EzMS4zMiwzMS4zMiwwLDAsMCwyLDUuMjNMMTYwLjY2LDE1MGwtMTAuMzMsMTguOWEyNC41OCwyNC41OCwwLDAsMCwyLjQsMy4zM2wxMC45My0yMC4xLTQuMDYsMTAuMTUsMi41NC0xLjQ1LDQuMzMtOS4xMy0yLjY1LDguMjMsMS43OS0xLDMuMzItNy40NS0yLDYuNjMsMi4zOC0xLjYuNTktMy42M0wxNzEsMTU2bC05LjE1LDExLjc5LDEuNjcsMS4zNi0yLjkxLDMuMjhjLTUuMzMtMS4yOS02LjY0LDIuNC02LjY0LDIuNGE0LjgsNC44LDAsMCwxLDQuNTMtLjczYy0zLjUxLDMtMS41Miw1Ljc5LTEuNTIsNS43OS44Mi0zLjc3LDMuNDItNC4yMSwzLjQyLTQuMjFhMy40MywzLjQzLDAsMCwwLDMsNC4zYy0yLjYxLTIuOTMtLjE4LTUuMy0uMTgtNS4zLDMuMDguNTMsMy4zMSwyLjM3LDMuMzEsMi4zNywxLjA1LTMtMi45LTQtMi45LTRsMi4zMi0yLjU3LDEuMjUsMS4yOSw2LjE3LTguODJMMTY2LDE4M2wxLjcyLDUuNTQsNC4zNy0zLjI4LDMuNjctMjEuOTItMi40MiwyMi4wOCwzLjkzLDQuMDYsMy45Mi00LjA2LTIuNDItMjIuMDgsMy42NywyMS45Miw0LjM3LDMuMjgsMS43Mi01LjU0LTcuNDEtMjAuMTMsNi4xNiw4LjgyLDEuMjUtMS4yOSwyLjMyLDIuNTdzLTMuOTUsMS0yLjksNGMwLDAsLjI0LTEuODQsMy4zMS0yLjM3LDAsMCwyLjQzLDIuMzctLjE4LDUuM2EzLjQzLDMuNDMsMCwwLDAsMy00LjNzMi42LjQ0LDMuNDIsNC4yMWMwLDAsMi0yLjc4LTEuNTItNS43OWE0LjgyLDQuODIsMCwwLDEsNC41NC43M3MtMS4zMi0zLjY5LTYuNjUtMi40bC0yLjkxLTMuMjgsMS42Ny0xLjM2TDE4My40NCwxNTZsMS4xNS0zLjA4LjU4LDMuNjMsMi4zOCwxLjYtMi02LjYzLDMuMzMsNy40NSwxLjc4LDFMMTg4LDE1MS43MWw0LjMzLDkuMTMsMi41NCwxLjQ1LTQuMDYtMTAuMTUsMTAuOTMsMjAuMWEyNC41OCwyNC41OCwwLDAsMCwyLjQtMy4zM0wxOTMuNzksMTUwbDExLjMyLDE3LjA5YTI5LjY3LDI5LjY3LDAsMCwwLDItNS4yM0wxOTUuMzcsMTQ3LjVsMTIuMzQsMTIuMDZhNDAsNDAsMCwwLDAsLjgxLTUuNDlMMTk2LjksMTQxLjE4bDExLjc2LDEwLjMzQTQ4Ljc2LDQ4Ljc2LDAsMCwwLDIwOC4zNiwxNDQuNThaIi8+PHBhdGggY2xhc3M9ImNscy02IiBkPSJNMTc3LjIzLDExMC45NGExMi4zOSwxMi4zOSwwLDAsMSw2LjQ3LDEuODFsNS4yLTEyLjU2LTYsNC44NS0xLjI5LDEtLjE0LjFhMi4yNiwyLjI2LDAsMCwxLDEuMTguODcsMi4yOSwyLjI5LDAsMCwxLC4zOSwxLjI2LDIuMjMsMi4yMywwLDAsMS00LjQ2LDB2LTIuNTJhMi4yMiwyLjIyLDAsMCwxLDIuMjMtMi4yMmwtMy41Ni03LjcyLTMuNTYsNy43MmEyLjIxLDIuMjEsMCwwLDEsMi4yMiwyLjIydjIuNTJhMi4yMywyLjIzLDAsMSwxLTQuNDYsMCwyLjI5LDIuMjksMCwwLDEsLjM5LTEuMjYsMi4yNiwyLjI2LDAsMCwxLDEuMTgtLjg3bC0uMTQtLjEtMS4yOS0xLTYtNC44NSw1LjIsMTIuNTZBMTIuNCwxMi40LDAsMCwxLDE3Ny4yMywxMTAuOTRaIi8+PHRleHQgY2xhc3M9ImNscy03IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMjMuMiAzMTIuNzgpIj5CdXNpbmVzczx0c3BhbiB4PSI2LjY2IiB5PSIyNC44NSI+U2NpZW5jZTwvdHNwYW4+PC90ZXh0PjwvZz48L2c+PC9zdmc+'\n\n function handleBack() {\n history.goBack()\n }\n\n function handleAdd() {\n //@ts-ignore\n inputRef.current.click()\n }\n\n function handleOnClick(image: any) {\n dispatch(setRewardImage(image))\n history.goBack()\n }\n\n function handleRewardImage(event: ChangeEvent) {\n const reader = new FileReader();\n if (event.target.files && event.target.files[0]) {\n if (event.target.files[0].type === 'image/svg+xml') {\n const img = event.target.files[0];\n reader.onloadend = () => {\n const imageData: string = reader.result as string\n dispatch(setRewardImage(imageData))\n }\n reader.readAsDataURL(img);\n history.push(VIEWS.ISSUE)\n } else {\n // setAlertOpen({ open: true, title: \"Error\", content: \"Reward image should be a SVG\" })\n }\n\n }\n }\n\n return (\n \n \n
\n \n
\n \n
\n { handleOnClick(badgeGold) }} badgeType={badgeGold} />\n { handleOnClick(badgeSilver) }} badgeType={badgeSilver} />\n { handleOnClick(badgeBronze) }} badgeType={badgeBronze} />\n { handleOnClick(badgeAdvancedDiploma) }} badgeType={badgeAdvancedDiploma} />\n { handleOnClick(badgeDiploma) }} badgeType={badgeDiploma} />\n { handleOnClick(badgeCertificate) }} badgeType={badgeCertificate} />\n { handleOnClick(badgeFoundation) }} badgeType={badgeFoundation} />\n
\n
\n
\n {/* */}\n
\n );\n}\n","export default __webpack_public_path__ + \"static/media/certificateSignature.a704478f.png\";","import React from 'react';\nimport { useHistory } from 'react-router-dom';\nimport TopNavigationHeader from '../components/TopNavigationHeader';\nimport { VIEWS } from '../utils';\nimport Certificate from '../components/Certificate';\nimport CertificateSignature from '../Assets/certificateSignature.png'\n\n\nexport default function RewardCertificateView() {\n const certificate = {\n userName: \"Thomas Miller\",\n linkedInUrl: \"www.linkedin.com/in/thomasmiller\",\n issuedDate: \"05/12/21\",\n CustomAttributes: \"Custom Attribute\",\n title: \"Certificate of Mastery\",\n description: \"Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.\",\n signature_one: CertificateSignature,\n signature_two: CertificateSignature,\n signature_title_one: \"Signature Title\",\n signature_title_two: \"Signature Title\",\n }\n\n const history = useHistory()\n\n function handleBack() {\n history.push(VIEWS.HOME)\n }\n\n return (\n \n
\n \n
\n \n
\n
\n
\n );\n}\n","import {\n BrowserRouter as Router,\n Switch,\n Route,\n Redirect\n} from \"react-router-dom\";\n\nimport Onbording from './Views/1.0 Onbording'\nimport Signin from \"./Views/1.1 Signin\";\nimport Signup from \"./Views/1.2 Signup\";\nimport Home from './Views/2.0 Home'\nimport MyProfile from './Views/2.1 MyProfile';\nimport MyContacts from './Views/2.2 MyContacts';\nimport ContactsProfile from './Views/2.2.1 ContactsProfile';\nimport GlobalContactProfile from './Views/2.2.3 GlobalContactProfile';\nimport ReceivedRequests from './Views/2.4 ReceivedRequests';\nimport PrepareReward from './Views/2.4.1 PrepareReward'\nimport ReceivedRewards from './Views/2.5 ReceivedRewards';\nimport ReceivedRewardPreview from './Views/2.5.1 ReceivedRewardPreview';\nimport RequestReward from \"./Views/2.5.2 RequestReward\";\nimport MyRewards from \"./Views/2.6 MyRewards\";\nimport MyRewardPreview from './Views/2.6.1 MyRewardPreview';\nimport IssuedRewardPreview from './Views/2.6.3 IssuedRewardPreview';\nimport TrophyCase from './Views/2.7 TrophyCase';\nimport ReceivedRewardPreviewTrophyCase from './Views/2.7.1 ReceivedRewardPreviewTrophyCase';\nimport ReceivedRewardPreviewTrophyCasePublic from './Views/2.7.3 ReceivedRewardPreviewPublicTrophyCase';\nimport TrophyCasePublicView from './Views/2.7.2 TrophyCasePublicView';\nimport Verifier from './Views/2.8.1 VerifiedReward';\nimport InviteCollegues from './Views/2.9 InviteCollegues';\nimport SignedX from './Views/SignedX';\nimport ViewMyId from './Views/2.1.1 ViewMyId';\nimport Callback from \"./Views/Callback\";\nimport Presenter from './Views/Presenter';\nimport SeeMore from \"./Views/2.8.3 VerificationDetailsVC\";\nimport VerifyDomain from \"./Views/5.0 ClaimIDByDomain\";\nimport VerifyReward from './Views/VerifyReward'\n\nimport { useAppSelector } from './app/hooks';\n\nimport { VIEWS } from './utils'\nimport { _isIdentityCreated } from './redux/identitySlice';\nimport { _vc } from './redux/signerSlice';\nimport { _vp } from './redux/presenterSlice';\n\nimport './Style/App.scss'\nimport './Style/Responsive.scss'\nimport { _isVerified } from \"./redux/verifierSlice\";\nimport GeneratedRewardPreview from \"./Views/2.4.1.2 GeneratedRewardPreview\";\nimport Notifications from \"./Views/2.3 Notifications\";\nimport BadgeTemplates from \"./Views/2.4.1.1 BadgeTemplates\";\nimport RewardCertificateView from \"./Views/RewardCertificateView\";\n\nexport default function App() {\n\n const vc = useAppSelector(_vc)\n const vp = useAppSelector(_vp)\n const isIdentityCreated = useAppSelector(_isIdentityCreated);\n\n return (\n \n \n \n {isIdentityCreated ? : }\n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n {isIdentityCreated ? : }\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 \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\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 {isIdentityCreated ? : }\n \n\n \n {isIdentityCreated ? : }\n \n\n \n \n \n\n \n {isIdentityCreated ? : }\n \n\n \n {isIdentityCreated && vc !== '' ? : }\n \n\n \n {isIdentityCreated && vp !== '' ? : }\n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n

404

\n
\n\n
\n
\n );\n}\n","import { configureStore, ThunkAction, Action } from '@reduxjs/toolkit';\nimport identityReducer from '../redux/identitySlice';\nimport signerReducer from '../redux/signerSlice';\nimport presenterReducer from '../redux/presenterSlice';\nimport verifierReducer from '../redux/verifierSlice';\nimport myRewardsReducer from '../redux/myRewardsSlice';\n\nexport const store = configureStore({\n reducer: {\n identity: identityReducer,\n signer: signerReducer,\n presenter: presenterReducer,\n verifier: verifierReducer,\n myRewards: myRewardsReducer\n },\n});\n\nexport type AppDispatch = typeof store.dispatch;\nexport type RootState = ReturnType;\nexport type AppThunk = ThunkAction<\n ReturnType,\n RootState,\n unknown,\n Action\n>;\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.0/8 are considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\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.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 headers: { 'Service-Worker': 'script' },\n })\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 (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\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(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready\n .then((registration) => {\n registration.unregister();\n })\n .catch((error) => {\n console.error(error.message);\n });\n }\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport './index.scss';\nimport App from './App';\nimport { store } from './app/store';\nimport { Provider } from 'react-redux';\nimport * as serviceWorker from './serviceWorker';\n\nReactDOM.render(\n \n \n \n \n ,\n document.getElementById('root')\n);\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","import React, { Component } from 'react'\nimport logo from '../Assets/logo.svg'\n\n\nfunction Logo() {\n return(\n
\n \n
\n );\n}\n\nexport default Logo;","export default __webpack_public_path__ + \"static/media/copy.54a6ee34.svg\";","export default __webpack_public_path__ + \"static/media/logo.16aec02c.svg\";","import { TypedUseSelectorHook, useDispatch, useSelector } from 'react-redux';\nimport type { RootState, AppDispatch } from './store';\n\n// Use throughout your app instead of plain `useDispatch` and `useSelector`\nexport const useAppDispatch = () => useDispatch();\nexport const useAppSelector: TypedUseSelectorHook = useSelector;\n","export default __webpack_public_path__ + \"static/media/correctMark.3841b489.svg\";","import { createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport { RootState } from '../app/store';\n\nexport interface IdentityState {\n mnemonic: string;\n image: string;\n name: string;\n email: string;\n receivingPrivateKey: string;\n receivingDID: string;\n rewardingPrivateKey: string;\n rewardingDID: string;\n isIdentityCreated: boolean;\n domainVerified: boolean;\n verifiedDomain: string;\n}\n\nlet identityState;\n\ntry {\n identityState = sessionStorage.getItem(\"identityState\") !== null ? JSON.parse(sessionStorage.getItem(\"identityState\") as string) : undefined\n} catch (err) {\n identityState = undefined\n}\n\n\nconst initialState: IdentityState = identityState ||\n{\n mnemonic: '',\n image: '',\n name: '',\n email: '',\n receivingPrivateKey: '',\n receivingDID: '',\n rewardingPrivateKey: '',\n rewardingDID: '',\n isIdentityCreated: false\n};\n\nexport const identitySlice = createSlice({\n name: 'identity',\n initialState,\n reducers: {\n setMnemonic: (state, action: PayloadAction) => {\n state.mnemonic = action.payload;\n sessionStorage.setItem(\"identityState\", JSON.stringify({ ...state, mnemonic: action.payload }))\n },\n setImage: (state, action: PayloadAction) => {\n state.image = action.payload;\n sessionStorage.setItem(\"identityState\", JSON.stringify({ ...state, image: action.payload }))\n },\n setName: (state, action: PayloadAction) => {\n state.name = action.payload;\n sessionStorage.setItem(\"identityState\", JSON.stringify({ ...state, name: action.payload }))\n },\n setEmail: (state, action: PayloadAction) => {\n state.email = action.payload;\n sessionStorage.setItem(\"identityState\", JSON.stringify({ ...state, email: action.payload }))\n },\n setHolderPrivateKey: (state, action: PayloadAction) => {\n state.receivingPrivateKey = action.payload;\n sessionStorage.setItem(\"identityState\", JSON.stringify({ ...state, holderPrivateKey: action.payload }))\n },\n setHolderDID: (state, action: PayloadAction) => {\n state.receivingDID = action.payload;\n sessionStorage.setItem(\"identityState\", JSON.stringify({ ...state, holderDID: action.payload }))\n },\n setIssuerPrivateKey: (state, action: PayloadAction) => {\n state.rewardingPrivateKey = action.payload;\n sessionStorage.setItem(\"identityState\", JSON.stringify({ ...state, IssuerPrivateKey: action.payload }))\n },\n setIssuerDID: (state, action: PayloadAction) => {\n state.rewardingDID = action.payload;\n sessionStorage.setItem(\"identityState\", JSON.stringify({ ...state, issuerDID: action.payload }))\n },\n setIsIdentityCreated: (state, action: PayloadAction) => {\n state.isIdentityCreated = action.payload;\n sessionStorage.setItem(\"identityState\", JSON.stringify({ ...state, isIdentityCreated: action.payload }))\n },\n },\n});\n\nexport const { setMnemonic, setImage, setName, setEmail, setHolderPrivateKey, setHolderDID, setIssuerPrivateKey, setIssuerDID, setIsIdentityCreated } = identitySlice.actions;\n\nexport const _mnemonic = (state: RootState) => state.identity.mnemonic;\nexport const _image = (state: RootState) => state.identity.image;\nexport const _name = (state: RootState) => state.identity.name;\nexport const _email = (state: RootState) => state.identity.email;\nexport const _receivingPrivateKey = (state: RootState) => state.identity.receivingPrivateKey;\nexport const _receivingDID = (state: RootState) => state.identity.receivingDID;\nexport const _rewardingPrivateKey = (state: RootState) => state.identity.rewardingPrivateKey;\nexport const _rewardingDID = (state: RootState) => state.identity.rewardingDID;\nexport const _isIdentityCreated = (state: RootState) => state.identity.isIdentityCreated;\n\nexport default identitySlice.reducer;\n"],"sourceRoot":""}