feat: extend privacy and terms (#2623)
* initial iteration * add logging * added hook * polish * remove unused import * add hash * addressed pr feedback * remove autorouter icon * use firebase store * style * adjust recat ga * log remove liquidity * update copy * addressed pr feedback * addressed pr feedback * prevent privacy content from dismissing modal * make top-level key origin * use hostname * restore trm
This commit is contained in:
parent
36cfe627f1
commit
abe6bf500c
@ -2,3 +2,4 @@ REACT_APP_INFURA_KEY="099fc58e0de9451d80b18d7c74caa7c1"
|
|||||||
REACT_APP_PORTIS_ID="c0e2bf01-4b08-4fd5-ac7b-8e26b58cd236"
|
REACT_APP_PORTIS_ID="c0e2bf01-4b08-4fd5-ac7b-8e26b58cd236"
|
||||||
REACT_APP_FORTMATIC_KEY="pk_live_F937DF033A1666BF"
|
REACT_APP_FORTMATIC_KEY="pk_live_F937DF033A1666BF"
|
||||||
REACT_APP_GOOGLE_ANALYTICS_ID="UA-128182339-4"
|
REACT_APP_GOOGLE_ANALYTICS_ID="UA-128182339-4"
|
||||||
|
REACT_APP_FIREBASE_KEY="AIzaSyBcZWwTcTJHj_R6ipZcrJkXdq05PuX0Rs0"
|
||||||
|
@ -88,6 +88,7 @@
|
|||||||
"eslint-plugin-react-hooks": "^4.0.0",
|
"eslint-plugin-react-hooks": "^4.0.0",
|
||||||
"eslint-plugin-simple-import-sort": "^7.0.0",
|
"eslint-plugin-simple-import-sort": "^7.0.0",
|
||||||
"ethers": "^5.4.6",
|
"ethers": "^5.4.6",
|
||||||
|
"firebase": "^9.1.3",
|
||||||
"graphql": "^15.5.0",
|
"graphql": "^15.5.0",
|
||||||
"graphql-request": "^3.4.0",
|
"graphql-request": "^3.4.0",
|
||||||
"inter-ui": "^3.13.1",
|
"inter-ui": "^3.13.1",
|
||||||
|
@ -1,12 +1,24 @@
|
|||||||
// eslint-disable-next-line no-restricted-imports
|
// eslint-disable-next-line no-restricted-imports
|
||||||
import { t } from '@lingui/macro'
|
import { t, Trans } from '@lingui/macro'
|
||||||
import { Trans } from '@lingui/macro'
|
import { PrivacyPolicyModal } from 'components/PrivacyPolicy'
|
||||||
import { CHAIN_INFO, L2_CHAIN_IDS, SupportedChainId } from 'constants/chains'
|
import { CHAIN_INFO, L2_CHAIN_IDS, SupportedChainId } from 'constants/chains'
|
||||||
import { LOCALE_LABEL, SUPPORTED_LOCALES, SupportedLocale } from 'constants/locales'
|
import { LOCALE_LABEL, SUPPORTED_LOCALES, SupportedLocale } from 'constants/locales'
|
||||||
import { useActiveLocale } from 'hooks/useActiveLocale'
|
import { useActiveLocale } from 'hooks/useActiveLocale'
|
||||||
import { useLocationLinkProps } from 'hooks/useLocationLinkProps'
|
import { useLocationLinkProps } from 'hooks/useLocationLinkProps'
|
||||||
import React, { useEffect, useRef, useState } from 'react'
|
import React, { useEffect, useRef, useState } from 'react'
|
||||||
import { BookOpen, Check, ChevronLeft, Code, Globe, Info, MessageCircle, Moon, PieChart, Sun } from 'react-feather'
|
import {
|
||||||
|
BookOpen,
|
||||||
|
Check,
|
||||||
|
ChevronLeft,
|
||||||
|
Code,
|
||||||
|
FileText,
|
||||||
|
Globe,
|
||||||
|
Info,
|
||||||
|
MessageCircle,
|
||||||
|
Moon,
|
||||||
|
PieChart,
|
||||||
|
Sun,
|
||||||
|
} from 'react-feather'
|
||||||
import { Link } from 'react-router-dom'
|
import { Link } from 'react-router-dom'
|
||||||
import { useDarkModeManager } from 'state/user/hooks'
|
import { useDarkModeManager } from 'state/user/hooks'
|
||||||
import styled, { css } from 'styled-components/macro'
|
import styled, { css } from 'styled-components/macro'
|
||||||
@ -202,8 +214,9 @@ export default function Menu() {
|
|||||||
|
|
||||||
const node = useRef<HTMLDivElement>()
|
const node = useRef<HTMLDivElement>()
|
||||||
const open = useModalOpen(ApplicationModal.MENU)
|
const open = useModalOpen(ApplicationModal.MENU)
|
||||||
const toggle = useToggleModal(ApplicationModal.MENU)
|
const toggleMenu = useToggleModal(ApplicationModal.MENU)
|
||||||
useOnClickOutside(node, open ? toggle : undefined)
|
useOnClickOutside(node, open ? toggleMenu : undefined)
|
||||||
|
const togglePrivacyPolicy = useToggleModal(ApplicationModal.PRIVACY_POLICY)
|
||||||
const openClaimModal = useToggleModal(ApplicationModal.ADDRESS_CLAIM)
|
const openClaimModal = useToggleModal(ApplicationModal.ADDRESS_CLAIM)
|
||||||
const showUNIClaimOption = Boolean(!!account && !!chainId && !L2_CHAIN_IDS.includes(chainId))
|
const showUNIClaimOption = Boolean(!!account && !!chainId && !L2_CHAIN_IDS.includes(chainId))
|
||||||
const { infoLink } = CHAIN_INFO[chainId ? chainId : SupportedChainId.MAINNET]
|
const { infoLink } = CHAIN_INFO[chainId ? chainId : SupportedChainId.MAINNET]
|
||||||
@ -217,9 +230,10 @@ export default function Menu() {
|
|||||||
}, [open])
|
}, [open])
|
||||||
|
|
||||||
return (
|
return (
|
||||||
// https://github.com/DefinitelyTyped/DefinitelyTyped/issues/30451
|
<>
|
||||||
|
{/* // https://github.com/DefinitelyTyped/DefinitelyTyped/issues/30451 */}
|
||||||
<StyledMenu ref={node as any}>
|
<StyledMenu ref={node as any}>
|
||||||
<StyledMenuButton onClick={toggle} aria-label={t`Menu`}>
|
<StyledMenuButton onClick={toggleMenu} aria-label={t`Menu`}>
|
||||||
<StyledMenuIcon />
|
<StyledMenuIcon />
|
||||||
</StyledMenuButton>
|
</StyledMenuButton>
|
||||||
|
|
||||||
@ -272,6 +286,12 @@ export default function Menu() {
|
|||||||
<div>{darkMode ? <Trans>Light Theme</Trans> : <Trans>Dark Theme</Trans>}</div>
|
<div>{darkMode ? <Trans>Light Theme</Trans> : <Trans>Dark Theme</Trans>}</div>
|
||||||
{darkMode ? <Moon opacity={0.6} size={16} /> : <Sun opacity={0.6} size={16} />}
|
{darkMode ? <Moon opacity={0.6} size={16} /> : <Sun opacity={0.6} size={16} />}
|
||||||
</ToggleMenuItem>
|
</ToggleMenuItem>
|
||||||
|
<ToggleMenuItem onClick={() => togglePrivacyPolicy()}>
|
||||||
|
<div>
|
||||||
|
<Trans>Legal & Privacy</Trans>
|
||||||
|
</div>
|
||||||
|
<FileText opacity={0.6} size={16} />
|
||||||
|
</ToggleMenuItem>
|
||||||
{showUNIClaimOption && (
|
{showUNIClaimOption && (
|
||||||
<UNIbutton
|
<UNIbutton
|
||||||
onClick={openClaimModal}
|
onClick={openClaimModal}
|
||||||
@ -288,6 +308,8 @@ export default function Menu() {
|
|||||||
}
|
}
|
||||||
})()}
|
})()}
|
||||||
</StyledMenu>
|
</StyledMenu>
|
||||||
|
<PrivacyPolicyModal />
|
||||||
|
</>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
169
src/components/PrivacyPolicy/index.tsx
Normal file
169
src/components/PrivacyPolicy/index.tsx
Normal file
@ -0,0 +1,169 @@
|
|||||||
|
import { Trans } from '@lingui/macro'
|
||||||
|
import Card, { DarkGreyCard } from 'components/Card'
|
||||||
|
import { AutoRow, RowBetween } from 'components/Row'
|
||||||
|
import { useEffect, useRef } from 'react'
|
||||||
|
import { ArrowDown, Info, X } from 'react-feather'
|
||||||
|
import ReactGA from 'react-ga'
|
||||||
|
import styled from 'styled-components/macro'
|
||||||
|
import { ExternalLink, TYPE } from 'theme'
|
||||||
|
import { isMobile } from 'utils/userAgent'
|
||||||
|
|
||||||
|
import { useModalOpen, useTogglePrivacyPolicy } from '../../state/application/hooks'
|
||||||
|
import { ApplicationModal } from '../../state/application/reducer'
|
||||||
|
import { AutoColumn } from '../Column'
|
||||||
|
import Modal from '../Modal'
|
||||||
|
|
||||||
|
const Wrapper = styled.div`
|
||||||
|
max-height: 70vh;
|
||||||
|
overflow: auto;
|
||||||
|
padding: 0 1rem;
|
||||||
|
`
|
||||||
|
|
||||||
|
const StyledExternalCard = styled(Card)`
|
||||||
|
background-color: ${({ theme }) => theme.primary5};
|
||||||
|
padding: 0.5rem;
|
||||||
|
width: 100%;
|
||||||
|
|
||||||
|
:hover,
|
||||||
|
:focus,
|
||||||
|
:active {
|
||||||
|
background-color: ${({ theme }) => theme.primary4};
|
||||||
|
}
|
||||||
|
`
|
||||||
|
|
||||||
|
const HoverText = styled.div`
|
||||||
|
text-decoration: none;
|
||||||
|
color: ${({ theme }) => theme.text1};
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
:hover {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
`
|
||||||
|
|
||||||
|
const StyledLinkOut = styled(ArrowDown)`
|
||||||
|
transform: rotate(230deg);
|
||||||
|
`
|
||||||
|
|
||||||
|
const EXTERNAL_APIS = [
|
||||||
|
{
|
||||||
|
name: 'Auto Router',
|
||||||
|
description: <Trans>The app fetches the optimal trade route from a Uniswap Labs server.</Trans>,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'Infura',
|
||||||
|
description: <Trans>The app fetches on-chain data and constructs contract calls with an Infura API.</Trans>,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'TRM Labs',
|
||||||
|
description: (
|
||||||
|
<Trans>
|
||||||
|
The app securely collects your wallet address and shares it with TRM Labs Inc. for risk and compliance reasons.
|
||||||
|
</Trans>
|
||||||
|
),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'Google Analytics',
|
||||||
|
description: <Trans>The app logs anonymized usage statistics in order to improve over time.</Trans>,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'The Graph',
|
||||||
|
description: <Trans>The app fetches blockchain data from The Graph’s hosted service.</Trans>,
|
||||||
|
},
|
||||||
|
]
|
||||||
|
|
||||||
|
export function PrivacyPolicyModal() {
|
||||||
|
const node = useRef<HTMLDivElement>()
|
||||||
|
const open = useModalOpen(ApplicationModal.PRIVACY_POLICY)
|
||||||
|
const toggle = useTogglePrivacyPolicy()
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (!open) return
|
||||||
|
|
||||||
|
ReactGA.event({
|
||||||
|
category: 'Modal',
|
||||||
|
action: 'Show Legal',
|
||||||
|
})
|
||||||
|
}, [open])
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Modal isOpen={open} onDismiss={() => toggle()}>
|
||||||
|
<AutoColumn gap="12px" ref={node as any}>
|
||||||
|
<RowBetween padding="1rem 1rem 0.5rem 1rem">
|
||||||
|
<TYPE.mediumHeader>
|
||||||
|
<Trans>Legal & Privacy</Trans>
|
||||||
|
</TYPE.mediumHeader>
|
||||||
|
<HoverText onClick={() => toggle()}>
|
||||||
|
<X size={24} />
|
||||||
|
</HoverText>
|
||||||
|
</RowBetween>
|
||||||
|
<PrivacyPolicy />
|
||||||
|
</AutoColumn>
|
||||||
|
</Modal>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export function PrivacyPolicy() {
|
||||||
|
return (
|
||||||
|
<Wrapper
|
||||||
|
draggable="true"
|
||||||
|
onTouchMove={(e) => {
|
||||||
|
// prevent modal gesture handler from dismissing modal when content is scrolling
|
||||||
|
if (isMobile) {
|
||||||
|
e.stopPropagation()
|
||||||
|
}
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<AutoColumn gap="16px">
|
||||||
|
<AutoColumn gap="8px" style={{ width: '100%' }}>
|
||||||
|
<StyledExternalCard>
|
||||||
|
<ExternalLink href={'https://uniswap.org/terms-of-service'}>
|
||||||
|
<RowBetween>
|
||||||
|
<AutoRow gap="4px">
|
||||||
|
<Info size={20} />
|
||||||
|
<TYPE.main fontSize={14} color={'primaryText1'}>
|
||||||
|
<Trans>Uniswap Labs' Terms of Service</Trans>
|
||||||
|
</TYPE.main>
|
||||||
|
</AutoRow>
|
||||||
|
<StyledLinkOut size={20} />
|
||||||
|
</RowBetween>
|
||||||
|
</ExternalLink>
|
||||||
|
</StyledExternalCard>
|
||||||
|
<StyledExternalCard>
|
||||||
|
<ExternalLink href={'https://uniswap.org/disclaimer/'}>
|
||||||
|
<RowBetween>
|
||||||
|
<AutoRow gap="4px">
|
||||||
|
<Info size={20} />
|
||||||
|
<TYPE.main fontSize={14} color={'primaryText1'}>
|
||||||
|
<Trans>Protocol Disclaimer</Trans>
|
||||||
|
</TYPE.main>
|
||||||
|
</AutoRow>
|
||||||
|
<StyledLinkOut size={20} />
|
||||||
|
</RowBetween>
|
||||||
|
</ExternalLink>
|
||||||
|
</StyledExternalCard>
|
||||||
|
</AutoColumn>
|
||||||
|
<TYPE.main fontSize={14}>
|
||||||
|
<Trans>This app uses the following third-party APIs:</Trans>
|
||||||
|
</TYPE.main>
|
||||||
|
<AutoColumn gap="12px">
|
||||||
|
{EXTERNAL_APIS.map(({ name, description }, i) => (
|
||||||
|
<DarkGreyCard key={i}>
|
||||||
|
<AutoColumn gap="8px">
|
||||||
|
<AutoRow gap="4px">
|
||||||
|
<Info size={18} />
|
||||||
|
<TYPE.main fontSize={14} color={'text1'}>
|
||||||
|
{name}
|
||||||
|
</TYPE.main>
|
||||||
|
</AutoRow>
|
||||||
|
<TYPE.main fontSize={14}>{description}</TYPE.main>
|
||||||
|
</AutoColumn>
|
||||||
|
</DarkGreyCard>
|
||||||
|
))}
|
||||||
|
<div />
|
||||||
|
</AutoColumn>
|
||||||
|
</AutoColumn>
|
||||||
|
</Wrapper>
|
||||||
|
)
|
||||||
|
}
|
@ -2,9 +2,12 @@ import { Trans } from '@lingui/macro'
|
|||||||
import { AbstractConnector } from '@web3-react/abstract-connector'
|
import { AbstractConnector } from '@web3-react/abstract-connector'
|
||||||
import { UnsupportedChainIdError, useWeb3React } from '@web3-react/core'
|
import { UnsupportedChainIdError, useWeb3React } from '@web3-react/core'
|
||||||
import { WalletConnectConnector } from '@web3-react/walletconnect-connector'
|
import { WalletConnectConnector } from '@web3-react/walletconnect-connector'
|
||||||
import { AutoRow } from 'components/Row'
|
import { AutoColumn } from 'components/Column'
|
||||||
|
import { PrivacyPolicy } from 'components/PrivacyPolicy'
|
||||||
|
import Row, { AutoRow, RowBetween } from 'components/Row'
|
||||||
|
import { useMonitoringEventCallback } from 'hooks/useMonitoringEventCallback'
|
||||||
import { useEffect, useState } from 'react'
|
import { useEffect, useState } from 'react'
|
||||||
import { ArrowLeft } from 'react-feather'
|
import { ArrowLeft, ArrowRight, Info } from 'react-feather'
|
||||||
import ReactGA from 'react-ga'
|
import ReactGA from 'react-ga'
|
||||||
import styled from 'styled-components/macro'
|
import styled from 'styled-components/macro'
|
||||||
|
|
||||||
@ -19,7 +22,7 @@ import { ApplicationModal } from '../../state/application/reducer'
|
|||||||
import { ExternalLink, TYPE } from '../../theme'
|
import { ExternalLink, TYPE } from '../../theme'
|
||||||
import { isMobile } from '../../utils/userAgent'
|
import { isMobile } from '../../utils/userAgent'
|
||||||
import AccountDetails from '../AccountDetails'
|
import AccountDetails from '../AccountDetails'
|
||||||
import { LightCard } from '../Card'
|
import Card, { LightCard } from '../Card'
|
||||||
import Modal from '../Modal'
|
import Modal from '../Modal'
|
||||||
import Option from './Option'
|
import Option from './Option'
|
||||||
import PendingView from './PendingView'
|
import PendingView from './PendingView'
|
||||||
@ -106,11 +109,22 @@ const HoverText = styled.div`
|
|||||||
}
|
}
|
||||||
`
|
`
|
||||||
|
|
||||||
|
const LinkCard = styled(Card)`
|
||||||
|
background-color: ${({ theme }) => theme.primary1};
|
||||||
|
color: ${({ theme }) => theme.white};
|
||||||
|
|
||||||
|
:hover {
|
||||||
|
cursor: pointer;
|
||||||
|
filter: brightness(0.9);
|
||||||
|
}
|
||||||
|
`
|
||||||
|
|
||||||
const WALLET_VIEWS = {
|
const WALLET_VIEWS = {
|
||||||
OPTIONS: 'options',
|
OPTIONS: 'options',
|
||||||
OPTIONS_SECONDARY: 'options_secondary',
|
OPTIONS_SECONDARY: 'options_secondary',
|
||||||
ACCOUNT: 'account',
|
ACCOUNT: 'account',
|
||||||
PENDING: 'pending',
|
PENDING: 'pending',
|
||||||
|
LEGAL: 'legal',
|
||||||
}
|
}
|
||||||
|
|
||||||
export default function WalletModal({
|
export default function WalletModal({
|
||||||
@ -126,6 +140,7 @@ export default function WalletModal({
|
|||||||
const { active, account, connector, activate, error } = useWeb3React()
|
const { active, account, connector, activate, error } = useWeb3React()
|
||||||
|
|
||||||
const [walletView, setWalletView] = useState(WALLET_VIEWS.ACCOUNT)
|
const [walletView, setWalletView] = useState(WALLET_VIEWS.ACCOUNT)
|
||||||
|
const previousWalletView = usePrevious(walletView)
|
||||||
|
|
||||||
const [pendingWallet, setPendingWallet] = useState<AbstractConnector | undefined>()
|
const [pendingWallet, setPendingWallet] = useState<AbstractConnector | undefined>()
|
||||||
|
|
||||||
@ -136,6 +151,8 @@ export default function WalletModal({
|
|||||||
|
|
||||||
const previousAccount = usePrevious(account)
|
const previousAccount = usePrevious(account)
|
||||||
|
|
||||||
|
const logMonitoringEvent = useMonitoringEventCallback()
|
||||||
|
|
||||||
// close on connection, when logged out before
|
// close on connection, when logged out before
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (account && !previousAccount && walletModalOpen) {
|
if (account && !previousAccount && walletModalOpen) {
|
||||||
@ -183,7 +200,12 @@ export default function WalletModal({
|
|||||||
}
|
}
|
||||||
|
|
||||||
connector &&
|
connector &&
|
||||||
activate(connector, undefined, true).catch((error) => {
|
activate(connector, undefined, true)
|
||||||
|
.then(async () => {
|
||||||
|
const walletAddress = await connector.getAccount()
|
||||||
|
logMonitoringEvent('wallet connected', { walletAddress })
|
||||||
|
})
|
||||||
|
.catch((error) => {
|
||||||
if (error instanceof UnsupportedChainIdError) {
|
if (error instanceof UnsupportedChainIdError) {
|
||||||
activate(connector) // a little janky...can't use setError because the connector isn't set
|
activate(connector) // a little janky...can't use setError because the connector isn't set
|
||||||
} else {
|
} else {
|
||||||
@ -307,6 +329,27 @@ export default function WalletModal({
|
|||||||
</UpperSection>
|
</UpperSection>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
if (walletView === WALLET_VIEWS.LEGAL) {
|
||||||
|
return (
|
||||||
|
<UpperSection>
|
||||||
|
<HeaderRow>
|
||||||
|
<HoverText
|
||||||
|
onClick={() => {
|
||||||
|
setWalletView(previousWalletView ?? WALLET_VIEWS.ACCOUNT)
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<ArrowLeft />
|
||||||
|
</HoverText>
|
||||||
|
<Row justify="center">
|
||||||
|
<TYPE.mediumHeader>
|
||||||
|
<Trans>Legal & Privacy</Trans>
|
||||||
|
</TYPE.mediumHeader>
|
||||||
|
</Row>
|
||||||
|
</HeaderRow>
|
||||||
|
<PrivacyPolicy />
|
||||||
|
</UpperSection>
|
||||||
|
)
|
||||||
|
}
|
||||||
if (account && walletView === WALLET_VIEWS.ACCOUNT) {
|
if (account && walletView === WALLET_VIEWS.ACCOUNT) {
|
||||||
return (
|
return (
|
||||||
<AccountDetails
|
<AccountDetails
|
||||||
@ -337,24 +380,36 @@ export default function WalletModal({
|
|||||||
) : (
|
) : (
|
||||||
<HeaderRow>
|
<HeaderRow>
|
||||||
<HoverText>
|
<HoverText>
|
||||||
<Trans>Connect to a wallet</Trans>
|
<Trans>Connect a wallet</Trans>
|
||||||
</HoverText>
|
</HoverText>
|
||||||
</HeaderRow>
|
</HeaderRow>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
<ContentWrapper>
|
<ContentWrapper>
|
||||||
<LightCard style={{ marginBottom: '16px' }}>
|
<AutoColumn gap="16px">
|
||||||
|
<LightCard>
|
||||||
<AutoRow style={{ flexWrap: 'nowrap' }}>
|
<AutoRow style={{ flexWrap: 'nowrap' }}>
|
||||||
<TYPE.black fontSize={14}>
|
<TYPE.black fontSize={14}>
|
||||||
<Trans>
|
<Trans>
|
||||||
By connecting a wallet, you agree to Uniswap Labs’{' '}
|
By connecting a wallet, you agree to Uniswap Labs’{' '}
|
||||||
<ExternalLink href="https://uniswap.org/terms-of-service/">Terms of Service</ExternalLink> and
|
<ExternalLink href="https://uniswap.org/terms-of-service/">Terms of Service</ExternalLink> and
|
||||||
acknowledge that you have read and understand the{' '}
|
acknowledge that you have read and understand the Uniswap{' '}
|
||||||
<ExternalLink href="https://uniswap.org/disclaimer/">Uniswap protocol disclaimer</ExternalLink>.
|
<ExternalLink href="https://uniswap.org/disclaimer/">Protocol Disclaimer</ExternalLink>.
|
||||||
</Trans>
|
</Trans>
|
||||||
</TYPE.black>
|
</TYPE.black>
|
||||||
</AutoRow>
|
</AutoRow>
|
||||||
</LightCard>
|
</LightCard>
|
||||||
|
<LinkCard padding=".5rem" $borderRadius=".75rem" onClick={() => setWalletView(WALLET_VIEWS.LEGAL)}>
|
||||||
|
<RowBetween>
|
||||||
|
<AutoRow gap="4px">
|
||||||
|
<Info size={20} />
|
||||||
|
<TYPE.white fontSize={14}>
|
||||||
|
<Trans>How this app uses APIs</Trans>
|
||||||
|
</TYPE.white>
|
||||||
|
</AutoRow>
|
||||||
|
<ArrowRight size={16} />
|
||||||
|
</RowBetween>
|
||||||
|
</LinkCard>
|
||||||
{walletView === WALLET_VIEWS.PENDING ? (
|
{walletView === WALLET_VIEWS.PENDING ? (
|
||||||
<PendingView
|
<PendingView
|
||||||
connector={pendingWallet}
|
connector={pendingWallet}
|
||||||
@ -365,6 +420,7 @@ export default function WalletModal({
|
|||||||
) : (
|
) : (
|
||||||
<OptionGrid>{getOptions()}</OptionGrid>
|
<OptionGrid>{getOptions()}</OptionGrid>
|
||||||
)}
|
)}
|
||||||
|
</AutoColumn>
|
||||||
</ContentWrapper>
|
</ContentWrapper>
|
||||||
</UpperSection>
|
</UpperSection>
|
||||||
)
|
)
|
||||||
|
@ -212,7 +212,7 @@ function Web3StatusInner() {
|
|||||||
return (
|
return (
|
||||||
<Web3StatusConnect id="connect-wallet" onClick={toggleWalletModal} faded={!account}>
|
<Web3StatusConnect id="connect-wallet" onClick={toggleWalletModal} faded={!account}>
|
||||||
<Text>
|
<Text>
|
||||||
<Trans>Connect to a wallet</Trans>
|
<Trans>Connect Wallet</Trans>
|
||||||
</Text>
|
</Text>
|
||||||
</Web3StatusConnect>
|
</Web3StatusConnect>
|
||||||
)
|
)
|
||||||
|
65
src/hooks/useMonitoringEventCallback.ts
Normal file
65
src/hooks/useMonitoringEventCallback.ts
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
import { initializeApp } from 'firebase/app'
|
||||||
|
import { getDatabase, push, ref } from 'firebase/database'
|
||||||
|
import { useCallback } from 'react'
|
||||||
|
|
||||||
|
import { useActiveWeb3React } from './web3'
|
||||||
|
|
||||||
|
type MonitoringEvent =
|
||||||
|
| 'wallet connected'
|
||||||
|
| 'swap'
|
||||||
|
| 'add liquidity/v3'
|
||||||
|
| 'add liquidity/v2'
|
||||||
|
| 'remove liquidity/v3'
|
||||||
|
| 'remove liquidity/v2'
|
||||||
|
|
||||||
|
const FIREBASE_API_KEY = process.env.REACT_APP_FIREBASE_KEY
|
||||||
|
|
||||||
|
const firebaseEnabled = typeof FIREBASE_API_KEY !== 'undefined'
|
||||||
|
|
||||||
|
initializeFirebase()
|
||||||
|
|
||||||
|
export function useMonitoringEventCallback() {
|
||||||
|
const { account, chainId } = useActiveWeb3React()
|
||||||
|
|
||||||
|
return useCallback(
|
||||||
|
async function log(
|
||||||
|
type: MonitoringEvent,
|
||||||
|
{ hash, walletAddress = account }: { hash?: string; walletAddress?: typeof account }
|
||||||
|
) {
|
||||||
|
if (!firebaseEnabled) return
|
||||||
|
|
||||||
|
const db = getDatabase()
|
||||||
|
|
||||||
|
if (!walletAddress) {
|
||||||
|
console.debug('Wallet address required to log monitoring events.')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
push(ref(db, 'trm'), {
|
||||||
|
chainId,
|
||||||
|
origin: location.origin,
|
||||||
|
signedTransactionHash: hash ?? 'n/a',
|
||||||
|
timestamp: Date.now(),
|
||||||
|
type,
|
||||||
|
walletAddress,
|
||||||
|
})
|
||||||
|
} catch (e) {
|
||||||
|
console.debug('Error adding document: ', e)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
[account, chainId]
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
function initializeFirebase() {
|
||||||
|
if (!firebaseEnabled) return
|
||||||
|
initializeApp({
|
||||||
|
apiKey: process.env.REACT_APP_FIREBASE_KEY,
|
||||||
|
authDomain: 'interface-monitoring.firebaseapp.com',
|
||||||
|
databaseURL: 'https://interface-monitoring-default-rtdb.firebaseio.com',
|
||||||
|
projectId: 'interface-monitoring',
|
||||||
|
storageBucket: 'interface-monitoring.appspot.com',
|
||||||
|
messagingSenderId: '968187720053',
|
||||||
|
appId: '1:968187720053:web:acedf72dce629d470be33c',
|
||||||
|
})
|
||||||
|
}
|
@ -5,6 +5,7 @@ import { Currency, CurrencyAmount, Percent } from '@uniswap/sdk-core'
|
|||||||
import { FeeAmount, NonfungiblePositionManager } from '@uniswap/v3-sdk'
|
import { FeeAmount, NonfungiblePositionManager } from '@uniswap/v3-sdk'
|
||||||
import DowntimeWarning from 'components/DowntimeWarning'
|
import DowntimeWarning from 'components/DowntimeWarning'
|
||||||
import UnsupportedCurrencyFooter from 'components/swap/UnsupportedCurrencyFooter'
|
import UnsupportedCurrencyFooter from 'components/swap/UnsupportedCurrencyFooter'
|
||||||
|
import { useMonitoringEventCallback } from 'hooks/useMonitoringEventCallback'
|
||||||
import { useCallback, useContext, useEffect, useState } from 'react'
|
import { useCallback, useContext, useEffect, useState } from 'react'
|
||||||
import { AlertTriangle } from 'react-feather'
|
import { AlertTriangle } from 'react-feather'
|
||||||
import ReactGA from 'react-ga'
|
import ReactGA from 'react-ga'
|
||||||
@ -89,6 +90,8 @@ export default function AddLiquidity({
|
|||||||
const addTransaction = useTransactionAdder()
|
const addTransaction = useTransactionAdder()
|
||||||
const positionManager = useV3NFTPositionManagerContract()
|
const positionManager = useV3NFTPositionManagerContract()
|
||||||
|
|
||||||
|
const logMonitoringEvent = useMonitoringEventCallback()
|
||||||
|
|
||||||
// check for existing position if tokenId in url
|
// check for existing position if tokenId in url
|
||||||
const { position: existingPositionDetails, loading: positionLoading } = useV3PositionFromTokenId(
|
const { position: existingPositionDetails, loading: positionLoading } = useV3PositionFromTokenId(
|
||||||
tokenId ? BigNumber.from(tokenId) : undefined
|
tokenId ? BigNumber.from(tokenId) : undefined
|
||||||
@ -345,6 +348,7 @@ export default function AddLiquidity({
|
|||||||
action: 'Add',
|
action: 'Add',
|
||||||
label: [currencies[Field.CURRENCY_A]?.symbol, currencies[Field.CURRENCY_B]?.symbol].join('/'),
|
label: [currencies[Field.CURRENCY_A]?.symbol, currencies[Field.CURRENCY_B]?.symbol].join('/'),
|
||||||
})
|
})
|
||||||
|
logMonitoringEvent('add liquidity/v3', { hash: response.hash })
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
.catch((error) => {
|
.catch((error) => {
|
||||||
|
@ -4,6 +4,7 @@ import { Trans } from '@lingui/macro'
|
|||||||
import { Currency, CurrencyAmount, Percent } from '@uniswap/sdk-core'
|
import { Currency, CurrencyAmount, Percent } from '@uniswap/sdk-core'
|
||||||
import UnsupportedCurrencyFooter from 'components/swap/UnsupportedCurrencyFooter'
|
import UnsupportedCurrencyFooter from 'components/swap/UnsupportedCurrencyFooter'
|
||||||
import { SwitchLocaleLink } from 'components/SwitchLocaleLink'
|
import { SwitchLocaleLink } from 'components/SwitchLocaleLink'
|
||||||
|
import { useMonitoringEventCallback } from 'hooks/useMonitoringEventCallback'
|
||||||
import { useCallback, useContext, useState } from 'react'
|
import { useCallback, useContext, useState } from 'react'
|
||||||
import { Plus } from 'react-feather'
|
import { Plus } from 'react-feather'
|
||||||
import ReactGA from 'react-ga'
|
import ReactGA from 'react-ga'
|
||||||
@ -56,6 +57,8 @@ export default function AddLiquidity({
|
|||||||
const { account, chainId, library } = useActiveWeb3React()
|
const { account, chainId, library } = useActiveWeb3React()
|
||||||
const theme = useContext(ThemeContext)
|
const theme = useContext(ThemeContext)
|
||||||
|
|
||||||
|
const logMonitoringEvent = useMonitoringEventCallback()
|
||||||
|
|
||||||
const currencyA = useCurrency(currencyIdA)
|
const currencyA = useCurrency(currencyIdA)
|
||||||
const currencyB = useCurrency(currencyIdB)
|
const currencyB = useCurrency(currencyIdB)
|
||||||
|
|
||||||
@ -203,6 +206,7 @@ export default function AddLiquidity({
|
|||||||
action: 'Add',
|
action: 'Add',
|
||||||
label: [currencies[Field.CURRENCY_A]?.symbol, currencies[Field.CURRENCY_B]?.symbol].join('/'),
|
label: [currencies[Field.CURRENCY_A]?.symbol, currencies[Field.CURRENCY_B]?.symbol].join('/'),
|
||||||
})
|
})
|
||||||
|
logMonitoringEvent('add liquidity/v2', { hash: response.hash })
|
||||||
})
|
})
|
||||||
)
|
)
|
||||||
.catch((error) => {
|
.catch((error) => {
|
||||||
|
@ -19,6 +19,7 @@ import Toggle from 'components/Toggle'
|
|||||||
import { SupportedChainId } from 'constants/chains'
|
import { SupportedChainId } from 'constants/chains'
|
||||||
import { useV3NFTPositionManagerContract } from 'hooks/useContract'
|
import { useV3NFTPositionManagerContract } from 'hooks/useContract'
|
||||||
import useDebouncedChangeHandler from 'hooks/useDebouncedChangeHandler'
|
import useDebouncedChangeHandler from 'hooks/useDebouncedChangeHandler'
|
||||||
|
import { useMonitoringEventCallback } from 'hooks/useMonitoringEventCallback'
|
||||||
import useTheme from 'hooks/useTheme'
|
import useTheme from 'hooks/useTheme'
|
||||||
import useTransactionDeadline from 'hooks/useTransactionDeadline'
|
import useTransactionDeadline from 'hooks/useTransactionDeadline'
|
||||||
import { useV3PositionFromTokenId } from 'hooks/useV3Positions'
|
import { useV3PositionFromTokenId } from 'hooks/useV3Positions'
|
||||||
@ -68,6 +69,8 @@ function Remove({ tokenId }: { tokenId: BigNumber }) {
|
|||||||
const theme = useTheme()
|
const theme = useTheme()
|
||||||
const { account, chainId, library } = useActiveWeb3React()
|
const { account, chainId, library } = useActiveWeb3React()
|
||||||
|
|
||||||
|
const logMonitoringEvent = useMonitoringEventCallback()
|
||||||
|
|
||||||
// flag for receiving WETH
|
// flag for receiving WETH
|
||||||
const [receiveWETH, setReceiveWETH] = useState(false)
|
const [receiveWETH, setReceiveWETH] = useState(false)
|
||||||
|
|
||||||
@ -152,6 +155,7 @@ function Remove({ tokenId }: { tokenId: BigNumber }) {
|
|||||||
action: 'RemoveV3',
|
action: 'RemoveV3',
|
||||||
label: [liquidityValue0.currency.symbol, liquidityValue1.currency.symbol].join('/'),
|
label: [liquidityValue0.currency.symbol, liquidityValue1.currency.symbol].join('/'),
|
||||||
})
|
})
|
||||||
|
logMonitoringEvent('remove liquidity/v3', { hash: response.hash })
|
||||||
setTxnHash(response.hash)
|
setTxnHash(response.hash)
|
||||||
setAttemptingTxn(false)
|
setAttemptingTxn(false)
|
||||||
addTransaction(response, {
|
addTransaction(response, {
|
||||||
@ -168,20 +172,21 @@ function Remove({ tokenId }: { tokenId: BigNumber }) {
|
|||||||
console.error(error)
|
console.error(error)
|
||||||
})
|
})
|
||||||
}, [
|
}, [
|
||||||
tokenId,
|
positionManager,
|
||||||
liquidityValue0,
|
liquidityValue0,
|
||||||
liquidityValue1,
|
liquidityValue1,
|
||||||
deadline,
|
deadline,
|
||||||
allowedSlippage,
|
|
||||||
account,
|
account,
|
||||||
addTransaction,
|
|
||||||
positionManager,
|
|
||||||
chainId,
|
chainId,
|
||||||
feeValue0,
|
feeValue0,
|
||||||
feeValue1,
|
feeValue1,
|
||||||
library,
|
|
||||||
liquidityPercentage,
|
|
||||||
positionSDK,
|
positionSDK,
|
||||||
|
liquidityPercentage,
|
||||||
|
library,
|
||||||
|
tokenId,
|
||||||
|
allowedSlippage,
|
||||||
|
logMonitoringEvent,
|
||||||
|
addTransaction,
|
||||||
])
|
])
|
||||||
|
|
||||||
const handleDismissConfirmation = useCallback(() => {
|
const handleDismissConfirmation = useCallback(() => {
|
||||||
|
@ -3,6 +3,7 @@ import { Contract } from '@ethersproject/contracts'
|
|||||||
import { TransactionResponse } from '@ethersproject/providers'
|
import { TransactionResponse } from '@ethersproject/providers'
|
||||||
import { Trans } from '@lingui/macro'
|
import { Trans } from '@lingui/macro'
|
||||||
import { Currency, Percent } from '@uniswap/sdk-core'
|
import { Currency, Percent } from '@uniswap/sdk-core'
|
||||||
|
import { useMonitoringEventCallback } from 'hooks/useMonitoringEventCallback'
|
||||||
import { useCallback, useContext, useMemo, useState } from 'react'
|
import { useCallback, useContext, useMemo, useState } from 'react'
|
||||||
import { ArrowDown, Plus } from 'react-feather'
|
import { ArrowDown, Plus } from 'react-feather'
|
||||||
import ReactGA from 'react-ga'
|
import ReactGA from 'react-ga'
|
||||||
@ -57,6 +58,8 @@ export default function RemoveLiquidity({
|
|||||||
|
|
||||||
const theme = useContext(ThemeContext)
|
const theme = useContext(ThemeContext)
|
||||||
|
|
||||||
|
const logMonitoringEvent = useMonitoringEventCallback()
|
||||||
|
|
||||||
// toggle wallet when disconnected
|
// toggle wallet when disconnected
|
||||||
const toggleWalletModal = useWalletModalToggle()
|
const toggleWalletModal = useWalletModalToggle()
|
||||||
|
|
||||||
@ -280,6 +283,7 @@ export default function RemoveLiquidity({
|
|||||||
action: 'Remove',
|
action: 'Remove',
|
||||||
label: [currencyA.symbol, currencyB.symbol].join('/'),
|
label: [currencyA.symbol, currencyB.symbol].join('/'),
|
||||||
})
|
})
|
||||||
|
logMonitoringEvent('remove liquidity/v2', { hash: response.hash })
|
||||||
})
|
})
|
||||||
.catch((error: Error) => {
|
.catch((error: Error) => {
|
||||||
setAttemptingTxn(false)
|
setAttemptingTxn(false)
|
||||||
|
@ -10,6 +10,7 @@ import SwapRoute from 'components/swap/SwapRoute'
|
|||||||
import TradePrice from 'components/swap/TradePrice'
|
import TradePrice from 'components/swap/TradePrice'
|
||||||
import UnsupportedCurrencyFooter from 'components/swap/UnsupportedCurrencyFooter'
|
import UnsupportedCurrencyFooter from 'components/swap/UnsupportedCurrencyFooter'
|
||||||
import { MouseoverTooltip, MouseoverTooltipContent } from 'components/Tooltip'
|
import { MouseoverTooltip, MouseoverTooltipContent } from 'components/Tooltip'
|
||||||
|
import { useMonitoringEventCallback } from 'hooks/useMonitoringEventCallback'
|
||||||
import JSBI from 'jsbi'
|
import JSBI from 'jsbi'
|
||||||
import { useCallback, useContext, useEffect, useMemo, useState } from 'react'
|
import { useCallback, useContext, useEffect, useMemo, useState } from 'react'
|
||||||
import { ArrowDown, CheckCircle, HelpCircle, Info } from 'react-feather'
|
import { ArrowDown, CheckCircle, HelpCircle, Info } from 'react-feather'
|
||||||
@ -80,6 +81,8 @@ export default function Swap({ history }: RouteComponentProps) {
|
|||||||
const { account } = useActiveWeb3React()
|
const { account } = useActiveWeb3React()
|
||||||
const loadedUrlParams = useDefaultsFromURLSearch()
|
const loadedUrlParams = useDefaultsFromURLSearch()
|
||||||
|
|
||||||
|
const logMonitoringEvent = useMonitoringEventCallback()
|
||||||
|
|
||||||
// token warning stuff
|
// token warning stuff
|
||||||
const [loadedInputCurrency, loadedOutputCurrency] = [
|
const [loadedInputCurrency, loadedOutputCurrency] = [
|
||||||
useCurrency(loadedUrlParams?.inputCurrencyId),
|
useCurrency(loadedUrlParams?.inputCurrencyId),
|
||||||
@ -285,6 +288,7 @@ export default function Swap({ history }: RouteComponentProps) {
|
|||||||
'MH',
|
'MH',
|
||||||
].join('/'),
|
].join('/'),
|
||||||
})
|
})
|
||||||
|
logMonitoringEvent('swap', { hash })
|
||||||
})
|
})
|
||||||
.catch((error) => {
|
.catch((error) => {
|
||||||
setSwapState({
|
setSwapState({
|
||||||
@ -295,7 +299,17 @@ export default function Swap({ history }: RouteComponentProps) {
|
|||||||
txHash: undefined,
|
txHash: undefined,
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
}, [swapCallback, priceImpact, tradeToConfirm, showConfirm, recipient, recipientAddress, account, trade])
|
}, [
|
||||||
|
swapCallback,
|
||||||
|
priceImpact,
|
||||||
|
tradeToConfirm,
|
||||||
|
showConfirm,
|
||||||
|
recipient,
|
||||||
|
recipientAddress,
|
||||||
|
account,
|
||||||
|
trade,
|
||||||
|
logMonitoringEvent,
|
||||||
|
])
|
||||||
|
|
||||||
// errors
|
// errors
|
||||||
const [showInverted, setShowInverted] = useState<boolean>(false)
|
const [showInverted, setShowInverted] = useState<boolean>(false)
|
||||||
|
@ -51,6 +51,10 @@ export function useToggleVoteModal(): () => void {
|
|||||||
return useToggleModal(ApplicationModal.VOTE)
|
return useToggleModal(ApplicationModal.VOTE)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function useTogglePrivacyPolicy(): () => void {
|
||||||
|
return useToggleModal(ApplicationModal.PRIVACY_POLICY)
|
||||||
|
}
|
||||||
|
|
||||||
// returns a function that allows adding a popup
|
// returns a function that allows adding a popup
|
||||||
export function useAddPopup(): (content: PopupContent, key?: string, removeAfterMs?: number) => void {
|
export function useAddPopup(): (content: PopupContent, key?: string, removeAfterMs?: number) => void {
|
||||||
const dispatch = useAppDispatch()
|
const dispatch = useAppDispatch()
|
||||||
|
@ -18,6 +18,7 @@ export enum ApplicationModal {
|
|||||||
VOTE,
|
VOTE,
|
||||||
POOL_OVERVIEW_OPTIONS,
|
POOL_OVERVIEW_OPTIONS,
|
||||||
NETWORK_SELECTOR,
|
NETWORK_SELECTOR,
|
||||||
|
PRIVACY_POLICY,
|
||||||
}
|
}
|
||||||
|
|
||||||
type PopupList = Array<{ key: string; show: boolean; content: PopupContent; removeAfterMs: number | null }>
|
type PopupList = Array<{ key: string; show: boolean; content: PopupContent; removeAfterMs: number | null }>
|
||||||
|
595
yarn.lock
595
yarn.lock
@ -1822,6 +1822,366 @@
|
|||||||
"@ethersproject/properties" "^5.4.0"
|
"@ethersproject/properties" "^5.4.0"
|
||||||
"@ethersproject/strings" "^5.4.0"
|
"@ethersproject/strings" "^5.4.0"
|
||||||
|
|
||||||
|
"@firebase/analytics-compat@0.1.3":
|
||||||
|
version "0.1.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/@firebase/analytics-compat/-/analytics-compat-0.1.3.tgz#20a67a9583cf9cc87a04a762e96d697c9ecc08d7"
|
||||||
|
integrity sha512-FpaJ4sbJnryCRBkKIE45L2wGt2oCmlRK+AZc4JQHw20vb8Mf1WG1qGO+FGNoFev3lJSAd21tyhoLdPvbCTnOZQ==
|
||||||
|
dependencies:
|
||||||
|
"@firebase/analytics" "0.7.2"
|
||||||
|
"@firebase/analytics-types" "0.7.0"
|
||||||
|
"@firebase/component" "0.5.7"
|
||||||
|
"@firebase/util" "1.4.0"
|
||||||
|
tslib "^2.1.0"
|
||||||
|
|
||||||
|
"@firebase/analytics-types@0.7.0":
|
||||||
|
version "0.7.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@firebase/analytics-types/-/analytics-types-0.7.0.tgz#91960e7c87ce8bf18cf8dd9e55ccbf5dc3989b5d"
|
||||||
|
integrity sha512-DNE2Waiwy5+zZnCfintkDtBfaW6MjIG883474v6Z0K1XZIvl76cLND4iv0YUb48leyF+PJK1KO2XrgHb/KpmhQ==
|
||||||
|
|
||||||
|
"@firebase/analytics@0.7.2":
|
||||||
|
version "0.7.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/@firebase/analytics/-/analytics-0.7.2.tgz#2e5e49101c8cf3455b738efcb1f3bef15331d74b"
|
||||||
|
integrity sha512-YxLsPojufkfe3FFg6imOMQdfdJwu5hig17jnldpdmqemj1gOIwE/peTBrksP4rxnIra26XhsBRppcPcVQyxMNQ==
|
||||||
|
dependencies:
|
||||||
|
"@firebase/component" "0.5.7"
|
||||||
|
"@firebase/installations" "0.5.2"
|
||||||
|
"@firebase/logger" "0.3.0"
|
||||||
|
"@firebase/util" "1.4.0"
|
||||||
|
tslib "^2.1.0"
|
||||||
|
|
||||||
|
"@firebase/app-check-compat@0.1.3":
|
||||||
|
version "0.1.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/@firebase/app-check-compat/-/app-check-compat-0.1.3.tgz#b10c34a44d4bfdd86911506367e86705fb2e3ff0"
|
||||||
|
integrity sha512-ka5ggmfucQDwEJTcFsXPJJ+ygPZz4Q44D5yb0sksfOAsUSpzAR83jDSxebOgTvvk+axNCFamxOsrZEV6KKDjEg==
|
||||||
|
dependencies:
|
||||||
|
"@firebase/app-check" "0.4.2"
|
||||||
|
"@firebase/component" "0.5.7"
|
||||||
|
"@firebase/logger" "0.3.0"
|
||||||
|
"@firebase/util" "1.4.0"
|
||||||
|
tslib "^2.1.0"
|
||||||
|
|
||||||
|
"@firebase/app-check-interop-types@0.1.0":
|
||||||
|
version "0.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@firebase/app-check-interop-types/-/app-check-interop-types-0.1.0.tgz#83afd9d41f99166c2bdb2d824e5032e9edd8fe53"
|
||||||
|
integrity sha512-uZfn9s4uuRsaX5Lwx+gFP3B6YsyOKUE+Rqa6z9ojT4VSRAsZFko9FRn6OxQUA1z5t5d08fY4pf+/+Dkd5wbdbA==
|
||||||
|
|
||||||
|
"@firebase/app-check@0.4.2":
|
||||||
|
version "0.4.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/@firebase/app-check/-/app-check-0.4.2.tgz#33ca60f439d679ced9a593b392c8a4934d14d81f"
|
||||||
|
integrity sha512-DFYt22lUMvvncN3v6x9ZRE2/HHBQdRQyYtHwakAcZrRUALJiU16iDwl2CABuW4JKytTmMj+xXo0fjSIRWtwT/w==
|
||||||
|
dependencies:
|
||||||
|
"@firebase/component" "0.5.7"
|
||||||
|
"@firebase/logger" "0.3.0"
|
||||||
|
"@firebase/util" "1.4.0"
|
||||||
|
tslib "^2.1.0"
|
||||||
|
|
||||||
|
"@firebase/app-compat@0.1.5":
|
||||||
|
version "0.1.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/@firebase/app-compat/-/app-compat-0.1.5.tgz#0cb75a04245a4830a5354fd43a0d15c65222c4f4"
|
||||||
|
integrity sha512-GJURp5Nn8dEm72/y13Z+XMvWmMomsYViNxw6VKYqVH9f9VKnJ46Q8zYtx2ePvOuj7pAqsfwNkvAdAFYcveTe9g==
|
||||||
|
dependencies:
|
||||||
|
"@firebase/app" "0.7.4"
|
||||||
|
"@firebase/component" "0.5.7"
|
||||||
|
"@firebase/logger" "0.3.0"
|
||||||
|
"@firebase/util" "1.4.0"
|
||||||
|
tslib "^2.1.0"
|
||||||
|
|
||||||
|
"@firebase/app-types@0.7.0":
|
||||||
|
version "0.7.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@firebase/app-types/-/app-types-0.7.0.tgz#c9e16d1b8bed1a991840b8d2a725fb58d0b5899f"
|
||||||
|
integrity sha512-6fbHQwDv2jp/v6bXhBw2eSRbNBpxHcd1NBF864UksSMVIqIyri9qpJB1Mn6sGZE+bnDsSQBC5j2TbMxYsJQkQg==
|
||||||
|
|
||||||
|
"@firebase/app@0.7.4":
|
||||||
|
version "0.7.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/@firebase/app/-/app-0.7.4.tgz#2100e6379e7f6e4ed0912f8312ecfb722dc1d085"
|
||||||
|
integrity sha512-XBrZb60m7N1XqmRhSJWADDD3J/0j9wM2VhxC5KUEtFA9SWfTn9Z3EWGtRGz7ahrMkgPJsmo0fXpvUh6cY8pQvQ==
|
||||||
|
dependencies:
|
||||||
|
"@firebase/component" "0.5.7"
|
||||||
|
"@firebase/logger" "0.3.0"
|
||||||
|
"@firebase/util" "1.4.0"
|
||||||
|
tslib "^2.1.0"
|
||||||
|
|
||||||
|
"@firebase/auth-compat@0.1.6":
|
||||||
|
version "0.1.6"
|
||||||
|
resolved "https://registry.yarnpkg.com/@firebase/auth-compat/-/auth-compat-0.1.6.tgz#0b7595a8327e4a526ec1d7c8b23d1e6a28c43af7"
|
||||||
|
integrity sha512-+HNIsti29ZX4AgLH4KdI+DAesX9DOywcmHFbVJtOE6Ow8v2d8NFTi66fa4LEU7HLCvj9YpeiEpHHLs4NamJ1tw==
|
||||||
|
dependencies:
|
||||||
|
"@firebase/auth" "0.18.3"
|
||||||
|
"@firebase/auth-types" "0.11.0"
|
||||||
|
"@firebase/component" "0.5.7"
|
||||||
|
"@firebase/util" "1.4.0"
|
||||||
|
node-fetch "2.6.5"
|
||||||
|
selenium-webdriver "^4.0.0-beta.2"
|
||||||
|
tslib "^2.1.0"
|
||||||
|
|
||||||
|
"@firebase/auth-interop-types@0.1.6":
|
||||||
|
version "0.1.6"
|
||||||
|
resolved "https://registry.yarnpkg.com/@firebase/auth-interop-types/-/auth-interop-types-0.1.6.tgz#5ce13fc1c527ad36f1bb1322c4492680a6cf4964"
|
||||||
|
integrity sha512-etIi92fW3CctsmR9e3sYM3Uqnoq861M0Id9mdOPF6PWIg38BXL5k4upCNBggGUpLIS0H1grMOvy/wn1xymwe2g==
|
||||||
|
|
||||||
|
"@firebase/auth-types@0.11.0":
|
||||||
|
version "0.11.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@firebase/auth-types/-/auth-types-0.11.0.tgz#b9c73c60ca07945b3bbd7a097633e5f78fa9e886"
|
||||||
|
integrity sha512-q7Bt6cx+ySj9elQHTsKulwk3+qDezhzRBFC9zlQ1BjgMueUOnGMcvqmU0zuKlQ4RhLSH7MNAdBV2znVaoN3Vxw==
|
||||||
|
|
||||||
|
"@firebase/auth@0.18.3":
|
||||||
|
version "0.18.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/@firebase/auth/-/auth-0.18.3.tgz#d4dcc4c437eed008b1db30d5b7f74e081a3ee233"
|
||||||
|
integrity sha512-uS67CzypGu52H94mkptJ/lpoc0xAtVDksb/4+4HdSRwekxMt5EtyEdLMy8MH73Vk3MwTQWyTEsHEbwrGgk42pQ==
|
||||||
|
dependencies:
|
||||||
|
"@firebase/component" "0.5.7"
|
||||||
|
"@firebase/logger" "0.3.0"
|
||||||
|
"@firebase/util" "1.4.0"
|
||||||
|
node-fetch "2.6.5"
|
||||||
|
selenium-webdriver "4.0.0-rc-1"
|
||||||
|
tslib "^2.1.0"
|
||||||
|
|
||||||
|
"@firebase/component@0.5.7":
|
||||||
|
version "0.5.7"
|
||||||
|
resolved "https://registry.yarnpkg.com/@firebase/component/-/component-0.5.7.tgz#a50c5fbd14a2136a99ade6f59f53498729c0f174"
|
||||||
|
integrity sha512-CiAHUPXh2hn/lpzMShNmfAxHNQhKQwmQUJSYMPCjf2bCCt4Z2vLGpS+UWEuNFm9Zf8LNmkS+Z+U/s4Obi5carg==
|
||||||
|
dependencies:
|
||||||
|
"@firebase/util" "1.4.0"
|
||||||
|
tslib "^2.1.0"
|
||||||
|
|
||||||
|
"@firebase/database-compat@0.1.2":
|
||||||
|
version "0.1.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/@firebase/database-compat/-/database-compat-0.1.2.tgz#c65cd59e4e1b7ec6834de5a17238787249da1e19"
|
||||||
|
integrity sha512-sV32QIRSNIBj/6OYtpmPzA/SfQz1/NBZbhxg9dIhGaSt9e5HaMxXRuz2lImudX0Sd/v8DKdExrxa++K6rKrRtA==
|
||||||
|
dependencies:
|
||||||
|
"@firebase/component" "0.5.7"
|
||||||
|
"@firebase/database" "0.12.2"
|
||||||
|
"@firebase/database-types" "0.9.1"
|
||||||
|
"@firebase/logger" "0.3.0"
|
||||||
|
"@firebase/util" "1.4.0"
|
||||||
|
tslib "^2.1.0"
|
||||||
|
|
||||||
|
"@firebase/database-types@0.9.1":
|
||||||
|
version "0.9.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@firebase/database-types/-/database-types-0.9.1.tgz#0cab989e8154d812b535d80f23c1578b1d391f5f"
|
||||||
|
integrity sha512-RUixK/YrbpxbfdE+nYP0wMcEsz1xPTnafP0q3UlSS/+fW744OITKtR1J0cMRaXbvY7EH0wUVTNVkrtgxYY8IgQ==
|
||||||
|
dependencies:
|
||||||
|
"@firebase/app-types" "0.7.0"
|
||||||
|
"@firebase/util" "1.4.0"
|
||||||
|
|
||||||
|
"@firebase/database@0.12.2":
|
||||||
|
version "0.12.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/@firebase/database/-/database-0.12.2.tgz#8c24ff4d79abcbef5896c2cdeae02ccc382db44b"
|
||||||
|
integrity sha512-Y1LZR1LIQM8YKMkeUPpAq3/e53hcfcXO+JEZ6vCzBeD6xRawqmpw6B5/DzePdCNNvjcqheXzSaR7T39eRZo/wA==
|
||||||
|
dependencies:
|
||||||
|
"@firebase/auth-interop-types" "0.1.6"
|
||||||
|
"@firebase/component" "0.5.7"
|
||||||
|
"@firebase/logger" "0.3.0"
|
||||||
|
"@firebase/util" "1.4.0"
|
||||||
|
faye-websocket "0.11.4"
|
||||||
|
tslib "^2.1.0"
|
||||||
|
|
||||||
|
"@firebase/firestore-compat@0.1.4":
|
||||||
|
version "0.1.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/@firebase/firestore-compat/-/firestore-compat-0.1.4.tgz#c94cdec41d2588dd74ff8f7ecb0bee84544be8c6"
|
||||||
|
integrity sha512-NuV0cKXE1EAxNkZxRXYjFsBPiXljuq0W3NeKyQYZTmYsVVJ215KHdR/RHAUA+1ZOfrfT2NgoZpBmE7LpYeLwXA==
|
||||||
|
dependencies:
|
||||||
|
"@firebase/component" "0.5.7"
|
||||||
|
"@firebase/firestore" "3.1.1"
|
||||||
|
"@firebase/firestore-types" "2.5.0"
|
||||||
|
"@firebase/util" "1.4.0"
|
||||||
|
tslib "^2.1.0"
|
||||||
|
|
||||||
|
"@firebase/firestore-types@2.5.0":
|
||||||
|
version "2.5.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@firebase/firestore-types/-/firestore-types-2.5.0.tgz#16fca40b6980fdb000de86042d7a96635f2bcdd7"
|
||||||
|
integrity sha512-I6c2m1zUhZ5SH0cWPmINabDyH5w0PPFHk2UHsjBpKdZllzJZ2TwTkXbDtpHUZNmnc/zAa0WNMNMvcvbb/xJLKA==
|
||||||
|
|
||||||
|
"@firebase/firestore@3.1.1":
|
||||||
|
version "3.1.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@firebase/firestore/-/firestore-3.1.1.tgz#4b3c0d15f8ca38a83cc655ebfc2dffb8a6c984ab"
|
||||||
|
integrity sha512-hFl+Me6F+GhtEaMsmwruOVoaJfoYinjCKyhaXzQT/jUsoBzKUBCd6MKMjYD+D+y1deAmdkFJcRNxPV7CsgF2aw==
|
||||||
|
dependencies:
|
||||||
|
"@firebase/component" "0.5.7"
|
||||||
|
"@firebase/logger" "0.3.0"
|
||||||
|
"@firebase/util" "1.4.0"
|
||||||
|
"@firebase/webchannel-wrapper" "0.6.0"
|
||||||
|
"@grpc/grpc-js" "^1.3.2"
|
||||||
|
"@grpc/proto-loader" "^0.6.0"
|
||||||
|
node-fetch "2.6.5"
|
||||||
|
tslib "^2.1.0"
|
||||||
|
|
||||||
|
"@firebase/functions-compat@0.1.4":
|
||||||
|
version "0.1.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/@firebase/functions-compat/-/functions-compat-0.1.4.tgz#06cb51e79f87eba3852ca1d9fe15c59507e4b013"
|
||||||
|
integrity sha512-mC/z0uJbGk/RRskabvvDylpMHMsNNwNIxrjBJy3J8ADZUqpJTMuT4gq+pHlPemYqLBZuN8TffIZNVPajXxqc+Q==
|
||||||
|
dependencies:
|
||||||
|
"@firebase/component" "0.5.7"
|
||||||
|
"@firebase/functions" "0.7.3"
|
||||||
|
"@firebase/functions-types" "0.5.0"
|
||||||
|
"@firebase/util" "1.4.0"
|
||||||
|
tslib "^2.1.0"
|
||||||
|
|
||||||
|
"@firebase/functions-types@0.5.0":
|
||||||
|
version "0.5.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@firebase/functions-types/-/functions-types-0.5.0.tgz#b50ba95ccce9e96f7cda453228ffe1684645625b"
|
||||||
|
integrity sha512-qza0M5EwX+Ocrl1cYI14zoipUX4gI/Shwqv0C1nB864INAD42Dgv4v94BCyxGHBg2kzlWy8PNafdP7zPO8aJQA==
|
||||||
|
|
||||||
|
"@firebase/functions@0.7.3":
|
||||||
|
version "0.7.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/@firebase/functions/-/functions-0.7.3.tgz#b8aba7c1e5b1665053b04e075faeb7bbf6b0bc49"
|
||||||
|
integrity sha512-LxLbR9UtULLKMWSs6vtlte2Ka5tBDPGeGwX8Mto2uAtaNdrkoWKdhiJ4OTQx1YTCRIbTQnTg3t50NO8afzTEcQ==
|
||||||
|
dependencies:
|
||||||
|
"@firebase/app-check-interop-types" "0.1.0"
|
||||||
|
"@firebase/auth-interop-types" "0.1.6"
|
||||||
|
"@firebase/component" "0.5.7"
|
||||||
|
"@firebase/messaging-interop-types" "0.1.0"
|
||||||
|
"@firebase/util" "1.4.0"
|
||||||
|
node-fetch "2.6.5"
|
||||||
|
tslib "^2.1.0"
|
||||||
|
|
||||||
|
"@firebase/installations@0.5.2":
|
||||||
|
version "0.5.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/@firebase/installations/-/installations-0.5.2.tgz#3da5f54c3e15d7ea47a04729caf667b28203d760"
|
||||||
|
integrity sha512-k43qItRUnjIhAcxFRhGrox2ZBY/CFJOizB30hej9HuWOFv4qXoMZOmLtKzyjskFhRn/HW8iBUVguNFAEf6iehw==
|
||||||
|
dependencies:
|
||||||
|
"@firebase/component" "0.5.7"
|
||||||
|
"@firebase/util" "1.4.0"
|
||||||
|
idb "3.0.2"
|
||||||
|
tslib "^2.1.0"
|
||||||
|
|
||||||
|
"@firebase/logger@0.3.0":
|
||||||
|
version "0.3.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@firebase/logger/-/logger-0.3.0.tgz#a3992e40f62c10276dbfcb8b4ab376b7e25d7fd9"
|
||||||
|
integrity sha512-7oQ+TctqekfgZImWkKuda50JZfkmAKMgh5qY4aR4pwRyqZXuJXN1H/BKkHvN1y0S4XWtF0f/wiCLKHhyi1ppPA==
|
||||||
|
dependencies:
|
||||||
|
tslib "^2.1.0"
|
||||||
|
|
||||||
|
"@firebase/messaging-compat@0.1.2":
|
||||||
|
version "0.1.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/@firebase/messaging-compat/-/messaging-compat-0.1.2.tgz#915841c0fbb89620da019e8626dc641a39cb603f"
|
||||||
|
integrity sha512-ORxqIlnstjRhTpQsX7A0K9ifBTrqI7MNdWwCRbhvTh7GkzmhMe7ht+YAALrdvHD3Qty49UFrHznaIbF7Gr+nwA==
|
||||||
|
dependencies:
|
||||||
|
"@firebase/component" "0.5.7"
|
||||||
|
"@firebase/messaging" "0.9.2"
|
||||||
|
"@firebase/util" "1.4.0"
|
||||||
|
tslib "^2.1.0"
|
||||||
|
|
||||||
|
"@firebase/messaging-interop-types@0.1.0":
|
||||||
|
version "0.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@firebase/messaging-interop-types/-/messaging-interop-types-0.1.0.tgz#bdac02dd31edd5cb9eec37b1db698ea5e2c1a631"
|
||||||
|
integrity sha512-DbvUl/rXAZpQeKBnwz0NYY5OCqr2nFA0Bj28Fmr3NXGqR4PAkfTOHuQlVtLO1Nudo3q0HxAYLa68ZDAcuv2uKQ==
|
||||||
|
|
||||||
|
"@firebase/messaging@0.9.2":
|
||||||
|
version "0.9.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/@firebase/messaging/-/messaging-0.9.2.tgz#8dffa8b392bd6dec04e0be4b1f091ece42b825a5"
|
||||||
|
integrity sha512-v95cny/HsupEvFiewsobjEtQ8ItMCPsg+29VLP51SIS3Ix7Kg2TJLZ2tfHkESRFazIhf2+GNwR8hdXoajqz2og==
|
||||||
|
dependencies:
|
||||||
|
"@firebase/component" "0.5.7"
|
||||||
|
"@firebase/installations" "0.5.2"
|
||||||
|
"@firebase/messaging-interop-types" "0.1.0"
|
||||||
|
"@firebase/util" "1.4.0"
|
||||||
|
idb "3.0.2"
|
||||||
|
tslib "^2.1.0"
|
||||||
|
|
||||||
|
"@firebase/performance-compat@0.1.2":
|
||||||
|
version "0.1.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/@firebase/performance-compat/-/performance-compat-0.1.2.tgz#3266bfc2fc6392b1b5d0587d618a042055dff694"
|
||||||
|
integrity sha512-L9rt89eIPaucGsO/bwF199mS5+BV3kHTfK1Fr1vCmGL87kLpV8DKVccKc7Z0ZwQelfMvXOGy5jVqH/sHhiQAYg==
|
||||||
|
dependencies:
|
||||||
|
"@firebase/component" "0.5.7"
|
||||||
|
"@firebase/logger" "0.3.0"
|
||||||
|
"@firebase/performance" "0.5.2"
|
||||||
|
"@firebase/performance-types" "0.1.0"
|
||||||
|
"@firebase/util" "1.4.0"
|
||||||
|
tslib "^2.1.0"
|
||||||
|
|
||||||
|
"@firebase/performance-types@0.1.0":
|
||||||
|
version "0.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@firebase/performance-types/-/performance-types-0.1.0.tgz#5e6efa9dc81860aee2cb7121b39ae8fa137e69fc"
|
||||||
|
integrity sha512-6p1HxrH0mpx+622Ql6fcxFxfkYSBpE3LSuwM7iTtYU2nw91Hj6THC8Bc8z4nboIq7WvgsT/kOTYVVZzCSlXl8w==
|
||||||
|
|
||||||
|
"@firebase/performance@0.5.2":
|
||||||
|
version "0.5.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/@firebase/performance/-/performance-0.5.2.tgz#c4f1d906ef7645a9b632c686bad577fce361349e"
|
||||||
|
integrity sha512-xHrt/BNiln3OIW9hyqKwck0x4C7Km+XKYQsP8cPDBh8AWFh//DB0ta7DuMXw7JGIuyKpK2D3iq5aQNS0MzMvSw==
|
||||||
|
dependencies:
|
||||||
|
"@firebase/component" "0.5.7"
|
||||||
|
"@firebase/installations" "0.5.2"
|
||||||
|
"@firebase/logger" "0.3.0"
|
||||||
|
"@firebase/util" "1.4.0"
|
||||||
|
tslib "^2.1.0"
|
||||||
|
|
||||||
|
"@firebase/polyfill@0.3.36":
|
||||||
|
version "0.3.36"
|
||||||
|
resolved "https://registry.yarnpkg.com/@firebase/polyfill/-/polyfill-0.3.36.tgz#c057cce6748170f36966b555749472b25efdb145"
|
||||||
|
integrity sha512-zMM9oSJgY6cT2jx3Ce9LYqb0eIpDE52meIzd/oe/y70F+v9u1LDqk5kUF5mf16zovGBWMNFmgzlsh6Wj0OsFtg==
|
||||||
|
dependencies:
|
||||||
|
core-js "3.6.5"
|
||||||
|
promise-polyfill "8.1.3"
|
||||||
|
whatwg-fetch "2.0.4"
|
||||||
|
|
||||||
|
"@firebase/remote-config-compat@0.1.2":
|
||||||
|
version "0.1.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/@firebase/remote-config-compat/-/remote-config-compat-0.1.2.tgz#0b35eaa536396b8ea7cb4d69c5578bee6f409c7a"
|
||||||
|
integrity sha512-j+joqwZAOO1L3pTlK8aQ3M+781ZbbOtV/TNpU4Tulqq+Psfjlx5SOYVfuF8njbbWGPLhLReFwmEjyE3jnm9hrQ==
|
||||||
|
dependencies:
|
||||||
|
"@firebase/component" "0.5.7"
|
||||||
|
"@firebase/logger" "0.3.0"
|
||||||
|
"@firebase/remote-config" "0.3.1"
|
||||||
|
"@firebase/remote-config-types" "0.2.0"
|
||||||
|
"@firebase/util" "1.4.0"
|
||||||
|
tslib "^2.1.0"
|
||||||
|
|
||||||
|
"@firebase/remote-config-types@0.2.0":
|
||||||
|
version "0.2.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@firebase/remote-config-types/-/remote-config-types-0.2.0.tgz#1e2759fc01f20b58c564db42196f075844c3d1fd"
|
||||||
|
integrity sha512-hqK5sCPeZvcHQ1D6VjJZdW6EexLTXNMJfPdTwbD8NrXUw6UjWC4KWhLK/TSlL0QPsQtcKRkaaoP+9QCgKfMFPw==
|
||||||
|
|
||||||
|
"@firebase/remote-config@0.3.1":
|
||||||
|
version "0.3.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@firebase/remote-config/-/remote-config-0.3.1.tgz#6d7aea2e98527a499a4ee924dac84ea10a90de4a"
|
||||||
|
integrity sha512-31nZ0NEcARw1wYKIpoAx63rA0ao28e9zYNrlSC08mBiouSOxu69lthiO0V1ZrFqR/iW9+7M2MqnOUhJ6/LYEwQ==
|
||||||
|
dependencies:
|
||||||
|
"@firebase/component" "0.5.7"
|
||||||
|
"@firebase/installations" "0.5.2"
|
||||||
|
"@firebase/logger" "0.3.0"
|
||||||
|
"@firebase/util" "1.4.0"
|
||||||
|
tslib "^2.1.0"
|
||||||
|
|
||||||
|
"@firebase/storage-compat@0.1.4":
|
||||||
|
version "0.1.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/@firebase/storage-compat/-/storage-compat-0.1.4.tgz#975d48f87cb58e4698d111853adf5b75a3cecf66"
|
||||||
|
integrity sha512-EV14tdnjm5yewGBgsUarGPzRUgqQX26+NVHIW1AoT+bMoODlL5ypYGv2/QA9Phi7JBvo5cAcTe4stEsu3CTF0g==
|
||||||
|
dependencies:
|
||||||
|
"@firebase/component" "0.5.7"
|
||||||
|
"@firebase/storage" "0.8.4"
|
||||||
|
"@firebase/storage-types" "0.6.0"
|
||||||
|
"@firebase/util" "1.4.0"
|
||||||
|
tslib "^2.1.0"
|
||||||
|
|
||||||
|
"@firebase/storage-types@0.6.0":
|
||||||
|
version "0.6.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@firebase/storage-types/-/storage-types-0.6.0.tgz#0b1af64a2965af46fca138e5b70700e9b7e6312a"
|
||||||
|
integrity sha512-1LpWhcCb1ftpkP/akhzjzeFxgVefs6eMD2QeKiJJUGH1qOiows2w5o0sKCUSQrvrRQS1lz3SFGvNR1Ck/gqxeA==
|
||||||
|
|
||||||
|
"@firebase/storage@0.8.4":
|
||||||
|
version "0.8.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/@firebase/storage/-/storage-0.8.4.tgz#67344879bce124ed3efea2c732e2ed25d6676bf0"
|
||||||
|
integrity sha512-Flv25G8J4hp9wa9qTy9UoaBRl2Vcsr+FGaK6RaRUAzoMw2PA46ZPt/DChJZWxKgpmOq/7HyRc8qNTwqqDJt7dA==
|
||||||
|
dependencies:
|
||||||
|
"@firebase/component" "0.5.7"
|
||||||
|
"@firebase/util" "1.4.0"
|
||||||
|
node-fetch "2.6.5"
|
||||||
|
tslib "^2.1.0"
|
||||||
|
|
||||||
|
"@firebase/util@1.4.0":
|
||||||
|
version "1.4.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@firebase/util/-/util-1.4.0.tgz#81e985adba44b4d1f21ec9f5af9628d505891de8"
|
||||||
|
integrity sha512-Qn58d+DVi1nGn0bA9RV89zkz0zcbt6aUcRdyiuub/SuEvjKYstWmHcHwh1C0qmE1wPf9a3a+AuaRtduaGaRT7A==
|
||||||
|
dependencies:
|
||||||
|
tslib "^2.1.0"
|
||||||
|
|
||||||
|
"@firebase/webchannel-wrapper@0.6.0":
|
||||||
|
version "0.6.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@firebase/webchannel-wrapper/-/webchannel-wrapper-0.6.0.tgz#e18ea901c84917f8dadd0185048a9d00573fe595"
|
||||||
|
integrity sha512-Pz4+7HPzKvOFI1ICQ6pyUv/VgStEWq9IGiVaaV1cQLi66NIA1mD5INnY4CDNoVAxlkuZvDEUZ+cVHLQ8iwA2hQ==
|
||||||
|
|
||||||
"@gnosis.pm/safe-apps-provider@0.6.0":
|
"@gnosis.pm/safe-apps-provider@0.6.0":
|
||||||
version "0.6.0"
|
version "0.6.0"
|
||||||
resolved "https://registry.yarnpkg.com/@gnosis.pm/safe-apps-provider/-/safe-apps-provider-0.6.0.tgz#07cc78df57ca4d0fa9c24c4040ea6322ac759a23"
|
resolved "https://registry.yarnpkg.com/@gnosis.pm/safe-apps-provider/-/safe-apps-provider-0.6.0.tgz#07cc78df57ca4d0fa9c24c4040ea6322ac759a23"
|
||||||
@ -2175,6 +2535,25 @@
|
|||||||
tslib "~2.2.0"
|
tslib "~2.2.0"
|
||||||
value-or-promise "1.0.6"
|
value-or-promise "1.0.6"
|
||||||
|
|
||||||
|
"@grpc/grpc-js@^1.3.2":
|
||||||
|
version "1.4.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.4.1.tgz#799063a4ff7395987d4fceb2aab133629b003840"
|
||||||
|
integrity sha512-/chkA48TdAvATHA7RXJPeHQLdfFhpu51974s8htjO/XTDHA41j5+SkR5Io+lr9XsLmkZD6HxLyRAFGmA9wjO2w==
|
||||||
|
dependencies:
|
||||||
|
"@grpc/proto-loader" "^0.6.4"
|
||||||
|
"@types/node" ">=12.12.47"
|
||||||
|
|
||||||
|
"@grpc/proto-loader@^0.6.0", "@grpc/proto-loader@^0.6.4":
|
||||||
|
version "0.6.6"
|
||||||
|
resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.6.6.tgz#d8e51ea808ec5fa54d9defbecbf859336fb2da71"
|
||||||
|
integrity sha512-cdMaPZ8AiFz6ua6PUbP+LKbhwJbFXnrQ/mlnKGUyzDUZ3wp7vPLksnmLCBX6SHgSmjX7CbNVNLFYD5GmmjO4GQ==
|
||||||
|
dependencies:
|
||||||
|
"@types/long" "^4.0.1"
|
||||||
|
lodash.camelcase "^4.3.0"
|
||||||
|
long "^4.0.0"
|
||||||
|
protobufjs "^6.10.0"
|
||||||
|
yargs "^16.1.1"
|
||||||
|
|
||||||
"@hapi/address@2.x.x":
|
"@hapi/address@2.x.x":
|
||||||
version "2.1.4"
|
version "2.1.4"
|
||||||
resolved "https://registry.yarnpkg.com/@hapi/address/-/address-2.1.4.tgz#5d67ed43f3fd41a69d4b9ff7b56e7c0d1d0a81e5"
|
resolved "https://registry.yarnpkg.com/@hapi/address/-/address-2.1.4.tgz#5d67ed43f3fd41a69d4b9ff7b56e7c0d1d0a81e5"
|
||||||
@ -2764,6 +3143,59 @@
|
|||||||
penpal "3.0.7"
|
penpal "3.0.7"
|
||||||
pocket-js-core "0.0.3"
|
pocket-js-core "0.0.3"
|
||||||
|
|
||||||
|
"@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2":
|
||||||
|
version "1.1.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf"
|
||||||
|
integrity sha1-m4sMxmPWaafY9vXQiToU00jzD78=
|
||||||
|
|
||||||
|
"@protobufjs/base64@^1.1.2":
|
||||||
|
version "1.1.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/@protobufjs/base64/-/base64-1.1.2.tgz#4c85730e59b9a1f1f349047dbf24296034bb2735"
|
||||||
|
integrity sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==
|
||||||
|
|
||||||
|
"@protobufjs/codegen@^2.0.4":
|
||||||
|
version "2.0.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/@protobufjs/codegen/-/codegen-2.0.4.tgz#7ef37f0d010fb028ad1ad59722e506d9262815cb"
|
||||||
|
integrity sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==
|
||||||
|
|
||||||
|
"@protobufjs/eventemitter@^1.1.0":
|
||||||
|
version "1.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz#355cbc98bafad5978f9ed095f397621f1d066b70"
|
||||||
|
integrity sha1-NVy8mLr61ZePntCV85diHx0Ga3A=
|
||||||
|
|
||||||
|
"@protobufjs/fetch@^1.1.0":
|
||||||
|
version "1.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@protobufjs/fetch/-/fetch-1.1.0.tgz#ba99fb598614af65700c1619ff06d454b0d84c45"
|
||||||
|
integrity sha1-upn7WYYUr2VwDBYZ/wbUVLDYTEU=
|
||||||
|
dependencies:
|
||||||
|
"@protobufjs/aspromise" "^1.1.1"
|
||||||
|
"@protobufjs/inquire" "^1.1.0"
|
||||||
|
|
||||||
|
"@protobufjs/float@^1.0.2":
|
||||||
|
version "1.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/@protobufjs/float/-/float-1.0.2.tgz#5e9e1abdcb73fc0a7cb8b291df78c8cbd97b87d1"
|
||||||
|
integrity sha1-Xp4avctz/Ap8uLKR33jIy9l7h9E=
|
||||||
|
|
||||||
|
"@protobufjs/inquire@^1.1.0":
|
||||||
|
version "1.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@protobufjs/inquire/-/inquire-1.1.0.tgz#ff200e3e7cf2429e2dcafc1140828e8cc638f089"
|
||||||
|
integrity sha1-/yAOPnzyQp4tyvwRQIKOjMY48Ik=
|
||||||
|
|
||||||
|
"@protobufjs/path@^1.1.2":
|
||||||
|
version "1.1.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/@protobufjs/path/-/path-1.1.2.tgz#6cc2b20c5c9ad6ad0dccfd21ca7673d8d7fbf68d"
|
||||||
|
integrity sha1-bMKyDFya1q0NzP0hynZz2Nf79o0=
|
||||||
|
|
||||||
|
"@protobufjs/pool@^1.1.0":
|
||||||
|
version "1.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@protobufjs/pool/-/pool-1.1.0.tgz#09fd15f2d6d3abfa9b65bc366506d6ad7846ff54"
|
||||||
|
integrity sha1-Cf0V8tbTq/qbZbw2ZQbWrXhG/1Q=
|
||||||
|
|
||||||
|
"@protobufjs/utf8@^1.1.0":
|
||||||
|
version "1.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570"
|
||||||
|
integrity sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA=
|
||||||
|
|
||||||
"@reach/dialog@^0.10.3":
|
"@reach/dialog@^0.10.3":
|
||||||
version "0.10.5"
|
version "0.10.5"
|
||||||
resolved "https://registry.npmjs.org/@reach/dialog/-/dialog-0.10.5.tgz"
|
resolved "https://registry.npmjs.org/@reach/dialog/-/dialog-0.10.5.tgz"
|
||||||
@ -3686,6 +4118,11 @@
|
|||||||
"@types/lingui__core" "*"
|
"@types/lingui__core" "*"
|
||||||
"@types/react" "*"
|
"@types/react" "*"
|
||||||
|
|
||||||
|
"@types/long@^4.0.1":
|
||||||
|
version "4.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.1.tgz#459c65fa1867dafe6a8f322c4c51695663cc55e9"
|
||||||
|
integrity sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w==
|
||||||
|
|
||||||
"@types/luxon@^1.24.4":
|
"@types/luxon@^1.24.4":
|
||||||
version "1.27.1"
|
version "1.27.1"
|
||||||
resolved "https://registry.yarnpkg.com/@types/luxon/-/luxon-1.27.1.tgz#aceeb2d5be8fccf541237e184e37ecff5faa9096"
|
resolved "https://registry.yarnpkg.com/@types/luxon/-/luxon-1.27.1.tgz#aceeb2d5be8fccf541237e184e37ecff5faa9096"
|
||||||
@ -3713,6 +4150,11 @@
|
|||||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-16.7.9.tgz#3bf27710839e62a470ddf6bd8dd321f1737ce5b4"
|
resolved "https://registry.yarnpkg.com/@types/node/-/node-16.7.9.tgz#3bf27710839e62a470ddf6bd8dd321f1737ce5b4"
|
||||||
integrity sha512-KktxVzS4FPDFVHUUOWyZMvRo//8vqOLITtLMhFSW9IdLsYT/sPyXj3wXtaTcR7A7olCe7R2Xy7R+q5pg2bU46g==
|
integrity sha512-KktxVzS4FPDFVHUUOWyZMvRo//8vqOLITtLMhFSW9IdLsYT/sPyXj3wXtaTcR7A7olCe7R2Xy7R+q5pg2bU46g==
|
||||||
|
|
||||||
|
"@types/node@>=12.12.47", "@types/node@>=13.7.0":
|
||||||
|
version "16.11.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.1.tgz#2e50a649a50fc403433a14f829eface1a3443e97"
|
||||||
|
integrity sha512-PYGcJHL9mwl1Ek3PLiYgyEKtwTMmkMw4vbiyz/ps3pfdRYLVv+SN7qHVAImrjdAXxgluDEw6Ph4lyv+m9UpRmA==
|
||||||
|
|
||||||
"@types/node@^10.12.18":
|
"@types/node@^10.12.18":
|
||||||
version "10.17.60"
|
version "10.17.60"
|
||||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.60.tgz#35f3d6213daed95da7f0f73e75bcc6980e90597b"
|
resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.60.tgz#35f3d6213daed95da7f0f73e75bcc6980e90597b"
|
||||||
@ -7478,6 +7920,11 @@ core-js-pure@^3.16.0:
|
|||||||
resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.16.4.tgz#8b23122628d88c560f209812b9b2d9ebbce5e29c"
|
resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.16.4.tgz#8b23122628d88c560f209812b9b2d9ebbce5e29c"
|
||||||
integrity sha512-bY1K3/1Jy9D8Jd12eoeVahNXHLfHFb4TXWI8SQ4y8bImR9qDPmGITBAfmcffTkgUvbJn87r8dILOTWW5kZzkgA==
|
integrity sha512-bY1K3/1Jy9D8Jd12eoeVahNXHLfHFb4TXWI8SQ4y8bImR9qDPmGITBAfmcffTkgUvbJn87r8dILOTWW5kZzkgA==
|
||||||
|
|
||||||
|
core-js@3.6.5:
|
||||||
|
version "3.6.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.6.5.tgz#7395dc273af37fb2e50e9bd3d9fe841285231d1a"
|
||||||
|
integrity sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA==
|
||||||
|
|
||||||
core-js@^2.4.0, core-js@^2.5.0:
|
core-js@^2.4.0, core-js@^2.5.0:
|
||||||
version "2.6.12"
|
version "2.6.12"
|
||||||
resolved "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz"
|
resolved "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz"
|
||||||
@ -10145,7 +10592,7 @@ fastq@^1.6.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
reusify "^1.0.4"
|
reusify "^1.0.4"
|
||||||
|
|
||||||
faye-websocket@^0.11.3:
|
faye-websocket@0.11.4, faye-websocket@^0.11.3:
|
||||||
version "0.11.4"
|
version "0.11.4"
|
||||||
resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da"
|
resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da"
|
||||||
integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==
|
integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==
|
||||||
@ -10336,6 +10783,38 @@ find-up@^3.0.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
locate-path "^3.0.0"
|
locate-path "^3.0.0"
|
||||||
|
|
||||||
|
firebase@^9.1.3:
|
||||||
|
version "9.1.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/firebase/-/firebase-9.1.3.tgz#11557f812f53edab5053ed0bd4dd344f2ae7fb5f"
|
||||||
|
integrity sha512-OZA60idIzSE5c01qWUDH2plhe+s4VrwbPurAh1KxvPEhMdZSOVK3zrBFHbc7nczFYWRDQpWU6v7gTHAVSANHQg==
|
||||||
|
dependencies:
|
||||||
|
"@firebase/analytics" "0.7.2"
|
||||||
|
"@firebase/analytics-compat" "0.1.3"
|
||||||
|
"@firebase/app" "0.7.4"
|
||||||
|
"@firebase/app-check" "0.4.2"
|
||||||
|
"@firebase/app-check-compat" "0.1.3"
|
||||||
|
"@firebase/app-compat" "0.1.5"
|
||||||
|
"@firebase/app-types" "0.7.0"
|
||||||
|
"@firebase/auth" "0.18.3"
|
||||||
|
"@firebase/auth-compat" "0.1.6"
|
||||||
|
"@firebase/database" "0.12.2"
|
||||||
|
"@firebase/database-compat" "0.1.2"
|
||||||
|
"@firebase/firestore" "3.1.1"
|
||||||
|
"@firebase/firestore-compat" "0.1.4"
|
||||||
|
"@firebase/functions" "0.7.3"
|
||||||
|
"@firebase/functions-compat" "0.1.4"
|
||||||
|
"@firebase/installations" "0.5.2"
|
||||||
|
"@firebase/messaging" "0.9.2"
|
||||||
|
"@firebase/messaging-compat" "0.1.2"
|
||||||
|
"@firebase/performance" "0.5.2"
|
||||||
|
"@firebase/performance-compat" "0.1.2"
|
||||||
|
"@firebase/polyfill" "0.3.36"
|
||||||
|
"@firebase/remote-config" "0.3.1"
|
||||||
|
"@firebase/remote-config-compat" "0.1.2"
|
||||||
|
"@firebase/storage" "0.8.4"
|
||||||
|
"@firebase/storage-compat" "0.1.4"
|
||||||
|
"@firebase/util" "1.4.0"
|
||||||
|
|
||||||
flat-cache@^3.0.4:
|
flat-cache@^3.0.4:
|
||||||
version "3.0.4"
|
version "3.0.4"
|
||||||
resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11"
|
resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11"
|
||||||
@ -11352,6 +11831,11 @@ icss-utils@^5.0.0:
|
|||||||
resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae"
|
resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae"
|
||||||
integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==
|
integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==
|
||||||
|
|
||||||
|
idb@3.0.2:
|
||||||
|
version "3.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/idb/-/idb-3.0.2.tgz#c8e9122d5ddd40f13b60ae665e4862f8b13fa384"
|
||||||
|
integrity sha512-+FLa/0sTXqyux0o6C+i2lOR0VoS60LU/jzUo5xjfY6+7sEEgy4Gz1O7yFBXvjd7N0NyIGWIRg8DcQSLEG+VSPw==
|
||||||
|
|
||||||
identity-obj-proxy@3.0.0:
|
identity-obj-proxy@3.0.0:
|
||||||
version "3.0.0"
|
version "3.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz#94d2bda96084453ef36fbc5aaec37e0f79f1fc14"
|
resolved "https://registry.yarnpkg.com/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz#94d2bda96084453ef36fbc5aaec37e0f79f1fc14"
|
||||||
@ -11389,6 +11873,11 @@ immediate@^3.2.3:
|
|||||||
resolved "https://registry.npmjs.org/immediate/-/immediate-3.3.0.tgz"
|
resolved "https://registry.npmjs.org/immediate/-/immediate-3.3.0.tgz"
|
||||||
integrity sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q==
|
integrity sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q==
|
||||||
|
|
||||||
|
immediate@~3.0.5:
|
||||||
|
version "3.0.6"
|
||||||
|
resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b"
|
||||||
|
integrity sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=
|
||||||
|
|
||||||
immer@8.0.1:
|
immer@8.0.1:
|
||||||
version "8.0.1"
|
version "8.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/immer/-/immer-8.0.1.tgz#9c73db683e2b3975c424fb0572af5889877ae656"
|
resolved "https://registry.yarnpkg.com/immer/-/immer-8.0.1.tgz#9c73db683e2b3975c424fb0572af5889877ae656"
|
||||||
@ -12953,6 +13442,16 @@ jsprim@^1.2.2:
|
|||||||
array-includes "^3.1.2"
|
array-includes "^3.1.2"
|
||||||
object.assign "^4.1.2"
|
object.assign "^4.1.2"
|
||||||
|
|
||||||
|
jszip@^3.6.0:
|
||||||
|
version "3.7.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.7.1.tgz#bd63401221c15625a1228c556ca8a68da6fda3d9"
|
||||||
|
integrity sha512-ghL0tz1XG9ZEmRMcEN2vt7xabrDdqHHeykgARpmZ0BiIctWxM47Vt63ZO2dnp4QYt/xJVLLy5Zv1l/xRdh2byg==
|
||||||
|
dependencies:
|
||||||
|
lie "~3.3.0"
|
||||||
|
pako "~1.0.2"
|
||||||
|
readable-stream "~2.3.6"
|
||||||
|
set-immediate-shim "~1.0.1"
|
||||||
|
|
||||||
jwa@^1.4.1:
|
jwa@^1.4.1:
|
||||||
version "1.4.1"
|
version "1.4.1"
|
||||||
resolved "https://registry.yarnpkg.com/jwa/-/jwa-1.4.1.tgz#743c32985cb9e98655530d53641b66c8645b039a"
|
resolved "https://registry.yarnpkg.com/jwa/-/jwa-1.4.1.tgz#743c32985cb9e98655530d53641b66c8645b039a"
|
||||||
@ -13147,6 +13646,13 @@ levn@~0.3.0:
|
|||||||
prelude-ls "~1.1.2"
|
prelude-ls "~1.1.2"
|
||||||
type-check "~0.3.2"
|
type-check "~0.3.2"
|
||||||
|
|
||||||
|
lie@~3.3.0:
|
||||||
|
version "3.3.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/lie/-/lie-3.3.0.tgz#dcf82dee545f46074daf200c7c1c5a08e0f40f6a"
|
||||||
|
integrity sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==
|
||||||
|
dependencies:
|
||||||
|
immediate "~3.0.5"
|
||||||
|
|
||||||
lilconfig@^2.0.3:
|
lilconfig@^2.0.3:
|
||||||
version "2.0.3"
|
version "2.0.3"
|
||||||
resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.0.3.tgz#68f3005e921dafbd2a2afb48379986aa6d2579fd"
|
resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.0.3.tgz#68f3005e921dafbd2a2afb48379986aa6d2579fd"
|
||||||
@ -13432,6 +13938,11 @@ loglevel@^1.6.8:
|
|||||||
resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.7.1.tgz#005fde2f5e6e47068f935ff28573e125ef72f197"
|
resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.7.1.tgz#005fde2f5e6e47068f935ff28573e125ef72f197"
|
||||||
integrity sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw==
|
integrity sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw==
|
||||||
|
|
||||||
|
long@^4.0.0:
|
||||||
|
version "4.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28"
|
||||||
|
integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==
|
||||||
|
|
||||||
loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3.1, loose-envify@^1.4.0:
|
loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3.1, loose-envify@^1.4.0:
|
||||||
version "1.4.0"
|
version "1.4.0"
|
||||||
resolved "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz"
|
resolved "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz"
|
||||||
@ -14171,6 +14682,13 @@ node-fetch@2.6.1, node-fetch@^2.6.1:
|
|||||||
resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz"
|
resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz"
|
||||||
integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==
|
integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==
|
||||||
|
|
||||||
|
node-fetch@2.6.5:
|
||||||
|
version "2.6.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.5.tgz#42735537d7f080a7e5f78b6c549b7146be1742fd"
|
||||||
|
integrity sha512-mmlIVHJEu5rnIxgEgez6b9GgWXbkZj5YZ7fx+2r94a2E+Uirsp6HsPTPlomfdHtpt/B0cdKviwkoaM6pyvUOpQ==
|
||||||
|
dependencies:
|
||||||
|
whatwg-url "^5.0.0"
|
||||||
|
|
||||||
node-fetch@~1.7.1:
|
node-fetch@~1.7.1:
|
||||||
version "1.7.3"
|
version "1.7.3"
|
||||||
resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz"
|
resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz"
|
||||||
@ -14740,7 +15258,7 @@ package-json@^6.3.0:
|
|||||||
registry-url "^5.0.0"
|
registry-url "^5.0.0"
|
||||||
semver "^6.2.0"
|
semver "^6.2.0"
|
||||||
|
|
||||||
pako@^1.0.5, pako@~1.0.5:
|
pako@^1.0.5, pako@~1.0.2, pako@~1.0.5:
|
||||||
version "1.0.11"
|
version "1.0.11"
|
||||||
resolved "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz"
|
resolved "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz"
|
||||||
integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==
|
integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==
|
||||||
@ -16206,6 +16724,11 @@ promise-inflight@^1.0.1:
|
|||||||
resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3"
|
resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3"
|
||||||
integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM=
|
integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM=
|
||||||
|
|
||||||
|
promise-polyfill@8.1.3:
|
||||||
|
version "8.1.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/promise-polyfill/-/promise-polyfill-8.1.3.tgz#8c99b3cf53f3a91c68226ffde7bde81d7f904116"
|
||||||
|
integrity sha512-MG5r82wBzh7pSKDRa9y+vllNHz3e3d4CNj1PQE4BQYxLme0gKYYBm9YENq+UkEikyZ0XbiGWxYlVw3Rl9O/U8g==
|
||||||
|
|
||||||
promise-to-callback@^1.0.0:
|
promise-to-callback@^1.0.0:
|
||||||
version "1.0.0"
|
version "1.0.0"
|
||||||
resolved "https://registry.npmjs.org/promise-to-callback/-/promise-to-callback-1.0.0.tgz"
|
resolved "https://registry.npmjs.org/promise-to-callback/-/promise-to-callback-1.0.0.tgz"
|
||||||
@ -16258,6 +16781,25 @@ prop-types@^15.5.10, prop-types@^15.5.8, prop-types@^15.6.2, prop-types@^15.7.2:
|
|||||||
object-assign "^4.1.1"
|
object-assign "^4.1.1"
|
||||||
react-is "^16.8.1"
|
react-is "^16.8.1"
|
||||||
|
|
||||||
|
protobufjs@^6.10.0:
|
||||||
|
version "6.11.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.11.2.tgz#de39fabd4ed32beaa08e9bb1e30d08544c1edf8b"
|
||||||
|
integrity sha512-4BQJoPooKJl2G9j3XftkIXjoC9C0Av2NOrWmbLWT1vH32GcSUHjM0Arra6UfTsVyfMAuFzaLucXn1sadxJydAw==
|
||||||
|
dependencies:
|
||||||
|
"@protobufjs/aspromise" "^1.1.2"
|
||||||
|
"@protobufjs/base64" "^1.1.2"
|
||||||
|
"@protobufjs/codegen" "^2.0.4"
|
||||||
|
"@protobufjs/eventemitter" "^1.1.0"
|
||||||
|
"@protobufjs/fetch" "^1.1.0"
|
||||||
|
"@protobufjs/float" "^1.0.2"
|
||||||
|
"@protobufjs/inquire" "^1.1.0"
|
||||||
|
"@protobufjs/path" "^1.1.2"
|
||||||
|
"@protobufjs/pool" "^1.1.0"
|
||||||
|
"@protobufjs/utf8" "^1.1.0"
|
||||||
|
"@types/long" "^4.0.1"
|
||||||
|
"@types/node" ">=13.7.0"
|
||||||
|
long "^4.0.0"
|
||||||
|
|
||||||
proxy-addr@~2.0.5:
|
proxy-addr@~2.0.5:
|
||||||
version "2.0.7"
|
version "2.0.7"
|
||||||
resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025"
|
resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025"
|
||||||
@ -17821,6 +18363,26 @@ select-hose@^2.0.0:
|
|||||||
resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca"
|
resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca"
|
||||||
integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=
|
integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=
|
||||||
|
|
||||||
|
selenium-webdriver@4.0.0-rc-1:
|
||||||
|
version "4.0.0-rc-1"
|
||||||
|
resolved "https://registry.yarnpkg.com/selenium-webdriver/-/selenium-webdriver-4.0.0-rc-1.tgz#b1e7e5821298c8a071e988518dd6b759f0c41281"
|
||||||
|
integrity sha512-bcrwFPRax8fifRP60p7xkWDGSJJoMkPAzufMlk5K2NyLPht/YZzR2WcIk1+3gR8VOCLlst1P2PI+MXACaFzpIw==
|
||||||
|
dependencies:
|
||||||
|
jszip "^3.6.0"
|
||||||
|
rimraf "^3.0.2"
|
||||||
|
tmp "^0.2.1"
|
||||||
|
ws ">=7.4.6"
|
||||||
|
|
||||||
|
selenium-webdriver@^4.0.0-beta.2:
|
||||||
|
version "4.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/selenium-webdriver/-/selenium-webdriver-4.0.0.tgz#7dc8969facee3be634459e173f557b7e34308e73"
|
||||||
|
integrity sha512-tOlu6FnTjPq2FKpd153pl8o2cB7H40Rvl/ogiD2sapMv4IDjQqpIxbd+swDJe9UDLdszeh5CDis6lgy4e9UG1w==
|
||||||
|
dependencies:
|
||||||
|
jszip "^3.6.0"
|
||||||
|
rimraf "^3.0.2"
|
||||||
|
tmp "^0.2.1"
|
||||||
|
ws ">=7.4.6"
|
||||||
|
|
||||||
selfsigned@^1.10.8:
|
selfsigned@^1.10.8:
|
||||||
version "1.10.11"
|
version "1.10.11"
|
||||||
resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.11.tgz#24929cd906fe0f44b6d01fb23999a739537acbe9"
|
resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.11.tgz#24929cd906fe0f44b6d01fb23999a739537acbe9"
|
||||||
@ -17964,7 +18526,7 @@ set-blocking@^2.0.0:
|
|||||||
resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
|
resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
|
||||||
integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc=
|
integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc=
|
||||||
|
|
||||||
set-immediate-shim@^1.0.1:
|
set-immediate-shim@^1.0.1, set-immediate-shim@~1.0.1:
|
||||||
version "1.0.1"
|
version "1.0.1"
|
||||||
resolved "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz"
|
resolved "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz"
|
||||||
integrity sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=
|
integrity sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=
|
||||||
@ -19107,7 +19669,7 @@ tmp@^0.0.33:
|
|||||||
dependencies:
|
dependencies:
|
||||||
os-tmpdir "~1.0.2"
|
os-tmpdir "~1.0.2"
|
||||||
|
|
||||||
tmp@~0.2.1:
|
tmp@^0.2.1, tmp@~0.2.1:
|
||||||
version "0.2.1"
|
version "0.2.1"
|
||||||
resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14"
|
resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14"
|
||||||
integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==
|
integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==
|
||||||
@ -19215,6 +19777,11 @@ tr46@^2.1.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
punycode "^2.1.1"
|
punycode "^2.1.1"
|
||||||
|
|
||||||
|
tr46@~0.0.3:
|
||||||
|
version "0.0.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a"
|
||||||
|
integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=
|
||||||
|
|
||||||
trim-right@^1.0.1:
|
trim-right@^1.0.1:
|
||||||
version "1.0.1"
|
version "1.0.1"
|
||||||
resolved "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz"
|
resolved "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz"
|
||||||
@ -19995,6 +20562,11 @@ web-vitals@^2.1.0:
|
|||||||
resolved "https://registry.yarnpkg.com/web-vitals/-/web-vitals-2.1.0.tgz#ebf5428875ab5bfc1056c2e80cd177001287de7b"
|
resolved "https://registry.yarnpkg.com/web-vitals/-/web-vitals-2.1.0.tgz#ebf5428875ab5bfc1056c2e80cd177001287de7b"
|
||||||
integrity sha512-npEyJP8jHf3J71t1tRTEtz9FeKp8H2udWJUUq5ykfPhhstr//TUxiYhIEzLNwk4zv2ybAilMn7v7N6Mxmuitmg==
|
integrity sha512-npEyJP8jHf3J71t1tRTEtz9FeKp8H2udWJUUq5ykfPhhstr//TUxiYhIEzLNwk4zv2ybAilMn7v7N6Mxmuitmg==
|
||||||
|
|
||||||
|
webidl-conversions@^3.0.0:
|
||||||
|
version "3.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871"
|
||||||
|
integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=
|
||||||
|
|
||||||
webidl-conversions@^5.0.0:
|
webidl-conversions@^5.0.0:
|
||||||
version "5.0.0"
|
version "5.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff"
|
resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff"
|
||||||
@ -20158,6 +20730,14 @@ whatwg-mimetype@^2.3.0:
|
|||||||
resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf"
|
resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf"
|
||||||
integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==
|
integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==
|
||||||
|
|
||||||
|
whatwg-url@^5.0.0:
|
||||||
|
version "5.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d"
|
||||||
|
integrity sha1-lmRU6HZUYuN2RNNib2dCzotwll0=
|
||||||
|
dependencies:
|
||||||
|
tr46 "~0.0.3"
|
||||||
|
webidl-conversions "^3.0.0"
|
||||||
|
|
||||||
whatwg-url@^8.0.0, whatwg-url@^8.5.0:
|
whatwg-url@^8.0.0, whatwg-url@^8.5.0:
|
||||||
version "8.7.0"
|
version "8.7.0"
|
||||||
resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.7.0.tgz#656a78e510ff8f3937bc0bcbe9f5c0ac35941b77"
|
resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.7.0.tgz#656a78e510ff8f3937bc0bcbe9f5c0ac35941b77"
|
||||||
@ -20469,6 +21049,11 @@ ws@7.5.3, "ws@^5.2.0 || ^6.0.0 || ^7.0.0", ws@^7.4.0, ws@^7.4.5:
|
|||||||
resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.3.tgz#160835b63c7d97bfab418fc1b8a9fced2ac01a74"
|
resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.3.tgz#160835b63c7d97bfab418fc1b8a9fced2ac01a74"
|
||||||
integrity sha512-kQ/dHIzuLrS6Je9+uv81ueZomEwH0qVYstcAQ4/Z93K8zeko9gtAbttJWzoC5ukqXY1PpoouV3+VSOqEAFt5wg==
|
integrity sha512-kQ/dHIzuLrS6Je9+uv81ueZomEwH0qVYstcAQ4/Z93K8zeko9gtAbttJWzoC5ukqXY1PpoouV3+VSOqEAFt5wg==
|
||||||
|
|
||||||
|
ws@>=7.4.6:
|
||||||
|
version "8.2.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/ws/-/ws-8.2.3.tgz#63a56456db1b04367d0b721a0b80cae6d8becbba"
|
||||||
|
integrity sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==
|
||||||
|
|
||||||
ws@^5.1.1:
|
ws@^5.1.1:
|
||||||
version "5.2.2"
|
version "5.2.2"
|
||||||
resolved "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz"
|
resolved "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz"
|
||||||
@ -20639,7 +21224,7 @@ yargs@^15.3.1, yargs@^15.4.1:
|
|||||||
y18n "^4.0.0"
|
y18n "^4.0.0"
|
||||||
yargs-parser "^18.1.2"
|
yargs-parser "^18.1.2"
|
||||||
|
|
||||||
yargs@^16.2.0:
|
yargs@^16.1.1, yargs@^16.2.0:
|
||||||
version "16.2.0"
|
version "16.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66"
|
resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66"
|
||||||
integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==
|
integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==
|
||||||
|
Loading…
Reference in New Issue
Block a user